{"version":3,"file":"ActivitySearch.vue.bundle.js","sources":["../../../node_modules/vue/dist/vue.runtime.esm-bundler.js","../../../Frontend/src/vue/helpers/time.helper.ts","../../../Frontend/src/vue/repositories/activiteit.repository.ts","../../../node_modules/xtend/immutable.js","../../../node_modules/fuzzy/lib/fuzzy.js","../../../node_modules/suggestions/src/list.js","../../../node_modules/suggestions/src/suggestions.js","../../../node_modules/suggestions/index.js","../../../node_modules/lodash.debounce/index.js","../../../node_modules/events/events.js","../../../node_modules/@mapbox/mapbox-gl-geocoder/lib/exceptions.js","../../../node_modules/@mapbox/mapbox-sdk/lib/helpers/parse-link-header.js","../../../node_modules/@mapbox/mapbox-sdk/lib/classes/mapi-response.js","../../../node_modules/@mapbox/mapbox-sdk/lib/constants.js","../../../node_modules/@mapbox/mapbox-sdk/lib/classes/mapi-error.js","../../../node_modules/@mapbox/mapbox-sdk/lib/helpers/parse-headers.js","../../../node_modules/@mapbox/mapbox-sdk/lib/browser/browser-layer.js","../../../node_modules/base-64/base64.js","../../../node_modules/@mapbox/parse-mapbox-token/index.js","../../../node_modules/eventemitter3/index.js","../../../node_modules/@mapbox/mapbox-sdk/lib/helpers/url-utils.js","../../../node_modules/@mapbox/mapbox-sdk/lib/classes/mapi-request.js","../../../node_modules/@mapbox/mapbox-sdk/lib/classes/mapi-client.js","../../../node_modules/@mapbox/mapbox-sdk/lib/browser/browser-client.js","../../../node_modules/@mapbox/mapbox-sdk/index.js","../../../node_modules/is-plain-obj/index.js","../../../node_modules/@mapbox/fusspot/lib/index.js","../../../node_modules/@mapbox/mapbox-sdk/services/service-helpers/validator.js","../../../node_modules/@mapbox/mapbox-sdk/services/service-helpers/pick.js","../../../node_modules/@mapbox/mapbox-sdk/services/service-helpers/object-map.js","../../../node_modules/@mapbox/mapbox-sdk/services/service-helpers/stringify-booleans.js","../../../node_modules/@mapbox/mapbox-sdk/services/service-helpers/create-service-factory.js","../../../node_modules/@mapbox/mapbox-sdk/services/geocoding.js","../../../node_modules/nanoid/url-alphabet/index.js","../../../node_modules/nanoid/index.browser.js","../../../node_modules/@mapbox/mapbox-gl-geocoder/lib/events.js","../../../node_modules/@mapbox/mapbox-gl-geocoder/lib/localization.js","../../../node_modules/subtag/subtag.js","../../../node_modules/@mapbox/mapbox-gl-geocoder/lib/geolocation.js","../../../node_modules/@mapbox/mapbox-gl-geocoder/lib/utils.js","../../../node_modules/@mapbox/mapbox-gl-geocoder/lib/index.js","../../../node_modules/@studiometa/vue-mapbox-gl/index.js","../../../Frontend/src/vue/components/Rating.vue","../../../node_modules/vue-loading-overlay/dist/index.js","../../../Frontend/src/vue/components/Loader.vue","../../../node_modules/@kyvg/vue3-notification/dist/index.es.js","../../../Frontend/src/vue/components/SearchMap/ClubSearchMarker.vue","../../../node_modules/date-fns/addDays.mjs","../../../node_modules/date-fns/getDefaultOptions.mjs","../../../node_modules/date-fns/getISODay.mjs","../../../node_modules/date-fns/isAfter.mjs","../../../node_modules/date-fns/isBefore.mjs","../../../node_modules/date-fns/transpose.mjs","../../../node_modules/date-fns/parse/_lib/Setter.mjs","../../../node_modules/date-fns/parse/_lib/Parser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/EraParser.mjs","../../../node_modules/date-fns/parse/_lib/constants.mjs","../../../node_modules/date-fns/parse/_lib/utils.mjs","../../../node_modules/date-fns/parse/_lib/parsers/YearParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/QuarterParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/MonthParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.mjs","../../../node_modules/date-fns/setWeek.mjs","../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.mjs","../../../node_modules/date-fns/setISOWeek.mjs","../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/DateParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.mjs","../../../node_modules/date-fns/setDay.mjs","../../../node_modules/date-fns/parse/_lib/parsers/DayParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.mjs","../../../node_modules/date-fns/setISODay.mjs","../../../node_modules/date-fns/parse/_lib/parsers/ISODayParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/AMPMParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/MinuteParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/SecondParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.mjs","../../../node_modules/date-fns/parse/_lib/parsers.mjs","../../../node_modules/date-fns/parse.mjs","../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs","../../../node_modules/floating-vue/dist/floating-vue.mjs","../../../Frontend/src/vue/repositories/modal.repository.ts","../../../Frontend/src/vue/components/Modals/RedirectPlatformModal.vue","../../../Frontend/src/vue/helpers/date.helper.ts","../../../Frontend/src/vue/components/SearchMap/ActivitySearchMarker.vue","../../../Frontend/src/vue/components/SearchMap/SearchMap.vue","../../../Frontend/src/vue/components/Sportcard/SportcardStatus.vue","../../../Frontend/src/vue/components/ActivitySearchResult.vue","../../../Frontend/src/vue/helpers/location.helper.ts","../../../Frontend/src/vue/repositories/kenmerk.repository.ts","../../../Frontend/src/vue/views/ActivitySearch/components/ActivitySearchBox.vue","../../../Frontend/src/vue/repositories/profile.repository.ts","../../../Frontend/src/vue/stores/profile.store.ts","../../../Frontend/src/vue/helpers/url.helper.ts","../../../Frontend/src/vue/helpers/filter.helper.ts","../../../Frontend/src/vue/components/ClubSearchResult.vue","../../../Frontend/src/vue/views/ActivitySearch/components/OrderByDropdown.vue","../../../Frontend/src/vue/views/ActivitySearch/components/ActiveFilters.vue","../../../Frontend/src/vue/components/Forms/Select.vue","../../../Frontend/src/vue/views/ActivitySearch/components/DistanceFilter.vue","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/index.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/v-calendar/dist/es/index.js","../../../Frontend/src/vue/components/Forms/DateRangePicker.vue","../../../Frontend/src/vue/components/Collapsible.vue","../../../Frontend/src/vue/components/ActivitySearchFilters/DayFilter.vue","../../../Frontend/src/vue/components/Forms/RadioButtons.vue","../../../Frontend/src/vue/components/Search/PromootPlaats.vue","../../../Frontend/src/vue/components/Search/SearchLoader.vue","../../../Frontend/src/vue/components/Suspenser.vue","../../../Frontend/src/vue/components/Search/MoreResultsButton.vue","../../../Frontend/src/vue/components/Search/SearchTemplate.vue","../../../Frontend/src/vue/components/ActivitySearchFilters/FacetFilter.vue","../../../Frontend/src/vue/components/SimplePopover.vue","../../../Frontend/src/vue/repositories/zoekalert.repository.ts","../../../Frontend/src/vue/components/Search/ZoekAlert.vue","../../../Frontend/src/vue/repositories/activatie.repository.ts","../../../Frontend/src/vue/helpers/empty.helper.ts","../../../Frontend/src/vue/views/ActivitySearch/ZoekActiviteiten.vue","../../../node_modules/velocity-animate/velocity.js","../../../Frontend/src/vue/views/ActivitySearch/index.ts"],"sourcesContent":["/**\n* vue v3.5.11\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { initCustomFormatter, warn } from '@vue/runtime-dom';\nexport * from '@vue/runtime-dom';\n\nfunction initDev() {\n {\n initCustomFormatter();\n }\n}\n\nif (!!(process.env.NODE_ENV !== \"production\")) {\n initDev();\n}\nconst compile = () => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n );\n }\n};\n\nexport { compile };\n","/** \r\n * Returns the stored time value in seconds since midnight, January 1, 1970 UTC.\r\n * \r\n * @param date The date to convert to seconds.\r\n * @return The time in seconds.\r\n */\r\nexport const getTimeInSeconds = (date?: Date, setDateToEnd?: boolean) => {\r\n if (!date) return date;\r\n\r\n const timeInMillis = setDateToEnd ? new Date(date).setHours(23, 59, 59) : new Date(date).getTime();\r\n return Math.round(timeInMillis / 1000);\r\n}","import { DefaultColumns } from \"@/models/default.model\";\r\nimport {SearchResult} from \"@/models/search.model\";\r\nimport { sportmomentApi, sportmomentSearchApiEndpoint } from \"~/utils/axios.util\";\r\nimport {getTimeInSeconds} from \"@/helpers/time.helper\";\r\n\r\nexport interface Activiteit {\r\n SportmomentId: number\r\n Naam: string\r\n Sportaanbieder: string\r\n BeginDatum: Date\r\n EindDatum: Date\r\n InschrijvenVanafDatum?: Date\r\n InschrijvenTotDatum?: Date\r\n MinLeeftijd: number\r\n MaxLeeftijd: number\r\n ExtraKosten: boolean\r\n ExtraInformatie: string\r\n AantalPlaatsen: number\r\n TotaalAantalPlaatsen: number\r\n AantalInschrijvingen: number\r\n TotaalAantalInschrijvingen: number\r\n Aanbod?: number\r\n Kosten?: number\r\n DateModified: string\r\n AfbeeldingUrl: string\r\n SportaanbiederItem: Aanbieder\r\n PlatformItem: PlatformItem\r\n LocatieItem: LocatieItem\r\n ActiviteittypenTranslated: string[]\r\n SportenTranslated: string[]\r\n CultuuractiviteitenTranslated: string[]\r\n SpecifiekAanbod: ActiviteitKenmerk[]\r\n FysiekeInspanning: ActiviteitKenmerk[]\r\n Doelgroep: ActiviteitKenmerk[]\r\n Leeftijden: ActiviteitKenmerk[]\r\n Voordeel: ActiviteitKenmerk[]\r\n Tag: ActiviteitKenmerk[]\r\n Inclusief: ActiviteitKenmerk[]\r\n AanbodInclusief: ActiviteitKenmerk[]\r\n Weekdag: number\r\n Platform: number\r\n SportKenmerken: any\r\n Lessen: ActiviteitLesWithTrainers[]\r\n Type: string\r\n BetalingsType: string\r\n Beschrijving: string\r\n ExtraKostenBeschrijving: string\r\n Sportmomenttype: number\r\n}\r\n\r\nexport interface Aanbieder {\r\n Id: string\r\n Naam: string\r\n Logo: string\r\n ReviewScore: number\r\n ReviewCount: number\r\n Activiteiten: number\r\n ExtraKosten: boolean\r\n Locaties: LocatieItem[]\r\n ActiviteittypenTranslated: string[]\r\n SportenTranslated: string[]\r\n CultuuractiviteitenTranslated: string[]\r\n}\r\n\r\nexport interface PlatformItem {\r\n Id: number\r\n Naam: string\r\n Link: string\r\n}\r\n\r\nexport interface LocatieItem {\r\n Id: string\r\n Naam: string\r\n Adres: string\r\n Woonplaats: string\r\n Postcode: any\r\n Longitude: number\r\n Latitude: number\r\n Afstand: number\r\n}\r\n\r\nexport interface ActiviteitItem {\r\n Aanbod: any\r\n AantalInschrijvingen: number\r\n AantalPlaatsen: number\r\n Activiteittype: number\r\n BeginDatum: Date\r\n Bekostigingstype: number\r\n Beschrijving: string\r\n DateCreated: string\r\n DateModified: string\r\n Deleted: boolean\r\n EindDatum: Date\r\n ExtraInformatie: string\r\n ExtraKosten: boolean\r\n ExtraKostenBeschrijving: string\r\n HoofdplatformLink: string\r\n InhalenMogelijk: boolean\r\n InhalenMogelijkEmailadres: any\r\n InschrijvenVanafDatum: Date | null\r\n InschrijvenTotDatum: Date | null\r\n IsGolfstart2: boolean\r\n Kosten: number\r\n Locatie: string\r\n MaxLeeftijd: number\r\n MinLeeftijd: number\r\n MinimumAantalDeelnemers: any\r\n Naam: string\r\n NotificatieTijdMinimumAantalDeelnemers: number\r\n ReeksSportmoment: number\r\n ServiceKosten: any\r\n Sportaanbieder: string\r\n SportmomentId: number\r\n Sportmomenttype: number\r\n Status: number\r\n TotaalAantalInschrijvingen: number\r\n TotaalAantalPlaatsen: number\r\n Type: number\r\n}\r\n\r\nexport enum BekostigingsType {\r\n CREDITS = 1,\r\n GRATIS = 2,\r\n BETALING = 3,\r\n OPLOCATIE = 4 \r\n}\r\n\r\nexport interface Les {\r\n Naam: string\r\n BeginDatum: Date\r\n EindDatum: Date\r\n}\r\n\r\nexport interface IActiviteitSearchParams {\r\n type: string;\r\n weekdag_facet?: number[];\r\n fysiekeinspanning_facet?: string[];\r\n voordeel_facet?: string[];\r\n tag_facet?: string[];\r\n aanbod_facet?: string[];\r\n doelgroep_facet?: string[];\r\n specifiekaanbod_facet?: string[];\r\n sporttypen_facet?: string[];\r\n activiteittypen_facet?: string[];\r\n extrakosten_facet?: string[];\r\n betalingstype_facet?: string[];\r\n golfstarttype_facet?: string[];\r\n sportkenmerken_facet?: string[];\r\n plaatsen_facet?: string[];\r\n wijken_facet?: string[];\r\n wijkengemeenten_facet?: string[];\r\n sporten_facet?: string[];\r\n cultuuractiviteiten_facet?: string[];\r\n soortactiviteit_facet?: string[];\r\n activiteiten_facet?: string[];\r\n platform_facet?: number;\r\n activatie_facet?: number;\r\n promootplaatsen_facet?: string;\r\n fromPostcode_facet?: number;\r\n toPostcode_facet?: number;\r\n facetlist?: string[]\r\n query?: string;\r\n sportaanbieder?: string;\r\n fromStartDatum?: Date;\r\n toStartDatum?: Date;\r\n centerLon?: number;\r\n centerLat?: number;\r\n distanceInKms?: number;\r\n fromStartTijdSeconds?: number;\r\n toStartTijdSeconds?: number;\r\n minLeeftijd?: number;\r\n maxLeeftijd?: number\r\n Id?: string;\r\n format?: string;\r\n fromReviewScore?: string;\r\n toReviewScore?: number\r\n gs2_index?: string;\r\n pageSize: number\r\n offset?: number;\r\n OrderBy: string;\r\n Desc?: boolean;\r\n groupBy?: string;\r\n}\r\n\r\nexport interface ActiviteitKenmerk {\r\n SportmomentKenmerkId: number;\r\n Sportmoment: number;\r\n Kenmerk: number;\r\n Categorie: number;\r\n}\r\n\r\nexport interface ActiviteitLesWithTrainers extends ActiviteitLes {\r\n Trainers: ActiviteitLesTrainer[];\r\n}\r\n\r\nexport interface ActiviteitLes extends DefaultColumns {\r\n SportmomentLesId: number;\r\n Sportmoment: number;\r\n Naam: string;\r\n Beschrijving: string;\r\n BeginDatum: Date;\r\n EindDatum: Date;\r\n Locatie: string | null;\r\n Lesnummer: number;\r\n}\r\n\r\nexport interface ActiviteitLesTrainer extends DefaultColumns {\r\n SportmomentLesTrainerId: number;\r\n SportmomentLes: number;\r\n Trainer: number;\r\n}\r\n\r\nexport interface MarkerData {\r\n SportmomentId: number,\r\n SportaanbiederId: string,\r\n Longitude: number,\r\n Latitude: number,\r\n}\r\n\r\nclass ActiviteitRepository {\r\n async search(params: IActiviteitSearchParams) {\r\n const response = await sportmomentSearchApiEndpoint.get>('/search', {\r\n params: {\r\n ...params,\r\n facetlist: params.facetlist && params.facetlist.length > 0 ? params.facetlist.join(\",\") : undefined,\r\n weekdag_facet: params.weekdag_facet && params.weekdag_facet.length > 0 ? params.weekdag_facet.join(\"|\") : undefined,\r\n fysiekeinspanning_facet: params.fysiekeinspanning_facet && params.fysiekeinspanning_facet.length > 0 ? params.fysiekeinspanning_facet.join(\"|\") : undefined,\r\n voordeel_facet: params.voordeel_facet && params.voordeel_facet.length > 0 ? params.voordeel_facet.join(\"|\") : undefined,\r\n tag_facet: params.tag_facet && params.tag_facet.length > 0 ? params.tag_facet.join(\"|\") : undefined,\r\n aanbod_facet: params.aanbod_facet && params.aanbod_facet.length > 0 ? params.aanbod_facet.join(\"|\") : undefined,\r\n doelgroep_facet: params.doelgroep_facet && params.doelgroep_facet.length > 0 ? params.doelgroep_facet.join(\"|\") : undefined,\r\n specifiekaanbod_facet: params.specifiekaanbod_facet && params.specifiekaanbod_facet.length > 0 ? params.specifiekaanbod_facet.join(\"|\") : undefined,\r\n sporttypen_facet: params.sporttypen_facet && params.sporttypen_facet.length > 0 ? params.sporttypen_facet.join(\"|\") : undefined,\r\n activiteittypen_facet: params.activiteittypen_facet && params.activiteittypen_facet.length > 0 ? params.activiteittypen_facet.join(\"|\") : undefined,\r\n extrakosten_facet: params.extrakosten_facet && params.extrakosten_facet.length > 0 ? params.extrakosten_facet.join(\"|\") : undefined,\r\n soortactiviteit_facet: params.soortactiviteit_facet && params.soortactiviteit_facet.length > 0 ? params.soortactiviteit_facet.join(\"|\") : undefined,\r\n golfstarttype_facet: params.golfstarttype_facet && params.golfstarttype_facet.length > 0 ? params.golfstarttype_facet.join(\"|\") : undefined,\r\n sportkenmerken_facet: params.sportkenmerken_facet && params.sportkenmerken_facet.length > 0 ? params.sportkenmerken_facet.join(\"|\") : undefined,\r\n plaatsen_facet: params.plaatsen_facet && params.plaatsen_facet.length > 0 ? params.plaatsen_facet.join(\"|\") : undefined,\r\n sporten_facet: params.sporten_facet && params.sporten_facet.length > 0 ? params.sporten_facet.join(\"|\") : undefined,\r\n cultuuractiviteiten_facet: params.cultuuractiviteiten_facet && params.cultuuractiviteiten_facet.length > 0 ? params.cultuuractiviteiten_facet.join(\"|\") : undefined,\r\n fromStartDatum: getTimeInSeconds(params.fromStartDatum),\r\n toStartDatum: getTimeInSeconds(params.toStartDatum, true)\r\n }\r\n })\r\n return response.data\r\n }\r\n\r\n async getById(id: number, platformId: number) {\r\n const response = await sportmomentApi.get('/api/sportmoment', {\r\n params: {\r\n id: id,\r\n Platform: platformId\r\n }\r\n })\r\n\r\n return response.data;\r\n };\r\n\r\n async getSportactiviteitKenmerken(id: number) {\r\n const response = await sportmomentApi.get('/api/sportmomentkenmerk', {\r\n params: {\r\n sportmoment: id\r\n }\r\n })\r\n\r\n return response.data\r\n }\r\n\r\n async getSportactiviteitLessen(id: number) {\r\n const response = await sportmomentApi.get('/api/sportmomentles', {\r\n params: {\r\n sportmoment: id\r\n }\r\n })\r\n\r\n return response.data\r\n }\r\n \r\n async getMarkers(params: IActiviteitSearchParams, groupSportaanbieder: boolean) {\r\n const response = await sportmomentSearchApiEndpoint.get>('/search', {\r\n params: {\r\n ...params,\r\n facetlist: params.facetlist?.join(\",\"),\r\n weekdag_facet: params.weekdag_facet?.join(\"|\"),\r\n fysiekeinspanning_facet: params.fysiekeinspanning_facet?.join(\"|\"),\r\n voordeel_facet: params.voordeel_facet?.join(\"|\"),\r\n tag_facet: params.tag_facet?.join(\"|\"),\r\n aanbod_facet: params.aanbod_facet?.join(\"|\"),\r\n doelgroep_facet: params.doelgroep_facet?.join(\"|\"),\r\n specifiekaanbod_facet: params.specifiekaanbod_facet?.join(\"|\"),\r\n sporttypen_facet: params.sporttypen_facet?.join(\"|\"),\r\n activiteittypen_facet: params.activiteittypen_facet?.join(\"|\"),\r\n extrakosten_facet: params.extrakosten_facet?.join(\"|\"),\r\n golfstarttype_facet: params.golfstarttype_facet?.join(\"|\"),\r\n sportkenmerken_facet: params.sportkenmerken_facet?.join(\"|\"),\r\n plaatsen_facet: params.plaatsen_facet?.join(\"|\"),\r\n sporten_facet: params.sporten_facet?.join(\"|\"),\r\n cultuuractiviteiten_facet: params.cultuuractiviteiten_facet?.join(\"|\"),\r\n fromPostcode_facet: params.fromPostcode_facet,\r\n toPostcode_facet: params.toPostcode_facet,\r\n fromStartDatum: getTimeInSeconds(params.fromStartDatum),\r\n toStartDatum: getTimeInSeconds(params.toStartDatum),\r\n pageSize: 999999,\r\n distanceInKms: undefined,\r\n centerLon: undefined,\r\n centerLat: undefined,\r\n offset: 0,\r\n format: \"markers\",\r\n OrderBy: undefined,\r\n groupBy: groupSportaanbieder ? \"Sportaanbieder\" : undefined\r\n }\r\n });\r\n \r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new ActiviteitRepository();\r\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","/*\n * Fuzzy\n * https://github.com/myork/fuzzy\n *\n * Copyright (c) 2012 Matt York\n * Licensed under the MIT license.\n */\n\n(function() {\n\nvar root = this;\n\nvar fuzzy = {};\n\n// Use in node or in browser\nif (typeof exports !== 'undefined') {\n module.exports = fuzzy;\n} else {\n root.fuzzy = fuzzy;\n}\n\n// Return all elements of `array` that have a fuzzy\n// match against `pattern`.\nfuzzy.simpleFilter = function(pattern, array) {\n return array.filter(function(str) {\n return fuzzy.test(pattern, str);\n });\n};\n\n// Does `pattern` fuzzy match `str`?\nfuzzy.test = function(pattern, str) {\n return fuzzy.match(pattern, str) !== null;\n};\n\n// If `pattern` matches `str`, wrap each matching character\n// in `opts.pre` and `opts.post`. If no match, return null\nfuzzy.match = function(pattern, str, opts) {\n opts = opts || {};\n var patternIdx = 0\n , result = []\n , len = str.length\n , totalScore = 0\n , currScore = 0\n // prefix\n , pre = opts.pre || ''\n // suffix\n , post = opts.post || ''\n // String to compare against. This might be a lowercase version of the\n // raw string\n , compareString = opts.caseSensitive && str || str.toLowerCase()\n , ch;\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n // For each character in the string, either add it to the result\n // or wrap in template if it's the next string in the pattern\n for(var idx = 0; idx < len; idx++) {\n ch = str[idx];\n if(compareString[idx] === pattern[patternIdx]) {\n ch = pre + ch + post;\n patternIdx += 1;\n\n // consecutive characters should increase the score more than linearly\n currScore += 1 + currScore;\n } else {\n currScore = 0;\n }\n totalScore += currScore;\n result[result.length] = ch;\n }\n\n // return rendered string if we have a match for every char\n if(patternIdx === pattern.length) {\n // if the string is an exact match with pattern, totalScore should be maxed\n totalScore = (compareString === pattern) ? Infinity : totalScore;\n return {rendered: result.join(''), score: totalScore};\n }\n\n return null;\n};\n\n// The normal entry point. Filters `arr` for matches against `pattern`.\n// It returns an array with matching values of the type:\n//\n// [{\n// string: 'lah' // The rendered string\n// , index: 2 // The index of the element in `arr`\n// , original: 'blah' // The original element in `arr`\n// }]\n//\n// `opts` is an optional argument bag. Details:\n//\n// opts = {\n// // string to put before a matching character\n// pre: ''\n//\n// // string to put after matching character\n// , post: ''\n//\n// // Optional function. Input is an entry in the given arr`,\n// // output should be the string to test `pattern` against.\n// // In this example, if `arr = [{crying: 'koala'}]` we would return\n// // 'koala'.\n// , extract: function(arg) { return arg.crying; }\n// }\nfuzzy.filter = function(pattern, arr, opts) {\n if(!arr || arr.length === 0) {\n return [];\n }\n if (typeof pattern !== 'string') {\n return arr;\n }\n opts = opts || {};\n return arr\n .reduce(function(prev, element, idx, arr) {\n var str = element;\n if(opts.extract) {\n str = opts.extract(element);\n }\n var rendered = fuzzy.match(pattern, str, opts);\n if(rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered\n , score: rendered.score\n , index: idx\n , original: element\n };\n }\n return prev;\n }, [])\n\n // Sort by score. Browsers are inconsistent wrt stable/unstable\n // sorting, so force stable by using the index in the case of tie.\n // See http://ofb.net/~sethml/is-sort-stable.html\n .sort(function(a,b) {\n var compare = b.score - a.score;\n if(compare) return compare;\n return a.index - b.index;\n });\n};\n\n\n}());\n\n","'use strict';\n\nvar List = function(component) {\n this.component = component;\n this.items = [];\n this.active = 0;\n this.wrapper = document.createElement('div');\n this.wrapper.className = 'suggestions-wrapper';\n this.element = document.createElement('ul');\n this.element.className = 'suggestions';\n this.wrapper.appendChild(this.element);\n\n // selectingListItem is set to true in the time between the mousedown and mouseup when clicking an item in the list\n // mousedown on a list item will cause the input to blur which normally hides the list, so this flag is used to keep\n // the list open until the mouseup\n this.selectingListItem = false;\n\n component.el.parentNode.insertBefore(this.wrapper, component.el.nextSibling);\n return this;\n};\n\nList.prototype.show = function() {\n this.element.style.display = 'block';\n};\n\nList.prototype.hide = function() {\n this.element.style.display = 'none';\n};\n\nList.prototype.add = function(item) {\n this.items.push(item);\n};\n\nList.prototype.clear = function() {\n this.items = [];\n this.active = 0;\n};\n\nList.prototype.isEmpty = function() {\n return !this.items.length;\n};\n\nList.prototype.isVisible = function() {\n return this.element.style.display === 'block';\n};\n\nList.prototype.draw = function() {\n this.element.innerHTML = '';\n\n if (this.items.length === 0) {\n this.hide();\n return;\n }\n\n for (var i = 0; i < this.items.length; i++) {\n this.drawItem(this.items[i], this.active === i);\n }\n\n this.show();\n};\n\nList.prototype.drawItem = function(item, active) {\n var li = document.createElement('li'),\n a = document.createElement('a');\n\n if (active) li.className += ' active';\n\n a.innerHTML = item.string;\n\n li.appendChild(a);\n this.element.appendChild(li);\n\n li.addEventListener('mousedown', function() {\n this.selectingListItem = true;\n }.bind(this));\n\n li.addEventListener('mouseup', function() {\n this.handleMouseUp.call(this, item);\n }.bind(this));\n};\n\nList.prototype.handleMouseUp = function(item) {\n this.selectingListItem = false;\n this.component.value(item.original);\n this.clear();\n this.draw();\n};\n\nList.prototype.move = function(index) {\n this.active = index;\n this.draw();\n};\n\nList.prototype.previous = function() {\n this.move(this.active === 0 ? this.items.length - 1 : this.active - 1);\n};\n\nList.prototype.next = function() {\n this.move(this.active === this.items.length - 1 ? 0 : this.active + 1);\n};\n\nList.prototype.drawError = function(msg){\n var li = document.createElement('li');\n\n li.innerHTML = msg;\n\n this.element.appendChild(li);\n this.show();\n}\n\nmodule.exports = List;\n","'use strict';\n\nvar extend = require('xtend');\nvar fuzzy = require('fuzzy');\nvar List = require('./list');\n\nvar Suggestions = function(el, data, options) {\n options = options || {};\n\n this.options = extend({\n minLength: 2,\n limit: 5,\n filter: true,\n hideOnBlur: true\n }, options);\n\n this.el = el;\n this.data = data || [];\n this.list = new List(this);\n\n this.query = '';\n this.selected = null;\n\n this.list.draw();\n\n this.el.addEventListener('keyup', function(e) {\n this.handleKeyUp(e.keyCode);\n }.bind(this), false);\n\n this.el.addEventListener('keydown', function(e) {\n this.handleKeyDown(e);\n }.bind(this));\n\n this.el.addEventListener('focus', function() {\n this.handleFocus();\n }.bind(this));\n\n this.el.addEventListener('blur', function() {\n this.handleBlur();\n }.bind(this));\n\n this.el.addEventListener('paste', function(e) {\n this.handlePaste(e);\n }.bind(this));\n\n // use user-provided render function if given, otherwise just use the default\n this.render = (this.options.render) ? this.options.render.bind(this) : this.render.bind(this)\n\n this.getItemValue = (this.options.getItemValue) ? this.options.getItemValue.bind(this) : this.getItemValue.bind(this);\n\n return this;\n};\n\nSuggestions.prototype.handleKeyUp = function(keyCode) {\n // 40 - DOWN\n // 38 - UP\n // 27 - ESC\n // 13 - ENTER\n // 9 - TAB\n\n if (keyCode === 40 ||\n keyCode === 38 ||\n keyCode === 27 ||\n keyCode === 13 ||\n keyCode === 9) return;\n\n this.handleInputChange(this.el.value);\n};\n\nSuggestions.prototype.handleKeyDown = function(e) {\n switch (e.keyCode) {\n case 13: // ENTER\n case 9: // TAB\n if (!this.list.isEmpty()) {\n if (this.list.isVisible()) {\n e.preventDefault();\n }\n this.value(this.list.items[this.list.active].original);\n this.list.hide();\n }\n break;\n case 27: // ESC\n if (!this.list.isEmpty()) this.list.hide();\n break;\n case 38: // UP\n this.list.previous();\n break;\n case 40: // DOWN\n this.list.next();\n break;\n }\n};\n\nSuggestions.prototype.handleBlur = function() {\n if (!this.list.selectingListItem && this.options.hideOnBlur) {\n this.list.hide();\n }\n};\n\nSuggestions.prototype.handlePaste = function(e) {\n if (e.clipboardData) {\n this.handleInputChange(e.clipboardData.getData('Text'));\n } else {\n var self = this;\n setTimeout(function () {\n self.handleInputChange(e.target.value);\n }, 100);\n }\n};\n\nSuggestions.prototype.handleInputChange = function(query) {\n this.query = this.normalize(query);\n\n this.list.clear();\n\n if (this.query.length < this.options.minLength) {\n this.list.draw();\n return;\n }\n\n this.getCandidates(function(data) {\n for (var i = 0; i < data.length; i++) {\n this.list.add(data[i]);\n if (i === (this.options.limit - 1)) break;\n }\n this.list.draw();\n }.bind(this));\n};\n\nSuggestions.prototype.handleFocus = function() {\n if (!this.list.isEmpty()) this.list.show();\n this.list.selectingListItem = false;\n};\n\n/**\n * Update data previously passed\n *\n * @param {Array} revisedData\n */\nSuggestions.prototype.update = function(revisedData) {\n this.data = revisedData;\n this.handleKeyUp();\n};\n\n/**\n * Clears data\n */\nSuggestions.prototype.clear = function() {\n this.data = [];\n this.list.clear();\n};\n\n/**\n * Normalize the results list and input value for matching\n *\n * @param {String} value\n * @return {String}\n */\nSuggestions.prototype.normalize = function(value) {\n value = value.toLowerCase();\n return value;\n};\n\n/**\n * Evaluates whether an array item qualifies as a match with the current query\n *\n * @param {String} candidate a possible item from the array passed\n * @param {String} query the current query\n * @return {Boolean}\n */\nSuggestions.prototype.match = function(candidate, query) {\n return candidate.indexOf(query) > -1;\n};\n\nSuggestions.prototype.value = function(value) {\n this.selected = value;\n this.el.value = this.getItemValue(value);\n\n if (document.createEvent) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent('change', true, false);\n this.el.dispatchEvent(e);\n } else {\n this.el.fireEvent('onchange');\n }\n};\n\nSuggestions.prototype.getCandidates = function(callback) {\n var options = {\n pre: '',\n post: '',\n extract: function(d) { return this.getItemValue(d); }.bind(this)\n };\n var results;\n if(this.options.filter){\n results = fuzzy.filter(this.query, this.data, options);\n\n results = results.map(function(item){\n return {\n original: item.original,\n string: this.render(item.original, item.string)\n };\n }.bind(this))\n }else{\n results = this.data.map(function(d) {\n var renderedString = this.render(d);\n return {\n original: d,\n string: renderedString\n };\n }.bind(this));\n }\n callback(results);\n};\n\n/**\n * For a given item in the data array, return what should be used as the candidate string\n *\n * @param {Object|String} item an item from the data array\n * @return {String} item\n */\nSuggestions.prototype.getItemValue = function(item) {\n return item;\n};\n\n/**\n * For a given item in the data array, return a string of html that should be rendered in the dropdown\n * @param {Object|String} item an item from the data array\n * @param {String} sourceFormatting a string that has pre-formatted html that should be passed directly through the render function \n * @return {String} html\n */\nSuggestions.prototype.render = function(item, sourceFormatting) {\n if (sourceFormatting){\n // use existing formatting on the source string\n return sourceFormatting;\n }\n var boldString = (item.original) ? this.getItemValue(item.original) : this.getItemValue(item);\n var indexString = this.normalize(boldString);\n var indexOfQuery = indexString.lastIndexOf(this.query);\n while (indexOfQuery > -1) {\n var endIndexOfQuery = indexOfQuery + this.query.length;\n boldString = boldString.slice(0, indexOfQuery) + '' + boldString.slice(indexOfQuery, endIndexOfQuery) + '' + boldString.slice(endIndexOfQuery);\n indexOfQuery = indexString.slice(0, indexOfQuery).lastIndexOf(this.query);\n }\n return boldString\n}\n\n/**\n * Render an custom error message in the suggestions list\n * @param {String} msg An html string to render as an error message\n */\nSuggestions.prototype.renderError = function(msg){\n this.list.drawError(msg);\n}\n\nmodule.exports = Suggestions;\n","'use strict';\n\n/**\n * A typeahead component for inputs\n * @class Suggestions\n *\n * @param {HTMLInputElement} el A valid HTML input element\n * @param {Array} data An array of data used for results\n * @param {Object} options\n * @param {Number} [options.limit=5] Max number of results to display in the auto suggest list.\n * @param {Number} [options.minLength=2] Number of characters typed into an input to trigger suggestions.\n * @param {Boolean} [options.hideOnBlur=true] If `true`, hides the suggestions when focus is lost.\n * @return {Suggestions} `this`\n * @example\n * // in the browser\n * var input = document.querySelector('input');\n * var data = [\n * 'Roy Eldridge',\n * 'Roy Hargrove',\n * 'Rex Stewart'\n * ];\n *\n * new Suggestions(input, data);\n *\n * // with options\n * var input = document.querySelector('input');\n * var data = [{\n * name: 'Roy Eldridge',\n * year: 1911\n * }, {\n * name: 'Roy Hargrove',\n * year: 1969\n * }, {\n * name: 'Rex Stewart',\n * year: 1907\n * }];\n *\n * var typeahead = new Suggestions(input, data, {\n * filter: false, // Disable filtering\n * minLength: 3, // Number of characters typed into an input to trigger suggestions.\n * limit: 3, // Max number of results to display.\n * hideOnBlur: false // Don't hide results when input loses focus\n * });\n *\n * // As we're passing an object of an arrays as data, override\n * // `getItemValue` by specifying the specific property to search on.\n * typeahead.getItemValue = function(item) { return item.name };\n *\n * input.addEventListener('change', function() {\n * console.log(typeahead.selected); // Current selected item.\n * });\n *\n * // With browserify\n * var Suggestions = require('suggestions');\n *\n * new Suggestions(input, data);\n */\nvar Suggestions = require('./src/suggestions');\nmodule.exports = Suggestions;\n\nif (typeof window !== 'undefined') {\n window.Suggestions = Suggestions;\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 * 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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","module.exports = {\n 'fr': {\n 'name': 'France',\n 'bbox': [[-4.59235, 41.380007], [9.560016, 51.148506]]\n },\n 'us': {\n 'name': 'United States',\n 'bbox': [[-171.791111, 18.91619], [-66.96466, 71.357764]]\n },\n 'ru': {\n 'name': 'Russia',\n 'bbox': [[19.66064, 41.151416], [190.10042, 81.2504]]\n },\n 'ca': {\n 'name': 'Canada',\n 'bbox': [[-140.99778, 41.675105], [-52.648099, 83.23324]]\n }\n};\n","'use strict';\n\n// Like https://github.com/thlorenz/lib/parse-link-header but without any\n// additional dependencies.\n\nfunction parseParam(param) {\n var parts = param.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/);\n if (!parts) return null;\n\n return {\n key: parts[1],\n value: parts[2]\n };\n}\n\nfunction parseLink(link) {\n var parts = link.match(/]*)>(.*)/);\n if (!parts) return null;\n\n var linkUrl = parts[1];\n var linkParams = parts[2].split(';');\n var rel = null;\n var parsedLinkParams = linkParams.reduce(function(result, param) {\n var parsed = parseParam(param);\n if (!parsed) return result;\n if (parsed.key === 'rel') {\n if (!rel) {\n rel = parsed.value;\n }\n return result;\n }\n result[parsed.key] = parsed.value;\n return result;\n }, {});\n if (!rel) return null;\n\n return {\n url: linkUrl,\n rel: rel,\n params: parsedLinkParams\n };\n}\n\n/**\n * Parse a Link header.\n *\n * @param {string} linkHeader\n * @returns {{\n * [string]: {\n * url: string,\n * params: { [string]: string }\n * }\n * }}\n */\nfunction parseLinkHeader(linkHeader) {\n if (!linkHeader) return {};\n\n return linkHeader.split(/,\\s*= 400) {\n var mapiError = new MapiError({\n request: request,\n body: xhr.response,\n statusCode: xhr.status\n });\n reject(mapiError);\n return;\n }\n resolve(xhr);\n };\n\n var body = request.body;\n\n // matching service needs to send a www-form-urlencoded request\n if (typeof body === 'string') {\n xhr.send(body);\n } else if (body) {\n xhr.send(JSON.stringify(body));\n } else if (file) {\n xhr.send(file);\n } else {\n xhr.send();\n }\n\n requestsUnderway[request.id] = xhr;\n }).then(function(xhr) {\n return createResponse(request, xhr);\n });\n}\n\n// The accessToken argument gives this function flexibility\n// for Mapbox's internal client.\nfunction createRequestXhr(request, accessToken) {\n var url = request.url(accessToken);\n var xhr = new window.XMLHttpRequest();\n xhr.open(request.method, url);\n Object.keys(request.headers).forEach(function(key) {\n xhr.setRequestHeader(key, request.headers[key]);\n });\n return xhr;\n}\n\nfunction browserSend(request) {\n return Promise.resolve().then(function() {\n var xhr = createRequestXhr(request, request.client.accessToken);\n return sendRequestXhr(request, xhr);\n });\n}\n\nmodule.exports = {\n browserAbort: browserAbort,\n sendRequestXhr: sendRequestXhr,\n browserSend: browserSend,\n createRequestXhr: createRequestXhr\n};\n","/*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar d;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '0.1.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","'use strict';\n\nvar base64 = require('base-64');\n\nvar tokenCache = {};\n\nfunction parseToken(token) {\n if (tokenCache[token]) {\n return tokenCache[token];\n }\n\n var parts = token.split('.');\n var usage = parts[0];\n var rawPayload = parts[1];\n if (!rawPayload) {\n throw new Error('Invalid token');\n }\n\n var parsedPayload = parsePaylod(rawPayload);\n\n var result = {\n usage: usage,\n user: parsedPayload.u\n };\n if (has(parsedPayload, 'a')) result.authorization = parsedPayload.a;\n if (has(parsedPayload, 'exp')) result.expires = parsedPayload.exp * 1000;\n if (has(parsedPayload, 'iat')) result.created = parsedPayload.iat * 1000;\n if (has(parsedPayload, 'scopes')) result.scopes = parsedPayload.scopes;\n if (has(parsedPayload, 'client')) result.client = parsedPayload.client;\n if (has(parsedPayload, 'll')) result.lastLogin = parsedPayload.ll;\n if (has(parsedPayload, 'iu')) result.impersonator = parsedPayload.iu;\n\n tokenCache[token] = result;\n return result;\n}\n\nfunction parsePaylod(rawPayload) {\n try {\n return JSON.parse(base64.decode(rawPayload));\n } catch (parseError) {\n throw new Error('Invalid token');\n }\n}\n\nfunction has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nmodule.exports = parseToken;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","'use strict';\n\n// Encode each item of an array individually. The comma\n// delimiters should not themselves be encoded.\nfunction encodeArray(arrayValue) {\n return arrayValue.map(encodeURIComponent).join(',');\n}\n\nfunction encodeValue(value) {\n if (Array.isArray(value)) {\n return encodeArray(value);\n }\n return encodeURIComponent(String(value));\n}\n\n/**\n * Append a query parameter to a URL.\n *\n * @param {string} url\n * @param {string} key\n * @param {string|number|boolean|Array<*>>} [value] - Provide an array\n * if the value is a list and commas between values need to be\n * preserved, unencoded.\n * @returns {string} - Modified URL.\n */\nfunction appendQueryParam(url, key, value) {\n if (value === false || value === null) {\n return url;\n }\n var punctuation = /\\?/.test(url) ? '&' : '?';\n var query = encodeURIComponent(key);\n if (value !== undefined && value !== '' && value !== true) {\n query += '=' + encodeValue(value);\n }\n return '' + url + punctuation + query;\n}\n\n/**\n * Derive a query string from an object and append it\n * to a URL.\n *\n * @param {string} url\n * @param {Object} [queryObject] - Values should be primitives.\n * @returns {string} - Modified URL.\n */\nfunction appendQueryObject(url, queryObject) {\n if (!queryObject) {\n return url;\n }\n\n var result = url;\n Object.keys(queryObject).forEach(function(key) {\n var value = queryObject[key];\n if (value === undefined) {\n return;\n }\n if (Array.isArray(value)) {\n value = value\n .filter(function(v) {\n return v !== null && v !== undefined;\n })\n .join(',');\n }\n result = appendQueryParam(result, key, value);\n });\n return result;\n}\n\n/**\n * Prepend an origin to a URL. If the URL already has an\n * origin, do nothing.\n *\n * @param {string} url\n * @param {string} origin\n * @returns {string} - Modified URL.\n */\nfunction prependOrigin(url, origin) {\n if (!origin) {\n return url;\n }\n\n if (url.slice(0, 4) === 'http') {\n return url;\n }\n\n var delimiter = url[0] === '/' ? '' : '/';\n return '' + origin.replace(/\\/$/, '') + delimiter + url;\n}\n\n/**\n * Interpolate values into a route with express-style,\n * colon-prefixed route parameters.\n *\n * @param {string} route\n * @param {Object} [params] - Values should be primitives\n * or arrays of primitives. Provide an array if the value\n * is a list and commas between values need to be\n * preserved, unencoded.\n * @returns {string} - Modified URL.\n */\nfunction interpolateRouteParams(route, params) {\n if (!params) {\n return route;\n }\n return route.replace(/\\/:([a-zA-Z0-9]+)/g, function(_, paramId) {\n var value = params[paramId];\n if (value === undefined) {\n throw new Error('Unspecified route parameter ' + paramId);\n }\n var preppedValue = encodeValue(value);\n return '/' + preppedValue;\n });\n}\n\nmodule.exports = {\n appendQueryObject: appendQueryObject,\n appendQueryParam: appendQueryParam,\n prependOrigin: prependOrigin,\n interpolateRouteParams: interpolateRouteParams\n};\n","'use strict';\n\nvar parseToken = require('@mapbox/parse-mapbox-token');\nvar xtend = require('xtend');\nvar EventEmitter = require('eventemitter3');\nvar urlUtils = require('../helpers/url-utils');\nvar constants = require('../constants');\n\nvar requestId = 1;\n\n/**\n * A Mapbox API request.\n *\n * Note that creating a `MapiRequest` does *not* send the request automatically.\n * Use the request's `send` method to send it off and get a `Promise`.\n *\n * The `emitter` property is an `EventEmitter` that emits the following events:\n *\n * - `'response'` - Listeners will be called with a `MapiResponse`.\n * - `'error'` - Listeners will be called with a `MapiError`.\n * - `'downloadProgress'` - Listeners will be called with `ProgressEvents`.\n * - `'uploadProgress'` - Listeners will be called with `ProgressEvents`.\n * Upload events are only available when the request includes a file.\n *\n * @class MapiRequest\n * @property {EventEmitter} emitter - An event emitter. See above.\n * @property {MapiClient} client - This request's `MapiClient`.\n * @property {MapiResponse|null} response - If this request has been sent and received\n * a response, the response is available on this property.\n * @property {MapiError|Error|null} error - If this request has been sent and\n * received an error in response, the error is available on this property.\n * @property {boolean} aborted - If the request has been aborted\n * (via [`abort`](#abort)), this property will be `true`.\n * @property {boolean} sent - If the request has been sent, this property will\n * be `true`. You cannot send the same request twice, so if you need to create\n * a new request that is the equivalent of an existing one, use\n * [`clone`](#clone).\n * @property {string} path - The request's path, including colon-prefixed route\n * parameters.\n * @property {string} origin - The request's origin.\n * @property {string} method - The request's HTTP method.\n * @property {Object} query - A query object, which will be transformed into\n * a URL query string.\n * @property {Object} params - A route parameters object, whose values will\n * be interpolated the path.\n * @property {Object} headers - The request's headers.\n * @property {Object|string|null} body - Data to send with the request.\n * If the request has a body, it will also be sent with the header\n * `'Content-Type: application/json'`.\n * @property {Blob|ArrayBuffer|string|ReadStream} file - A file to\n * send with the request. The browser client accepts Blobs and ArrayBuffers;\n * the Node client accepts strings (filepaths) and ReadStreams.\n * @property {string} encoding - The encoding of the response.\n * @property {string} sendFileAs - The method to send the `file`. Options are\n * `data` (x-www-form-urlencoded) or `form` (multipart/form-data).\n */\n\n/**\n * @ignore\n * @param {MapiClient} client\n * @param {Object} options\n * @param {string} options.method\n * @param {string} options.path\n * @param {Object} [options.query={}]\n * @param {Object} [options.params={}]\n * @param {string} [options.origin]\n * @param {Object} [options.headers]\n * @param {Object} [options.body=null]\n * @param {Blob|ArrayBuffer|string|ReadStream} [options.file=null]\n * @param {string} [options.encoding=utf8]\n */\nfunction MapiRequest(client, options) {\n if (!client) {\n throw new Error('MapiRequest requires a client');\n }\n if (!options || !options.path || !options.method) {\n throw new Error(\n 'MapiRequest requires an options object with path and method properties'\n );\n }\n\n var defaultHeaders = {};\n if (options.body) {\n defaultHeaders['content-type'] = 'application/json';\n }\n\n var headersWithDefaults = xtend(defaultHeaders, options.headers);\n\n // Disallows duplicate header names of mixed case,\n // e.g. Content-Type and content-type.\n var headers = Object.keys(headersWithDefaults).reduce(function(memo, name) {\n memo[name.toLowerCase()] = headersWithDefaults[name];\n return memo;\n }, {});\n\n this.id = requestId++;\n this._options = options;\n\n this.emitter = new EventEmitter();\n this.client = client;\n this.response = null;\n this.error = null;\n this.sent = false;\n this.aborted = false;\n this.path = options.path;\n this.method = options.method;\n this.origin = options.origin || client.origin;\n this.query = options.query || {};\n this.params = options.params || {};\n this.body = options.body || null;\n this.file = options.file || null;\n this.encoding = options.encoding || 'utf8';\n this.sendFileAs = options.sendFileAs || null;\n this.headers = headers;\n}\n\n/**\n * Get the URL of the request.\n *\n * @param {string} [accessToken] - By default, the access token of the request's\n * client is used.\n * @return {string}\n */\nMapiRequest.prototype.url = function url(accessToken) {\n var url = urlUtils.prependOrigin(this.path, this.origin);\n url = urlUtils.appendQueryObject(url, this.query);\n var routeParams = this.params;\n var actualAccessToken =\n accessToken == null ? this.client.accessToken : accessToken;\n if (actualAccessToken) {\n url = urlUtils.appendQueryParam(url, 'access_token', actualAccessToken);\n var accessTokenOwnerId = parseToken(actualAccessToken).user;\n routeParams = xtend({ ownerId: accessTokenOwnerId }, routeParams);\n }\n url = urlUtils.interpolateRouteParams(url, routeParams);\n return url;\n};\n\n/**\n * Send the request. Returns a Promise that resolves with a `MapiResponse`.\n * You probably want to use `response.body`.\n *\n * `send` only retrieves the first page of paginated results. You can get\n * the next page by using the `MapiResponse`'s [`nextPage`](#nextpage)\n * function, or iterate through all pages using [`eachPage`](#eachpage)\n * instead of `send`.\n *\n * @returns {Promise}\n */\nMapiRequest.prototype.send = function send() {\n var self = this;\n\n if (self.sent) {\n throw new Error(\n 'This request has already been sent. Check the response and error properties. Create a new request with clone().'\n );\n }\n self.sent = true;\n\n return self.client.sendRequest(self).then(\n function(response) {\n self.response = response;\n self.emitter.emit(constants.EVENT_RESPONSE, response);\n return response;\n },\n function(error) {\n self.error = error;\n self.emitter.emit(constants.EVENT_ERROR, error);\n throw error;\n }\n );\n};\n\n/**\n * Abort the request.\n *\n * Any pending `Promise` returned by [`send`](#send) will be rejected with\n * an error with `type: 'RequestAbortedError'`. If you've created a request\n * that might be aborted, you need to catch and handle such errors.\n *\n * This method will also abort any requests created while fetching subsequent\n * pages via [`eachPage`](#eachpage).\n *\n * If the request has not been sent or has already been aborted, nothing\n * will happen.\n */\nMapiRequest.prototype.abort = function abort() {\n if (this._nextPageRequest) {\n this._nextPageRequest.abort();\n delete this._nextPageRequest;\n }\n\n if (this.response || this.error || this.aborted) return;\n\n this.aborted = true;\n this.client.abortRequest(this);\n};\n\n/**\n * Invoke a callback for each page of a paginated API response.\n *\n * The callback should have the following signature:\n *\n * ```js\n * (\n * error: MapiError,\n * response: MapiResponse,\n * next: () => void\n * ) => void\n * ```\n *\n * **The next page will not be fetched until you've invoked the\n * `next` callback**, indicating that you're ready for it.\n *\n * @param {Function} callback\n */\nMapiRequest.prototype.eachPage = function eachPage(callback) {\n var self = this;\n\n function handleResponse(response) {\n function getNextPage() {\n delete self._nextPageRequest;\n var nextPageRequest = response.nextPage();\n if (nextPageRequest) {\n self._nextPageRequest = nextPageRequest;\n getPage(nextPageRequest);\n }\n }\n callback(null, response, getNextPage);\n }\n\n function handleError(error) {\n callback(error, null, function() {});\n }\n\n function getPage(request) {\n request.send().then(handleResponse, handleError);\n }\n getPage(this);\n};\n\n/**\n * Clone this request.\n *\n * Each request can only be sent *once*. So if you'd like to send the\n * same request again, clone it and send away.\n *\n * @returns {MapiRequest} - A new `MapiRequest` configured just like this one.\n */\nMapiRequest.prototype.clone = function clone() {\n return this._extend();\n};\n\n/**\n * @ignore\n */\nMapiRequest.prototype._extend = function _extend(options) {\n var extendedOptions = xtend(this._options, options);\n return new MapiRequest(this.client, extendedOptions);\n};\n\nmodule.exports = MapiRequest;\n","'use strict';\n\nvar parseToken = require('@mapbox/parse-mapbox-token');\nvar MapiRequest = require('./mapi-request');\nvar constants = require('../constants');\n\n/**\n * A low-level Mapbox API client. Use it to create service clients\n * that share the same configuration.\n *\n * Services and `MapiRequest`s use the underlying `MapiClient` to\n * determine how to create, send, and abort requests in a way\n * that is appropriate to the configuration and environment\n * (Node or the browser).\n *\n * @class MapiClient\n * @property {string} accessToken - The Mapbox access token assigned\n * to this client.\n * @property {string} [origin] - The origin\n * to use for API requests. Defaults to https://api.mapbox.com.\n */\n\nfunction MapiClient(options) {\n if (!options || !options.accessToken) {\n throw new Error('Cannot create a client without an access token');\n }\n // Try parsing the access token to determine right away if it's valid.\n parseToken(options.accessToken);\n\n this.accessToken = options.accessToken;\n this.origin = options.origin || constants.API_ORIGIN;\n}\n\nMapiClient.prototype.createRequest = function createRequest(requestOptions) {\n return new MapiRequest(this, requestOptions);\n};\n\nmodule.exports = MapiClient;\n","'use strict';\n\nvar browser = require('./browser-layer');\nvar MapiClient = require('../classes/mapi-client');\n\nfunction BrowserClient(options) {\n MapiClient.call(this, options);\n}\nBrowserClient.prototype = Object.create(MapiClient.prototype);\nBrowserClient.prototype.constructor = BrowserClient;\n\nBrowserClient.prototype.sendRequest = browser.browserSend;\nBrowserClient.prototype.abortRequest = browser.browserAbort;\n\n/**\n * Create a client for the browser.\n *\n * @param {Object} options\n * @param {string} options.accessToken\n * @param {string} [options.origin]\n * @returns {MapiClient}\n */\nfunction createBrowserClient(options) {\n return new BrowserClient(options);\n}\n\nmodule.exports = createBrowserClient;\n","'use strict';\n\nvar client = require('./lib/client');\n\nmodule.exports = client;\n","'use strict';\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n","'use strict';\n/**\n * Validators are functions which assert certain type.\n * They can return a string which can then be used\n * to display a helpful error message.\n * They can also return a function for a custom error message.\n */\nvar isPlainObject = require('is-plain-obj');\nvar xtend = require('xtend');\n\nvar DEFAULT_ERROR_PATH = 'value';\nvar NEWLINE_INDENT = '\\n ';\n\nvar v = {};\n\n/**\n * Runners\n *\n * Take root validators and run assertion\n */\nv.assert = function(rootValidator, options) {\n options = options || {};\n return function(value) {\n var message = validate(rootValidator, value);\n // all good\n if (!message) {\n return;\n }\n\n var errorMessage = processMessage(message, options);\n\n if (options.apiName) {\n errorMessage = options.apiName + ': ' + errorMessage;\n }\n\n throw new Error(errorMessage);\n };\n};\n\n/**\n * Higher Order Validators\n *\n * validators which take other validators as input\n * and output a new validator\n */\nv.shape = function shape(validatorObj) {\n var validators = objectEntries(validatorObj);\n return function shapeValidator(value) {\n var validationResult = validate(v.plainObject, value);\n\n if (validationResult) {\n return validationResult;\n }\n\n var key, validator;\n var errorMessages = [];\n\n for (var i = 0; i < validators.length; i++) {\n key = validators[i].key;\n validator = validators[i].value;\n validationResult = validate(validator, value[key]);\n\n if (validationResult) {\n // return [key].concat(validationResult);\n errorMessages.push([key].concat(validationResult));\n }\n }\n\n if (errorMessages.length < 2) {\n return errorMessages[0];\n }\n\n // enumerate all the error messages\n return function(options) {\n errorMessages = errorMessages.map(function(message) {\n var key = message[0];\n var renderedMessage = processMessage(message, options)\n .split('\\n')\n .join(NEWLINE_INDENT); // indents any inner nesting\n return '- ' + key + ': ' + renderedMessage;\n });\n\n var objectId = options.path.join('.');\n var ofPhrase = objectId === DEFAULT_ERROR_PATH ? '' : ' of ' + objectId;\n\n return (\n 'The following properties' +\n ofPhrase +\n ' have invalid values:' +\n NEWLINE_INDENT +\n errorMessages.join(NEWLINE_INDENT)\n );\n };\n };\n};\n\nv.strictShape = function strictShape(validatorObj) {\n var shapeValidator = v.shape(validatorObj);\n return function strictShapeValidator(value) {\n var shapeResult = shapeValidator(value);\n if (shapeResult) {\n return shapeResult;\n }\n\n var invalidKeys = Object.keys(value).reduce(function(memo, valueKey) {\n if (validatorObj[valueKey] === undefined) {\n memo.push(valueKey);\n }\n return memo;\n }, []);\n\n if (invalidKeys.length !== 0) {\n return function() {\n return 'The following keys are invalid: ' + invalidKeys.join(', ');\n };\n }\n };\n};\n\nv.arrayOf = function arrayOf(validator) {\n return createArrayValidator(validator);\n};\n\nv.tuple = function tuple() {\n var validators = Array.isArray(arguments[0])\n ? arguments[0]\n : Array.prototype.slice.call(arguments);\n return createArrayValidator(validators);\n};\n\n// Currently array validation fails when the first invalid item is found.\nfunction createArrayValidator(validators) {\n var validatingTuple = Array.isArray(validators);\n var getValidator = function(index) {\n if (validatingTuple) {\n return validators[index];\n }\n return validators;\n };\n\n return function arrayValidator(value) {\n var validationResult = validate(v.plainArray, value);\n if (validationResult) {\n return validationResult;\n }\n\n if (validatingTuple && value.length !== validators.length) {\n return 'an array with ' + validators.length + ' items';\n }\n\n for (var i = 0; i < value.length; i++) {\n validationResult = validate(getValidator(i), value[i]);\n if (validationResult) {\n return [i].concat(validationResult);\n }\n }\n };\n}\n\nv.required = function required(validator) {\n function requiredValidator(value) {\n if (value == null) {\n return function(options) {\n return formatErrorMessage(\n options,\n isArrayCulprit(options.path)\n ? 'cannot be undefined/null.'\n : 'is required.'\n );\n };\n }\n return validator.apply(this, arguments);\n }\n requiredValidator.__required = true;\n\n return requiredValidator;\n};\n\nv.oneOfType = function oneOfType() {\n var validators = Array.isArray(arguments[0])\n ? arguments[0]\n : Array.prototype.slice.call(arguments);\n return function oneOfTypeValidator(value) {\n var messages = validators\n .map(function(validator) {\n return validate(validator, value);\n })\n .filter(Boolean);\n\n // If we don't have as many messages as no. of validators,\n // then at least one validator was ok with the value.\n if (messages.length !== validators.length) {\n return;\n }\n\n // check primitive type\n if (\n messages.every(function(message) {\n return message.length === 1 && typeof message[0] === 'string';\n })\n ) {\n return orList(\n messages.map(function(m) {\n return m[0];\n })\n );\n }\n\n // Complex oneOfTypes like\n // `v.oneOftypes(v.shape({name: v.string})`, `v.shape({name: v.number}))`\n // are complex ¯\\_(ツ)_/¯. For the current scope only returning the longest message.\n return messages.reduce(function(max, arr) {\n return arr.length > max.length ? arr : max;\n });\n };\n};\n\n/**\n * Meta Validators\n * which take options as argument (not validators)\n * and return a new primitive validator\n */\nv.equal = function equal(compareWith) {\n return function equalValidator(value) {\n if (value !== compareWith) {\n return JSON.stringify(compareWith);\n }\n };\n};\n\nv.oneOf = function oneOf() {\n var options = Array.isArray(arguments[0])\n ? arguments[0]\n : Array.prototype.slice.call(arguments);\n var validators = options.map(function(value) {\n return v.equal(value);\n });\n\n return v.oneOfType.apply(this, validators);\n};\n\nv.range = function range(compareWith) {\n var min = compareWith[0];\n var max = compareWith[1];\n return function rangeValidator(value) {\n var validationResult = validate(v.number, value);\n\n if (validationResult || value < min || value > max) {\n return 'number between ' + min + ' & ' + max + ' (inclusive)';\n }\n };\n};\n\n/**\n * Primitive validators\n *\n * simple validators which return a string or undefined\n */\nv.any = function any() {\n return;\n};\n\nv.boolean = function boolean(value) {\n if (typeof value !== 'boolean') {\n return 'boolean';\n }\n};\n\nv.number = function number(value) {\n if (typeof value !== 'number') {\n return 'number';\n }\n};\n\nv.plainArray = function plainArray(value) {\n if (!Array.isArray(value)) {\n return 'array';\n }\n};\n\nv.plainObject = function plainObject(value) {\n if (!isPlainObject(value)) {\n return 'object';\n }\n};\n\nv.string = function string(value) {\n if (typeof value !== 'string') {\n return 'string';\n }\n};\n\nv.func = function func(value) {\n if (typeof value !== 'function') {\n return 'function';\n }\n};\n\nfunction validate(validator, value) {\n // assertions are optional by default unless wrapped in v.require\n if (value == null && !validator.hasOwnProperty('__required')) {\n return;\n }\n\n var result = validator(value);\n\n if (result) {\n return Array.isArray(result) ? result : [result];\n }\n}\n\nfunction processMessage(message, options) {\n // message array follows the convention\n // [...path, result]\n // path is an array of object keys / array indices\n // result is output of the validator\n var len = message.length;\n\n var result = message[len - 1];\n var path = message.slice(0, len - 1);\n\n if (path.length === 0) {\n path = [DEFAULT_ERROR_PATH];\n }\n options = xtend(options, { path: path });\n\n return typeof result === 'function'\n ? result(options) // allows customization of result\n : formatErrorMessage(options, prettifyResult(result));\n}\n\nfunction orList(list) {\n if (list.length < 2) {\n return list[0];\n }\n if (list.length === 2) {\n return list.join(' or ');\n }\n return list.slice(0, -1).join(', ') + ', or ' + list.slice(-1);\n}\n\nfunction prettifyResult(result) {\n return 'must be ' + addArticle(result) + '.';\n}\n\nfunction addArticle(nounPhrase) {\n if (/^an? /.test(nounPhrase)) {\n return nounPhrase;\n }\n if (/^[aeiou]/i.test(nounPhrase)) {\n return 'an ' + nounPhrase;\n }\n if (/^[a-z]/i.test(nounPhrase)) {\n return 'a ' + nounPhrase;\n }\n return nounPhrase;\n}\n\nfunction formatErrorMessage(options, prettyResult) {\n var arrayCulprit = isArrayCulprit(options.path);\n var output = options.path.join('.') + ' ' + prettyResult;\n var prepend = arrayCulprit ? 'Item at position ' : '';\n\n return prepend + output;\n}\n\nfunction isArrayCulprit(path) {\n return typeof path[path.length - 1] == 'number' || typeof path[0] == 'number';\n}\n\nfunction objectEntries(obj) {\n return Object.keys(obj || {}).map(function(key) {\n return { key: key, value: obj[key] };\n });\n}\n\nv.validate = validate;\nv.processMessage = processMessage;\n\nmodule.exports = v;\n","'use strict';\n\nvar xtend = require('xtend');\nvar v = require('@mapbox/fusspot');\n\nfunction file(value) {\n // If we're in a browser so Blob is available, the file must be that.\n // In Node, however, it could be a filepath or a pipeable (Readable) stream.\n if (typeof window !== 'undefined') {\n if (value instanceof global.Blob || value instanceof global.ArrayBuffer) {\n return;\n }\n return 'Blob or ArrayBuffer';\n }\n if (typeof value === 'string' || value.pipe !== undefined) {\n return;\n }\n return 'Filename or Readable stream';\n}\n\nfunction assertShape(validatorObj, apiName) {\n return v.assert(v.strictShape(validatorObj), apiName);\n}\n\nfunction date(value) {\n var msg = 'date';\n if (typeof value === 'boolean') {\n return msg;\n }\n try {\n var date = new Date(value);\n if (date.getTime && isNaN(date.getTime())) {\n return msg;\n }\n } catch (e) {\n return msg;\n }\n}\n\nfunction coordinates(value) {\n return v.tuple(v.number, v.number)(value);\n}\n\nmodule.exports = xtend(v, {\n file: file,\n date: date,\n coordinates: coordinates,\n assertShape: assertShape\n});\n","'use strict';\n\n/**\n * Create a new object by picking properties off an existing object.\n * The second param can be overloaded as a callback for\n * more fine grained picking of properties.\n * @param {Object} source\n * @param {Array|function(string, Object):boolean} keys\n * @returns {Object}\n */\nfunction pick(source, keys) {\n var filter = function(key, val) {\n return keys.indexOf(key) !== -1 && val !== undefined;\n };\n\n if (typeof keys === 'function') {\n filter = keys;\n }\n\n return Object.keys(source)\n .filter(function(key) {\n return filter(key, source[key]);\n })\n .reduce(function(result, key) {\n result[key] = source[key];\n return result;\n }, {});\n}\n\nmodule.exports = pick;\n","'use strict';\n\nfunction objectMap(obj, cb) {\n return Object.keys(obj).reduce(function(result, key) {\n result[key] = cb(key, obj[key]);\n return result;\n }, {});\n}\n\nmodule.exports = objectMap;\n","'use strict';\n\nvar objectMap = require('./object-map');\n\n/**\n * Stringify all the boolean values in an object, so true becomes \"true\".\n *\n * @param {Object} obj\n * @returns {Object}\n */\nfunction stringifyBoolean(obj) {\n return objectMap(obj, function(_, value) {\n return typeof value === 'boolean' ? JSON.stringify(value) : value;\n });\n}\n\nmodule.exports = stringifyBoolean;\n","'use strict';\n\nvar MapiClient = require('../../lib/classes/mapi-client');\n// This will create the environment-appropriate client.\nvar createClient = require('../../lib/client');\n\nfunction createServiceFactory(ServicePrototype) {\n return function(clientOrConfig) {\n var client;\n if (MapiClient.prototype.isPrototypeOf(clientOrConfig)) {\n client = clientOrConfig;\n } else {\n client = createClient(clientOrConfig);\n }\n var service = Object.create(ServicePrototype);\n service.client = client;\n return service;\n };\n}\n\nmodule.exports = createServiceFactory;\n","'use strict';\n\nvar xtend = require('xtend');\nvar v = require('./service-helpers/validator');\nvar pick = require('./service-helpers/pick');\nvar stringifyBooleans = require('./service-helpers/stringify-booleans');\nvar createServiceFactory = require('./service-helpers/create-service-factory');\n\n/**\n * Geocoding API service.\n *\n * Learn more about this service and its responses in\n * [the HTTP service documentation](https://docs.mapbox.com/api/search/#geocoding).\n */\nvar Geocoding = {};\n\nvar featureTypes = [\n 'country',\n 'region',\n 'postcode',\n 'district',\n 'place',\n 'locality',\n 'neighborhood',\n 'address',\n 'poi',\n 'poi.landmark'\n];\n\n/**\n * Search for a place.\n *\n * See the [public documentation](https://docs.mapbox.com/api/search/#forward-geocoding).\n *\n * @param {Object} config\n * @param {string} config.query - A place name.\n * @param {'mapbox.places'|'mapbox.places-permanent'} [config.mode=\"mapbox.places\"] - Either `mapbox.places` for ephemeral geocoding, or `mapbox.places-permanent` for storing results and batch geocoding.\n * @param {Array} [config.countries] - Limits results to the specified countries.\n * Each item in the array should be an [ISO 3166 alpha 2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).\n * @param {Coordinates|'ip'} [config.proximity] - Bias local results based on a provided coordinate location or a user's IP address.\n * @param {Array<'country'|'region'|'postcode'|'district'|'place'|'locality'|'neighborhood'|'address'|'poi'|'poi.landmark'>} [config.types] - Filter results by feature types.\n * @param {boolean} [config.autocomplete=true] - Return autocomplete results or not.\n * @param {BoundingBox} [config.bbox] - Limit results to a bounding box.\n * @param {number} [config.limit=5] - Limit the number of results returned.\n * @param {Array} [config.language] - Specify the language to use for response text and, for forward geocoding, query result weighting.\n * Options are [IETF language tags](https://en.wikipedia.org/wiki/IETF_language_tag) comprised of a mandatory\n * [ISO 639-1 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) and optionally one or more IETF subtags for country or script.\n * @param {boolean} [config.routing=false] - Specify whether to request additional metadata about the recommended navigation destination. Only applicable for address features.\n * @param {boolean} [config.fuzzyMatch=true] - Specify whether the Geocoding API should attempt approximate, as well as exact, matching.\n * @param {String} [config.worldview=\"us\"] - Filter results to geographic features whose characteristics are defined differently by audiences belonging to various regional, cultural, or political groups.\n * @param {String} [config.session_token] - A unique session identifier generated by the client.\n * @return {MapiRequest}\n *\n * @example\n * geocodingClient.forwardGeocode({\n * query: 'Paris, France',\n * limit: 2\n * })\n * .send()\n * .then(response => {\n * const match = response.body;\n * });\n *\n * @example\n * // geocoding with proximity\n * geocodingClient.forwardGeocode({\n * query: 'Paris, France',\n * proximity: [-95.4431142, 33.6875431]\n * })\n * .send()\n * .then(response => {\n * const match = response.body;\n * });\n *\n * // geocoding with countries\n * geocodingClient.forwardGeocode({\n * query: 'Paris, France',\n * countries: ['fr']\n * })\n * .send()\n * .then(response => {\n * const match = response.body;\n * });\n *\n * // geocoding with bounding box\n * geocodingClient.forwardGeocode({\n * query: 'Paris, France',\n * bbox: [2.14, 48.72, 2.55, 48.96]\n * })\n * .send()\n * .then(response => {\n * const match = response.body;\n * });\n */\nGeocoding.forwardGeocode = function(config) {\n v.assertShape({\n query: v.required(v.string),\n mode: v.oneOf('mapbox.places', 'mapbox.places-permanent'),\n countries: v.arrayOf(v.string),\n proximity: v.oneOf(v.coordinates, 'ip'),\n types: v.arrayOf(v.oneOf(featureTypes)),\n autocomplete: v.boolean,\n bbox: v.arrayOf(v.number),\n limit: v.number,\n language: v.arrayOf(v.string),\n routing: v.boolean,\n fuzzyMatch: v.boolean,\n worldview: v.string,\n session_token: v.string\n })(config);\n\n config.mode = config.mode || 'mapbox.places';\n\n var query = stringifyBooleans(\n xtend(\n { country: config.countries },\n pick(config, [\n 'proximity',\n 'types',\n 'autocomplete',\n 'bbox',\n 'limit',\n 'language',\n 'routing',\n 'fuzzyMatch',\n 'worldview',\n 'session_token'\n ])\n )\n );\n\n return this.client.createRequest({\n method: 'GET',\n path: '/geocoding/v5/:mode/:query.json',\n params: pick(config, ['mode', 'query']),\n query: query\n });\n};\n\n/**\n * Search for places near coordinates.\n *\n * See the [public documentation](https://docs.mapbox.com/api/search/#reverse-geocoding).\n *\n * @param {Object} config\n * @param {Coordinates} config.query - Coordinates at which features will be searched.\n * @param {'mapbox.places'|'mapbox.places-permanent'} [config.mode=\"mapbox.places\"] - Either `mapbox.places` for ephemeral geocoding, or `mapbox.places-permanent` for storing results and batch geocoding.\n * @param {Array} [config.countries] - Limits results to the specified countries.\n * Each item in the array should be an [ISO 3166 alpha 2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).\n * @param {Array<'country'|'region'|'postcode'|'district'|'place'|'locality'|'neighborhood'|'address'|'poi'|'poi.landmark'>} [config.types] - Filter results by feature types.\n * @param {BoundingBox} [config.bbox] - Limit results to a bounding box.\n * @param {number} [config.limit=1] - Limit the number of results returned. If using this option, you must provide a single item for `types`.\n * @param {Array} [config.language] - Specify the language to use for response text and, for forward geocoding, query result weighting.\n * Options are [IETF language tags](https://en.wikipedia.org/wiki/IETF_language_tag) comprised of a mandatory\n * [ISO 639-1 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) and optionally one or more IETF subtags for country or script.\n * @param {'distance'|'score'} [config.reverseMode='distance'] - Set the factors that are used to sort nearby results.\n * @param {boolean} [config.routing=false] - Specify whether to request additional metadata about the recommended navigation destination. Only applicable for address features.\n * @param {String} [config.worldview=\"us\"] - Filter results to geographic features whose characteristics are defined differently by audiences belonging to various regional, cultural, or political groups.\n * @param {String} [config.session_token] - A unique session identifier generated by the client.\n * @return {MapiRequest}\n *\n * @example\n * geocodingClient.reverseGeocode({\n * query: [-95.4431142, 33.6875431]\n * })\n * .send()\n * .then(response => {\n * // GeoJSON document with geocoding matches\n * const match = response.body;\n * });\n */\nGeocoding.reverseGeocode = function(config) {\n v.assertShape({\n query: v.required(v.coordinates),\n mode: v.oneOf('mapbox.places', 'mapbox.places-permanent'),\n countries: v.arrayOf(v.string),\n types: v.arrayOf(v.oneOf(featureTypes)),\n bbox: v.arrayOf(v.number),\n limit: v.number,\n language: v.arrayOf(v.string),\n reverseMode: v.oneOf('distance', 'score'),\n routing: v.boolean,\n worldview: v.string,\n session_token: v.string\n })(config);\n\n config.mode = config.mode || 'mapbox.places';\n\n var query = stringifyBooleans(\n xtend(\n { country: config.countries },\n pick(config, [\n 'country',\n 'types',\n 'bbox',\n 'limit',\n 'language',\n 'reverseMode',\n 'routing',\n 'worldview',\n 'session_token'\n ])\n )\n );\n\n return this.client.createRequest({\n method: 'GET',\n path: '/geocoding/v5/:mode/:query.json',\n params: pick(config, ['mode', 'query']),\n query: query\n });\n};\n\nmodule.exports = createServiceFactory(Geocoding);\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport { urlAlphabet }\n","import { urlAlphabet } from './url-alphabet/index.js'\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nlet nanoid = (size = 21) =>\n crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n byte &= 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte > 62) {\n id += '-'\n } else {\n id += '_'\n }\n return id\n }, '')\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","'use strict';\nvar nanoid = require('nanoid').nanoid;\n\n/**\n * Construct a new mapbox event client to send interaction events to the mapbox event service\n * @param {Object} options options with which to create the service\n * @param {String} options.accessToken the mapbox access token to make requests\n * @param {Number} [options.flushInterval=1000] the number of ms after which to flush the event queue\n * @param {Number} [options.maxQueueSize=100] the number of events to queue before flushing\n * @private\n */\nfunction MapboxEventManager(options) {\n this.origin = options.origin || 'https://api.mapbox.com';\n this.endpoint = 'events/v2';\n this.access_token = options.accessToken;\n this.version = '0.3.0'\n this.pluginSessionID = this.generateSessionID();\n this.sessionIncrementer = 0;\n this.userAgent = this.getUserAgent();\n\n this.options = options;\n this.send = this.send.bind(this);\n\n\n // parse global options to be sent with each request\n this.countries = (options.countries) ? options.countries.split(\",\") : null;\n this.types = (options.types) ? options.types.split(\",\") : null;\n this.bbox = (options.bbox) ? options.bbox : null;\n this.language = (options.language) ? options.language.split(\",\") : null;\n this.limit = (options.limit) ? +options.limit : null;\n this.locale = navigator.language || null;\n this.enableEventLogging = this.shouldEnableLogging(options);\n this.eventQueue = new Array();\n this.flushInterval = options.flushInterval || 1000;\n this.maxQueueSize = options.maxQueueSize || 100;\n this.timer = (this.flushInterval) ? setTimeout(this.flush.bind(this), this.flushInterval) : null;\n // keep some state to deduplicate requests if necessary\n this.lastSentInput = \"\";\n this.lastSentIndex = 0;\n}\n\nMapboxEventManager.prototype = {\n /**\n * Send a search.select event to the mapbox events service\n * This event marks the array index of the item selected by the user out of the array of possible options\n * @private\n * @param {Object} selected the geojson feature selected by the user\n * @param {Object} geocoder a mapbox-gl-geocoder instance\n * @returns {Promise}\n */\n select: function(selected, geocoder){\n var payload = this.getEventPayload('search.select', geocoder, { selectedFeature: selected });\n if (!payload) return; // reject malformed event\n if ((payload.resultIndex === this.lastSentIndex && payload.queryString === this.lastSentInput) || payload.resultIndex == -1) {\n // don't log duplicate events if the user re-selected the same feature on the same search\n return;\n }\n this.lastSentIndex = payload.resultIndex;\n this.lastSentInput = payload.queryString;\n return this.push(payload)\n },\n\n /**\n * Send a search-start event to the mapbox events service\n * This turnstile event marks when a user starts a new search\n * @private\n * @param {Object} geocoder a mapbox-gl-geocoder instance\n * @returns {Promise}\n */\n start: function(geocoder){\n var payload = this.getEventPayload('search.start', geocoder);\n if (!payload) return; // reject malformed event\n return this.push(payload);\n },\n\n /**\n * Send a search-keyevent event to the mapbox events service\n * This event records each keypress in sequence\n * @private\n * @param {Object} keyEvent the keydown event to log\n * @param {Object} geocoder a mapbox-gl-geocoder instance\n * \n */\n keyevent: function(keyEvent, geocoder){\n\n //pass invalid event\n if (!keyEvent.key) return;\n // don't send events for keys that don't change the input\n // TAB, ESC, LEFT, RIGHT, ENTER, UP, DOWN\n if (keyEvent.metaKey || [9, 27, 37, 39, 13, 38, 40].indexOf(keyEvent.keyCode) !== -1) return;\n var payload = this.getEventPayload('search.keystroke', geocoder, { key: keyEvent.key });\n if (!payload) return; // reject malformed event\n return this.push(payload);\n },\n\n /**\n * Send an event to the events service\n *\n * The event is skipped if the instance is not enabled to send logging events\n *\n * @private\n * @param {Object} payload the http POST body of the event\n * @param {Function} [callback] a callback function to invoke when the send has completed\n * @returns {Promise}\n */\n send: function (payload, callback) {\n if (!this.enableEventLogging) {\n if (callback) return callback();\n return;\n }\n var options = this.getRequestOptions(payload);\n this.request(options, function(err){\n if (err) return this.handleError(err, callback);\n if (callback) {\n return callback();\n }\n }.bind(this))\n },\n /**\n * Get http request options\n * @private\n * @param {*} payload\n */\n getRequestOptions: function(payload){\n if (!Array.isArray(payload)) payload = [payload];\n var options = {\n // events must be sent with POST\n method: \"POST\",\n host: this.origin,\n path: this.endpoint + \"?access_token=\" + this.access_token,\n headers: {\n 'Content-Type': 'application/json'\n },\n body:JSON.stringify(payload) //events are arrays\n }\n return options\n },\n\n /**\n * Get the event payload to send to the events service\n * Most payload properties are shared across all events\n * @private\n * @param {String} event the name of the event to send to the events service. Valid options are 'search.start', 'search.select', 'search.feedback'.\n * @param {Object} geocoder a mapbox-gl-geocoder instance\n * @param {Object} eventArgs Additional arguments needed for certain event types\n * @param {Object} eventArgs.key The key pressed by the user\n * @param {Object} eventArgs.selectedFeature GeoJSON Feature selected by the user\n * @returns {Object} an event payload\n */\n getEventPayload: function (event, geocoder, eventArgs = {}) {\n // Make sure required arguments are present for certain event types\n if (\n (event === 'search.select' && !eventArgs.selectedFeature) ||\n (event === 'search.keystroke' && !eventArgs.key)\n ) {\n return null;\n }\n\n // Handle proximity, whether null, lat/lng coordinate object, or 'ip'\n var proximity;\n if (!geocoder.options.proximity) {\n proximity = null;\n } else if (typeof geocoder.options.proximity === 'object') {\n proximity = [geocoder.options.proximity.longitude, geocoder.options.proximity.latitude];\n } else if (geocoder.options.proximity === 'ip') {\n var ipProximityHeader = geocoder._headers ? geocoder._headers['ip-proximity'] : null;\n if (ipProximityHeader && typeof ipProximityHeader === 'string') {\n proximity = ipProximityHeader.split(',').map(parseFloat);\n } else {\n proximity = [999,999]; // Alias for 'ip' in event logs\n }\n } else {\n proximity = geocoder.options.proximity;\n }\n\n var zoom = (geocoder._map) ? geocoder._map.getZoom() : undefined;\n var payload = {\n event: event,\n version: this.getEventSchemaVersion(event),\n created: +new Date(),\n sessionIdentifier: this.getSessionId(),\n country: this.countries,\n userAgent: this.userAgent,\n language: this.language,\n bbox: this.bbox,\n types: this.types,\n endpoint: 'mapbox.places',\n autocomplete: geocoder.options.autocomplete,\n fuzzyMatch: geocoder.options.fuzzyMatch,\n proximity: proximity,\n limit: geocoder.options.limit,\n routing: geocoder.options.routing,\n worldview: geocoder.options.worldview,\n mapZoom: zoom,\n keyboardLocale: this.locale\n }\n\n // get the text in the search bar\n if (event === \"search.select\"){\n payload.queryString = geocoder.inputString;\n } else if (event != \"search.select\" && geocoder._inputEl){\n payload.queryString = geocoder._inputEl.value;\n } else {\n payload.queryString = geocoder.inputString;\n }\n\n // add additional properties for certain event types\n if (['search.keystroke', 'search.select'].includes(event)) {\n payload.path = 'geocoding/v5/mapbox.places';\n }\n if (event === 'search.keystroke' && eventArgs.key) {\n payload.lastAction = eventArgs.key;\n } else if (event === 'search.select' && eventArgs.selectedFeature) {\n var selected = eventArgs.selectedFeature;\n var resultIndex = this.getSelectedIndex(selected, geocoder);\n payload.resultIndex = resultIndex;\n payload.resultPlaceName = selected.place_name;\n payload.resultId = selected.id;\n if (selected.properties) {\n payload.resultMapboxId = selected.properties.mapbox_id;\n }\n if (geocoder._typeahead) {\n var results = geocoder._typeahead.data;\n if (results && results.length > 0) {\n payload.suggestionIds = this.getSuggestionIds(results);\n payload.suggestionNames = this.getSuggestionNames(results);\n payload.suggestionTypes = this.getSuggestionTypes(results);\n payload.suggestionSources = this.getSuggestionSources(results);\n }\n }\n }\n\n // Finally, validate that required properties are present for API compatibility\n if (!this.validatePayload(payload)) {\n return null;\n }\n\n return payload;\n },\n\n /**\n * Wraps the request function for easier testing\n * Make an http request and invoke a callback\n * @private\n * @param {Object} opts options describing the http request to be made\n * @param {Function} callback the callback to invoke when the http request is completed\n */\n request: function (opts, callback) {\n var xhttp = new XMLHttpRequest();\n xhttp.onreadystatechange = function() {\n if (this.readyState == 4 ) {\n if (this.status == 204){\n //success\n return callback(null);\n }else {\n return callback(this.statusText);\n }\n }\n };\n\n xhttp.open(opts.method, opts.host + '/' + opts.path, true);\n for (var header in opts.headers){\n var headerValue = opts.headers[header];\n xhttp.setRequestHeader(header, headerValue)\n }\n xhttp.send(opts.body);\n },\n\n /**\n * Handle an error that occurred while making a request\n * @param {Object} err an error instance to log\n * @private\n */\n handleError: function (err, callback) {\n if (callback) return callback(err);\n },\n\n /**\n * Generate a session ID to be returned with all of the searches made by this geocoder instance\n * ID is random and cannot be tracked across sessions\n * @private\n */\n generateSessionID: function () {\n return nanoid();\n },\n\n /**\n * Get the a unique session ID for the current plugin session and increment the session counter.\n *\n * @returns {String} The session ID\n */\n getSessionId: function(){\n return this.pluginSessionID + '.' + this.sessionIncrementer;\n },\n\n /**\n * Get a user agent string to send with the request to the events service\n * @private\n */\n getUserAgent: function () {\n return 'mapbox-gl-geocoder.' + this.version + \".\" + navigator.userAgent;\n },\n\n /**\n * Get the 0-based numeric index of the item that the user selected out of the list of options\n * @private\n * @param {Object} selected the geojson feature selected by the user\n * @param {Object} geocoder a Mapbox-GL-Geocoder instance\n * @returns {Number} the index of the selected result\n */\n getSelectedIndex: function(selected, geocoder){\n if (!geocoder._typeahead) return;\n var results = geocoder._typeahead.data;\n var selectedID = selected.id;\n var resultIDs = results.map(function (feature) {\n return feature.id;\n });\n var selectedIdx = resultIDs.indexOf(selectedID);\n return selectedIdx;\n },\n\n getSuggestionIds: function (results) {\n return results.map(function (feature) {\n if (feature.properties) {\n return feature.properties.mapbox_id || '';\n }\n return feature.id || '';\n });\n },\n\n getSuggestionNames: function (results) {\n return results.map(function (feature) {\n return feature.place_name || '';\n });\n },\n \n getSuggestionTypes: function (results) {\n return results.map(function (feature) {\n if (feature.place_type && Array.isArray(feature.place_type)) {\n return feature.place_type[0] || '';\n }\n return '';\n });\n },\n \n getSuggestionSources: function (results) {\n return results.map(function (feature) {\n return feature._source || '';\n });\n },\n\n /**\n * Get the correct schema version for the event\n * @private\n * @param {String} event Name of the event\n * @returns \n */\n getEventSchemaVersion: function(event) {\n if (['search.keystroke', 'search.select'].includes(event)) {\n return '2.2';\n } else {\n return '2.0';\n }\n },\n\n /**\n * Checks if a payload has all the required properties for the event type\n * @private\n * @param {Object} payload \n * @returns \n */\n validatePayload: function(payload) {\n if (!payload || !payload.event) return false;\n\n var searchStartRequiredProps = ['event', 'created', 'sessionIdentifier', 'queryString'];\n var searchKeystrokeRequiredProps = ['event', 'created', 'sessionIdentifier', 'queryString', 'lastAction'];\n var searchSelectRequiredProps = ['event', 'created', 'sessionIdentifier', 'queryString', 'resultIndex', 'path', 'suggestionIds'];\n\n var event = payload.event;\n if (event === 'search.start') {\n return this.objectHasRequiredProps(payload, searchStartRequiredProps);\n } else if (event === 'search.keystroke') {\n return this.objectHasRequiredProps(payload, searchKeystrokeRequiredProps);\n } else if (event === 'search.select') {\n return this.objectHasRequiredProps(payload, searchSelectRequiredProps);\n }\n\n return true;\n },\n\n /**\n * Checks of an object has all the required properties\n * @private\n * @param {Object} obj \n * @param {Array} requiredProps \n * @returns \n */\n objectHasRequiredProps: function(obj, requiredProps) {\n return requiredProps.every(function(prop) {\n if (prop === 'queryString') {\n return typeof obj[prop] === 'string' && obj[prop].length > 0;\n }\n return obj[prop] !== undefined;\n });\n },\n\n /**\n * Check whether events should be logged\n * Clients using a localGeocoder or an origin other than mapbox should not have events logged\n * @private\n */\n shouldEnableLogging: function(options){\n if (options.enableEventLogging === false) return false;\n if (options.origin && options.origin !== 'https://api.mapbox.com') return false;\n return true;\n },\n\n /**\n * Flush out the event queue by sending events to the events service\n * @private\n */\n flush: function(){\n if (this.eventQueue.length > 0){\n this.send(this.eventQueue);\n this.eventQueue = new Array();\n }\n // //reset the timer\n if (this.timer) clearTimeout(this.timer);\n if (this.flushInterval) this.timer = setTimeout(this.flush.bind(this), this.flushInterval)\n },\n\n /**\n * Push event into the pending queue\n * @param {Object} evt the event to send to the events service\n * @param {Boolean} forceFlush indicates that the event queue should be flushed after adding this event regardless of size of the queue\n * @private\n */\n push: function(evt, forceFlush){\n this.eventQueue.push(evt);\n if (this.eventQueue.length >= this.maxQueueSize || forceFlush){\n this.flush();\n }\n },\n\n /**\n * Flush any remaining events from the queue before it is removed\n * @private\n */\n remove: function(){\n this.flush();\n }\n}\n\n\n\nmodule.exports = MapboxEventManager;\n","'use strict';\n\n/**\n * Localized values for the placeholder string\n * \n * @private\n */\nvar placeholder = {\n // list drawn from https://docs.mapbox.com/api/search/#language-coverage\n 'de': 'Suche', // german\n 'it': 'Ricerca', //italian\n 'en': 'Search', // english\n 'nl': 'Zoeken', //dutch\n 'fr': 'Chercher', //french\n 'ca': 'Cerca', //catalan\n 'he': 'לחפש', //hebrew\n 'ja': 'サーチ', //japanese\n 'lv': 'Meklēt', //latvian\n 'pt': 'Procurar', //portuguese \n 'sr': 'Претрага', //serbian\n 'zh': '搜索', //chinese-simplified\n 'cs': 'Vyhledávání', //czech\n 'hu': 'Keresés', //hungarian\n 'ka': 'ძიება', // georgian\n 'nb': 'Søke', //norwegian\n 'sk': 'Vyhľadávanie', //slovak\n 'th': 'ค้นหา', //thai\n 'fi': 'Hae',//finnish\n 'is': 'Leita',//icelandic\n 'ko': '수색',//korean\n 'pl': 'Szukaj', //polish\n 'sl': 'Iskanje', //slovenian\n 'fa': 'جستجو', //persian(aka farsi)\n 'ru': 'Поиск'//russian\n}\n\nmodule.exports = {placeholder: placeholder};\n","!function(root, name, make) {\r\n if (typeof module != 'undefined' && module.exports) module.exports = make()\r\n else root[name] = make()\r\n}(this, 'subtag', function() {\r\n\r\n var empty = ''\r\n var pattern = /^([a-zA-Z]{2,3})(?:[_-]+([a-zA-Z]{3})(?=$|[_-]+))?(?:[_-]+([a-zA-Z]{4})(?=$|[_-]+))?(?:[_-]+([a-zA-Z]{2}|[0-9]{3})(?=$|[_-]+))?/\r\n\r\n function match(tag) {\r\n return tag.match(pattern) || []\r\n }\r\n\r\n function split(tag) {\r\n return match(tag).filter(function(v, i) { return v && i })\r\n }\r\n\r\n function api(tag) {\r\n tag = match(tag)\r\n return {\r\n language: tag[1] || empty,\r\n extlang: tag[2] || empty,\r\n script: tag[3] || empty,\r\n region: tag[4] || empty\r\n }\r\n }\r\n\r\n function expose(target, key, value) {\r\n Object.defineProperty(target, key, {\r\n value: value,\r\n enumerable: true\r\n })\r\n }\r\n\r\n function part(position, pattern, type) {\r\n function method(tag) {\r\n return match(tag)[position] || empty\r\n }\r\n expose(method, 'pattern', pattern)\r\n expose(api, type, method)\r\n }\r\n\r\n part(1, /^[a-zA-Z]{2,3}$/, 'language')\r\n part(2, /^[a-zA-Z]{3}$/, 'extlang')\r\n part(3, /^[a-zA-Z]{4}$/, 'script')\r\n part(4, /^[a-zA-Z]{2}$|^[0-9]{3}$/, 'region')\r\n\r\n expose(api, 'split', split)\r\n\r\n return api\r\n});\r\n","function Geolocation() {}\n\nGeolocation.prototype = {\n\n isSupport: function() {\n return Boolean(window.navigator.geolocation);\n },\n\n getCurrentPosition: function() {\n const positionOptions = {\n enableHighAccuracy: true\n };\n\n return new Promise(function(resolve, reject) {\n window.navigator.geolocation.getCurrentPosition(resolve, reject, positionOptions);\n });\n },\n}\n\nmodule.exports = Geolocation;\n","/**\n * This function transforms the feature from reverse geocoding to plain text with specified accuracy\n * @param {object} feature \n * @param {string} accuracy \n * @returns \n */\nfunction transformFeatureToGeolocationText(feature, accuracy) {\n const addrInfo = getAddressInfo(feature);\n\n const addressAccuracy = ['address', 'street', 'place', 'country'];\n var currentAccuracy;\n\n if (typeof accuracy === 'function') {\n return accuracy(addrInfo)\n }\n\n const accuracyIndex = addressAccuracy.indexOf(accuracy);\n\n if (accuracyIndex === -1) {\n currentAccuracy = addressAccuracy;\n } else {\n currentAccuracy = addressAccuracy.slice(accuracyIndex);\n }\n\n return currentAccuracy.reduce(function(acc, name) {\n if (!addrInfo[name]) {\n return acc;\n }\n\n if (acc !== '') {\n acc = acc + ', ';\n }\n\n return acc + addrInfo[name];\n }, '');\n}\n/**\n * This function transforms the feature from reverse geocoding to AddressInfo object\n * @param {object} feature \n * @returns {object}\n */\nfunction getAddressInfo(feature) {\n const houseNumber = feature.address || '';\n const street = feature.text || '';\n const placeName = feature.place_name || '';\n const address = placeName.split(',')[0];\n\n const addrInfo = {\n address: address,\n houseNumber: houseNumber,\n street: street,\n placeName: placeName,\n }\n\n feature.context.forEach(function (context) {\n const layer = context.id.split('.')[0];\n addrInfo[layer] = context.text;\n });\n\n return addrInfo;\n}\n\nconst REVERSE_GEOCODE_COORD_RGX = /^[ ]*(-?\\d{1,3}(\\.\\d{0,256})?)[, ]+(-?\\d{1,3}(\\.\\d{0,256})?)[ ]*$/;\n\nmodule.exports = {\n transformFeatureToGeolocationText: transformFeatureToGeolocationText,\n getAddressInfo: getAddressInfo,\n REVERSE_GEOCODE_COORD_RGX: REVERSE_GEOCODE_COORD_RGX,\n}","'use strict';\n\nvar Typeahead = require('suggestions');\nvar debounce = require('lodash.debounce');\nvar extend = require('xtend');\nvar EventEmitter = require('events').EventEmitter;\nvar exceptions = require('./exceptions');\nvar MapboxClient = require('@mapbox/mapbox-sdk');\nvar mbxGeocoder = require('@mapbox/mapbox-sdk/services/geocoding');\nvar MapboxEventManager = require('./events');\nvar localization = require('./localization');\nvar subtag = require('subtag');\nvar Geolocation = require('./geolocation');\nvar utils = require('./utils');\n\n\nconst GEOCODE_REQUEST_TYPE = {\n FORWARD: 0,\n LOCAL: 1,\n REVERSE: 2,\n};\n\n/**\n * Don't include this as part of the options object when creating a new MapboxGeocoder instance.\n */\nfunction getFooterNode() {\n var div = document.createElement('div');\n div.className = 'mapboxgl-ctrl-geocoder--powered-by';\n div.innerHTML = 'Powered by Mapbox';\n\n return div;\n}\n\n/**\n * A geocoder component using the [Mapbox Geocoding API](https://docs.mapbox.com/api/search/#geocoding)\n * @class MapboxGeocoder\n * @param {Object} options\n * @param {String} options.accessToken Required.\n * @param {String} [options.origin=https://api.mapbox.com] Use to set a custom API origin.\n * @param {Object} [options.mapboxgl] A [mapbox-gl](https://github.com/mapbox/mapbox-gl-js) instance to use when creating [Markers](https://docs.mapbox.com/mapbox-gl-js/api/#marker). Required if `options.marker` is `true`.\n * @param {Number} [options.zoom=16] On geocoded result what zoom level should the map animate to when a `bbox` isn't found in the response. If a `bbox` is found the map will fit to the `bbox`.\n * @param {Boolean|Object} [options.flyTo=true] If `false`, animating the map to a selected result is disabled. If `true`, animating the map will use the default animation parameters. If an object, it will be passed as `options` to the map [`flyTo`](https://docs.mapbox.com/mapbox-gl-js/api/#map#flyto) or [`fitBounds`](https://docs.mapbox.com/mapbox-gl-js/api/#map#fitbounds) method providing control over the animation of the transition.\n * @param {String} [options.placeholder=Search] Override the default placeholder attribute value.\n * @param {Object|'ip'} [options.proximity] a geographical point given as an object with `latitude` and `longitude` properties, or the string 'ip' to use a user's IP address location. Search results closer to this point will be given higher priority.\n * @param {Boolean} [options.trackProximity=true] If `true`, the geocoder proximity will dynamically update based on the current map view or user's IP location, depending on zoom level.\n * @param {Boolean} [options.collapsed=false] If `true`, the geocoder control will collapse until hovered or in focus.\n * @param {Boolean} [options.clearAndBlurOnEsc=false] If `true`, the geocoder control will clear it's contents and blur when user presses the escape key.\n * @param {Boolean} [options.clearOnBlur=false] If `true`, the geocoder control will clear its value when the input blurs.\n * @param {Array} [options.bbox] a bounding box argument: this is\n * a bounding box given as an array in the format `[minX, minY, maxX, maxY]`.\n * Search results will be limited to the bounding box.\n * @param {string} [options.countries] a comma separated list of country codes to\n * limit results to specified country or countries.\n * @param {string} [options.types] a comma seperated list of types that filter\n * results to match those specified. See https://docs.mapbox.com/api/search/#data-types\n * for available types.\n * If reverseGeocode is enabled and no type is specified, the type defaults to POIs. Otherwise, if you configure more than one type, the first type will be used.\n * @param {Number} [options.minLength=2] Minimum number of characters to enter before results are shown.\n * @param {Number} [options.limit=5] Maximum number of results to show.\n * @param {string} [options.language] Specify the language to use for response text and query result weighting. Options are IETF language tags comprised of a mandatory ISO 639-1 language code and optionally one or more IETF subtags for country or script. More than one value can also be specified, separated by commas. Defaults to the browser's language settings.\n * @param {Function} [options.filter] A function which accepts a Feature in the [extended GeoJSON](https://docs.mapbox.com/api/search/geocoding-v5/#geocoding-response-object) format to filter out results from the Geocoding API response before they are included in the suggestions list. Return `true` to keep the item, `false` otherwise.\n * @param {Function} [options.localGeocoder] A function accepting the query string which performs local geocoding to supplement results from the Mapbox Geocoding API. Expected to return an Array of GeoJSON Features in the [extended GeoJSON](https://docs.mapbox.com/api/search/geocoding-v5/#geocoding-response-object) format.\n * @param {Function} [options.externalGeocoder] A function accepting the query string and current features list which performs geocoding to supplement results from the Mapbox Geocoding API. Expected to return a Promise which resolves to an Array of GeoJSON Features in the [extended GeoJSON](https://docs.mapbox.com/api/search/geocoding-v5/#geocoding-response-object) format.\n * @param {distance|score} [options.reverseMode=distance] - Set the factors that are used to sort nearby results.\n * @param {boolean} [options.reverseGeocode=false] If `true`, enable reverse geocoding mode. In reverse geocoding, search input is expected to be coordinates in the form `lat, lon`, with suggestions being the reverse geocodes.\n * @param {boolean} [options.flipCoordinates=false] If `true`, search input coordinates for reverse geocoding is expected to be in the form `lon, lat` instead of the default `lat, lon`.\n * @param {Boolean} [options.enableEventLogging=true] Allow Mapbox to collect anonymous usage statistics from the plugin.\n * @param {Boolean|Object} [options.marker=true] If `true`, a [Marker](https://docs.mapbox.com/mapbox-gl-js/api/#marker) will be added to the map at the location of the user-selected result using a default set of Marker options. If the value is an object, the marker will be constructed using these options. If `false`, no marker will be added to the map. Requires that `options.mapboxgl` also be set.\n * @param {Function} [options.render] A function that specifies how the results should be rendered in the dropdown menu. This function should accepts a single [extended GeoJSON](https://docs.mapbox.com/api/search/geocoding-v5/#geocoding-response-object) object as input and return a string. Any HTML in the returned string will be rendered.\n * @param {Function} [options.getItemValue] A function that specifies how the selected result should be rendered in the search bar. This function should accept a single [extended GeoJSON](https://docs.mapbox.com/api/search/geocoding-v5/#geocoding-response-object) object as input and return a string. HTML tags in the output string will not be rendered. Defaults to `(item) => item.place_name`.\n * @param {String} [options.mode=mapbox.places] A string specifying the geocoding [endpoint](https://docs.mapbox.com/api/search/#endpoints) to query. Options are `mapbox.places` and `mapbox.places-permanent`. The `mapbox.places-permanent` mode requires an enterprise license for permanent geocodes.\n * @param {Boolean} [options.localGeocoderOnly=false] If `true`, indicates that the `localGeocoder` results should be the only ones returned to the user. If `false`, indicates that the `localGeocoder` results should be combined with those from the Mapbox API with the `localGeocoder` results ranked higher.\n * @param {Boolean} [options.autocomplete=true] Specify whether to return autocomplete results or not. When autocomplete is enabled, results will be included that start with the requested string, rather than just responses that match it exactly.\n * @param {Boolean} [options.fuzzyMatch=true] Specify whether the Geocoding API should attempt approximate, as well as exact, matching when performing searches, or whether it should opt out of this behavior and only attempt exact matching.\n * @param {Boolean} [options.routing=false] Specify whether to request additional metadata about the recommended navigation destination corresponding to the feature or not. Only applicable for address features.\n * @param {String} [options.worldview=\"us\"] Filter results to geographic features whose characteristics are defined differently by audiences belonging to various regional, cultural, or political groups.\n * @param {Boolean} [options.enableGeolocation=false] If `true` enable user geolocation feature.\n * @param {('address'|'street'|'place'|'country')} [options.addressAccuracy=\"street\"] The accuracy for the geolocation feature with which we define the address line to fill. The browser API returns the user's position with accuracy, and sometimes we can get the neighbor's address. To prevent receiving an incorrect address, you can reduce the accuracy of the definition.\n * @example\n * var geocoder = new MapboxGeocoder({ accessToken: mapboxgl.accessToken });\n * map.addControl(geocoder);\n * @return {MapboxGeocoder} `this`\n *\n */\n\nfunction MapboxGeocoder(options) {\n this._eventEmitter = new EventEmitter();\n this.options = extend({}, this.options, options);\n this.inputString = '';\n this.fresh = true;\n this.lastSelected = null;\n this.geolocation = new Geolocation();\n}\n\nMapboxGeocoder.prototype = {\n options: {\n zoom: 16,\n flyTo: true,\n trackProximity: true,\n minLength: 2,\n reverseGeocode: false,\n flipCoordinates: false,\n limit: 5,\n origin: 'https://api.mapbox.com',\n enableEventLogging: true,\n marker: true,\n mapboxgl: null,\n collapsed: false,\n clearAndBlurOnEsc: false,\n clearOnBlur: false,\n enableGeolocation: false,\n addressAccuracy: 'street',\n getItemValue: function(item) {\n return item.place_name\n },\n render: function(item) {\n var placeName = item.place_name.split(',');\n return '
' + placeName[0]+ '
' + placeName.splice(1, placeName.length).join(',') + '
';\n }\n },\n \n _headers: {},\n\n /**\n * Add the geocoder to a container. The container can be either a `mapboxgl.Map`, an `HTMLElement` or a CSS selector string.\n *\n * If the container is a [`mapboxgl.Map`](https://docs.mapbox.com/mapbox-gl-js/api/map/), this function will behave identically to [`Map.addControl(geocoder)`](https://docs.mapbox.com/mapbox-gl-js/api/map/#map#addcontrol).\n * If the container is an instance of [`HTMLElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement), then the geocoder will be appended as a child of that [`HTMLElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement).\n * If the container is a [CSS selector string](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors), the geocoder will be appended to the element returned from the query.\n *\n * This function will throw an error if the container is none of the above.\n * It will also throw an error if the referenced HTML element cannot be found in the `document.body`.\n *\n * For example, if the HTML body contains the element `
`, the following script will append the geocoder to `#geocoder-container`:\n *\n * ```javascript\n * var geocoder = new MapboxGeocoder({ accessToken: mapboxgl.accessToken });\n * geocoder.addTo('#geocoder-container');\n * ```\n * @param {String|HTMLElement|mapboxgl.Map} container A reference to the container to which to add the geocoder\n */\n addTo: function(container){\n\n function addToExistingContainer (geocoder, container) {\n if (!document.body.contains(container)) {\n throw new Error(\"Element provided to #addTo() exists, but is not in the DOM\")\n }\n const el = geocoder.onAdd(); //returns the input elements, which are then added to the requested html container\n container.appendChild(el);\n }\n\n // if the container is a map, add the control like normal\n if (container._controlContainer){\n // it's a mapbox-gl map, add like normal\n container.addControl(this);\n }\n // if the container is an HTMLElement, then set the parent to be that element\n else if (container instanceof HTMLElement) {\n addToExistingContainer(this, container);\n }\n // if the container is a string, treat it as a CSS query\n else if (typeof container == 'string'){\n const parent = document.querySelectorAll(container);\n if (parent.length === 0){\n throw new Error(\"Element \", container, \"not found.\")\n }\n\n if (parent.length > 1){\n throw new Error(\"Geocoder can only be added to a single html element\")\n }\n\n addToExistingContainer(this, parent[0]);\n }else{\n throw new Error(\"Error: addTo must be a mapbox-gl-js map, an html element, or a CSS selector query for a single html element\")\n }\n },\n\n onAdd: function(map) {\n if (map && typeof map != 'string'){\n this._map = map;\n }\n\n this.setLanguage();\n\n if (!this.options.localGeocoderOnly){\n this.geocoderService = mbxGeocoder(\n MapboxClient({\n accessToken: this.options.accessToken,\n origin: this.options.origin\n })\n );\n }\n\n if (this.options.localGeocoderOnly && !this.options.localGeocoder){\n throw new Error(\"A localGeocoder function must be specified to use localGeocoderOnly mode\")\n }\n\n this.eventManager = new MapboxEventManager(this.options);\n\n this._onChange = this._onChange.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onPaste = this._onPaste.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this._showButton = this._showButton.bind(this);\n this._hideButton = this._hideButton.bind(this);\n this._onQueryResult = this._onQueryResult.bind(this);\n this.clear = this.clear.bind(this);\n this._updateProximity = this._updateProximity.bind(this);\n this._collapse = this._collapse.bind(this);\n this._unCollapse = this._unCollapse.bind(this);\n this._clear = this._clear.bind(this);\n this._clearOnBlur = this._clearOnBlur.bind(this);\n this._geolocateUser = this._geolocateUser.bind(this);\n\n var el = (this.container = document.createElement('div'));\n el.className = 'mapboxgl-ctrl-geocoder mapboxgl-ctrl';\n\n var searchIcon = this.createIcon('search', '')\n\n this._inputEl = document.createElement('input');\n this._inputEl.type = 'text';\n this._inputEl.className = 'mapboxgl-ctrl-geocoder--input';\n\n this.setPlaceholder();\n\n if (this.options.collapsed) {\n this._collapse();\n this.container.addEventListener('mouseenter', this._unCollapse);\n this.container.addEventListener('mouseleave', this._collapse);\n this._inputEl.addEventListener('focus', this._unCollapse);\n }\n\n if (this.options.collapsed || this.options.clearOnBlur) {\n this._inputEl.addEventListener('blur', this._onBlur);\n }\n\n this._inputEl.addEventListener('keydown', debounce(this._onKeyDown, 200));\n this._inputEl.addEventListener('paste', this._onPaste);\n this._inputEl.addEventListener('change', this._onChange);\n this.container.addEventListener('mouseenter', this._showButton);\n this.container.addEventListener('mouseleave', this._hideButton);\n this._inputEl.addEventListener('keyup', function(e){\n this.eventManager.keyevent(e, this);\n }.bind(this));\n\n var actions = document.createElement('div');\n actions.classList.add('mapboxgl-ctrl-geocoder--pin-right');\n\n this._clearEl = document.createElement('button');\n this._clearEl.setAttribute('aria-label', 'Clear');\n this._clearEl.addEventListener('click', this.clear);\n this._clearEl.className = 'mapboxgl-ctrl-geocoder--button';\n\n var buttonIcon = this.createIcon('close', '')\n this._clearEl.appendChild(buttonIcon);\n\n this._loadingEl = this.createIcon('loading', '');\n\n actions.appendChild(this._clearEl);\n actions.appendChild(this._loadingEl);\n\n el.appendChild(searchIcon);\n el.appendChild(this._inputEl);\n el.appendChild(actions);\n\n if (this.options.enableGeolocation && this.geolocation.isSupport()) {\n this._geolocateEl = document.createElement('button');\n this._geolocateEl.setAttribute('aria-label', 'Geolocate');\n this._geolocateEl.addEventListener('click', this._geolocateUser);\n this._geolocateEl.className = 'mapboxgl-ctrl-geocoder--button';\n\n var geolocateIcon = this.createIcon('geolocate', '');\n this._geolocateEl.appendChild(geolocateIcon);\n\n actions.appendChild(this._geolocateEl);\n this._showGeolocateButton();\n }\n\n var typeahead = this._typeahead = new Typeahead(this._inputEl, [], {\n filter: false,\n minLength: this.options.minLength,\n limit: this.options.limit\n });\n\n this.setRenderFunction(this.options.render);\n typeahead.getItemValue = this.options.getItemValue;\n\n // Add support for footer.\n var parentDraw = typeahead.list.draw;\n var footerNode = this._footerNode = getFooterNode();\n typeahead.list.draw = function() {\n parentDraw.call(this);\n\n footerNode.addEventListener('mousedown', function() {\n this.selectingListItem = true;\n }.bind(this));\n \n footerNode.addEventListener('mouseup', function() {\n this.selectingListItem = false;\n }.bind(this));\n\n this.element.appendChild(footerNode);\n };\n\n this.mapMarker = null;\n this._handleMarker = this._handleMarker.bind(this);\n if (this._map){\n if (this.options.trackProximity ) {\n this._updateProximity();\n this._map.on('moveend', this._updateProximity);\n }\n this._mapboxgl = this.options.mapboxgl;\n if (!this._mapboxgl && this.options.marker) {\n // eslint-disable-next-line no-console\n console.error(\"No mapboxgl detected in options. Map markers are disabled. Please set options.mapboxgl.\");\n this.options.marker = false;\n }\n }\n return el;\n },\n\n _geolocateUser: function () {\n this._hideGeolocateButton();\n this._showLoadingIcon();\n\n this.geolocation.getCurrentPosition().then(function(geolocationPosition) {\n this._hideLoadingIcon();\n\n const geojson = {\n geometry: {\n type: 'Point',\n coordinates: [geolocationPosition.coords.longitude, geolocationPosition.coords.latitude]\n }\n };\n\n this._handleMarker(geojson);\n this._fly(geojson);\n\n this._typeahead.clear();\n this._typeahead.selected = true;\n this.lastSelected = JSON.stringify(geojson);\n this._showClearButton();\n this.fresh = false;\n\n const config = {\n limit: 1,\n language: [this.options.language],\n query: geojson.geometry.coordinates,\n types: [\"address\"]\n };\n\n if (this.options.localGeocoderOnly) {\n const text = geojson.geometry.coordinates[0] + ',' + geojson.geometry.coordinates[1]\n this._setInputValue(text);\n\n this._eventEmitter.emit('result', { result: geojson });\n } else {\n this.geocoderService.reverseGeocode(config).send().then(function (resp) {\n const feature = resp.body.features[0];\n \n if (feature) {\n const locationText = utils.transformFeatureToGeolocationText(feature, this.options.addressAccuracy);\n this._setInputValue(locationText);\n \n feature.user_coordinates = geojson.geometry.coordinates;\n this._eventEmitter.emit('result', { result: feature });\n } else {\n this._eventEmitter.emit('result', { result: { user_coordinates: geojson.geometry.coordinates } });\n }\n }.bind(this));\n }\n }.bind(this)).catch(function(error) {\n if (error.code === 1) {\n this._renderUserDeniedGeolocationError();\n } else {\n this._renderLocationError();\n }\n\n this._hideLoadingIcon();\n this._showGeolocateButton();\n this._hideAttribution();\n }.bind(this));\n },\n\n createIcon: function(name, path) {\n var icon = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n icon.setAttribute('class', 'mapboxgl-ctrl-geocoder--icon mapboxgl-ctrl-geocoder--icon-' + name);\n icon.setAttribute('viewBox', '0 0 18 18');\n icon.setAttribute('xml:space','preserve');\n icon.setAttribute('width', 18);\n icon.setAttribute('height', 18);\n icon.innerHTML = path;\n return icon;\n },\n\n onRemove: function() {\n this.container.parentNode.removeChild(this.container);\n\n if (this.options.trackProximity && this._map) {\n this._map.off('moveend', this._updateProximity);\n }\n\n this._removeMarker();\n\n this._map = null;\n\n return this;\n },\n\n _setInputValue: function (value) {\n this._inputEl.value = value;\n \n setTimeout(function () {\n this._inputEl.focus();\n this._inputEl.scrollLeft = 0;\n this._inputEl.setSelectionRange(0, 0);\n }.bind(this), 1);\n },\n\n _onPaste: function(e){\n var value = (e.clipboardData || window.clipboardData).getData('text');\n if (value.length >= this.options.minLength) {\n this._geocode(value);\n }\n },\n\n _onKeyDown: function(e) {\n var ESC_KEY_CODE = 27,\n TAB_KEY_CODE = 9;\n\n if (e.keyCode === ESC_KEY_CODE && this.options.clearAndBlurOnEsc) {\n this._clear(e);\n return this._inputEl.blur();\n }\n\n // if target has shadowRoot, then get the actual active element inside the shadowRoot\n var target = e.target && e.target.shadowRoot\n ? e.target.shadowRoot.activeElement\n : e.target;\n var value = target ? target.value : '';\n\n if (!value) {\n this.fresh = true;\n // the user has removed all the text\n if (e.keyCode !== TAB_KEY_CODE) this.clear(e);\n this._showGeolocateButton();\n return this._hideClearButton();\n }\n\n this._hideGeolocateButton();\n\n // TAB, ESC, LEFT, RIGHT, ENTER, UP, DOWN\n if ((e.metaKey || [TAB_KEY_CODE, ESC_KEY_CODE, 37, 39, 13, 38, 40].indexOf(e.keyCode) !== -1))\n return;\n\n if (target.value.length >= this.options.minLength) {\n this._geocode(target.value);\n }\n },\n\n _showButton: function() {\n if (this._typeahead.selected) this._showClearButton();\n },\n\n _hideButton: function() {\n if (this._typeahead.selected) this._hideClearButton();\n },\n\n _showClearButton: function() {\n this._clearEl.style.display = 'block';\n },\n\n _hideClearButton: function() {\n this._clearEl.style.display = 'none'\n },\n\n _showGeolocateButton: function() {\n if (this._geolocateEl && this.geolocation.isSupport()) {\n this._geolocateEl.style.display = 'block';\n }\n },\n\n _hideGeolocateButton: function() {\n if (this._geolocateEl) {\n this._geolocateEl.style.display = 'none';\n }\n },\n\n _showLoadingIcon: function() {\n this._loadingEl.style.display = 'block';\n },\n \n _hideLoadingIcon: function() {\n this._loadingEl.style.display = 'none';\n },\n\n _showAttribution: function() {\n this._footerNode.style.display = 'block'\n },\n \n _hideAttribution: function() {\n this._footerNode.style.display = 'none'\n },\n\n _onBlur: function(e) {\n if (this.options.clearOnBlur) {\n this._clearOnBlur(e);\n }\n if (this.options.collapsed) {\n this._collapse();\n }\n },\n _onChange: function() {\n var selected = this._typeahead.selected;\n if (selected && JSON.stringify(selected) !== this.lastSelected) {\n this._hideClearButton();\n if (this.options.flyTo) {\n this._fly(selected);\n }\n if (this.options.marker && this._mapboxgl){\n this._handleMarker(selected);\n }\n\n // After selecting a feature, re-focus the textarea and set\n // cursor at start.\n this._inputEl.focus();\n this._inputEl.scrollLeft = 0;\n this._inputEl.setSelectionRange(0, 0);\n this.lastSelected = JSON.stringify(selected);\n this._eventEmitter.emit('result', { result: selected });\n this.eventManager.select(selected, this);\n }\n },\n\n _fly: function(selected) {\n var flyOptions;\n if (selected.properties && exceptions[selected.properties.short_code]) {\n // Certain geocoder search results return (and therefore zoom to fit)\n // an unexpectedly large bounding box: for example, both Russia and the\n // USA span both sides of -180/180, or France includes the island of\n // Reunion in the Indian Ocean. An incomplete list of these exceptions\n // at ./exceptions.json provides \"reasonable\" bounding boxes as a\n // short-term solution; this may be amended as necessary.\n flyOptions = extend({}, this.options.flyTo);\n if (this._map){\n this._map.fitBounds(exceptions[selected.properties.short_code].bbox, flyOptions);\n }\n } else if (selected.bbox) {\n var bbox = selected.bbox;\n flyOptions = extend({}, this.options.flyTo);\n if (this._map){\n this._map.fitBounds([[bbox[0], bbox[1]], [bbox[2], bbox[3]]], flyOptions);\n }\n } else {\n var defaultFlyOptions = {\n zoom: this.options.zoom\n }\n flyOptions = extend({}, defaultFlyOptions, this.options.flyTo);\n // ensure that center is not overriden by custom options\n if (selected.center) {\n flyOptions.center = selected.center;\n } else if (selected.geometry && selected.geometry.type && selected.geometry.type === 'Point' && selected.geometry.coordinates) {\n flyOptions.center = selected.geometry.coordinates;\n }\n\n if (this._map){\n this._map.flyTo(flyOptions);\n }\n }\n },\n\n _requestType: function(options, search) {\n var type;\n if (options.localGeocoderOnly) {\n type = GEOCODE_REQUEST_TYPE.LOCAL;\n } else if (options.reverseGeocode && utils.REVERSE_GEOCODE_COORD_RGX.test(search)) {\n type = GEOCODE_REQUEST_TYPE.REVERSE;\n } else {\n type = GEOCODE_REQUEST_TYPE.FORWARD;\n }\n return type;\n },\n\n _setupConfig: function(requestType, search) {\n // Possible config properties to pass to client\n const keys = [\n 'bbox',\n 'limit',\n 'proximity',\n 'countries',\n 'types',\n 'language',\n 'reverseMode',\n 'mode',\n 'autocomplete',\n 'fuzzyMatch',\n 'routing',\n 'worldview'\n ];\n const spacesOrCommaRgx = /[\\s,]+/;\n\n var self = this;\n var config = keys.reduce(function(config, key) {\n // don't include undefined/null params, but allow boolean, among other, values\n if (self.options[key] === undefined || self.options[key] === null) {\n return config;\n }\n\n // countries, types, and language need to be passed in as arrays to client\n // https://github.com/mapbox/mapbox-sdk-js/blob/master/services/geocoding.js#L38-L47\n ['countries', 'types', 'language'].indexOf(key) > -1\n ? (config[key] = self.options[key].split(spacesOrCommaRgx))\n : (config[key] = self.options[key]);\n\n const isCoordKey =\n typeof self.options[key].longitude === 'number' &&\n typeof self.options[key].latitude === 'number';\n\n if (key === 'proximity' && isCoordKey) {\n const lng = self.options[key].longitude;\n const lat = self.options[key].latitude;\n\n config[key] = [lng, lat];\n }\n\n return config;\n }, {});\n\n switch (requestType) {\n case GEOCODE_REQUEST_TYPE.REVERSE: {\n var coords = search.split(spacesOrCommaRgx).map(function(c) {\n return parseFloat(c, 10);\n })\n if (!self.options.flipCoordinates) {\n coords.reverse();\n }\n\n // client only accepts one type for reverseGeocode, so\n // use first config type if one, if not default to poi\n config.types ? [config.types[0]] : [\"poi\"];\n config = extend(config, { query: coords, limit: 1 });\n\n // Remove config options not supported by the reverseGeocoder\n ['proximity', 'autocomplete', 'fuzzyMatch', 'bbox'].forEach(function(key) {\n if (key in config) {\n delete config[key]\n }\n });\n } break;\n case GEOCODE_REQUEST_TYPE.FORWARD: {\n // Ensure that any reverse geocoding looking request is cleaned up\n // to be processed as only a forward geocoding request by the server.\n const trimmedSearch = search.trim();\n const reverseGeocodeCoordRgx = /^(-?\\d{1,3}(\\.\\d{0,256})?)[, ]+(-?\\d{1,3}(\\.\\d{0,256})?)?$/;\n if (reverseGeocodeCoordRgx.test(trimmedSearch)) {\n search = search.replace(/,/g, ' ');\n }\n config = extend(config, { query: search });\n } break;\n }\n\n config.session_token = this.eventManager.getSessionId();\n\n return config;\n },\n\n _geocode: function(searchInput) {\n this.inputString = searchInput;\n this._showLoadingIcon();\n this._eventEmitter.emit('loading', { query: searchInput });\n\n const requestType = this._requestType(this.options, searchInput);\n const config = this._setupConfig(requestType, searchInput);\n\n var request;\n switch (requestType) {\n case GEOCODE_REQUEST_TYPE.LOCAL:\n request = Promise.resolve();\n break;\n case GEOCODE_REQUEST_TYPE.FORWARD:\n request = this.geocoderService.forwardGeocode(config).send();\n break;\n case GEOCODE_REQUEST_TYPE.REVERSE:\n request = this.geocoderService.reverseGeocode(config).send();\n break;\n }\n\n var localGeocoderRes = this.options.localGeocoder ? this.options.localGeocoder(searchInput) || [] : [];\n var externalGeocoderRes = [];\n\n var geocoderError = null;\n request.catch(function(error) {\n geocoderError = error;\n }.bind(this))\n .then(\n function(response) {\n this._hideLoadingIcon();\n var res = {};\n\n if (!response){\n res = {\n type: 'FeatureCollection',\n features: []\n }\n } else if (response.statusCode == '200') {\n res = response.body;\n res.request = response.request;\n res.headers = response.headers;\n this._headers = response.headers;\n }\n\n res.config = config;\n\n if (this.fresh){\n this.eventManager.start(this);\n this.fresh = false;\n }\n\n // Tag Mapbox as the source for Geocoding API results, to differentiate from local or external geocoder federated results\n if (res.features && res.features.length) {\n res.features.map(function (feature) {\n feature._source = 'mapbox';\n })\n }\n\n // supplement Mapbox Geocoding API results with locally populated results\n res.features = res.features\n ? localGeocoderRes.concat(res.features)\n : localGeocoderRes;\n\n if (this.options.externalGeocoder) {\n\n externalGeocoderRes = this.options.externalGeocoder(searchInput, res.features) || Promise.resolve([]);\n // supplement Mapbox Geocoding API results with features returned by a promise\n return externalGeocoderRes.then(function(features) {\n res.features = res.features ? features.concat(res.features) : features;\n return res;\n }, function(){\n // on error, display the original result\n return res;\n });\n }\n return res;\n\n }.bind(this)).then(\n function(res) {\n if (geocoderError) {\n throw geocoderError;\n }\n\n // apply results filter if provided\n if (this.options.filter && res.features.length) {\n res.features = res.features.filter(this.options.filter);\n }\n\n if (res.features.length) {\n this._showClearButton();\n this._hideGeolocateButton();\n this._showAttribution();\n this._eventEmitter.emit('results', res);\n this._typeahead.update(res.features);\n } else {\n this._hideClearButton();\n this._hideAttribution();\n this._typeahead.selected = null;\n this._renderNoResults();\n this._eventEmitter.emit('results', res);\n }\n\n }.bind(this)\n ).catch(\n function(err) {\n this._hideLoadingIcon();\n this._hideAttribution();\n\n // in the event of an error in the Mapbox Geocoding API still display results from the localGeocoder\n if ((localGeocoderRes.length && this.options.localGeocoder) || (externalGeocoderRes.length && this.options.externalGeocoder) ) {\n this._showClearButton();\n this._hideGeolocateButton();\n this._typeahead.update(localGeocoderRes);\n } else {\n this._hideClearButton();\n this._typeahead.selected = null;\n this._renderError();\n }\n\n this._eventEmitter.emit('results', { features: localGeocoderRes });\n this._eventEmitter.emit('error', { error: err });\n }.bind(this)\n );\n\n return request;\n },\n\n /**\n * Shared logic for clearing input\n * @param {Event} [ev] the event that triggered the clear, if available\n * @private\n *\n */\n _clear: function(ev) {\n if (ev) ev.preventDefault();\n this._inputEl.value = '';\n this._typeahead.selected = null;\n this._typeahead.clear();\n this.eventManager.sessionIncrementer++;\n this._onChange();\n this._hideClearButton();\n this._showGeolocateButton();\n this._removeMarker();\n this.lastSelected = null;\n this._eventEmitter.emit('clear');\n this.fresh = true;\n },\n\n /**\n * Clear and then focus the input.\n * @param {Event} [ev] the event that triggered the clear, if available\n *\n */\n clear: function(ev) {\n this._clear(ev);\n this._inputEl.focus();\n },\n\n\n /**\n * Clear the input, without refocusing it. Used to implement clearOnBlur\n * constructor option.\n * @param {Event} [ev] the blur event\n * @private\n */\n _clearOnBlur: function(ev) {\n var ctx = this;\n\n /*\n * If relatedTarget is not found, assume user targeted the suggestions list.\n * In that case, do not clear on blur. There are other edge cases where\n * ev.relatedTarget could be null. Clicking on list always results in null\n * relatedtarget because of upstream behavior in `suggestions`.\n *\n * The ideal solution would be to check if ev.relatedTarget is a child of\n * the list. See issue #258 for details on why we can't do that yet.\n */\n if (ev.relatedTarget) {\n ctx._clear(ev);\n }\n },\n\n _onQueryResult: function(response) {\n var results = response.body;\n if (!results.features.length) return;\n var result = results.features[0];\n this._typeahead.selected = result;\n this._inputEl.value = result.place_name;\n this._onChange();\n },\n\n _updateProximity: function() {\n // proximity is designed for local scale, if the user is looking at the whole world,\n // it doesn't make sense to factor in the arbitrary centre of the map\n if (!this._map || !this.options.trackProximity){\n return;\n }\n if (this._map.getZoom() > 9) {\n var center = this._map.getCenter().wrap();\n this.setProximity({ longitude: center.lng, latitude: center.lat }, false);\n } else {\n this.setProximity(null, false);\n }\n },\n\n _collapse: function() {\n // do not collapse if input is in focus\n if (!this._inputEl.value && this._inputEl !== document.activeElement) this.container.classList.add('mapboxgl-ctrl-geocoder--collapsed');\n },\n\n _unCollapse: function() {\n this.container.classList.remove('mapboxgl-ctrl-geocoder--collapsed');\n },\n\n /**\n * Set & query the input\n * @param {string} searchInput location name or other search input\n * @returns {MapboxGeocoder} this\n */\n query: function(searchInput) {\n this._geocode(searchInput).then(this._onQueryResult);\n return this;\n },\n\n _renderError: function(){\n var errorMessage = \"
There was an error reaching the server
\"\n this._renderMessage(errorMessage);\n },\n\n _renderLocationError: function(){\n var errorMessage = \"
A location error has occurred
\"\n this._renderMessage(errorMessage);\n },\n\n _renderNoResults: function(){\n var errorMessage = \"
No results found
\";\n this._renderMessage(errorMessage);\n },\n\n _renderUserDeniedGeolocationError: function() {\n var errorMessage = \"
Geolocation permission denied
\"\n this._renderMessage(errorMessage);\n },\n\n _renderMessage: function(msg){\n this._typeahead.update([]);\n this._typeahead.selected = null;\n this._typeahead.clear();\n this._typeahead.renderError(msg);\n },\n\n /**\n * Get the text to use as the search bar placeholder\n *\n * If placeholder is provided in options, then use options.placeholder\n * Otherwise, if language is provided in options, then use the localized string of the first language if available\n * Otherwise use the default\n *\n * @returns {String} the value to use as the search bar placeholder\n * @private\n */\n _getPlaceholderText: function(){\n if (this.options.placeholder) return this.options.placeholder;\n if (this.options.language){\n var firstLanguage = this.options.language.split(\",\")[0];\n var language = subtag.language(firstLanguage);\n var localizedValue = localization.placeholder[language];\n if (localizedValue) return localizedValue;\n }\n return 'Search';\n },\n\n /**\n * Set input\n * @param {string} searchInput location name or other search input\n * @param {boolean} [showSuggestions=false] display suggestion on setInput call\n * @returns {MapboxGeocoder} this\n */\n setInput: function(searchInput, showSuggestions) {\n if (showSuggestions === undefined) {\n showSuggestions = false\n }\n // Set input value to passed value and clear everything else.\n this._inputEl.value = searchInput;\n this._typeahead.selected = null;\n this._typeahead.clear();\n if (searchInput.length >= this.options.minLength) {\n showSuggestions ? this._geocode(searchInput) : this._onChange();\n }\n return this;\n },\n\n /**\n * Set proximity\n * @param {Object|'ip'} proximity The new `options.proximity` value. This is a geographical point given as an object with `latitude` and `longitude` properties or the string 'ip'.\n * @param {Boolean} disableTrackProximity If true, sets `trackProximity` to false. True by default to prevent `trackProximity` from unintentionally overriding an explicitly set proximity value.\n * @returns {MapboxGeocoder} this\n */\n setProximity: function(proximity, disableTrackProximity = true) {\n this.options.proximity = proximity;\n if (disableTrackProximity) {\n this.options.trackProximity = false;\n }\n return this;\n },\n\n /**\n * Get proximity\n * @returns {Object} The geocoder proximity\n */\n getProximity: function() {\n return this.options.proximity;\n },\n\n /**\n * Set the render function used in the results dropdown\n * @param {Function} fn The function to use as a render function. This function accepts a single [extended GeoJSON](https://docs.mapbox.com/api/search/geocoding-v5/#geocoding-response-object) object as input and returns a string.\n * @returns {MapboxGeocoder} this\n */\n setRenderFunction: function(fn){\n if (fn && typeof(fn) == \"function\"){\n this._typeahead.render = fn;\n }\n return this;\n },\n\n /**\n * Get the function used to render the results dropdown\n *\n * @returns {Function} the render function\n */\n getRenderFunction: function(){\n return this._typeahead.render;\n },\n\n /**\n * Get the language to use in UI elements and when making search requests\n *\n * Look first at the explicitly set options otherwise use the browser's language settings\n * @param {String} language Specify the language to use for response text and query result weighting. Options are IETF language tags comprised of a mandatory ISO 639-1 language code and optionally one or more IETF subtags for country or script. More than one value can also be specified, separated by commas.\n * @returns {MapboxGeocoder} this\n */\n setLanguage: function(language){\n var browserLocale = navigator.language || navigator.userLanguage || navigator.browserLanguage;\n this.options.language = language || this.options.language || browserLocale;\n return this;\n },\n\n /**\n * Get the language to use in UI elements and when making search requests\n * @returns {String} The language(s) used by the plugin, if any\n */\n getLanguage: function(){\n return this.options.language;\n },\n\n /**\n * Get the zoom level the map will move to when there is no bounding box on the selected result\n * @returns {Number} the map zoom\n */\n getZoom: function(){\n return this.options.zoom;\n },\n\n /**\n * Set the zoom level\n * @param {Number} zoom The zoom level that the map should animate to when a `bbox` isn't found in the response. If a `bbox` is found the map will fit to the `bbox`.\n * @returns {MapboxGeocoder} this\n */\n setZoom: function(zoom){\n this.options.zoom = zoom;\n return this;\n },\n\n /**\n * Get the parameters used to fly to the selected response, if any\n * @returns {Boolean|Object} The `flyTo` option\n */\n getFlyTo: function(){\n return this.options.flyTo;\n },\n\n /**\n * Set the flyTo options\n * @param {Boolean|Object} flyTo If false, animating the map to a selected result is disabled. If true, animating the map will use the default animation parameters. If an object, it will be passed as `options` to the map [`flyTo`](https://docs.mapbox.com/mapbox-gl-js/api/#map#flyto) or [`fitBounds`](https://docs.mapbox.com/mapbox-gl-js/api/#map#fitbounds) method providing control over the animation of the transition.\n */\n setFlyTo: function(flyTo){\n this.options.flyTo = flyTo;\n return this;\n },\n\n /**\n * Get the value of the placeholder string\n * @returns {String} The input element's placeholder value\n */\n getPlaceholder: function(){\n return this.options.placeholder;\n },\n\n /**\n * Set the value of the input element's placeholder\n * @param {String} placeholder the text to use as the input element's placeholder\n * @returns {MapboxGeocoder} this\n */\n setPlaceholder: function(placeholder){\n this.options.placeholder = (placeholder) ? placeholder : this._getPlaceholderText();\n this._inputEl.placeholder = this.options.placeholder;\n this._inputEl.setAttribute('aria-label', this.options.placeholder);\n return this\n },\n\n /**\n * Get the bounding box used by the plugin\n * @returns {Array} the bounding box, if any\n */\n getBbox: function(){\n return this.options.bbox;\n },\n\n /**\n * Set the bounding box to limit search results to\n * @param {Array} bbox a bounding box given as an array in the format [minX, minY, maxX, maxY].\n * @returns {MapboxGeocoder} this\n */\n setBbox: function(bbox){\n this.options.bbox = bbox;\n return this;\n },\n\n /**\n * Get a list of the countries to limit search results to\n * @returns {String} a comma separated list of countries to limit to, if any\n */\n getCountries: function(){\n return this.options.countries;\n },\n\n /**\n * Set the countries to limit search results to\n * @param {String} countries a comma separated list of countries to limit to\n * @returns {MapboxGeocoder} this\n */\n setCountries: function(countries){\n this.options.countries = countries;\n return this;\n },\n\n /**\n * Get a list of the types to limit search results to\n * @returns {String} a comma separated list of types to limit to\n */\n getTypes: function(){\n return this.options.types;\n },\n\n /**\n * Set the types to limit search results to\n * @param {String} countries a comma separated list of types to limit to\n * @returns {MapboxGeocoder} this\n */\n setTypes: function(types){\n this.options.types = types;\n return this;\n },\n\n /**\n * Get the minimum number of characters typed to trigger results used in the plugin\n * @returns {Number} The minimum length in characters before a search is triggered\n */\n getMinLength: function(){\n return this.options.minLength;\n },\n\n /**\n * Set the minimum number of characters typed to trigger results used by the plugin\n * @param {Number} minLength the minimum length in characters\n * @returns {MapboxGeocoder} this\n */\n setMinLength: function(minLength){\n this.options.minLength = minLength;\n if (this._typeahead) this._typeahead.options.minLength = minLength;\n return this;\n },\n\n /**\n * Get the limit value for the number of results to display used by the plugin\n * @returns {Number} The limit value for the number of results to display used by the plugin\n */\n getLimit: function(){\n return this.options.limit;\n },\n\n /**\n * Set the limit value for the number of results to display used by the plugin\n * @param {Number} limit the number of search results to return\n * @returns {MapboxGeocoder}\n */\n setLimit: function(limit){\n this.options.limit = limit;\n if (this._typeahead) this._typeahead.options.limit = limit;\n return this;\n },\n\n /**\n * Get the filter function used by the plugin\n * @returns {Function} the filter function\n */\n getFilter: function(){\n return this.options.filter;\n },\n\n /**\n * Set the filter function used by the plugin.\n * @param {Function} filter A function which accepts a Feature in the [extended GeoJSON](https://docs.mapbox.com/api/search/geocoding-v5/#geocoding-response-object) format to filter out results from the Geocoding API response before they are included in the suggestions list. Return `true` to keep the item, `false` otherwise.\n * @returns {MapboxGeocoder} this\n */\n setFilter: function(filter){\n this.options.filter = filter;\n return this;\n },\n\n /**\n * Set the geocoding endpoint used by the plugin.\n * @param {Function} origin A function which accepts an HTTPS URL to specify the endpoint to query results from.\n * @returns {MapboxGeocoder} this\n */\n setOrigin: function(origin){\n this.options.origin = origin;\n this.geocoderService = mbxGeocoder(\n MapboxClient({\n accessToken: this.options.accessToken,\n origin: this.options.origin\n })\n );\n return this;\n },\n\n /**\n * Get the geocoding endpoint the plugin is currently set to\n * @returns {Function} the endpoint URL\n */\n getOrigin: function(){\n return this.options.origin;\n },\n\n /**\n * Set the accessToken option used for the geocoding request endpoint.\n * @param {String} accessToken value\n * @returns {MapboxGeocoder} this\n */\n setAccessToken: function(accessToken){\n this.options.accessToken = accessToken;\n this.geocoderService = mbxGeocoder(\n MapboxClient({\n accessToken: this.options.accessToken,\n origin: this.options.origin\n })\n );\n return this;\n },\n\n /**\n * Set the autocomplete option used for geocoding requests\n * @param {Boolean} value The boolean value to set autocomplete to\n * @returns\n */\n setAutocomplete: function(value){\n this.options.autocomplete = value;\n return this;\n },\n\n /**\n * Get the current autocomplete parameter value used for requests\n * @returns {Boolean} The autocomplete parameter value\n */\n getAutocomplete: function(){\n return this.options.autocomplete\n },\n\n /**\n * Set the fuzzyMatch option used for approximate matching in geocoding requests\n * @param {Boolean} value The boolean value to set fuzzyMatch to\n * @returns\n */\n setFuzzyMatch: function(value){\n this.options.fuzzyMatch = value;\n return this;\n },\n\n /**\n * Get the current fuzzyMatch parameter value used for requests\n * @returns {Boolean} The fuzzyMatch parameter value\n */\n getFuzzyMatch: function(){\n return this.options.fuzzyMatch\n },\n\n /**\n * Set the routing parameter used to ask for routable point metadata in geocoding requests\n * @param {Boolean} value The boolean value to set routing to\n * @returns\n */\n setRouting: function(value){\n this.options.routing = value;\n return this;\n },\n\n /**\n * Get the current routing parameter value used for requests\n * @returns {Boolean} The routing parameter value\n */\n getRouting: function(){\n return this.options.routing\n },\n\n /**\n * Set the worldview parameter\n * @param {String} code The country code representing the worldview (e.g. \"us\" | \"cn\" | \"jp\", \"in\")\n * @returns\n */\n setWorldview: function(code){\n this.options.worldview = code;\n return this;\n },\n\n /**\n * Get the current worldview parameter value used for requests\n * @returns {String} The worldview parameter value\n */\n getWorldview: function(){\n return this.options.worldview\n },\n\n /**\n * Handle the placement of a result marking the selected result\n * @private\n * @param {Object} selected the selected geojson feature\n * @returns {MapboxGeocoder} this\n */\n _handleMarker: function(selected){\n // clean up any old marker that might be present\n if (!this._map){\n return;\n }\n this._removeMarker();\n var defaultMarkerOptions = {\n color: '#4668F2'\n }\n var markerOptions = extend({}, defaultMarkerOptions, this.options.marker)\n this.mapMarker = new this._mapboxgl.Marker(markerOptions);\n if (selected.center) {\n this.mapMarker\n .setLngLat(selected.center)\n .addTo(this._map);\n } else if (selected.geometry && selected.geometry.type && selected.geometry.type === 'Point' && selected.geometry.coordinates) {\n this.mapMarker\n .setLngLat(selected.geometry.coordinates)\n .addTo(this._map);\n }\n return this;\n },\n\n /**\n * Handle the removal of a result marker\n * @private\n */\n _removeMarker: function(){\n if (this.mapMarker){\n this.mapMarker.remove();\n this.mapMarker = null;\n }\n },\n\n /**\n * Subscribe to events that happen within the plugin.\n * @param {String} type name of event. Available events and the data passed into their respective event objects are:\n *\n * - __clear__ `Emitted when the input is cleared`\n * - __loading__ `{ query } Emitted when the geocoder is looking up a query`\n * - __results__ `{ results } Fired when the geocoder returns a response`\n * - __result__ `{ result } Fired when input is set`\n * - __error__ `{ error } Error as string`\n * @param {Function} fn function that's called when the event is emitted.\n * @returns {MapboxGeocoder} this;\n */\n on: function(type, fn) {\n this._eventEmitter.on(type, fn);\n return this;\n },\n\n /**\n * Remove an event\n * @returns {MapboxGeocoder} this\n * @param {String} type Event name.\n * @param {Function} fn Function that should unsubscribe to the event emitted.\n */\n off: function(type, fn) {\n this._eventEmitter.removeListener(type, fn);\n this.eventManager.remove();\n return this;\n }\n};\n\nmodule.exports = MapboxGeocoder;\n","// packages/vue-mapbox-gl/components/StoreLocator/StoreLocator.vue\nimport { createCommentVNode as _createCommentVNode3, renderSlot as _renderSlot3, createTextVNode as _createTextVNode, Transition as _Transition, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, withCtx as _withCtx, createVNode as _createVNode2, openBlock as _openBlock7, createBlock as _createBlock, mergeProps as _mergeProps2, normalizeClass as _normalizeClass2, createElementVNode as _createElementVNode3, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment2, createElementBlock as _createElementBlock7 } from \"vue\";\nimport { ref as ref6, unref as unref9, computed as computed6, nextTick as nextTick3 } from \"vue\";\n\n// packages/vue-mapbox-gl/components/MapboxCluster.vue\nimport { createVNode as _createVNode, openBlock as _openBlock3, createElementBlock as _createElementBlock3 } from \"vue\";\nimport { ref as ref2, unref as unref6, computed as computed3 } from \"vue\";\n\n// packages/vue-mapbox-gl/composables/useControl.js\nimport mapboxgl from \"mapbox-gl\";\nimport { onMounted, onUnmounted, ref, shallowReactive, unref as unref3, watch as watch3, nextTick } from \"vue\";\n\n// packages/vue-mapbox-gl/composables/useMap.js\nimport { inject } from \"vue\";\nfunction useMap() {\n const map = inject(\"mapbox-map\", null);\n return {\n map\n };\n}\n\n// packages/vue-mapbox-gl/composables/useEventsBinding.js\nimport { watch, computed, useAttrs, unref } from \"vue\";\nvar cache = /* @__PURE__ */ new Map();\nvar regex = /onMb([A-Z])(.+)/;\nfunction getOriginalEvent(vueEventName) {\n if (!cache.has(vueEventName)) {\n cache.set(\n vueEventName,\n vueEventName.replace(regex, (match, $1, $2) => $1.toLowerCase() + $2)\n );\n }\n return cache.get(vueEventName);\n}\nfunction useEventsBinding(emitFn, mapboxElement, events7 = [], layerId = null) {\n const attrs = useAttrs();\n const vueEventNames = computed(\n () => Object.entries(attrs).filter(([name, value]) => name.startsWith(\"on\") && typeof value === \"function\").map(([name]) => name)\n );\n const unbindFunctions = /* @__PURE__ */ new Map();\n function unbindEvents(eventNames) {\n if (!Array.isArray(eventNames)) {\n return;\n }\n eventNames.forEach((eventName) => {\n const unbindFn = unbindFunctions.get(eventName);\n if (typeof unbindFn === \"function\") {\n unbindFn();\n }\n });\n }\n function bindEvents(eventNames) {\n if (!Array.isArray(eventNames)) {\n return;\n }\n eventNames.forEach((eventName) => {\n const originalEvent = getOriginalEvent(eventName);\n if (!events7.includes(originalEvent)) {\n return;\n }\n const handler = (...payload) => {\n emitFn(`mb-${originalEvent}`, ...payload);\n };\n if (layerId) {\n unref(mapboxElement).on(originalEvent, layerId, handler);\n unbindFunctions.set(eventName, () => {\n unref(mapboxElement).off(originalEvent, layerId, handler);\n });\n } else {\n unref(mapboxElement).on(originalEvent, handler);\n unbindFunctions.set(eventName, () => {\n unref(mapboxElement).off(originalEvent, handler);\n });\n }\n });\n }\n watch(\n vueEventNames,\n (newVueEventNames, oldVueEventNames) => {\n const eventNamesToDelete = Array.isArray(newVueEventNames) ? (oldVueEventNames != null ? oldVueEventNames : []).filter(\n (oldVueEventName) => !newVueEventNames.includes(oldVueEventName)\n ) : oldVueEventNames != null ? oldVueEventNames : [];\n const eventNamesToAdd = Array.isArray(oldVueEventNames) ? (newVueEventNames != null ? newVueEventNames : []).filter(\n (newVueEventName) => !oldVueEventNames.includes(newVueEventName)\n ) : newVueEventNames != null ? newVueEventNames : [];\n if (unref(mapboxElement)) {\n unbindEvents(eventNamesToDelete);\n bindEvents(eventNamesToAdd);\n } else {\n const unwatch = watch(mapboxElement, (newValue) => {\n if (newValue) {\n unbindEvents(eventNamesToDelete);\n bindEvents(eventNamesToAdd);\n unwatch();\n }\n });\n }\n },\n { immediate: true }\n );\n}\n\n// packages/vue-mapbox-gl/composables/usePropsBinding.js\nimport { watch as watch2, unref as unref2 } from \"vue\";\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nfunction usePropsBinding(props, mapboxElement, propsConfig10) {\n function bindProps(element) {\n Object.keys(props).filter((prop) => props[prop] !== void 0 && props[prop] !== null).forEach((prop) => {\n var _a, _b;\n const setMethodName = prop === \"mapStyle\" ? \"setStyle\" : `set${capitalizeFirstLetter(prop)}`;\n const methodExists = typeof element[setMethodName] === \"function\";\n const propNeedsBinding = typeof propsConfig10[prop] === \"undefined\" || \"bind\" in propsConfig10[prop] ? (_b = (_a = propsConfig10[prop]) == null ? void 0 : _a.bind) != null ? _b : false : true;\n if (!methodExists || !propNeedsBinding) {\n return;\n }\n const { type } = props[prop];\n const options = {\n deep: type === Object || Array.isArray(type) && type.includes(Object)\n };\n watch2(\n () => props[prop],\n (newValue) => {\n element[setMethodName](newValue);\n },\n options\n );\n });\n }\n if (unref2(mapboxElement)) {\n bindProps(unref2(mapboxElement));\n } else {\n const unwatch = watch2(mapboxElement, (newValue) => {\n if (newValue) {\n bindProps(newValue);\n unwatch();\n }\n });\n }\n}\n\n// packages/vue-mapbox-gl/composables/useControl.js\nfunction useControl(ControlConstructor, { propsConfig: propsConfig10, props, emit, events: events7 = [] }) {\n const { map } = useMap();\n const control = ref();\n if (Array.isArray(events7) && events7.length) {\n useEventsBinding(emit, control, events7);\n }\n if (typeof propsConfig10 !== \"undefined\") {\n usePropsBinding(props, control, propsConfig10);\n }\n watch3(\n () => props.position,\n (newValue) => {\n if (unref3(map)) {\n unref3(map).removeControl(unref3(control)).addControl(unref3(control), newValue);\n }\n }\n );\n onMounted(async () => {\n const ctrl = new ControlConstructor(props);\n if (unref3(map)) {\n unref3(map).addControl(ctrl, props.position);\n }\n await nextTick();\n if (ControlConstructor === mapboxgl.GeolocateControl && !ctrl._setup) {\n const tmpControl = shallowReactive(ctrl);\n const unwatch = watch3(tmpControl, (reactiveCtrl) => {\n if (reactiveCtrl._setup) {\n control.value = ctrl;\n unwatch();\n }\n });\n } else {\n control.value = ctrl;\n }\n });\n onUnmounted(() => {\n if (unref3(control) && unref3(map)) {\n unref3(map).removeControl(unref3(control));\n }\n });\n return {\n control,\n map\n };\n}\n\n// packages/vue-mapbox-gl/components/MapboxLayer.vue\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nimport { onMounted as onMounted2, onUnmounted as onUnmounted2, computed as computed2, unref as unref4 } from \"vue\";\n\n// unplugin-vue:/plugin-vue/export-helper\nvar export_helper_default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n\n// packages/vue-mapbox-gl/components/MapboxLayer.vue\nvar _hoisted_1 = [\"id\"];\nvar propsConfig = {\n /**\n * Id of the layer\n * @see https://docs.mapbox.com/mapbox-gl-js/api/#map#addlayer\n * @type {string}\n */\n id: {\n type: String,\n required: true\n },\n /**\n * Options for the layer\n * @see https://docs.mapbox.com/mapbox-gl-js/api/#map#addlayer\n * @see https://docs.mapbox.com/mapbox-gl-js/style-spec/#layers\n * @type {object}\n */\n options: {\n type: Object,\n default: () => {\n }\n },\n /**\n * The ID of an existing layer to insert the new layer before.\n * @see https://docs.mapbox.com/mapbox-gl-js/api/#map#addlayer\n * @type {string}\n */\n beforeId: {\n type: String,\n default: void 0\n }\n};\nvar events = [\n \"mousedown\",\n \"mouseup\",\n \"click\",\n \"dblclick\",\n \"mousemove\",\n \"mouseenter\",\n \"mouseleave\",\n \"mouseover\",\n \"mouseout\",\n \"contextmenu\",\n \"touchstart\",\n \"touchend\",\n \"touchcancel\"\n];\nvar _sfc_main = {\n __name: \"MapboxLayer\",\n props: propsConfig,\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const { map } = useMap();\n const options = computed2(() => {\n const opts = { ...props.options, id: props.id };\n if (opts.paint === null || opts.paint === void 0) {\n delete opts.paint;\n }\n if (opts.layout === null || opts.layout === void 0) {\n delete opts.layout;\n }\n return opts;\n });\n useEventsBinding(emit, map, events, props.id);\n function removeLayer() {\n if (typeof unref4(map).getLayer(props.id) !== \"undefined\") {\n unref4(map).removeLayer(props.id);\n }\n }\n function removeSource() {\n if (typeof unref4(map).getSource(props.id) !== \"undefined\") {\n unref4(map).removeSource(props.id);\n }\n }\n onMounted2(() => {\n removeLayer();\n removeSource();\n unref4(map).addLayer(unref4(options), props.beforeId);\n });\n onUnmounted2(() => {\n removeLayer();\n removeSource();\n });\n return (_ctx, _cache) => {\n return _openBlock(), _createElementBlock(\"div\", { id: _ctx.id }, null, 8, _hoisted_1);\n };\n }\n};\nvar MapboxLayer_default = /* @__PURE__ */ export_helper_default(_sfc_main, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxLayer.vue\"]]);\n\n// packages/vue-mapbox-gl/components/MapboxSource.vue\nimport { openBlock as _openBlock2, createElementBlock as _createElementBlock2 } from \"vue\";\nimport { unref as unref5, watch as watch4, onMounted as onMounted3, onUnmounted as onUnmounted3 } from \"vue\";\nvar _hoisted_12 = [\"id\"];\nvar _sfc_main2 = {\n __name: \"MapboxSource\",\n props: {\n options: {\n type: Object,\n default: () => {\n }\n },\n id: {\n type: String,\n required: true\n }\n },\n setup(__props) {\n const props = __props;\n const { map } = useMap();\n watch4(\n () => props.options.data,\n (newValue) => {\n unref5(map).getSource(props.id).setData(newValue);\n }\n );\n onMounted3(() => {\n unref5(map).addSource(props.id, props.options);\n });\n onUnmounted3(() => {\n const { _layers: layers } = unref5(map).style;\n Object.values(layers).forEach((value) => {\n if (value.source === props.id) {\n unref5(map).removeLayer(value.id);\n }\n });\n unref5(map).removeSource(props.id);\n });\n return (_ctx, _cache) => {\n return _openBlock2(), _createElementBlock2(\"div\", { id: __props.id }, null, 8, _hoisted_12);\n };\n }\n};\nvar MapboxSource_default = /* @__PURE__ */ export_helper_default(_sfc_main2, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxSource.vue\"]]);\n\n// packages/vue-mapbox-gl/components/MapboxCluster.vue\nvar _hoisted_13 = [\"id\"];\nvar propsConfig2 = {\n /**\n * The source of the data for the clustered points,\n * must be a String or an Object of GeoJSON format.\n * @type {string | GeoJSON}\n */\n data: {\n type: [String, Object],\n required: true\n },\n /**\n * The max zoom to cluster points on\n * @type {number}\n */\n clusterMaxZoom: {\n type: Number,\n default: 14\n },\n /**\n * Radius of each cluster when clustering point\n * @type {number}\n */\n clusterRadius: {\n type: Number,\n default: 50\n },\n /**\n * Minimum number of points necessary to form a cluster.\n * @type {number}\n */\n clusterMinPoints: {\n type: Number,\n default: 2\n },\n /**\n * An object defining custom properties on the generated clusters.\n * @see https://docs.mapbox.com/style-spec/reference/sources/#geojson-clusterProperties\n * @see https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/\n * @type {object}\n */\n clusterProperties: {\n type: Object,\n default: () => ({})\n },\n /**\n * The layout configuration for the clusters circles\n * @see https://docs.mapbox.com/mapbox-gl-js/example/cluster/\n * @type {object}\n */\n clustersLayout: {\n type: Object,\n default: () => ({})\n },\n /**\n * The paint configuration for the clusters circles\n * @see https://docs.mapbox.com/mapbox-gl-js/example/cluster/\n * @type {object}\n */\n clustersPaint: {\n type: Object,\n default: () => ({\n \"circle-color\": \"#000\",\n \"circle-radius\": 40\n })\n },\n /**\n * The layout configuration for the clusters count\n * @see https://docs.mapbox.com/mapbox-gl-js/example/cluster/\n * @type {object}\n */\n clusterCountLayout: {\n type: Object,\n default: () => ({\n \"text-field\": [\"get\", \"point_count_abbreviated\"]\n })\n },\n /**\n * The paint configuration for the clusters count\n * @see https://docs.mapbox.com/mapbox-gl-js/example/cluster/\n * @type {object}\n */\n clusterCountPaint: {\n type: Object,\n default: () => ({\n \"text-color\": \"white\"\n })\n },\n /**\n * The type of the unclustered points layer\n * @see https://docs.mapbox.com/mapbox-gl-js/example/cluster/\n * @type {string}\n */\n unclusteredPointLayerType: {\n type: String,\n default: \"circle\"\n },\n /**\n * The layout configuration for the unclustered points\n * @see https://docs.mapbox.com/mapbox-gl-js/example/cluster/\n * @type {object}\n */\n unclusteredPointLayout: {\n type: Object,\n default: () => ({})\n },\n /**\n * The paint configuration for the unclustered points\n * @see https://docs.mapbox.com/mapbox-gl-js/example/cluster/\n * @type {object}\n */\n unclusteredPointPaint: {\n type: Object,\n default: () => ({\n \"circle-color\": \"#000\",\n \"circle-radius\": 4\n })\n }\n};\nvar index = 0;\nvar _sfc_main3 = {\n __name: \"MapboxCluster\",\n props: propsConfig2,\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const { map } = useMap();\n const id = ref2(`mb-cluster-${index}`);\n index += 1;\n const getId = (suffix) => `${unref6(id)}-${suffix}`;\n const sourceId = computed3(() => getId(\"source\"));\n const source = computed3(() => {\n const { data, clusterMaxZoom, clusterRadius, clusterMinPoints, clusterProperties } = props;\n return {\n type: \"geojson\",\n cluster: true,\n data,\n clusterMaxZoom,\n clusterRadius,\n clusterMinPoints,\n clusterProperties\n };\n });\n const clustersLayer = computed3(() => ({\n id: getId(\"clusters\"),\n type: \"circle\",\n source: unref6(sourceId),\n filter: [\"has\", \"point_count\"],\n layout: props.clustersLayout,\n paint: props.clustersPaint\n }));\n const clusterCountLayer = computed3(() => ({\n id: getId(\"cluster-count\"),\n type: \"symbol\",\n source: unref6(sourceId),\n filter: [\"has\", \"point_count\"],\n layout: props.clusterCountLayout,\n paint: props.clusterCountPaint\n }));\n const unclusteredPointLayer = computed3(() => ({\n id: getId(\"unclustered-point\"),\n type: props.unclusteredPointLayerType,\n source: unref6(sourceId),\n filter: [\"!\", [\"has\", \"point_count\"]],\n layout: props.unclusteredPointLayout,\n paint: props.unclusteredPointPaint\n }));\n function clustersClickHandler(event) {\n const feature = unref6(map).queryRenderedFeatures(event.point, {\n layers: [unref6(clustersLayer).id]\n })[0];\n const { cluster_id: clusterId } = feature.properties;\n emit(\"mb-cluster-click\", clusterId, event);\n if (event.defaultPrevented) {\n return;\n }\n unref6(map).getSource(unref6(sourceId)).getClusterExpansionZoom(clusterId, (err, zoom) => {\n if (err) {\n return;\n }\n unref6(map).easeTo({\n center: feature.geometry.coordinates,\n zoom\n });\n });\n }\n function clustersMouseenterHandler() {\n unref6(map).getCanvas().style.cursor = \"pointer\";\n }\n function clustersMouseleaveHandler() {\n unref6(map).getCanvas().style.cursor = \"\";\n }\n function unclusteredPointClickHandler(event) {\n const [feature] = event.features;\n emit(\"mb-feature-click\", feature, event);\n }\n function unclusteredPointMouseenterHandler(event) {\n const [feature] = event.features;\n emit(\"mb-feature-mouseenter\", feature, event);\n unref6(map).getCanvas().style.cursor = \"pointer\";\n }\n function unclusteredPointMouseleaveHandler(event) {\n emit(\"mb-feature-mouseleave\", event);\n unref6(map).getCanvas().style.cursor = \"\";\n }\n return (_ctx, _cache) => {\n return _openBlock3(), _createElementBlock3(\"div\", { id: id.value }, [\n _createVNode(MapboxSource_default, {\n id: sourceId.value,\n options: source.value\n }, null, 8, [\"id\", \"options\"]),\n _createVNode(MapboxLayer_default, {\n id: clustersLayer.value.id,\n options: clustersLayer.value,\n onMbClick: clustersClickHandler,\n onMbMouseenter: clustersMouseenterHandler,\n onMbMouseleave: clustersMouseleaveHandler\n }, null, 8, [\"id\", \"options\"]),\n _createVNode(MapboxLayer_default, {\n id: clusterCountLayer.value.id,\n options: clusterCountLayer.value\n }, null, 8, [\"id\", \"options\"]),\n _createVNode(MapboxLayer_default, {\n id: unclusteredPointLayer.value.id,\n options: unclusteredPointLayer.value,\n onMbClick: unclusteredPointClickHandler,\n onMbMouseenter: unclusteredPointMouseenterHandler,\n onMbMouseleave: unclusteredPointMouseleaveHandler\n }, null, 8, [\"id\", \"options\"])\n ], 8, _hoisted_13);\n };\n }\n};\nvar MapboxCluster_default = /* @__PURE__ */ export_helper_default(_sfc_main3, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxCluster.vue\"]]);\n\n// packages/vue-mapbox-gl/components/MapboxGeocoder.vue\nimport { openBlock as _openBlock4, createElementBlock as _createElementBlock4 } from \"vue\";\nimport { onMounted as onMounted4, ref as ref3, unref as unref7, computed as computed4, watch as watch5 } from \"vue\";\nimport mapboxgl2 from \"mapbox-gl\";\nimport MapboxGeocoder from \"@mapbox/mapbox-gl-geocoder\";\nif (!mapboxgl2) {\n throw new Error(\"mapboxgl is not installed.\");\n}\nif (!MapboxGeocoder) {\n throw new Error(\"MapboxGeocoder is not installed.\");\n}\nvar propsConfig3 = {\n accessToken: {\n type: String,\n default: \"no-token\"\n },\n zoom: {\n type: Number,\n default: 16\n },\n flyTo: {\n type: [Boolean, Object],\n default: true\n },\n placeholder: {\n type: String,\n default: \"Search\"\n },\n proximity: {\n type: [Object, Array, String],\n default: \"ip\"\n },\n trackProximity: {\n type: Boolean,\n default: true\n },\n collapsed: {\n type: Boolean,\n default: false\n },\n clearAndBlurOnEsc: {\n type: Boolean,\n default: false\n },\n clearOnBlur: {\n type: Boolean,\n default: false\n },\n bbox: {\n type: Array,\n default: () => []\n },\n countries: {\n type: String,\n default: \"\"\n },\n types: {\n type: String,\n default: \"place\"\n },\n minLength: {\n type: Number,\n default: 2\n },\n limit: {\n type: Number,\n default: 5\n },\n language: {\n type: String,\n default: void 0\n },\n filter: {\n type: Function,\n default: void 0\n },\n localGeocoder: {\n type: Function,\n default: void 0\n },\n reverseMode: {\n type: String,\n default: \"distance\"\n },\n reverseGeocode: {\n type: Boolean,\n default: false\n },\n enableEventLogging: {\n type: Boolean,\n default: false\n },\n marker: {\n type: Boolean,\n default: true\n },\n render: {\n type: Function,\n default: void 0\n },\n getItemValue: {\n type: Function,\n default: (item) => item.place_name\n },\n mode: {\n type: String,\n default: \"mapbox.places\"\n },\n localGeocoderOnly: {\n type: Boolean,\n default: false\n }\n};\nvar events2 = [\"clear\", \"loading\", \"results\", \"result\", \"error\"];\nvar _sfc_main4 = {\n __name: \"MapboxGeocoder\",\n props: propsConfig3,\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const root = ref3();\n const options = computed4(() => {\n var _a;\n const opts = {\n mapboxgl: mapboxgl2,\n ...props,\n accessToken: (_a = mapboxgl2.accessToken) != null ? _a : props.accessToken\n };\n if (!opts.reverseGeocode || true) {\n delete opts.reverseMode;\n }\n return opts;\n });\n const { control, map } = useControl(MapboxGeocoder, {\n propsConfig: propsConfig3,\n props: unref7(options),\n emit,\n events: events2\n });\n onMounted4(() => {\n const stop = watch5(control, (newValue) => {\n if (newValue && !unref7(map) && unref7(root)) {\n newValue.addTo(unref7(root));\n stop();\n }\n });\n });\n __expose({ control });\n return (_ctx, _cache) => {\n return _openBlock4(), _createElementBlock4(\n \"div\",\n {\n ref_key: \"root\",\n ref: root\n },\n null,\n 512\n /* NEED_PATCH */\n );\n };\n }\n};\nvar MapboxGeocoder_default = /* @__PURE__ */ export_helper_default(_sfc_main4, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxGeocoder.vue\"]]);\n\n// packages/vue-mapbox-gl/components/MapboxMap.vue\nimport { mergeProps as _mergeProps, createElementVNode as _createElementVNode, renderSlot as _renderSlot, openBlock as _openBlock5, createElementBlock as _createElementBlock5, createCommentVNode as _createCommentVNode, Fragment as _Fragment } from \"vue\";\nimport { ref as ref4, computed as computed5, onMounted as onMounted5, onUnmounted as onUnmounted4, provide } from \"vue\";\nimport mapboxgl3 from \"mapbox-gl\";\nvar _hoisted_14 = { key: 0 };\nvar _hoisted_2 = { key: 1 };\nif (!mapboxgl3) {\n throw new Error(\"mapboxgl is not installed.\");\n}\nvar { LngLatBounds, LngLat } = mapboxgl3;\nvar propsConfig4 = {\n accessToken: {\n type: String,\n default: \"no-token\"\n },\n container: {\n type: [typeof HTMLElement !== \"undefined\" && HTMLElement, String],\n default: void 0\n },\n minZoom: {\n type: Number,\n default: 0\n },\n maxZoom: {\n type: Number,\n default: 22\n },\n minPitch: {\n type: Number,\n default: 0\n },\n maxPitch: {\n type: Number,\n default: 60\n },\n mapStyle: {\n type: [Object, String],\n required: true\n },\n hash: {\n type: Boolean,\n default: false\n },\n interactive: {\n type: Boolean,\n default: true\n },\n bearingSnap: {\n type: Number,\n default: 7\n },\n pitchWithRotate: {\n type: Boolean,\n default: true\n },\n clickTolerance: {\n type: Number,\n default: 3\n },\n attributionControl: {\n type: Boolean,\n default: true\n },\n customAttribution: {\n type: [String, Array],\n default: null\n },\n logoPosition: {\n type: String,\n default: \"bottom-left\"\n },\n failIfMajorPerformanceCaveat: {\n type: Boolean,\n default: false\n },\n preserveDrawingBuffer: {\n type: Boolean,\n default: false\n },\n antialias: {\n type: Boolean,\n default: false\n },\n refreshExpiredTiles: {\n type: Boolean,\n default: true\n },\n maxBounds: {\n type: [LngLatBounds, Array],\n default: void 0\n },\n scrollZoom: {\n type: [Boolean, Object],\n default: true\n },\n boxZoom: {\n type: Boolean,\n default: true\n },\n dragRotate: {\n type: Boolean,\n default: true\n },\n dragPan: {\n type: [Boolean, Object],\n default: true\n },\n keyboard: {\n type: Boolean,\n default: true\n },\n doubleClickZoom: {\n type: Boolean,\n default: true\n },\n touchZoomRotate: {\n type: [Boolean, Object],\n default: true\n },\n trackResize: {\n type: Boolean,\n default: true\n },\n center: {\n type: [LngLat, Array, Object],\n default: () => [0, 0]\n },\n zoom: {\n type: Number,\n default: 0\n },\n bearing: {\n type: Number,\n default: 0\n },\n pitch: {\n type: Number,\n default: 0\n },\n bounds: {\n type: [LngLatBounds, Array],\n default: void 0\n },\n fitBoundsOptions: {\n type: Object,\n default: null\n },\n renderWorldCopies: {\n type: Boolean,\n default: true\n },\n maxTileCacheSize: {\n type: Number,\n default: null\n },\n localIdeographFontFamily: {\n type: String,\n default: \"sans-serif\"\n },\n transformRequest: {\n type: Function,\n default: null\n },\n collectResourceTiming: {\n type: Boolean,\n default: false\n },\n fadeDuration: {\n type: Number,\n default: 300\n },\n crossSourceCollisions: {\n type: Boolean,\n default: true\n },\n cooperativeGestures: {\n type: Boolean\n },\n language: {\n type: [String, Array],\n default: null\n },\n locale: {\n type: Object,\n default: null\n },\n localFontFamily: {\n type: [Boolean, String],\n default: false\n },\n minTileCacheSize: {\n type: Number,\n default: null\n },\n optimizeForTerrain: {\n type: Boolean,\n default: true\n },\n performanceMetricsCollection: {\n type: Boolean,\n default: true\n },\n projection: {\n type: [String, Object],\n default: \"mercator\"\n },\n testMode: {\n type: Boolean,\n default: false\n },\n touchPitch: {\n type: [Boolean, Object],\n default: true\n },\n useWebGL2: {\n type: Boolean,\n default: false\n },\n worldview: {\n type: String,\n default: null\n }\n};\nvar events3 = [\n \"boxzoomcancel\",\n \"boxzoomend\",\n \"boxzoomstart\",\n \"click\",\n \"contextmenu\",\n \"data\",\n \"dataloading\",\n \"dblclick\",\n \"drag\",\n \"dragend\",\n \"dragstart\",\n \"error\",\n \"idle\",\n \"load\",\n \"mousedown\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"move\",\n \"moveend\",\n \"movestart\",\n \"pitch\",\n \"pitchend\",\n \"pitchstart\",\n \"remove\",\n \"render\",\n \"resize\",\n \"rotate\",\n \"rotateend\",\n \"rotatestart\",\n \"sourcedata\",\n \"sourcedataloading\",\n \"styledata\",\n \"styledataloading\",\n \"styleimagemissing\",\n \"touchcancel\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\",\n \"webglcontextlost\",\n \"webglcontextrestored\",\n \"wheel\",\n \"zoom\",\n \"zoomend\",\n \"zoomstart\"\n];\nvar __default__ = {\n inheritAttrs: false\n};\nvar _sfc_main5 = Object.assign(__default__, {\n __name: \"MapboxMap\",\n props: propsConfig4,\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const map = ref4();\n provide(\"mapbox-map\", map);\n const root = ref4();\n const isLoaded = ref4(false);\n const options = computed5(() => {\n const { accessToken, mapStyle: style, ...options2 } = props;\n if (!options2.container && root.value) {\n options2.container = root.value;\n }\n return { style, ...options2 };\n });\n useEventsBinding(emit, map, events3);\n usePropsBinding(props, map, propsConfig4);\n onMounted5(() => {\n mapboxgl3.accessToken = props.accessToken;\n map.value = new mapboxgl3.Map(options.value);\n map.value.on(\"load\", () => {\n isLoaded.value = true;\n });\n emit(\"mb-created\", map.value);\n const resizeObserver = new ResizeObserver(() => {\n map.value.resize();\n });\n resizeObserver.observe(options.value.container);\n onUnmounted4(() => {\n resizeObserver.disconnect();\n map.value.remove();\n });\n });\n __expose({ map });\n return (_ctx, _cache) => {\n return _openBlock5(), _createElementBlock5(\n _Fragment,\n null,\n [\n _createElementVNode(\n \"div\",\n _mergeProps({\n ref_key: \"root\",\n ref: root\n }, _ctx.$attrs),\n null,\n 16\n /* FULL_PROPS */\n ),\n isLoaded.value ? (_openBlock5(), _createElementBlock5(\"div\", _hoisted_14, [\n _renderSlot(_ctx.$slots, \"default\")\n ])) : (_openBlock5(), _createElementBlock5(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"loader\")\n ]))\n ],\n 64\n /* STABLE_FRAGMENT */\n );\n };\n }\n});\nvar MapboxMap_default = /* @__PURE__ */ export_helper_default(_sfc_main5, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxMap.vue\"]]);\n\n// packages/vue-mapbox-gl/components/StoreLocator/VueScroller.vue\nimport { createCommentVNode as _createCommentVNode2, renderSlot as _renderSlot2, createElementVNode as _createElementVNode2, normalizeClass as _normalizeClass, openBlock as _openBlock6, createElementBlock as _createElementBlock6 } from \"vue\";\nimport { ref as ref5, unref as unref8, onUpdated, onMounted as onMounted6, onBeforeUnmount, nextTick as nextTick2 } from \"vue\";\n\n// node_modules/@studiometa/js-toolkit/utils/debounce.js\nfunction debounce(fn, delay = 300) {\n let timeout;\n return function debounced(...args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n}\n\n// packages/vue-mapbox-gl/components/StoreLocator/VueScroller.vue\nvar _hoisted_15 = { class: \"scroller__content\" };\nvar _sfc_main6 = {\n __name: \"VueScroller\",\n emits: [\"scroll-top\", \"scroll-bottom\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const scroller = ref5();\n const scrollTop = ref5(0);\n const scrollMax = ref5(Number.POSITIVE_INFINITY);\n function setVars() {\n if (!unref8(scroller)) {\n return;\n }\n const unrefScroller = unref8(scroller);\n scrollTop.value = unrefScroller.scrollTop;\n scrollMax.value = unrefScroller.scrollHeight - unrefScroller.clientHeight;\n if (scrollTop.value === 0) {\n emit(\"scroll-top\");\n }\n if (scrollTop.value === scrollMax.value) {\n emit(\"scroll-bottom\");\n }\n }\n const debouncedSetVars = debounce(setVars);\n onUpdated(() => {\n setVars();\n });\n onMounted6(async () => {\n unref8(scroller).addEventListener(\"scroll\", setVars, { passive: true });\n window.addEventListener(\"resized\", debouncedSetVars);\n await nextTick2();\n setVars();\n });\n onBeforeUnmount(() => {\n unref8(scroller).removeEventListener(\"scroll\", setVars);\n window.removeEventListener(\"resized\", debouncedSetVars);\n });\n return (_ctx, _cache) => {\n return _openBlock6(), _createElementBlock6(\n \"div\",\n {\n class: _normalizeClass([\"scroller\", {\n \"scroller--is-top\": scrollTop.value === 0,\n \"scroller--is-bottom\": scrollTop.value === scrollMax.value,\n \"scroller--has-no-scroll\": scrollTop.value === 0 && scrollMax.value === 0\n }])\n },\n [\n _createElementVNode2(\n \"div\",\n {\n ref_key: \"scroller\",\n ref: scroller,\n class: \"scroller__inner\"\n },\n [\n _createElementVNode2(\"div\", _hoisted_15, [\n _createCommentVNode2(\" @slot Use this slot to display the scroller content. \"),\n _renderSlot2(_ctx.$slots, \"default\")\n ])\n ],\n 512\n /* NEED_PATCH */\n )\n ],\n 2\n /* CLASS */\n );\n };\n }\n};\nvar VueScroller_default = /* @__PURE__ */ export_helper_default(_sfc_main6, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/StoreLocator/VueScroller.vue\"]]);\n\n// packages/vue-mapbox-gl/components/StoreLocator/StoreLocator.vue\nvar _hoisted_16 = [\"onClick\"];\nvar _hoisted_22 = /* @__PURE__ */ _createElementVNode3(\n \"br\",\n null,\n null,\n -1\n /* HOISTED */\n);\nvar _sfc_main7 = {\n __name: \"StoreLocator\",\n props: {\n /**\n * A list of items to display.\n * The only required properties are `lat` and `lng` and `id`.\n * @type {Array<{ lat: number, lng: number, id: string } & Record>}\n */\n items: {\n type: Array,\n required: true\n },\n /**\n * The zoom level to use when zooming in on an item.\n * @type {number}\n */\n itemZoomLevel: {\n type: Number,\n default: 14\n },\n /**\n * A Mapbox access token.\n * @type {object}\n */\n accessToken: {\n type: String,\n default: \"no-token\"\n },\n /**\n * Props for the MapboxMap component.\n * @see https://vue-mapbox-gl.meta.fr/components/MapboxMap.html#props\n * @type {object}\n */\n mapboxMap: {\n type: Object,\n default: () => ({})\n },\n /**\n * Props fof the MapboxCluster component.\n * @see https://vue-mapbox-gl.meta.fr/components/MapboxCluster.html#props\n * @type {object}\n */\n mapboxCluster: {\n type: Object,\n default: () => ({})\n },\n /**\n * Props for the MapboxGeocoder component.\n * @see https://vue-mapbox-gl.meta.fr/components/MapboxGeocoder.html#props\n * @type {object}\n */\n mapboxGeocoder: {\n type: Object,\n default: () => ({})\n },\n /**\n * Configuration for each transition component.\n * @type {object}\n */\n transitions: {\n type: Object,\n default: () => ({\n loader: {\n map: {},\n search: {},\n list: {},\n default: {}\n },\n panel: {}\n })\n },\n /**\n * Define custom classes for each element of the component.\n * @type {object}\n */\n classes: {\n type: Object,\n default: () => {\n const root = \"store-locator\";\n const bem = (name, modifier = \"\") => `${root}__${name}${modifier ? `--${modifier}` : \"\"}`;\n return {\n root,\n region: {\n map: [bem(\"region\"), bem(\"region\", \"map\")],\n search: [bem(\"region\"), bem(\"region\", \"search\")],\n list: [bem(\"region\"), bem(\"region\", \"list\")],\n panel: [bem(\"region\"), bem(\"region\", \"panel\")]\n },\n map: bem(\"map\"),\n search: bem(\"search\"),\n list: bem(\"list\"),\n listItem: bem(\"list-item\"),\n panel: bem(\"panel\")\n };\n }\n },\n /**\n * Filter items callback function\n * @type {Function}\n */\n filterItemsCallback: {\n type: [Function, Boolean],\n default: false\n },\n /**\n * Disable the zoom when clicking on a Feature.\n */\n disableFeatureClickZoom: Boolean\n },\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const map = ref6();\n const isLoading = ref6(true);\n const mapIsMoving = ref6(false);\n const selectedItem = ref6(null);\n const filteredItems = ref6(props.items.map((item) => item));\n const listIsLoading = ref6(false);\n function itemToGeoJsonFeature({ lat, lng, ...properties }) {\n return {\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates: [lng, lat]\n },\n properties\n };\n }\n const geoJson = computed6(() => ({\n type: \"FeatureCollection\",\n features: props.items.map(itemToGeoJsonFeature)\n }));\n const filteredGeoJson = computed6(() => ({\n type: \"FeatureCollection\",\n features: unref9(filteredItems).map(itemToGeoJsonFeature)\n }));\n async function filterFeaturesInView() {\n listIsLoading.value = true;\n const mapBounds = unref9(map).getBounds();\n const center = unref9(map).getCenter();\n filteredItems.value = props.items.filter(({ lng, lat }) => mapBounds.contains([lng, lat])).sort((a, b) => {\n const distanceFromA = center.distanceTo(a);\n const distanceFromB = center.distanceTo(b);\n if (distanceFromA < distanceFromB) {\n return -1;\n }\n if (distanceFromA > distanceFromB) {\n return 1;\n }\n return 0;\n });\n if (props.filterItemsCallback && typeof props.filterItemsCallback === \"function\") {\n filteredItems.value = await props.filterItemsCallback(filteredItems.value, map.value);\n }\n await nextTick3();\n listIsLoading.value = false;\n }\n function onGeocoderResult({ result }) {\n if (result.bbox) {\n unref9(map).fitBounds(result.bbox);\n } else if (result.center) {\n unref9(map).flyTo({ center: result.center });\n }\n }\n function onGeocoderCreated(geocoder) {\n emit(\"geocoder-created\", geocoder);\n }\n async function onMapCreated(instance) {\n map.value = instance;\n emit(\"map-created\", instance);\n await nextTick3();\n filterFeaturesInView();\n }\n async function onMapLoad() {\n await nextTick3();\n isLoading.value = false;\n emit(\"map-load\", map);\n }\n async function onMapMovestart() {\n mapIsMoving.value = true;\n await nextTick3();\n listIsLoading.value = true;\n }\n function onMapMoveend() {\n mapIsMoving.value = false;\n filterFeaturesInView();\n }\n function onListItemClick(item) {\n selectedItem.value = item;\n emit(\"select-item\", item);\n const { lat, lng } = unref9(map).getCenter();\n if (Math.abs(lng - item.lng) > 1e-4 && Math.abs(lat - item.lat) > 1e-4) {\n unref9(map).flyTo({ center: [item.lng, item.lat], zoom: props.itemZoomLevel });\n }\n }\n function onClusterFeatureClick(feature, event) {\n const item = props.items.find(({ id }) => id === feature.properties.id);\n emit(\"cluster-feature-click\", feature, event);\n if (item) {\n emit(\"select-item\", item);\n selectedItem.value = item;\n if (props.disableFeatureClickZoom) {\n return;\n }\n unref9(map).flyTo({ center: feature.geometry.coordinates, zoom: props.itemZoomLevel });\n }\n }\n return (_ctx, _cache) => {\n return _openBlock7(), _createElementBlock7(\n \"div\",\n {\n class: _normalizeClass2(__props.classes.root || {})\n },\n [\n _createElementVNode3(\n \"div\",\n {\n class: _normalizeClass2((__props.classes.region || {}).map || {})\n },\n [\n isLoading.value ? (_openBlock7(), _createBlock(\n _Transition,\n _normalizeProps(_mergeProps2({ key: 0 }, (__props.transitions.loader || {}).map || {})),\n {\n default: _withCtx(() => [\n _renderSlot3(_ctx.$slots, \"map-loader\", {}, () => [\n _createVNode2(\n _Transition,\n _normalizeProps(_guardReactiveProps((__props.transitions.loader || {}).default || {})),\n {\n default: _withCtx(() => [\n _renderSlot3(_ctx.$slots, \"loader\", {}, () => [\n _createTextVNode(\"Loading...\")\n ])\n ]),\n _: 3\n /* FORWARDED */\n },\n 16\n /* FULL_PROPS */\n )\n ])\n ]),\n _: 3\n /* FORWARDED */\n },\n 16\n /* FULL_PROPS */\n )) : _createCommentVNode3(\"v-if\", true),\n _createCommentVNode3(\" @slot Use this slot to display information before the map. \"),\n _renderSlot3(_ctx.$slots, \"before-map\"),\n _createVNode2(MapboxMap_default, _mergeProps2({\n class: __props.classes.map || {}\n }, { ...__props.mapboxMap, accessToken: __props.accessToken }, {\n onMbCreated: onMapCreated,\n onMbMovestart: onMapMovestart,\n onMbMoveend: onMapMoveend,\n onMbLoad: onMapLoad\n }), {\n default: _withCtx(() => [\n _createVNode2(\n MapboxCluster_default,\n _mergeProps2({ ...__props.mapboxCluster, data: filteredGeoJson.value }, {\n onMbFeatureClick: onClusterFeatureClick,\n onMbFeatureMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.$emit(\"cluster-feature-mouseenter\", ...args)),\n onMbFeatureMouseleave: _cache[1] || (_cache[1] = (...args) => _ctx.$emit(\"cluster-feature-mouseleave\", ...args)),\n onMbClusterClick: _cache[2] || (_cache[2] = (...args) => _ctx.$emit(\"cluster-cluster-click\", ...args))\n }),\n null,\n 16\n /* FULL_PROPS */\n ),\n _createCommentVNode3(\"\\n @slot Use this slot to add components from @studiometa/vue-mapbox-gl to the map.\\n @binding {Object} map The map instance.\\n @binding {GeoJSON} geojson The GeoJSON used for the cluster.\\n @binding {GeoJSON} filteredGeoJson The filtered GeoJSON.\\n @binding {Array} items The list of items.\\n @binding {Array} filteredItems The filtered list of items.\\n @binding {Object} selectedItem The selected item.\\n \"),\n _renderSlot3(_ctx.$slots, \"map\", {\n map: map.value,\n geojson: geoJson.value,\n filteredGeojson: filteredGeoJson.value,\n items: __props.items,\n filteredItems: filteredItems.value,\n selectedItem: selectedItem.value\n })\n ]),\n _: 3\n /* FORWARDED */\n }, 16, [\"class\"]),\n _createCommentVNode3(\" @slot Use this slot to display information after the map. \"),\n _renderSlot3(_ctx.$slots, \"after-map\")\n ],\n 2\n /* CLASS */\n ),\n _createElementVNode3(\n \"div\",\n {\n class: _normalizeClass2((__props.classes.region || {}).search || {})\n },\n [\n isLoading.value ? (_openBlock7(), _createBlock(\n _Transition,\n _normalizeProps(_mergeProps2({ key: 0 }, (__props.transitions.loader || {}).search || {})),\n {\n default: _withCtx(() => [\n _renderSlot3(_ctx.$slots, \"search-loader\", {}, () => [\n _createVNode2(\n _Transition,\n _normalizeProps(_guardReactiveProps((__props.transitions.loader || {}).default || {})),\n {\n default: _withCtx(() => [\n _renderSlot3(_ctx.$slots, \"loader\", {}, () => [\n _createTextVNode(\"Loading...\")\n ])\n ]),\n _: 3\n /* FORWARDED */\n },\n 16\n /* FULL_PROPS */\n )\n ])\n ]),\n _: 3\n /* FORWARDED */\n },\n 16\n /* FULL_PROPS */\n )) : _createCommentVNode3(\"v-if\", true),\n _createCommentVNode3(\" @slot Use this slot to display information before the search. \"),\n _renderSlot3(_ctx.$slots, \"before-search\", {\n items: __props.items,\n filteredItems: filteredItems.value,\n selectedItem: selectedItem.value\n }),\n _createVNode2(MapboxGeocoder_default, _mergeProps2({\n class: __props.classes.search || {}\n }, { ...__props.mapboxGeocoder, accessToken: __props.accessToken }, {\n onMbResult: onGeocoderResult,\n onMbCreated: onGeocoderCreated\n }), null, 16, [\"class\"]),\n _createCommentVNode3(\" @slot Use this slot to display information after the search. \"),\n _renderSlot3(_ctx.$slots, \"after-search\", {\n items: __props.items,\n filteredItems: filteredItems.value,\n selectedItem: selectedItem.value\n })\n ],\n 2\n /* CLASS */\n ),\n _createElementVNode3(\n \"div\",\n {\n class: _normalizeClass2((__props.classes.region || {}).list || {})\n },\n [\n isLoading.value || listIsLoading.value ? (_openBlock7(), _createBlock(\n _Transition,\n _normalizeProps(_mergeProps2({ key: 0 }, (__props.transitions.loader || {}).list || {})),\n {\n default: _withCtx(() => [\n _renderSlot3(_ctx.$slots, \"list-loader\", {}, () => [\n _createVNode2(\n _Transition,\n _normalizeProps(_guardReactiveProps((__props.transitions.loader || {}).default || {})),\n {\n default: _withCtx(() => [\n _renderSlot3(_ctx.$slots, \"loader\", {}, () => [\n _createTextVNode(\"Loading...\")\n ])\n ]),\n _: 3\n /* FORWARDED */\n },\n 16\n /* FULL_PROPS */\n )\n ])\n ]),\n _: 3\n /* FORWARDED */\n },\n 16\n /* FULL_PROPS */\n )) : (_openBlock7(), _createElementBlock7(\n _Fragment2,\n { key: 1 },\n [\n _createCommentVNode3(\"\\n @slot Use this slot to display information before the list.\\n @binding {Array} items The full list of items.\\n @binding {Array} filteredItems The filtered list of items.\\n \"),\n _renderSlot3(_ctx.$slots, \"before-list\", {\n items: __props.items,\n filteredItems: filteredItems.value,\n selectedItem: selectedItem.value\n }, () => [\n _createElementVNode3(\n \"p\",\n null,\n \"Result(s): \" + _toDisplayString(filteredItems.value.length.toFixed(0)),\n 1\n /* TEXT */\n )\n ]),\n filteredItems.value.length > 0 ? (_openBlock7(), _createBlock(VueScroller_default, { key: 0 }, {\n default: _withCtx(() => [\n _createElementVNode3(\n \"ul\",\n {\n class: _normalizeClass2(__props.classes.list || {})\n },\n [\n (_openBlock7(true), _createElementBlock7(\n _Fragment2,\n null,\n _renderList(filteredItems.value, (item, index2) => {\n return _openBlock7(), _createElementBlock7(\"li\", {\n key: item.id,\n class: _normalizeClass2(__props.classes.listItem || {}),\n onClick: ($event) => onListItemClick(item)\n }, [\n _createCommentVNode3(\"\\n @slot Use this slot to customize the display of the list items.\\n @binding {Object} item An item.\\n @binding {Object} selected-item The currently selected item.\\n \"),\n _renderSlot3(_ctx.$slots, \"list-item\", {\n item,\n index: index2,\n selectedItem: selectedItem.value\n }, () => [\n _createTextVNode(\n \" Lat: \" + _toDisplayString(item.lat) + \" \",\n 1\n /* TEXT */\n ),\n _hoisted_22,\n _createTextVNode(\n \" Lng: \" + _toDisplayString(item.lng),\n 1\n /* TEXT */\n )\n ])\n ], 10, _hoisted_16);\n }),\n 128\n /* KEYED_FRAGMENT */\n ))\n ],\n 2\n /* CLASS */\n )\n ]),\n _: 3\n /* FORWARDED */\n })) : _createCommentVNode3(\"v-if\", true),\n _createCommentVNode3(\"\\n @slot Use this slot to display information after the list.\\n @binding {Array} items The full list of items.\\n @binding {Array} filteredItems The filtered list of items.\\n \"),\n _renderSlot3(_ctx.$slots, \"after-list\", {\n items: __props.items,\n filteredItems: filteredItems.value,\n selectedItem: selectedItem.value,\n filterFeaturesInView\n })\n ],\n 64\n /* STABLE_FRAGMENT */\n ))\n ],\n 2\n /* CLASS */\n ),\n _createElementVNode3(\n \"div\",\n {\n class: _normalizeClass2((__props.classes.region || {}).panel || {})\n },\n [\n _createVNode2(\n _Transition,\n _normalizeProps(_guardReactiveProps(__props.transitions.panel || {})),\n {\n default: _withCtx(() => [\n selectedItem.value ? (_openBlock7(), _createElementBlock7(\n \"div\",\n {\n key: selectedItem.value.id,\n class: _normalizeClass2(__props.classes.panel || {})\n },\n [\n _createCommentVNode3(\"\\n @slot Use this slot to display content inside the panel.\\n @binding {Object} item The selected item.\\n @binging {Function} close A function to close the panel\\n \"),\n _renderSlot3(_ctx.$slots, \"panel\", {\n item: selectedItem.value,\n close: () => selectedItem.value = null\n }, () => [\n _createElementVNode3(\n \"div\",\n null,\n _toDisplayString(selectedItem.value),\n 1\n /* TEXT */\n )\n ])\n ],\n 2\n /* CLASS */\n )) : _createCommentVNode3(\"v-if\", true)\n ]),\n _: 3\n /* FORWARDED */\n },\n 16\n /* FULL_PROPS */\n )\n ],\n 2\n /* CLASS */\n )\n ],\n 2\n /* CLASS */\n );\n };\n }\n};\nvar StoreLocator_default = /* @__PURE__ */ export_helper_default(_sfc_main7, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/StoreLocator/StoreLocator.vue\"]]);\n\n// packages/vue-mapbox-gl/components/MapboxGeolocateControl.vue\nimport { openBlock as _openBlock8, createElementBlock as _createElementBlock8 } from \"vue\";\nimport mapboxgl4 from \"mapbox-gl\";\nif (!mapboxgl4) {\n throw new Error(\"mapboxgl is not installed.\");\n}\nvar { GeolocateControl } = mapboxgl4;\nvar propsConfig5 = {\n positionOptions: {\n type: Object,\n default: () => ({ enableHighAccuracy: false, timeout: 6e3 })\n },\n fitBoundsOptions: {\n type: Object,\n default: () => ({ maxZoom: 15 })\n },\n trackUserLocation: {\n type: Boolean,\n default: false\n },\n showAccuracyCircle: {\n type: Boolean,\n default: true\n },\n showUserHeading: {\n type: Boolean,\n default: true\n },\n showUserLocation: {\n type: Boolean,\n default: true\n },\n position: {\n type: String,\n default: \"top-right\",\n bind: false\n }\n};\nvar events4 = [\n \"trackuserlocationend\",\n \"error\",\n \"geolocate\",\n \"outofmaxbounds\",\n \"trackuserlocationstart\"\n];\nvar _sfc_main8 = {\n __name: \"MapboxGeolocateControl\",\n props: propsConfig5,\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const { control } = useControl(GeolocateControl, { propsConfig: propsConfig5, events: events4, props, emit });\n __expose({ control });\n return (_ctx, _cache) => {\n return _openBlock8(), _createElementBlock8(\"div\");\n };\n }\n};\nvar MapboxGeolocateControl_default = /* @__PURE__ */ export_helper_default(_sfc_main8, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxGeolocateControl.vue\"]]);\n\n// packages/vue-mapbox-gl/components/MapboxImage.vue\nimport { renderSlot as _renderSlot4, createCommentVNode as _createCommentVNode4, openBlock as _openBlock9, createElementBlock as _createElementBlock9 } from \"vue\";\nimport { ref as ref7, unref as unref10, watch as watch6, onMounted as onMounted7, onUnmounted as onUnmounted5 } from \"vue\";\nvar _hoisted_17 = [\"id\"];\nvar propsConfig6 = {\n /**\n * The ID of the image\n * @see https://docs.mapbox.com/mapbox-gl-js/api/#map#addimage\n * @type {string}\n */\n id: {\n type: String,\n required: true\n },\n /**\n * The image as String, an HTMLImageElement, ImageData, or object with\n * width, height, and data properties with the same format as ImageData.\n * @see https://docs.mapbox.com/mapbox-gl-js/api/#map#addimage\n * @type {string | HTMLImageElement | ImageData | object}\n */\n src: {\n type: [\n String,\n typeof HTMLImageElement !== \"undefined\" && HTMLImageElement,\n typeof ImageData !== \"undefined\" && ImageData,\n Object\n ],\n required: true\n },\n /**\n * The options object for the image to add\n * @see https://docs.mapbox.com/mapbox-gl-js/api/#map#addimage\n * @type {object}\n */\n options: {\n type: Object,\n default: () => ({ pixelRatio: 1, sdf: false })\n }\n};\nvar _sfc_main9 = {\n __name: \"MapboxImage\",\n props: propsConfig6,\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const { map } = useMap();\n const isReady = ref7(false);\n async function loadImage(src) {\n return new Promise((resolve, reject) => {\n unref10(map).loadImage(src, (err, data) => {\n if (err) {\n return reject(err);\n }\n return resolve(data);\n });\n });\n }\n watch6(\n () => props.src,\n async (newValue) => {\n const image = typeof newValue !== \"string\" ? newValue : await loadImage(newValue);\n unref10(map).updateImage(props.id, image);\n },\n { deep: true }\n );\n onMounted7(async () => {\n const { id, src, options } = props;\n const image = typeof src !== \"string\" ? src : await loadImage(src);\n unref10(map).addImage(id, image, options);\n emit(\"mb-add\", { id, image, options });\n isReady.value = true;\n });\n onUnmounted5(() => {\n if (unref10(map) && unref10(map).hasImage(props.id)) {\n unref10(map).removeImage(props.id);\n }\n });\n return (_ctx, _cache) => {\n return _openBlock9(), _createElementBlock9(\"div\", { id: _ctx.id }, [\n isReady.value ? _renderSlot4(_ctx.$slots, \"default\", { key: 0 }) : _createCommentVNode4(\"v-if\", true)\n ], 8, _hoisted_17);\n };\n }\n};\nvar MapboxImage_default = /* @__PURE__ */ export_helper_default(_sfc_main9, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxImage.vue\"]]);\n\n// packages/vue-mapbox-gl/components/MapboxImages.vue\nimport { renderList as _renderList2, Fragment as _Fragment3, openBlock as _openBlock10, createElementBlock as _createElementBlock10, mergeProps as _mergeProps3, createBlock as _createBlock2, renderSlot as _renderSlot5, createCommentVNode as _createCommentVNode5 } from \"vue\";\nimport { ref as ref8 } from \"vue\";\nvar _sfc_main10 = {\n __name: \"MapboxImages\",\n props: {\n /**\n * A list of sources to add to the map\n * @see https://docs.mapbox.com/mapbox-gl-js/api/#map#addimage\n * @see ./MapboxImage.vue\n * @type {object}\n */\n sources: {\n type: Array,\n required: true\n }\n },\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const isReady = ref8(false);\n const addedImages = /* @__PURE__ */ new Map();\n function addHandler(image, index2) {\n if (!addedImages.has(image.id)) {\n addedImages.set(image.id, image);\n emit(\"mb-add\", image, index2, props.sources.length);\n }\n if (addedImages.size === props.sources.length) {\n isReady.value = true;\n emit(\"mb-ready\", addedImages.values());\n }\n }\n return (_ctx, _cache) => {\n return _openBlock10(), _createElementBlock10(\"div\", null, [\n (_openBlock10(true), _createElementBlock10(\n _Fragment3,\n null,\n _renderList2(__props.sources, (source, index2) => {\n return _openBlock10(), _createBlock2(MapboxImage_default, _mergeProps3({\n key: `mapbox-images-${source.id}`\n }, source, {\n onMbAdd: ($event) => addHandler($event, index2 + 1)\n }), null, 16, [\"onMbAdd\"]);\n }),\n 128\n /* KEYED_FRAGMENT */\n )),\n isReady.value ? _renderSlot5(_ctx.$slots, \"default\", { key: 0 }) : _createCommentVNode5(\"v-if\", true)\n ]);\n };\n }\n};\nvar MapboxImages_default = /* @__PURE__ */ export_helper_default(_sfc_main10, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxImages.vue\"]]);\n\n// packages/vue-mapbox-gl/components/MapboxMarker.vue\nimport { renderSlot as _renderSlot7, createElementVNode as _createElementVNode4, mergeProps as _mergeProps4, withCtx as _withCtx2, openBlock as _openBlock12, createBlock as _createBlock3, createCommentVNode as _createCommentVNode6, createElementBlock as _createElementBlock12 } from \"vue\";\nimport { computed as computed8, ref as ref10, onMounted as onMounted9, onUnmounted as onUnmounted7, useSlots } from \"vue\";\n\n// packages/vue-mapbox-gl/components/MapboxPopup.vue\nimport { renderSlot as _renderSlot6, openBlock as _openBlock11, createElementBlock as _createElementBlock11 } from \"vue\";\nimport { ref as ref9, computed as computed7, onMounted as onMounted8, onUnmounted as onUnmounted6 } from \"vue\";\nimport mapboxgl5 from \"mapbox-gl\";\nvar { Popup, Point, LngLat: LngLat2 } = mapboxgl5;\nvar propsConfig7 = {\n lngLat: {\n type: [LngLat2, Array, Object],\n required: true\n },\n closeButton: {\n type: Boolean,\n default: true\n },\n closeOnClick: {\n type: Boolean,\n default: true\n },\n closeOnMove: {\n type: Boolean,\n default: false\n },\n anchor: {\n type: String,\n default: null\n },\n offset: {\n type: [Number, Point, Array, Object],\n default: 0\n },\n className: {\n type: String,\n default: null\n },\n maxWidth: {\n type: String,\n default: \"240px\"\n },\n /**\n * Do not render the popup on the map.\n * @type {object}\n */\n renderless: {\n type: Boolean,\n default: false,\n bind: false\n }\n};\nvar events5 = [\"open\", \"close\"];\nvar _sfc_main11 = {\n __name: \"MapboxPopup\",\n props: propsConfig7,\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const popup = ref9();\n const root = ref9();\n const options = computed7(() => {\n const { lngLat, ...options2 } = props;\n return options2;\n });\n usePropsBinding(props, popup, propsConfig7);\n useEventsBinding(emit, popup, events5);\n onMounted8(() => {\n const { map } = useMap();\n popup.value = new Popup(options.value).setLngLat(props.lngLat).setDOMContent(root.value);\n if (!props.renderless) {\n popup.value.addTo(map.value);\n }\n emit(\"mb-open\", popup.value);\n });\n onUnmounted6(() => {\n if (popup.value) {\n popup.value.remove();\n }\n });\n __expose({ popup });\n return (_ctx, _cache) => {\n return _openBlock11(), _createElementBlock11(\n \"div\",\n {\n ref_key: \"root\",\n ref: root\n },\n [\n _renderSlot6(_ctx.$slots, \"default\")\n ],\n 512\n /* NEED_PATCH */\n );\n };\n }\n};\nvar MapboxPopup_default = /* @__PURE__ */ export_helper_default(_sfc_main11, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxPopup.vue\"]]);\n\n// packages/vue-mapbox-gl/components/MapboxMarker.vue\nimport mapboxgl6 from \"mapbox-gl\";\nvar { Marker, Point: Point2 } = mapboxgl6;\nvar propsConfig8 = {\n lngLat: {\n type: Array,\n required: true\n },\n popup: {\n type: [Object, Boolean],\n default: false,\n bind: false\n },\n element: {\n type: typeof HTMLElement !== \"undefined\" ? HTMLElement : Object,\n default: null\n },\n offset: {\n type: [Point2, Array],\n default: null\n },\n anchor: {\n type: String,\n default: \"center\"\n },\n color: {\n type: String,\n default: null\n },\n scale: {\n type: Number,\n default: 1\n },\n draggable: {\n type: Boolean,\n default: false\n },\n rotation: {\n type: Number,\n default: 0\n },\n pitchAlignment: {\n type: String,\n default: \"auto\"\n },\n rotationAlignment: {\n type: String,\n default: \"auto\"\n }\n};\nvar events6 = [\"dragstart\", \"drag\", \"dragend\"];\nvar _sfc_main12 = {\n __name: \"MapboxMarker\",\n props: propsConfig8,\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const slots = useSlots();\n const marker = ref10();\n const contentRef = ref10();\n const popupRef = ref10();\n const hasPopup = computed8(() => typeof slots.popup !== \"undefined\");\n const popupInstance = computed8(() => hasPopup.value ? popupRef.value.popup : null);\n const popupOptions = computed8(() => ({\n lngLat: props.lngLat,\n ...props.popup ? props.popup : {},\n renderless: true\n }));\n const options = computed8(() => {\n const { lngLat, popup, ...options2 } = props;\n if (slots.default) {\n options2.element = contentRef.value;\n }\n return options2;\n });\n usePropsBinding(props, marker, propsConfig8);\n useEventsBinding(emit, marker, events6);\n onMounted9(() => {\n const { map } = useMap();\n marker.value = new Marker(options.value).setLngLat(props.lngLat).addTo(map.value);\n if (hasPopup.value) {\n marker.value.setPopup(popupInstance.value);\n }\n });\n onUnmounted7(() => {\n if (marker.value) {\n marker.value.remove();\n }\n });\n return (_ctx, _cache) => {\n return _openBlock12(), _createElementBlock12(\"div\", null, [\n _createElementVNode4(\n \"div\",\n {\n ref_key: \"contentRef\",\n ref: contentRef\n },\n [\n _renderSlot7(_ctx.$slots, \"default\")\n ],\n 512\n /* NEED_PATCH */\n ),\n hasPopup.value ? (_openBlock12(), _createBlock3(\n MapboxPopup_default,\n _mergeProps4({\n key: 0,\n ref_key: \"popupRef\",\n ref: popupRef\n }, popupOptions.value),\n {\n default: _withCtx2(() => [\n _renderSlot7(_ctx.$slots, \"popup\")\n ]),\n _: 3\n /* FORWARDED */\n },\n 16\n /* FULL_PROPS */\n )) : _createCommentVNode6(\"v-if\", true)\n ]);\n };\n }\n};\nvar MapboxMarker_default = /* @__PURE__ */ export_helper_default(_sfc_main12, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxMarker.vue\"]]);\n\n// packages/vue-mapbox-gl/components/MapboxNavigationControl.vue\nimport { openBlock as _openBlock13, createElementBlock as _createElementBlock13 } from \"vue\";\nimport mapboxgl7 from \"mapbox-gl\";\nvar propsConfig9 = {\n showCompass: {\n type: Boolean,\n default: true\n },\n showZoom: {\n type: Boolean,\n default: true\n },\n visualizePitch: {\n type: Boolean,\n default: false\n },\n position: {\n type: String,\n default: \"top-right\",\n bind: false\n }\n};\nvar _sfc_main13 = {\n __name: \"MapboxNavigationControl\",\n props: propsConfig9,\n setup(__props, { expose: __expose }) {\n const { NavigationControl } = mapboxgl7;\n const props = __props;\n const { control } = useControl(NavigationControl, { props, propsConfig: propsConfig9 });\n __expose({ control });\n return (_ctx, _cache) => {\n return _openBlock13(), _createElementBlock13(\"div\");\n };\n }\n};\nvar MapboxNavigationControl_default = /* @__PURE__ */ export_helper_default(_sfc_main13, [[\"__file\", \"/home/runner/work/vue-mapbox-gl/vue-mapbox-gl/packages/vue-mapbox-gl/components/MapboxNavigationControl.vue\"]]);\nexport {\n MapboxCluster_default as MapboxCluster,\n MapboxGeocoder_default as MapboxGeocoder,\n MapboxGeolocateControl_default as MapboxGeolocateControl,\n MapboxImage_default as MapboxImage,\n MapboxImages_default as MapboxImages,\n MapboxLayer_default as MapboxLayer,\n MapboxMap_default as MapboxMap,\n MapboxMarker_default as MapboxMarker,\n MapboxNavigationControl_default as MapboxNavigationControl,\n MapboxPopup_default as MapboxPopup,\n MapboxSource_default as MapboxSource,\n StoreLocator_default as StoreLocator,\n VueScroller_default as VueScroller,\n useControl,\n useEventsBinding,\n useMap,\n usePropsBinding\n};\n//# sourceMappingURL=index.js.map\n","\r\n\r\n\r\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"VueLoading\", [\"vue\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueLoading\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"VueLoading\"] = factory(root[\"Vue\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__594__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 597:\n/***/ ((__unused_webpack_module, exports) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports[\"default\"] = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n\n\n/***/ }),\n\n/***/ 594:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__594__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n Component: () => (/* reexport */ Component),\n LoadingPlugin: () => (/* binding */ LoadingPlugin),\n \"default\": () => (/* binding */ src),\n useLoading: () => (/* reexport */ useLoading)\n});\n\n// EXTERNAL MODULE: external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"amd\":\"vue\",\"root\":\"Vue\"}\nvar external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_ = __webpack_require__(594);\n;// CONCATENATED MODULE: ./src/js/helpers.js\n\nfunction removeElement(el) {\n if (typeof el.remove !== 'undefined') {\n el.remove();\n } else {\n el.parentNode?.removeChild(el);\n }\n}\n\n// Taken from https://github.com/moyoujun/vue3-loading-overlay/blob/master/src/index.ts\nfunction createComponent(component, props, parentContainer) {\n let slots = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const vNode = (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.h)(component, props, slots);\n const container = document.createElement('div');\n container.classList.add('vld-container');\n parentContainer.appendChild(container);\n (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.render)(vNode, container);\n return vNode.component;\n}\nfunction hasWindow() {\n return typeof window !== 'undefined';\n}\nconst MayBeHTMLElement = hasWindow() ? window.HTMLElement : Object;\n;// CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.25.2_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/js/Component.vue?vue&type=template&id=7c0ffb33\n\nconst _hoisted_1 = [\"aria-busy\"];\nconst _hoisted_2 = {\n class: \"vl-icon\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createBlock)(external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.Transition, {\n name: _ctx.transition\n }, {\n default: (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.withDirectives)((0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createElementVNode)(\"div\", {\n tabindex: \"0\",\n class: (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.normalizeClass)([\"vl-overlay vl-active\", {\n 'vl-full-page': _ctx.isFullPage\n }]),\n \"aria-busy\": _ctx.isActive,\n \"aria-label\": \"Loading\",\n style: (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.normalizeStyle)({\n zIndex: _ctx.zIndex\n })\n }, [(0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createElementVNode)(\"div\", {\n class: \"vl-background\",\n onClick: _cache[0] || (_cache[0] = (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.withModifiers)(function () {\n return _ctx.cancel && _ctx.cancel(...arguments);\n }, [\"prevent\"])),\n style: (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.normalizeStyle)(_ctx.bgStyle)\n }, null, 4), (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createElementVNode)(\"div\", _hoisted_2, [(0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.renderSlot)(_ctx.$slots, \"before\"), (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.renderSlot)(_ctx.$slots, \"default\", {}, () => [((0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createBlock)((0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.resolveDynamicComponent)(_ctx.loader), {\n color: _ctx.color,\n width: _ctx.width,\n height: _ctx.height\n }, null, 8, [\"color\", \"width\", \"height\"]))]), (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.renderSlot)(_ctx.$slots, \"after\")])], 14, _hoisted_1), [[external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.vShow, _ctx.isActive]])]),\n _: 3\n }, 8, [\"name\"]);\n}\n;// CONCATENATED MODULE: ./src/js/Component.vue?vue&type=template&id=7c0ffb33\n\n;// CONCATENATED MODULE: ./src/js/trapFocusMixin.js\n/* harmony default export */ const trapFocusMixin = ({\n mounted() {\n if (this.enforceFocus) {\n document.addEventListener('focusin', this.focusIn);\n }\n },\n methods: {\n focusIn(event) {\n // Ignore when loading is not active\n if (!this.isActive) return;\n if (\n // Event target is the loading div element itself\n event.target === this.$el ||\n // Event target is inside the loading div\n this.$el.contains(event.target)) return;\n\n // Use container as parent when available otherwise use parent element when isFullPage is false\n let parent = this.container ? this.container : this.isFullPage ? null : this.$el.parentElement;\n if (\n // Always prevent when loading is full screen\n this.isFullPage ||\n // When a parent exist means loader is running inside a container\n // When loading is NOT full screen and event target is inside the given container\n parent && parent.contains(event.target)) {\n event.preventDefault();\n this.$el.focus();\n }\n }\n },\n beforeUnmount() {\n document.removeEventListener('focusin', this.focusIn);\n }\n});\n;// CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.25.2_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/loaders/spinner.vue?vue&type=template&id=1ed0a811\n\nconst spinnervue_type_template_id_1ed0a811_hoisted_1 = [\"width\", \"height\", \"stroke\"];\nfunction spinnervue_type_template_id_1ed0a811_render(_ctx, _cache, $props, $setup, $data, $options) {\n return (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createElementBlock)(\"svg\", {\n viewBox: \"0 0 38 38\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: _ctx.width,\n height: _ctx.height,\n stroke: _ctx.color\n }, _cache[0] || (_cache[0] = [(0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createStaticVNode)(\"\", 1)]), 8, spinnervue_type_template_id_1ed0a811_hoisted_1);\n}\n;// CONCATENATED MODULE: ./src/loaders/spinner.vue?vue&type=template&id=1ed0a811\n\n;// CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.25.2_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/loaders/spinner.vue?vue&type=script&lang=js\n\n/* harmony default export */ const spinnervue_type_script_lang_js = ((0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.defineComponent)({\n name: 'spinner',\n props: {\n color: {\n type: String,\n default: '#000'\n },\n height: {\n type: Number,\n default: 64\n },\n width: {\n type: Number,\n default: 64\n }\n }\n}));\n;// CONCATENATED MODULE: ./src/loaders/spinner.vue?vue&type=script&lang=js\n \n// EXTERNAL MODULE: ./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/exportHelper.js\nvar exportHelper = __webpack_require__(597);\n;// CONCATENATED MODULE: ./src/loaders/spinner.vue\n\n\n\n\n;\nconst __exports__ = /*#__PURE__*/(0,exportHelper[\"default\"])(spinnervue_type_script_lang_js, [['render',spinnervue_type_template_id_1ed0a811_render]])\n\n/* harmony default export */ const spinner = (__exports__);\n;// CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.25.2_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/loaders/dots.vue?vue&type=template&id=6ecfb4ba\n\nconst dotsvue_type_template_id_6ecfb4ba_hoisted_1 = [\"fill\", \"width\", \"height\"];\nfunction dotsvue_type_template_id_6ecfb4ba_render(_ctx, _cache, $props, $setup, $data, $options) {\n return (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createElementBlock)(\"svg\", {\n viewBox: \"0 0 120 30\",\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: _ctx.color,\n width: _ctx.width,\n height: _ctx.height\n }, _cache[0] || (_cache[0] = [(0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createStaticVNode)(\"\", 3)]), 8, dotsvue_type_template_id_6ecfb4ba_hoisted_1);\n}\n;// CONCATENATED MODULE: ./src/loaders/dots.vue?vue&type=template&id=6ecfb4ba\n\n;// CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.25.2_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/loaders/dots.vue?vue&type=script&lang=js\n\n/* harmony default export */ const dotsvue_type_script_lang_js = ((0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.defineComponent)({\n name: 'dots',\n props: {\n color: {\n type: String,\n default: '#000'\n },\n height: {\n type: Number,\n default: 240\n },\n width: {\n type: Number,\n default: 60\n }\n }\n}));\n;// CONCATENATED MODULE: ./src/loaders/dots.vue?vue&type=script&lang=js\n \n;// CONCATENATED MODULE: ./src/loaders/dots.vue\n\n\n\n\n;\nconst dots_exports_ = /*#__PURE__*/(0,exportHelper[\"default\"])(dotsvue_type_script_lang_js, [['render',dotsvue_type_template_id_6ecfb4ba_render]])\n\n/* harmony default export */ const dots = (dots_exports_);\n;// CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.25.2_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/loaders/bars.vue?vue&type=template&id=f81ac1c0\n\nconst barsvue_type_template_id_f81ac1c0_hoisted_1 = [\"height\", \"width\", \"fill\"];\nfunction barsvue_type_template_id_f81ac1c0_render(_ctx, _cache, $props, $setup, $data, $options) {\n return (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createElementBlock)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 30 30\",\n height: _ctx.height,\n width: _ctx.width,\n fill: _ctx.color\n }, _cache[0] || (_cache[0] = [(0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createStaticVNode)(\"\", 3)]), 8, barsvue_type_template_id_f81ac1c0_hoisted_1);\n}\n;// CONCATENATED MODULE: ./src/loaders/bars.vue?vue&type=template&id=f81ac1c0\n\n;// CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.25.2_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/loaders/bars.vue?vue&type=script&lang=js\n\n/* harmony default export */ const barsvue_type_script_lang_js = ((0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.defineComponent)({\n name: 'bars',\n props: {\n color: {\n type: String,\n default: '#000'\n },\n height: {\n type: Number,\n default: 40\n },\n width: {\n type: Number,\n default: 40\n }\n }\n}));\n;// CONCATENATED MODULE: ./src/loaders/bars.vue?vue&type=script&lang=js\n \n;// CONCATENATED MODULE: ./src/loaders/bars.vue\n\n\n\n\n;\nconst bars_exports_ = /*#__PURE__*/(0,exportHelper[\"default\"])(barsvue_type_script_lang_js, [['render',barsvue_type_template_id_f81ac1c0_render]])\n\n/* harmony default export */ const bars = (bars_exports_);\n;// CONCATENATED MODULE: ./src/loaders/index.js\n\n\n\n/* harmony default export */ const loaders = ({\n Spinner: spinner,\n Dots: dots,\n Bars: bars\n});\n;// CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@9.1.3_@babel+core@7.25.2_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.1_vue@3.5.1_webpack@5.94.0_webpack-cli@5.1.4_/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/js/Component.vue?vue&type=script&lang=js\n\n\n\n\n/* harmony default export */ const Componentvue_type_script_lang_js = ((0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.defineComponent)({\n name: 'VueLoading',\n mixins: [trapFocusMixin],\n props: {\n active: Boolean,\n programmatic: Boolean,\n container: [Object, Function, MayBeHTMLElement],\n isFullPage: {\n type: Boolean,\n default: true\n },\n enforceFocus: {\n type: Boolean,\n default: true\n },\n lockScroll: Boolean,\n transition: {\n type: String,\n default: 'fade'\n },\n /**\n * Allow user to hide the loader\n */\n canCancel: Boolean,\n /**\n * Do something on cancel\n */\n onCancel: {\n type: Function,\n default: () => {}\n },\n color: String,\n backgroundColor: String,\n opacity: Number,\n width: Number,\n height: Number,\n zIndex: Number,\n loader: {\n type: String,\n default: 'spinner'\n }\n },\n components: loaders,\n emits: ['hide', 'update:active'],\n data() {\n return {\n // Don't mutate the prop\n isActive: this.active\n };\n },\n mounted() {\n document.addEventListener('keyup', this.keyPress);\n },\n methods: {\n /**\n * Proxy to hide() method.\n * Gets called by ESC button or when click outside\n */\n cancel() {\n if (!this.canCancel || !this.isActive) return;\n this.hide();\n this.onCancel.apply(null, arguments);\n },\n /**\n * Hide and destroy component if it's programmatic.\n */\n hide() {\n this.$emit('hide');\n this.$emit('update:active', false);\n if (this.programmatic) {\n this.isActive = false;\n\n // Timeout for the animation complete before destroying\n setTimeout(() => {\n const parent = this.$el.parentElement;\n // unmount the component\n (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.render)(null, parent);\n removeElement(parent);\n }, 150);\n }\n },\n disableScroll() {\n if (this.isFullPage && this.lockScroll) {\n document.body.classList.add('vl-shown');\n }\n },\n enableScroll() {\n if (this.isFullPage && this.lockScroll) {\n document.body.classList.remove('vl-shown');\n }\n },\n /**\n * Key press event to hide on ESC.\n */\n keyPress(event) {\n // todo keyCode is deprecated\n if (event.keyCode === 27) this.cancel();\n }\n },\n watch: {\n active(value) {\n this.isActive = value;\n },\n isActive: {\n handler(value) {\n if (value) {\n this.disableScroll();\n } else {\n this.enableScroll();\n }\n },\n immediate: true\n }\n },\n computed: {\n bgStyle() {\n return {\n background: this.backgroundColor,\n opacity: this.opacity\n };\n }\n },\n beforeUnmount() {\n document.removeEventListener('keyup', this.keyPress);\n }\n}));\n;// CONCATENATED MODULE: ./src/js/Component.vue?vue&type=script&lang=js\n \n;// CONCATENATED MODULE: ./src/js/Component.vue\n\n\n\n\n;\nconst Component_exports_ = /*#__PURE__*/(0,exportHelper[\"default\"])(Componentvue_type_script_lang_js, [['render',render]])\n\n/* harmony default export */ const Component = (Component_exports_);\n;// CONCATENATED MODULE: ./src/js/api.js\n\n\nfunction useLoading() {\n let globalProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let globalSlots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return {\n show() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : globalProps;\n let slots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalSlots;\n const forceProps = {\n programmatic: true,\n lockScroll: true,\n isFullPage: false,\n active: true\n };\n const propsData = {\n ...globalProps,\n ...props,\n ...forceProps\n };\n let container = propsData.container;\n if (!propsData.container) {\n container = document.body;\n propsData.isFullPage = true;\n }\n const mergedSlots = {\n ...globalSlots,\n ...slots\n };\n const instance = createComponent(Component, propsData, container, mergedSlots);\n return {\n hide: instance.ctx.hide\n };\n }\n };\n}\n;// CONCATENATED MODULE: ./src/index.js\n\n\n\nconst LoadingPlugin = function (app) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let slots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const instance = useLoading(props, slots);\n app.config.globalProperties.$loading = instance;\n app.provide('$loading', instance);\n};\n/* harmony default export */ const src = (Component);\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","\r\n\r\n","(function(){\"use strict\";var o;try{if(typeof document<\"u\"){var e=document.createElement(\"style\");e.nonce=(o=document.head.querySelector(\"meta[property=csp-nonce]\"))==null?void 0:o.content,e.appendChild(document.createTextNode(\".vue-notification-group{display:block;position:fixed;z-index:5000}.vue-notification-wrapper{display:block;overflow:hidden;width:100%;margin:0;padding:0}.notification-title{font-weight:600}.vue-notification-template{display:block;box-sizing:border-box;background:#fff;text-align:left}.vue-notification{display:block;box-sizing:border-box;text-align:left;font-size:12px;padding:10px;margin:0 5px 5px;color:#fff;background:#44a4fc;border-left:5px solid #187FE7}.vue-notification.warn{background:#ffb648;border-left-color:#f48a06}.vue-notification.error{background:#e54d42;border-left-color:#b82e24}.vue-notification.success{background:#68cd86;border-left-color:#42a85f}.vn-fade-enter-active,.vn-fade-leave-active,.vn-fade-move{transition:all .5s}.vn-fade-enter-from,.vn-fade-leave-to{opacity:0}\")),document.head.appendChild(e)}}catch(n){console.error(\"vite-plugin-css-injected-by-js\",n)}})();\nimport { defineComponent as Z, ref as M, computed as y, onMounted as tt, createVNode as l, TransitionGroup as et, mergeProps as nt, Fragment as k, isVNode as it } from \"vue\";\nconst j = /* @__PURE__ */ new Map();\nclass ot {\n constructor(i, o, a) {\n this.remaining = o, this.callback = i, this.notifyItem = a, this.resume();\n }\n pause() {\n clearTimeout(this.notifyItem.timer), this.remaining -= Date.now() - this.start;\n }\n resume() {\n this.start = Date.now(), clearTimeout(this.notifyItem.timer), this.notifyItem.timer = setTimeout(this.callback, this.remaining);\n }\n}\nfunction at(t) {\n return { all: t = t || /* @__PURE__ */ new Map(), on: function(i, o) {\n var a = t.get(i);\n a ? a.push(o) : t.set(i, [o]);\n }, off: function(i, o) {\n var a = t.get(i);\n a && (o ? a.splice(a.indexOf(o) >>> 0, 1) : t.set(i, []));\n }, emit: function(i, o) {\n var a = t.get(i);\n a && a.slice().map(function(r) {\n r(o);\n }), (a = t.get(\"*\")) && a.slice().map(function(r) {\n r(i, o);\n });\n } };\n}\nconst h = at(), b = \"[-+]?[0-9]*.?[0-9]+\", H = [\n {\n name: \"px\",\n regexp: new RegExp(`^${b}px$`)\n },\n {\n name: \"%\",\n regexp: new RegExp(`^${b}%$`)\n },\n /**\n * Fallback option\n * If no suffix specified, assigning \"px\"\n */\n {\n name: \"px\",\n regexp: new RegExp(`^${b}$`)\n }\n], st = (t) => {\n if (t === \"auto\")\n return {\n type: t,\n value: 0\n };\n for (let i = 0; i < H.length; i++) {\n const o = H[i];\n if (o.regexp.test(t))\n return {\n type: o.name,\n value: parseFloat(t)\n };\n }\n return {\n type: \"\",\n value: t\n };\n}, rt = (t) => {\n switch (typeof t) {\n case \"number\":\n return { type: \"px\", value: t };\n case \"string\":\n return st(t);\n default:\n return { type: \"\", value: t };\n }\n}, R = {\n x: /* @__PURE__ */ new Set([\"left\", \"center\", \"right\"]),\n y: /* @__PURE__ */ new Set([\"top\", \"bottom\"])\n}, lt = /* @__PURE__ */ ((t) => () => t++)(0), ct = (t) => typeof t != \"string\" ? [] : t.split(/\\s+/gi).filter(Boolean), ut = (t) => {\n typeof t == \"string\" && (t = ct(t));\n let i = null, o = null;\n return t.forEach((a) => {\n R.y.has(a) && (o = a), R.x.has(a) && (i = a);\n }), { x: i, y: o };\n}, T = {\n position: [\"top\", \"right\"],\n cssAnimation: \"vn-fade\",\n velocityAnimation: {\n enter: (t) => ({\n height: [t.clientHeight, 0],\n opacity: [1, 0]\n }),\n leave: {\n height: 0,\n opacity: [0, 1]\n }\n }\n};\nfunction ft(t) {\n return typeof t == \"function\" || Object.prototype.toString.call(t) === \"[object Object]\" && !it(t);\n}\nconst g = {\n IDLE: 0,\n DESTROYED: 2\n}, dt = /* @__PURE__ */ Z({\n // eslint-disable-next-line vue/multi-word-component-names\n name: \"notifications\",\n props: {\n group: {\n type: String,\n default: \"\"\n },\n /** \n * Width of notification holder, can be `%`, `px` string or number.\n * @example '100%', '200px', 200 \n * */\n width: {\n type: [Number, String],\n default: 300\n },\n reverse: {\n type: Boolean,\n default: !1\n },\n position: {\n type: [String, Array],\n default: () => T.position\n },\n classes: {\n type: [String, Array],\n default: \"vue-notification\"\n },\n animationType: {\n type: String,\n default: \"css\",\n validator(t) {\n return t === \"css\" || t === \"velocity\";\n }\n },\n animation: {\n type: Object,\n default() {\n return T.velocityAnimation;\n }\n },\n animationName: {\n type: String,\n default: T.cssAnimation\n },\n speed: {\n type: Number,\n default: 300\n },\n /** Time (in ms) to keep the notification on screen (if **negative** - notification will stay **forever** or until clicked) */\n duration: {\n type: Number,\n default: 3e3\n },\n delay: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 1 / 0\n },\n ignoreDuplicates: {\n type: Boolean,\n default: !1\n },\n closeOnClick: {\n type: Boolean,\n default: !0\n },\n pauseOnHover: {\n type: Boolean,\n default: !1\n },\n /** Use [v-html](https://vuejs.org/api/built-in-directives.html#v-html) to set `title` and `text` */\n dangerouslySetInnerHtml: {\n type: Boolean,\n default: !1\n }\n },\n emits: {\n /* eslint-disable @typescript-eslint/no-unused-vars */\n click: (t) => !0,\n destroy: (t) => !0,\n start: (t) => !0\n /* eslint-enable @typescript-eslint/no-unused-vars */\n },\n slots: Object,\n setup: (t, {\n emit: i,\n slots: o,\n expose: a\n }) => {\n const r = M([]), x = M(null), D = j.get(\"velocity\"), v = y(() => t.animationType === \"velocity\"), c = y(() => r.value.filter((e) => e.state !== g.DESTROYED)), S = y(() => rt(t.width)), N = y(() => {\n const {\n x: e,\n y: n\n } = ut(t.position), s = S.value.value, u = S.value.type, p = {\n width: s + u\n };\n return n && (p[n] = \"0px\"), e && (e === \"center\" ? p.left = `calc(50% - ${+s / 2}${u})` : p[e] = \"0px\"), p;\n }), B = y(() => v.value ? {\n onEnter: q,\n onLeave: z,\n onAfterLeave: w\n } : {}), C = (e) => {\n i(\"click\", e), t.closeOnClick && d(e);\n }, L = () => {\n var e;\n t.pauseOnHover && ((e = x.value) == null || e.pause());\n }, P = () => {\n var e;\n t.pauseOnHover && ((e = x.value) == null || e.resume());\n }, Y = (e = {}) => {\n if (e.group || (e.group = \"\"), e.data || (e.data = {}), t.group !== e.group)\n return;\n if (e.clean || e.clear) {\n W();\n return;\n }\n const n = typeof e.duration == \"number\" ? e.duration : t.duration, s = typeof e.speed == \"number\" ? e.speed : t.speed, u = typeof e.ignoreDuplicates == \"boolean\" ? e.ignoreDuplicates : t.ignoreDuplicates, {\n title: p,\n text: J,\n type: K,\n data: Q,\n id: U\n } = e, f = {\n id: U || lt(),\n title: p,\n text: J,\n type: K,\n state: g.IDLE,\n speed: s,\n length: n + 2 * s,\n data: Q,\n duplicates: 0\n };\n n >= 0 && (x.value = new ot(() => d(f), f.length, f));\n const I = \"bottom\" in N.value, X = t.reverse ? !I : I;\n let m = -1;\n const A = c.value.find(($) => $.title === e.title && $.text === e.text);\n if (u && A) {\n A.duplicates++;\n return;\n }\n X ? (r.value.push(f), i(\"start\", f), c.value.length > t.max && (m = 0)) : (r.value.unshift(f), i(\"start\", f), c.value.length > t.max && (m = c.value.length - 1)), m !== -1 && d(c.value[m]);\n }, V = (e) => {\n G(e);\n }, _ = (e) => [\"vue-notification-template\", t.classes, e.type || \"\"], F = (e) => v.value ? void 0 : {\n transition: `all ${e.speed}ms`\n }, d = (e) => {\n clearTimeout(e.timer), e.state = g.DESTROYED, w(), i(\"destroy\", e);\n }, G = (e) => {\n const n = r.value.find((s) => s.id === e);\n n && d(n);\n }, W = () => {\n c.value.forEach(d);\n }, O = (e, n) => {\n var u;\n const s = (u = t.animation) == null ? void 0 : u[e];\n return typeof s == \"function\" ? s(n) : s;\n }, q = (e, n) => {\n const s = O(\"enter\", e);\n D(e, s, {\n duration: t.speed,\n complete: n\n });\n }, z = (e, n) => {\n const s = O(\"leave\", e);\n D(e, s, {\n duration: t.speed,\n complete: n\n });\n };\n function w() {\n r.value = r.value.filter((e) => e.state !== g.DESTROYED);\n }\n return tt(() => {\n h.on(\"add\", Y), h.on(\"close\", V);\n }), () => {\n let e;\n return l(\"div\", {\n class: \"vue-notification-group\",\n style: N.value\n }, [l(et, nt(B.value, {\n tag: \"div\",\n css: !v.value,\n name: t.animationName\n }), ft(e = c.value.map((n) => l(\"div\", {\n key: n.id,\n class: \"vue-notification-wrapper\",\n style: F(n),\n \"data-id\": n.id,\n onMouseenter: L,\n onMouseleave: P\n }, [o.body ? o.body({\n item: n,\n class: [t.classes, n.type],\n close: () => d(n)\n }) : l(\"div\", {\n class: _(n),\n onClick: () => C(n)\n }, [t.dangerouslySetInnerHtml ? l(k, null, [n.title ? l(\"div\", {\n class: \"notification-title\",\n innerHTML: n.title\n }, null) : null, l(\"div\", {\n class: \"notification-content\",\n innerHTML: n.text\n }, null)]) : l(k, null, [n.title ? l(\"div\", {\n class: \"notification-title\"\n }, [n.title]) : null, l(\"div\", {\n class: \"notification-content\"\n }, [n.text])])])]))) ? e : {\n default: () => [e]\n })]);\n };\n }\n}), E = (t) => {\n typeof t == \"string\" && (t = { title: \"\", text: t }), typeof t == \"object\" && h.emit(\"add\", t);\n};\nE.close = (t) => {\n h.emit(\"close\", t);\n};\nconst gt = () => ({ notify: E }), pt = \"Notifications\";\nfunction yt(t, i = {}) {\n Object.entries(i).forEach((a) => j.set(...a));\n const o = i.name || \"notify\";\n t.config.globalProperties[\"$\" + o] = E, t.component(i.componentName || pt, dt);\n}\nconst ht = {\n install: yt\n};\nexport {\n dt as Notifications,\n ht as default,\n E as notify,\n gt as useNotification\n};\n","\r\n\r\n\r\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date) {\n const _date = toDate(date);\n let day = _date.getDay();\n\n if (day === 0) {\n day = 7;\n }\n\n return day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return _date.getTime() > _dateToCompare.getTime();\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return +_date < +_dateToCompare;\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam DateInputType - The input `Date` type derived from the passed argument.\n * @typeParam DateOutputType - The output `Date` type derived from the passed constructor.\n *\n * @param fromDate - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(fromDate, constructor) {\n const date =\n constructor instanceof Date\n ? constructFrom(constructor, 0)\n : new constructor(0);\n date.setFullYear(\n fromDate.getFullYear(),\n fromDate.getMonth(),\n fromDate.getDate(),\n );\n date.setHours(\n fromDate.getHours(),\n fromDate.getMinutes(),\n fromDate.getSeconds(),\n fromDate.getMilliseconds(),\n );\n return date;\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n","import { transpose } from \"../../transpose.mjs\";\nimport { constructFrom } from \"../../constructFrom.mjs\";\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nexport class Setter {\n subPriority = 0;\n\n validate(_utcDate, _options) {\n return true;\n }\n}\n\nexport class ValueSetter extends Setter {\n constructor(\n value,\n\n validateValue,\n\n setValue,\n\n priority,\n subPriority,\n ) {\n super();\n this.value = value;\n this.validateValue = validateValue;\n this.setValue = setValue;\n this.priority = priority;\n if (subPriority) {\n this.subPriority = subPriority;\n }\n }\n\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n}\n\nexport class DateToSystemTimezoneSetter extends Setter {\n priority = TIMEZONE_UNIT_PRIORITY;\n subPriority = -1;\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, transpose(date, Date));\n }\n}\n","import { ValueSetter } from \"./Setter.mjs\";\n\nexport class Parser {\n run(dateString, token, match, options) {\n const result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n\n return {\n setter: new ValueSetter(\n result.value,\n this.validate,\n this.set,\n this.priority,\n this.subPriority,\n ),\n rest: result.rest,\n };\n }\n\n validate(_utcDate, _value, _options) {\n return true;\n }\n}\n","import { Parser } from \"../Parser.mjs\";\n\nexport class EraParser extends Parser {\n priority = 140;\n\n parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return (\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n\n // A, B\n case \"GGGGG\":\n return match.era(dateString, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return (\n match.era(dateString, { width: \"wide\" }) ||\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n }\n }\n\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\n","export const numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/, // 0 to 9999, -0 to -9999\n};\n\nexport const timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/,\n};\n","import {\n millisecondsInHour,\n millisecondsInMinute,\n millisecondsInSecond,\n} from \"../../constants.mjs\";\nimport { numericPatterns } from \"./constants.mjs\";\n\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest,\n };\n}\n\nexport function parseNumericPattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseTimezonePattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1),\n };\n }\n\n const sign = matchResult[1] === \"+\" ? 1 : -1;\n const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value:\n sign *\n (hours * millisecondsInHour +\n minutes * millisecondsInMinute +\n seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\n\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case \"morning\":\n return 4;\n case \"evening\":\n return 17;\n case \"pm\":\n case \"noon\":\n case \"afternoon\":\n return 12;\n case \"am\":\n case \"midnight\":\n case \"night\":\n default:\n return 0;\n }\n}\n\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport class YearParser extends Parser {\n priority = 130;\n incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"yy\",\n });\n\n switch (token) {\n case \"y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { getWeekYear } from \"../../../getWeekYear.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"YY\",\n });\n\n switch (token) {\n case \"Y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"Yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value, options) {\n const currentYear = getWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate,\n );\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"R\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n const firstWeekOfYear = constructFrom(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek(firstWeekOfYear);\n }\n\n incompatibleTokens = [\n \"G\",\n \"y\",\n \"Y\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\n\nexport class ExtendedYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"u\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\n\nexport class QuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\n\nexport class StandAloneQuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class MonthParser extends Parser {\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"L\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"MM\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // J, F, ..., D\n case \"MMMMM\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class StandAloneMonthParser extends Parser {\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"LL\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // J, F, ..., D\n case \"LLLLL\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { getWeek } from \"./getWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n const _date = toDate(date);\n const diff = getWeek(_date, options) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setWeek;\n","import { setWeek } from \"../../../setWeek.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"w\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"wo\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value, options) {\n return startOfWeek(setWeek(date, value, options), options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { getISOWeek } from \"./getISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week) {\n const _date = toDate(date);\n const diff = getISOWeek(_date) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;\n","import { setISOWeek } from \"../../../setISOWeek.mjs\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"I\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"Io\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value) {\n return startOfISOWeek(setISOWeek(date, value));\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.mjs\";\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nexport class DateParser extends Parser {\n priority = 90;\n subPriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"d\":\n return parseNumericPattern(numericPatterns.date, dateString);\n case \"do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n const month = date.getMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n\n set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.mjs\";\n\nexport class DayOfYearParser extends Parser {\n priority = 90;\n\n subpriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case \"Do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"E\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { addDays } from \"./addDays.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const currentDay = _date.getDay();\n\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n\n const delta = 7 - weekStartsOn;\n const diff =\n day < 0 || day > 6\n ? day - ((currentDay + delta) % 7)\n : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n return addDays(_date, diff);\n}\n\n// Fallback for modularized imports:\nexport default setDay;\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\n\n// Day of week\nexport class DayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"EEEEE\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"EEEE\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n priority = 90;\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"e\":\n case \"ee\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"eo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"eee\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"eeeee\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"eeee\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"c\":\n case \"cc\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"co\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"ccc\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // T\n case \"ccccc\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return (\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // Tuesday\n case \"cccc\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"e\",\n \"t\",\n \"T\",\n ];\n}\n","import { addDays } from \"./addDays.mjs\";\nimport { getISODay } from \"./getISODay.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day) {\n const _date = toDate(date);\n const currentDay = getISODay(_date);\n const diff = day - currentDay;\n return addDays(_date, diff);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;\n","import { setISODay } from \"../../../setISODay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n\n switch (token) {\n // 2\n case \"i\":\n case \"ii\": // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case \"io\":\n return match.ordinalNumber(dateString, { unit: \"day\" });\n // Tue\n case \"iii\":\n return mapValue(\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // T\n case \"iiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tu\n case \"iiiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tuesday\n case \"iiii\":\n default:\n return mapValue(\n match.day(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n\n set(date, _flags, value) {\n date = setISODay(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"E\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\nexport class AMPMParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"aaaaa\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\nexport class AMPMMidnightParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"bbbbb\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"BBBBB\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour1to12Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"h\":\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case \"ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour0to23Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"H\":\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case \"Ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour0To11Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"K\":\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case \"Ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour1To24Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"k\":\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case \"ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n\n set(date, _flags, value) {\n const hours = value <= 24 ? value % 24 : value;\n date.setHours(hours, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class MinuteParser extends Parser {\n priority = 60;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"m\":\n return parseNumericPattern(numericPatterns.minute, dateString);\n case \"mo\":\n return match.ordinalNumber(dateString, { unit: \"minute\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class SecondParser extends Parser {\n priority = 50;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"s\":\n return parseNumericPattern(numericPatterns.second, dateString);\n case \"so\":\n return match.ordinalNumber(dateString, { unit: \"second\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\nexport class FractionOfSecondParser extends Parser {\n priority = 30;\n\n parse(dateString, token) {\n const valueCallback = (value) =>\n Math.trunc(value * Math.pow(10, -token.length + 3));\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"X\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"XX\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"XXXX\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"XXXXX\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"XXX\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"x\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"xx\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"xxxx\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"xxxxx\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"xxx\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\n\nexport class TimestampSecondsParser extends Parser {\n priority = 40;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value * 1000), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\n\nexport class TimestampMillisecondsParser extends Parser {\n priority = 20;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { EraParser } from \"./parsers/EraParser.mjs\";\nimport { YearParser } from \"./parsers/YearParser.mjs\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.mjs\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.mjs\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.mjs\";\nimport { QuarterParser } from \"./parsers/QuarterParser.mjs\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.mjs\";\nimport { MonthParser } from \"./parsers/MonthParser.mjs\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.mjs\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.mjs\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.mjs\";\nimport { DateParser } from \"./parsers/DateParser.mjs\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.mjs\";\nimport { DayParser } from \"./parsers/DayParser.mjs\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.mjs\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.mjs\";\nimport { ISODayParser } from \"./parsers/ISODayParser.mjs\";\nimport { AMPMParser } from \"./parsers/AMPMParser.mjs\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.mjs\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.mjs\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.mjs\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.mjs\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.mjs\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.mjs\";\nimport { MinuteParser } from \"./parsers/MinuteParser.mjs\";\nimport { SecondParser } from \"./parsers/SecondParser.mjs\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.mjs\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.mjs\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.mjs\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.mjs\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- It's ok, we want any here\nexport const parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser(),\n};\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getDefaultOptions } from \"./getDefaultOptions.mjs\";\nimport { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { parsers } from \"./parse/_lib/parsers.mjs\";\nimport { DateToSystemTimezoneSetter } from \"./parse/_lib/Setter.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n * and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n if (formatStr === \"\") {\n if (dateStr === \"\") {\n return toDate(referenceDate);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n const setters = [new DateToSystemTimezoneSetter()];\n\n const tokens = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp);\n\n const usedTokens = [];\n\n for (let token of tokens) {\n if (\n !options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n if (\n !options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n\n const firstCharacter = token[0];\n const parser = parsers[firstCharacter];\n if (parser) {\n const { incompatibleTokens } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(\n (usedToken) =>\n incompatibleTokens.includes(usedToken.token) ||\n usedToken.token === firstCharacter,\n );\n if (incompatibleToken) {\n throw new RangeError(\n `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n );\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(\n `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n );\n }\n\n usedTokens.push({ token: firstCharacter, fullToken: token });\n\n const parseResult = parser.run(\n dateStr,\n token,\n locale.match,\n subFnOptions,\n );\n\n if (!parseResult) {\n return constructFrom(referenceDate, NaN);\n }\n\n setters.push(parseResult.setter);\n\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateStr.indexOf(token) === 0) {\n dateStr = dateStr.slice(token.length);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return constructFrom(referenceDate, NaN);\n }\n\n const uniquePrioritySetters = setters\n .map((setter) => setter.priority)\n .sort((a, b) => b - a)\n .filter((priority, index, array) => array.indexOf(priority) === index)\n .map((priority) =>\n setters\n .filter((setter) => setter.priority === priority)\n .sort((a, b) => b.subPriority - a.subPriority),\n )\n .map((setterArray) => setterArray[0]);\n\n let date = toDate(referenceDate);\n\n if (isNaN(date.getTime())) {\n return constructFrom(referenceDate, NaN);\n }\n\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return constructFrom(referenceDate, NaN);\n }\n\n const result = setter.set(date, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n // Result is date\n } else {\n date = result;\n }\n }\n\n return constructFrom(referenceDate, date);\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import{rectToClientRect as t,computePosition as e}from\"@floating-ui/core\";export{arrow,autoPlacement,detectOverflow,flip,hide,inline,limitShift,offset,shift,size}from\"@floating-ui/core\";function n(t){var e;return(null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function o(t){return n(t).getComputedStyle(t)}const i=Math.min,r=Math.max,l=Math.round;function c(t){const e=o(t);let n=parseFloat(e.width),i=parseFloat(e.height);const r=t.offsetWidth,c=t.offsetHeight,s=l(n)!==r||l(i)!==c;return s&&(n=r,i=c),{width:n,height:i,fallback:s}}function s(t){return h(t)?(t.nodeName||\"\").toLowerCase():\"\"}let f;function u(){if(f)return f;const t=navigator.userAgentData;return t&&Array.isArray(t.brands)?(f=t.brands.map((t=>t.brand+\"/\"+t.version)).join(\" \"),f):navigator.userAgent}function a(t){return t instanceof n(t).HTMLElement}function d(t){return t instanceof n(t).Element}function h(t){return t instanceof n(t).Node}function p(t){if(\"undefined\"==typeof ShadowRoot)return!1;return t instanceof n(t).ShadowRoot||t instanceof ShadowRoot}function g(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=o(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&![\"inline\",\"contents\"].includes(r)}function m(t){return[\"table\",\"td\",\"th\"].includes(s(t))}function y(t){const e=/firefox/i.test(u()),n=o(t),i=n.backdropFilter||n.WebkitBackdropFilter;return\"none\"!==n.transform||\"none\"!==n.perspective||!!i&&\"none\"!==i||e&&\"filter\"===n.willChange||e&&!!n.filter&&\"none\"!==n.filter||[\"transform\",\"perspective\"].some((t=>n.willChange.includes(t)))||[\"paint\",\"layout\",\"strict\",\"content\"].some((t=>{const e=n.contain;return null!=e&&e.includes(t)}))}function x(){return!/^((?!chrome|android).)*safari/i.test(u())}function w(t){return[\"html\",\"body\",\"#document\"].includes(s(t))}function v(t){return d(t)?t:t.contextElement}const b={x:1,y:1};function L(t){const e=v(t);if(!a(e))return b;const n=e.getBoundingClientRect(),{width:o,height:i,fallback:r}=c(e);let s=(r?l(n.width):n.width)/o,f=(r?l(n.height):n.height)/i;return s&&Number.isFinite(s)||(s=1),f&&Number.isFinite(f)||(f=1),{x:s,y:f}}function E(t,e,o,i){var r,l;void 0===e&&(e=!1),void 0===o&&(o=!1);const c=t.getBoundingClientRect(),s=v(t);let f=b;e&&(i?d(i)&&(f=L(i)):f=L(t));const u=s?n(s):window,a=!x()&&o;let h=(c.left+(a&&(null==(r=u.visualViewport)?void 0:r.offsetLeft)||0))/f.x,p=(c.top+(a&&(null==(l=u.visualViewport)?void 0:l.offsetTop)||0))/f.y,g=c.width/f.x,m=c.height/f.y;if(s){const t=n(s),e=i&&d(i)?n(i):i;let o=t.frameElement;for(;o&&i&&e!==t;){const t=L(o),e=o.getBoundingClientRect(),i=getComputedStyle(o);e.x+=(o.clientLeft+parseFloat(i.paddingLeft))*t.x,e.y+=(o.clientTop+parseFloat(i.paddingTop))*t.y,h*=t.x,p*=t.y,g*=t.x,m*=t.y,h+=e.x,p+=e.y,o=n(o).frameElement}}return{width:g,height:m,top:p,right:h+g,bottom:p+m,left:h,x:h,y:p}}function R(t){return((h(t)?t.ownerDocument:t.document)||window.document).documentElement}function T(t){return d(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function C(t){return E(R(t)).left+T(t).scrollLeft}function F(t){if(\"html\"===s(t))return t;const e=t.assignedSlot||t.parentNode||p(t)&&t.host||R(t);return p(e)?e.host:e}function W(t){const e=F(t);return w(e)?e.ownerDocument.body:a(e)&&g(e)?e:W(e)}function D(t,e){var o;void 0===e&&(e=[]);const i=W(t),r=i===(null==(o=t.ownerDocument)?void 0:o.body),l=n(i);return r?e.concat(l,l.visualViewport||[],g(i)?i:[]):e.concat(i,D(i))}function S(e,i,l){return\"viewport\"===i?t(function(t,e){const o=n(t),i=R(t),r=o.visualViewport;let l=i.clientWidth,c=i.clientHeight,s=0,f=0;if(r){l=r.width,c=r.height;const t=x();(t||!t&&\"fixed\"===e)&&(s=r.offsetLeft,f=r.offsetTop)}return{width:l,height:c,x:s,y:f}}(e,l)):d(i)?t(function(t,e){const n=E(t,!0,\"fixed\"===e),o=n.top+t.clientTop,i=n.left+t.clientLeft,r=a(t)?L(t):{x:1,y:1};return{width:t.clientWidth*r.x,height:t.clientHeight*r.y,x:i*r.x,y:o*r.y}}(i,l)):t(function(t){const e=R(t),n=T(t),i=t.ownerDocument.body,l=r(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),c=r(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);let s=-n.scrollLeft+C(t);const f=-n.scrollTop;return\"rtl\"===o(i).direction&&(s+=r(e.clientWidth,i.clientWidth)-l),{width:l,height:c,x:s,y:f}}(R(e)))}function A(t){return a(t)&&\"fixed\"!==o(t).position?t.offsetParent:null}function H(t){const e=n(t);let i=A(t);for(;i&&m(i)&&\"static\"===o(i).position;)i=A(i);return i&&(\"html\"===s(i)||\"body\"===s(i)&&\"static\"===o(i).position&&!y(i))?e:i||function(t){let e=F(t);for(;a(e)&&!w(e);){if(y(e))return e;e=F(e)}return null}(t)||e}function O(t,e,n){const o=a(e),i=R(e),r=E(t,!0,\"fixed\"===n,e);let l={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(o||!o&&\"fixed\"!==n)if((\"body\"!==s(e)||g(i))&&(l=T(e)),a(e)){const t=E(e,!0);c.x=t.x+e.clientLeft,c.y=t.y+e.clientTop}else i&&(c.x=C(i));return{x:r.left+l.scrollLeft-c.x,y:r.top+l.scrollTop-c.y,width:r.width,height:r.height}}const P={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:l,strategy:c}=t;const f=\"clippingAncestors\"===n?function(t,e){const n=e.get(t);if(n)return n;let i=D(t).filter((t=>d(t)&&\"body\"!==s(t))),r=null;const l=\"fixed\"===o(t).position;let c=l?F(t):t;for(;d(c)&&!w(c);){const t=o(c),e=y(c);(l?e||r:e||\"static\"!==t.position||!r||![\"absolute\",\"fixed\"].includes(r.position))?r=t:i=i.filter((t=>t!==c)),c=F(c)}return e.set(t,i),i}(e,this._c):[].concat(n),u=[...f,l],a=u[0],h=u.reduce(((t,n)=>{const o=S(e,n,c);return t.top=r(o.top,t.top),t.right=i(o.right,t.right),t.bottom=i(o.bottom,t.bottom),t.left=r(o.left,t.left),t}),S(e,a,c));return{width:h.right-h.left,height:h.bottom-h.top,x:h.left,y:h.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:o}=t;const i=a(n),r=R(n);if(n===r)return e;let l={scrollLeft:0,scrollTop:0},c={x:1,y:1};const f={x:0,y:0};if((i||!i&&\"fixed\"!==o)&&((\"body\"!==s(n)||g(r))&&(l=T(n)),a(n))){const t=E(n);c=L(n),f.x=t.x+n.clientLeft,f.y=t.y+n.clientTop}return{width:e.width*c.x,height:e.height*c.y,x:e.x*c.x-l.scrollLeft*c.x+f.x,y:e.y*c.y-l.scrollTop*c.y+f.y}},isElement:d,getDimensions:function(t){return a(t)?c(t):t.getBoundingClientRect()},getOffsetParent:H,getDocumentElement:R,getScale:L,async getElementRects(t){let{reference:e,floating:n,strategy:o}=t;const i=this.getOffsetParent||H,r=this.getDimensions;return{reference:O(e,await i(n),o),floating:{x:0,y:0,...await r(n)}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>\"rtl\"===o(t).direction};function z(t,e,n,o){void 0===o&&(o={});const{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:l=!0,animationFrame:c=!1}=o,s=i&&!c,f=s||r?[...d(t)?D(t):t.contextElement?D(t.contextElement):[],...D(e)]:[];f.forEach((t=>{s&&t.addEventListener(\"scroll\",n,{passive:!0}),r&&t.addEventListener(\"resize\",n)}));let u,a=null;if(l){let o=!0;a=new ResizeObserver((()=>{o||n(),o=!1})),d(t)&&!c&&a.observe(t),d(t)||!t.contextElement||c||a.observe(t.contextElement),a.observe(e)}let h=c?E(t):null;return c&&function e(){const o=E(t);!h||o.x===h.x&&o.y===h.y&&o.width===h.width&&o.height===h.height||n();h=o,u=requestAnimationFrame(e)}(),n(),()=>{var t;f.forEach((t=>{s&&t.removeEventListener(\"scroll\",n),r&&t.removeEventListener(\"resize\",n)})),null==(t=a)||t.disconnect(),a=null,c&&cancelAnimationFrame(u)}}const B=(t,n,o)=>{const i=new Map,r={platform:P,...o},l={...r.platform,_c:i};return e(t,n,{...r,platform:l})};export{z as autoUpdate,B as computePosition,D as getOverflowAncestors,P as platform};\n","import { defineComponent as O, openBlock as f, createElementBlock as T, normalizeClass as J, renderSlot as A, normalizeProps as ke, guardReactiveProps as Le, pushScopeId as De, popScopeId as Ie, nextTick as Fe, createBlock as M, withScopeId as Re, resolveComponent as P, normalizeStyle as W, withKeys as je, createElementVNode as w, Fragment as Ve, createCommentVNode as se, mergeProps as $e, withCtx as N, createVNode as ve, toDisplayString as We, ref as U, createApp as Ge, h as qe } from \"vue\";\nimport { offset as xe, autoPlacement as Ue, shift as Ye, flip as Xe, arrow as Ke, size as Je, computePosition as Qe, getOverflowAncestors as ne } from \"@floating-ui/dom\";\nfunction ye(e, t) {\n for (const o in t)\n Object.prototype.hasOwnProperty.call(t, o) && (typeof t[o] == \"object\" && e[o] ? ye(e[o], t[o]) : e[o] = t[o]);\n}\nconst h = {\n // Disable popper components\n disabled: !1,\n // Default position offset along main axis (px)\n distance: 5,\n // Default position offset along cross axis (px)\n skidding: 0,\n // Default container where the tooltip will be appended\n container: \"body\",\n // Element used to compute position and size boundaries\n boundary: void 0,\n // Skip delay & CSS transitions when another popper is shown, so that the popper appear to instanly move to the new position.\n instantMove: !1,\n // Auto destroy tooltip DOM nodes (ms)\n disposeTimeout: 150,\n // Triggers on the popper itself\n popperTriggers: [],\n // Positioning strategy\n strategy: \"absolute\",\n // Prevent overflow\n preventOverflow: !0,\n // Flip to the opposite placement if needed\n flip: !0,\n // Shift on the cross axis to prevent the popper from overflowing\n shift: !0,\n // Overflow padding (px)\n overflowPadding: 0,\n // Arrow padding (px)\n arrowPadding: 0,\n // Compute arrow overflow (useful to hide it)\n arrowOverflow: !0,\n /**\n * By default, compute autohide on 'click'.\n */\n autoHideOnMousedown: !1,\n // Themes\n themes: {\n tooltip: {\n // Default tooltip placement relative to target element\n placement: \"top\",\n // Default events that trigger the tooltip\n triggers: [\"hover\", \"focus\", \"touch\"],\n // Close tooltip on click on tooltip target\n hideTriggers: (e) => [...e, \"click\"],\n // Delay (ms)\n delay: {\n show: 200,\n hide: 0\n },\n // Update popper on content resize\n handleResize: !1,\n // Enable HTML content in directive\n html: !1,\n // Displayed when tooltip content is loading\n loadingContent: \"...\"\n },\n dropdown: {\n // Default dropdown placement relative to target element\n placement: \"bottom\",\n // Default events that trigger the dropdown\n triggers: [\"click\"],\n // Delay (ms)\n delay: 0,\n // Update popper on content resize\n handleResize: !0,\n // Hide on clock outside\n autoHide: !0\n },\n menu: {\n $extend: \"dropdown\",\n triggers: [\"hover\", \"focus\"],\n popperTriggers: [\"hover\"],\n delay: {\n show: 0,\n hide: 400\n }\n }\n }\n};\nfunction S(e, t) {\n let o = h.themes[e] || {}, i;\n do\n i = o[t], typeof i > \"u\" ? o.$extend ? o = h.themes[o.$extend] || {} : (o = null, i = h[t]) : o = null;\n while (o);\n return i;\n}\nfunction Ze(e) {\n const t = [e];\n let o = h.themes[e] || {};\n do\n o.$extend && !o.$resetCss ? (t.push(o.$extend), o = h.themes[o.$extend] || {}) : o = null;\n while (o);\n return t.map((i) => `v-popper--theme-${i}`);\n}\nfunction re(e) {\n const t = [e];\n let o = h.themes[e] || {};\n do\n o.$extend ? (t.push(o.$extend), o = h.themes[o.$extend] || {}) : o = null;\n while (o);\n return t;\n}\nlet $ = !1;\nif (typeof window < \"u\") {\n $ = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get() {\n $ = !0;\n }\n });\n window.addEventListener(\"test\", null, e);\n } catch {\n }\n}\nlet _e = !1;\ntypeof window < \"u\" && typeof navigator < \"u\" && (_e = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream);\nconst Te = [\"auto\", \"top\", \"bottom\", \"left\", \"right\"].reduce((e, t) => e.concat([\n t,\n `${t}-start`,\n `${t}-end`\n]), []), pe = {\n hover: \"mouseenter\",\n focus: \"focus\",\n click: \"click\",\n touch: \"touchstart\",\n pointer: \"pointerdown\"\n}, ae = {\n hover: \"mouseleave\",\n focus: \"blur\",\n click: \"click\",\n touch: \"touchend\",\n pointer: \"pointerup\"\n};\nfunction de(e, t) {\n const o = e.indexOf(t);\n o !== -1 && e.splice(o, 1);\n}\nfunction G() {\n return new Promise((e) => requestAnimationFrame(() => {\n requestAnimationFrame(e);\n }));\n}\nconst d = [];\nlet g = null;\nconst le = {};\nfunction he(e) {\n let t = le[e];\n return t || (t = le[e] = []), t;\n}\nlet Y = function() {\n};\ntypeof window < \"u\" && (Y = window.Element);\nfunction n(e) {\n return function(t) {\n return S(t.theme, e);\n };\n}\nconst q = \"__floating-vue__popper\", Q = () => O({\n name: \"VPopper\",\n provide() {\n return {\n [q]: {\n parentPopper: this\n }\n };\n },\n inject: {\n [q]: { default: null }\n },\n props: {\n theme: {\n type: String,\n required: !0\n },\n targetNodes: {\n type: Function,\n required: !0\n },\n referenceNode: {\n type: Function,\n default: null\n },\n popperNode: {\n type: Function,\n required: !0\n },\n shown: {\n type: Boolean,\n default: !1\n },\n showGroup: {\n type: String,\n default: null\n },\n // eslint-disable-next-line vue/require-prop-types\n ariaId: {\n default: null\n },\n disabled: {\n type: Boolean,\n default: n(\"disabled\")\n },\n positioningDisabled: {\n type: Boolean,\n default: n(\"positioningDisabled\")\n },\n placement: {\n type: String,\n default: n(\"placement\"),\n validator: (e) => Te.includes(e)\n },\n delay: {\n type: [String, Number, Object],\n default: n(\"delay\")\n },\n distance: {\n type: [Number, String],\n default: n(\"distance\")\n },\n skidding: {\n type: [Number, String],\n default: n(\"skidding\")\n },\n triggers: {\n type: Array,\n default: n(\"triggers\")\n },\n showTriggers: {\n type: [Array, Function],\n default: n(\"showTriggers\")\n },\n hideTriggers: {\n type: [Array, Function],\n default: n(\"hideTriggers\")\n },\n popperTriggers: {\n type: Array,\n default: n(\"popperTriggers\")\n },\n popperShowTriggers: {\n type: [Array, Function],\n default: n(\"popperShowTriggers\")\n },\n popperHideTriggers: {\n type: [Array, Function],\n default: n(\"popperHideTriggers\")\n },\n container: {\n type: [String, Object, Y, Boolean],\n default: n(\"container\")\n },\n boundary: {\n type: [String, Y],\n default: n(\"boundary\")\n },\n strategy: {\n type: String,\n validator: (e) => [\"absolute\", \"fixed\"].includes(e),\n default: n(\"strategy\")\n },\n autoHide: {\n type: [Boolean, Function],\n default: n(\"autoHide\")\n },\n handleResize: {\n type: Boolean,\n default: n(\"handleResize\")\n },\n instantMove: {\n type: Boolean,\n default: n(\"instantMove\")\n },\n eagerMount: {\n type: Boolean,\n default: n(\"eagerMount\")\n },\n popperClass: {\n type: [String, Array, Object],\n default: n(\"popperClass\")\n },\n computeTransformOrigin: {\n type: Boolean,\n default: n(\"computeTransformOrigin\")\n },\n /**\n * @deprecated\n */\n autoMinSize: {\n type: Boolean,\n default: n(\"autoMinSize\")\n },\n autoSize: {\n type: [Boolean, String],\n default: n(\"autoSize\")\n },\n /**\n * @deprecated\n */\n autoMaxSize: {\n type: Boolean,\n default: n(\"autoMaxSize\")\n },\n autoBoundaryMaxSize: {\n type: Boolean,\n default: n(\"autoBoundaryMaxSize\")\n },\n preventOverflow: {\n type: Boolean,\n default: n(\"preventOverflow\")\n },\n overflowPadding: {\n type: [Number, String],\n default: n(\"overflowPadding\")\n },\n arrowPadding: {\n type: [Number, String],\n default: n(\"arrowPadding\")\n },\n arrowOverflow: {\n type: Boolean,\n default: n(\"arrowOverflow\")\n },\n flip: {\n type: Boolean,\n default: n(\"flip\")\n },\n shift: {\n type: Boolean,\n default: n(\"shift\")\n },\n shiftCrossAxis: {\n type: Boolean,\n default: n(\"shiftCrossAxis\")\n },\n noAutoFocus: {\n type: Boolean,\n default: n(\"noAutoFocus\")\n },\n disposeTimeout: {\n type: Number,\n default: n(\"disposeTimeout\")\n }\n },\n emits: {\n show: () => !0,\n hide: () => !0,\n \"update:shown\": (e) => !0,\n \"apply-show\": () => !0,\n \"apply-hide\": () => !0,\n \"close-group\": () => !0,\n \"close-directive\": () => !0,\n \"auto-hide\": () => !0,\n resize: () => !0\n },\n data() {\n return {\n isShown: !1,\n isMounted: !1,\n skipTransition: !1,\n classes: {\n showFrom: !1,\n showTo: !1,\n hideFrom: !1,\n hideTo: !0\n },\n result: {\n x: 0,\n y: 0,\n placement: \"\",\n strategy: this.strategy,\n arrow: {\n x: 0,\n y: 0,\n centerOffset: 0\n },\n transformOrigin: null\n },\n randomId: `popper_${[Math.random(), Date.now()].map((e) => e.toString(36).substring(2, 10)).join(\"_\")}`,\n shownChildren: /* @__PURE__ */ new Set(),\n lastAutoHide: !0,\n pendingHide: !1,\n containsGlobalTarget: !1,\n isDisposed: !0,\n mouseDownContains: !1\n };\n },\n computed: {\n popperId() {\n return this.ariaId != null ? this.ariaId : this.randomId;\n },\n shouldMountContent() {\n return this.eagerMount || this.isMounted;\n },\n slotData() {\n return {\n popperId: this.popperId,\n isShown: this.isShown,\n shouldMountContent: this.shouldMountContent,\n skipTransition: this.skipTransition,\n autoHide: typeof this.autoHide == \"function\" ? this.lastAutoHide : this.autoHide,\n show: this.show,\n hide: this.hide,\n handleResize: this.handleResize,\n onResize: this.onResize,\n classes: {\n ...this.classes,\n popperClass: this.popperClass\n },\n result: this.positioningDisabled ? null : this.result,\n attrs: this.$attrs\n };\n },\n parentPopper() {\n var e;\n return (e = this[q]) == null ? void 0 : e.parentPopper;\n },\n hasPopperShowTriggerHover() {\n var e, t;\n return ((e = this.popperTriggers) == null ? void 0 : e.includes(\"hover\")) || ((t = this.popperShowTriggers) == null ? void 0 : t.includes(\"hover\"));\n }\n },\n watch: {\n shown: \"$_autoShowHide\",\n disabled(e) {\n e ? this.dispose() : this.init();\n },\n async container() {\n this.isShown && (this.$_ensureTeleport(), await this.$_computePosition());\n },\n triggers: {\n handler: \"$_refreshListeners\",\n deep: !0\n },\n positioningDisabled: \"$_refreshListeners\",\n ...[\n \"placement\",\n \"distance\",\n \"skidding\",\n \"boundary\",\n \"strategy\",\n \"overflowPadding\",\n \"arrowPadding\",\n \"preventOverflow\",\n \"shift\",\n \"shiftCrossAxis\",\n \"flip\"\n ].reduce((e, t) => (e[t] = \"$_computePosition\", e), {})\n },\n created() {\n this.autoMinSize && console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize=\"min\"` instead.'), this.autoMaxSize && console.warn(\"[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.\");\n },\n mounted() {\n this.init(), this.$_detachPopperNode();\n },\n activated() {\n this.$_autoShowHide();\n },\n deactivated() {\n this.hide();\n },\n beforeUnmount() {\n this.dispose();\n },\n methods: {\n show({ event: e = null, skipDelay: t = !1, force: o = !1 } = {}) {\n var i, s;\n (i = this.parentPopper) != null && i.lockedChild && this.parentPopper.lockedChild !== this || (this.pendingHide = !1, (o || !this.disabled) && (((s = this.parentPopper) == null ? void 0 : s.lockedChild) === this && (this.parentPopper.lockedChild = null), this.$_scheduleShow(e, t), this.$emit(\"show\"), this.$_showFrameLocked = !0, requestAnimationFrame(() => {\n this.$_showFrameLocked = !1;\n })), this.$emit(\"update:shown\", !0));\n },\n hide({ event: e = null, skipDelay: t = !1 } = {}) {\n var o;\n if (!this.$_hideInProgress) {\n if (this.shownChildren.size > 0) {\n this.pendingHide = !0;\n return;\n }\n if (this.hasPopperShowTriggerHover && this.$_isAimingPopper()) {\n this.parentPopper && (this.parentPopper.lockedChild = this, clearTimeout(this.parentPopper.lockedChildTimer), this.parentPopper.lockedChildTimer = setTimeout(() => {\n this.parentPopper.lockedChild === this && (this.parentPopper.lockedChild.hide({ skipDelay: t }), this.parentPopper.lockedChild = null);\n }, 1e3));\n return;\n }\n ((o = this.parentPopper) == null ? void 0 : o.lockedChild) === this && (this.parentPopper.lockedChild = null), this.pendingHide = !1, this.$_scheduleHide(e, t), this.$emit(\"hide\"), this.$emit(\"update:shown\", !1);\n }\n },\n init() {\n var e;\n this.isDisposed && (this.isDisposed = !1, this.isMounted = !1, this.$_events = [], this.$_preventShow = !1, this.$_referenceNode = ((e = this.referenceNode) == null ? void 0 : e.call(this)) ?? this.$el, this.$_targetNodes = this.targetNodes().filter((t) => t.nodeType === t.ELEMENT_NODE), this.$_popperNode = this.popperNode(), this.$_innerNode = this.$_popperNode.querySelector(\".v-popper__inner\"), this.$_arrowNode = this.$_popperNode.querySelector(\".v-popper__arrow-container\"), this.$_swapTargetAttrs(\"title\", \"data-original-title\"), this.$_detachPopperNode(), this.triggers.length && this.$_addEventListeners(), this.shown && this.show());\n },\n dispose() {\n this.isDisposed || (this.isDisposed = !0, this.$_removeEventListeners(), this.hide({ skipDelay: !0 }), this.$_detachPopperNode(), this.isMounted = !1, this.isShown = !1, this.$_updateParentShownChildren(!1), this.$_swapTargetAttrs(\"data-original-title\", \"title\"));\n },\n async onResize() {\n this.isShown && (await this.$_computePosition(), this.$emit(\"resize\"));\n },\n async $_computePosition() {\n if (this.isDisposed || this.positioningDisabled)\n return;\n const e = {\n strategy: this.strategy,\n middleware: []\n };\n (this.distance || this.skidding) && e.middleware.push(xe({\n mainAxis: this.distance,\n crossAxis: this.skidding\n }));\n const t = this.placement.startsWith(\"auto\");\n if (t ? e.middleware.push(Ue({\n alignment: this.placement.split(\"-\")[1] ?? \"\"\n })) : e.placement = this.placement, this.preventOverflow && (this.shift && e.middleware.push(Ye({\n padding: this.overflowPadding,\n boundary: this.boundary,\n crossAxis: this.shiftCrossAxis\n })), !t && this.flip && e.middleware.push(Xe({\n padding: this.overflowPadding,\n boundary: this.boundary\n }))), e.middleware.push(Ke({\n element: this.$_arrowNode,\n padding: this.arrowPadding\n })), this.arrowOverflow && e.middleware.push({\n name: \"arrowOverflow\",\n fn: ({ placement: i, rects: s, middlewareData: r }) => {\n let p;\n const { centerOffset: a } = r.arrow;\n return i.startsWith(\"top\") || i.startsWith(\"bottom\") ? p = Math.abs(a) > s.reference.width / 2 : p = Math.abs(a) > s.reference.height / 2, {\n data: {\n overflow: p\n }\n };\n }\n }), this.autoMinSize || this.autoSize) {\n const i = this.autoSize ? this.autoSize : this.autoMinSize ? \"min\" : null;\n e.middleware.push({\n name: \"autoSize\",\n fn: ({ rects: s, placement: r, middlewareData: p }) => {\n var u;\n if ((u = p.autoSize) != null && u.skip)\n return {};\n let a, l;\n return r.startsWith(\"top\") || r.startsWith(\"bottom\") ? a = s.reference.width : l = s.reference.height, this.$_innerNode.style[i === \"min\" ? \"minWidth\" : i === \"max\" ? \"maxWidth\" : \"width\"] = a != null ? `${a}px` : null, this.$_innerNode.style[i === \"min\" ? \"minHeight\" : i === \"max\" ? \"maxHeight\" : \"height\"] = l != null ? `${l}px` : null, {\n data: {\n skip: !0\n },\n reset: {\n rects: !0\n }\n };\n }\n });\n }\n (this.autoMaxSize || this.autoBoundaryMaxSize) && (this.$_innerNode.style.maxWidth = null, this.$_innerNode.style.maxHeight = null, e.middleware.push(Je({\n boundary: this.boundary,\n padding: this.overflowPadding,\n apply: ({ availableWidth: i, availableHeight: s }) => {\n this.$_innerNode.style.maxWidth = i != null ? `${i}px` : null, this.$_innerNode.style.maxHeight = s != null ? `${s}px` : null;\n }\n })));\n const o = await Qe(this.$_referenceNode, this.$_popperNode, e);\n Object.assign(this.result, {\n x: o.x,\n y: o.y,\n placement: o.placement,\n strategy: o.strategy,\n arrow: {\n ...o.middlewareData.arrow,\n ...o.middlewareData.arrowOverflow\n }\n });\n },\n $_scheduleShow(e, t = !1) {\n if (this.$_updateParentShownChildren(!0), this.$_hideInProgress = !1, clearTimeout(this.$_scheduleTimer), g && this.instantMove && g.instantMove && g !== this.parentPopper) {\n g.$_applyHide(!0), this.$_applyShow(!0);\n return;\n }\n t ? this.$_applyShow() : this.$_scheduleTimer = setTimeout(this.$_applyShow.bind(this), this.$_computeDelay(\"show\"));\n },\n $_scheduleHide(e, t = !1) {\n if (this.shownChildren.size > 0) {\n this.pendingHide = !0;\n return;\n }\n this.$_updateParentShownChildren(!1), this.$_hideInProgress = !0, clearTimeout(this.$_scheduleTimer), this.isShown && (g = this), t ? this.$_applyHide() : this.$_scheduleTimer = setTimeout(this.$_applyHide.bind(this), this.$_computeDelay(\"hide\"));\n },\n $_computeDelay(e) {\n const t = this.delay;\n return parseInt(t && t[e] || t || 0);\n },\n async $_applyShow(e = !1) {\n clearTimeout(this.$_disposeTimer), clearTimeout(this.$_scheduleTimer), this.skipTransition = e, !this.isShown && (this.$_ensureTeleport(), await G(), await this.$_computePosition(), await this.$_applyShowEffect(), this.positioningDisabled || this.$_registerEventListeners([\n ...ne(this.$_referenceNode),\n ...ne(this.$_popperNode)\n ], \"scroll\", () => {\n this.$_computePosition();\n }));\n },\n async $_applyShowEffect() {\n if (this.$_hideInProgress)\n return;\n if (this.computeTransformOrigin) {\n const t = this.$_referenceNode.getBoundingClientRect(), o = this.$_popperNode.querySelector(\".v-popper__wrapper\"), i = o.parentNode.getBoundingClientRect(), s = t.x + t.width / 2 - (i.left + o.offsetLeft), r = t.y + t.height / 2 - (i.top + o.offsetTop);\n this.result.transformOrigin = `${s}px ${r}px`;\n }\n this.isShown = !0, this.$_applyAttrsToTarget({\n \"aria-describedby\": this.popperId,\n \"data-popper-shown\": \"\"\n });\n const e = this.showGroup;\n if (e) {\n let t;\n for (let o = 0; o < d.length; o++)\n t = d[o], t.showGroup !== e && (t.hide(), t.$emit(\"close-group\"));\n }\n d.push(this), document.body.classList.add(\"v-popper--some-open\");\n for (const t of re(this.theme))\n he(t).push(this), document.body.classList.add(`v-popper--some-open--${t}`);\n this.$emit(\"apply-show\"), this.classes.showFrom = !0, this.classes.showTo = !1, this.classes.hideFrom = !1, this.classes.hideTo = !1, await G(), this.classes.showFrom = !1, this.classes.showTo = !0, this.noAutoFocus || this.$_popperNode.focus();\n },\n async $_applyHide(e = !1) {\n if (this.shownChildren.size > 0) {\n this.pendingHide = !0, this.$_hideInProgress = !1;\n return;\n }\n if (clearTimeout(this.$_scheduleTimer), !this.isShown)\n return;\n this.skipTransition = e, de(d, this), d.length === 0 && document.body.classList.remove(\"v-popper--some-open\");\n for (const o of re(this.theme)) {\n const i = he(o);\n de(i, this), i.length === 0 && document.body.classList.remove(`v-popper--some-open--${o}`);\n }\n g === this && (g = null), this.isShown = !1, this.$_applyAttrsToTarget({\n \"aria-describedby\": void 0,\n \"data-popper-shown\": void 0\n }), clearTimeout(this.$_disposeTimer);\n const t = this.disposeTimeout;\n t !== null && (this.$_disposeTimer = setTimeout(() => {\n this.$_popperNode && (this.$_detachPopperNode(), this.isMounted = !1);\n }, t)), this.$_removeEventListeners(\"scroll\"), this.$emit(\"apply-hide\"), this.classes.showFrom = !1, this.classes.showTo = !1, this.classes.hideFrom = !0, this.classes.hideTo = !1, await G(), this.classes.hideFrom = !1, this.classes.hideTo = !0;\n },\n $_autoShowHide() {\n this.shown ? this.show() : this.hide();\n },\n $_ensureTeleport() {\n if (this.isDisposed)\n return;\n let e = this.container;\n if (typeof e == \"string\" ? e = window.document.querySelector(e) : e === !1 && (e = this.$_targetNodes[0].parentNode), !e)\n throw new Error(\"No container for popover: \" + this.container);\n e.appendChild(this.$_popperNode), this.isMounted = !0;\n },\n $_addEventListeners() {\n const e = (o) => {\n this.isShown && !this.$_hideInProgress || (o.usedByTooltip = !0, !this.$_preventShow && this.show({ event: o }));\n };\n this.$_registerTriggerListeners(this.$_targetNodes, pe, this.triggers, this.showTriggers, e), this.$_registerTriggerListeners([this.$_popperNode], pe, this.popperTriggers, this.popperShowTriggers, e);\n const t = (o) => {\n o.usedByTooltip || this.hide({ event: o });\n };\n this.$_registerTriggerListeners(this.$_targetNodes, ae, this.triggers, this.hideTriggers, t), this.$_registerTriggerListeners([this.$_popperNode], ae, this.popperTriggers, this.popperHideTriggers, t);\n },\n $_registerEventListeners(e, t, o) {\n this.$_events.push({ targetNodes: e, eventType: t, handler: o }), e.forEach((i) => i.addEventListener(t, o, $ ? {\n passive: !0\n } : void 0));\n },\n $_registerTriggerListeners(e, t, o, i, s) {\n let r = o;\n i != null && (r = typeof i == \"function\" ? i(r) : i), r.forEach((p) => {\n const a = t[p];\n a && this.$_registerEventListeners(e, a, s);\n });\n },\n $_removeEventListeners(e) {\n const t = [];\n this.$_events.forEach((o) => {\n const { targetNodes: i, eventType: s, handler: r } = o;\n !e || e === s ? i.forEach((p) => p.removeEventListener(s, r)) : t.push(o);\n }), this.$_events = t;\n },\n $_refreshListeners() {\n this.isDisposed || (this.$_removeEventListeners(), this.$_addEventListeners());\n },\n $_handleGlobalClose(e, t = !1) {\n this.$_showFrameLocked || (this.hide({ event: e }), e.closePopover ? this.$emit(\"close-directive\") : this.$emit(\"auto-hide\"), t && (this.$_preventShow = !0, setTimeout(() => {\n this.$_preventShow = !1;\n }, 300)));\n },\n $_detachPopperNode() {\n this.$_popperNode.parentNode && this.$_popperNode.parentNode.removeChild(this.$_popperNode);\n },\n $_swapTargetAttrs(e, t) {\n for (const o of this.$_targetNodes) {\n const i = o.getAttribute(e);\n i && (o.removeAttribute(e), o.setAttribute(t, i));\n }\n },\n $_applyAttrsToTarget(e) {\n for (const t of this.$_targetNodes)\n for (const o in e) {\n const i = e[o];\n i == null ? t.removeAttribute(o) : t.setAttribute(o, i);\n }\n },\n $_updateParentShownChildren(e) {\n let t = this.parentPopper;\n for (; t; )\n e ? t.shownChildren.add(this.randomId) : (t.shownChildren.delete(this.randomId), t.pendingHide && t.hide()), t = t.parentPopper;\n },\n $_isAimingPopper() {\n const e = this.$_referenceNode.getBoundingClientRect();\n if (y >= e.left && y <= e.right && _ >= e.top && _ <= e.bottom) {\n const t = this.$_popperNode.getBoundingClientRect(), o = y - c, i = _ - m, r = t.left + t.width / 2 - c + (t.top + t.height / 2) - m + t.width + t.height, p = c + o * r, a = m + i * r;\n return C(c, m, p, a, t.left, t.top, t.left, t.bottom) || // Left edge\n C(c, m, p, a, t.left, t.top, t.right, t.top) || // Top edge\n C(c, m, p, a, t.right, t.top, t.right, t.bottom) || // Right edge\n C(c, m, p, a, t.left, t.bottom, t.right, t.bottom);\n }\n return !1;\n }\n },\n render() {\n return this.$slots.default(this.slotData);\n }\n});\nif (typeof document < \"u\" && typeof window < \"u\") {\n if (_e) {\n const e = $ ? {\n passive: !0,\n capture: !0\n } : !0;\n document.addEventListener(\"touchstart\", (t) => ue(t, !0), e), document.addEventListener(\"touchend\", (t) => fe(t, !0), e);\n } else\n window.addEventListener(\"mousedown\", (e) => ue(e, !1), !0), window.addEventListener(\"click\", (e) => fe(e, !1), !0);\n window.addEventListener(\"resize\", tt);\n}\nfunction ue(e, t) {\n if (h.autoHideOnMousedown)\n Pe(e, t);\n else\n for (let o = 0; o < d.length; o++) {\n const i = d[o];\n try {\n i.mouseDownContains = i.popperNode().contains(e.target);\n } catch {\n }\n }\n}\nfunction fe(e, t) {\n h.autoHideOnMousedown || Pe(e, t);\n}\nfunction Pe(e, t) {\n const o = {};\n for (let i = d.length - 1; i >= 0; i--) {\n const s = d[i];\n try {\n const r = s.containsGlobalTarget = s.mouseDownContains || s.popperNode().contains(e.target);\n s.pendingHide = !1, requestAnimationFrame(() => {\n if (s.pendingHide = !1, !o[s.randomId] && ce(s, r, e)) {\n if (s.$_handleGlobalClose(e, t), !e.closeAllPopover && e.closePopover && r) {\n let a = s.parentPopper;\n for (; a; )\n o[a.randomId] = !0, a = a.parentPopper;\n return;\n }\n let p = s.parentPopper;\n for (; p && ce(p, p.containsGlobalTarget, e); ) {\n p.$_handleGlobalClose(e, t);\n p = p.parentPopper;\n }\n }\n });\n } catch {\n }\n }\n}\nfunction ce(e, t, o) {\n return o.closeAllPopover || o.closePopover && t || et(e, o) && !t;\n}\nfunction et(e, t) {\n if (typeof e.autoHide == \"function\") {\n const o = e.autoHide(t);\n return e.lastAutoHide = o, o;\n }\n return e.autoHide;\n}\nfunction tt() {\n for (let e = 0; e < d.length; e++)\n d[e].$_computePosition();\n}\nfunction Nt() {\n for (let e = 0; e < d.length; e++)\n d[e].hide();\n}\nlet c = 0, m = 0, y = 0, _ = 0;\ntypeof window < \"u\" && window.addEventListener(\"mousemove\", (e) => {\n c = y, m = _, y = e.clientX, _ = e.clientY;\n}, $ ? {\n passive: !0\n} : void 0);\nfunction C(e, t, o, i, s, r, p, a) {\n const l = ((p - s) * (t - r) - (a - r) * (e - s)) / ((a - r) * (o - e) - (p - s) * (i - t)), u = ((o - e) * (t - r) - (i - t) * (e - s)) / ((a - r) * (o - e) - (p - s) * (i - t));\n return l >= 0 && l <= 1 && u >= 0 && u <= 1;\n}\nconst ot = {\n extends: Q()\n}, B = (e, t) => {\n const o = e.__vccOpts || e;\n for (const [i, s] of t)\n o[i] = s;\n return o;\n};\nfunction it(e, t, o, i, s, r) {\n return f(), T(\"div\", {\n ref: \"reference\",\n class: J([\"v-popper\", {\n \"v-popper--shown\": e.slotData.isShown\n }])\n }, [\n A(e.$slots, \"default\", ke(Le(e.slotData)))\n ], 2);\n}\nconst st = /* @__PURE__ */ B(ot, [[\"render\", it]]);\nfunction nt() {\n var e = window.navigator.userAgent, t = e.indexOf(\"MSIE \");\n if (t > 0)\n return parseInt(e.substring(t + 5, e.indexOf(\".\", t)), 10);\n var o = e.indexOf(\"Trident/\");\n if (o > 0) {\n var i = e.indexOf(\"rv:\");\n return parseInt(e.substring(i + 3, e.indexOf(\".\", i)), 10);\n }\n var s = e.indexOf(\"Edge/\");\n return s > 0 ? parseInt(e.substring(s + 5, e.indexOf(\".\", s)), 10) : -1;\n}\nlet z;\nfunction X() {\n X.init || (X.init = !0, z = nt() !== -1);\n}\nvar E = {\n name: \"ResizeObserver\",\n props: {\n emitOnMount: {\n type: Boolean,\n default: !1\n },\n ignoreWidth: {\n type: Boolean,\n default: !1\n },\n ignoreHeight: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\n \"notify\"\n ],\n mounted() {\n X(), Fe(() => {\n this._w = this.$el.offsetWidth, this._h = this.$el.offsetHeight, this.emitOnMount && this.emitSize();\n });\n const e = document.createElement(\"object\");\n this._resizeObject = e, e.setAttribute(\"aria-hidden\", \"true\"), e.setAttribute(\"tabindex\", -1), e.onload = this.addResizeHandlers, e.type = \"text/html\", z && this.$el.appendChild(e), e.data = \"about:blank\", z || this.$el.appendChild(e);\n },\n beforeUnmount() {\n this.removeResizeHandlers();\n },\n methods: {\n compareAndNotify() {\n (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) && (this._w = this.$el.offsetWidth, this._h = this.$el.offsetHeight, this.emitSize());\n },\n emitSize() {\n this.$emit(\"notify\", {\n width: this._w,\n height: this._h\n });\n },\n addResizeHandlers() {\n this._resizeObject.contentDocument.defaultView.addEventListener(\"resize\", this.compareAndNotify), this.compareAndNotify();\n },\n removeResizeHandlers() {\n this._resizeObject && this._resizeObject.onload && (!z && this._resizeObject.contentDocument && this._resizeObject.contentDocument.defaultView.removeEventListener(\"resize\", this.compareAndNotify), this.$el.removeChild(this._resizeObject), this._resizeObject.onload = null, this._resizeObject = null);\n }\n }\n};\nconst rt = /* @__PURE__ */ Re(\"data-v-b329ee4c\");\nDe(\"data-v-b329ee4c\");\nconst pt = {\n class: \"resize-observer\",\n tabindex: \"-1\"\n};\nIe();\nconst at = /* @__PURE__ */ rt((e, t, o, i, s, r) => (f(), M(\"div\", pt)));\nE.render = at;\nE.__scopeId = \"data-v-b329ee4c\";\nE.__file = \"src/components/ResizeObserver.vue\";\nconst Z = (e = \"theme\") => ({\n computed: {\n themeClass() {\n return Ze(this[e]);\n }\n }\n}), dt = O({\n name: \"VPopperContent\",\n components: {\n ResizeObserver: E\n },\n mixins: [\n Z()\n ],\n props: {\n popperId: String,\n theme: String,\n shown: Boolean,\n mounted: Boolean,\n skipTransition: Boolean,\n autoHide: Boolean,\n handleResize: Boolean,\n classes: Object,\n result: Object\n },\n emits: [\n \"hide\",\n \"resize\"\n ],\n methods: {\n toPx(e) {\n return e != null && !isNaN(e) ? `${e}px` : null;\n }\n }\n}), lt = [\"id\", \"aria-hidden\", \"tabindex\", \"data-popper-placement\"], ht = {\n ref: \"inner\",\n class: \"v-popper__inner\"\n}, ut = /* @__PURE__ */ w(\"div\", { class: \"v-popper__arrow-outer\" }, null, -1), ft = /* @__PURE__ */ w(\"div\", { class: \"v-popper__arrow-inner\" }, null, -1), ct = [\n ut,\n ft\n];\nfunction mt(e, t, o, i, s, r) {\n const p = P(\"ResizeObserver\");\n return f(), T(\"div\", {\n id: e.popperId,\n ref: \"popover\",\n class: J([\"v-popper__popper\", [\n e.themeClass,\n e.classes.popperClass,\n {\n \"v-popper__popper--shown\": e.shown,\n \"v-popper__popper--hidden\": !e.shown,\n \"v-popper__popper--show-from\": e.classes.showFrom,\n \"v-popper__popper--show-to\": e.classes.showTo,\n \"v-popper__popper--hide-from\": e.classes.hideFrom,\n \"v-popper__popper--hide-to\": e.classes.hideTo,\n \"v-popper__popper--skip-transition\": e.skipTransition,\n \"v-popper__popper--arrow-overflow\": e.result && e.result.arrow.overflow,\n \"v-popper__popper--no-positioning\": !e.result\n }\n ]]),\n style: W(e.result ? {\n position: e.result.strategy,\n transform: `translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`\n } : void 0),\n \"aria-hidden\": e.shown ? \"false\" : \"true\",\n tabindex: e.autoHide ? 0 : void 0,\n \"data-popper-placement\": e.result ? e.result.placement : void 0,\n onKeyup: t[2] || (t[2] = je((a) => e.autoHide && e.$emit(\"hide\"), [\"esc\"]))\n }, [\n w(\"div\", {\n class: \"v-popper__backdrop\",\n onClick: t[0] || (t[0] = (a) => e.autoHide && e.$emit(\"hide\"))\n }),\n w(\"div\", {\n class: \"v-popper__wrapper\",\n style: W(e.result ? {\n transformOrigin: e.result.transformOrigin\n } : void 0)\n }, [\n w(\"div\", ht, [\n e.mounted ? (f(), T(Ve, { key: 0 }, [\n w(\"div\", null, [\n A(e.$slots, \"default\")\n ]),\n e.handleResize ? (f(), M(p, {\n key: 0,\n onNotify: t[1] || (t[1] = (a) => e.$emit(\"resize\", a))\n })) : se(\"\", !0)\n ], 64)) : se(\"\", !0)\n ], 512),\n w(\"div\", {\n ref: \"arrow\",\n class: \"v-popper__arrow-container\",\n style: W(e.result ? {\n left: e.toPx(e.result.arrow.x),\n top: e.toPx(e.result.arrow.y)\n } : void 0)\n }, ct, 4)\n ], 4)\n ], 46, lt);\n}\nconst ee = /* @__PURE__ */ B(dt, [[\"render\", mt]]), te = {\n methods: {\n show(...e) {\n return this.$refs.popper.show(...e);\n },\n hide(...e) {\n return this.$refs.popper.hide(...e);\n },\n dispose(...e) {\n return this.$refs.popper.dispose(...e);\n },\n onResize(...e) {\n return this.$refs.popper.onResize(...e);\n }\n }\n};\nlet K = function() {\n};\ntypeof window < \"u\" && (K = window.Element);\nconst gt = O({\n name: \"VPopperWrapper\",\n components: {\n Popper: st,\n PopperContent: ee\n },\n mixins: [\n te,\n Z(\"finalTheme\")\n ],\n props: {\n theme: {\n type: String,\n default: null\n },\n referenceNode: {\n type: Function,\n default: null\n },\n shown: {\n type: Boolean,\n default: !1\n },\n showGroup: {\n type: String,\n default: null\n },\n // eslint-disable-next-line vue/require-prop-types\n ariaId: {\n default: null\n },\n disabled: {\n type: Boolean,\n default: void 0\n },\n positioningDisabled: {\n type: Boolean,\n default: void 0\n },\n placement: {\n type: String,\n default: void 0\n },\n delay: {\n type: [String, Number, Object],\n default: void 0\n },\n distance: {\n type: [Number, String],\n default: void 0\n },\n skidding: {\n type: [Number, String],\n default: void 0\n },\n triggers: {\n type: Array,\n default: void 0\n },\n showTriggers: {\n type: [Array, Function],\n default: void 0\n },\n hideTriggers: {\n type: [Array, Function],\n default: void 0\n },\n popperTriggers: {\n type: Array,\n default: void 0\n },\n popperShowTriggers: {\n type: [Array, Function],\n default: void 0\n },\n popperHideTriggers: {\n type: [Array, Function],\n default: void 0\n },\n container: {\n type: [String, Object, K, Boolean],\n default: void 0\n },\n boundary: {\n type: [String, K],\n default: void 0\n },\n strategy: {\n type: String,\n default: void 0\n },\n autoHide: {\n type: [Boolean, Function],\n default: void 0\n },\n handleResize: {\n type: Boolean,\n default: void 0\n },\n instantMove: {\n type: Boolean,\n default: void 0\n },\n eagerMount: {\n type: Boolean,\n default: void 0\n },\n popperClass: {\n type: [String, Array, Object],\n default: void 0\n },\n computeTransformOrigin: {\n type: Boolean,\n default: void 0\n },\n /**\n * @deprecated\n */\n autoMinSize: {\n type: Boolean,\n default: void 0\n },\n autoSize: {\n type: [Boolean, String],\n default: void 0\n },\n /**\n * @deprecated\n */\n autoMaxSize: {\n type: Boolean,\n default: void 0\n },\n autoBoundaryMaxSize: {\n type: Boolean,\n default: void 0\n },\n preventOverflow: {\n type: Boolean,\n default: void 0\n },\n overflowPadding: {\n type: [Number, String],\n default: void 0\n },\n arrowPadding: {\n type: [Number, String],\n default: void 0\n },\n arrowOverflow: {\n type: Boolean,\n default: void 0\n },\n flip: {\n type: Boolean,\n default: void 0\n },\n shift: {\n type: Boolean,\n default: void 0\n },\n shiftCrossAxis: {\n type: Boolean,\n default: void 0\n },\n noAutoFocus: {\n type: Boolean,\n default: void 0\n },\n disposeTimeout: {\n type: Number,\n default: void 0\n }\n },\n emits: {\n show: () => !0,\n hide: () => !0,\n \"update:shown\": (e) => !0,\n \"apply-show\": () => !0,\n \"apply-hide\": () => !0,\n \"close-group\": () => !0,\n \"close-directive\": () => !0,\n \"auto-hide\": () => !0,\n resize: () => !0\n },\n computed: {\n finalTheme() {\n return this.theme ?? this.$options.vPopperTheme;\n }\n },\n methods: {\n getTargetNodes() {\n return Array.from(this.$el.children).filter((e) => e !== this.$refs.popperContent.$el);\n }\n }\n});\nfunction wt(e, t, o, i, s, r) {\n const p = P(\"PopperContent\"), a = P(\"Popper\");\n return f(), M(a, $e({ ref: \"popper\" }, e.$props, {\n theme: e.finalTheme,\n \"target-nodes\": e.getTargetNodes,\n \"popper-node\": () => e.$refs.popperContent.$el,\n class: [\n e.themeClass\n ],\n onShow: t[0] || (t[0] = () => e.$emit(\"show\")),\n onHide: t[1] || (t[1] = () => e.$emit(\"hide\")),\n \"onUpdate:shown\": t[2] || (t[2] = (l) => e.$emit(\"update:shown\", l)),\n onApplyShow: t[3] || (t[3] = () => e.$emit(\"apply-show\")),\n onApplyHide: t[4] || (t[4] = () => e.$emit(\"apply-hide\")),\n onCloseGroup: t[5] || (t[5] = () => e.$emit(\"close-group\")),\n onCloseDirective: t[6] || (t[6] = () => e.$emit(\"close-directive\")),\n onAutoHide: t[7] || (t[7] = () => e.$emit(\"auto-hide\")),\n onResize: t[8] || (t[8] = () => e.$emit(\"resize\"))\n }), {\n default: N(({\n popperId: l,\n isShown: u,\n shouldMountContent: L,\n skipTransition: D,\n autoHide: I,\n show: F,\n hide: v,\n handleResize: R,\n onResize: j,\n classes: V,\n result: Ee\n }) => [\n A(e.$slots, \"default\", {\n shown: u,\n show: F,\n hide: v\n }),\n ve(p, {\n ref: \"popperContent\",\n \"popper-id\": l,\n theme: e.finalTheme,\n shown: u,\n mounted: L,\n \"skip-transition\": D,\n \"auto-hide\": I,\n \"handle-resize\": R,\n classes: V,\n result: Ee,\n onHide: v,\n onResize: j\n }, {\n default: N(() => [\n A(e.$slots, \"popper\", {\n shown: u,\n hide: v\n })\n ]),\n _: 2\n }, 1032, [\"popper-id\", \"theme\", \"shown\", \"mounted\", \"skip-transition\", \"auto-hide\", \"handle-resize\", \"classes\", \"result\", \"onHide\", \"onResize\"])\n ]),\n _: 3\n }, 16, [\"theme\", \"target-nodes\", \"popper-node\", \"class\"]);\n}\nconst k = /* @__PURE__ */ B(gt, [[\"render\", wt]]), Se = {\n ...k,\n name: \"VDropdown\",\n vPopperTheme: \"dropdown\"\n}, be = {\n ...k,\n name: \"VMenu\",\n vPopperTheme: \"menu\"\n}, Ce = {\n ...k,\n name: \"VTooltip\",\n vPopperTheme: \"tooltip\"\n}, $t = O({\n name: \"VTooltipDirective\",\n components: {\n Popper: Q(),\n PopperContent: ee\n },\n mixins: [\n te\n ],\n inheritAttrs: !1,\n props: {\n theme: {\n type: String,\n default: \"tooltip\"\n },\n html: {\n type: Boolean,\n default: (e) => S(e.theme, \"html\")\n },\n content: {\n type: [String, Number, Function],\n default: null\n },\n loadingContent: {\n type: String,\n default: (e) => S(e.theme, \"loadingContent\")\n },\n targetNodes: {\n type: Function,\n required: !0\n }\n },\n data() {\n return {\n asyncContent: null\n };\n },\n computed: {\n isContentAsync() {\n return typeof this.content == \"function\";\n },\n loading() {\n return this.isContentAsync && this.asyncContent == null;\n },\n finalContent() {\n return this.isContentAsync ? this.loading ? this.loadingContent : this.asyncContent : this.content;\n }\n },\n watch: {\n content: {\n handler() {\n this.fetchContent(!0);\n },\n immediate: !0\n },\n async finalContent() {\n await this.$nextTick(), this.$refs.popper.onResize();\n }\n },\n created() {\n this.$_fetchId = 0;\n },\n methods: {\n fetchContent(e) {\n if (typeof this.content == \"function\" && this.$_isShown && (e || !this.$_loading && this.asyncContent == null)) {\n this.asyncContent = null, this.$_loading = !0;\n const t = ++this.$_fetchId, o = this.content(this);\n o.then ? o.then((i) => this.onResult(t, i)) : this.onResult(t, o);\n }\n },\n onResult(e, t) {\n e === this.$_fetchId && (this.$_loading = !1, this.asyncContent = t);\n },\n onShow() {\n this.$_isShown = !0, this.fetchContent();\n },\n onHide() {\n this.$_isShown = !1;\n }\n }\n}), vt = [\"innerHTML\"], yt = [\"textContent\"];\nfunction _t(e, t, o, i, s, r) {\n const p = P(\"PopperContent\"), a = P(\"Popper\");\n return f(), M(a, $e({ ref: \"popper\" }, e.$attrs, {\n theme: e.theme,\n \"target-nodes\": e.targetNodes,\n \"popper-node\": () => e.$refs.popperContent.$el,\n onApplyShow: e.onShow,\n onApplyHide: e.onHide\n }), {\n default: N(({\n popperId: l,\n isShown: u,\n shouldMountContent: L,\n skipTransition: D,\n autoHide: I,\n hide: F,\n handleResize: v,\n onResize: R,\n classes: j,\n result: V\n }) => [\n ve(p, {\n ref: \"popperContent\",\n class: J({\n \"v-popper--tooltip-loading\": e.loading\n }),\n \"popper-id\": l,\n theme: e.theme,\n shown: u,\n mounted: L,\n \"skip-transition\": D,\n \"auto-hide\": I,\n \"handle-resize\": v,\n classes: j,\n result: V,\n onHide: F,\n onResize: R\n }, {\n default: N(() => [\n e.html ? (f(), T(\"div\", {\n key: 0,\n innerHTML: e.finalContent\n }, null, 8, vt)) : (f(), T(\"div\", {\n key: 1,\n textContent: We(e.finalContent)\n }, null, 8, yt))\n ]),\n _: 2\n }, 1032, [\"class\", \"popper-id\", \"theme\", \"shown\", \"mounted\", \"skip-transition\", \"auto-hide\", \"handle-resize\", \"classes\", \"result\", \"onHide\", \"onResize\"])\n ]),\n _: 1\n }, 16, [\"theme\", \"target-nodes\", \"popper-node\", \"onApplyShow\", \"onApplyHide\"]);\n}\nconst ze = /* @__PURE__ */ B($t, [[\"render\", _t]]), Ae = \"v-popper--has-tooltip\";\nfunction Tt(e, t) {\n let o = e.placement;\n if (!o && t)\n for (const i of Te)\n t[i] && (o = i);\n return o || (o = S(e.theme || \"tooltip\", \"placement\")), o;\n}\nfunction Ne(e, t, o) {\n let i;\n const s = typeof t;\n return s === \"string\" ? i = { content: t } : t && s === \"object\" ? i = t : i = { content: !1 }, i.placement = Tt(i, o), i.targetNodes = () => [e], i.referenceNode = () => e, i;\n}\nlet x, b, Pt = 0;\nfunction St() {\n if (x)\n return;\n b = U([]), x = Ge({\n name: \"VTooltipDirectiveApp\",\n setup() {\n return {\n directives: b\n };\n },\n render() {\n return this.directives.map((t) => qe(ze, {\n ...t.options,\n shown: t.shown || t.options.shown,\n key: t.id\n }));\n },\n devtools: {\n hide: !0\n }\n });\n const e = document.createElement(\"div\");\n document.body.appendChild(e), x.mount(e);\n}\nfunction bt(e, t, o) {\n St();\n const i = U(Ne(e, t, o)), s = U(!1), r = {\n id: Pt++,\n options: i,\n shown: s\n };\n return b.value.push(r), e.classList && e.classList.add(Ae), e.$_popper = {\n options: i,\n item: r,\n show() {\n s.value = !0;\n },\n hide() {\n s.value = !1;\n }\n };\n}\nfunction He(e) {\n if (e.$_popper) {\n const t = b.value.indexOf(e.$_popper.item);\n t !== -1 && b.value.splice(t, 1), delete e.$_popper, delete e.$_popperOldShown, delete e.$_popperMountTarget;\n }\n e.classList && e.classList.remove(Ae);\n}\nfunction me(e, { value: t, modifiers: o }) {\n const i = Ne(e, t, o);\n if (!i.content || S(i.theme || \"tooltip\", \"disabled\"))\n He(e);\n else {\n let s;\n e.$_popper ? (s = e.$_popper, s.options.value = i) : s = bt(e, t, o), typeof t.shown < \"u\" && t.shown !== e.$_popperOldShown && (e.$_popperOldShown = t.shown, t.shown ? s.show() : s.hide());\n }\n}\nconst oe = {\n beforeMount: me,\n updated: me,\n beforeUnmount(e) {\n He(e);\n }\n};\nfunction ge(e) {\n e.addEventListener(\"mousedown\", H), e.addEventListener(\"click\", H), e.addEventListener(\"touchstart\", Oe, $ ? {\n passive: !0\n } : !1);\n}\nfunction we(e) {\n e.removeEventListener(\"mousedown\", H), e.removeEventListener(\"click\", H), e.removeEventListener(\"touchstart\", Oe), e.removeEventListener(\"touchend\", Me), e.removeEventListener(\"touchcancel\", Be);\n}\nfunction H(e) {\n const t = e.currentTarget;\n e.closePopover = !t.$_vclosepopover_touch, e.closeAllPopover = t.$_closePopoverModifiers && !!t.$_closePopoverModifiers.all;\n}\nfunction Oe(e) {\n if (e.changedTouches.length === 1) {\n const t = e.currentTarget;\n t.$_vclosepopover_touch = !0;\n const o = e.changedTouches[0];\n t.$_vclosepopover_touchPoint = o, t.addEventListener(\"touchend\", Me), t.addEventListener(\"touchcancel\", Be);\n }\n}\nfunction Me(e) {\n const t = e.currentTarget;\n if (t.$_vclosepopover_touch = !1, e.changedTouches.length === 1) {\n const o = e.changedTouches[0], i = t.$_vclosepopover_touchPoint;\n e.closePopover = Math.abs(o.screenY - i.screenY) < 20 && Math.abs(o.screenX - i.screenX) < 20, e.closeAllPopover = t.$_closePopoverModifiers && !!t.$_closePopoverModifiers.all;\n }\n}\nfunction Be(e) {\n const t = e.currentTarget;\n t.$_vclosepopover_touch = !1;\n}\nconst ie = {\n beforeMount(e, { value: t, modifiers: o }) {\n e.$_closePopoverModifiers = o, (typeof t > \"u\" || t) && ge(e);\n },\n updated(e, { value: t, oldValue: o, modifiers: i }) {\n e.$_closePopoverModifiers = i, t !== o && (typeof t > \"u\" || t ? ge(e) : we(e));\n },\n beforeUnmount(e) {\n we(e);\n }\n}, Ht = h, Ot = oe, Mt = oe, Bt = ie, Et = ie, kt = Se, Lt = be, Dt = Q, It = ee, Ft = te, Rt = k, jt = Z, Vt = Ce, Wt = ze;\nfunction Ct(e, t = {}) {\n e.$_vTooltipInstalled || (e.$_vTooltipInstalled = !0, ye(h, t), e.directive(\"tooltip\", oe), e.directive(\"close-popper\", ie), e.component(\"VTooltip\", Ce), e.component(\"VDropdown\", Se), e.component(\"VMenu\", be));\n}\nconst Gt = {\n // eslint-disable-next-line no-undef\n version: \"5.2.2\",\n install: Ct,\n options: h\n};\nexport {\n kt as Dropdown,\n ae as HIDE_EVENT_MAP,\n Lt as Menu,\n Dt as Popper,\n It as PopperContent,\n Ft as PopperMethods,\n Rt as PopperWrapper,\n pe as SHOW_EVENT_MAP,\n jt as ThemeClass,\n Vt as Tooltip,\n Wt as TooltipDirective,\n Bt as VClosePopper,\n Ot as VTooltip,\n bt as createTooltip,\n Gt as default,\n He as destroyTooltip,\n Nt as hideAllPoppers,\n Ct as install,\n Ht as options,\n Te as placements,\n tt as recomputeAllPoppers,\n Et as vClosePopper,\n Mt as vTooltip\n};\n","import {umbracoApi} from \"~/utils/axios.util\";\r\n\r\nexport interface ModalContent {\r\n Text: string\r\n ClosingButtonText: string\r\n Title: string\r\n RedirectToLogo: string\r\n RedirectFromLogo: string\r\n RedirectToPlatform: string\r\n RedirectFromPlatform: string\r\n}\r\n\r\nclass ModalRepository {\r\n async get(docType: string, platformId: number, partner: string, redirectUrl: string, redirectFromUrl: string): Promise {\r\n const response = await umbracoApi.get(\"/modal/GetContent\", {\r\n params: {\r\n docType: docType,\r\n platform: platformId,\r\n partner: partner,\r\n redirectUrl: redirectUrl,\r\n redirectFromUrl: redirectFromUrl\r\n }\r\n });\r\n \r\n return JSON.parse(response.data);\r\n }\r\n}\r\n\r\nexport default new ModalRepository();","\r\n\r\n\r\n","\r\nexport const getDateInHoursAndMinutes = (date?: Date | string) => {\r\n if (!date) return date;\r\n\r\n return new Date(date).toLocaleTimeString('nl-NL', {\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n })\r\n}\r\n\r\nexport const getDateForRegistrationClosed = (date?: Date | string | null) => {\r\n if (!date) return date;\r\n\r\n return new Date(date).toLocaleDateString('nl-NL', {\r\n month: 'long',\r\n day: 'numeric',\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n })\r\n}","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n","\r\n\r\n","import {googleMapsApi} from \"~/utils/axios.util\";\r\n\r\n/**\r\n * Get the current location of the user.\r\n *\r\n * @returns {Promise} The current location of the user.\r\n * @throws {Error} If the browser does not support geolocation.\r\n * @throws {GeolocationPositionError} If the position could not be retrieved or the user denied the request.\r\n */\r\nexport const getCurrentLocation = async (): Promise => {\r\n return new Promise((resolve, reject) => {\r\n if (!navigator.geolocation) {\r\n reject(Error('Geolocation is not supported by your browser'));\r\n }\r\n\r\n const geoOptions = {\r\n enableHighAccuracy: true,\r\n maximumAge: 30000,\r\n timeout: 27000\r\n };\r\n\r\n const onSuccess = (position: GeolocationPosition) => {\r\n resolve(position);\r\n };\r\n\r\n const onError = (error: GeolocationPositionError) => {\r\n reject(error);\r\n };\r\n\r\n navigator.geolocation.getCurrentPosition(onSuccess, onError, geoOptions);\r\n });\r\n}\r\n\r\nexport const getPlaceAtLocation = async (latitude: number, longitude: number) => {\r\n const response = await googleMapsApi.get(\"/geocode/json\", {\r\n params: {\r\n key: \"AIzaSyCm54A_Z_zuuWtj9hSBgWbdw2QKT8Z_7ak\",\r\n latlng: `${latitude},${longitude}`\r\n }\r\n });\r\n\r\n const data = response.data;\r\n const bestResult = data.results[0];\r\n if (!bestResult) return undefined;\r\n const cityComponent = bestResult.address_components.find(\r\n component => component.types.includes(\"locality\")\r\n );\r\n return cityComponent?.long_name;\r\n}\r\n","import { clubfinderCdnApi } from \"~/utils/axios.util\";\r\nimport { Activiteittype } from \"./activiteittype.repository\";\r\n\r\nexport interface Kenmerk {\r\n Id: number;\r\n Naam: string;\r\n Beschrijving: string;\r\n Categorie: number;\r\n Order: number;\r\n}\r\n\r\nexport interface KenmerkenList {\r\n specifiekAanbodList: Kenmerk[];\r\n inclusiefList: Kenmerk[];\r\n aanbodInclusiefList: Kenmerk[];\r\n types: Activiteittype[];\r\n inspanningList: Kenmerk[];\r\n doelgroepList: Kenmerk[];\r\n voordeelList: Kenmerk[];\r\n tagList: Kenmerk[];\r\n faciliteitenList: Kenmerk[];\r\n}\r\n\r\nexport interface Activity {\r\n Naam: string;\r\n Activiteittype: number\r\n}\r\n\r\nclass KenmerkRepository {\r\n async getKenmerken() {\r\n const response = await clubfinderCdnApi.get('/api/kenmerk')\r\n\r\n return response.data\r\n };\r\n\r\n async getKenmerkenByCategorie(categorie: number) {\r\n const response = await clubfinderCdnApi.get('/api/kenmerk', {\r\n params: {\r\n categorie: categorie\r\n }\r\n })\r\n\r\n return response.data\r\n };\r\n \r\n async getActiviteiten(query: string, platformId: number) {\r\n const response = await clubfinderCdnApi.get(\"/api/activiteit/search\", {\r\n params: {\r\n naam: query,\r\n platform: platformId\r\n }\r\n });\r\n \r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new KenmerkRepository();\r\n","\r\n\r\n\r\n","import { sportmomentApi } from \"~/utils/axios.util\"\r\n\r\ndeclare const tokenUnit: string;\r\n\r\nexport interface Profile {\r\n Id: string;\r\n Voornaam: string;\r\n Achternaam: string;\r\n Emailadres: string;\r\n Telefoonnummer: string;\r\n Afbeelding?: number;\r\n AfbeeldingUrl: string;\r\n AfbeeldingIdentifier?: string;\r\n Noodnummer?: string;\r\n Geslacht: string;\r\n Geboortedatum: Date;\r\n Leeftijd: number;\r\n VolledigeNaam: string;\r\n IsHelpdeskAdmin: boolean;\r\n}\r\n\r\nclass ProfileRepository {\r\n async get() {\r\n const response = await sportmomentApi.get(\"api/profiel/get\", {\r\n headers: { Authorization: \"Bearer \" + tokenUnit }\r\n });\r\n \r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new ProfileRepository();\r\n","import {defineStore} from \"pinia\";\r\nimport {ref} from \"vue\";\r\nimport profileRepository, {Profile} from \"@/repositories/profile.repository\";\r\n\r\ndeclare const tokenUnit: string;\r\n\r\nexport const useProfileStore = defineStore(\"profile\", () => {\r\n const profile = ref();\r\n const isLoggedIn = tokenUnit !== undefined && tokenUnit !== null;\r\n \r\n const ensureProfile = async () => {\r\n if (!profile.value?.Id && isLoggedIn) {\r\n await profileRepository.get().then(data => {\r\n profile.value = data;\r\n });\r\n }\r\n }\r\n \r\n return { profile, isLoggedIn, ensureProfile }\r\n})","import {ref} from \"vue\";\r\n\r\n/**\r\n * A composable function to provide easy access to url search parameters\r\n * \r\n * @return an object with functions to get, set and clear url parameters\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams URLSearchParams\r\n */\r\nexport const useUrlSearchParams = () => {\r\n \r\n let url = new URL(window.location.href);\r\n\r\n /**\r\n * Set a parameter in url parameters\r\n * \r\n * @param key the key of the parameter\r\n * @param value the value of the parameter\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams URLSearchParams\r\n */\r\n const setParam = (key: string, value?: string) => {\r\n if (!value) {\r\n url.searchParams.delete(key);\r\n } else {\r\n url.searchParams.set(key, value);\r\n }\r\n pushState();\r\n }\r\n\r\n /**\r\n * Set an array of parameters in url parameters \r\n * \r\n * @param key the key of the parameter\r\n * @param values the values of the parameter\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams URLSearchParams\r\n */\r\n const setParamArray = (key: string, values: string[]) => {\r\n url.searchParams.delete(key);\r\n values.forEach(value => url.searchParams.append(key, value));\r\n window.history.pushState({}, '', url.toString());\r\n pushState();\r\n }\r\n \r\n /**\r\n * Clear all parameters from url parameters\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams URLSearchParams\r\n */\r\n const clearParams = () => {\r\n url.search = '';\r\n pushState();\r\n }\r\n\r\n /**\r\n * Get a parameter from url parameters\r\n * \r\n * @param key the key of the parameter\r\n * @return the value of the parameter or null if the parameter does not exist\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams URLSearchParams\r\n */\r\n const getParam = (key: string) => {\r\n return url.searchParams.get(key);\r\n }\r\n\r\n /**\r\n * Set the new url parameter state to the url, and push it to the history\r\n * \r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History/pushState window.history.pushState\r\n */\r\n const pushState = () => {\r\n window.history.pushState({}, '', url.toString());\r\n }\r\n\r\n /**\r\n * Refresh the url to sync with the current window location, useful when the url is changed by other means\r\n */\r\n const refresh = () => {\r\n url = new URL(window.location.href);\r\n }\r\n \r\n return {\r\n setParam,\r\n setParamArray,\r\n clearParams,\r\n getParam,\r\n refresh\r\n }\r\n}\r\n\r\nexport const useHash = () => {\r\n const hashWithoutHashtag = () => {\r\n return window.location.hash.replace('#', '');\r\n }\r\n \r\n const hashRef = ref(hashWithoutHashtag() || undefined);\r\n \r\n const setHash = (hash: string) => {\r\n hashRef.value = hash;\r\n window.location.hash = hash;\r\n }\r\n \r\n const clearHash = () => {\r\n hashRef.value = undefined;\r\n history.pushState(\"\", document.title, window.location.pathname + window.location.search);\r\n }\r\n \r\n return {\r\n hash: hashRef,\r\n setHash,\r\n clearHash\r\n }\r\n}","import {useUrlSearchParams} from \"@/helpers/url.helper\";\r\nimport {reactive} from \"vue\";\r\nimport {format} from \"date-fns\";\r\n\r\nexport interface UseFilters {\r\n filters: T;\r\n setFilter: (filter: keyof T, value: any) => void;\r\n clearFilter: () => void;\r\n}\r\n\r\nexport const useFilters = (initialFilter: T, callback?: () => any): UseFilters => {\r\n const filters = reactive({...initialFilter}) as T;\r\n const searchParams = useUrlSearchParams();\r\n\r\n const setFilter = (filter: keyof T, value: any) => {\r\n if (Array.isArray(value)) {\r\n Object.assign(filters, {[filter]: value});\r\n searchParams.setParamArray(filter as string, value);\r\n } else if(Object.prototype.toString.call(value) === '[object Date]') {\r\n Object.assign(filters, {[filter]: value});\r\n const formattedDate = format(value, \"dd-MM-yyyy\");\r\n searchParams.setParam(filter as string, formattedDate);\r\n } else {\r\n Object.assign(filters, {[filter]: value});\r\n searchParams.setParam(filter as string, value);\r\n }\r\n\r\n if (initialFilter[filter] === value) {\r\n // Value is same as the initial, so this won't have to be stored\r\n searchParams.setParam(filter as string, undefined);\r\n }\r\n \r\n if (callback) callback();\r\n }\r\n\r\n const clearFilter = () => {\r\n Object.assign(filters, initialFilter);\r\n searchParams.clearParams();\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n\r\n return {filters, setFilter, clearFilter};\r\n}\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\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 type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n }\n\n return node;\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 getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nexport { isElement, isHTMLElement };","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}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe: assume body is always available\n return (isElement(element) ? element.ownerDocument : element.document).documentElement;\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\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\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 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}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n // $FlowFixMe: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\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: 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 getNodeName from \"./getNodeName.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 if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = getNodeName(scrollParent) === '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: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\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\";\nimport getDocumentElement from \"./getDocumentElement.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 var offsetParent = element.offsetParent;\n\n if (offsetParent) {\n var html = getDocumentElement(offsetParent);\n\n if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {\n return html;\n }\n }\n\n return offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\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\n if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {\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) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","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}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\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(Object.assign(Object.assign({}, existing), current), {}, {\n options: Object.assign(Object.assign({}, existing.options), current.options),\n data: Object.assign(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 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\"; // 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 html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = element.ownerDocument.body;\n var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = Math.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 += Math.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}","export default function contains(parent, child) {\n // $FlowFixMe: hasOwnProperty doesn't seem to work in tests\n var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // 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 (isShadow) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe: 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}","export default function rectToClientRect(rect) {\n return Object.assign(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\";\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: 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 = Math.max(rect.top, accRect.top);\n accRect.right = Math.min(rect.right, accRect.right);\n accRect.bottom = Math.min(rect.bottom, accRect.bottom);\n accRect.left = Math.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}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\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] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\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(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 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(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 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\";\nexport * 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(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(Object.assign(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 – 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 – 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 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};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom } 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\"; // 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 roundOffsets(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.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\n var _roundOffsets = roundOffsets(offsets),\n x = _roundOffsets.x,\n y = _roundOffsets.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\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n /*:: offsetParent = (offsetParent: Element); */\n\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - 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(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(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(_ref3) {\n var state = _ref3.state,\n options = _ref3.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\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(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false\n })));\n }\n\n state.attributes.popper = Object.assign(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 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\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\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 } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\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 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(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};","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 getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\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; // $FlowFixMe\n\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: 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 – 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};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","export default function within(min, value, max) {\n return Math.max(min, Math.min(value, max));\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\";\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(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) {\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 var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(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(_min, _offset, _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","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\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name;\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 = state.modifiersData[name + \"#persistent\"].padding;\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 name = _ref2.name;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n _options$padding = options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\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 state.modifiersData[name + \"#persistent\"] = {\n padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n };\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, 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(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 { popperGenerator, detectOverflow } from \"./index.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 };","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nimport { reactive, computed, ref, watch, onUnmounted, provide, inject, onMounted, watchEffect, defineComponent, toRefs, nextTick, openBlock, createElementBlock, normalizeClass, createVNode, Transition, withCtx, mergeProps, renderSlot, createTextVNode, toDisplayString, createElementVNode, createCommentVNode, unref, createBlock, resolveDynamicComponent, normalizeProps, Fragment, renderList, normalizeStyle, withKeys, withDirectives, toRef, resolveComponent, resolveDirective, toHandlers, withModifiers, isRef, guardReactiveProps } from \"vue\";\nimport { createPopper } from \"@popperjs/core\";\nvar commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar objectProto$g = Object.prototype;\nvar hasOwnProperty$d = objectProto$g.hasOwnProperty;\nfunction baseHas$1(object, key) {\n return object != null && hasOwnProperty$d.call(object, key);\n}\nvar _baseHas = baseHas$1;\nvar isArray$c = Array.isArray;\nvar isArray_1 = isArray$c;\nvar freeGlobal$1 = typeof commonjsGlobal == \"object\" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\nvar _freeGlobal = freeGlobal$1;\nvar freeGlobal = _freeGlobal;\nvar freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\nvar root$8 = freeGlobal || freeSelf || Function(\"return this\")();\nvar _root = root$8;\nvar root$7 = _root;\nvar Symbol$5 = root$7.Symbol;\nvar _Symbol = Symbol$5;\nvar Symbol$4 = _Symbol;\nvar objectProto$f = Object.prototype;\nvar hasOwnProperty$c = objectProto$f.hasOwnProperty;\nvar nativeObjectToString$1 = objectProto$f.toString;\nvar symToStringTag$1 = Symbol$4 ? Symbol$4.toStringTag : void 0;\nfunction getRawTag$1(value) {\n var isOwn = hasOwnProperty$c.call(value, symToStringTag$1), tag = value[symToStringTag$1];\n try {\n value[symToStringTag$1] = void 0;\n var unmasked = true;\n } catch (e) {\n }\n var result = nativeObjectToString$1.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$1] = tag;\n } else {\n delete value[symToStringTag$1];\n }\n }\n return result;\n}\nvar _getRawTag = getRawTag$1;\nvar objectProto$e = Object.prototype;\nvar nativeObjectToString = objectProto$e.toString;\nfunction objectToString$1(value) {\n return nativeObjectToString.call(value);\n}\nvar _objectToString = objectToString$1;\nvar Symbol$3 = _Symbol, getRawTag = _getRawTag, objectToString = _objectToString;\nvar nullTag = \"[object Null]\", undefinedTag = \"[object Undefined]\";\nvar symToStringTag = Symbol$3 ? Symbol$3.toStringTag : void 0;\nfunction baseGetTag$a(value) {\n if (value == null) {\n return value === void 0 ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\nvar _baseGetTag = baseGetTag$a;\nfunction isObjectLike$b(value) {\n return value != null && typeof value == \"object\";\n}\nvar isObjectLike_1 = isObjectLike$b;\nvar baseGetTag$9 = _baseGetTag, isObjectLike$a = isObjectLike_1;\nvar symbolTag$1 = \"[object Symbol]\";\nfunction isSymbol$3(value) {\n return typeof value == \"symbol\" || isObjectLike$a(value) && baseGetTag$9(value) == symbolTag$1;\n}\nvar isSymbol_1 = isSymbol$3;\nvar isArray$b = isArray_1, isSymbol$2 = isSymbol_1;\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/, reIsPlainProp = /^\\w*$/;\nfunction isKey$3(value, object) {\n if (isArray$b(value)) {\n return false;\n }\n var type = typeof value;\n if (type == \"number\" || type == \"symbol\" || type == \"boolean\" || value == null || isSymbol$2(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\nvar _isKey = isKey$3;\nfunction isObject$a(value) {\n var type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\nvar isObject_1 = isObject$a;\nvar baseGetTag$8 = _baseGetTag, isObject$9 = isObject_1;\nvar asyncTag = \"[object AsyncFunction]\", funcTag$1 = \"[object Function]\", genTag = \"[object GeneratorFunction]\", proxyTag = \"[object Proxy]\";\nfunction isFunction$3(value) {\n if (!isObject$9(value)) {\n return false;\n }\n var tag = baseGetTag$8(value);\n return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\nvar isFunction_1 = isFunction$3;\nvar root$6 = _root;\nvar coreJsData$1 = root$6[\"__core-js_shared__\"];\nvar _coreJsData = coreJsData$1;\nvar coreJsData = _coreJsData;\nvar maskSrcKey = function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || \"\");\n return uid ? \"Symbol(src)_1.\" + uid : \"\";\n}();\nfunction isMasked$1(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\nvar _isMasked = isMasked$1;\nvar funcProto$2 = Function.prototype;\nvar funcToString$2 = funcProto$2.toString;\nfunction toSource$2(func) {\n if (func != null) {\n try {\n return funcToString$2.call(func);\n } catch (e) {\n }\n try {\n return func + \"\";\n } catch (e) {\n }\n }\n return \"\";\n}\nvar _toSource = toSource$2;\nvar isFunction$2 = isFunction_1, isMasked = _isMasked, isObject$8 = isObject_1, toSource$1 = _toSource;\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\nvar funcProto$1 = Function.prototype, objectProto$d = Object.prototype;\nvar funcToString$1 = funcProto$1.toString;\nvar hasOwnProperty$b = objectProto$d.hasOwnProperty;\nvar reIsNative = RegExp(\n \"^\" + funcToString$1.call(hasOwnProperty$b).replace(reRegExpChar, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n);\nfunction baseIsNative$1(value) {\n if (!isObject$8(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction$2(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource$1(value));\n}\nvar _baseIsNative = baseIsNative$1;\nfunction getValue$1(object, key) {\n return object == null ? void 0 : object[key];\n}\nvar _getValue = getValue$1;\nvar baseIsNative = _baseIsNative, getValue = _getValue;\nfunction getNative$7(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : void 0;\n}\nvar _getNative = getNative$7;\nvar getNative$6 = _getNative;\nvar nativeCreate$4 = getNative$6(Object, \"create\");\nvar _nativeCreate = nativeCreate$4;\nvar nativeCreate$3 = _nativeCreate;\nfunction hashClear$1() {\n this.__data__ = nativeCreate$3 ? nativeCreate$3(null) : {};\n this.size = 0;\n}\nvar _hashClear = hashClear$1;\nfunction hashDelete$1(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\nvar _hashDelete = hashDelete$1;\nvar nativeCreate$2 = _nativeCreate;\nvar HASH_UNDEFINED$2 = \"__lodash_hash_undefined__\";\nvar objectProto$c = Object.prototype;\nvar hasOwnProperty$a = objectProto$c.hasOwnProperty;\nfunction hashGet$1(key) {\n var data2 = this.__data__;\n if (nativeCreate$2) {\n var result = data2[key];\n return result === HASH_UNDEFINED$2 ? void 0 : result;\n }\n return hasOwnProperty$a.call(data2, key) ? data2[key] : void 0;\n}\nvar _hashGet = hashGet$1;\nvar nativeCreate$1 = _nativeCreate;\nvar objectProto$b = Object.prototype;\nvar hasOwnProperty$9 = objectProto$b.hasOwnProperty;\nfunction hashHas$1(key) {\n var data2 = this.__data__;\n return nativeCreate$1 ? data2[key] !== void 0 : hasOwnProperty$9.call(data2, key);\n}\nvar _hashHas = hashHas$1;\nvar nativeCreate = _nativeCreate;\nvar HASH_UNDEFINED$1 = \"__lodash_hash_undefined__\";\nfunction hashSet$1(key, value) {\n var data2 = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data2[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED$1 : value;\n return this;\n}\nvar _hashSet = hashSet$1;\nvar hashClear = _hashClear, hashDelete = _hashDelete, hashGet = _hashGet, hashHas = _hashHas, hashSet = _hashSet;\nfunction Hash$1(entries) {\n var index2 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index2 < length) {\n var entry = entries[index2];\n this.set(entry[0], entry[1]);\n }\n}\nHash$1.prototype.clear = hashClear;\nHash$1.prototype[\"delete\"] = hashDelete;\nHash$1.prototype.get = hashGet;\nHash$1.prototype.has = hashHas;\nHash$1.prototype.set = hashSet;\nvar _Hash = Hash$1;\nfunction listCacheClear$1() {\n this.__data__ = [];\n this.size = 0;\n}\nvar _listCacheClear = listCacheClear$1;\nfunction eq$6(value, other) {\n return value === other || value !== value && other !== other;\n}\nvar eq_1 = eq$6;\nvar eq$5 = eq_1;\nfunction assocIndexOf$4(array, key) {\n var length = array.length;\n while (length--) {\n if (eq$5(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\nvar _assocIndexOf = assocIndexOf$4;\nvar assocIndexOf$3 = _assocIndexOf;\nvar arrayProto = Array.prototype;\nvar splice = arrayProto.splice;\nfunction listCacheDelete$1(key) {\n var data2 = this.__data__, index2 = assocIndexOf$3(data2, key);\n if (index2 < 0) {\n return false;\n }\n var lastIndex = data2.length - 1;\n if (index2 == lastIndex) {\n data2.pop();\n } else {\n splice.call(data2, index2, 1);\n }\n --this.size;\n return true;\n}\nvar _listCacheDelete = listCacheDelete$1;\nvar assocIndexOf$2 = _assocIndexOf;\nfunction listCacheGet$1(key) {\n var data2 = this.__data__, index2 = assocIndexOf$2(data2, key);\n return index2 < 0 ? void 0 : data2[index2][1];\n}\nvar _listCacheGet = listCacheGet$1;\nvar assocIndexOf$1 = _assocIndexOf;\nfunction listCacheHas$1(key) {\n return assocIndexOf$1(this.__data__, key) > -1;\n}\nvar _listCacheHas = listCacheHas$1;\nvar assocIndexOf = _assocIndexOf;\nfunction listCacheSet$1(key, value) {\n var data2 = this.__data__, index2 = assocIndexOf(data2, key);\n if (index2 < 0) {\n ++this.size;\n data2.push([key, value]);\n } else {\n data2[index2][1] = value;\n }\n return this;\n}\nvar _listCacheSet = listCacheSet$1;\nvar listCacheClear = _listCacheClear, listCacheDelete = _listCacheDelete, listCacheGet = _listCacheGet, listCacheHas = _listCacheHas, listCacheSet = _listCacheSet;\nfunction ListCache$4(entries) {\n var index2 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index2 < length) {\n var entry = entries[index2];\n this.set(entry[0], entry[1]);\n }\n}\nListCache$4.prototype.clear = listCacheClear;\nListCache$4.prototype[\"delete\"] = listCacheDelete;\nListCache$4.prototype.get = listCacheGet;\nListCache$4.prototype.has = listCacheHas;\nListCache$4.prototype.set = listCacheSet;\nvar _ListCache = ListCache$4;\nvar getNative$5 = _getNative, root$5 = _root;\nvar Map$3 = getNative$5(root$5, \"Map\");\nvar _Map = Map$3;\nvar Hash = _Hash, ListCache$3 = _ListCache, Map$2 = _Map;\nfunction mapCacheClear$1() {\n this.size = 0;\n this.__data__ = {\n \"hash\": new Hash(),\n \"map\": new (Map$2 || ListCache$3)(),\n \"string\": new Hash()\n };\n}\nvar _mapCacheClear = mapCacheClear$1;\nfunction isKeyable$1(value) {\n var type = typeof value;\n return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n}\nvar _isKeyable = isKeyable$1;\nvar isKeyable = _isKeyable;\nfunction getMapData$4(map, key) {\n var data2 = map.__data__;\n return isKeyable(key) ? data2[typeof key == \"string\" ? \"string\" : \"hash\"] : data2.map;\n}\nvar _getMapData = getMapData$4;\nvar getMapData$3 = _getMapData;\nfunction mapCacheDelete$1(key) {\n var result = getMapData$3(this, key)[\"delete\"](key);\n this.size -= result ? 1 : 0;\n return result;\n}\nvar _mapCacheDelete = mapCacheDelete$1;\nvar getMapData$2 = _getMapData;\nfunction mapCacheGet$1(key) {\n return getMapData$2(this, key).get(key);\n}\nvar _mapCacheGet = mapCacheGet$1;\nvar getMapData$1 = _getMapData;\nfunction mapCacheHas$1(key) {\n return getMapData$1(this, key).has(key);\n}\nvar _mapCacheHas = mapCacheHas$1;\nvar getMapData = _getMapData;\nfunction mapCacheSet$1(key, value) {\n var data2 = getMapData(this, key), size = data2.size;\n data2.set(key, value);\n this.size += data2.size == size ? 0 : 1;\n return this;\n}\nvar _mapCacheSet = mapCacheSet$1;\nvar mapCacheClear = _mapCacheClear, mapCacheDelete = _mapCacheDelete, mapCacheGet = _mapCacheGet, mapCacheHas = _mapCacheHas, mapCacheSet = _mapCacheSet;\nfunction MapCache$3(entries) {\n var index2 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index2 < length) {\n var entry = entries[index2];\n this.set(entry[0], entry[1]);\n }\n}\nMapCache$3.prototype.clear = mapCacheClear;\nMapCache$3.prototype[\"delete\"] = mapCacheDelete;\nMapCache$3.prototype.get = mapCacheGet;\nMapCache$3.prototype.has = mapCacheHas;\nMapCache$3.prototype.set = mapCacheSet;\nvar _MapCache = MapCache$3;\nvar MapCache$2 = _MapCache;\nvar FUNC_ERROR_TEXT = \"Expected a function\";\nfunction memoize$1(func, resolver) {\n if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;\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) || cache;\n return result;\n };\n memoized.cache = new (memoize$1.Cache || MapCache$2)();\n return memoized;\n}\nmemoize$1.Cache = MapCache$2;\nvar memoize_1 = memoize$1;\nvar memoize = memoize_1;\nvar MAX_MEMOIZE_SIZE = 500;\nfunction memoizeCapped$1(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n}\nvar _memoizeCapped = memoizeCapped$1;\nvar memoizeCapped = _memoizeCapped;\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g;\nvar stringToPath$1 = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46) {\n result.push(\"\");\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, \"$1\") : number || match);\n });\n return result;\n});\nvar _stringToPath = stringToPath$1;\nfunction arrayMap$1(array, iteratee) {\n var index2 = -1, length = array == null ? 0 : array.length, result = Array(length);\n while (++index2 < length) {\n result[index2] = iteratee(array[index2], index2, array);\n }\n return result;\n}\nvar _arrayMap = arrayMap$1;\nvar Symbol$2 = _Symbol, arrayMap = _arrayMap, isArray$a = isArray_1, isSymbol$1 = isSymbol_1;\nvar INFINITY$1 = 1 / 0;\nvar symbolProto$1 = Symbol$2 ? Symbol$2.prototype : void 0, symbolToString = symbolProto$1 ? symbolProto$1.toString : void 0;\nfunction baseToString$1(value) {\n if (typeof value == \"string\") {\n return value;\n }\n if (isArray$a(value)) {\n return arrayMap(value, baseToString$1) + \"\";\n }\n if (isSymbol$1(value)) {\n return symbolToString ? symbolToString.call(value) : \"\";\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY$1 ? \"-0\" : result;\n}\nvar _baseToString = baseToString$1;\nvar baseToString = _baseToString;\nfunction toString$1(value) {\n return value == null ? \"\" : baseToString(value);\n}\nvar toString_1 = toString$1;\nvar isArray$9 = isArray_1, isKey$2 = _isKey, stringToPath = _stringToPath, toString = toString_1;\nfunction castPath$2(value, object) {\n if (isArray$9(value)) {\n return value;\n }\n return isKey$2(value, object) ? [value] : stringToPath(toString(value));\n}\nvar _castPath = castPath$2;\nvar baseGetTag$7 = _baseGetTag, isObjectLike$9 = isObjectLike_1;\nvar argsTag$2 = \"[object Arguments]\";\nfunction baseIsArguments$1(value) {\n return isObjectLike$9(value) && baseGetTag$7(value) == argsTag$2;\n}\nvar _baseIsArguments = baseIsArguments$1;\nvar baseIsArguments = _baseIsArguments, isObjectLike$8 = isObjectLike_1;\nvar objectProto$a = Object.prototype;\nvar hasOwnProperty$8 = objectProto$a.hasOwnProperty;\nvar propertyIsEnumerable$1 = objectProto$a.propertyIsEnumerable;\nvar isArguments$3 = baseIsArguments(function() {\n return arguments;\n}()) ? baseIsArguments : function(value) {\n return isObjectLike$8(value) && hasOwnProperty$8.call(value, \"callee\") && !propertyIsEnumerable$1.call(value, \"callee\");\n};\nvar isArguments_1 = isArguments$3;\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\nfunction isIndex$3(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n return !!length && (type == \"number\" || type != \"symbol\" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n}\nvar _isIndex = isIndex$3;\nvar MAX_SAFE_INTEGER = 9007199254740991;\nfunction isLength$3(value) {\n return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\nvar isLength_1 = isLength$3;\nvar isSymbol = isSymbol_1;\nvar INFINITY = 1 / 0;\nfunction toKey$4(value) {\n if (typeof value == \"string\" || isSymbol(value)) {\n return value;\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY ? \"-0\" : result;\n}\nvar _toKey = toKey$4;\nvar castPath$1 = _castPath, isArguments$2 = isArguments_1, isArray$8 = isArray_1, isIndex$2 = _isIndex, isLength$2 = isLength_1, toKey$3 = _toKey;\nfunction hasPath$2(object, path, hasFunc) {\n path = castPath$1(path, object);\n var index2 = -1, length = path.length, result = false;\n while (++index2 < length) {\n var key = toKey$3(path[index2]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index2 != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength$2(length) && isIndex$2(key, length) && (isArray$8(object) || isArguments$2(object));\n}\nvar _hasPath = hasPath$2;\nvar baseHas = _baseHas, hasPath$1 = _hasPath;\nfunction has$1(object, path) {\n return object != null && hasPath$1(object, path, baseHas);\n}\nvar has_1 = has$1;\nvar baseGetTag$6 = _baseGetTag, isObjectLike$7 = isObjectLike_1;\nvar dateTag$2 = \"[object Date]\";\nfunction baseIsDate$1(value) {\n return isObjectLike$7(value) && baseGetTag$6(value) == dateTag$2;\n}\nvar _baseIsDate = baseIsDate$1;\nfunction baseUnary$2(func) {\n return function(value) {\n return func(value);\n };\n}\nvar _baseUnary = baseUnary$2;\nvar _nodeUtilExports = {};\nvar _nodeUtil = {\n get exports() {\n return _nodeUtilExports;\n },\n set exports(v) {\n _nodeUtilExports = v;\n }\n};\n(function(module, exports) {\n var freeGlobal2 = _freeGlobal;\n var freeExports = exports && !exports.nodeType && exports;\n var freeModule = freeExports && true && module && !module.nodeType && module;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var freeProcess = moduleExports && freeGlobal2.process;\n var nodeUtil2 = function() {\n try {\n var types = freeModule && freeModule.require && freeModule.require(\"util\").types;\n if (types) {\n return types;\n }\n return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n } catch (e) {\n }\n }();\n module.exports = nodeUtil2;\n})(_nodeUtil, _nodeUtilExports);\nvar baseIsDate = _baseIsDate, baseUnary$1 = _baseUnary, nodeUtil$1 = _nodeUtilExports;\nvar nodeIsDate = nodeUtil$1 && nodeUtil$1.isDate;\nvar isDate$1 = nodeIsDate ? baseUnary$1(nodeIsDate) : baseIsDate;\nvar isDate_1 = isDate$1;\nvar baseGetTag$5 = _baseGetTag, isArray$7 = isArray_1, isObjectLike$6 = isObjectLike_1;\nvar stringTag$2 = \"[object String]\";\nfunction isString(value) {\n return typeof value == \"string\" || !isArray$7(value) && isObjectLike$6(value) && baseGetTag$5(value) == stringTag$2;\n}\nvar isString_1 = isString;\nfunction arraySome$2(array, predicate) {\n var index2 = -1, length = array == null ? 0 : array.length;\n while (++index2 < length) {\n if (predicate(array[index2], index2, array)) {\n return true;\n }\n }\n return false;\n}\nvar _arraySome = arraySome$2;\nvar ListCache$2 = _ListCache;\nfunction stackClear$1() {\n this.__data__ = new ListCache$2();\n this.size = 0;\n}\nvar _stackClear = stackClear$1;\nfunction stackDelete$1(key) {\n var data2 = this.__data__, result = data2[\"delete\"](key);\n this.size = data2.size;\n return result;\n}\nvar _stackDelete = stackDelete$1;\nfunction stackGet$1(key) {\n return this.__data__.get(key);\n}\nvar _stackGet = stackGet$1;\nfunction stackHas$1(key) {\n return this.__data__.has(key);\n}\nvar _stackHas = stackHas$1;\nvar ListCache$1 = _ListCache, Map$1 = _Map, MapCache$1 = _MapCache;\nvar LARGE_ARRAY_SIZE = 200;\nfunction stackSet$1(key, value) {\n var data2 = this.__data__;\n if (data2 instanceof ListCache$1) {\n var pairs = data2.__data__;\n if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data2.size;\n return this;\n }\n data2 = this.__data__ = new MapCache$1(pairs);\n }\n data2.set(key, value);\n this.size = data2.size;\n return this;\n}\nvar _stackSet = stackSet$1;\nvar ListCache = _ListCache, stackClear = _stackClear, stackDelete = _stackDelete, stackGet = _stackGet, stackHas = _stackHas, stackSet = _stackSet;\nfunction Stack$3(entries) {\n var data2 = this.__data__ = new ListCache(entries);\n this.size = data2.size;\n}\nStack$3.prototype.clear = stackClear;\nStack$3.prototype[\"delete\"] = stackDelete;\nStack$3.prototype.get = stackGet;\nStack$3.prototype.has = stackHas;\nStack$3.prototype.set = stackSet;\nvar _Stack = Stack$3;\nvar HASH_UNDEFINED = \"__lodash_hash_undefined__\";\nfunction setCacheAdd$1(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\nvar _setCacheAdd = setCacheAdd$1;\nfunction setCacheHas$1(value) {\n return this.__data__.has(value);\n}\nvar _setCacheHas = setCacheHas$1;\nvar MapCache = _MapCache, setCacheAdd = _setCacheAdd, setCacheHas = _setCacheHas;\nfunction SetCache$1(values) {\n var index2 = -1, length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n while (++index2 < length) {\n this.add(values[index2]);\n }\n}\nSetCache$1.prototype.add = SetCache$1.prototype.push = setCacheAdd;\nSetCache$1.prototype.has = setCacheHas;\nvar _SetCache = SetCache$1;\nfunction cacheHas$1(cache, key) {\n return cache.has(key);\n}\nvar _cacheHas = cacheHas$1;\nvar SetCache = _SetCache, arraySome$1 = _arraySome, cacheHas = _cacheHas;\nvar COMPARE_PARTIAL_FLAG$5 = 1, COMPARE_UNORDERED_FLAG$3 = 2;\nfunction equalArrays$2(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, arrLength = array.length, othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index2 = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$3 ? new SetCache() : void 0;\n stack.set(array, other);\n stack.set(other, array);\n while (++index2 < arrLength) {\n var arrValue = array[index2], othValue = other[index2];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index2, other, array, stack) : customizer(arrValue, othValue, index2, array, other, stack);\n }\n if (compared !== void 0) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n if (seen) {\n if (!arraySome$1(other, function(othValue2, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack[\"delete\"](array);\n stack[\"delete\"](other);\n return result;\n}\nvar _equalArrays = equalArrays$2;\nvar root$4 = _root;\nvar Uint8Array$2 = root$4.Uint8Array;\nvar _Uint8Array = Uint8Array$2;\nfunction mapToArray$1(map) {\n var index2 = -1, result = Array(map.size);\n map.forEach(function(value, key) {\n result[++index2] = [key, value];\n });\n return result;\n}\nvar _mapToArray = mapToArray$1;\nfunction setToArray$1(set) {\n var index2 = -1, result = Array(set.size);\n set.forEach(function(value) {\n result[++index2] = value;\n });\n return result;\n}\nvar _setToArray = setToArray$1;\nvar Symbol$1 = _Symbol, Uint8Array$1 = _Uint8Array, eq$4 = eq_1, equalArrays$1 = _equalArrays, mapToArray = _mapToArray, setToArray = _setToArray;\nvar COMPARE_PARTIAL_FLAG$4 = 1, COMPARE_UNORDERED_FLAG$2 = 2;\nvar boolTag$2 = \"[object Boolean]\", dateTag$1 = \"[object Date]\", errorTag$1 = \"[object Error]\", mapTag$2 = \"[object Map]\", numberTag$2 = \"[object Number]\", regexpTag$1 = \"[object RegExp]\", setTag$2 = \"[object Set]\", stringTag$1 = \"[object String]\", symbolTag = \"[object Symbol]\";\nvar arrayBufferTag$1 = \"[object ArrayBuffer]\", dataViewTag$2 = \"[object DataView]\";\nvar symbolProto = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;\nfunction equalByTag$1(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag$2:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag$1:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array$1(object), new Uint8Array$1(other))) {\n return false;\n }\n return true;\n case boolTag$2:\n case dateTag$1:\n case numberTag$2:\n return eq$4(+object, +other);\n case errorTag$1:\n return object.name == other.name && object.message == other.message;\n case regexpTag$1:\n case stringTag$1:\n return object == other + \"\";\n case mapTag$2:\n var convert = mapToArray;\n case setTag$2:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4;\n convert || (convert = setToArray);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG$2;\n stack.set(object, other);\n var result = equalArrays$1(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack[\"delete\"](object);\n return result;\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\nvar _equalByTag = equalByTag$1;\nfunction arrayPush$1(array, values) {\n var index2 = -1, length = values.length, offset = array.length;\n while (++index2 < length) {\n array[offset + index2] = values[index2];\n }\n return array;\n}\nvar _arrayPush = arrayPush$1;\nvar arrayPush = _arrayPush, isArray$6 = isArray_1;\nfunction baseGetAllKeys$1(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray$6(object) ? result : arrayPush(result, symbolsFunc(object));\n}\nvar _baseGetAllKeys = baseGetAllKeys$1;\nfunction arrayFilter$1(array, predicate) {\n var index2 = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n while (++index2 < length) {\n var value = array[index2];\n if (predicate(value, index2, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\nvar _arrayFilter = arrayFilter$1;\nfunction stubArray$1() {\n return [];\n}\nvar stubArray_1 = stubArray$1;\nvar arrayFilter = _arrayFilter, stubArray = stubArray_1;\nvar objectProto$9 = Object.prototype;\nvar propertyIsEnumerable = objectProto$9.propertyIsEnumerable;\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\nvar getSymbols$1 = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\nvar _getSymbols = getSymbols$1;\nfunction baseTimes$1(n, iteratee) {\n var index2 = -1, result = Array(n);\n while (++index2 < n) {\n result[index2] = iteratee(index2);\n }\n return result;\n}\nvar _baseTimes = baseTimes$1;\nvar isBufferExports = {};\nvar isBuffer$3 = {\n get exports() {\n return isBufferExports;\n },\n set exports(v) {\n isBufferExports = v;\n }\n};\nfunction stubFalse() {\n return false;\n}\nvar stubFalse_1 = stubFalse;\n(function(module, exports) {\n var root2 = _root, stubFalse2 = stubFalse_1;\n var freeExports = exports && !exports.nodeType && exports;\n var freeModule = freeExports && true && module && !module.nodeType && module;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? root2.Buffer : void 0;\n var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;\n var isBuffer2 = nativeIsBuffer || stubFalse2;\n module.exports = isBuffer2;\n})(isBuffer$3, isBufferExports);\nvar baseGetTag$4 = _baseGetTag, isLength$1 = isLength_1, isObjectLike$5 = isObjectLike_1;\nvar argsTag$1 = \"[object Arguments]\", arrayTag$1 = \"[object Array]\", boolTag$1 = \"[object Boolean]\", dateTag = \"[object Date]\", errorTag = \"[object Error]\", funcTag = \"[object Function]\", mapTag$1 = \"[object Map]\", numberTag$1 = \"[object Number]\", objectTag$3 = \"[object Object]\", regexpTag = \"[object RegExp]\", setTag$1 = \"[object Set]\", stringTag = \"[object String]\", weakMapTag$1 = \"[object WeakMap]\";\nvar arrayBufferTag = \"[object ArrayBuffer]\", dataViewTag$1 = \"[object DataView]\", float32Tag = \"[object Float32Array]\", float64Tag = \"[object Float64Array]\", int8Tag = \"[object Int8Array]\", int16Tag = \"[object Int16Array]\", int32Tag = \"[object Int32Array]\", uint8Tag = \"[object Uint8Array]\", uint8ClampedTag = \"[object Uint8ClampedArray]\", uint16Tag = \"[object Uint16Array]\", uint32Tag = \"[object Uint32Array]\";\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag$1] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag$1] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag$3] = typedArrayTags[regexpTag] = typedArrayTags[setTag$1] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag$1] = false;\nfunction baseIsTypedArray$1(value) {\n return isObjectLike$5(value) && isLength$1(value.length) && !!typedArrayTags[baseGetTag$4(value)];\n}\nvar _baseIsTypedArray = baseIsTypedArray$1;\nvar baseIsTypedArray = _baseIsTypedArray, baseUnary = _baseUnary, nodeUtil = _nodeUtilExports;\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\nvar isTypedArray$3 = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\nvar isTypedArray_1 = isTypedArray$3;\nvar baseTimes = _baseTimes, isArguments$1 = isArguments_1, isArray$5 = isArray_1, isBuffer$2 = isBufferExports, isIndex$1 = _isIndex, isTypedArray$2 = isTypedArray_1;\nvar objectProto$8 = Object.prototype;\nvar hasOwnProperty$7 = objectProto$8.hasOwnProperty;\nfunction arrayLikeKeys$2(value, inherited) {\n var isArr = isArray$5(value), isArg = !isArr && isArguments$1(value), isBuff = !isArr && !isArg && isBuffer$2(value), isType = !isArr && !isArg && !isBuff && isTypedArray$2(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty$7.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.\n (key == \"length\" || // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == \"offset\" || key == \"parent\") || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || // Skip index properties.\n isIndex$1(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\nvar _arrayLikeKeys = arrayLikeKeys$2;\nvar objectProto$7 = Object.prototype;\nfunction isPrototype$3(value) {\n var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto$7;\n return value === proto;\n}\nvar _isPrototype = isPrototype$3;\nfunction overArg$2(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\nvar _overArg = overArg$2;\nvar overArg$1 = _overArg;\nvar nativeKeys$1 = overArg$1(Object.keys, Object);\nvar _nativeKeys = nativeKeys$1;\nvar isPrototype$2 = _isPrototype, nativeKeys = _nativeKeys;\nvar objectProto$6 = Object.prototype;\nvar hasOwnProperty$6 = objectProto$6.hasOwnProperty;\nfunction baseKeys$1(object) {\n if (!isPrototype$2(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty$6.call(object, key) && key != \"constructor\") {\n result.push(key);\n }\n }\n return result;\n}\nvar _baseKeys = baseKeys$1;\nvar isFunction$1 = isFunction_1, isLength = isLength_1;\nfunction isArrayLike$5(value) {\n return value != null && isLength(value.length) && !isFunction$1(value);\n}\nvar isArrayLike_1 = isArrayLike$5;\nvar arrayLikeKeys$1 = _arrayLikeKeys, baseKeys = _baseKeys, isArrayLike$4 = isArrayLike_1;\nfunction keys$3(object) {\n return isArrayLike$4(object) ? arrayLikeKeys$1(object) : baseKeys(object);\n}\nvar keys_1 = keys$3;\nvar baseGetAllKeys = _baseGetAllKeys, getSymbols = _getSymbols, keys$2 = keys_1;\nfunction getAllKeys$1(object) {\n return baseGetAllKeys(object, keys$2, getSymbols);\n}\nvar _getAllKeys = getAllKeys$1;\nvar getAllKeys = _getAllKeys;\nvar COMPARE_PARTIAL_FLAG$3 = 1;\nvar objectProto$5 = Object.prototype;\nvar hasOwnProperty$5 = objectProto$5.hasOwnProperty;\nfunction equalObjects$1(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index2 = objLength;\n while (index2--) {\n var key = objProps[index2];\n if (!(isPartial ? key in other : hasOwnProperty$5.call(other, key))) {\n return false;\n }\n }\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index2 < objLength) {\n key = objProps[index2];\n var objValue = object[key], othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == \"constructor\");\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor, othCtor = other.constructor;\n if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack[\"delete\"](object);\n stack[\"delete\"](other);\n return result;\n}\nvar _equalObjects = equalObjects$1;\nvar getNative$4 = _getNative, root$3 = _root;\nvar DataView$1 = getNative$4(root$3, \"DataView\");\nvar _DataView = DataView$1;\nvar getNative$3 = _getNative, root$2 = _root;\nvar Promise$2 = getNative$3(root$2, \"Promise\");\nvar _Promise = Promise$2;\nvar getNative$2 = _getNative, root$1 = _root;\nvar Set$1 = getNative$2(root$1, \"Set\");\nvar _Set = Set$1;\nvar getNative$1 = _getNative, root = _root;\nvar WeakMap$1 = getNative$1(root, \"WeakMap\");\nvar _WeakMap = WeakMap$1;\nvar DataView = _DataView, Map = _Map, Promise$1 = _Promise, Set = _Set, WeakMap = _WeakMap, baseGetTag$3 = _baseGetTag, toSource = _toSource;\nvar mapTag = \"[object Map]\", objectTag$2 = \"[object Object]\", promiseTag = \"[object Promise]\", setTag = \"[object Set]\", weakMapTag = \"[object WeakMap]\";\nvar dataViewTag = \"[object DataView]\";\nvar dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set), weakMapCtorString = toSource(WeakMap);\nvar getTag$1 = baseGetTag$3;\nif (DataView && getTag$1(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag$1(new Map()) != mapTag || Promise$1 && getTag$1(Promise$1.resolve()) != promiseTag || Set && getTag$1(new Set()) != setTag || WeakMap && getTag$1(new WeakMap()) != weakMapTag) {\n getTag$1 = function(value) {\n var result = baseGetTag$3(value), Ctor = result == objectTag$2 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : \"\";\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n}\nvar _getTag = getTag$1;\nvar Stack$2 = _Stack, equalArrays = _equalArrays, equalByTag = _equalByTag, equalObjects = _equalObjects, getTag = _getTag, isArray$4 = isArray_1, isBuffer$1 = isBufferExports, isTypedArray$1 = isTypedArray_1;\nvar COMPARE_PARTIAL_FLAG$2 = 1;\nvar argsTag = \"[object Arguments]\", arrayTag = \"[object Array]\", objectTag$1 = \"[object Object]\";\nvar objectProto$4 = Object.prototype;\nvar hasOwnProperty$4 = objectProto$4.hasOwnProperty;\nfunction baseIsEqualDeep$1(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray$4(object), othIsArr = isArray$4(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);\n objTag = objTag == argsTag ? objectTag$1 : objTag;\n othTag = othTag == argsTag ? objectTag$1 : othTag;\n var objIsObj = objTag == objectTag$1, othIsObj = othTag == objectTag$1, isSameTag = objTag == othTag;\n if (isSameTag && isBuffer$1(object)) {\n if (!isBuffer$1(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack$2());\n return objIsArr || isTypedArray$1(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {\n var objIsWrapped = objIsObj && hasOwnProperty$4.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty$4.call(other, \"__wrapped__\");\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack$2());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack$2());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\nvar _baseIsEqualDeep = baseIsEqualDeep$1;\nvar baseIsEqualDeep = _baseIsEqualDeep, isObjectLike$4 = isObjectLike_1;\nfunction baseIsEqual$2(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike$4(value) && !isObjectLike$4(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual$2, stack);\n}\nvar _baseIsEqual = baseIsEqual$2;\nvar Stack$1 = _Stack, baseIsEqual$1 = _baseIsEqual;\nvar COMPARE_PARTIAL_FLAG$1 = 1, COMPARE_UNORDERED_FLAG$1 = 2;\nfunction baseIsMatch$1(object, source, matchData, customizer) {\n var index2 = matchData.length, length = index2, noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index2--) {\n var data2 = matchData[index2];\n if (noCustomizer && data2[2] ? data2[1] !== object[data2[0]] : !(data2[0] in object)) {\n return false;\n }\n }\n while (++index2 < length) {\n data2 = matchData[index2];\n var key = data2[0], objValue = object[key], srcValue = data2[1];\n if (noCustomizer && data2[2]) {\n if (objValue === void 0 && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack$1();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === void 0 ? baseIsEqual$1(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n}\nvar _baseIsMatch = baseIsMatch$1;\nvar isObject$7 = isObject_1;\nfunction isStrictComparable$2(value) {\n return value === value && !isObject$7(value);\n}\nvar _isStrictComparable = isStrictComparable$2;\nvar isStrictComparable$1 = _isStrictComparable, keys$1 = keys_1;\nfunction getMatchData$1(object) {\n var result = keys$1(object), length = result.length;\n while (length--) {\n var key = result[length], value = object[key];\n result[length] = [key, value, isStrictComparable$1(value)];\n }\n return result;\n}\nvar _getMatchData = getMatchData$1;\nfunction matchesStrictComparable$2(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));\n };\n}\nvar _matchesStrictComparable = matchesStrictComparable$2;\nvar baseIsMatch = _baseIsMatch, getMatchData = _getMatchData, matchesStrictComparable$1 = _matchesStrictComparable;\nfunction baseMatches$1(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable$1(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\nvar _baseMatches = baseMatches$1;\nvar castPath = _castPath, toKey$2 = _toKey;\nfunction baseGet$2(object, path) {\n path = castPath(path, object);\n var index2 = 0, length = path.length;\n while (object != null && index2 < length) {\n object = object[toKey$2(path[index2++])];\n }\n return index2 && index2 == length ? object : void 0;\n}\nvar _baseGet = baseGet$2;\nvar baseGet$1 = _baseGet;\nfunction get$1(object, path, defaultValue) {\n var result = object == null ? void 0 : baseGet$1(object, path);\n return result === void 0 ? defaultValue : result;\n}\nvar get_1 = get$1;\nfunction baseHasIn$1(object, key) {\n return object != null && key in Object(object);\n}\nvar _baseHasIn = baseHasIn$1;\nvar baseHasIn = _baseHasIn, hasPath = _hasPath;\nfunction hasIn$1(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\nvar hasIn_1 = hasIn$1;\nvar baseIsEqual = _baseIsEqual, get = get_1, hasIn = hasIn_1, isKey$1 = _isKey, isStrictComparable = _isStrictComparable, matchesStrictComparable = _matchesStrictComparable, toKey$1 = _toKey;\nvar COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;\nfunction baseMatchesProperty$1(path, srcValue) {\n if (isKey$1(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey$1(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\nvar _baseMatchesProperty = baseMatchesProperty$1;\nfunction identity$3(value) {\n return value;\n}\nvar identity_1 = identity$3;\nfunction baseProperty$1(key) {\n return function(object) {\n return object == null ? void 0 : object[key];\n };\n}\nvar _baseProperty = baseProperty$1;\nvar baseGet = _baseGet;\nfunction basePropertyDeep$1(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\nvar _basePropertyDeep = basePropertyDeep$1;\nvar baseProperty = _baseProperty, basePropertyDeep = _basePropertyDeep, isKey = _isKey, toKey = _toKey;\nfunction property$1(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\nvar property_1 = property$1;\nvar baseMatches = _baseMatches, baseMatchesProperty = _baseMatchesProperty, identity$2 = identity_1, isArray$3 = isArray_1, property = property_1;\nfunction baseIteratee$2(value) {\n if (typeof value == \"function\") {\n return value;\n }\n if (value == null) {\n return identity$2;\n }\n if (typeof value == \"object\") {\n return isArray$3(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n return property(value);\n}\nvar _baseIteratee = baseIteratee$2;\nfunction createBaseFor$1(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index2 = -1, iterable = Object(object), props = keysFunc(object), length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index2];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\nvar _createBaseFor = createBaseFor$1;\nvar createBaseFor = _createBaseFor;\nvar baseFor$2 = createBaseFor();\nvar _baseFor = baseFor$2;\nvar baseFor$1 = _baseFor, keys = keys_1;\nfunction baseForOwn$2(object, iteratee) {\n return object && baseFor$1(object, iteratee, keys);\n}\nvar _baseForOwn = baseForOwn$2;\nvar isArrayLike$3 = isArrayLike_1;\nfunction createBaseEach$1(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike$3(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length, index2 = fromRight ? length : -1, iterable = Object(collection);\n while (fromRight ? index2-- : ++index2 < length) {\n if (iteratee(iterable[index2], index2, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\nvar _createBaseEach = createBaseEach$1;\nvar baseForOwn$1 = _baseForOwn, createBaseEach = _createBaseEach;\nvar baseEach$1 = createBaseEach(baseForOwn$1);\nvar _baseEach = baseEach$1;\nvar baseEach = _baseEach;\nfunction baseSome$1(collection, predicate) {\n var result;\n baseEach(collection, function(value, index2, collection2) {\n result = predicate(value, index2, collection2);\n return !result;\n });\n return !!result;\n}\nvar _baseSome = baseSome$1;\nvar eq$3 = eq_1, isArrayLike$2 = isArrayLike_1, isIndex = _isIndex, isObject$6 = isObject_1;\nfunction isIterateeCall$3(value, index2, object) {\n if (!isObject$6(object)) {\n return false;\n }\n var type = typeof index2;\n if (type == \"number\" ? isArrayLike$2(object) && isIndex(index2, object.length) : type == \"string\" && index2 in object) {\n return eq$3(object[index2], value);\n }\n return false;\n}\nvar _isIterateeCall = isIterateeCall$3;\nvar arraySome = _arraySome, baseIteratee$1 = _baseIteratee, baseSome = _baseSome, isArray$2 = isArray_1, isIterateeCall$2 = _isIterateeCall;\nfunction some(collection, predicate, guard) {\n var func = isArray$2(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall$2(collection, predicate, guard)) {\n predicate = void 0;\n }\n return func(collection, baseIteratee$1(predicate));\n}\nvar some_1 = some;\nvar baseGetTag$2 = _baseGetTag, isObjectLike$3 = isObjectLike_1;\nvar boolTag = \"[object Boolean]\";\nfunction isBoolean(value) {\n return value === true || value === false || isObjectLike$3(value) && baseGetTag$2(value) == boolTag;\n}\nvar isBoolean_1 = isBoolean;\nvar baseGetTag$1 = _baseGetTag, isObjectLike$2 = isObjectLike_1;\nvar numberTag = \"[object Number]\";\nfunction isNumber(value) {\n return typeof value == \"number\" || isObjectLike$2(value) && baseGetTag$1(value) == numberTag;\n}\nvar isNumber_1 = isNumber;\nvar getNative = _getNative;\nvar defineProperty$2 = function() {\n try {\n var func = getNative(Object, \"defineProperty\");\n func({}, \"\", {});\n return func;\n } catch (e) {\n }\n}();\nvar _defineProperty = defineProperty$2;\nvar defineProperty$1 = _defineProperty;\nfunction baseAssignValue$4(object, key, value) {\n if (key == \"__proto__\" && defineProperty$1) {\n defineProperty$1(object, key, {\n \"configurable\": true,\n \"enumerable\": true,\n \"value\": value,\n \"writable\": true\n });\n } else {\n object[key] = value;\n }\n}\nvar _baseAssignValue = baseAssignValue$4;\nvar baseAssignValue$3 = _baseAssignValue, eq$2 = eq_1;\nvar objectProto$3 = Object.prototype;\nvar hasOwnProperty$3 = objectProto$3.hasOwnProperty;\nfunction assignValue$1(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty$3.call(object, key) && eq$2(objValue, value)) || value === void 0 && !(key in object)) {\n baseAssignValue$3(object, key, value);\n }\n}\nvar _assignValue = assignValue$1;\nvar baseAssignValue$2 = _baseAssignValue, baseForOwn = _baseForOwn, baseIteratee = _baseIteratee;\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee);\n baseForOwn(object, function(value, key, object2) {\n baseAssignValue$2(result, key, iteratee(value, key, object2));\n });\n return result;\n}\nvar mapValues_1 = mapValues;\nfunction apply$2(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\nvar _apply = apply$2;\nvar apply$1 = _apply;\nvar nativeMax = Math.max;\nfunction overRest$1(func, start, transform) {\n start = nativeMax(start === void 0 ? func.length - 1 : start, 0);\n return function() {\n var args = arguments, index2 = -1, length = nativeMax(args.length - start, 0), array = Array(length);\n while (++index2 < length) {\n array[index2] = args[start + index2];\n }\n index2 = -1;\n var otherArgs = Array(start + 1);\n while (++index2 < start) {\n otherArgs[index2] = args[index2];\n }\n otherArgs[start] = transform(array);\n return apply$1(func, this, otherArgs);\n };\n}\nvar _overRest = overRest$1;\nfunction constant$1(value) {\n return function() {\n return value;\n };\n}\nvar constant_1 = constant$1;\nvar constant = constant_1, defineProperty = _defineProperty, identity$1 = identity_1;\nvar baseSetToString$1 = !defineProperty ? identity$1 : function(func, string) {\n return defineProperty(func, \"toString\", {\n \"configurable\": true,\n \"enumerable\": false,\n \"value\": constant(string),\n \"writable\": true\n });\n};\nvar _baseSetToString = baseSetToString$1;\nvar HOT_COUNT = 800, HOT_SPAN = 16;\nvar nativeNow = Date.now;\nfunction shortOut$1(func) {\n var count = 0, lastCalled = 0;\n return function() {\n var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(void 0, arguments);\n };\n}\nvar _shortOut = shortOut$1;\nvar baseSetToString = _baseSetToString, shortOut = _shortOut;\nvar setToString$1 = shortOut(baseSetToString);\nvar _setToString = setToString$1;\nvar identity = identity_1, overRest = _overRest, setToString = _setToString;\nfunction baseRest$3(func, start) {\n return setToString(overRest(func, start, identity), func + \"\");\n}\nvar _baseRest = baseRest$3;\nfunction nativeKeysIn$1(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\nvar _nativeKeysIn = nativeKeysIn$1;\nvar isObject$5 = isObject_1, isPrototype$1 = _isPrototype, nativeKeysIn = _nativeKeysIn;\nvar objectProto$2 = Object.prototype;\nvar hasOwnProperty$2 = objectProto$2.hasOwnProperty;\nfunction baseKeysIn$1(object) {\n if (!isObject$5(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype$1(object), result = [];\n for (var key in object) {\n if (!(key == \"constructor\" && (isProto || !hasOwnProperty$2.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\nvar _baseKeysIn = baseKeysIn$1;\nvar arrayLikeKeys = _arrayLikeKeys, baseKeysIn = _baseKeysIn, isArrayLike$1 = isArrayLike_1;\nfunction keysIn$3(object) {\n return isArrayLike$1(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\nvar keysIn_1 = keysIn$3;\nvar baseRest$2 = _baseRest, eq$1 = eq_1, isIterateeCall$1 = _isIterateeCall, keysIn$2 = keysIn_1;\nvar objectProto$1 = Object.prototype;\nvar hasOwnProperty$1 = objectProto$1.hasOwnProperty;\nvar defaults = baseRest$2(function(object, sources) {\n object = Object(object);\n var index2 = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : void 0;\n if (guard && isIterateeCall$1(sources[0], sources[1], guard)) {\n length = 1;\n }\n while (++index2 < length) {\n var source = sources[index2];\n var props = keysIn$2(source);\n var propsIndex = -1;\n var propsLength = props.length;\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n if (value === void 0 || eq$1(value, objectProto$1[key]) && !hasOwnProperty$1.call(object, key)) {\n object[key] = source[key];\n }\n }\n }\n return object;\n});\nvar defaults_1 = defaults;\nvar baseAssignValue$1 = _baseAssignValue, eq = eq_1;\nfunction assignMergeValue$2(object, key, value) {\n if (value !== void 0 && !eq(object[key], value) || value === void 0 && !(key in object)) {\n baseAssignValue$1(object, key, value);\n }\n}\nvar _assignMergeValue = assignMergeValue$2;\nvar _cloneBufferExports = {};\nvar _cloneBuffer = {\n get exports() {\n return _cloneBufferExports;\n },\n set exports(v) {\n _cloneBufferExports = v;\n }\n};\n(function(module, exports) {\n var root2 = _root;\n var freeExports = exports && !exports.nodeType && exports;\n var freeModule = freeExports && true && module && !module.nodeType && module;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? root2.Buffer : void 0, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;\n function cloneBuffer2(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n }\n module.exports = cloneBuffer2;\n})(_cloneBuffer, _cloneBufferExports);\nvar Uint8Array2 = _Uint8Array;\nfunction cloneArrayBuffer$1(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array2(result).set(new Uint8Array2(arrayBuffer));\n return result;\n}\nvar _cloneArrayBuffer = cloneArrayBuffer$1;\nvar cloneArrayBuffer = _cloneArrayBuffer;\nfunction cloneTypedArray$1(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\nvar _cloneTypedArray = cloneTypedArray$1;\nfunction copyArray$1(source, array) {\n var index2 = -1, length = source.length;\n array || (array = Array(length));\n while (++index2 < length) {\n array[index2] = source[index2];\n }\n return array;\n}\nvar _copyArray = copyArray$1;\nvar isObject$4 = isObject_1;\nvar objectCreate = Object.create;\nvar baseCreate$1 = function() {\n function object() {\n }\n return function(proto) {\n if (!isObject$4(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = void 0;\n return result;\n };\n}();\nvar _baseCreate = baseCreate$1;\nvar overArg = _overArg;\nvar getPrototype$2 = overArg(Object.getPrototypeOf, Object);\nvar _getPrototype = getPrototype$2;\nvar baseCreate = _baseCreate, getPrototype$1 = _getPrototype, isPrototype = _isPrototype;\nfunction initCloneObject$1(object) {\n return typeof object.constructor == \"function\" && !isPrototype(object) ? baseCreate(getPrototype$1(object)) : {};\n}\nvar _initCloneObject = initCloneObject$1;\nvar isArrayLike = isArrayLike_1, isObjectLike$1 = isObjectLike_1;\nfunction isArrayLikeObject$1(value) {\n return isObjectLike$1(value) && isArrayLike(value);\n}\nvar isArrayLikeObject_1 = isArrayLikeObject$1;\nvar baseGetTag = _baseGetTag, getPrototype = _getPrototype, isObjectLike = isObjectLike_1;\nvar objectTag = \"[object Object]\";\nvar funcProto = Function.prototype, objectProto = Object.prototype;\nvar funcToString = funcProto.toString;\nvar hasOwnProperty = objectProto.hasOwnProperty;\nvar objectCtorString = funcToString.call(Object);\nfunction isPlainObject$1(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor == \"function\" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n}\nvar isPlainObject_1 = isPlainObject$1;\nfunction safeGet$2(object, key) {\n if (key === \"constructor\" && typeof object[key] === \"function\") {\n return;\n }\n if (key == \"__proto__\") {\n return;\n }\n return object[key];\n}\nvar _safeGet = safeGet$2;\nvar assignValue = _assignValue, baseAssignValue = _baseAssignValue;\nfunction copyObject$1(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index2 = -1, length = props.length;\n while (++index2 < length) {\n var key = props[index2];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;\n if (newValue === void 0) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\nvar _copyObject = copyObject$1;\nvar copyObject = _copyObject, keysIn$1 = keysIn_1;\nfunction toPlainObject$1(value) {\n return copyObject(value, keysIn$1(value));\n}\nvar toPlainObject_1 = toPlainObject$1;\nvar assignMergeValue$1 = _assignMergeValue, cloneBuffer = _cloneBufferExports, cloneTypedArray = _cloneTypedArray, copyArray = _copyArray, initCloneObject = _initCloneObject, isArguments = isArguments_1, isArray$1 = isArray_1, isArrayLikeObject = isArrayLikeObject_1, isBuffer = isBufferExports, isFunction = isFunction_1, isObject$3 = isObject_1, isPlainObject = isPlainObject_1, isTypedArray = isTypedArray_1, safeGet$1 = _safeGet, toPlainObject = toPlainObject_1;\nfunction baseMergeDeep$1(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet$1(object, key), srcValue = safeGet$1(source, key), stacked = stack.get(srcValue);\n if (stacked) {\n assignMergeValue$1(object, key, stacked);\n return;\n }\n var newValue = customizer ? customizer(objValue, srcValue, key + \"\", object, source, stack) : void 0;\n var isCommon = newValue === void 0;\n if (isCommon) {\n var isArr = isArray$1(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray$1(objValue)) {\n newValue = objValue;\n } else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n } else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n } else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n } else {\n newValue = [];\n }\n } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n } else if (!isObject$3(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n } else {\n isCommon = false;\n }\n }\n if (isCommon) {\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack[\"delete\"](srcValue);\n }\n assignMergeValue$1(object, key, newValue);\n}\nvar _baseMergeDeep = baseMergeDeep$1;\nvar Stack = _Stack, assignMergeValue = _assignMergeValue, baseFor = _baseFor, baseMergeDeep = _baseMergeDeep, isObject$2 = isObject_1, keysIn = keysIn_1, safeGet = _safeGet;\nfunction baseMerge$2(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack());\n if (isObject$2(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge$2, customizer, stack);\n } else {\n var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + \"\", object, source, stack) : void 0;\n if (newValue === void 0) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\nvar _baseMerge = baseMerge$2;\nvar baseMerge$1 = _baseMerge, isObject$1 = isObject_1;\nfunction customDefaultsMerge$1(objValue, srcValue, key, object, source, stack) {\n if (isObject$1(objValue) && isObject$1(srcValue)) {\n stack.set(srcValue, objValue);\n baseMerge$1(objValue, srcValue, void 0, customDefaultsMerge$1, stack);\n stack[\"delete\"](srcValue);\n }\n return objValue;\n}\nvar _customDefaultsMerge = customDefaultsMerge$1;\nvar baseRest$1 = _baseRest, isIterateeCall = _isIterateeCall;\nfunction createAssigner$1(assigner) {\n return baseRest$1(function(object, sources) {\n var index2 = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;\n customizer = assigner.length > 3 && typeof customizer == \"function\" ? (length--, customizer) : void 0;\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? void 0 : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index2 < length) {\n var source = sources[index2];\n if (source) {\n assigner(object, source, index2, customizer);\n }\n }\n return object;\n });\n}\nvar _createAssigner = createAssigner$1;\nvar baseMerge = _baseMerge, createAssigner = _createAssigner;\nvar mergeWith$1 = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\nvar mergeWith_1 = mergeWith$1;\nvar apply = _apply, baseRest = _baseRest, customDefaultsMerge = _customDefaultsMerge, mergeWith = mergeWith_1;\nvar defaultsDeep = baseRest(function(args) {\n args.push(void 0, customDefaultsMerge);\n return apply(mergeWith, void 0, args);\n});\nvar defaultsDeep_1 = defaultsDeep;\nfunction head(array) {\n return array && array.length ? array[0] : void 0;\n}\nvar head_1 = head;\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : void 0;\n}\nvar last_1 = last;\nconst getType = (value) => Object.prototype.toString.call(value).slice(8, -1);\nconst isDate = (value) => isDate_1(value) && !isNaN(value.getTime());\nconst isObject = (value) => getType(value) === \"Object\";\nconst has = has_1;\nconst hasAny = (obj, props) => some_1(props, (p) => has_1(obj, p));\nconst pad = (val, len, char = \"0\") => {\n val = val !== null && val !== void 0 ? String(val) : \"\";\n len = len || 2;\n while (val.length < len) {\n val = `${char}${val}`;\n }\n return val;\n};\nconst isArray = (val) => Array.isArray(val);\nconst arrayHasItems = (array) => isArray(array) && array.length > 0;\nconst resolveEl = (target) => {\n if (target == null)\n return null;\n if (document && isString_1(target))\n return document.querySelector(target);\n return target.$el ?? target;\n};\nconst off = (element, event, handler, opts = void 0) => {\n element.removeEventListener(event, handler, opts);\n};\nconst on = (element, event, handler, opts = void 0) => {\n element.addEventListener(event, handler, opts);\n return () => off(element, event, handler, opts);\n};\nconst elementContains = (element, child) => !!element && !!child && (element === child || element.contains(child));\nconst onSpaceOrEnter = (event, handler) => {\n if (event.key === \" \" || event.key === \"Enter\") {\n handler(event);\n event.preventDefault();\n }\n};\nconst omit = (obj, ...keys2) => {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys2.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n};\nconst pick = (obj, keys2) => {\n const ret = {};\n keys2.forEach((key) => {\n if (key in obj)\n ret[key] = obj[key];\n });\n return ret;\n};\nfunction clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\nvar toIntegerExports = {};\nvar toInteger$2 = {\n get exports() {\n return toIntegerExports;\n },\n set exports(v) {\n toIntegerExports = v;\n }\n};\n(function(module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = toInteger2;\n function toInteger2(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n }\n module.exports = exports.default;\n})(toInteger$2, toIntegerExports);\nconst toInteger$1 = /* @__PURE__ */ getDefaultExportFromCjs(toIntegerExports);\nvar getTimezoneOffsetInMillisecondsExports = {};\nvar getTimezoneOffsetInMilliseconds$2 = {\n get exports() {\n return getTimezoneOffsetInMillisecondsExports;\n },\n set exports(v) {\n getTimezoneOffsetInMillisecondsExports = v;\n }\n};\n(function(module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = getTimezoneOffsetInMilliseconds2;\n function getTimezoneOffsetInMilliseconds2(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n }\n module.exports = exports.default;\n})(getTimezoneOffsetInMilliseconds$2, getTimezoneOffsetInMillisecondsExports);\nconst getTimezoneOffsetInMilliseconds$1 = /* @__PURE__ */ getDefaultExportFromCjs(getTimezoneOffsetInMillisecondsExports);\nfunction tzTokenizeDate(date, timeZone) {\n var dtf = getDateTimeFormat(timeZone);\n return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date);\n}\nvar typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\nfunction partsOffset(dtf, date) {\n try {\n var formatted = dtf.formatToParts(date);\n var filled = [];\n for (var i = 0; i < formatted.length; i++) {\n var pos = typeToPos[formatted[i].type];\n if (pos >= 0) {\n filled[pos] = parseInt(formatted[i].value, 10);\n }\n }\n return filled;\n } catch (error) {\n if (error instanceof RangeError) {\n return [NaN];\n }\n throw error;\n }\n}\nfunction hackyOffset(dtf, date) {\n var formatted = dtf.format(date).replace(/\\u200E/g, \"\");\n var parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted);\n return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]];\n}\nvar dtfCache = {};\nfunction getDateTimeFormat(timeZone) {\n if (!dtfCache[timeZone]) {\n var testDateFormatted = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: \"America/New_York\",\n year: \"numeric\",\n month: \"numeric\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n }).format(/* @__PURE__ */ new Date(\"2014-06-25T04:00:00.123Z\"));\n var hourCycleSupported = testDateFormatted === \"06/25/2014, 00:00:00\" || testDateFormatted === \"‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00\";\n dtfCache[timeZone] = hourCycleSupported ? new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone,\n year: \"numeric\",\n month: \"numeric\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n }) : new Intl.DateTimeFormat(\"en-US\", {\n hourCycle: \"h23\",\n timeZone,\n year: \"numeric\",\n month: \"numeric\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n });\n }\n return dtfCache[timeZone];\n}\nfunction newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n var utcDate = /* @__PURE__ */ new Date(0);\n utcDate.setUTCFullYear(fullYear, month, day);\n utcDate.setUTCHours(hour, minute, second, millisecond);\n return utcDate;\n}\nvar MILLISECONDS_IN_HOUR$1 = 36e5;\nvar MILLISECONDS_IN_MINUTE$1 = 6e4;\nvar patterns$1 = {\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-]\\d{2})$/,\n timezoneHHMM: /^([+-]\\d{2}):?(\\d{2})$/\n};\nfunction tzParseTimezone(timezoneString, date, isUtcDate) {\n var token2;\n var absoluteOffset;\n if (!timezoneString) {\n return 0;\n }\n token2 = patterns$1.timezoneZ.exec(timezoneString);\n if (token2) {\n return 0;\n }\n var hours2;\n token2 = patterns$1.timezoneHH.exec(timezoneString);\n if (token2) {\n hours2 = parseInt(token2[1], 10);\n if (!validateTimezone(hours2)) {\n return NaN;\n }\n return -(hours2 * MILLISECONDS_IN_HOUR$1);\n }\n token2 = patterns$1.timezoneHHMM.exec(timezoneString);\n if (token2) {\n hours2 = parseInt(token2[1], 10);\n var minutes = parseInt(token2[2], 10);\n if (!validateTimezone(hours2, minutes)) {\n return NaN;\n }\n absoluteOffset = Math.abs(hours2) * MILLISECONDS_IN_HOUR$1 + minutes * MILLISECONDS_IN_MINUTE$1;\n return hours2 > 0 ? -absoluteOffset : absoluteOffset;\n }\n if (isValidTimezoneIANAString(timezoneString)) {\n date = new Date(date || Date.now());\n var utcDate = isUtcDate ? date : toUtcDate(date);\n var offset = calcOffset(utcDate, timezoneString);\n var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString);\n return -fixedOffset;\n }\n return NaN;\n}\nfunction toUtcDate(date) {\n return newDateUTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n}\nfunction calcOffset(date, timezoneString) {\n var tokens = tzTokenizeDate(date, timezoneString);\n var asUTC = newDateUTC(\n tokens[0],\n tokens[1] - 1,\n tokens[2],\n tokens[3] % 24,\n tokens[4],\n tokens[5],\n 0\n ).getTime();\n var asTS = date.getTime();\n var over = asTS % 1e3;\n asTS -= over >= 0 ? over : 1e3 + over;\n return asUTC - asTS;\n}\nfunction fixOffset(date, offset, timezoneString) {\n var localTS = date.getTime();\n var utcGuess = localTS - offset;\n var o2 = calcOffset(new Date(utcGuess), timezoneString);\n if (offset === o2) {\n return offset;\n }\n utcGuess -= o2 - offset;\n var o3 = calcOffset(new Date(utcGuess), timezoneString);\n if (o2 === o3) {\n return o2;\n }\n return Math.max(o2, o3);\n}\nfunction validateTimezone(hours2, minutes) {\n return -23 <= hours2 && hours2 <= 23 && (minutes == null || 0 <= minutes && minutes <= 59);\n}\nvar validIANATimezoneCache = {};\nfunction isValidTimezoneIANAString(timeZoneString) {\n if (validIANATimezoneCache[timeZoneString])\n return true;\n try {\n new Intl.DateTimeFormat(void 0, { timeZone: timeZoneString });\n validIANATimezoneCache[timeZoneString] = true;\n return true;\n } catch (error) {\n return false;\n }\n}\nvar tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/;\nconst tzPattern$1 = tzPattern;\nvar MILLISECONDS_IN_HOUR = 36e5;\nvar MILLISECONDS_IN_MINUTE = 6e4;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\nvar patterns = {\n dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n datePattern: /^([0-9W+-]+)(.*)/,\n plainTime: /:/,\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/,\n // 0 additional digits\n /^([+-]\\d{3})$/,\n // 1 additional digit\n /^([+-]\\d{4})$/\n // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/,\n // 0 additional digits\n /^([+-]\\d{5})/,\n // 1 additional digit\n /^([+-]\\d{6})/\n // 2 additional digits\n ],\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n // time zone tokens (to identify the presence of a tz)\n timeZone: tzPattern$1\n};\nfunction toDate$1(argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \" + arguments.length + \" present\");\n }\n if (argument === null) {\n return /* @__PURE__ */ new Date(NaN);\n }\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger$1(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError(\"additionalDigits must be 0, 1 or 2\");\n }\n if (argument instanceof Date || typeof argument === \"object\" && Object.prototype.toString.call(argument) === \"[object Date]\") {\n return new Date(argument.getTime());\n } else if (typeof argument === \"number\" || Object.prototype.toString.call(argument) === \"[object Number]\") {\n return new Date(argument);\n } else if (!(typeof argument === \"string\" || Object.prototype.toString.call(argument) === \"[object String]\")) {\n return /* @__PURE__ */ new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n var date = parseDate$1(restDateString, year);\n if (isNaN(date)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n }\n if (dateStrings.timeZone || options.timeZone) {\n offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time));\n if (isNaN(offset)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n } else {\n offset = getTimezoneOffsetInMilliseconds$1(new Date(timestamp + time));\n offset = getTimezoneOffsetInMilliseconds$1(new Date(timestamp + time + offset));\n }\n return new Date(timestamp + time + offset);\n } else {\n return /* @__PURE__ */ new Date(NaN);\n }\n}\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var parts = patterns.dateTimePattern.exec(dateString);\n var timeString;\n if (!parts) {\n parts = patterns.datePattern.exec(dateString);\n if (parts) {\n dateStrings.date = parts[1];\n timeString = parts[2];\n } else {\n dateStrings.date = null;\n timeString = dateString;\n }\n } else {\n dateStrings.date = parts[1];\n timeString = parts[3];\n }\n if (timeString) {\n var token2 = patterns.timeZone.exec(timeString);\n if (token2) {\n dateStrings.time = timeString.replace(token2[1], \"\");\n dateStrings.timeZone = token2[1].trim();\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits];\n var patternYYYYY = patterns.YYYYY[additionalDigits];\n var token2;\n token2 = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token2) {\n var yearString = token2[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n };\n }\n token2 = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token2) {\n var centuryString = token2[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n };\n }\n return {\n year: null\n };\n}\nfunction parseDate$1(dateString, year) {\n if (year === null) {\n return null;\n }\n var token2;\n var date;\n var month;\n var week;\n if (dateString.length === 0) {\n date = /* @__PURE__ */ new Date(0);\n date.setUTCFullYear(year);\n return date;\n }\n token2 = patterns.MM.exec(dateString);\n if (token2) {\n date = /* @__PURE__ */ new Date(0);\n month = parseInt(token2[1], 10) - 1;\n if (!validateDate(year, month)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n date.setUTCFullYear(year, month);\n return date;\n }\n token2 = patterns.DDD.exec(dateString);\n if (token2) {\n date = /* @__PURE__ */ new Date(0);\n var dayOfYear = parseInt(token2[1], 10);\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n date.setUTCFullYear(year, 0, dayOfYear);\n return date;\n }\n token2 = patterns.MMDD.exec(dateString);\n if (token2) {\n date = /* @__PURE__ */ new Date(0);\n month = parseInt(token2[1], 10) - 1;\n var day = parseInt(token2[2], 10);\n if (!validateDate(year, month, day)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n date.setUTCFullYear(year, month, day);\n return date;\n }\n token2 = patterns.Www.exec(dateString);\n if (token2) {\n week = parseInt(token2[1], 10) - 1;\n if (!validateWeekDate(year, week)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n return dayOfISOWeekYear(year, week);\n }\n token2 = patterns.WwwD.exec(dateString);\n if (token2) {\n week = parseInt(token2[1], 10) - 1;\n var dayOfWeek = parseInt(token2[2], 10) - 1;\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n }\n return null;\n}\nfunction parseTime(timeString) {\n var token2;\n var hours2;\n var minutes;\n token2 = patterns.HH.exec(timeString);\n if (token2) {\n hours2 = parseFloat(token2[1].replace(\",\", \".\"));\n if (!validateTime(hours2)) {\n return NaN;\n }\n return hours2 % 24 * MILLISECONDS_IN_HOUR;\n }\n token2 = patterns.HHMM.exec(timeString);\n if (token2) {\n hours2 = parseInt(token2[1], 10);\n minutes = parseFloat(token2[2].replace(\",\", \".\"));\n if (!validateTime(hours2, minutes)) {\n return NaN;\n }\n return hours2 % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n }\n token2 = patterns.HHMMSS.exec(timeString);\n if (token2) {\n hours2 = parseInt(token2[1], 10);\n minutes = parseInt(token2[2], 10);\n var seconds = parseFloat(token2[3].replace(\",\", \".\"));\n if (!validateTime(hours2, minutes, seconds)) {\n return NaN;\n }\n return hours2 % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1e3;\n }\n return null;\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = /* @__PURE__ */ new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n if (month < 0 || month > 11) {\n return false;\n }\n if (date != null) {\n if (date < 1) {\n return false;\n }\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false;\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false;\n }\n }\n return true;\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false;\n }\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && dayOfYear > 366) {\n return false;\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false;\n }\n return true;\n}\nfunction validateWeekDate(year, week, day) {\n if (week < 0 || week > 52) {\n return false;\n }\n if (day != null && (day < 0 || day > 6)) {\n return false;\n }\n return true;\n}\nfunction validateTime(hours2, minutes, seconds) {\n if (hours2 != null && (hours2 < 0 || hours2 >= 25)) {\n return false;\n }\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false;\n }\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false;\n }\n return true;\n}\nfunction requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + \" argument\" + (required > 1 ? \"s\" : \"\") + \" required, but only \" + args.length + \" present\");\n }\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof2(obj2) {\n return typeof obj2;\n };\n } else {\n _typeof = function _typeof2(obj2) {\n return obj2 && typeof Symbol === \"function\" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? \"symbol\" : typeof obj2;\n };\n }\n return _typeof(obj);\n}\nfunction toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n if (argument instanceof Date || _typeof(argument) === \"object\" && argStr === \"[object Date]\") {\n return new Date(argument.getTime());\n } else if (typeof argument === \"number\" || argStr === \"[object Number]\") {\n return new Date(argument);\n } else {\n if ((typeof argument === \"string\" || argStr === \"[object String]\") && typeof console !== \"undefined\") {\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n console.warn(new Error().stack);\n }\n return /* @__PURE__ */ new Date(NaN);\n }\n}\nfunction toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\nvar defaultOptions = {};\nfunction getDefaultOptions() {\n return defaultOptions;\n}\nfunction startOfWeek$1(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions2 = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions2.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions2.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError(\"weekStartsOn must be between 0 and 6 inclusively\");\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}\nvar MILLISECONDS_IN_WEEK$2 = 6048e5;\nfunction differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek$1(dirtyDateLeft, options);\n var startOfWeekRight = startOfWeek$1(dirtyDateRight, options);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight);\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK$2);\n}\nfunction lastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction getWeeksInMonth(date, options) {\n requiredArgs(1, arguments);\n return differenceInCalendarWeeks(lastDayOfMonth(date), startOfMonth(date), options) + 1;\n}\nfunction getWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var defaultOptions2 = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions2.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\"firstWeekContainsDate must be between 1 and 7 inclusively\");\n }\n var firstWeekOfNextYear = /* @__PURE__ */ new Date(0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfWeek$1(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = /* @__PURE__ */ new Date(0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek$1(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\nfunction startOfWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions2 = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions2.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getWeekYear(dirtyDate, options);\n var firstWeek = /* @__PURE__ */ new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek$1(firstWeek, options);\n return date;\n}\nvar MILLISECONDS_IN_WEEK$1 = 6048e5;\nfunction getWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfWeek$1(date, options).getTime() - startOfWeekYear(date, options).getTime();\n return Math.round(diff / MILLISECONDS_IN_WEEK$1) + 1;\n}\nfunction startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek$1(dirtyDate, {\n weekStartsOn: 1\n });\n}\nfunction getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = /* @__PURE__ */ new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = /* @__PURE__ */ new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\nfunction startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = /* @__PURE__ */ new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}\nvar MILLISECONDS_IN_WEEK = 6048e5;\nfunction getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nfunction addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n if (!amount) {\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}\nfunction addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return /* @__PURE__ */ new Date(NaN);\n }\n if (!amount) {\n return date;\n }\n var dayOfMonth = date.getDate();\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n return endOfDesiredMonth;\n } else {\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}\nfunction addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}\nconst viewAddressKeys = {\n daily: [\"year\", \"month\", \"day\"],\n weekly: [\"year\", \"month\", \"week\"],\n monthly: [\"year\", \"month\"]\n};\nfunction getDays({\n monthComps,\n prevMonthComps,\n nextMonthComps\n}, locale) {\n const days = [];\n const {\n firstDayOfWeek,\n firstWeekday,\n isoWeeknumbers,\n weeknumbers,\n numDays,\n numWeeks\n } = monthComps;\n const prevMonthDaysToShow = firstWeekday + (firstWeekday < firstDayOfWeek ? daysInWeek : 0) - firstDayOfWeek;\n let prevMonth = true;\n let thisMonth = false;\n let nextMonth = false;\n let position = 0;\n const formatter = new Intl.DateTimeFormat(locale.id, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\"\n });\n let day = prevMonthComps.numDays - prevMonthDaysToShow + 1;\n let dayFromEnd = prevMonthComps.numDays - day + 1;\n let weekdayOrdinal = Math.floor((day - 1) / daysInWeek + 1);\n let weekdayOrdinalFromEnd = 1;\n let week = prevMonthComps.numWeeks;\n let weekFromEnd = 1;\n let month = prevMonthComps.month;\n let year = prevMonthComps.year;\n const today = /* @__PURE__ */ new Date();\n const todayDay = today.getDate();\n const todayMonth = today.getMonth() + 1;\n const todayYear = today.getFullYear();\n for (let w = 1; w <= weeksInMonth; w++) {\n for (let i = 1, weekday = firstDayOfWeek; i <= daysInWeek; i++, weekday += weekday === daysInWeek ? 1 - daysInWeek : 1) {\n if (prevMonth && weekday === firstWeekday) {\n day = 1;\n dayFromEnd = monthComps.numDays;\n weekdayOrdinal = Math.floor((day - 1) / daysInWeek + 1);\n weekdayOrdinalFromEnd = Math.floor((numDays - day) / daysInWeek + 1);\n week = 1;\n weekFromEnd = numWeeks;\n month = monthComps.month;\n year = monthComps.year;\n prevMonth = false;\n thisMonth = true;\n }\n const startDate = locale.getDateFromParams(year, month, day, 0, 0, 0, 0);\n const noonDate = locale.getDateFromParams(year, month, day, 12, 0, 0, 0);\n const endDate = locale.getDateFromParams(\n year,\n month,\n day,\n 23,\n 59,\n 59,\n 999\n );\n const date = startDate;\n const id = `${pad(year, 4)}-${pad(month, 2)}-${pad(day, 2)}`;\n const weekdayPosition = i;\n const weekdayPositionFromEnd = daysInWeek - i;\n const weeknumber = weeknumbers[w - 1];\n const isoWeeknumber = isoWeeknumbers[w - 1];\n const isToday = day === todayDay && month === todayMonth && year === todayYear;\n const isFirstDay = thisMonth && day === 1;\n const isLastDay = thisMonth && day === numDays;\n const onTop = w === 1;\n const onBottom = w === numWeeks;\n const onLeft = i === 1;\n const onRight = i === daysInWeek;\n const dayIndex = getDayIndex(year, month, day);\n days.push({\n locale,\n id,\n position: ++position,\n label: day.toString(),\n ariaLabel: formatter.format(new Date(year, month - 1, day)),\n day,\n dayFromEnd,\n weekday,\n weekdayPosition,\n weekdayPositionFromEnd,\n weekdayOrdinal,\n weekdayOrdinalFromEnd,\n week,\n weekFromEnd,\n weekPosition: w,\n weeknumber,\n isoWeeknumber,\n month,\n year,\n date,\n startDate,\n endDate,\n noonDate,\n dayIndex,\n isToday,\n isFirstDay,\n isLastDay,\n isDisabled: !thisMonth,\n isFocusable: !thisMonth,\n isFocused: false,\n inMonth: thisMonth,\n inPrevMonth: prevMonth,\n inNextMonth: nextMonth,\n onTop,\n onBottom,\n onLeft,\n onRight,\n classes: [\n `id-${id}`,\n `day-${day}`,\n `day-from-end-${dayFromEnd}`,\n `weekday-${weekday}`,\n `weekday-position-${weekdayPosition}`,\n `weekday-ordinal-${weekdayOrdinal}`,\n `weekday-ordinal-from-end-${weekdayOrdinalFromEnd}`,\n `week-${week}`,\n `week-from-end-${weekFromEnd}`,\n {\n \"is-today\": isToday,\n \"is-first-day\": isFirstDay,\n \"is-last-day\": isLastDay,\n \"in-month\": thisMonth,\n \"in-prev-month\": prevMonth,\n \"in-next-month\": nextMonth,\n \"on-top\": onTop,\n \"on-bottom\": onBottom,\n \"on-left\": onLeft,\n \"on-right\": onRight\n }\n ]\n });\n if (thisMonth && isLastDay) {\n thisMonth = false;\n nextMonth = true;\n day = 1;\n dayFromEnd = numDays;\n weekdayOrdinal = 1;\n weekdayOrdinalFromEnd = Math.floor((numDays - day) / daysInWeek + 1);\n week = 1;\n weekFromEnd = nextMonthComps.numWeeks;\n month = nextMonthComps.month;\n year = nextMonthComps.year;\n } else {\n day++;\n dayFromEnd--;\n weekdayOrdinal = Math.floor((day - 1) / daysInWeek + 1);\n weekdayOrdinalFromEnd = Math.floor((numDays - day) / daysInWeek + 1);\n }\n }\n week++;\n weekFromEnd--;\n }\n return days;\n}\nfunction getWeeks(days, showWeeknumbers, showIsoWeeknumbers, locale) {\n const result = days.reduce((result2, day, i) => {\n const weekIndex = Math.floor(i / 7);\n let week = result2[weekIndex];\n if (!week) {\n week = {\n id: `week-${weekIndex + 1}`,\n title: \"\",\n week: day.week,\n weekPosition: day.weekPosition,\n weeknumber: day.weeknumber,\n isoWeeknumber: day.isoWeeknumber,\n weeknumberDisplay: showWeeknumbers ? day.weeknumber : showIsoWeeknumbers ? day.isoWeeknumber : void 0,\n days: []\n };\n result2[weekIndex] = week;\n }\n week.days.push(day);\n return result2;\n }, Array(days.length / daysInWeek));\n result.forEach((week) => {\n const fromDay = week.days[0];\n const toDay = week.days[week.days.length - 1];\n if (fromDay.month === toDay.month) {\n week.title = `${locale.formatDate(fromDay.date, \"MMMM YYYY\")}`;\n } else if (fromDay.year === toDay.year) {\n week.title = `${locale.formatDate(\n fromDay.date,\n \"MMM\"\n )} - ${locale.formatDate(toDay.date, \"MMM YYYY\")}`;\n } else {\n week.title = `${locale.formatDate(\n fromDay.date,\n \"MMM YYYY\"\n )} - ${locale.formatDate(toDay.date, \"MMM YYYY\")}`;\n }\n });\n return result;\n}\nfunction getWeekdays(week, locale) {\n return week.days.map((day) => ({\n label: locale.formatDate(day.date, locale.masks.weekdays),\n weekday: day.weekday\n }));\n}\nfunction getPageId(month, year) {\n return `${year}.${pad(month, 2)}`;\n}\nfunction getPageAddressForDate(date, view, locale) {\n return pick(\n locale.getDateParts(locale.toDate(date)),\n viewAddressKeys[view]\n );\n}\nfunction addPages({ day, week, month, year }, count, view, locale) {\n if (view === \"daily\" && day) {\n const date = new Date(year, month - 1, day);\n const newDate = addDays(date, count);\n return {\n day: newDate.getDate(),\n month: newDate.getMonth() + 1,\n year: newDate.getFullYear()\n };\n } else if (view === \"weekly\" && week) {\n const comps = locale.getMonthParts(month, year);\n const date = comps.firstDayOfMonth;\n const newDate = addDays(date, (week - 1 + count) * 7);\n const parts = locale.getDateParts(newDate);\n return {\n week: parts.week,\n month: parts.month,\n year: parts.year\n };\n } else {\n const date = new Date(year, month - 1, 1);\n const newDate = addMonths(date, count);\n return {\n month: newDate.getMonth() + 1,\n year: newDate.getFullYear()\n };\n }\n}\nfunction pageIsValid(page) {\n return page != null && page.month != null && page.year != null;\n}\nfunction pageIsBeforePage(page, comparePage) {\n if (!pageIsValid(page) || !pageIsValid(comparePage))\n return false;\n page = page;\n comparePage = comparePage;\n if (page.year !== comparePage.year)\n return page.year < comparePage.year;\n if (page.month && comparePage.month && page.month !== comparePage.month)\n return page.month < comparePage.month;\n if (page.week && comparePage.week && page.week !== comparePage.week) {\n return page.week < comparePage.week;\n }\n if (page.day && comparePage.day && page.day !== comparePage.day) {\n return page.day < comparePage.day;\n }\n return false;\n}\nfunction pageIsAfterPage(page, comparePage) {\n if (!pageIsValid(page) || !pageIsValid(comparePage))\n return false;\n page = page;\n comparePage = comparePage;\n if (page.year !== comparePage.year) {\n return page.year > comparePage.year;\n }\n if (page.month && comparePage.month && page.month !== comparePage.month) {\n return page.month > comparePage.month;\n }\n if (page.week && comparePage.week && page.week !== comparePage.week) {\n return page.week > comparePage.week;\n }\n if (page.day && comparePage.day && page.day !== comparePage.day) {\n return page.day > comparePage.day;\n }\n return false;\n}\nfunction pageIsBetweenPages(page, fromPage, toPage) {\n return (page || false) && !pageIsBeforePage(page, fromPage) && !pageIsAfterPage(page, toPage);\n}\nfunction pageIsEqualToPage(aPage, bPage) {\n if (!aPage && bPage)\n return false;\n if (aPage && !bPage)\n return false;\n if (!aPage && !bPage)\n return true;\n aPage = aPage;\n bPage = bPage;\n return aPage.year === bPage.year && aPage.month === bPage.month && aPage.week === bPage.week && aPage.day === bPage.day;\n}\nfunction pageRangeToArray(from, to, view, locale) {\n if (!pageIsValid(from) || !pageIsValid(to))\n return [];\n const result = [];\n while (!pageIsAfterPage(from, to)) {\n result.push(from);\n from = addPages(from, 1, view, locale);\n }\n return result;\n}\nfunction getPageKey(config) {\n const { day, week, month, year } = config;\n let id = `${year}-${pad(month, 2)}`;\n if (week)\n id = `${id}-w${week}`;\n if (day)\n id = `${id}-${pad(day, 2)}`;\n return id;\n}\nfunction getCachedPage(config, locale) {\n const { month, year, showWeeknumbers, showIsoWeeknumbers } = config;\n const date = new Date(year, month - 1, 15);\n const monthComps = locale.getMonthParts(month, year);\n const prevMonthComps = locale.getPrevMonthParts(month, year);\n const nextMonthComps = locale.getNextMonthParts(month, year);\n const days = getDays({ monthComps, prevMonthComps, nextMonthComps }, locale);\n const weeks = getWeeks(days, showWeeknumbers, showIsoWeeknumbers, locale);\n const weekdays2 = getWeekdays(weeks[0], locale);\n return {\n id: getPageKey(config),\n month,\n year,\n monthTitle: locale.formatDate(date, locale.masks.title),\n shortMonthLabel: locale.formatDate(date, \"MMM\"),\n monthLabel: locale.formatDate(date, \"MMMM\"),\n shortYearLabel: year.toString().substring(2),\n yearLabel: year.toString(),\n monthComps,\n prevMonthComps,\n nextMonthComps,\n days,\n weeks,\n weekdays: weekdays2\n };\n}\nfunction getPage(config, cachedPage) {\n const { day, week, view, trimWeeks } = config;\n const page = {\n ...cachedPage,\n ...config,\n title: \"\",\n viewDays: [],\n viewWeeks: []\n };\n switch (view) {\n case \"daily\": {\n let dayObj = page.days.find((d) => d.inMonth);\n if (day) {\n dayObj = page.days.find((d) => d.day === day && d.inMonth) || dayObj;\n } else if (week) {\n dayObj = page.days.find((d) => d.week === week && d.inMonth);\n }\n const weekObj = page.weeks[dayObj.week - 1];\n page.viewWeeks = [weekObj];\n page.viewDays = [dayObj];\n page.week = dayObj.week;\n page.weekTitle = weekObj.title;\n page.day = dayObj.day;\n page.dayTitle = dayObj.ariaLabel;\n page.title = page.dayTitle;\n break;\n }\n case \"weekly\": {\n page.week = week || 1;\n const weekObj = page.weeks[page.week - 1];\n page.viewWeeks = [weekObj];\n page.viewDays = weekObj.days;\n page.weekTitle = weekObj.title;\n page.title = page.weekTitle;\n break;\n }\n default: {\n page.title = page.monthTitle;\n page.viewWeeks = page.weeks.slice(\n 0,\n trimWeeks ? page.monthComps.numWeeks : void 0\n );\n page.viewDays = page.days;\n break;\n }\n }\n return page;\n}\nclass Cache {\n constructor(size, createKey, createItem) {\n __publicField(this, \"keys\", []);\n __publicField(this, \"store\", {});\n this.size = size;\n this.createKey = createKey;\n this.createItem = createItem;\n }\n get(...args) {\n const key = this.createKey(...args);\n return this.store[key];\n }\n getOrSet(...args) {\n const key = this.createKey(...args);\n if (this.store[key])\n return this.store[key];\n const item = this.createItem(...args);\n if (this.keys.length >= this.size) {\n const removeKey = this.keys.shift();\n if (removeKey != null) {\n delete this.store[removeKey];\n }\n }\n this.keys.push(key);\n this.store[key] = item;\n return item;\n }\n}\nclass DateRange {\n constructor(config, locale = new Locale()) {\n __publicField(this, \"order\");\n __publicField(this, \"locale\");\n __publicField(this, \"start\", null);\n __publicField(this, \"end\", null);\n __publicField(this, \"repeat\", null);\n var _a;\n this.locale = locale;\n const { start, end, span, order, repeat } = config;\n if (isDate(start)) {\n this.start = locale.getDateParts(start);\n }\n if (isDate(end)) {\n this.end = locale.getDateParts(end);\n } else if (this.start != null && span) {\n this.end = locale.getDateParts(addDays(this.start.date, span - 1));\n }\n this.order = order ?? 0;\n if (repeat) {\n this.repeat = new DateRepeat(\n {\n from: (_a = this.start) == null ? void 0 : _a.date,\n ...repeat\n },\n {\n locale: this.locale\n }\n );\n }\n }\n static fromMany(ranges, locale) {\n return (isArray(ranges) ? ranges : [ranges]).filter((d) => d).map((d) => DateRange.from(d, locale));\n }\n static from(source, locale) {\n if (source instanceof DateRange)\n return source;\n const config = {\n start: null,\n end: null\n };\n if (source != null) {\n if (isArray(source)) {\n config.start = source[0] ?? null;\n config.end = source[1] ?? null;\n } else if (isObject(source)) {\n Object.assign(config, source);\n } else {\n config.start = source;\n config.end = source;\n }\n }\n if (config.start != null)\n config.start = new Date(config.start);\n if (config.end != null)\n config.end = new Date(config.end);\n return new DateRange(config, locale);\n }\n get opts() {\n const { order, locale } = this;\n return { order, locale };\n }\n get hasRepeat() {\n return !!this.repeat;\n }\n get isSingleDay() {\n const { start, end } = this;\n return start && end && start.year === end.year && start.month === end.month && start.day === end.day;\n }\n get isMultiDay() {\n return !this.isSingleDay;\n }\n get daySpan() {\n if (this.start == null || this.end == null) {\n if (this.hasRepeat)\n return 1;\n return Infinity;\n }\n return this.end.dayIndex - this.start.dayIndex;\n }\n startsOnDay(dayParts) {\n var _a, _b;\n return ((_a = this.start) == null ? void 0 : _a.dayIndex) === dayParts.dayIndex || !!((_b = this.repeat) == null ? void 0 : _b.passes(dayParts));\n }\n intersectsDay(dayIndex) {\n return this.intersectsDayRange(dayIndex, dayIndex);\n }\n intersectsRange(range) {\n var _a, _b;\n return this.intersectsDayRange(\n ((_a = range.start) == null ? void 0 : _a.dayIndex) ?? -Infinity,\n ((_b = range.end) == null ? void 0 : _b.dayIndex) ?? Infinity\n );\n }\n intersectsDayRange(startDayIndex, endDayIndex) {\n if (this.start && this.start.dayIndex > endDayIndex)\n return false;\n if (this.end && this.end.dayIndex < startDayIndex)\n return false;\n return true;\n }\n}\nclass DateRangeContext {\n constructor() {\n __publicField(this, \"records\", {});\n }\n render(data2, range, days) {\n var _a, _b, _c, _d;\n let result = null;\n const startDayIndex = days[0].dayIndex;\n const endDayIndex = days[days.length - 1].dayIndex;\n if (range.hasRepeat) {\n days.forEach((day) => {\n var _a2, _b2;\n if (range.startsOnDay(day)) {\n const span = range.daySpan < Infinity ? range.daySpan : 1;\n result = {\n startDay: day.dayIndex,\n startTime: ((_a2 = range.start) == null ? void 0 : _a2.time) ?? 0,\n endDay: day.dayIndex + span - 1,\n endTime: ((_b2 = range.end) == null ? void 0 : _b2.time) ?? MS_PER_DAY\n };\n this.getRangeRecords(data2).push(result);\n }\n });\n } else if (range.intersectsDayRange(startDayIndex, endDayIndex)) {\n result = {\n startDay: ((_a = range.start) == null ? void 0 : _a.dayIndex) ?? -Infinity,\n startTime: ((_b = range.start) == null ? void 0 : _b.time) ?? -Infinity,\n endDay: ((_c = range.end) == null ? void 0 : _c.dayIndex) ?? Infinity,\n endTime: ((_d = range.end) == null ? void 0 : _d.time) ?? Infinity\n };\n this.getRangeRecords(data2).push(result);\n }\n return result;\n }\n getRangeRecords(data2) {\n let record = this.records[data2.key];\n if (!record) {\n record = {\n ranges: [],\n data: data2\n };\n this.records[data2.key] = record;\n }\n return record.ranges;\n }\n getCell(key, day) {\n const cells = this.getCells(day);\n const result = cells.find((cell) => cell.data.key === key);\n return result;\n }\n cellExists(key, dayIndex) {\n const records = this.records[key];\n if (records == null)\n return false;\n return records.ranges.some(\n (r) => r.startDay <= dayIndex && r.endDay >= dayIndex\n );\n }\n getCells(day) {\n const records = Object.values(this.records);\n const result = [];\n const { dayIndex } = day;\n records.forEach(({ data: data2, ranges }) => {\n ranges.filter((r) => r.startDay <= dayIndex && r.endDay >= dayIndex).forEach((range) => {\n const onStart = dayIndex === range.startDay;\n const onEnd = dayIndex === range.endDay;\n const startTime = onStart ? range.startTime : 0;\n const startDate = new Date(day.startDate.getTime() + startTime);\n const endTime = onEnd ? range.endTime : MS_PER_DAY;\n const endDate = new Date(day.endDate.getTime() + endTime);\n const allDay = startTime === 0 && endTime === MS_PER_DAY;\n const order = data2.order || 0;\n result.push({\n ...range,\n data: data2,\n onStart,\n onEnd,\n startTime,\n startDate,\n endTime,\n endDate,\n allDay,\n order\n });\n });\n });\n result.sort((a, b) => a.order - b.order);\n return result;\n }\n}\nconst locales = {\n // Arabic\n ar: { dow: 7, L: \"D/‏M/‏YYYY\" },\n // Bulgarian\n bg: { dow: 2, L: \"D.MM.YYYY\" },\n // Catalan\n ca: { dow: 2, L: \"DD/MM/YYYY\" },\n // Chinese (China)\n \"zh-CN\": { dow: 2, L: \"YYYY/MM/DD\" },\n // Chinese (Taiwan)\n \"zh-TW\": { dow: 1, L: \"YYYY/MM/DD\" },\n // Croatian\n hr: { dow: 2, L: \"DD.MM.YYYY\" },\n // Czech\n cs: { dow: 2, L: \"DD.MM.YYYY\" },\n // Danish\n da: { dow: 2, L: \"DD.MM.YYYY\" },\n // Dutch\n nl: { dow: 2, L: \"DD-MM-YYYY\" },\n // English (US)\n \"en-US\": { dow: 1, L: \"MM/DD/YYYY\" },\n // English (Australia)\n \"en-AU\": { dow: 2, L: \"DD/MM/YYYY\" },\n // English (Canada)\n \"en-CA\": { dow: 1, L: \"YYYY-MM-DD\" },\n // English (Great Britain)\n \"en-GB\": { dow: 2, L: \"DD/MM/YYYY\" },\n // English (Ireland)\n \"en-IE\": { dow: 2, L: \"DD-MM-YYYY\" },\n // English (New Zealand)\n \"en-NZ\": { dow: 2, L: \"DD/MM/YYYY\" },\n // English (South Africa)\n \"en-ZA\": { dow: 1, L: \"YYYY/MM/DD\" },\n // Esperanto\n eo: { dow: 2, L: \"YYYY-MM-DD\" },\n // Estonian\n et: { dow: 2, L: \"DD.MM.YYYY\" },\n // Finnish\n fi: { dow: 2, L: \"DD.MM.YYYY\" },\n // French\n fr: { dow: 2, L: \"DD/MM/YYYY\" },\n // French (Canada)\n \"fr-CA\": { dow: 1, L: \"YYYY-MM-DD\" },\n // French (Switzerland)\n \"fr-CH\": { dow: 2, L: \"DD.MM.YYYY\" },\n // German\n de: { dow: 2, L: \"DD.MM.YYYY\" },\n // Hebrew\n he: { dow: 1, L: \"DD.MM.YYYY\" },\n // Indonesian\n id: { dow: 2, L: \"DD/MM/YYYY\" },\n // Italian\n it: { dow: 2, L: \"DD/MM/YYYY\" },\n // Japanese\n ja: { dow: 1, L: \"YYYY年M月D日\" },\n // Korean\n ko: { dow: 1, L: \"YYYY.MM.DD\" },\n // Latvian\n lv: { dow: 2, L: \"DD.MM.YYYY\" },\n // Lithuanian\n lt: { dow: 2, L: \"DD.MM.YYYY\" },\n // Macedonian\n mk: { dow: 2, L: \"D.MM.YYYY\" },\n // Norwegian\n nb: { dow: 2, L: \"D. MMMM YYYY\" },\n nn: { dow: 2, L: \"D. MMMM YYYY\" },\n // Polish\n pl: { dow: 2, L: \"DD.MM.YYYY\" },\n // Portuguese\n pt: { dow: 2, L: \"DD/MM/YYYY\" },\n // Romanian\n ro: { dow: 2, L: \"DD.MM.YYYY\" },\n // Russian\n ru: { dow: 2, L: \"DD.MM.YYYY\" },\n // Slovak\n sk: { dow: 2, L: \"DD.MM.YYYY\" },\n // Spanish (Spain)\n \"es-ES\": { dow: 2, L: \"DD/MM/YYYY\" },\n // Spanish (Mexico)\n \"es-MX\": { dow: 2, L: \"DD/MM/YYYY\" },\n // Swedish\n sv: { dow: 2, L: \"YYYY-MM-DD\" },\n // Thai\n th: { dow: 1, L: \"DD/MM/YYYY\" },\n // Turkish\n tr: { dow: 2, L: \"DD.MM.YYYY\" },\n // Ukrainian\n uk: { dow: 2, L: \"DD.MM.YYYY\" },\n // Vietnam\n vi: { dow: 2, L: \"DD/MM/YYYY\" }\n};\nlocales.en = locales[\"en-US\"];\nlocales.es = locales[\"es-ES\"];\nlocales.no = locales.nb;\nlocales.zh = locales[\"zh-CN\"];\nconst localeSettings = Object.entries(locales).reduce(\n (res, [id, { dow, L }]) => {\n res[id] = {\n id,\n firstDayOfWeek: dow,\n masks: { L }\n };\n return res;\n },\n {}\n);\nconst title = \"MMMM YYYY\";\nconst weekdays = \"W\";\nconst navMonths = \"MMM\";\nconst hours = \"h A\";\nconst input = [\n \"L\",\n \"YYYY-MM-DD\",\n \"YYYY/MM/DD\"\n];\nconst inputDateTime = [\n \"L h:mm A\",\n \"YYYY-MM-DD h:mm A\",\n \"YYYY/MM/DD h:mm A\"\n];\nconst inputDateTime24hr = [\n \"L HH:mm\",\n \"YYYY-MM-DD HH:mm\",\n \"YYYY/MM/DD HH:mm\"\n];\nconst inputTime = [\n \"h:mm A\"\n];\nconst inputTime24hr = [\n \"HH:mm\"\n];\nconst dayPopover = \"WWW, MMM D, YYYY\";\nconst data = [\n \"L\",\n \"YYYY-MM-DD\",\n \"YYYY/MM/DD\"\n];\nconst model = \"iso\";\nconst iso = \"YYYY-MM-DDTHH:mm:ss.SSSZ\";\nconst masks = {\n title,\n weekdays,\n navMonths,\n hours,\n input,\n inputDateTime,\n inputDateTime24hr,\n inputTime,\n inputTime24hr,\n dayPopover,\n data,\n model,\n iso\n};\nconst maxSwipeTime = 300;\nconst minHorizontalSwipeDistance = 60;\nconst maxVerticalSwipeDistance = 80;\nconst touch = {\n maxSwipeTime,\n minHorizontalSwipeDistance,\n maxVerticalSwipeDistance\n};\nconst defaultConfig = {\n componentPrefix: \"V\",\n color: \"blue\",\n isDark: false,\n navVisibility: \"click\",\n titlePosition: \"center\",\n transition: \"slide-h\",\n touch,\n masks,\n locales: localeSettings,\n datePicker: {\n updateOnInput: true,\n inputDebounce: 1e3,\n popover: {\n visibility: \"hover-focus\",\n placement: \"bottom-start\",\n isInteractive: true\n }\n }\n};\nconst state = reactive(defaultConfig);\nconst defaultLocales = computed(() => {\n return mapValues_1(state.locales, (l) => {\n l.masks = defaultsDeep_1(l.masks, state.masks);\n return l;\n });\n});\nconst getDefault = (path) => {\n if (typeof window !== \"undefined\" && has(window.__vcalendar__, path)) {\n return get_1(window.__vcalendar__, path);\n }\n return get_1(state, path);\n};\nconst setupDefaults = (app, userDefaults) => {\n app.config.globalProperties.$VCalendar = state;\n return Object.assign(state, defaultsDeep_1(userDefaults, state));\n};\nconst DEFAULT_MONTH_CACHE_SIZE = 12;\nconst DEFAULT_PAGE_CACHE_SIZE = 5;\nfunction resolveConfig(config, locales2) {\n const detLocale = new Intl.DateTimeFormat().resolvedOptions().locale;\n let id;\n if (isString_1(config)) {\n id = config;\n } else if (has(config, \"id\")) {\n id = config.id;\n }\n id = (id || detLocale).toLowerCase();\n const localeKeys = Object.keys(locales2);\n const validKey = (k) => localeKeys.find((lk) => lk.toLowerCase() === k);\n id = validKey(id) || validKey(id.substring(0, 2)) || detLocale;\n const defLocale = {\n ...locales2[\"en-IE\"],\n ...locales2[id],\n id,\n monthCacheSize: DEFAULT_MONTH_CACHE_SIZE,\n pageCacheSize: DEFAULT_PAGE_CACHE_SIZE\n };\n const result = isObject(config) ? defaultsDeep_1(config, defLocale) : defLocale;\n return result;\n}\nclass Locale {\n constructor(config = void 0, timezone) {\n __publicField(this, \"id\");\n __publicField(this, \"daysInWeek\");\n __publicField(this, \"firstDayOfWeek\");\n __publicField(this, \"masks\");\n __publicField(this, \"timezone\");\n __publicField(this, \"hourLabels\");\n __publicField(this, \"dayNames\");\n __publicField(this, \"dayNamesShort\");\n __publicField(this, \"dayNamesShorter\");\n __publicField(this, \"dayNamesNarrow\");\n __publicField(this, \"monthNames\");\n __publicField(this, \"monthNamesShort\");\n __publicField(this, \"relativeTimeNames\");\n __publicField(this, \"amPm\", [\"am\", \"pm\"]);\n __publicField(this, \"monthCache\");\n __publicField(this, \"pageCache\");\n const { id, firstDayOfWeek, masks: masks2, monthCacheSize, pageCacheSize } = resolveConfig(config, defaultLocales.value);\n this.monthCache = new Cache(\n monthCacheSize,\n getMonthPartsKey,\n getMonthParts\n );\n this.pageCache = new Cache(pageCacheSize, getPageKey, getCachedPage);\n this.id = id;\n this.daysInWeek = daysInWeek;\n this.firstDayOfWeek = clamp(firstDayOfWeek, 1, daysInWeek);\n this.masks = masks2;\n this.timezone = timezone || void 0;\n this.hourLabels = this.getHourLabels();\n this.dayNames = getDayNames(\"long\", this.id);\n this.dayNamesShort = getDayNames(\"short\", this.id);\n this.dayNamesShorter = this.dayNamesShort.map((s) => s.substring(0, 2));\n this.dayNamesNarrow = getDayNames(\"narrow\", this.id);\n this.monthNames = getMonthNames(\"long\", this.id);\n this.monthNamesShort = getMonthNames(\"short\", this.id);\n this.relativeTimeNames = getRelativeTimeNames(this.id);\n }\n formatDate(date, masks2) {\n return formatDate(date, masks2, this);\n }\n parseDate(dateString, mask) {\n return parseDate(dateString, mask, this);\n }\n toDate(d, opts = {}) {\n const nullDate = /* @__PURE__ */ new Date(NaN);\n let result = nullDate;\n const { fillDate, mask, patch, rules } = opts;\n if (isNumber_1(d)) {\n opts.type = \"number\";\n result = /* @__PURE__ */ new Date(+d);\n } else if (isString_1(d)) {\n opts.type = \"string\";\n result = d ? parseDate(d, mask || \"iso\", this) : nullDate;\n } else if (isDate(d)) {\n opts.type = \"date\";\n result = new Date(d.getTime());\n } else if (isDateParts(d)) {\n opts.type = \"object\";\n result = this.getDateFromParts(d);\n }\n if (result && (patch || rules)) {\n let parts = this.getDateParts(result);\n if (patch && fillDate != null) {\n const fillParts = this.getDateParts(this.toDate(fillDate));\n parts = this.getDateParts(\n this.toDate({ ...fillParts, ...pick(parts, DatePatchKeys[patch]) })\n );\n }\n if (rules) {\n parts = applyRulesForDateParts(parts, rules);\n }\n result = this.getDateFromParts(parts);\n }\n return result || nullDate;\n }\n toDateOrNull(d, opts = {}) {\n const dte = this.toDate(d, opts);\n return isNaN(dte.getTime()) ? null : dte;\n }\n fromDate(date, { type, mask } = {}) {\n switch (type) {\n case \"number\":\n return date ? date.getTime() : NaN;\n case \"string\":\n return date ? this.formatDate(date, mask || \"iso\") : \"\";\n case \"object\":\n return date ? this.getDateParts(date) : null;\n default:\n return date ? new Date(date) : null;\n }\n }\n range(source) {\n return DateRange.from(source, this);\n }\n ranges(ranges) {\n return DateRange.fromMany(ranges, this);\n }\n getDateParts(date) {\n return getDateParts(date, this);\n }\n getDateFromParts(parts) {\n return getDateFromParts(parts, this.timezone);\n }\n getDateFromParams(year, month, day, hours2, minutes, seconds, milliseconds) {\n return this.getDateFromParts({\n year,\n month,\n day,\n hours: hours2,\n minutes,\n seconds,\n milliseconds\n });\n }\n getPage(config) {\n const cachedPage = this.pageCache.getOrSet(config, this);\n return getPage(config, cachedPage);\n }\n getMonthParts(month, year) {\n const { firstDayOfWeek } = this;\n return this.monthCache.getOrSet(month, year, firstDayOfWeek);\n }\n getThisMonthParts() {\n const date = /* @__PURE__ */ new Date();\n return this.getMonthParts(\n date.getMonth() + 1,\n date.getFullYear()\n );\n }\n getPrevMonthParts(month, year) {\n if (month === 1)\n return this.getMonthParts(12, year - 1);\n return this.getMonthParts(month - 1, year);\n }\n getNextMonthParts(month, year) {\n if (month === 12)\n return this.getMonthParts(1, year + 1);\n return this.getMonthParts(month + 1, year);\n }\n getHourLabels() {\n return getHourDates().map((d) => {\n return this.formatDate(d, this.masks.hours);\n });\n }\n getDayId(date) {\n return this.formatDate(date, \"YYYY-MM-DD\");\n }\n}\nvar GroupRuleType = /* @__PURE__ */ ((GroupRuleType2) => {\n GroupRuleType2[\"Any\"] = \"any\";\n GroupRuleType2[\"All\"] = \"all\";\n return GroupRuleType2;\n})(GroupRuleType || {});\nvar IntervalRuleType = /* @__PURE__ */ ((IntervalRuleType2) => {\n IntervalRuleType2[\"Days\"] = \"days\";\n IntervalRuleType2[\"Weeks\"] = \"weeks\";\n IntervalRuleType2[\"Months\"] = \"months\";\n IntervalRuleType2[\"Years\"] = \"years\";\n return IntervalRuleType2;\n})(IntervalRuleType || {});\nvar ComponentRuleType = /* @__PURE__ */ ((ComponentRuleType2) => {\n ComponentRuleType2[\"Days\"] = \"days\";\n ComponentRuleType2[\"Weekdays\"] = \"weekdays\";\n ComponentRuleType2[\"Weeks\"] = \"weeks\";\n ComponentRuleType2[\"Months\"] = \"months\";\n ComponentRuleType2[\"Years\"] = \"years\";\n return ComponentRuleType2;\n})(ComponentRuleType || {});\nvar OrdinalComponentRuleType = /* @__PURE__ */ ((OrdinalComponentRuleType2) => {\n OrdinalComponentRuleType2[\"OrdinalWeekdays\"] = \"ordinalWeekdays\";\n return OrdinalComponentRuleType2;\n})(OrdinalComponentRuleType || {});\nclass IntervalRule {\n constructor(type, interval, from) {\n __publicField(this, \"validated\", true);\n this.type = type;\n this.interval = interval;\n this.from = from;\n if (!this.from) {\n console.error(\n `A valid \"from\" date is required for date interval rule. This rule will be skipped.`\n );\n this.validated = false;\n }\n }\n passes(dateParts) {\n if (!this.validated)\n return true;\n const { date } = dateParts;\n switch (this.type) {\n case \"days\": {\n return diffInDays(this.from.date, date) % this.interval === 0;\n }\n case \"weeks\": {\n return diffInWeeks(this.from.date, date) % this.interval === 0;\n }\n case \"months\": {\n return diffInMonths(this.from.date, date) % this.interval === 0;\n }\n case \"years\": {\n return diffInYears(this.from.date, date) % this.interval === 0;\n }\n default: {\n return false;\n }\n }\n }\n}\nclass ComponentRule {\n constructor(type, components2, validator, getter) {\n __publicField(this, \"components\", []);\n this.type = type;\n this.validator = validator;\n this.getter = getter;\n this.components = this.normalizeComponents(components2);\n }\n static create(type, config) {\n switch (type) {\n case \"days\":\n return new DaysRule(config);\n case \"weekdays\":\n return new WeekdaysRule(config);\n case \"weeks\":\n return new WeeksRule(config);\n case \"months\":\n return new MonthsRule(config);\n case \"years\":\n return new YearsRule(config);\n }\n }\n normalizeComponents(components2) {\n if (this.validator(components2))\n return [components2];\n if (!isArray(components2))\n return [];\n const result = [];\n components2.forEach((component) => {\n if (!this.validator(component)) {\n console.error(\n `Component value ${component} in invalid for \"${this.type}\" rule. This rule will be skipped.`\n );\n return;\n }\n result.push(component);\n });\n return result;\n }\n passes(dayParts) {\n const comps = this.getter(dayParts);\n const result = comps.some((comp) => this.components.includes(comp));\n return result;\n }\n}\nclass DaysRule extends ComponentRule {\n constructor(components2) {\n super(\n \"days\",\n components2,\n isDayInMonth,\n ({ day, dayFromEnd }) => [day, -dayFromEnd]\n );\n }\n}\nclass WeekdaysRule extends ComponentRule {\n constructor(components2) {\n super(\n \"weekdays\",\n components2,\n isDayOfWeek,\n ({ weekday }) => [weekday]\n );\n }\n}\nclass WeeksRule extends ComponentRule {\n constructor(components2) {\n super(\n \"weeks\",\n components2,\n isWeekInMonth,\n ({ week, weekFromEnd }) => [week, -weekFromEnd]\n );\n }\n}\nclass MonthsRule extends ComponentRule {\n constructor(components2) {\n super(\"months\", components2, isMonthInYear, ({ month }) => [\n month\n ]);\n }\n}\nclass YearsRule extends ComponentRule {\n constructor(components2) {\n super(\"years\", components2, isNumber_1, ({ year }) => [year]);\n }\n}\nclass OrdinalComponentRule {\n constructor(type, components2) {\n __publicField(this, \"components\");\n this.type = type;\n this.components = this.normalizeComponents(components2);\n }\n normalizeArrayConfig(config) {\n const result = [];\n config.forEach((numOrArray, i) => {\n if (isNumber_1(numOrArray)) {\n if (i === 0)\n return;\n if (!isOrdinalWeekInMonth(config[0])) {\n console.error(\n `Ordinal range for \"${this.type}\" rule is from -5 to -1 or 1 to 5. This rule will be skipped.`\n );\n return;\n }\n if (!isDayOfWeek(numOrArray)) {\n console.error(\n `Acceptable range for \"${this.type}\" rule is from 1 to 5. This rule will be skipped`\n );\n return;\n }\n result.push([config[0], numOrArray]);\n } else if (isArray(numOrArray)) {\n result.push(...this.normalizeArrayConfig(numOrArray));\n }\n });\n return result;\n }\n normalizeComponents(config) {\n const result = [];\n config.forEach((numOrArray, i) => {\n if (isNumber_1(numOrArray)) {\n if (i === 0)\n return;\n if (!isOrdinalWeekInMonth(config[0])) {\n console.error(\n `Ordinal range for \"${this.type}\" rule is from -5 to -1 or 1 to 5. This rule will be skipped.`\n );\n return;\n }\n if (!isDayOfWeek(numOrArray)) {\n console.error(\n `Acceptable range for \"${this.type}\" rule is from 1 to 5. This rule will be skipped`\n );\n return;\n }\n result.push([config[0], numOrArray]);\n } else if (isArray(numOrArray)) {\n result.push(...this.normalizeArrayConfig(numOrArray));\n }\n });\n return result;\n }\n passes(dayParts) {\n const { weekday, weekdayOrdinal, weekdayOrdinalFromEnd } = dayParts;\n return this.components.some(\n ([ordinalWeek, ordinalWeekday]) => (ordinalWeek === weekdayOrdinal || ordinalWeek === -weekdayOrdinalFromEnd) && weekday === ordinalWeekday\n );\n }\n}\nclass FunctionRule {\n constructor(fn) {\n __publicField(this, \"type\", \"function\");\n __publicField(this, \"validated\", true);\n this.fn = fn;\n if (!isFunction_1(fn)) {\n console.error(\n `The function rule requires a valid function. This rule will be skipped.`\n );\n this.validated = false;\n }\n }\n passes(dayParts) {\n if (!this.validated)\n return true;\n return this.fn(dayParts);\n }\n}\nclass DateRepeat {\n constructor(config, options = {}, parent) {\n __publicField(this, \"validated\", true);\n __publicField(this, \"config\");\n __publicField(this, \"type\", GroupRuleType.Any);\n __publicField(this, \"from\");\n __publicField(this, \"until\");\n __publicField(this, \"rules\", []);\n __publicField(this, \"locale\", new Locale());\n this.parent = parent;\n if (options.locale)\n this.locale = options.locale;\n this.config = config;\n if (isFunction_1(config)) {\n this.type = GroupRuleType.All;\n this.rules = [new FunctionRule(config)];\n } else if (isArray(config)) {\n this.type = GroupRuleType.Any;\n this.rules = config.map((c) => new DateRepeat(c, options, this));\n } else if (isObject(config)) {\n this.type = GroupRuleType.All;\n this.from = config.from ? this.locale.getDateParts(config.from) : parent == null ? void 0 : parent.from;\n this.until = config.until ? this.locale.getDateParts(config.until) : parent == null ? void 0 : parent.until;\n this.rules = this.getObjectRules(config);\n } else {\n console.error(\"Rule group configuration must be an object or an array.\");\n this.validated = false;\n }\n }\n getObjectRules(config) {\n const rules = [];\n if (config.every) {\n if (isString_1(config.every)) {\n config.every = [1, `${config.every}s`];\n }\n if (isArray(config.every)) {\n const [interval = 1, type = IntervalRuleType.Days] = config.every;\n rules.push(new IntervalRule(type, interval, this.from));\n }\n }\n Object.values(ComponentRuleType).forEach((type) => {\n if (!(type in config))\n return;\n rules.push(ComponentRule.create(type, config[type]));\n });\n Object.values(OrdinalComponentRuleType).forEach((type) => {\n if (!(type in config))\n return;\n rules.push(new OrdinalComponentRule(type, config[type]));\n });\n if (config.on != null) {\n if (!isArray(config.on))\n config.on = [config.on];\n rules.push(\n new DateRepeat(config.on, { locale: this.locale }, this.parent)\n );\n }\n return rules;\n }\n passes(dayParts) {\n if (!this.validated)\n return true;\n if (this.from && dayParts.dayIndex <= this.from.dayIndex)\n return false;\n if (this.until && dayParts.dayIndex >= this.until.dayIndex)\n return false;\n if (this.type === GroupRuleType.Any) {\n return this.rules.some((r) => r.passes(dayParts));\n }\n return this.rules.every((r) => r.passes(dayParts));\n }\n}\nfunction isDayInMonth(dayInMonth) {\n if (!isNumber_1(dayInMonth))\n return false;\n return dayInMonth >= 1 && dayInMonth <= 31;\n}\nfunction isDayOfWeek(dayOfWeek) {\n if (!isNumber_1(dayOfWeek))\n return false;\n return dayOfWeek >= 1 && dayOfWeek <= 7;\n}\nfunction isWeekInMonth(weekInMonth) {\n if (!isNumber_1(weekInMonth))\n return false;\n return weekInMonth >= -6 && weekInMonth <= -1 || weekInMonth >= 1 && weekInMonth <= 6;\n}\nfunction isMonthInYear(monthInYear) {\n if (!isNumber_1(monthInYear))\n return false;\n return monthInYear >= 1 && monthInYear <= 12;\n}\nfunction isOrdinalWeekInMonth(weekInMonth) {\n if (!isNumber_1(weekInMonth))\n return false;\n if (weekInMonth < -5 || weekInMonth > 5 || weekInMonth === 0)\n return false;\n return true;\n}\nconst DatePatchKeys = {\n dateTime: [\n \"year\",\n \"month\",\n \"day\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n ],\n date: [\"year\", \"month\", \"day\"],\n time: [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"]\n};\nconst daysInWeek = 7;\nconst weeksInMonth = 6;\nconst MS_PER_SECOND = 1e3;\nconst MS_PER_MINUTE = MS_PER_SECOND * 60;\nconst MS_PER_HOUR = MS_PER_MINUTE * 60;\nconst MS_PER_DAY = MS_PER_HOUR * 24;\nconst daysInMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst maskMacros = [\"L\", \"iso\"];\nconst DATE_PART_RANGES = {\n milliseconds: [0, 999, 3],\n seconds: [0, 59, 2],\n minutes: [0, 59, 2],\n hours: [0, 23, 2]\n};\nconst token = /d{1,2}|W{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|Z{1,4}|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nconst literal = /\\[([^]*?)\\]/gm;\nconst formatFlags = {\n D(d) {\n return d.day;\n },\n DD(d) {\n return pad(d.day, 2);\n },\n // Do(d: DateParts, l: Locale) {\n // return l.DoFn(d.day);\n // },\n d(d) {\n return d.weekday - 1;\n },\n dd(d) {\n return pad(d.weekday - 1, 2);\n },\n W(d, l) {\n return l.dayNamesNarrow[d.weekday - 1];\n },\n WW(d, l) {\n return l.dayNamesShorter[d.weekday - 1];\n },\n WWW(d, l) {\n return l.dayNamesShort[d.weekday - 1];\n },\n WWWW(d, l) {\n return l.dayNames[d.weekday - 1];\n },\n M(d) {\n return d.month;\n },\n MM(d) {\n return pad(d.month, 2);\n },\n MMM(d, l) {\n return l.monthNamesShort[d.month - 1];\n },\n MMMM(d, l) {\n return l.monthNames[d.month - 1];\n },\n YY(d) {\n return String(d.year).substr(2);\n },\n YYYY(d) {\n return pad(d.year, 4);\n },\n h(d) {\n return d.hours % 12 || 12;\n },\n hh(d) {\n return pad(d.hours % 12 || 12, 2);\n },\n H(d) {\n return d.hours;\n },\n HH(d) {\n return pad(d.hours, 2);\n },\n m(d) {\n return d.minutes;\n },\n mm(d) {\n return pad(d.minutes, 2);\n },\n s(d) {\n return d.seconds;\n },\n ss(d) {\n return pad(d.seconds, 2);\n },\n S(d) {\n return Math.round(d.milliseconds / 100);\n },\n SS(d) {\n return pad(Math.round(d.milliseconds / 10), 2);\n },\n SSS(d) {\n return pad(d.milliseconds, 3);\n },\n a(d, l) {\n return d.hours < 12 ? l.amPm[0] : l.amPm[1];\n },\n A(d, l) {\n return d.hours < 12 ? l.amPm[0].toUpperCase() : l.amPm[1].toUpperCase();\n },\n Z() {\n return \"Z\";\n },\n ZZ(d) {\n const o = d.timezoneOffset;\n return `${o > 0 ? \"-\" : \"+\"}${pad(Math.floor(Math.abs(o) / 60), 2)}`;\n },\n ZZZ(d) {\n const o = d.timezoneOffset;\n return `${o > 0 ? \"-\" : \"+\"}${pad(\n Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60,\n 4\n )}`;\n },\n ZZZZ(d) {\n const o = d.timezoneOffset;\n return `${o > 0 ? \"-\" : \"+\"}${pad(Math.floor(Math.abs(o) / 60), 2)}:${pad(\n Math.abs(o) % 60,\n 2\n )}`;\n }\n};\nconst twoDigits = /\\d\\d?/;\nconst threeDigits = /\\d{3}/;\nconst fourDigits = /\\d{4}/;\nconst word = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\nconst noop = () => {\n};\nconst monthUpdate = (arrName) => (d, v, l) => {\n const index2 = l[arrName].indexOf(\n v.charAt(0).toUpperCase() + v.substr(1).toLowerCase()\n );\n if (~index2) {\n d.month = index2;\n }\n};\nconst parseFlags = {\n D: [\n twoDigits,\n (d, v) => {\n d.day = v;\n }\n ],\n Do: [\n new RegExp(twoDigits.source + word.source),\n (d, v) => {\n d.day = parseInt(v, 10);\n }\n ],\n d: [twoDigits, noop],\n W: [word, noop],\n M: [\n twoDigits,\n (d, v) => {\n d.month = v - 1;\n }\n ],\n MMM: [word, monthUpdate(\"monthNamesShort\")],\n MMMM: [word, monthUpdate(\"monthNames\")],\n YY: [\n twoDigits,\n (d, v) => {\n const da = /* @__PURE__ */ new Date();\n const cent = +da.getFullYear().toString().substr(0, 2);\n d.year = +`${v > 68 ? cent - 1 : cent}${v}`;\n }\n ],\n YYYY: [\n fourDigits,\n (d, v) => {\n d.year = v;\n }\n ],\n S: [\n /\\d/,\n (d, v) => {\n d.milliseconds = v * 100;\n }\n ],\n SS: [\n /\\d{2}/,\n (d, v) => {\n d.milliseconds = v * 10;\n }\n ],\n SSS: [\n threeDigits,\n (d, v) => {\n d.milliseconds = v;\n }\n ],\n h: [\n twoDigits,\n (d, v) => {\n d.hours = v;\n }\n ],\n m: [\n twoDigits,\n (d, v) => {\n d.minutes = v;\n }\n ],\n s: [\n twoDigits,\n (d, v) => {\n d.seconds = v;\n }\n ],\n a: [\n word,\n (d, v, l) => {\n const val = v.toLowerCase();\n if (val === l.amPm[0]) {\n d.isPm = false;\n } else if (val === l.amPm[1]) {\n d.isPm = true;\n }\n }\n ],\n Z: [\n /[^\\s]*?[+-]\\d\\d:?\\d\\d|[^\\s]*?Z?/,\n (d, v) => {\n if (v === \"Z\")\n v = \"+00:00\";\n const parts = `${v}`.match(/([+-]|\\d\\d)/gi);\n if (parts) {\n const minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n d.timezoneOffset = parts[0] === \"+\" ? minutes : -minutes;\n }\n }\n ]\n};\nparseFlags.DD = parseFlags.D;\nparseFlags.dd = parseFlags.d;\nparseFlags.WWWW = parseFlags.WWW = parseFlags.WW = parseFlags.W;\nparseFlags.MM = parseFlags.M;\nparseFlags.mm = parseFlags.m;\nparseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;\nparseFlags.ss = parseFlags.s;\nparseFlags.A = parseFlags.a;\nparseFlags.ZZZZ = parseFlags.ZZZ = parseFlags.ZZ = parseFlags.Z;\nfunction normalizeMasks(masks2, locale) {\n return (arrayHasItems(masks2) && masks2 || [\n isString_1(masks2) && masks2 || \"YYYY-MM-DD\"\n ]).map(\n (m) => maskMacros.reduce(\n (prev, curr) => prev.replace(curr, locale.masks[curr] || \"\"),\n m\n )\n );\n}\nfunction isDateParts(parts) {\n return isObject(parts) && \"year\" in parts && \"month\" in parts && \"day\" in parts;\n}\nfunction startOfWeek(date, firstDayOfWeek = 1) {\n const day = date.getDay() + 1;\n const daysToAdd = day >= firstDayOfWeek ? firstDayOfWeek - day : -(7 - (firstDayOfWeek - day));\n return addDays(date, daysToAdd);\n}\nfunction getDayIndex(year, month, day) {\n const utcDate = Date.UTC(year, month - 1, day);\n return diffInDays(/* @__PURE__ */ new Date(0), new Date(utcDate));\n}\nfunction diffInDays(d1, d2) {\n return Math.round((d2.getTime() - d1.getTime()) / MS_PER_DAY);\n}\nfunction diffInWeeks(d1, d2) {\n return Math.ceil(diffInDays(startOfWeek(d1), startOfWeek(d2)) / 7);\n}\nfunction diffInYears(d1, d2) {\n return d2.getUTCFullYear() - d1.getUTCFullYear();\n}\nfunction diffInMonths(d1, d2) {\n return diffInYears(d1, d2) * 12 + (d2.getMonth() - d1.getMonth());\n}\nfunction getDateFromParts(parts, timezone = \"\") {\n const d = /* @__PURE__ */ new Date();\n const {\n year = d.getFullYear(),\n month = d.getMonth() + 1,\n day = d.getDate(),\n hours: hrs = 0,\n minutes: min = 0,\n seconds: sec = 0,\n milliseconds: ms = 0\n } = parts;\n if (timezone) {\n const dateString = `${pad(year, 4)}-${pad(month, 2)}-${pad(day, 2)}T${pad(\n hrs,\n 2\n )}:${pad(min, 2)}:${pad(sec, 2)}.${pad(ms, 3)}`;\n return toDate$1(dateString, { timeZone: timezone });\n }\n return new Date(year, month - 1, day, hrs, min, sec, ms);\n}\nfunction getDateParts(date, locale) {\n let tzDate = new Date(date.getTime());\n if (locale.timezone) {\n tzDate = new Date(\n date.toLocaleString(\"en-US\", { timeZone: locale.timezone })\n );\n tzDate.setMilliseconds(date.getMilliseconds());\n }\n const milliseconds = tzDate.getMilliseconds();\n const seconds = tzDate.getSeconds();\n const minutes = tzDate.getMinutes();\n const hours2 = tzDate.getHours();\n const time = milliseconds + seconds * MS_PER_SECOND + minutes * MS_PER_MINUTE + hours2 * MS_PER_HOUR;\n const month = tzDate.getMonth() + 1;\n const year = tzDate.getFullYear();\n const monthParts = locale.getMonthParts(month, year);\n const day = tzDate.getDate();\n const dayFromEnd = monthParts.numDays - day + 1;\n const weekday = tzDate.getDay() + 1;\n const weekdayOrdinal = Math.floor((day - 1) / 7 + 1);\n const weekdayOrdinalFromEnd = Math.floor((monthParts.numDays - day) / 7 + 1);\n const week = Math.ceil(\n (day + Math.abs(monthParts.firstWeekday - monthParts.firstDayOfWeek)) / 7\n );\n const weekFromEnd = monthParts.numWeeks - week + 1;\n const weeknumber = monthParts.weeknumbers[week];\n const dayIndex = getDayIndex(year, month, day);\n const parts = {\n milliseconds,\n seconds,\n minutes,\n hours: hours2,\n time,\n day,\n dayFromEnd,\n weekday,\n weekdayOrdinal,\n weekdayOrdinalFromEnd,\n week,\n weekFromEnd,\n weeknumber,\n month,\n year,\n date: tzDate,\n dateTime: tzDate.getTime(),\n dayIndex,\n timezoneOffset: 0,\n isValid: true\n };\n return parts;\n}\nfunction getMonthPartsKey(month, year, firstDayOfWeek) {\n return `${year}-${month}-${firstDayOfWeek}`;\n}\nfunction getMonthParts(month, year, firstDayOfWeek) {\n const inLeapYear = year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n const firstDayOfMonth = new Date(year, month - 1, 1);\n const firstWeekday = firstDayOfMonth.getDay() + 1;\n const numDays = month === 2 && inLeapYear ? 29 : daysInMonths[month - 1];\n const weekStartsOn = firstDayOfWeek - 1;\n const numWeeks = getWeeksInMonth(firstDayOfMonth, {\n weekStartsOn\n });\n const weeknumbers = [];\n const isoWeeknumbers = [];\n for (let i = 0; i < numWeeks; i++) {\n const date = addDays(firstDayOfMonth, i * 7);\n weeknumbers.push(getWeek(date, { weekStartsOn }));\n isoWeeknumbers.push(getISOWeek(date));\n }\n return {\n firstDayOfWeek,\n firstDayOfMonth,\n inLeapYear,\n firstWeekday,\n numDays,\n numWeeks,\n month,\n year,\n weeknumbers,\n isoWeeknumbers\n };\n}\nfunction getWeekdayDates() {\n const dates = [];\n const year = 2020;\n const month = 1;\n const day = 5;\n for (let i = 0; i < daysInWeek; i++) {\n dates.push(\n getDateFromParts({\n year,\n month,\n day: day + i,\n hours: 12\n })\n );\n }\n return dates;\n}\nfunction getDayNames(length, localeId = void 0) {\n const dtf = new Intl.DateTimeFormat(localeId, {\n weekday: length\n });\n return getWeekdayDates().map((d) => dtf.format(d));\n}\nfunction getHourDates() {\n const dates = [];\n for (let i = 0; i <= 24; i++) {\n dates.push(new Date(2e3, 0, 1, i));\n }\n return dates;\n}\nfunction getRelativeTimeNames(localeId = void 0) {\n const units = [\n \"second\",\n \"minute\",\n \"hour\",\n \"day\",\n \"week\",\n \"month\",\n \"quarter\",\n \"year\"\n ];\n const rtf = new Intl.RelativeTimeFormat(localeId);\n return units.reduce((names, unit) => {\n const parts = rtf.formatToParts(100, unit);\n names[unit] = parts[1].unit;\n return names;\n }, {});\n}\nfunction getMonthDates() {\n const dates = [];\n for (let i = 0; i < 12; i++) {\n dates.push(new Date(2e3, i, 15));\n }\n return dates;\n}\nfunction getMonthNames(length, localeId = void 0) {\n const dtf = new Intl.DateTimeFormat(localeId, {\n month: length,\n timeZone: \"UTC\"\n });\n return getMonthDates().map((d) => dtf.format(d));\n}\nfunction datePartIsValid(part, rule, parts) {\n if (isNumber_1(rule))\n return rule === part;\n if (isArray(rule))\n return rule.includes(part);\n if (isFunction_1(rule))\n return rule(part, parts);\n if (rule.min != null && rule.min > part)\n return false;\n if (rule.max != null && rule.max < part)\n return false;\n if (rule.interval != null && part % rule.interval !== 0)\n return false;\n return true;\n}\nfunction getDatePartOptions(parts, range, rule) {\n const options = [];\n const [min, max, padding] = range;\n for (let i = min; i <= max; i++) {\n if (rule == null || datePartIsValid(i, rule, parts)) {\n options.push({\n value: i,\n label: pad(i, padding)\n });\n }\n }\n return options;\n}\nfunction getDatePartsOptions(parts, rules) {\n return {\n milliseconds: getDatePartOptions(\n parts,\n DATE_PART_RANGES.milliseconds,\n rules.milliseconds\n ),\n seconds: getDatePartOptions(parts, DATE_PART_RANGES.seconds, rules.seconds),\n minutes: getDatePartOptions(parts, DATE_PART_RANGES.minutes, rules.minutes),\n hours: getDatePartOptions(parts, DATE_PART_RANGES.hours, rules.hours)\n };\n}\nfunction getNearestDatePart(parts, range, value, rule) {\n const options = getDatePartOptions(parts, range, rule);\n const result = options.reduce((prev, opt) => {\n if (opt.disabled)\n return prev;\n if (isNaN(prev))\n return opt.value;\n const diffPrev = Math.abs(prev - value);\n const diffCurr = Math.abs(opt.value - value);\n return diffCurr < diffPrev ? opt.value : prev;\n }, NaN);\n return isNaN(result) ? value : result;\n}\nfunction applyRulesForDateParts(dateParts, rules) {\n const result = { ...dateParts };\n Object.entries(rules).forEach(([key, rule]) => {\n const range = DATE_PART_RANGES[key];\n const value = dateParts[key];\n result[key] = getNearestDatePart(\n dateParts,\n range,\n value,\n rule\n );\n });\n return result;\n}\nfunction parseDate(dateString, mask, locale) {\n const masks2 = normalizeMasks(mask, locale);\n return masks2.map((m) => {\n if (typeof m !== \"string\") {\n throw new Error(\"Invalid mask\");\n }\n let str = dateString;\n if (str.length > 1e3) {\n return false;\n }\n let isValid = true;\n const dp = {};\n m.replace(token, ($0) => {\n if (parseFlags[$0]) {\n const info = parseFlags[$0];\n const index2 = str.search(info[0]);\n if (!~index2) {\n isValid = false;\n } else {\n str.replace(info[0], (result) => {\n info[1](dp, result, locale);\n str = str.substr(index2 + result.length);\n return result;\n });\n }\n }\n return parseFlags[$0] ? \"\" : $0.slice(1, $0.length - 1);\n });\n if (!isValid) {\n return false;\n }\n const today = /* @__PURE__ */ new Date();\n if (dp.hours != null) {\n if (dp.isPm === true && +dp.hours !== 12) {\n dp.hours = +dp.hours + 12;\n } else if (dp.isPm === false && +dp.hours === 12) {\n dp.hours = 0;\n }\n }\n let date;\n if (dp.timezoneOffset != null) {\n dp.minutes = +(dp.minutes || 0) - +dp.timezoneOffset;\n date = new Date(\n Date.UTC(\n dp.year || today.getFullYear(),\n dp.month || 0,\n dp.day || 1,\n dp.hours || 0,\n dp.minutes || 0,\n dp.seconds || 0,\n dp.milliseconds || 0\n )\n );\n } else {\n date = locale.getDateFromParts({\n year: dp.year || today.getFullYear(),\n month: (dp.month || 0) + 1,\n day: dp.day || 1,\n hours: dp.hours || 0,\n minutes: dp.minutes || 0,\n seconds: dp.seconds || 0,\n milliseconds: dp.milliseconds || 0\n });\n }\n return date;\n }).find((d) => d) || new Date(dateString);\n}\nfunction formatDate(date, masks2, locale) {\n if (date == null)\n return \"\";\n let mask = normalizeMasks(masks2, locale)[0];\n if (/Z$/.test(mask))\n locale.timezone = \"utc\";\n const literals = [];\n mask = mask.replace(literal, ($0, $1) => {\n literals.push($1);\n return \"??\";\n });\n const dateParts = locale.getDateParts(date);\n mask = mask.replace(\n token,\n ($0) => $0 in formatFlags ? formatFlags[$0](dateParts, locale) : $0.slice(1, $0.length - 1)\n );\n return mask.replace(/\\?\\?/g, () => literals.shift());\n}\nlet attrKey = 0;\nclass Attribute {\n constructor(config, theme, locale) {\n __publicField(this, \"key\", \"\");\n __publicField(this, \"hashcode\", \"\");\n __publicField(this, \"highlight\", null);\n __publicField(this, \"content\", null);\n __publicField(this, \"dot\", null);\n __publicField(this, \"bar\", null);\n __publicField(this, \"event\", null);\n __publicField(this, \"popover\", null);\n __publicField(this, \"customData\", null);\n __publicField(this, \"ranges\");\n __publicField(this, \"hasRanges\", false);\n __publicField(this, \"order\", 0);\n __publicField(this, \"pinPage\", false);\n __publicField(this, \"maxRepeatSpan\", 0);\n __publicField(this, \"locale\");\n const { dates } = Object.assign(\n this,\n { hashcode: \"\", order: 0, pinPage: false },\n config\n );\n this.key || (this.key = ++attrKey);\n this.locale = locale;\n theme.normalizeGlyphs(this);\n this.ranges = locale.ranges(dates ?? []);\n this.hasRanges = !!arrayHasItems(this.ranges);\n this.maxRepeatSpan = this.ranges.filter((r) => r.hasRepeat).map((r) => r.daySpan).reduce((res, curr) => Math.max(res, curr), 0);\n }\n intersectsRange({ start, end }) {\n if (start == null || end == null)\n return false;\n const simpleRanges = this.ranges.filter((r) => !r.hasRepeat);\n for (const range of simpleRanges) {\n if (range.intersectsDayRange(start.dayIndex, end.dayIndex)) {\n return true;\n }\n }\n const repeatRanges = this.ranges.filter((r) => r.hasRepeat);\n if (!repeatRanges.length)\n return false;\n let day = start;\n if (this.maxRepeatSpan > 1) {\n day = this.locale.getDateParts(addDays(day.date, -this.maxRepeatSpan));\n }\n while (day.dayIndex <= end.dayIndex) {\n for (const range of repeatRanges) {\n if (range.startsOnDay(day))\n return true;\n }\n day = this.locale.getDateParts(addDays(day.date, 1));\n }\n return false;\n }\n}\nfunction showPopover(opts) {\n if (document) {\n document.dispatchEvent(\n new CustomEvent(\"show-popover\", {\n detail: opts\n })\n );\n }\n}\nfunction hidePopover(opts) {\n if (document) {\n document.dispatchEvent(\n new CustomEvent(\"hide-popover\", {\n detail: opts\n })\n );\n }\n}\nfunction togglePopover(opts) {\n if (document) {\n document.dispatchEvent(\n new CustomEvent(\"toggle-popover\", {\n detail: opts\n })\n );\n }\n}\nfunction getPopoverEventHandlers(opts) {\n const { visibility } = opts;\n const click = visibility === \"click\";\n const hover = visibility === \"hover\";\n const hoverFocus = visibility === \"hover-focus\";\n const focus = visibility === \"focus\";\n opts.autoHide = !click;\n let hovered = false;\n let focused = false;\n const clickHandler = (e) => {\n if (click) {\n togglePopover({\n ...opts,\n target: opts.target || e.currentTarget\n });\n e.stopPropagation();\n }\n };\n const mouseMoveHandler = (e) => {\n if (!hovered) {\n hovered = true;\n if (hover || hoverFocus) {\n showPopover({\n ...opts,\n target: opts.target || e.currentTarget\n });\n }\n }\n };\n const mouseLeaveHandler = () => {\n if (hovered) {\n hovered = false;\n if (hover || hoverFocus && !focused) {\n hidePopover(opts);\n }\n }\n };\n const focusInHandler = (e) => {\n if (!focused) {\n focused = true;\n if (focus || hoverFocus) {\n showPopover({\n ...opts,\n target: opts.target || e.currentTarget\n });\n }\n }\n };\n const focusOutHandler = (e) => {\n if (focused && !elementContains(e.currentTarget, e.relatedTarget)) {\n focused = false;\n if (focus || hoverFocus && !hovered) {\n hidePopover(opts);\n }\n }\n };\n const handlers = {};\n switch (opts.visibility) {\n case \"click\":\n handlers.click = clickHandler;\n break;\n case \"hover\":\n handlers.mousemove = mouseMoveHandler;\n handlers.mouseleave = mouseLeaveHandler;\n break;\n case \"focus\":\n handlers.focusin = focusInHandler;\n handlers.focusout = focusOutHandler;\n break;\n case \"hover-focus\":\n handlers.mousemove = mouseMoveHandler;\n handlers.mouseleave = mouseLeaveHandler;\n handlers.focusin = focusInHandler;\n handlers.focusout = focusOutHandler;\n break;\n }\n return handlers;\n}\nconst removeHandlers = (target) => {\n const el = resolveEl(target);\n if (el == null)\n return;\n const handlers = el.popoverHandlers;\n if (!handlers || !handlers.length)\n return;\n handlers.forEach((handler) => handler());\n delete el.popoverHandlers;\n};\nconst addHandlers = (target, opts) => {\n const el = resolveEl(target);\n if (el == null)\n return;\n const remove = [];\n const handlers = getPopoverEventHandlers(opts);\n Object.entries(handlers).forEach(([event, handler]) => {\n remove.push(on(el, event, handler));\n });\n el.popoverHandlers = remove;\n};\nconst popoverDirective = {\n mounted(el, binding) {\n const { value } = binding;\n if (!value)\n return;\n addHandlers(el, value);\n },\n updated(el, binding) {\n const { oldValue, value } = binding;\n const oldVisibility = oldValue == null ? void 0 : oldValue.visibility;\n const newVisibility = value == null ? void 0 : value.visibility;\n if (oldVisibility !== newVisibility) {\n if (oldVisibility) {\n removeHandlers(el);\n if (!newVisibility)\n hidePopover(oldValue);\n }\n if (newVisibility) {\n addHandlers(el, value);\n }\n }\n },\n unmounted(el) {\n removeHandlers(el);\n }\n};\nconst addHorizontalSwipeHandler = (element, handler, {\n maxSwipeTime: maxSwipeTime2,\n minHorizontalSwipeDistance: minHorizontalSwipeDistance2,\n maxVerticalSwipeDistance: maxVerticalSwipeDistance2\n}) => {\n if (!element || !element.addEventListener || !isFunction_1(handler)) {\n return null;\n }\n let startX = 0;\n let startY = 0;\n let startTime = null;\n let isSwiping = false;\n function touchStart(e) {\n const t = e.changedTouches[0];\n startX = t.screenX;\n startY = t.screenY;\n startTime = (/* @__PURE__ */ new Date()).getTime();\n isSwiping = true;\n }\n function touchEnd(e) {\n if (!isSwiping || !startTime)\n return;\n isSwiping = false;\n const t = e.changedTouches[0];\n const deltaX = t.screenX - startX;\n const deltaY = t.screenY - startY;\n const deltaTime = (/* @__PURE__ */ new Date()).getTime() - startTime;\n if (deltaTime < maxSwipeTime2) {\n if (Math.abs(deltaX) >= minHorizontalSwipeDistance2 && Math.abs(deltaY) <= maxVerticalSwipeDistance2) {\n const arg = { toLeft: false, toRight: false };\n if (deltaX < 0) {\n arg.toLeft = true;\n } else {\n arg.toRight = true;\n }\n handler(arg);\n }\n }\n }\n on(element, \"touchstart\", touchStart, { passive: true });\n on(element, \"touchend\", touchEnd, { passive: true });\n return () => {\n off(element, \"touchstart\", touchStart);\n off(element, \"touchend\", touchEnd);\n };\n};\nconst watchSkippers = {};\nconst skipWatcher = (watcher, durationMs = 10) => {\n watchSkippers[watcher] = Date.now() + durationMs;\n};\nconst handleWatcher = (watcher, handler) => {\n if (watcher in watchSkippers) {\n const dateTime = watchSkippers[watcher];\n if (Date.now() < dateTime)\n return;\n delete watchSkippers[watcher];\n }\n handler();\n};\nfunction windowExists() {\n return typeof window !== \"undefined\";\n}\nfunction windowHasFeature(feature) {\n return windowExists() && feature in window;\n}\nfunction useDarkMode(config) {\n const isDark = ref(false);\n const displayMode = computed(() => isDark.value ? \"dark\" : \"light\");\n let mediaQuery;\n let mutationObserver;\n function mqListener(ev) {\n isDark.value = ev.matches;\n }\n function setupSystem() {\n if (windowHasFeature(\"matchMedia\")) {\n mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n mediaQuery.addEventListener(\"change\", mqListener);\n isDark.value = mediaQuery.matches;\n }\n }\n function moListener() {\n const { selector = \":root\", darkClass = \"dark\" } = config.value;\n const el = document.querySelector(selector);\n isDark.value = el.classList.contains(darkClass);\n }\n function setupClass(config2) {\n const { selector = \":root\", darkClass = \"dark\" } = config2;\n if (windowExists() && selector && darkClass) {\n const el = document.querySelector(selector);\n if (el) {\n mutationObserver = new MutationObserver(moListener);\n mutationObserver.observe(el, {\n attributes: true,\n attributeFilter: [\"class\"]\n });\n isDark.value = el.classList.contains(darkClass);\n }\n }\n }\n function setup() {\n stopObservers();\n const type = typeof config.value;\n if (type === \"string\" && config.value.toLowerCase() === \"system\") {\n setupSystem();\n } else if (type === \"object\") {\n setupClass(config.value);\n } else {\n isDark.value = !!config.value;\n }\n }\n const stopWatch = watch(() => config.value, () => setup(), {\n immediate: true\n });\n function stopObservers() {\n if (mediaQuery) {\n mediaQuery.removeEventListener(\"change\", mqListener);\n mediaQuery = void 0;\n }\n if (mutationObserver) {\n mutationObserver.disconnect();\n mutationObserver = void 0;\n }\n }\n function cleanup() {\n stopObservers();\n stopWatch();\n }\n onUnmounted(() => cleanup());\n return {\n isDark,\n displayMode,\n cleanup\n };\n}\nconst targetProps = [\"base\", \"start\", \"end\", \"startEnd\"];\nconst displayProps = [\n \"class\",\n \"wrapperClass\",\n \"contentClass\",\n \"style\",\n \"contentStyle\",\n \"color\",\n \"fillMode\"\n];\nconst _defaultProfile = { base: {}, start: {}, end: {} };\nfunction normalizeConfig(color, config, defaultProfile = _defaultProfile) {\n let rootColor = color;\n let root2 = {};\n if (config === true || isString_1(config)) {\n rootColor = isString_1(config) ? config : rootColor;\n root2 = { ...defaultProfile };\n } else if (isObject(config)) {\n if (hasAny(config, targetProps)) {\n root2 = { ...config };\n } else {\n root2 = {\n base: { ...config },\n start: { ...config },\n end: { ...config }\n };\n }\n }\n const result = defaultsDeep_1(\n root2,\n { start: root2.startEnd, end: root2.startEnd },\n defaultProfile\n );\n Object.entries(result).forEach(([targetType, targetConfig]) => {\n let targetColor = rootColor;\n if (targetConfig === true || isString_1(targetConfig)) {\n targetColor = isString_1(targetConfig) ? targetConfig : targetColor;\n result[targetType] = { color: targetColor };\n } else if (isObject(targetConfig)) {\n if (hasAny(targetConfig, displayProps)) {\n result[targetType] = { ...targetConfig };\n } else {\n result[targetType] = {};\n }\n }\n defaultsDeep_1(result[targetType], { color: targetColor });\n });\n return result;\n}\nclass HighlightRenderer {\n constructor() {\n __publicField(this, \"type\", \"highlight\");\n }\n normalizeConfig(color, config) {\n return normalizeConfig(color, config, {\n base: { fillMode: \"light\" },\n start: { fillMode: \"solid\" },\n end: { fillMode: \"solid\" }\n });\n }\n prepareRender(glyphs) {\n glyphs.highlights = [];\n if (!glyphs.content)\n glyphs.content = [];\n }\n render({ data: data2, onStart, onEnd }, glyphs) {\n const { key, highlight } = data2;\n if (!highlight)\n return;\n const { highlights } = glyphs;\n const { base, start, end } = highlight;\n if (onStart && onEnd) {\n highlights.push({\n ...start,\n key,\n wrapperClass: `vc-day-layer vc-day-box-center-center vc-attr vc-${start.color}`,\n class: [`vc-highlight vc-highlight-bg-${start.fillMode}`, start.class],\n contentClass: [\n `vc-attr vc-highlight-content-${start.fillMode} vc-${start.color}`,\n start.contentClass\n ]\n });\n } else if (onStart) {\n highlights.push({\n ...base,\n key: `${key}-base`,\n wrapperClass: `vc-day-layer vc-day-box-right-center vc-attr vc-${base.color}`,\n class: [\n `vc-highlight vc-highlight-base-start vc-highlight-bg-${base.fillMode}`,\n base.class\n ]\n });\n highlights.push({\n ...start,\n key,\n wrapperClass: `vc-day-layer vc-day-box-center-center vc-attr vc-${start.color}`,\n class: [`vc-highlight vc-highlight-bg-${start.fillMode}`, start.class],\n contentClass: [\n `vc-attr vc-highlight-content-${start.fillMode} vc-${start.color}`,\n start.contentClass\n ]\n });\n } else if (onEnd) {\n highlights.push({\n ...base,\n key: `${key}-base`,\n wrapperClass: `vc-day-layer vc-day-box-left-center vc-attr vc-${base.color}`,\n class: [\n `vc-highlight vc-highlight-base-end vc-highlight-bg-${base.fillMode}`,\n base.class\n ]\n });\n highlights.push({\n ...end,\n key,\n wrapperClass: `vc-day-layer vc-day-box-center-center vc-attr vc-${end.color}`,\n class: [`vc-highlight vc-highlight-bg-${end.fillMode}`, end.class],\n contentClass: [\n `vc-attr vc-highlight-content-${end.fillMode} vc-${end.color}`,\n end.contentClass\n ]\n });\n } else {\n highlights.push({\n ...base,\n key: `${key}-middle`,\n wrapperClass: `vc-day-layer vc-day-box-center-center vc-attr vc-${base.color}`,\n class: [\n `vc-highlight vc-highlight-base-middle vc-highlight-bg-${base.fillMode}`,\n base.class\n ],\n contentClass: [\n `vc-attr vc-highlight-content-${base.fillMode} vc-${base.color}`,\n base.contentClass\n ]\n });\n }\n }\n}\nclass BaseRenderer {\n constructor(type, collectionType) {\n __publicField(this, \"type\", \"\");\n __publicField(this, \"collectionType\", \"\");\n this.type = type;\n this.collectionType = collectionType;\n }\n normalizeConfig(color, config) {\n return normalizeConfig(color, config);\n }\n prepareRender(glyphs) {\n glyphs[this.collectionType] = [];\n }\n render({ data: data2, onStart, onEnd }, glyphs) {\n const { key } = data2;\n const item = data2[this.type];\n if (!key || !item) {\n return;\n }\n const collection = glyphs[this.collectionType];\n const { base, start, end } = item;\n if (onStart) {\n collection.push({\n ...start,\n key,\n class: [\n `vc-${this.type} vc-${this.type}-start vc-${start.color} vc-attr`,\n start.class\n ]\n });\n } else if (onEnd) {\n collection.push({\n ...end,\n key,\n class: [\n `vc-${this.type} vc-${this.type}-end vc-${end.color} vc-attr`,\n end.class\n ]\n });\n } else {\n collection.push({\n ...base,\n key,\n class: [\n `vc-${this.type} vc-${this.type}-base vc-${base.color} vc-attr`,\n base.class\n ]\n });\n }\n }\n}\nclass ContentRenderer extends BaseRenderer {\n constructor() {\n super(\"content\", \"content\");\n }\n normalizeConfig(_, config) {\n return normalizeConfig(\"base\", config);\n }\n}\nclass DotRenderer extends BaseRenderer {\n constructor() {\n super(\"dot\", \"dots\");\n }\n}\nclass BarRenderer extends BaseRenderer {\n constructor() {\n super(\"bar\", \"bars\");\n }\n}\nclass Theme {\n constructor(color) {\n __publicField(this, \"color\");\n __publicField(this, \"renderers\", [\n new ContentRenderer(),\n new HighlightRenderer(),\n new DotRenderer(),\n new BarRenderer()\n ]);\n this.color = color;\n }\n normalizeGlyphs(attr) {\n this.renderers.forEach((renderer) => {\n const type = renderer.type;\n if (attr[type] != null) {\n attr[type] = renderer.normalizeConfig(this.color, attr[type]);\n }\n });\n }\n prepareRender(glyphs = {}) {\n this.renderers.forEach((renderer) => {\n renderer.prepareRender(glyphs);\n });\n return glyphs;\n }\n render(cell, glyphs) {\n this.renderers.forEach((renderer) => {\n renderer.render(cell, glyphs);\n });\n }\n}\nconst contextKey$4 = Symbol(\"__vc_base_context__\");\nconst propsDef$2 = {\n color: {\n type: String,\n default: () => getDefault(\"color\")\n },\n isDark: {\n type: [Boolean, String, Object],\n default: () => getDefault(\"isDark\")\n },\n firstDayOfWeek: Number,\n masks: Object,\n locale: [String, Object],\n timezone: String,\n minDate: null,\n maxDate: null,\n disabledDates: null\n};\nfunction createBase(props) {\n const color = computed(() => props.color ?? \"\");\n const isDark = computed(() => props.isDark ?? false);\n const { displayMode } = useDarkMode(isDark);\n const theme = computed(() => new Theme(color.value));\n const locale = computed(() => {\n if (props.locale instanceof Locale)\n return props.locale;\n const config = isObject(props.locale) ? props.locale : {\n id: props.locale,\n firstDayOfWeek: props.firstDayOfWeek,\n masks: props.masks\n };\n return new Locale(config, props.timezone);\n });\n const masks2 = computed(() => locale.value.masks);\n const minDate = computed(() => props.minDate);\n const maxDate = computed(() => props.maxDate);\n const disabledDates = computed(() => {\n const dates = props.disabledDates ? [...props.disabledDates] : [];\n if (minDate.value != null) {\n dates.push({\n start: null,\n end: addDays(locale.value.toDate(minDate.value), -1)\n });\n }\n if (maxDate.value != null) {\n dates.push({\n start: addDays(locale.value.toDate(maxDate.value), 1),\n end: null\n });\n }\n return locale.value.ranges(dates);\n });\n const disabledAttribute = computed(() => {\n return new Attribute(\n {\n key: \"disabled\",\n dates: disabledDates.value,\n order: 100\n },\n theme.value,\n locale.value\n );\n });\n const context = {\n color,\n isDark,\n displayMode,\n theme,\n locale,\n masks: masks2,\n minDate,\n maxDate,\n disabledDates,\n disabledAttribute\n };\n provide(contextKey$4, context);\n return context;\n}\nfunction useOrCreateBase(props) {\n return inject(contextKey$4, () => createBase(props), true);\n}\nfunction contextKey$3(slotKey) {\n return `__vc_slot_${slotKey}__`;\n}\nfunction provideSlots(slots, remap = {}) {\n Object.keys(slots).forEach((slotKey) => {\n provide(contextKey$3(remap[slotKey] ?? slotKey), slots[slotKey]);\n });\n}\nfunction useSlot(slotKey) {\n return inject(contextKey$3(slotKey), null);\n}\nconst propsDef$1 = {\n ...propsDef$2,\n view: {\n type: String,\n default: \"monthly\",\n validator(value) {\n return [\"daily\", \"weekly\", \"monthly\"].includes(value);\n }\n },\n rows: {\n type: Number,\n default: 1\n },\n columns: {\n type: Number,\n default: 1\n },\n step: Number,\n titlePosition: {\n type: String,\n default: () => getDefault(\"titlePosition\")\n },\n navVisibility: {\n type: String,\n default: () => getDefault(\"navVisibility\")\n },\n showWeeknumbers: [Boolean, String],\n showIsoWeeknumbers: [Boolean, String],\n expanded: Boolean,\n borderless: Boolean,\n transparent: Boolean,\n initialPage: Object,\n initialPagePosition: { type: Number, default: 1 },\n minPage: Object,\n maxPage: Object,\n transition: String,\n attributes: Array,\n trimWeeks: Boolean,\n disablePageSwipe: Boolean\n};\nconst emitsDef = [\n \"dayclick\",\n \"daymouseenter\",\n \"daymouseleave\",\n \"dayfocusin\",\n \"dayfocusout\",\n \"daykeydown\",\n \"weeknumberclick\",\n \"transition-start\",\n \"transition-end\",\n \"did-move\",\n \"update:view\",\n \"update:pages\"\n];\nconst contextKey$2 = Symbol(\"__vc_calendar_context__\");\nfunction createCalendar(props, { slots, emit }) {\n const containerRef = ref(null);\n const focusedDay = ref(null);\n const focusableDay = ref((/* @__PURE__ */ new Date()).getDate());\n const inTransition = ref(false);\n const navPopoverId = ref(Symbol());\n const dayPopoverId = ref(Symbol());\n const _view = ref(props.view);\n const _pages = ref([]);\n const transitionName = ref(\"\");\n let transitionPromise = null;\n let removeHandlers2 = null;\n provideSlots(slots);\n const {\n theme,\n color,\n displayMode,\n locale,\n masks: masks2,\n minDate,\n maxDate,\n disabledAttribute,\n disabledDates\n } = useOrCreateBase(props);\n const count = computed(() => props.rows * props.columns);\n const step = computed(() => props.step || count.value);\n const firstPage = computed(() => head_1(_pages.value) ?? null);\n const lastPage = computed(() => last_1(_pages.value) ?? null);\n const minPage = computed(\n () => props.minPage || (minDate.value ? getDateAddress(minDate.value) : null)\n );\n const maxPage = computed(\n () => props.maxPage || (maxDate.value ? getDateAddress(maxDate.value) : null)\n );\n const navVisibility = computed(() => props.navVisibility);\n const showWeeknumbers = computed(() => !!props.showWeeknumbers);\n const showIsoWeeknumbers = computed(() => !!props.showIsoWeeknumbers);\n const isMonthly = computed(() => _view.value === \"monthly\");\n const isWeekly = computed(() => _view.value === \"weekly\");\n const isDaily = computed(() => _view.value === \"daily\");\n const onTransitionBeforeEnter = () => {\n inTransition.value = true;\n emit(\"transition-start\");\n };\n const onTransitionAfterEnter = () => {\n inTransition.value = false;\n emit(\"transition-end\");\n if (transitionPromise) {\n transitionPromise.resolve(true);\n transitionPromise = null;\n }\n };\n const addPages$1 = (address, count2, view = _view.value) => {\n return addPages(address, count2, view, locale.value);\n };\n const getDateAddress = (date) => {\n return getPageAddressForDate(date, _view.value, locale.value);\n };\n const refreshDisabled = (day) => {\n if (!disabledAttribute.value || !attributeContext.value)\n return;\n day.isDisabled = attributeContext.value.cellExists(\n disabledAttribute.value.key,\n day.dayIndex\n );\n };\n const refreshFocusable = (day) => {\n day.isFocusable = day.inMonth && day.day === focusableDay.value;\n };\n const forDays = (pages, fn) => {\n for (const page of pages) {\n for (const day of page.days) {\n if (fn(day) === false)\n return;\n }\n }\n };\n const days = computed(\n () => _pages.value.reduce((result, page) => {\n result.push(...page.viewDays);\n return result;\n }, [])\n );\n const attributes = computed(() => {\n const result = [];\n (props.attributes || []).forEach((attr, i) => {\n if (!attr || !attr.dates)\n return;\n result.push(\n new Attribute(\n {\n ...attr,\n order: attr.order || 0\n },\n theme.value,\n locale.value\n )\n );\n });\n if (disabledAttribute.value) {\n result.push(disabledAttribute.value);\n }\n return result;\n });\n const hasAttributes = computed(() => arrayHasItems(attributes.value));\n const attributeContext = computed(() => {\n const ctx = new DateRangeContext();\n attributes.value.forEach((attr) => {\n attr.ranges.forEach((range) => {\n ctx.render(attr, range, days.value);\n });\n });\n return ctx;\n });\n const dayCells = computed(() => {\n return days.value.reduce((result, day) => {\n result[day.dayIndex] = { day, cells: [] };\n result[day.dayIndex].cells.push(...attributeContext.value.getCells(day));\n return result;\n }, {});\n });\n const getWeeknumberPosition = (column, columnFromEnd) => {\n const showWeeknumbers2 = props.showWeeknumbers || props.showIsoWeeknumbers;\n if (showWeeknumbers2 == null)\n return \"\";\n if (isBoolean_1(showWeeknumbers2)) {\n return showWeeknumbers2 ? \"left\" : \"\";\n }\n if (showWeeknumbers2.startsWith(\"right\")) {\n return columnFromEnd > 1 ? \"right\" : showWeeknumbers2;\n }\n return column > 1 ? \"left\" : showWeeknumbers2;\n };\n const getPageForAttributes = () => {\n var _a, _b;\n if (!hasAttributes.value)\n return null;\n const attr = attributes.value.find((attr2) => attr2.pinPage) || attributes.value[0];\n if (!attr || !attr.hasRanges)\n return null;\n const [range] = attr.ranges;\n const date = ((_a = range.start) == null ? void 0 : _a.date) || ((_b = range.end) == null ? void 0 : _b.date);\n return date ? getDateAddress(date) : null;\n };\n const getDefaultInitialPage = () => {\n if (pageIsValid(firstPage.value))\n return firstPage.value;\n const page = getPageForAttributes();\n if (pageIsValid(page))\n return page;\n return getDateAddress(/* @__PURE__ */ new Date());\n };\n const getTargetPageRange = (page, opts = {}) => {\n const { view = _view.value, position = 1, force } = opts;\n const pagesToAdd = position > 0 ? 1 - position : -(count.value + position);\n let fromPage = addPages$1(page, pagesToAdd, view);\n let toPage = addPages$1(fromPage, count.value - 1, view);\n if (!force) {\n if (pageIsBeforePage(fromPage, minPage.value)) {\n fromPage = minPage.value;\n } else if (pageIsAfterPage(toPage, maxPage.value)) {\n fromPage = addPages$1(maxPage.value, 1 - count.value);\n }\n toPage = addPages$1(fromPage, count.value - 1);\n }\n return { fromPage, toPage };\n };\n const getPageTransition = (oldPage, newPage, defaultTransition = \"\") => {\n if (defaultTransition === \"none\" || defaultTransition === \"fade\")\n return defaultTransition;\n if ((oldPage == null ? void 0 : oldPage.view) !== (newPage == null ? void 0 : newPage.view))\n return \"fade\";\n const moveNext2 = pageIsAfterPage(newPage, oldPage);\n const movePrev2 = pageIsBeforePage(newPage, oldPage);\n if (!moveNext2 && !movePrev2) {\n return \"fade\";\n }\n if (defaultTransition === \"slide-v\") {\n return movePrev2 ? \"slide-down\" : \"slide-up\";\n }\n return movePrev2 ? \"slide-right\" : \"slide-left\";\n };\n const refreshPages = (opts = {}) => {\n return new Promise((resolve, reject) => {\n const { position = 1, force = false, transition } = opts;\n const page = pageIsValid(opts.page) ? opts.page : getDefaultInitialPage();\n const { fromPage } = getTargetPageRange(page, {\n position,\n force\n });\n const pages = [];\n for (let i = 0; i < count.value; i++) {\n const newPage = addPages$1(fromPage, i);\n const position2 = i + 1;\n const row = Math.ceil(position2 / props.columns);\n const rowFromEnd = props.rows - row + 1;\n const column = position2 % props.columns || props.columns;\n const columnFromEnd = props.columns - column + 1;\n const weeknumberPosition = getWeeknumberPosition(column, columnFromEnd);\n pages.push(\n locale.value.getPage({\n ...newPage,\n view: _view.value,\n titlePosition: props.titlePosition,\n trimWeeks: props.trimWeeks,\n position: position2,\n row,\n rowFromEnd,\n column,\n columnFromEnd,\n showWeeknumbers: showWeeknumbers.value,\n showIsoWeeknumbers: showIsoWeeknumbers.value,\n weeknumberPosition\n })\n );\n }\n transitionName.value = getPageTransition(\n _pages.value[0],\n pages[0],\n transition\n );\n _pages.value = pages;\n if (transitionName.value && transitionName.value !== \"none\") {\n transitionPromise = {\n resolve,\n reject\n };\n } else {\n resolve(true);\n }\n });\n };\n const targetBy = (pages) => {\n const fromPage = firstPage.value ?? getDateAddress(/* @__PURE__ */ new Date());\n return addPages$1(fromPage, pages);\n };\n const canMove = (target, opts = {}) => {\n const page = pageIsValid(target) ? target : getDateAddress(target);\n Object.assign(\n opts,\n getTargetPageRange(page, {\n ...opts,\n force: true\n })\n );\n const pagesInRange = pageRangeToArray(\n opts.fromPage,\n opts.toPage,\n _view.value,\n locale.value\n ).map((p) => pageIsBetweenPages(p, minPage.value, maxPage.value));\n return pagesInRange.some((val) => val);\n };\n const canMoveBy = (pages, opts = {}) => {\n return canMove(targetBy(pages), opts);\n };\n const canMovePrev = computed(() => canMoveBy(-step.value));\n const canMoveNext = computed(() => canMoveBy(step.value));\n const move = async (target, opts = {}) => {\n if (!opts.force && !canMove(target, opts))\n return false;\n if (opts.fromPage && !pageIsEqualToPage(opts.fromPage, firstPage.value)) {\n hidePopover({ id: navPopoverId.value, hideDelay: 0 });\n if (opts.view) {\n skipWatcher(\"view\", 10);\n _view.value = opts.view;\n }\n await refreshPages({\n ...opts,\n page: opts.fromPage,\n position: 1,\n force: true\n });\n emit(\"did-move\", _pages.value);\n }\n return true;\n };\n const moveBy = (pages, opts = {}) => {\n return move(targetBy(pages), opts);\n };\n const movePrev = () => {\n return moveBy(-step.value);\n };\n const moveNext = () => {\n return moveBy(step.value);\n };\n const tryFocusDate = (date) => {\n const inMonth = isMonthly.value ? \".in-month\" : \"\";\n const daySelector = `.id-${locale.value.getDayId(date)}${inMonth}`;\n const selector = `${daySelector}.vc-focusable, ${daySelector} .vc-focusable`;\n const el = containerRef.value;\n if (el) {\n const focusableEl = el.querySelector(selector);\n if (focusableEl) {\n focusableEl.focus();\n return true;\n }\n }\n return false;\n };\n const focusDate = async (date, opts = {}) => {\n if (tryFocusDate(date))\n return true;\n await move(date, opts);\n return tryFocusDate(date);\n };\n const onDayClick = (day, event) => {\n focusableDay.value = day.day;\n emit(\"dayclick\", day, event);\n };\n const onDayMouseenter = (day, event) => {\n emit(\"daymouseenter\", day, event);\n };\n const onDayMouseleave = (day, event) => {\n emit(\"daymouseleave\", day, event);\n };\n const onDayFocusin = (day, event) => {\n focusableDay.value = day.day;\n focusedDay.value = day;\n day.isFocused = true;\n emit(\"dayfocusin\", day, event);\n };\n const onDayFocusout = (day, event) => {\n focusedDay.value = null;\n day.isFocused = false;\n emit(\"dayfocusout\", day, event);\n };\n const onDayKeydown = (day, event) => {\n emit(\"daykeydown\", day, event);\n const date = day.noonDate;\n let newDate = null;\n switch (event.key) {\n case \"ArrowLeft\": {\n newDate = addDays(date, -1);\n break;\n }\n case \"ArrowRight\": {\n newDate = addDays(date, 1);\n break;\n }\n case \"ArrowUp\": {\n newDate = addDays(date, -7);\n break;\n }\n case \"ArrowDown\": {\n newDate = addDays(date, 7);\n break;\n }\n case \"Home\": {\n newDate = addDays(date, -day.weekdayPosition + 1);\n break;\n }\n case \"End\": {\n newDate = addDays(date, day.weekdayPositionFromEnd);\n break;\n }\n case \"PageUp\": {\n if (event.altKey) {\n newDate = addYears(date, -1);\n } else {\n newDate = addMonths(date, -1);\n }\n break;\n }\n case \"PageDown\": {\n if (event.altKey) {\n newDate = addYears(date, 1);\n } else {\n newDate = addMonths(date, 1);\n }\n break;\n }\n }\n if (newDate) {\n event.preventDefault();\n focusDate(newDate).catch();\n }\n };\n const onKeydown = (event) => {\n const day = focusedDay.value;\n if (day != null) {\n onDayKeydown(day, event);\n }\n };\n const onWeeknumberClick = (week, event) => {\n emit(\"weeknumberclick\", week, event);\n };\n refreshPages({\n page: props.initialPage,\n position: props.initialPagePosition\n });\n onMounted(() => {\n if (!props.disablePageSwipe && containerRef.value) {\n removeHandlers2 = addHorizontalSwipeHandler(\n containerRef.value,\n ({ toLeft = false, toRight = false }) => {\n if (toLeft) {\n moveNext();\n } else if (toRight) {\n movePrev();\n }\n },\n getDefault(\"touch\")\n );\n }\n });\n onUnmounted(() => {\n _pages.value = [];\n if (removeHandlers2)\n removeHandlers2();\n });\n watch(\n () => locale.value,\n () => {\n refreshPages();\n }\n );\n watch(\n () => count.value,\n () => refreshPages()\n );\n watch(\n () => props.view,\n () => _view.value = props.view\n );\n watch(\n () => _view.value,\n () => {\n handleWatcher(\"view\", () => {\n refreshPages();\n });\n emit(\"update:view\", _view.value);\n }\n );\n watch(\n () => focusableDay.value,\n () => {\n forDays(_pages.value, (day) => refreshFocusable(day));\n }\n );\n watchEffect(() => {\n emit(\"update:pages\", _pages.value);\n forDays(_pages.value, (day) => {\n refreshDisabled(day);\n refreshFocusable(day);\n });\n });\n const context = {\n emit,\n containerRef,\n focusedDay,\n inTransition,\n navPopoverId,\n dayPopoverId,\n view: _view,\n pages: _pages,\n transitionName,\n theme,\n color,\n displayMode,\n locale,\n masks: masks2,\n attributes,\n disabledAttribute,\n disabledDates,\n attributeContext,\n days,\n dayCells,\n count,\n step,\n firstPage,\n lastPage,\n canMovePrev,\n canMoveNext,\n minPage,\n maxPage,\n isMonthly,\n isWeekly,\n isDaily,\n navVisibility,\n showWeeknumbers,\n showIsoWeeknumbers,\n getDateAddress,\n canMove,\n canMoveBy,\n move,\n moveBy,\n movePrev,\n moveNext,\n onTransitionBeforeEnter,\n onTransitionAfterEnter,\n tryFocusDate,\n focusDate,\n onKeydown,\n onDayKeydown,\n onDayClick,\n onDayMouseenter,\n onDayMouseleave,\n onDayFocusin,\n onDayFocusout,\n onWeeknumberClick\n };\n provide(contextKey$2, context);\n return context;\n}\nfunction useCalendar() {\n const context = inject(contextKey$2);\n if (context)\n return context;\n throw new Error(\n \"Calendar context missing. Please verify this component is nested within a valid context provider.\"\n );\n}\nconst _sfc_main$k = defineComponent({\n inheritAttrs: false,\n emits: [\"before-show\", \"after-show\", \"before-hide\", \"after-hide\"],\n props: {\n id: { type: [Number, String, Symbol], required: true },\n showDelay: { type: Number, default: 0 },\n hideDelay: { type: Number, default: 110 },\n boundarySelector: { type: String }\n },\n setup(props, { emit }) {\n let timeout = void 0;\n const popoverRef = ref();\n let resizeObserver = null;\n let popper = null;\n const state2 = reactive({\n isVisible: false,\n target: null,\n data: null,\n transition: \"slide-fade\",\n placement: \"bottom\",\n direction: \"\",\n positionFixed: false,\n modifiers: [],\n isInteractive: true,\n visibility: \"click\",\n isHovered: false,\n isFocused: false,\n autoHide: false,\n force: false\n });\n function updateDirection(placement) {\n if (placement)\n state2.direction = placement.split(\"-\")[0];\n }\n function onPopperUpdate({ placement, options }) {\n updateDirection(placement || (options == null ? void 0 : options.placement));\n }\n const popperOptions = computed(() => {\n return {\n placement: state2.placement,\n strategy: state2.positionFixed ? \"fixed\" : \"absolute\",\n boundary: \"\",\n modifiers: [\n {\n name: \"onUpdate\",\n enabled: true,\n phase: \"afterWrite\",\n fn: onPopperUpdate\n },\n ...state2.modifiers || []\n ],\n onFirstUpdate: onPopperUpdate\n };\n });\n const alignment = computed(() => {\n const isLeftRight = state2.direction === \"left\" || state2.direction === \"right\";\n let alignment2 = \"\";\n if (state2.placement) {\n const parts = state2.placement.split(\"-\");\n if (parts.length > 1)\n alignment2 = parts[1];\n }\n if ([\"start\", \"top\", \"left\"].includes(alignment2)) {\n return isLeftRight ? \"top\" : \"left\";\n }\n if ([\"end\", \"bottom\", \"right\"].includes(alignment2)) {\n return isLeftRight ? \"bottom\" : \"right\";\n }\n return isLeftRight ? \"middle\" : \"center\";\n });\n function destroyPopper() {\n if (popper) {\n popper.destroy();\n popper = null;\n }\n }\n function setupPopper() {\n nextTick(() => {\n const el = resolveEl(state2.target);\n if (!el || !popoverRef.value)\n return;\n if (popper && popper.state.elements.reference !== el) {\n destroyPopper();\n }\n if (!popper) {\n popper = createPopper(\n el,\n popoverRef.value,\n popperOptions.value\n );\n } else {\n popper.update();\n }\n });\n }\n function updateState(newState) {\n Object.assign(state2, omit(newState, \"force\"));\n }\n function setTimer(delay, fn) {\n clearTimeout(timeout);\n if (delay > 0) {\n timeout = setTimeout(fn, delay);\n } else {\n fn();\n }\n }\n function isCurrentTarget(target) {\n if (!target || !popper)\n return false;\n const el = resolveEl(target);\n return el === popper.state.elements.reference;\n }\n async function show(opts = {}) {\n if (state2.force)\n return;\n if (opts.force)\n state2.force = true;\n setTimer(opts.showDelay ?? props.showDelay, () => {\n if (state2.isVisible) {\n state2.force = false;\n }\n updateState({\n ...opts,\n isVisible: true\n });\n setupPopper();\n });\n }\n function hide(opts = {}) {\n if (!popper)\n return;\n if (opts.target && !isCurrentTarget(opts.target))\n return;\n if (state2.force)\n return;\n if (opts.force)\n state2.force = true;\n setTimer(opts.hideDelay ?? props.hideDelay, () => {\n if (!state2.isVisible)\n state2.force = false;\n state2.isVisible = false;\n });\n }\n function toggle(opts = {}) {\n if (opts.target == null)\n return;\n if (state2.isVisible && isCurrentTarget(opts.target)) {\n hide(opts);\n } else {\n show(opts);\n }\n }\n function onDocumentClick(e) {\n if (!popper)\n return;\n const popperRef = popper.state.elements.reference;\n if (!popoverRef.value || !popperRef) {\n return;\n }\n const target = e.target;\n if (elementContains(popoverRef.value, target) || elementContains(popperRef, target)) {\n return;\n }\n hide({ force: true });\n }\n function onDocumentKeydown(e) {\n if (e.key === \"Esc\" || e.key === \"Escape\") {\n hide();\n }\n }\n function onDocumentShowPopover({ detail }) {\n if (!detail.id || detail.id !== props.id)\n return;\n show(detail);\n }\n function onDocumentHidePopover({ detail }) {\n if (!detail.id || detail.id !== props.id)\n return;\n hide(detail);\n }\n function onDocumentTogglePopover({ detail }) {\n if (!detail.id || detail.id !== props.id)\n return;\n toggle(detail);\n }\n function addEvents() {\n on(document, \"keydown\", onDocumentKeydown);\n on(document, \"click\", onDocumentClick);\n on(document, \"show-popover\", onDocumentShowPopover);\n on(document, \"hide-popover\", onDocumentHidePopover);\n on(document, \"toggle-popover\", onDocumentTogglePopover);\n }\n function removeEvents() {\n off(document, \"keydown\", onDocumentKeydown);\n off(document, \"click\", onDocumentClick);\n off(document, \"show-popover\", onDocumentShowPopover);\n off(document, \"hide-popover\", onDocumentHidePopover);\n off(document, \"toggle-popover\", onDocumentTogglePopover);\n }\n function beforeEnter(el) {\n emit(\"before-show\", el);\n }\n function afterEnter(el) {\n state2.force = false;\n emit(\"after-show\", el);\n }\n function beforeLeave(el) {\n emit(\"before-hide\", el);\n }\n function afterLeave(el) {\n state2.force = false;\n destroyPopper();\n emit(\"after-hide\", el);\n }\n function onClick(e) {\n e.stopPropagation();\n }\n function onMouseOver() {\n state2.isHovered = true;\n if (state2.isInteractive && [\"hover\", \"hover-focus\"].includes(state2.visibility)) {\n show();\n }\n }\n function onMouseLeave() {\n state2.isHovered = false;\n if (!popper)\n return;\n const popperRef = popper.state.elements.reference;\n if (state2.autoHide && !state2.isFocused && (!popperRef || popperRef !== document.activeElement) && [\"hover\", \"hover-focus\"].includes(state2.visibility)) {\n hide();\n }\n }\n function onFocusIn() {\n state2.isFocused = true;\n if (state2.isInteractive && [\"focus\", \"hover-focus\"].includes(state2.visibility)) {\n show();\n }\n }\n function onFocusOut(e) {\n if ([\"focus\", \"hover-focus\"].includes(state2.visibility) && (!e.relatedTarget || !elementContains(popoverRef.value, e.relatedTarget))) {\n state2.isFocused = false;\n if (!state2.isHovered && state2.autoHide)\n hide();\n }\n }\n function cleanupRO() {\n if (resizeObserver != null) {\n resizeObserver.disconnect();\n resizeObserver = null;\n }\n }\n watch(\n () => popoverRef.value,\n (val) => {\n cleanupRO();\n if (!val)\n return;\n resizeObserver = new ResizeObserver(() => {\n if (popper)\n popper.update();\n });\n resizeObserver.observe(val);\n }\n );\n watch(() => state2.placement, updateDirection, {\n immediate: true\n });\n onMounted(() => {\n addEvents();\n });\n onUnmounted(() => {\n destroyPopper();\n cleanupRO();\n removeEvents();\n });\n return {\n ...toRefs(state2),\n popoverRef,\n alignment,\n hide,\n setupPopper,\n beforeEnter,\n afterEnter,\n beforeLeave,\n afterLeave,\n onClick,\n onMouseOver,\n onMouseLeave,\n onFocusIn,\n onFocusOut\n };\n }\n});\nconst Popover_vue_vue_type_style_index_0_lang = \"\";\nconst _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vc-popover-content-wrapper\", { \"is-interactive\": _ctx.isInteractive }]),\n ref: \"popoverRef\",\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args)),\n onMouseover: _cache[1] || (_cache[1] = (...args) => _ctx.onMouseOver && _ctx.onMouseOver(...args)),\n onMouseleave: _cache[2] || (_cache[2] = (...args) => _ctx.onMouseLeave && _ctx.onMouseLeave(...args)),\n onFocusin: _cache[3] || (_cache[3] = (...args) => _ctx.onFocusIn && _ctx.onFocusIn(...args)),\n onFocusout: _cache[4] || (_cache[4] = (...args) => _ctx.onFocusOut && _ctx.onFocusOut(...args))\n }, [\n createVNode(Transition, {\n name: `vc-${_ctx.transition}`,\n appear: \"\",\n onBeforeEnter: _ctx.beforeEnter,\n onAfterEnter: _ctx.afterEnter,\n onBeforeLeave: _ctx.beforeLeave,\n onAfterLeave: _ctx.afterLeave\n }, {\n default: withCtx(() => [\n _ctx.isVisible ? (openBlock(), createElementBlock(\"div\", mergeProps({\n key: 0,\n tabindex: \"-1\",\n class: `vc-popover-content direction-${_ctx.direction}`\n }, _ctx.$attrs), [\n renderSlot(_ctx.$slots, \"default\", {\n direction: _ctx.direction,\n alignment: _ctx.alignment,\n data: _ctx.data,\n hide: _ctx.hide\n }, () => [\n createTextVNode(toDisplayString(_ctx.data), 1)\n ]),\n createElementVNode(\"span\", {\n class: normalizeClass([\n \"vc-popover-caret\",\n `direction-${_ctx.direction}`,\n `align-${_ctx.alignment}`\n ])\n }, null, 2)\n ], 16)) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"name\", \"onBeforeEnter\", \"onAfterEnter\", \"onBeforeLeave\", \"onAfterLeave\"])\n ], 34);\n}\nconst Popover = /* @__PURE__ */ _export_sfc(_sfc_main$k, [[\"render\", _sfc_render$7]]);\nconst _hoisted_1$c = { class: \"vc-day-popover-row\" };\nconst _hoisted_2$b = {\n key: 0,\n class: \"vc-day-popover-row-indicator\"\n};\nconst _hoisted_3$9 = { class: \"vc-day-popover-row-label\" };\nconst _sfc_main$j = /* @__PURE__ */ defineComponent({\n __name: \"PopoverRow\",\n props: {\n attribute: null\n },\n setup(__props) {\n const props = __props;\n const indicator = computed(() => {\n const { content, highlight, dot, bar, popover } = props.attribute;\n if (popover && popover.hideIndicator)\n return null;\n if (content) {\n return {\n class: `vc-bar vc-day-popover-row-bar vc-attr vc-${content.base.color}`\n };\n }\n if (highlight) {\n return {\n class: `vc-highlight-bg-solid vc-day-popover-row-highlight vc-attr vc-${highlight.base.color}`\n };\n }\n if (dot) {\n return {\n class: `vc-dot vc-attr vc-${dot.base.color}`\n };\n }\n if (bar) {\n return {\n class: `vc-bar vc-day-popover-row-bar vc-attr vc-${bar.base.color}`\n };\n }\n return null;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$c, [\n unref(indicator) ? (openBlock(), createElementBlock(\"div\", _hoisted_2$b, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(indicator).class)\n }, null, 2)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_3$9, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(__props.attribute.popover ? __props.attribute.popover.label : \"No content provided\"), 1)\n ])\n ])\n ]);\n };\n }\n});\nconst PopoverRow_vue_vue_type_style_index_0_lang = \"\";\nconst __default__$3 = {\n inheritAttrs: false\n};\nconst _sfc_main$i = /* @__PURE__ */ defineComponent({\n ...__default__$3,\n __name: \"CalendarSlot\",\n props: {\n name: null\n },\n setup(__props) {\n const props = __props;\n const slot = useSlot(props.name);\n return (_ctx, _cache) => {\n return unref(slot) ? (openBlock(), createBlock(resolveDynamicComponent(unref(slot)), normalizeProps(mergeProps({ key: 0 }, _ctx.$attrs)), null, 16)) : renderSlot(_ctx.$slots, \"default\", { key: 1 });\n };\n }\n});\nconst _hoisted_1$b = { class: \"vc-day-popover-container\" };\nconst _hoisted_2$a = {\n key: 0,\n class: \"vc-day-popover-header\"\n};\nconst _sfc_main$h = /* @__PURE__ */ defineComponent({\n __name: \"CalendarDayPopover\",\n setup(__props) {\n const { dayPopoverId, displayMode, color, masks: masks2, locale } = useCalendar();\n function format(date, mask) {\n return locale.value.formatDate(date, mask);\n }\n function dayTitle(day) {\n return locale.value.formatDate(day.date, masks2.value.dayPopover);\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Popover, {\n id: unref(dayPopoverId),\n class: normalizeClass([`vc-${unref(color)}`, `vc-${unref(displayMode)}`])\n }, {\n default: withCtx(({ data: { day, attributes }, hide }) => [\n createVNode(_sfc_main$i, {\n name: \"day-popover\",\n day,\n \"day-title\": dayTitle(day),\n attributes,\n format,\n masks: unref(masks2),\n hide\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1$b, [\n unref(masks2).dayPopover ? (openBlock(), createElementBlock(\"div\", _hoisted_2$a, toDisplayString(dayTitle(day)), 1)) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(attributes, (attribute) => {\n return openBlock(), createBlock(_sfc_main$j, {\n key: attribute.key,\n attribute\n }, null, 8, [\"attribute\"]);\n }), 128))\n ])\n ]),\n _: 2\n }, 1032, [\"day\", \"day-title\", \"attributes\", \"masks\", \"hide\"])\n ]),\n _: 1\n }, 8, [\"id\", \"class\"]);\n };\n }\n});\nconst _sfc_main$g = {};\nconst _hoisted_1$a = {\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n viewBox: \"0 0 24 24\"\n};\nconst _hoisted_2$9 = /* @__PURE__ */ createElementVNode(\"polyline\", { points: \"9 18 15 12 9 6\" }, null, -1);\nconst _hoisted_3$8 = [\n _hoisted_2$9\n];\nfunction _sfc_render$6(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$a, _hoisted_3$8);\n}\nconst IconChevronRight = /* @__PURE__ */ _export_sfc(_sfc_main$g, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$f = {};\nconst _hoisted_1$9 = {\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n viewBox: \"0 0 24 24\"\n};\nconst _hoisted_2$8 = /* @__PURE__ */ createElementVNode(\"polyline\", { points: \"15 18 9 12 15 6\" }, null, -1);\nconst _hoisted_3$7 = [\n _hoisted_2$8\n];\nfunction _sfc_render$5(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$9, _hoisted_3$7);\n}\nconst IconChevronLeft = /* @__PURE__ */ _export_sfc(_sfc_main$f, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$e = {};\nconst _hoisted_1$8 = {\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n viewBox: \"0 0 24 24\"\n};\nconst _hoisted_2$7 = /* @__PURE__ */ createElementVNode(\"polyline\", { points: \"6 9 12 15 18 9\" }, null, -1);\nconst _hoisted_3$6 = [\n _hoisted_2$7\n];\nfunction _sfc_render$4(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$8, _hoisted_3$6);\n}\nconst IconChevronDown = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$4]]);\nconst _sfc_main$d = {};\nconst _hoisted_1$7 = {\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-width\": \"2\",\n viewBox: \"0 0 24 24\"\n};\nconst _hoisted_2$6 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z\" }, null, -1);\nconst _hoisted_3$5 = [\n _hoisted_2$6\n];\nfunction _sfc_render$3(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$7, _hoisted_3$5);\n}\nconst IconClock = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$3]]);\nconst icons = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n IconChevronDown,\n IconChevronLeft,\n IconChevronRight,\n IconClock\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst _sfc_main$c = /* @__PURE__ */ defineComponent({\n __name: \"BaseIcon\",\n props: {\n name: { type: String, required: true },\n width: { type: String },\n height: { type: String },\n size: { type: String, default: \"26\" },\n viewBox: { type: String }\n },\n setup(__props) {\n const props = __props;\n const width = computed(() => props.width || props.size);\n const height = computed(() => props.height || props.size);\n const icon = computed(() => icons[`Icon${props.name}`]);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(unref(icon)), {\n width: unref(width),\n height: unref(height),\n class: \"vc-base-icon\"\n }, null, 8, [\"width\", \"height\"]);\n };\n }\n});\nconst BaseIcon_vue_vue_type_style_index_0_lang = \"\";\nconst _hoisted_1$6 = [\"disabled\"];\nconst _hoisted_2$5 = {\n key: 1,\n class: \"vc-title-wrapper\"\n};\nconst _hoisted_3$4 = {\n type: \"button\",\n class: \"vc-title\"\n};\nconst _hoisted_4$3 = [\"disabled\"];\nconst _sfc_main$b = /* @__PURE__ */ defineComponent({\n __name: \"CalendarHeader\",\n props: {\n page: null,\n layout: null,\n isLg: { type: Boolean },\n isXl: { type: Boolean },\n is2xl: { type: Boolean },\n hideTitle: { type: Boolean },\n hideArrows: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const {\n navPopoverId,\n navVisibility,\n canMovePrev,\n movePrev,\n canMoveNext,\n moveNext\n } = useCalendar();\n const navPlacement = computed(() => {\n switch (props.page.titlePosition) {\n case \"left\":\n return \"bottom-start\";\n case \"right\":\n return \"bottom-end\";\n default:\n return \"bottom\";\n }\n });\n const navPopoverOptions = computed(() => {\n const { page } = props;\n return {\n id: navPopoverId.value,\n visibility: navVisibility.value,\n placement: navPlacement.value,\n modifiers: [{ name: \"flip\", options: { fallbackPlacements: [\"bottom\"] } }],\n data: { page },\n isInteractive: true\n };\n });\n const titleLeft = computed(() => props.page.titlePosition.includes(\"left\"));\n const titleRight = computed(() => props.page.titlePosition.includes(\"right\"));\n const layout_ = computed(() => {\n if (props.layout)\n return props.layout;\n if (titleLeft.value)\n return \"tu-pn\";\n if (titleRight.value)\n return \"pn-tu\";\n return \"p-tu-n;\";\n });\n const show = computed(() => {\n return {\n prev: layout_.value.includes(\"p\") && !props.hideArrows,\n title: layout_.value.includes(\"t\") && !props.hideTitle,\n next: layout_.value.includes(\"n\") && !props.hideArrows\n };\n });\n const gridStyle = computed(() => {\n const gridTemplateColumns = layout_.value.split(\"\").map((l) => {\n switch (l) {\n case \"p\":\n return \"[prev] auto\";\n case \"n\":\n return \"[next] auto\";\n case \"t\":\n return \"[title] auto\";\n case \"-\":\n return \"1fr\";\n default:\n return \"\";\n }\n }).join(\" \");\n return { gridTemplateColumns };\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vc-header\", { \"is-lg\": __props.isLg, \"is-xl\": __props.isXl, \"is-2xl\": __props.is2xl }]),\n style: normalizeStyle(unref(gridStyle))\n }, [\n unref(show).prev ? (openBlock(), createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n class: \"vc-arrow vc-prev vc-focus\",\n disabled: !unref(canMovePrev),\n onClick: _cache[0] || (_cache[0] = //@ts-ignore\n (...args) => unref(movePrev) && unref(movePrev)(...args)),\n onKeydown: _cache[1] || (_cache[1] = withKeys(\n //@ts-ignore\n (...args) => unref(movePrev) && unref(movePrev)(...args),\n [\"space\", \"enter\"]\n ))\n }, [\n createVNode(_sfc_main$i, {\n name: \"header-prev-button\",\n disabled: !unref(canMovePrev)\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$c, {\n name: \"ChevronLeft\",\n size: \"24\"\n })\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ], 40, _hoisted_1$6)) : createCommentVNode(\"\", true),\n unref(show).title ? (openBlock(), createElementBlock(\"div\", _hoisted_2$5, [\n createVNode(_sfc_main$i, { name: \"header-title-wrapper\" }, {\n default: withCtx(() => [\n withDirectives((openBlock(), createElementBlock(\"button\", _hoisted_3$4, [\n createVNode(_sfc_main$i, {\n name: \"header-title\",\n title: __props.page.title\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", null, toDisplayString(__props.page.title), 1)\n ]),\n _: 1\n }, 8, [\"title\"])\n ])), [\n [unref(popoverDirective), unref(navPopoverOptions)]\n ])\n ]),\n _: 1\n })\n ])) : createCommentVNode(\"\", true),\n unref(show).next ? (openBlock(), createElementBlock(\"button\", {\n key: 2,\n type: \"button\",\n class: \"vc-arrow vc-next vc-focus\",\n disabled: !unref(canMoveNext),\n onClick: _cache[2] || (_cache[2] = //@ts-ignore\n (...args) => unref(moveNext) && unref(moveNext)(...args)),\n onKeydown: _cache[3] || (_cache[3] = withKeys(\n //@ts-ignore\n (...args) => unref(moveNext) && unref(moveNext)(...args),\n [\"space\", \"enter\"]\n ))\n }, [\n createVNode(_sfc_main$i, {\n name: \"header-next-button\",\n disabled: !unref(canMoveNext)\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$c, {\n name: \"ChevronRight\",\n size: \"24\"\n })\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ], 40, _hoisted_4$3)) : createCommentVNode(\"\", true)\n ], 6);\n };\n }\n});\nconst CalendarHeader_vue_vue_type_style_index_0_lang = \"\";\nconst contextKey$1 = Symbol(\"__vc_page_context__\");\nfunction createPage(page) {\n const { locale, getDateAddress, canMove } = useCalendar();\n function getMonthItems(year, mask) {\n const { month: thisMonth, year: thisYear } = getDateAddress(/* @__PURE__ */ new Date());\n return getMonthDates().map((d, i) => {\n const month = i + 1;\n return {\n month,\n year,\n id: getPageId(month, year),\n label: locale.value.formatDate(d, mask),\n ariaLabel: locale.value.formatDate(d, \"MMMM\"),\n isActive: month === page.value.month && year === page.value.year,\n isCurrent: month === thisMonth && year === thisYear,\n isDisabled: !canMove(\n { month, year },\n { position: page.value.position }\n )\n };\n });\n }\n function getYearItems(startYear, endYear) {\n const { year: thisYear } = getDateAddress(/* @__PURE__ */ new Date());\n const { position } = page.value;\n const items = [];\n for (let year = startYear; year <= endYear; year += 1) {\n const enabled = [...Array(12).keys()].some(\n (m) => canMove({ month: m + 1, year }, { position })\n );\n items.push({\n year,\n id: year.toString(),\n label: year.toString(),\n ariaLabel: year.toString(),\n isActive: year === page.value.year,\n isCurrent: year === thisYear,\n isDisabled: !enabled\n });\n }\n return items;\n }\n const context = { page, getMonthItems, getYearItems };\n provide(contextKey$1, context);\n return context;\n}\nfunction usePage() {\n const context = inject(contextKey$1);\n if (context)\n return context;\n throw new Error(\n \"Page context missing. Please verify this component is nested within a valid context provider.\"\n );\n}\nconst _hoisted_1$5 = { class: \"vc-nav-header\" };\nconst _hoisted_2$4 = [\"disabled\"];\nconst _hoisted_3$3 = [\"disabled\"];\nconst _hoisted_4$2 = { class: \"vc-nav-items\" };\nconst _hoisted_5$2 = [\"data-id\", \"aria-label\", \"disabled\", \"onClick\", \"onKeydown\"];\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n __name: \"CalendarNav\",\n setup(__props) {\n const { masks: masks2, move } = useCalendar();\n const { page, getMonthItems, getYearItems } = usePage();\n const monthMode = ref(true);\n const yearGroupCount = 12;\n const selectedYear = ref(page.value.year);\n const selectedYearGroup = ref(getYearGroupIndex(page.value.year));\n const navContainer = ref(null);\n function focusFirstItem() {\n setTimeout(() => {\n if (navContainer.value == null)\n return;\n const focusableEl = navContainer.value.querySelector(\n \".vc-nav-item:not(:disabled)\"\n );\n if (focusableEl) {\n focusableEl.focus();\n }\n }, 10);\n }\n function getYearGroupIndex(year) {\n return Math.floor(year / yearGroupCount);\n }\n function toggleMode() {\n monthMode.value = !monthMode.value;\n }\n function getStartYear(groupIndex) {\n return groupIndex * yearGroupCount;\n }\n function getEndYear(groupIndex) {\n return yearGroupCount * (groupIndex + 1) - 1;\n }\n function movePrev() {\n if (!prevItemsEnabled.value)\n return;\n if (monthMode.value) {\n movePrevYear();\n }\n movePrevYearGroup();\n }\n function moveNext() {\n if (!nextItemsEnabled.value)\n return;\n if (monthMode.value) {\n moveNextYear();\n }\n moveNextYearGroup();\n }\n function movePrevYear() {\n selectedYear.value--;\n }\n function moveNextYear() {\n selectedYear.value++;\n }\n function movePrevYearGroup() {\n selectedYearGroup.value--;\n }\n function moveNextYearGroup() {\n selectedYearGroup.value++;\n }\n const monthItems = computed(\n () => getMonthItems(selectedYear.value, masks2.value.navMonths).map((item) => ({\n ...item,\n click: () => move(\n { month: item.month, year: item.year },\n { position: page.value.position }\n )\n }))\n );\n const prevMonthItems = computed(\n () => getMonthItems(selectedYear.value - 1, masks2.value.navMonths)\n );\n const prevMonthItemsEnabled = computed(\n () => prevMonthItems.value.some((i) => !i.isDisabled)\n );\n const nextMonthItems = computed(\n () => getMonthItems(selectedYear.value + 1, masks2.value.navMonths)\n );\n const nextMonthItemsEnabled = computed(\n () => nextMonthItems.value.some((i) => !i.isDisabled)\n );\n const yearItems = computed(\n () => getYearItems(\n getStartYear(selectedYearGroup.value),\n getEndYear(selectedYearGroup.value)\n ).map((item) => {\n return {\n ...item,\n click: () => {\n selectedYear.value = item.year;\n monthMode.value = true;\n focusFirstItem();\n }\n };\n })\n );\n const prevYearItems = computed(\n () => getYearItems(\n getStartYear(selectedYearGroup.value - 1),\n getEndYear(selectedYearGroup.value - 1)\n )\n );\n const prevYearItemsEnabled = computed(\n () => prevYearItems.value.some((i) => !i.isDisabled)\n );\n const nextYearItems = computed(\n () => getYearItems(\n getStartYear(selectedYearGroup.value + 1),\n getEndYear(selectedYearGroup.value + 1)\n )\n );\n const nextYearItemsEnabled = computed(\n () => nextYearItems.value.some((i) => !i.isDisabled)\n );\n const activeItems = computed(\n () => monthMode.value ? monthItems.value : yearItems.value\n );\n const prevItemsEnabled = computed(\n () => monthMode.value ? prevMonthItemsEnabled.value : prevYearItemsEnabled.value\n );\n const nextItemsEnabled = computed(\n () => monthMode.value ? nextMonthItemsEnabled.value : nextYearItemsEnabled.value\n );\n const firstYear = computed(() => head_1(yearItems.value.map((i) => i.year)));\n const lastYear = computed(() => last_1(yearItems.value.map((i) => i.year)));\n const title2 = computed(() => {\n return monthMode.value ? selectedYear.value : `${firstYear.value} - ${lastYear.value}`;\n });\n watchEffect(() => {\n selectedYear.value = page.value.year;\n focusFirstItem();\n });\n watch(\n () => selectedYear.value,\n (val) => selectedYearGroup.value = getYearGroupIndex(val)\n );\n onMounted(() => focusFirstItem());\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"vc-nav-container\",\n ref_key: \"navContainer\",\n ref: navContainer\n }, [\n createElementVNode(\"div\", _hoisted_1$5, [\n createElementVNode(\"button\", {\n type: \"button\",\n class: \"vc-nav-arrow is-left vc-focus\",\n disabled: !unref(prevItemsEnabled),\n onClick: movePrev,\n onKeydown: _cache[0] || (_cache[0] = (e) => unref(onSpaceOrEnter)(e, movePrev))\n }, [\n createVNode(_sfc_main$i, {\n name: \"nav-prev-button\",\n move: movePrev,\n disabled: !unref(prevItemsEnabled)\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$c, {\n name: \"ChevronLeft\",\n width: \"22px\",\n height: \"24px\"\n })\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ], 40, _hoisted_2$4),\n createElementVNode(\"button\", {\n type: \"button\",\n class: \"vc-nav-title vc-focus\",\n onClick: toggleMode,\n onKeydown: _cache[1] || (_cache[1] = (e) => unref(onSpaceOrEnter)(e, toggleMode))\n }, toDisplayString(unref(title2)), 33),\n createElementVNode(\"button\", {\n type: \"button\",\n class: \"vc-nav-arrow is-right vc-focus\",\n disabled: !unref(nextItemsEnabled),\n onClick: moveNext,\n onKeydown: _cache[2] || (_cache[2] = (e) => unref(onSpaceOrEnter)(e, moveNext))\n }, [\n createVNode(_sfc_main$i, {\n name: \"nav-next-button\",\n move: moveNext,\n disabled: !unref(nextItemsEnabled)\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$c, {\n name: \"ChevronRight\",\n width: \"22px\",\n height: \"24px\"\n })\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ], 40, _hoisted_3$3)\n ]),\n createElementVNode(\"div\", _hoisted_4$2, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(activeItems), (item) => {\n return openBlock(), createElementBlock(\"button\", {\n key: item.label,\n type: \"button\",\n \"data-id\": item.id,\n \"aria-label\": item.ariaLabel,\n class: normalizeClass([\"vc-nav-item vc-focus\", [\n item.isActive ? \"is-active\" : item.isCurrent ? \"is-current\" : \"\"\n ]]),\n disabled: item.isDisabled,\n onClick: item.click,\n onKeydown: (e) => unref(onSpaceOrEnter)(e, item.click)\n }, toDisplayString(item.label), 43, _hoisted_5$2);\n }), 128))\n ])\n ], 512);\n };\n }\n});\nconst CalendarNav_vue_vue_type_style_index_0_lang = \"\";\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n __name: \"CalendarPageProvider\",\n props: {\n page: null\n },\n setup(__props) {\n const props = __props;\n createPage(toRef(props, \"page\"));\n return (_ctx, _cache) => {\n return renderSlot(_ctx.$slots, \"default\");\n };\n }\n});\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n __name: \"CalendarNavPopover\",\n setup(__props) {\n const { navPopoverId, color, displayMode } = useCalendar();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Popover, {\n id: unref(navPopoverId),\n class: normalizeClass([\"vc-nav-popover-container\", `vc-${unref(color)}`, `vc-${unref(displayMode)}`])\n }, {\n default: withCtx(({ data: data2 }) => [\n createVNode(_sfc_main$9, {\n page: data2.page\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$i, { name: \"nav\" }, {\n default: withCtx(() => [\n createVNode(_sfc_main$a)\n ]),\n _: 1\n })\n ]),\n _: 2\n }, 1032, [\"page\"])\n ]),\n _: 1\n }, 8, [\"id\", \"class\"]);\n };\n }\n});\nconst _sfc_main$7 = defineComponent({\n directives: { popover: popoverDirective },\n components: { CalendarSlot: _sfc_main$i },\n props: {\n day: { type: Object, required: true }\n },\n setup(props) {\n const {\n locale,\n theme,\n attributeContext,\n dayPopoverId,\n onDayClick,\n onDayMouseenter,\n onDayMouseleave,\n onDayFocusin,\n onDayFocusout,\n onDayKeydown\n } = useCalendar();\n const day = computed(() => props.day);\n const attributeCells = computed(() => {\n return attributeContext.value.getCells(day.value);\n });\n const attributes = computed(\n () => attributeCells.value.map((cell) => cell.data)\n );\n const attributedDay = computed(() => {\n return {\n ...day.value,\n attributes: attributes.value,\n attributeCells: attributeCells.value\n };\n });\n function processPopover({ data: attribute }, { popovers: popovers2 }) {\n const { key, customData, popover } = attribute;\n if (!popover)\n return;\n const resolvedPopover = defaults_1(\n {\n key,\n customData,\n attribute\n },\n { ...popover },\n {\n visibility: popover.label ? \"hover\" : \"click\",\n placement: \"bottom\",\n isInteractive: !popover.label\n }\n );\n popovers2.splice(0, 0, resolvedPopover);\n }\n const glyphs = computed(() => {\n const result = {\n ...theme.value.prepareRender({}),\n popovers: []\n };\n attributeCells.value.forEach((cell) => {\n theme.value.render(cell, result);\n processPopover(cell, result);\n });\n return result;\n });\n const highlights = computed(() => glyphs.value.highlights);\n const hasHighlights = computed(() => !!arrayHasItems(highlights.value));\n const content = computed(() => glyphs.value.content);\n const dots = computed(() => glyphs.value.dots);\n const hasDots = computed(() => !!arrayHasItems(dots.value));\n const bars = computed(() => glyphs.value.bars);\n const hasBars = computed(() => !!arrayHasItems(bars.value));\n const popovers = computed(() => glyphs.value.popovers);\n const popoverAttrs = computed(\n () => popovers.value.map((p) => p.attribute)\n );\n const dayContentSlot = useSlot(\"day-content\");\n const dayClasses = computed(() => {\n return [\n \"vc-day\",\n ...day.value.classes,\n { \"vc-day-box-center-center\": !dayContentSlot },\n { \"is-not-in-month\": !props.day.inMonth }\n ];\n });\n const dayContentProps = computed(() => {\n let tabindex;\n if (day.value.isFocusable) {\n tabindex = \"0\";\n } else {\n tabindex = \"-1\";\n }\n const classes = [\n \"vc-day-content vc-focusable vc-focus vc-attr\",\n { \"vc-disabled\": day.value.isDisabled },\n get_1(last_1(highlights.value), \"contentClass\"),\n get_1(last_1(content.value), \"class\") || \"\"\n ];\n const style = {\n ...get_1(last_1(highlights.value), \"contentStyle\"),\n ...get_1(last_1(content.value), \"style\")\n };\n return {\n class: classes,\n style,\n tabindex,\n \"aria-label\": day.value.ariaLabel,\n \"aria-disabled\": day.value.isDisabled ? true : false,\n role: \"button\"\n };\n });\n const dayContentEvents = computed(() => {\n return {\n click(event) {\n onDayClick(attributedDay.value, event);\n },\n mouseenter(event) {\n onDayMouseenter(attributedDay.value, event);\n },\n mouseleave(event) {\n onDayMouseleave(attributedDay.value, event);\n },\n focusin(event) {\n onDayFocusin(attributedDay.value, event);\n },\n focusout(event) {\n onDayFocusout(attributedDay.value, event);\n },\n keydown(event) {\n onDayKeydown(attributedDay.value, event);\n }\n };\n });\n const dayPopover2 = computed(() => {\n if (!arrayHasItems(popovers.value))\n return null;\n return defaults_1(\n {\n id: dayPopoverId.value,\n data: { day, attributes: popoverAttrs.value }\n },\n ...popovers.value\n );\n });\n return {\n attributes,\n attributeCells,\n bars,\n dayClasses,\n dayContentProps,\n dayContentEvents,\n dayPopover: dayPopover2,\n glyphs,\n dots,\n hasDots,\n hasBars,\n highlights,\n hasHighlights,\n locale,\n popovers\n };\n }\n});\nconst CalendarDay_vue_vue_type_style_index_0_lang = \"\";\nconst _hoisted_1$4 = {\n key: 0,\n class: \"vc-highlights vc-day-layer\"\n};\nconst _hoisted_2$3 = {\n key: 1,\n class: \"vc-day-layer vc-day-box-center-bottom\"\n};\nconst _hoisted_3$2 = { class: \"vc-dots\" };\nconst _hoisted_4$1 = {\n key: 2,\n class: \"vc-day-layer vc-day-box-center-bottom\"\n};\nconst _hoisted_5$1 = { class: \"vc-bars\" };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CalendarSlot = resolveComponent(\"CalendarSlot\");\n const _directive_popover = resolveDirective(\"popover\");\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(_ctx.dayClasses)\n }, [\n _ctx.hasHighlights ? (openBlock(), createElementBlock(\"div\", _hoisted_1$4, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.highlights, ({ key, wrapperClass, class: bgClass, style }) => {\n return openBlock(), createElementBlock(\"div\", {\n key,\n class: normalizeClass(wrapperClass)\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(bgClass),\n style: normalizeStyle(style)\n }, null, 6)\n ], 2);\n }), 128))\n ])) : createCommentVNode(\"\", true),\n createVNode(_component_CalendarSlot, {\n name: \"day-content\",\n day: _ctx.day,\n attributes: _ctx.attributes,\n \"attribute-cells\": _ctx.attributeCells,\n dayProps: _ctx.dayContentProps,\n dayEvents: _ctx.dayContentEvents,\n locale: _ctx.locale\n }, {\n default: withCtx(() => [\n withDirectives((openBlock(), createElementBlock(\"div\", mergeProps(_ctx.dayContentProps, toHandlers(_ctx.dayContentEvents, true)), [\n createTextVNode(toDisplayString(_ctx.day.label), 1)\n ], 16)), [\n [_directive_popover, _ctx.dayPopover]\n ])\n ]),\n _: 1\n }, 8, [\"day\", \"attributes\", \"attribute-cells\", \"dayProps\", \"dayEvents\", \"locale\"]),\n _ctx.hasDots ? (openBlock(), createElementBlock(\"div\", _hoisted_2$3, [\n createElementVNode(\"div\", _hoisted_3$2, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.dots, ({ key, class: bgClass, style }) => {\n return openBlock(), createElementBlock(\"span\", {\n key,\n class: normalizeClass(bgClass),\n style: normalizeStyle(style)\n }, null, 6);\n }), 128))\n ])\n ])) : createCommentVNode(\"\", true),\n _ctx.hasBars ? (openBlock(), createElementBlock(\"div\", _hoisted_4$1, [\n createElementVNode(\"div\", _hoisted_5$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.bars, ({ key, class: bgClass, style }) => {\n return openBlock(), createElementBlock(\"span\", {\n key,\n class: normalizeClass(bgClass),\n style: normalizeStyle(style)\n }, null, 6);\n }), 128))\n ])\n ])) : createCommentVNode(\"\", true)\n ], 2);\n}\nconst CalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"render\", _sfc_render$2]]);\nconst _hoisted_1$3 = { class: \"vc-weekdays\" };\nconst _hoisted_2$2 = [\"onClick\"];\nconst __default__$2 = {\n inheritAttrs: false\n};\nconst _sfc_main$6 = /* @__PURE__ */ defineComponent({\n ...__default__$2,\n __name: \"CalendarPage\",\n setup(__props) {\n const { page } = usePage();\n const { onWeeknumberClick } = useCalendar();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n \"vc-pane\",\n `row-${unref(page).row}`,\n `row-from-end-${unref(page).rowFromEnd}`,\n `column-${unref(page).column}`,\n `column-from-end-${unref(page).columnFromEnd}`\n ]),\n ref: \"pane\"\n }, [\n createVNode(_sfc_main$b, {\n page: unref(page),\n \"is-lg\": \"\",\n \"hide-arrows\": \"\"\n }, null, 8, [\"page\"]),\n createElementVNode(\"div\", {\n class: normalizeClass([\"vc-weeks\", {\n [`vc-show-weeknumbers-${unref(page).weeknumberPosition}`]: unref(page).weeknumberPosition\n }])\n }, [\n createElementVNode(\"div\", _hoisted_1$3, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(page).weekdays, ({ weekday, label }, i) => {\n return openBlock(), createElementBlock(\"div\", {\n key: i,\n class: normalizeClass(`vc-weekday vc-weekday-${weekday}`)\n }, toDisplayString(label), 3);\n }), 128))\n ]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(page).viewWeeks, (week) => {\n return openBlock(), createElementBlock(\"div\", {\n key: `weeknumber-${week.weeknumber}`,\n class: \"vc-week\"\n }, [\n unref(page).weeknumberPosition ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vc-weeknumber\", `is-${unref(page).weeknumberPosition}`])\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass([\"vc-weeknumber-content\"]),\n onClick: ($event) => unref(onWeeknumberClick)(week, $event)\n }, toDisplayString(week.weeknumberDisplay), 9, _hoisted_2$2)\n ], 2)) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(week.days, (day) => {\n return openBlock(), createBlock(CalendarDay, {\n key: day.id,\n day\n }, null, 8, [\"day\"]);\n }), 128))\n ]);\n }), 128))\n ], 2)\n ], 2);\n };\n }\n});\nconst CalendarPage_vue_vue_type_style_index_0_lang = \"\";\nconst _sfc_main$5 = defineComponent({\n components: {\n CalendarHeader: _sfc_main$b,\n CalendarPage: _sfc_main$6,\n CalendarNavPopover: _sfc_main$8,\n CalendarDayPopover: _sfc_main$h,\n CalendarPageProvider: _sfc_main$9,\n CalendarSlot: _sfc_main$i\n },\n props: propsDef$1,\n emit: emitsDef,\n setup(props, { emit, slots }) {\n return createCalendar(props, { emit, slots });\n }\n});\nconst Calendar_vue_vue_type_style_index_0_lang = \"\";\nconst _hoisted_1$2 = { class: \"vc-pane-header-wrapper\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CalendarHeader = resolveComponent(\"CalendarHeader\");\n const _component_CalendarPage = resolveComponent(\"CalendarPage\");\n const _component_CalendarSlot = resolveComponent(\"CalendarSlot\");\n const _component_CalendarPageProvider = resolveComponent(\"CalendarPageProvider\");\n const _component_CalendarDayPopover = resolveComponent(\"CalendarDayPopover\");\n const _component_CalendarNavPopover = resolveComponent(\"CalendarNavPopover\");\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"div\", mergeProps({ \"data-helptext\": \"Press the arrow keys to navigate by day, Home and End to navigate to week ends, PageUp and PageDown to navigate by month, Alt+PageUp and Alt+PageDown to navigate by year\" }, _ctx.$attrs, {\n class: [\n \"vc-container\",\n `vc-${_ctx.view}`,\n `vc-${_ctx.color}`,\n `vc-${_ctx.displayMode}`,\n {\n \"vc-expanded\": _ctx.expanded,\n \"vc-bordered\": !_ctx.borderless,\n \"vc-transparent\": _ctx.transparent\n }\n ],\n onMouseup: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"prevent\"])),\n ref: \"containerRef\"\n }), [\n createElementVNode(\"div\", {\n class: normalizeClass([\"vc-pane-container\", { \"in-transition\": _ctx.inTransition }])\n }, [\n createElementVNode(\"div\", _hoisted_1$2, [\n _ctx.firstPage ? (openBlock(), createBlock(_component_CalendarHeader, {\n key: 0,\n page: _ctx.firstPage,\n \"is-lg\": \"\",\n \"hide-title\": \"\"\n }, null, 8, [\"page\"])) : createCommentVNode(\"\", true)\n ]),\n createVNode(Transition, {\n name: `vc-${_ctx.transitionName}`,\n onBeforeEnter: _ctx.onTransitionBeforeEnter,\n onAfterEnter: _ctx.onTransitionAfterEnter\n }, {\n default: withCtx(() => [\n (openBlock(), createElementBlock(\"div\", {\n key: _ctx.pages[0].id,\n class: \"vc-pane-layout\",\n style: normalizeStyle({\n gridTemplateColumns: `repeat(${_ctx.columns}, 1fr)`\n })\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.pages, (page) => {\n return openBlock(), createBlock(_component_CalendarPageProvider, {\n key: page.id,\n page\n }, {\n default: withCtx(() => [\n createVNode(_component_CalendarSlot, {\n name: \"page\",\n page\n }, {\n default: withCtx(() => [\n createVNode(_component_CalendarPage)\n ]),\n _: 2\n }, 1032, [\"page\"])\n ]),\n _: 2\n }, 1032, [\"page\"]);\n }), 128))\n ], 4))\n ]),\n _: 1\n }, 8, [\"name\", \"onBeforeEnter\", \"onAfterEnter\"]),\n createVNode(_component_CalendarSlot, { name: \"footer\" })\n ], 2)\n ], 16),\n createVNode(_component_CalendarDayPopover),\n createVNode(_component_CalendarNavPopover)\n ], 64);\n}\nconst Calendar = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$1]]);\nconst contextKey = Symbol(\"__vc_date_picker_context__\");\nconst propsDef = {\n ...propsDef$2,\n mode: { type: String, default: \"date\" },\n modelValue: {\n type: [Number, String, Date, Object]\n },\n modelModifiers: {\n type: Object,\n default: () => ({})\n },\n rules: [String, Object],\n is24hr: Boolean,\n hideTimeHeader: Boolean,\n timeAccuracy: { type: Number, default: 2 },\n isRequired: Boolean,\n isRange: Boolean,\n updateOnInput: {\n type: Boolean,\n default: () => getDefault(\"datePicker.updateOnInput\")\n },\n inputDebounce: {\n type: Number,\n default: () => getDefault(\"datePicker.inputDebounce\")\n },\n popover: {\n type: [Boolean, Object],\n default: true\n },\n dragAttribute: Object,\n selectAttribute: Object,\n attributes: [Object, Array]\n};\nconst emits = [\n \"update:modelValue\",\n \"drag\",\n \"dayclick\",\n \"daykeydown\",\n \"popover-will-show\",\n \"popover-did-show\",\n \"popover-will-hide\",\n \"popover-did-hide\"\n];\nfunction createDatePicker(props, { emit, slots }) {\n provideSlots(slots, { footer: \"dp-footer\" });\n const baseCtx = createBase(props);\n const { locale, masks: masks2, disabledAttribute } = baseCtx;\n const showCalendar = ref(false);\n const datePickerPopoverId = ref(Symbol());\n const dateValue = ref(null);\n const dragValue = ref(null);\n const inputValues = ref([\"\", \"\"]);\n const popoverRef = ref(null);\n const calendarRef = ref(null);\n let updateTimeout = void 0;\n let dragTrackingValue;\n let watchValue = true;\n const isRange = computed(() => {\n return props.isRange || props.modelModifiers.range === true;\n });\n const valueStart = computed(\n () => isRange.value && dateValue.value != null ? dateValue.value.start : null\n );\n const valueEnd = computed(\n () => isRange.value && dateValue.value != null ? dateValue.value.end : null\n );\n const isDateMode = computed(() => props.mode.toLowerCase() === \"date\");\n const isDateTimeMode = computed(\n () => props.mode.toLowerCase() === \"datetime\"\n );\n const isTimeMode = computed(() => props.mode.toLowerCase() === \"time\");\n const isDragging = computed(() => !!dragValue.value);\n const modelConfig = computed(() => {\n let type = \"date\";\n if (props.modelModifiers.number)\n type = \"number\";\n if (props.modelModifiers.string)\n type = \"string\";\n const mask = masks2.value.modelValue || \"iso\";\n return normalizeConfig2({ type, mask });\n });\n const dateParts = computed(\n () => getDateParts2(dragValue.value ?? dateValue.value)\n );\n const inputMask = computed(() => {\n if (isTimeMode.value) {\n return props.is24hr ? masks2.value.inputTime24hr : masks2.value.inputTime;\n }\n if (isDateTimeMode.value) {\n return props.is24hr ? masks2.value.inputDateTime24hr : masks2.value.inputDateTime;\n }\n return masks2.value.input;\n });\n const inputMaskHasTime = computed(() => /[Hh]/g.test(inputMask.value));\n const inputMaskHasDate = computed(\n () => /[dD]{1,2}|Do|W{1,4}|M{1,4}|YY(?:YY)?/g.test(inputMask.value)\n );\n const inputMaskPatch = computed(() => {\n if (inputMaskHasTime.value && inputMaskHasDate.value) {\n return \"dateTime\";\n }\n if (inputMaskHasDate.value)\n return \"date\";\n if (inputMaskHasTime.value)\n return \"time\";\n return void 0;\n });\n const popover = computed(() => {\n var _a;\n const target = ((_a = popoverRef.value) == null ? void 0 : _a.$el.previousElementSibling) ?? void 0;\n return defaultsDeep_1({}, props.popover, getDefault(\"datePicker.popover\"), {\n target\n });\n });\n const popoverEvents = computed(\n () => getPopoverEventHandlers({\n ...popover.value,\n id: datePickerPopoverId.value\n })\n );\n const inputValue = computed(() => {\n return isRange.value ? {\n start: inputValues.value[0],\n end: inputValues.value[1]\n } : inputValues.value[0];\n });\n const inputEvents = computed(() => {\n const events = [\"start\", \"end\"].map((target) => ({\n input: onInputInput(target),\n change: onInputChange(target),\n keyup: onInputKeyup,\n ...props.popover && popoverEvents.value\n }));\n return isRange.value ? {\n start: events[0],\n end: events[1]\n } : events[0];\n });\n const selectAttribute = computed(() => {\n if (!hasValue(dateValue.value))\n return null;\n const attribute = {\n key: \"select-drag\",\n ...props.selectAttribute,\n dates: dateValue.value,\n pinPage: true\n };\n const { dot, bar, highlight, content } = attribute;\n if (!dot && !bar && !highlight && !content) {\n attribute.highlight = true;\n }\n return attribute;\n });\n const dragAttribute = computed(() => {\n if (!isRange.value || !hasValue(dragValue.value)) {\n return null;\n }\n const attribute = {\n key: \"select-drag\",\n ...props.dragAttribute,\n dates: dragValue.value\n };\n const { dot, bar, highlight, content } = attribute;\n if (!dot && !bar && !highlight && !content) {\n attribute.highlight = {\n startEnd: {\n fillMode: \"outline\"\n }\n };\n }\n return attribute;\n });\n const attributes = computed(() => {\n const attrs = isArray(props.attributes) ? [...props.attributes] : [];\n if (dragAttribute.value) {\n attrs.unshift(dragAttribute.value);\n } else if (selectAttribute.value) {\n attrs.unshift(selectAttribute.value);\n }\n return attrs;\n });\n const rules = computed(() => {\n return normalizeConfig2(\n props.rules === \"auto\" ? getAutoRules() : props.rules ?? {}\n );\n });\n function getAutoRules() {\n const _rules = {\n ms: [0, 999],\n sec: [0, 59],\n min: [0, 59],\n hr: [0, 23]\n };\n const accuracy = isDateMode.value ? 0 : props.timeAccuracy;\n return [0, 1].map((i) => {\n switch (accuracy) {\n case 0:\n return {\n hours: _rules.hr[i],\n minutes: _rules.min[i],\n seconds: _rules.sec[i],\n milliseconds: _rules.ms[i]\n };\n case 1:\n return {\n minutes: _rules.min[i],\n seconds: _rules.sec[i],\n milliseconds: _rules.ms[i]\n };\n case 3:\n return { milliseconds: _rules.ms[i] };\n case 4:\n return {};\n default:\n return { seconds: _rules.sec[i], milliseconds: _rules.ms[i] };\n }\n });\n }\n function normalizeConfig2(config2) {\n if (isArray(config2)) {\n if (config2.length === 1)\n return [config2[0], config2[0]];\n return config2;\n }\n return [config2, config2];\n }\n function normalizeDateConfig(config2) {\n return normalizeConfig2(config2).map(\n (c, i) => ({\n ...c,\n rules: rules.value[i]\n })\n );\n }\n function hasDateValue(value) {\n if (value == null)\n return false;\n if (isNumber_1(value))\n return !isNaN(value);\n if (isDate(value))\n return !isNaN(value.getTime());\n if (isString_1(value))\n return value !== \"\";\n return isDateParts(value);\n }\n function hasRangeValue(value) {\n return isObject(value) && \"start\" in value && \"end\" in value && hasDateValue(value.start ?? null) && hasDateValue(value.end ?? null);\n }\n function hasValue(value) {\n return hasRangeValue(value) || hasDateValue(value);\n }\n function valuesAreEqual(a, b) {\n if (a == null && b == null)\n return true;\n if (a == null || b == null)\n return false;\n const aIsDate = isDate(a);\n const bIsDate = isDate(b);\n if (aIsDate && bIsDate)\n return a.getTime() === b.getTime();\n if (aIsDate || bIsDate)\n return false;\n return valuesAreEqual(a.start, b.start) && valuesAreEqual(a.end, b.end);\n }\n function valueIsDisabled(value) {\n if (!hasValue(value) || !disabledAttribute.value)\n return false;\n return disabledAttribute.value.intersectsRange(locale.value.range(value));\n }\n function normalizeValue(value, config2, patch, targetPriority) {\n if (!hasValue(value))\n return null;\n if (hasRangeValue(value)) {\n const start = locale.value.toDate(value.start, {\n ...config2[0],\n fillDate: valueStart.value ?? void 0,\n patch\n });\n const end = locale.value.toDate(value.end, {\n ...config2[1],\n fillDate: valueEnd.value ?? void 0,\n patch\n });\n return sortRange({ start, end }, targetPriority);\n }\n return locale.value.toDateOrNull(value, {\n ...config2[0],\n fillDate: dateValue.value,\n patch\n });\n }\n function denormalizeValue(value, config2) {\n if (hasRangeValue(value)) {\n return {\n start: locale.value.fromDate(value.start, config2[0]),\n end: locale.value.fromDate(value.end, config2[1])\n };\n }\n if (isRange.value) {\n return null;\n }\n return locale.value.fromDate(value, config2[0]);\n }\n function updateValue(value, opts = {}) {\n clearTimeout(updateTimeout);\n return new Promise((resolve) => {\n const { debounce = 0, ...args } = opts;\n if (debounce > 0) {\n updateTimeout = window.setTimeout(() => {\n resolve(forceUpdateValue(value, args));\n }, debounce);\n } else {\n resolve(forceUpdateValue(value, args));\n }\n });\n }\n function forceUpdateValue(value, {\n config: config2 = modelConfig.value,\n patch = \"dateTime\",\n clearIfEqual = false,\n formatInput: fInput = true,\n hidePopover: hPopover = false,\n dragging = isDragging.value,\n targetPriority,\n moveToValue: mValue = false\n } = {}) {\n const normalizedConfig = normalizeDateConfig(config2);\n let normalizedValue = normalizeValue(\n value,\n normalizedConfig,\n patch,\n targetPriority\n );\n const isDisabled = valueIsDisabled(normalizedValue);\n if (isDisabled) {\n if (dragging)\n return null;\n normalizedValue = dateValue.value;\n hPopover = false;\n } else if (normalizedValue == null && props.isRequired) {\n normalizedValue = dateValue.value;\n } else if (\n // Clear value if same value was passed\n normalizedValue != null && valuesAreEqual(dateValue.value, normalizedValue) && clearIfEqual\n ) {\n normalizedValue = null;\n }\n const valueRef = dragging ? dragValue : dateValue;\n const notify = !valuesAreEqual(valueRef.value, normalizedValue);\n valueRef.value = normalizedValue;\n if (!dragging)\n dragValue.value = null;\n const denormalizedValue = denormalizeValue(\n normalizedValue,\n modelConfig.value\n );\n if (notify) {\n watchValue = false;\n emit(dragging ? \"drag\" : \"update:modelValue\", denormalizedValue);\n nextTick(() => watchValue = true);\n }\n if (hPopover && !dragging)\n hidePopover$1();\n if (fInput)\n formatInput();\n if (mValue) {\n nextTick(() => moveToValue(targetPriority ?? \"start\"));\n }\n return denormalizedValue;\n }\n function formatInput() {\n nextTick(() => {\n const config2 = normalizeDateConfig({\n type: \"string\",\n mask: inputMask.value\n });\n const value = denormalizeValue(\n dragValue.value ?? dateValue.value,\n config2\n );\n if (isRange.value) {\n inputValues.value = [value && value.start, value && value.end];\n } else {\n inputValues.value = [value, \"\"];\n }\n });\n }\n function onInputUpdate(inputValue2, target, opts) {\n inputValues.value.splice(target === \"start\" ? 0 : 1, 1, inputValue2);\n const value = isRange.value ? {\n start: inputValues.value[0],\n end: inputValues.value[1] || inputValues.value[0]\n } : inputValue2;\n const config2 = {\n type: \"string\",\n mask: inputMask.value\n };\n updateValue(value, {\n ...opts,\n config: config2,\n patch: inputMaskPatch.value,\n targetPriority: target,\n moveToValue: true\n });\n }\n function onInputInput(target) {\n return (e) => {\n if (!props.updateOnInput)\n return;\n onInputUpdate(e.currentTarget.value, target, {\n formatInput: false,\n hidePopover: false,\n debounce: props.inputDebounce\n });\n };\n }\n function onInputChange(target) {\n return (e) => {\n onInputUpdate(e.currentTarget.value, target, {\n formatInput: true,\n hidePopover: false\n });\n };\n }\n function onInputKeyup(e) {\n if (e.key !== \"Escape\")\n return;\n updateValue(dateValue.value, {\n formatInput: true,\n hidePopover: true\n });\n }\n function getDateParts2(value) {\n if (isRange.value) {\n return [\n value && value.start ? locale.value.getDateParts(value.start) : null,\n value && value.end ? locale.value.getDateParts(value.end) : null\n ];\n }\n return [value ? locale.value.getDateParts(value) : null];\n }\n function cancelDrag() {\n dragValue.value = null;\n formatInput();\n }\n function onPopoverBeforeShow(el) {\n emit(\"popover-will-show\", el);\n }\n function onPopoverAfterShow(el) {\n emit(\"popover-did-show\", el);\n }\n function onPopoverBeforeHide(el) {\n cancelDrag();\n emit(\"popover-will-hide\", el);\n }\n function onPopoverAfterHide(el) {\n emit(\"popover-did-hide\", el);\n }\n function handleDayClick(day) {\n const opts = {\n patch: \"date\",\n formatInput: true,\n hidePopover: true\n };\n if (isRange.value) {\n const dragging = !isDragging.value;\n if (dragging) {\n dragTrackingValue = { start: day.startDate, end: day.endDate };\n } else if (dragTrackingValue != null) {\n dragTrackingValue.end = day.date;\n }\n updateValue(dragTrackingValue, {\n ...opts,\n dragging\n });\n } else {\n updateValue(day.date, {\n ...opts,\n clearIfEqual: !props.isRequired\n });\n }\n }\n function onDayClick(day, event) {\n handleDayClick(day);\n emit(\"dayclick\", day, event);\n }\n function onDayKeydown(day, event) {\n switch (event.key) {\n case \" \":\n case \"Enter\": {\n handleDayClick(day);\n event.preventDefault();\n break;\n }\n case \"Escape\": {\n hidePopover$1();\n }\n }\n emit(\"daykeydown\", day, event);\n }\n function onDayMouseEnter(day, event) {\n if (!isDragging.value || dragTrackingValue == null)\n return;\n dragTrackingValue.end = day.date;\n updateValue(sortRange(dragTrackingValue), {\n patch: \"date\",\n formatInput: true\n });\n }\n function showPopover$1(opts = {}) {\n showPopover({\n ...popover.value,\n ...opts,\n isInteractive: true,\n id: datePickerPopoverId.value\n });\n }\n function hidePopover$1(opts = {}) {\n hidePopover({\n hideDelay: 10,\n force: true,\n ...popover.value,\n ...opts,\n id: datePickerPopoverId.value\n });\n }\n function togglePopover$1(opts) {\n togglePopover({\n ...popover.value,\n ...opts,\n isInteractive: true,\n id: datePickerPopoverId.value\n });\n }\n function sortRange(range, priority) {\n const { start, end } = range;\n if (start > end) {\n switch (priority) {\n case \"start\":\n return { start, end: start };\n case \"end\":\n return { start: end, end };\n default:\n return { start: end, end: start };\n }\n }\n return { start, end };\n }\n async function move(target, opts = {}) {\n if (calendarRef.value == null)\n return false;\n return calendarRef.value.move(target, opts);\n }\n async function moveBy(pages, opts = {}) {\n if (calendarRef.value == null)\n return false;\n return calendarRef.value.moveBy(pages, opts);\n }\n async function moveToValue(target, opts = {}) {\n const dValue = dateValue.value;\n if (calendarRef.value == null || !hasValue(dValue))\n return false;\n const start = target !== \"end\";\n const position = start ? 1 : -1;\n const date = hasRangeValue(dValue) ? start ? dValue.start : dValue.end : dValue;\n const page = getPageAddressForDate(date, \"monthly\", locale.value);\n return calendarRef.value.move(page, { position, ...opts });\n }\n watch(\n () => props.isRange,\n (val) => {\n if (val) {\n console.warn(\n \"The `is-range` prop will be deprecated in future releases. Please use the `range` modifier.\"\n );\n }\n },\n { immediate: true }\n );\n watch(\n () => isRange.value,\n () => {\n forceUpdateValue(null, { formatInput: true });\n }\n );\n watch(\n () => inputMask.value,\n () => formatInput()\n );\n watch(\n () => props.modelValue,\n (val) => {\n if (!watchValue)\n return;\n forceUpdateValue(val, {\n formatInput: true,\n hidePopover: false\n });\n }\n );\n watch(\n () => rules.value,\n () => {\n if (isObject(props.rules)) {\n forceUpdateValue(props.modelValue, {\n formatInput: true,\n hidePopover: false\n });\n }\n }\n );\n watch(\n () => props.timezone,\n () => {\n forceUpdateValue(dateValue.value, { formatInput: true });\n }\n );\n const config = normalizeConfig2(modelConfig.value);\n dateValue.value = normalizeValue(\n props.modelValue ?? null,\n config,\n \"dateTime\"\n );\n onMounted(() => {\n forceUpdateValue(props.modelValue, {\n formatInput: true,\n hidePopover: false\n });\n });\n nextTick(() => showCalendar.value = true);\n const context = {\n ...baseCtx,\n showCalendar,\n datePickerPopoverId,\n popoverRef,\n popoverEvents,\n calendarRef,\n isRange,\n isTimeMode,\n isDateTimeMode,\n is24hr: toRef(props, \"is24hr\"),\n hideTimeHeader: toRef(props, \"hideTimeHeader\"),\n timeAccuracy: toRef(props, \"timeAccuracy\"),\n isDragging,\n inputValue,\n inputEvents,\n dateParts,\n attributes,\n rules,\n move,\n moveBy,\n moveToValue,\n updateValue,\n showPopover: showPopover$1,\n hidePopover: hidePopover$1,\n togglePopover: togglePopover$1,\n onDayClick,\n onDayKeydown,\n onDayMouseEnter,\n onPopoverBeforeShow,\n onPopoverAfterShow,\n onPopoverBeforeHide,\n onPopoverAfterHide\n };\n provide(contextKey, context);\n return context;\n}\nfunction useDatePicker() {\n const context = inject(contextKey);\n if (context)\n return context;\n throw new Error(\n \"DatePicker context missing. Please verify this component is nested within a valid context provider.\"\n );\n}\nconst _amOptions = [\n { value: 0, label: \"12\" },\n { value: 1, label: \"1\" },\n { value: 2, label: \"2\" },\n { value: 3, label: \"3\" },\n { value: 4, label: \"4\" },\n { value: 5, label: \"5\" },\n { value: 6, label: \"6\" },\n { value: 7, label: \"7\" },\n { value: 8, label: \"8\" },\n { value: 9, label: \"9\" },\n { value: 10, label: \"10\" },\n { value: 11, label: \"11\" }\n];\nconst _pmOptions = [\n { value: 12, label: \"12\" },\n { value: 13, label: \"1\" },\n { value: 14, label: \"2\" },\n { value: 15, label: \"3\" },\n { value: 16, label: \"4\" },\n { value: 17, label: \"5\" },\n { value: 18, label: \"6\" },\n { value: 19, label: \"7\" },\n { value: 20, label: \"8\" },\n { value: 21, label: \"9\" },\n { value: 22, label: \"10\" },\n { value: 23, label: \"11\" }\n];\nfunction createTimePicker(props) {\n const ctx = useDatePicker();\n const {\n locale,\n isRange,\n isTimeMode,\n dateParts,\n rules,\n is24hr,\n hideTimeHeader,\n timeAccuracy,\n updateValue: updateDpValue\n } = ctx;\n function updateParts(newParts) {\n newParts = Object.assign(parts.value, newParts);\n let newValue = null;\n if (isRange.value) {\n const start = isStart.value ? newParts : dateParts.value[0];\n const end = isStart.value ? dateParts.value[1] : newParts;\n newValue = { start, end };\n } else {\n newValue = newParts;\n }\n updateDpValue(newValue, {\n patch: \"time\",\n targetPriority: isStart.value ? \"start\" : \"end\",\n moveToValue: true\n });\n }\n const isStart = computed(() => props.position === 0);\n const parts = computed(\n () => dateParts.value[props.position] || { isValid: false }\n );\n const partsValid = computed(() => isDateParts(parts.value));\n const isValid = computed(() => !!parts.value.isValid);\n const showHeader = computed(() => {\n return !hideTimeHeader.value && isValid.value;\n });\n const date = computed(() => {\n if (!partsValid.value)\n return null;\n let date2 = locale.value.toDate(parts.value);\n if (parts.value.hours === 24) {\n date2 = new Date(date2.getTime() - 1);\n }\n return date2;\n });\n const hours2 = computed({\n get() {\n return parts.value.hours;\n },\n set(val) {\n updateParts({ hours: val });\n }\n });\n const minutes = computed({\n get() {\n return parts.value.minutes;\n },\n set(val) {\n updateParts({ minutes: val });\n }\n });\n const seconds = computed({\n get() {\n return parts.value.seconds;\n },\n set(val) {\n updateParts({ seconds: val });\n }\n });\n const milliseconds = computed({\n get() {\n return parts.value.milliseconds;\n },\n set(val) {\n updateParts({ milliseconds: val });\n }\n });\n const isAM = computed({\n get() {\n return parts.value.hours < 12;\n },\n set(value) {\n value = String(value).toLowerCase() == \"true\";\n let hValue = hours2.value;\n if (value && hValue >= 12) {\n hValue -= 12;\n } else if (!value && hValue < 12) {\n hValue += 12;\n }\n updateParts({ hours: hValue });\n }\n });\n const options = computed(\n () => getDatePartsOptions(parts.value, rules.value[props.position])\n );\n const amHourOptions = computed(() => {\n return _amOptions.filter(\n (opt) => options.value.hours.some((ho) => ho.value === opt.value)\n );\n });\n const pmHourOptions = computed(() => {\n return _pmOptions.filter(\n (opt) => options.value.hours.some((ho) => ho.value === opt.value)\n );\n });\n const hourOptions = computed(() => {\n if (is24hr.value)\n return options.value.hours;\n if (isAM.value)\n return amHourOptions.value;\n return pmHourOptions.value;\n });\n const isAMOptions = computed(() => {\n const result = [];\n if (arrayHasItems(amHourOptions.value))\n result.push({ value: true, label: \"AM\" });\n if (arrayHasItems(pmHourOptions.value))\n result.push({ value: false, label: \"PM\" });\n return result;\n });\n return {\n ...ctx,\n showHeader,\n timeAccuracy,\n parts,\n isValid,\n date,\n hours: hours2,\n minutes,\n seconds,\n milliseconds,\n options,\n hourOptions,\n isAM,\n isAMOptions,\n is24hr\n };\n}\nconst _hoisted_1$1 = [\"value\"];\nconst _hoisted_2$1 = [\"value\", \"disabled\"];\nconst _hoisted_3$1 = {\n key: 1,\n class: \"vc-base-sizer\",\n \"aria-hidden\": \"true\"\n};\nconst __default__$1 = {\n inheritAttrs: false\n};\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n ...__default__$1,\n __name: \"BaseSelect\",\n props: {\n options: null,\n modelValue: null,\n alignRight: { type: Boolean },\n alignLeft: { type: Boolean },\n showIcon: { type: Boolean },\n fitContent: { type: Boolean }\n },\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = __props;\n const selectedLabel = computed(() => {\n const option = props.options.find((opt) => opt.value === props.modelValue);\n return option == null ? void 0 : option.label;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vc-base-select\", {\n \"vc-fit-content\": __props.fitContent,\n \"vc-has-icon\": __props.showIcon\n }])\n }, [\n createElementVNode(\"select\", mergeProps(_ctx.$attrs, {\n value: __props.modelValue,\n class: [\"vc-focus\", {\n \"vc-align-right\": __props.alignRight,\n \"vc-align-left\": __props.alignLeft\n }],\n onChange: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"update:modelValue\", $event.target.value))\n }), [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {\n return openBlock(), createElementBlock(\"option\", {\n key: option.value,\n value: option.value,\n disabled: option.disabled\n }, toDisplayString(option.label), 9, _hoisted_2$1);\n }), 128))\n ], 16, _hoisted_1$1),\n __props.showIcon ? (openBlock(), createBlock(_sfc_main$c, {\n key: 0,\n name: \"ChevronDown\",\n size: \"18\"\n })) : createCommentVNode(\"\", true),\n __props.fitContent ? (openBlock(), createElementBlock(\"div\", _hoisted_3$1, toDisplayString(unref(selectedLabel)), 1)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst BaseSelect_vue_vue_type_style_index_0_lang = \"\";\nconst _hoisted_1 = {\n key: 0,\n class: \"vc-time-header\"\n};\nconst _hoisted_2 = { class: \"vc-time-weekday\" };\nconst _hoisted_3 = { class: \"vc-time-month\" };\nconst _hoisted_4 = { class: \"vc-time-day\" };\nconst _hoisted_5 = { class: \"vc-time-year\" };\nconst _hoisted_6 = { class: \"vc-time-select-group\" };\nconst _hoisted_7 = /* @__PURE__ */ createElementVNode(\"span\", { class: \"vc-time-colon\" }, \":\", -1);\nconst _hoisted_8 = /* @__PURE__ */ createElementVNode(\"span\", { class: \"vc-time-colon\" }, \":\", -1);\nconst _hoisted_9 = /* @__PURE__ */ createElementVNode(\"span\", { class: \"vc-time-decimal\" }, \".\", -1);\nconst _sfc_main$3 = /* @__PURE__ */ defineComponent({\n __name: \"TimePicker\",\n props: {\n position: null\n },\n setup(__props, { expose }) {\n const props = __props;\n const timePicker = createTimePicker(props);\n expose(timePicker);\n const {\n locale,\n isValid,\n date,\n hours: hours2,\n minutes,\n seconds,\n milliseconds,\n options,\n hourOptions,\n isTimeMode,\n isAM,\n isAMOptions,\n is24hr,\n showHeader,\n timeAccuracy\n } = timePicker;\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vc-time-picker\", [{ \"vc-invalid\": !unref(isValid), \"vc-attached\": !unref(isTimeMode) }]])\n }, [\n createVNode(_sfc_main$i, { name: \"time-header\" }, {\n default: withCtx(() => [\n unref(showHeader) && unref(date) ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"span\", _hoisted_2, toDisplayString(unref(locale).formatDate(unref(date), \"WWW\")), 1),\n createElementVNode(\"span\", _hoisted_3, toDisplayString(unref(locale).formatDate(unref(date), \"MMM\")), 1),\n createElementVNode(\"span\", _hoisted_4, toDisplayString(unref(locale).formatDate(unref(date), \"D\")), 1),\n createElementVNode(\"span\", _hoisted_5, toDisplayString(unref(locale).formatDate(unref(date), \"YYYY\")), 1)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n createElementVNode(\"div\", _hoisted_6, [\n createVNode(_sfc_main$c, {\n name: \"Clock\",\n size: \"17\"\n }),\n createVNode(_sfc_main$4, {\n modelValue: unref(hours2),\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => isRef(hours2) ? hours2.value = $event : null),\n modelModifiers: { number: true },\n options: unref(hourOptions),\n class: \"vc-time-select-hours\",\n \"align-right\": \"\"\n }, null, 8, [\"modelValue\", \"options\"]),\n unref(timeAccuracy) > 1 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n _hoisted_7,\n createVNode(_sfc_main$4, {\n modelValue: unref(minutes),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => isRef(minutes) ? minutes.value = $event : null),\n modelModifiers: { number: true },\n options: unref(options).minutes,\n class: \"vc-time-select-minutes\",\n \"align-left\": unref(timeAccuracy) === 2\n }, null, 8, [\"modelValue\", \"options\", \"align-left\"])\n ], 64)) : createCommentVNode(\"\", true),\n unref(timeAccuracy) > 2 ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n _hoisted_8,\n createVNode(_sfc_main$4, {\n modelValue: unref(seconds),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => isRef(seconds) ? seconds.value = $event : null),\n modelModifiers: { number: true },\n options: unref(options).seconds,\n class: \"vc-time-select-seconds\",\n \"align-left\": unref(timeAccuracy) === 3\n }, null, 8, [\"modelValue\", \"options\", \"align-left\"])\n ], 64)) : createCommentVNode(\"\", true),\n unref(timeAccuracy) > 3 ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [\n _hoisted_9,\n createVNode(_sfc_main$4, {\n modelValue: unref(milliseconds),\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event) => isRef(milliseconds) ? milliseconds.value = $event : null),\n modelModifiers: { number: true },\n options: unref(options).milliseconds,\n class: \"vc-time-select-milliseconds\",\n \"align-left\": \"\"\n }, null, 8, [\"modelValue\", \"options\"])\n ], 64)) : createCommentVNode(\"\", true),\n !unref(is24hr) ? (openBlock(), createBlock(_sfc_main$4, {\n key: 3,\n modelValue: unref(isAM),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event) => isRef(isAM) ? isAM.value = $event : null),\n options: unref(isAMOptions)\n }, null, 8, [\"modelValue\", \"options\"])) : createCommentVNode(\"\", true)\n ])\n ], 2);\n };\n }\n});\nconst TimePicker_vue_vue_type_style_index_0_lang = \"\";\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n __name: \"DatePickerBase\",\n setup(__props) {\n const {\n attributes,\n calendarRef,\n color,\n displayMode,\n isDateTimeMode,\n isTimeMode,\n isRange,\n onDayClick,\n onDayMouseEnter,\n onDayKeydown\n } = useDatePicker();\n const positions = isRange.value ? [0, 1] : [0];\n return (_ctx, _cache) => {\n return unref(isTimeMode) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(`vc-container vc-bordered vc-${unref(color)} vc-${unref(displayMode)}`)\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(positions), (position) => {\n return openBlock(), createBlock(_sfc_main$3, {\n key: position,\n position\n }, null, 8, [\"position\"]);\n }), 128))\n ], 2)) : (openBlock(), createBlock(Calendar, {\n key: 1,\n attributes: unref(attributes),\n ref_key: \"calendarRef\",\n ref: calendarRef,\n onDayclick: unref(onDayClick),\n onDaymouseenter: unref(onDayMouseEnter),\n onDaykeydown: unref(onDayKeydown)\n }, {\n footer: withCtx(() => [\n unref(isDateTimeMode) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(positions), (position) => {\n return openBlock(), createBlock(_sfc_main$3, {\n key: position,\n position\n }, null, 8, [\"position\"]);\n }), 128)) : createCommentVNode(\"\", true),\n createVNode(_sfc_main$i, { name: \"dp-footer\" })\n ]),\n _: 1\n }, 8, [\"attributes\", \"onDayclick\", \"onDaymouseenter\", \"onDaykeydown\"]));\n };\n }\n});\nconst __default__ = {\n inheritAttrs: false\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n ...__default__,\n __name: \"DatePickerPopover\",\n setup(__props) {\n const {\n datePickerPopoverId,\n color,\n displayMode,\n popoverRef,\n onPopoverBeforeShow,\n onPopoverAfterShow,\n onPopoverBeforeHide,\n onPopoverAfterHide\n } = useDatePicker();\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Popover, {\n id: unref(datePickerPopoverId),\n placement: \"bottom-start\",\n class: normalizeClass(`vc-date-picker-content vc-${unref(color)} vc-${unref(displayMode)}`),\n ref_key: \"popoverRef\",\n ref: popoverRef,\n onBeforeShow: unref(onPopoverBeforeShow),\n onAfterShow: unref(onPopoverAfterShow),\n onBeforeHide: unref(onPopoverBeforeHide),\n onAfterHide: unref(onPopoverAfterHide)\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$2, normalizeProps(guardReactiveProps(_ctx.$attrs)), null, 16)\n ]),\n _: 1\n }, 8, [\"id\", \"class\", \"onBeforeShow\", \"onAfterShow\", \"onBeforeHide\", \"onAfterHide\"]);\n };\n }\n});\nconst _sfc_main = defineComponent({\n inheritAttrs: false,\n emits,\n props: propsDef,\n components: { DatePickerBase: _sfc_main$2, DatePickerPopover: _sfc_main$1 },\n setup(props, ctx) {\n const datePicker = createDatePicker(props, ctx);\n const slotCtx = reactive(omit(datePicker, \"calendarRef\", \"popoverRef\"));\n return { ...datePicker, slotCtx };\n }\n});\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DatePickerPopover = resolveComponent(\"DatePickerPopover\");\n const _component_DatePickerBase = resolveComponent(\"DatePickerBase\");\n return _ctx.$slots.default ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(_ctx.slotCtx))),\n createVNode(_component_DatePickerPopover, normalizeProps(guardReactiveProps(_ctx.$attrs)), null, 16)\n ], 64)) : (openBlock(), createBlock(_component_DatePickerBase, normalizeProps(mergeProps({ key: 1 }, _ctx.$attrs)), null, 16));\n}\nconst DatePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nconst components = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Calendar,\n DatePicker,\n Popover,\n PopoverRow: _sfc_main$j\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst index$1 = \"\";\nconst install = (app, defaults2 = {}) => {\n app.use(setupDefaults, defaults2);\n const prefix = app.config.globalProperties.$VCalendar.componentPrefix;\n for (const componentKey in components) {\n const component = components[componentKey];\n app.component(`${prefix}${componentKey}`, component);\n }\n};\nconst index = { install };\nexport {\n Calendar,\n DatePicker,\n Popover,\n _sfc_main$j as PopoverRow,\n createCalendar,\n createDatePicker,\n index as default,\n popoverDirective,\n setupDefaults as setupCalendar,\n useCalendar,\n useDatePicker\n};\n//# sourceMappingURL=index.js.map\n","\r\n\r\n","\r\n\r\n","\r\n\r\n","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n","\r\n\r\n","\r\n\r\n","import {sportmomentApi} from \"~/utils/axios.util\";\r\n\r\ndeclare const tokenUnit: string;\r\n\r\nexport interface ZoekAlert {\r\n ZoekalertId?: number;\r\n Profiel: string;\r\n Platform: number;\r\n Query: string;\r\n}\r\n\r\nclass ZoekalertRepository {\r\n \r\n async get(platformId: number){\r\n const response = await sportmomentApi.get(\"/api/Zoekalert\", {\r\n headers: { Authorization: \"Bearer \" + tokenUnit },\r\n params: {\r\n Platform: platformId\r\n }\r\n });\r\n return response.data;\r\n }\r\n \r\n async create(profileId: string, platformId: number, query: string){\r\n const response = await sportmomentApi.post(\"api/Zoekalert\", {\r\n Profiel: profileId,\r\n Platform: platformId,\r\n Query: query\r\n }, {\r\n headers: { Authorization: \"Bearer \" + tokenUnit }\r\n });\r\n return response.data;\r\n }\r\n \r\n async delete(id: number){\r\n const response = await sportmomentApi.delete(\"api/Zoekalert\", {\r\n headers: { Authorization: \"Bearer \" + tokenUnit },\r\n params: {\r\n id: id\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default new ZoekalertRepository();\r\n","\r\n\r\n\r\n","import { clubfinderApi } from \"~/utils/axios.util\";\r\nimport { Kenmerk } from \"./kenmerk.repository\";\r\nimport { ActiviteittypeEnum } from \"./activiteittype.repository\";\r\nimport { ISport } from \"./sport.repository\";\r\nimport { IRegioPostcodebereik } from \"./regiopostcodebereik.repository\";\r\nimport { IPostcodeRange } from \"./postcode.repository\";\r\nimport { ICultuuractiviteit } from \"./cultuuractiviteit.repository\";\r\nimport { ISportaanbieder } from \"./sportaanbieder.repository\";\r\nimport { BekostigingstypeFlag } from \"@/models/bekostigingstype.model\";\r\n\r\nexport interface IActivatieModel {\r\n Id: number;\r\n Naam: string;\r\n UmbracoNodeId: number;\r\n Url: string;\r\n SpecifiekAanbod: boolean;\r\n AanbodVan: Date;\r\n AanbodTot: Date;\r\n DateCreated: Date;\r\n DateUpdated: Date;\r\n Deleted: boolean;\r\n Platform: number;\r\n Bekostigingstype: BekostigingstypeFlag | null;\r\n Activiteittype: ActiviteittypeEnum | null;\r\n Doelgroepen: Kenmerk[];\r\n Plaatsen: IRegioPostcodebereik[];\r\n PostcodeRanges: IPostcodeRange[];\r\n Sporten: ISport[];\r\n Cultuuractiviteiten: ICultuuractiviteit[];\r\n Sportaanbieders: ISportaanbieder[];\r\n}\r\n\r\nclass ActivatieRepository {\r\n async getByUmbracoId(activatieId: number) {\r\n const response = await clubfinderApi.get('api/activatie/GetByUmbracoId', {\r\n params: {\r\n Id: activatieId\r\n }\r\n })\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new ActivatieRepository();","export const isEmpty = (value: any) =>\r\n value === undefined || value === null || value === '' || (Array.isArray(value) && value.length === 0);\r\n","\r\n\r\n\r\n","/*! VelocityJS.org (1.5.2). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\r\n\r\n/*************************\r\n Velocity jQuery Shim\r\n *************************/\r\n\r\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\r\n\r\n/* This file contains the jQuery functions that Velocity relies on, thereby removing Velocity's dependency on a full copy of jQuery, and allowing it to work in any environment. */\r\n/* These shimmed functions are only used if jQuery isn't present. If both this shim and jQuery are loaded, Velocity defaults to jQuery proper. */\r\n/* Browser support: Using this shim instead of jQuery proper removes support for IE8. */\r\n\r\n(function(window) {\r\n\t\"use strict\";\r\n\t/***************\r\n\t Setup\r\n\t ***************/\r\n\r\n\t/* If jQuery is already loaded, there's no point in loading this shim. */\r\n\tif (window.jQuery) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t/* jQuery base. */\r\n\tvar $ = function(selector, context) {\r\n\t\treturn new $.fn.init(selector, context);\r\n\t};\r\n\r\n\t/********************\r\n\t Private Methods\r\n\t ********************/\r\n\r\n\t/* jQuery */\r\n\t$.isWindow = function(obj) {\r\n\t\t/* jshint eqeqeq: false */\r\n\t\treturn obj && obj === obj.window;\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.type = function(obj) {\r\n\t\tif (!obj) {\r\n\t\t\treturn obj + \"\";\r\n\t\t}\r\n\r\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\r\n\t\t\t\tclass2type[toString.call(obj)] || \"object\" :\r\n\t\t\t\ttypeof obj;\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.isArray = Array.isArray || function(obj) {\r\n\t\treturn $.type(obj) === \"array\";\r\n\t};\r\n\r\n\t/* jQuery */\r\n\tfunction isArraylike(obj) {\r\n\t\tvar length = obj.length,\r\n\t\t\t\ttype = $.type(obj);\r\n\r\n\t\tif (type === \"function\" || $.isWindow(obj)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (obj.nodeType === 1 && length) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && (length - 1) in obj;\r\n\t}\r\n\r\n\t/***************\r\n\t $ Methods\r\n\t ***************/\r\n\r\n\t/* jQuery: Support removed for IE<9. */\r\n\t$.isPlainObject = function(obj) {\r\n\t\tvar key;\r\n\r\n\t\tif (!obj || $.type(obj) !== \"object\" || obj.nodeType || $.isWindow(obj)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tif (obj.constructor &&\r\n\t\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\r\n\t\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\")) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (key in obj) {\r\n\t\t}\r\n\r\n\t\treturn key === undefined || hasOwn.call(obj, key);\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.each = function(obj, callback, args) {\r\n\t\tvar value,\r\n\t\t\t\ti = 0,\r\n\t\t\t\tlength = obj.length,\r\n\t\t\t\tisArray = isArraylike(obj);\r\n\r\n\t\tif (args) {\r\n\t\t\tif (isArray) {\r\n\t\t\t\tfor (; i < length; i++) {\r\n\t\t\t\t\tvalue = callback.apply(obj[i], args);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i in obj) {\r\n\t\t\t\t\tif (!obj.hasOwnProperty(i)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue = callback.apply(obj[i], args);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tif (isArray) {\r\n\t\t\t\tfor (; i < length; i++) {\r\n\t\t\t\t\tvalue = callback.call(obj[i], i, obj[i]);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i in obj) {\r\n\t\t\t\t\tif (!obj.hasOwnProperty(i)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue = callback.call(obj[i], i, obj[i]);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t};\r\n\r\n\t/* Custom */\r\n\t$.data = function(node, key, value) {\r\n\t\t/* $.getData() */\r\n\t\tif (value === undefined) {\r\n\t\t\tvar getId = node[$.expando],\r\n\t\t\t\t\tstore = getId && cache[getId];\r\n\r\n\t\t\tif (key === undefined) {\r\n\t\t\t\treturn store;\r\n\t\t\t} else if (store) {\r\n\t\t\t\tif (key in store) {\r\n\t\t\t\t\treturn store[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t/* $.setData() */\r\n\t\t} else if (key !== undefined) {\r\n\t\t\tvar setId = node[$.expando] || (node[$.expando] = ++$.uuid);\r\n\r\n\t\t\tcache[setId] = cache[setId] || {};\r\n\t\t\tcache[setId][key] = value;\r\n\r\n\t\t\treturn value;\r\n\t\t}\r\n\t};\r\n\r\n\t/* Custom */\r\n\t$.removeData = function(node, keys) {\r\n\t\tvar id = node[$.expando],\r\n\t\t\t\tstore = id && cache[id];\r\n\r\n\t\tif (store) {\r\n\t\t\t// Cleanup the entire store if no keys are provided.\r\n\t\t\tif (!keys) {\r\n\t\t\t\tdelete cache[id];\r\n\t\t\t} else {\r\n\t\t\t\t$.each(keys, function(_, key) {\r\n\t\t\t\t\tdelete store[key];\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.extend = function() {\r\n\t\tvar src, copyIsArray, copy, name, options, clone,\r\n\t\t\t\ttarget = arguments[0] || {},\r\n\t\t\t\ti = 1,\r\n\t\t\t\tlength = arguments.length,\r\n\t\t\t\tdeep = false;\r\n\r\n\t\tif (typeof target === \"boolean\") {\r\n\t\t\tdeep = target;\r\n\r\n\t\t\ttarget = arguments[i] || {};\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\tif (typeof target !== \"object\" && $.type(target) !== \"function\") {\r\n\t\t\ttarget = {};\r\n\t\t}\r\n\r\n\t\tif (i === length) {\r\n\t\t\ttarget = this;\r\n\t\t\ti--;\r\n\t\t}\r\n\r\n\t\tfor (; i < length; i++) {\r\n\t\t\tif ((options = arguments[i])) {\r\n\t\t\t\tfor (name in options) {\r\n\t\t\t\t\tif (!options.hasOwnProperty(name)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsrc = target[name];\r\n\t\t\t\t\tcopy = options[name];\r\n\r\n\t\t\t\t\tif (target === copy) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {\r\n\t\t\t\t\t\tif (copyIsArray) {\r\n\t\t\t\t\t\t\tcopyIsArray = false;\r\n\t\t\t\t\t\t\tclone = src && $.isArray(src) ? src : [];\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tclone = src && $.isPlainObject(src) ? src : {};\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttarget[name] = $.extend(deep, clone, copy);\r\n\r\n\t\t\t\t\t} else if (copy !== undefined) {\r\n\t\t\t\t\t\ttarget[name] = copy;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\t/* jQuery 1.4.3 */\r\n\t$.queue = function(elem, type, data) {\r\n\t\tfunction $makeArray(arr, results) {\r\n\t\t\tvar ret = results || [];\r\n\r\n\t\t\tif (arr) {\r\n\t\t\t\tif (isArraylike(Object(arr))) {\r\n\t\t\t\t\t/* $.merge */\r\n\t\t\t\t\t(function(first, second) {\r\n\t\t\t\t\t\tvar len = +second.length,\r\n\t\t\t\t\t\t\t\tj = 0,\r\n\t\t\t\t\t\t\t\ti = first.length;\r\n\r\n\t\t\t\t\t\twhile (j < len) {\r\n\t\t\t\t\t\t\tfirst[i++] = second[j++];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (len !== len) {\r\n\t\t\t\t\t\t\twhile (second[j] !== undefined) {\r\n\t\t\t\t\t\t\t\tfirst[i++] = second[j++];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfirst.length = i;\r\n\r\n\t\t\t\t\t\treturn first;\r\n\t\t\t\t\t})(ret, typeof arr === \"string\" ? [arr] : arr);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t[].push.call(ret, arr);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn ret;\r\n\t\t}\r\n\r\n\t\tif (!elem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttype = (type || \"fx\") + \"queue\";\r\n\r\n\t\tvar q = $.data(elem, type);\r\n\r\n\t\tif (!data) {\r\n\t\t\treturn q || [];\r\n\t\t}\r\n\r\n\t\tif (!q || $.isArray(data)) {\r\n\t\t\tq = $.data(elem, type, $makeArray(data));\r\n\t\t} else {\r\n\t\t\tq.push(data);\r\n\t\t}\r\n\r\n\t\treturn q;\r\n\t};\r\n\r\n\t/* jQuery 1.4.3 */\r\n\t$.dequeue = function(elems, type) {\r\n\t\t/* Custom: Embed element iteration. */\r\n\t\t$.each(elems.nodeType ? [elems] : elems, function(i, elem) {\r\n\t\t\ttype = type || \"fx\";\r\n\r\n\t\t\tvar queue = $.queue(elem, type),\r\n\t\t\t\t\tfn = queue.shift();\r\n\r\n\t\t\tif (fn === \"inprogress\") {\r\n\t\t\t\tfn = queue.shift();\r\n\t\t\t}\r\n\r\n\t\t\tif (fn) {\r\n\t\t\t\tif (type === \"fx\") {\r\n\t\t\t\t\tqueue.unshift(\"inprogress\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfn.call(elem, function() {\r\n\t\t\t\t\t$.dequeue(elem, type);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t/******************\r\n\t $.fn Methods\r\n\t ******************/\r\n\r\n\t/* jQuery */\r\n\t$.fn = $.prototype = {\r\n\t\tinit: function(selector) {\r\n\t\t\t/* Just return the element wrapped inside an array; don't proceed with the actual jQuery node wrapping process. */\r\n\t\t\tif (selector.nodeType) {\r\n\t\t\t\tthis[0] = selector;\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error(\"Not a DOM node.\");\r\n\t\t\t}\r\n\t\t},\r\n\t\toffset: function() {\r\n\t\t\t/* jQuery altered code: Dropped disconnected DOM node checking. */\r\n\t\t\tvar box = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : {top: 0, left: 0};\r\n\r\n\t\t\treturn {\r\n\t\t\t\ttop: box.top + (window.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0),\r\n\t\t\t\tleft: box.left + (window.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0)\r\n\t\t\t};\r\n\t\t},\r\n\t\tposition: function() {\r\n\t\t\t/* jQuery */\r\n\t\t\tfunction offsetParentFn(elem) {\r\n\t\t\t\tvar offsetParent = elem.offsetParent;\r\n\r\n\t\t\t\twhile (offsetParent && (offsetParent.nodeName.toLowerCase() !== \"html\" && offsetParent.style && offsetParent.style.position.toLowerCase() === \"static\")) {\r\n\t\t\t\t\toffsetParent = offsetParent.offsetParent;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn offsetParent || document;\r\n\t\t\t}\r\n\r\n\t\t\t/* Zepto */\r\n\t\t\tvar elem = this[0],\r\n\t\t\t\t\toffsetParent = offsetParentFn(elem),\r\n\t\t\t\t\toffset = this.offset(),\r\n\t\t\t\t\tparentOffset = /^(?:body|html)$/i.test(offsetParent.nodeName) ? {top: 0, left: 0} : $(offsetParent).offset();\r\n\r\n\t\t\toffset.top -= parseFloat(elem.style.marginTop) || 0;\r\n\t\t\toffset.left -= parseFloat(elem.style.marginLeft) || 0;\r\n\r\n\t\t\tif (offsetParent.style) {\r\n\t\t\t\tparentOffset.top += parseFloat(offsetParent.style.borderTopWidth) || 0;\r\n\t\t\t\tparentOffset.left += parseFloat(offsetParent.style.borderLeftWidth) || 0;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\ttop: offset.top - parentOffset.top,\r\n\t\t\t\tleft: offset.left - parentOffset.left\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n\r\n\t/**********************\r\n\t Private Variables\r\n\t **********************/\r\n\r\n\t/* For $.data() */\r\n\tvar cache = {};\r\n\t$.expando = \"velocity\" + (new Date().getTime());\r\n\t$.uuid = 0;\r\n\r\n\t/* For $.queue() */\r\n\tvar class2type = {},\r\n\t\t\thasOwn = class2type.hasOwnProperty,\r\n\t\t\ttoString = class2type.toString;\r\n\r\n\tvar types = \"Boolean Number String Function Array Date RegExp Object Error\".split(\" \");\r\n\tfor (var i = 0; i < types.length; i++) {\r\n\t\tclass2type[\"[object \" + types[i] + \"]\"] = types[i].toLowerCase();\r\n\t}\r\n\r\n\t/* Makes $(node) possible, without having to call init. */\r\n\t$.fn.init.prototype = $.fn;\r\n\r\n\t/* Globalize Velocity onto the window, and assign its Utilities property. */\r\n\twindow.Velocity = {Utilities: $};\r\n})(window);\r\n\r\n/******************\r\n Velocity.js\r\n ******************/\r\n\r\n(function(factory) {\r\n\t\"use strict\";\r\n\t/* CommonJS module. */\r\n\tif (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n\t\tmodule.exports = factory();\r\n\t\t/* AMD module. */\r\n\t} else if (typeof define === \"function\" && define.amd) {\r\n\t\tdefine(factory);\r\n\t\t/* Browser globals. */\r\n\t} else {\r\n\t\tfactory();\r\n\t}\r\n}(function() {\r\n\t\"use strict\";\r\n\treturn function(global, window, document, undefined) {\r\n\r\n\t\t/***************\r\n\t\t Summary\r\n\t\t ***************/\r\n\r\n\t\t/*\r\n\t\t - CSS: CSS stack that works independently from the rest of Velocity.\r\n\t\t - animate(): Core animation method that iterates over the targeted elements and queues the incoming call onto each element individually.\r\n\t\t - Pre-Queueing: Prepare the element for animation by instantiating its data cache and processing the call's options.\r\n\t\t - Queueing: The logic that runs once the call has reached its point of execution in the element's $.queue() stack.\r\n\t\t Most logic is placed here to avoid risking it becoming stale (if the element's properties have changed).\r\n\t\t - Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container.\r\n\t\t - tick(): The single requestAnimationFrame loop responsible for tweening all in-progress calls.\r\n\t\t - completeCall(): Handles the cleanup process for each Velocity call.\r\n\t\t */\r\n\r\n\t\t/*********************\r\n\t\t Helper Functions\r\n\t\t *********************/\r\n\r\n\t\t/* IE detection. Gist: https://gist.github.com/julianshapiro/9098609 */\r\n\t\tvar IE = (function() {\r\n\t\t\tif (document.documentMode) {\r\n\t\t\t\treturn document.documentMode;\r\n\t\t\t} else {\r\n\t\t\t\tfor (var i = 7; i > 4; i--) {\r\n\t\t\t\t\tvar div = document.createElement(\"div\");\r\n\r\n\t\t\t\t\tdiv.innerHTML = \"\";\r\n\r\n\t\t\t\t\tif (div.getElementsByTagName(\"span\").length) {\r\n\t\t\t\t\t\tdiv = null;\r\n\r\n\t\t\t\t\t\treturn i;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn undefined;\r\n\t\t})();\r\n\r\n\t\t/* rAF shim. Gist: https://gist.github.com/julianshapiro/9497513 */\r\n\t\tvar rAFShim = (function() {\r\n\t\t\tvar timeLast = 0;\r\n\r\n\t\t\treturn window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) {\r\n\t\t\t\tvar timeCurrent = (new Date()).getTime(),\r\n\t\t\t\t\t\ttimeDelta;\r\n\r\n\t\t\t\t/* Dynamically set delay on a per-tick basis to match 60fps. */\r\n\t\t\t\t/* Technique by Erik Moller. MIT license: https://gist.github.com/paulirish/1579671 */\r\n\t\t\t\ttimeDelta = Math.max(0, 16 - (timeCurrent - timeLast));\r\n\t\t\t\ttimeLast = timeCurrent + timeDelta;\r\n\r\n\t\t\t\treturn setTimeout(function() {\r\n\t\t\t\t\tcallback(timeCurrent + timeDelta);\r\n\t\t\t\t}, timeDelta);\r\n\t\t\t};\r\n\t\t})();\r\n\r\n\t\tvar performance = (function() {\r\n\t\t\tvar perf = window.performance || {};\r\n\r\n\t\t\tif (typeof perf.now !== \"function\") {\r\n\t\t\t\tvar nowOffset = perf.timing && perf.timing.navigationStart ? perf.timing.navigationStart : (new Date()).getTime();\r\n\r\n\t\t\t\tperf.now = function() {\r\n\t\t\t\t\treturn (new Date()).getTime() - nowOffset;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn perf;\r\n\t\t})();\r\n\r\n\t\t/* Array compacting. Copyright Lo-Dash. MIT License: https://github.com/lodash/lodash/blob/master/LICENSE.txt */\r\n\t\tfunction compactSparseArray(array) {\r\n\t\t\tvar index = -1,\r\n\t\t\t\t\tlength = array ? array.length : 0,\r\n\t\t\t\t\tresult = [];\r\n\r\n\t\t\twhile (++index < length) {\r\n\t\t\t\tvar value = array[index];\r\n\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tresult.push(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Shim for \"fixing\" IE's lack of support (IE < 9) for applying slice\r\n\t\t * on host objects like NamedNodeMap, NodeList, and HTMLCollection\r\n\t\t * (technically, since host objects have been implementation-dependent,\r\n\t\t * at least before ES2015, IE hasn't needed to work this way).\r\n\t\t * Also works on strings, fixes IE < 9 to allow an explicit undefined\r\n\t\t * for the 2nd argument (as in Firefox), and prevents errors when\r\n\t\t * called on other DOM objects.\r\n\t\t */\r\n\t\tvar _slice = (function() {\r\n\t\t\tvar slice = Array.prototype.slice;\r\n\r\n\t\t\ttry {\r\n\t\t\t\t// Can't be used with DOM elements in IE < 9\r\n\t\t\t\tslice.call(document.documentElement);\r\n\t\t\t\treturn slice;\r\n\t\t\t} catch (e) { // Fails in IE < 9\r\n\r\n\t\t\t\t// This will work for genuine arrays, array-like objects, \r\n\t\t\t\t// NamedNodeMap (attributes, entities, notations),\r\n\t\t\t\t// NodeList (e.g., getElementsByTagName), HTMLCollection (e.g., childNodes),\r\n\t\t\t\t// and will not fail on other DOM objects (as do DOM elements in IE < 9)\r\n\t\t\t\treturn function(begin, end) {\r\n\t\t\t\t\tvar len = this.length;\r\n\r\n\t\t\t\t\tif (typeof begin !== \"number\") {\r\n\t\t\t\t\t\tbegin = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// IE < 9 gets unhappy with an undefined end argument\r\n\t\t\t\t\tif (typeof end !== \"number\") {\r\n\t\t\t\t\t\tend = len;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// For native Array objects, we use the native slice function\r\n\t\t\t\t\tif (this.slice) {\r\n\t\t\t\t\t\treturn slice.call(this, begin, end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// For array like object we handle it ourselves.\r\n\t\t\t\t\tvar i,\r\n\t\t\t\t\t\t\tcloned = [],\r\n\t\t\t\t\t\t\t// Handle negative value for \"begin\"\r\n\t\t\t\t\t\t\tstart = (begin >= 0) ? begin : Math.max(0, len + begin),\r\n\t\t\t\t\t\t\t// Handle negative value for \"end\"\r\n\t\t\t\t\t\t\tupTo = end < 0 ? len + end : Math.min(end, len),\r\n\t\t\t\t\t\t\t// Actual expected size of the slice\r\n\t\t\t\t\t\t\tsize = upTo - start;\r\n\r\n\t\t\t\t\tif (size > 0) {\r\n\t\t\t\t\t\tcloned = new Array(size);\r\n\t\t\t\t\t\tif (this.charAt) {\r\n\t\t\t\t\t\t\tfor (i = 0; i < size; i++) {\r\n\t\t\t\t\t\t\t\tcloned[i] = this.charAt(start + i);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfor (i = 0; i < size; i++) {\r\n\t\t\t\t\t\t\t\tcloned[i] = this[start + i];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn cloned;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t})();\r\n\r\n\t\t/* .indexOf doesn't exist in IE<9 */\r\n\t\tvar _inArray = (function() {\r\n\t\t\tif (Array.prototype.includes) {\r\n\t\t\t\treturn function(arr, val) {\r\n\t\t\t\t\treturn arr.includes(val);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tif (Array.prototype.indexOf) {\r\n\t\t\t\treturn function(arr, val) {\r\n\t\t\t\t\treturn arr.indexOf(val) >= 0;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn function(arr, val) {\r\n\t\t\t\tfor (var i = 0; i < arr.length; i++) {\r\n\t\t\t\t\tif (arr[i] === val) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tfunction sanitizeElements(elements) {\r\n\t\t\t/* Unwrap jQuery/Zepto objects. */\r\n\t\t\tif (Type.isWrapped(elements)) {\r\n\t\t\t\telements = _slice.call(elements);\r\n\t\t\t\t/* Wrap a single element in an array so that $.each() can iterate with the element instead of its node's children. */\r\n\t\t\t} else if (Type.isNode(elements)) {\r\n\t\t\t\telements = [elements];\r\n\t\t\t}\r\n\r\n\t\t\treturn elements;\r\n\t\t}\r\n\r\n\t\tvar Type = {\r\n\t\t\tisNumber: function(variable) {\r\n\t\t\t\treturn (typeof variable === \"number\");\r\n\t\t\t},\r\n\t\t\tisString: function(variable) {\r\n\t\t\t\treturn (typeof variable === \"string\");\r\n\t\t\t},\r\n\t\t\tisArray: Array.isArray || function(variable) {\r\n\t\t\t\treturn Object.prototype.toString.call(variable) === \"[object Array]\";\r\n\t\t\t},\r\n\t\t\tisFunction: function(variable) {\r\n\t\t\t\treturn Object.prototype.toString.call(variable) === \"[object Function]\";\r\n\t\t\t},\r\n\t\t\tisNode: function(variable) {\r\n\t\t\t\treturn variable && variable.nodeType;\r\n\t\t\t},\r\n\t\t\t/* Determine if variable is an array-like wrapped jQuery, Zepto or similar element, or even a NodeList etc. */\r\n\t\t\t/* NOTE: HTMLFormElements also have a length. */\r\n\t\t\tisWrapped: function(variable) {\r\n\t\t\t\treturn variable\r\n\t\t\t\t\t\t&& variable !== window\r\n\t\t\t\t\t\t&& Type.isNumber(variable.length)\r\n\t\t\t\t\t\t&& !Type.isString(variable)\r\n\t\t\t\t\t\t&& !Type.isFunction(variable)\r\n\t\t\t\t\t\t&& !Type.isNode(variable)\r\n\t\t\t\t\t\t&& (variable.length === 0 || Type.isNode(variable[0]));\r\n\t\t\t},\r\n\t\t\tisSVG: function(variable) {\r\n\t\t\t\treturn window.SVGElement && (variable instanceof window.SVGElement);\r\n\t\t\t},\r\n\t\t\tisEmptyObject: function(variable) {\r\n\t\t\t\tfor (var name in variable) {\r\n\t\t\t\t\tif (variable.hasOwnProperty(name)) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/*****************\r\n\t\t Dependencies\r\n\t\t *****************/\r\n\r\n\t\tvar $,\r\n\t\t\t\tisJQuery = false;\r\n\r\n\t\tif (global.fn && global.fn.jquery) {\r\n\t\t\t$ = global;\r\n\t\t\tisJQuery = true;\r\n\t\t} else {\r\n\t\t\t$ = window.Velocity.Utilities;\r\n\t\t}\r\n\r\n\t\tif (IE <= 8 && !isJQuery) {\r\n\t\t\tthrow new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");\r\n\t\t} else if (IE <= 7) {\r\n\t\t\t/* Revert to jQuery's $.animate(), and lose Velocity's extra features. */\r\n\t\t\tjQuery.fn.velocity = jQuery.fn.animate;\r\n\r\n\t\t\t/* Now that $.fn.velocity is aliased, abort this Velocity declaration. */\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t/*****************\r\n\t\t Constants\r\n\t\t *****************/\r\n\r\n\t\tvar DURATION_DEFAULT = 400,\r\n\t\t\t\tEASING_DEFAULT = \"swing\";\r\n\r\n\t\t/*************\r\n\t\t State\r\n\t\t *************/\r\n\r\n\t\tvar Velocity = {\r\n\t\t\t/* Container for page-wide Velocity state data. */\r\n\t\t\tState: {\r\n\t\t\t\t/* Detect mobile devices to determine if mobileHA should be turned on. */\r\n\t\t\t\tisMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent),\r\n\t\t\t\t/* The mobileHA option's behavior changes on older Android devices (Gingerbread, versions 2.3.3-2.3.7). */\r\n\t\t\t\tisAndroid: /Android/i.test(window.navigator.userAgent),\r\n\t\t\t\tisGingerbread: /Android 2\\.3\\.[3-7]/i.test(window.navigator.userAgent),\r\n\t\t\t\tisChrome: window.chrome,\r\n\t\t\t\tisFirefox: /Firefox/i.test(window.navigator.userAgent),\r\n\t\t\t\t/* Create a cached element for re-use when checking for CSS property prefixes. */\r\n\t\t\t\tprefixElement: document.createElement(\"div\"),\r\n\t\t\t\t/* Cache every prefix match to avoid repeating lookups. */\r\n\t\t\t\tprefixMatches: {},\r\n\t\t\t\t/* Cache the anchor used for animating window scrolling. */\r\n\t\t\t\tscrollAnchor: null,\r\n\t\t\t\t/* Cache the browser-specific property names associated with the scroll anchor. */\r\n\t\t\t\tscrollPropertyLeft: null,\r\n\t\t\t\tscrollPropertyTop: null,\r\n\t\t\t\t/* Keep track of whether our RAF tick is running. */\r\n\t\t\t\tisTicking: false,\r\n\t\t\t\t/* Container for every in-progress call to Velocity. */\r\n\t\t\t\tcalls: [],\r\n\t\t\t\tdelayedElements: {\r\n\t\t\t\t\tcount: 0\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/* Velocity's custom CSS stack. Made global for unit testing. */\r\n\t\t\tCSS: {/* Defined below. */},\r\n\t\t\t/* A shim of the jQuery utility functions used by Velocity -- provided by Velocity's optional jQuery shim. */\r\n\t\t\tUtilities: $,\r\n\t\t\t/* Container for the user's custom animation redirects that are referenced by name in place of the properties map argument. */\r\n\t\t\tRedirects: {/* Manually registered by the user. */},\r\n\t\t\tEasings: {/* Defined below. */},\r\n\t\t\t/* Attempt to use ES6 Promises by default. Users can override this with a third-party promises library. */\r\n\t\t\tPromise: window.Promise,\r\n\t\t\t/* Velocity option defaults, which can be overriden by the user. */\r\n\t\t\tdefaults: {\r\n\t\t\t\tqueue: \"\",\r\n\t\t\t\tduration: DURATION_DEFAULT,\r\n\t\t\t\teasing: EASING_DEFAULT,\r\n\t\t\t\tbegin: undefined,\r\n\t\t\t\tcomplete: undefined,\r\n\t\t\t\tprogress: undefined,\r\n\t\t\t\tdisplay: undefined,\r\n\t\t\t\tvisibility: undefined,\r\n\t\t\t\tloop: false,\r\n\t\t\t\tdelay: false,\r\n\t\t\t\tmobileHA: true,\r\n\t\t\t\t/* Advanced: Set to false to prevent property values from being cached between consecutive Velocity-initiated chain calls. */\r\n\t\t\t\t_cacheValues: true,\r\n\t\t\t\t/* Advanced: Set to false if the promise should always resolve on empty element lists. */\r\n\t\t\t\tpromiseRejectEmpty: true\r\n\t\t\t},\r\n\t\t\t/* A design goal of Velocity is to cache data wherever possible in order to avoid DOM requerying. Accordingly, each element has a data cache. */\r\n\t\t\tinit: function(element) {\r\n\t\t\t\t$.data(element, \"velocity\", {\r\n\t\t\t\t\t/* Store whether this is an SVG element, since its properties are retrieved and updated differently than standard HTML elements. */\r\n\t\t\t\t\tisSVG: Type.isSVG(element),\r\n\t\t\t\t\t/* Keep track of whether the element is currently being animated by Velocity.\r\n\t\t\t\t\t This is used to ensure that property values are not transferred between non-consecutive (stale) calls. */\r\n\t\t\t\t\tisAnimating: false,\r\n\t\t\t\t\t/* A reference to the element's live computedStyle object. Learn more here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */\r\n\t\t\t\t\tcomputedStyle: null,\r\n\t\t\t\t\t/* Tween data is cached for each animation on the element so that data can be passed across calls --\r\n\t\t\t\t\t in particular, end values are used as subsequent start values in consecutive Velocity calls. */\r\n\t\t\t\t\ttweensContainer: null,\r\n\t\t\t\t\t/* The full root property values of each CSS hook being animated on this element are cached so that:\r\n\t\t\t\t\t 1) Concurrently-animating hooks sharing the same root can have their root values' merged into one while tweening.\r\n\t\t\t\t\t 2) Post-hook-injection root values can be transferred over to consecutively chained Velocity calls as starting root values. */\r\n\t\t\t\t\trootPropertyValueCache: {},\r\n\t\t\t\t\t/* A cache for transform updates, which must be manually flushed via CSS.flushTransformCache(). */\r\n\t\t\t\t\ttransformCache: {}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t/* A parallel to jQuery's $.css(), used for getting/setting Velocity's hooked CSS properties. */\r\n\t\t\thook: null, /* Defined below. */\r\n\t\t\t/* Velocity-wide animation time remapping for testing purposes. */\r\n\t\t\tmock: false,\r\n\t\t\tversion: {major: 1, minor: 5, patch: 2},\r\n\t\t\t/* Set to 1 or 2 (most verbose) to output debug info to console. */\r\n\t\t\tdebug: false,\r\n\t\t\t/* Use rAF high resolution timestamp when available */\r\n\t\t\ttimestamp: true,\r\n\t\t\t/* Pause all animations */\r\n\t\t\tpauseAll: function(queueName) {\r\n\t\t\t\tvar currentTime = (new Date()).getTime();\r\n\r\n\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\r\n\t\t\t\t\tif (activeCall) {\r\n\r\n\t\t\t\t\t\t/* If we have a queueName and this call is not on that queue, skip */\r\n\t\t\t\t\t\tif (queueName !== undefined && ((activeCall[2].queue !== queueName) || (activeCall[2].queue === false))) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Set call to paused */\r\n\t\t\t\t\t\tactiveCall[5] = {\r\n\t\t\t\t\t\t\tresume: false\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t/* Pause timers on any currently delayed calls */\r\n\t\t\t\t$.each(Velocity.State.delayedElements, function(k, element) {\r\n\t\t\t\t\tif (!element) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpauseDelayOnElement(element, currentTime);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t/* Resume all animations */\r\n\t\t\tresumeAll: function(queueName) {\r\n\t\t\t\tvar currentTime = (new Date()).getTime();\r\n\r\n\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\r\n\t\t\t\t\tif (activeCall) {\r\n\r\n\t\t\t\t\t\t/* If we have a queueName and this call is not on that queue, skip */\r\n\t\t\t\t\t\tif (queueName !== undefined && ((activeCall[2].queue !== queueName) || (activeCall[2].queue === false))) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Set call to resumed if it was paused */\r\n\t\t\t\t\t\tif (activeCall[5]) {\r\n\t\t\t\t\t\t\tactiveCall[5].resume = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t/* Resume timers on any currently delayed calls */\r\n\t\t\t\t$.each(Velocity.State.delayedElements, function(k, element) {\r\n\t\t\t\t\tif (!element) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresumeDelayOnElement(element, currentTime);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* Retrieve the appropriate scroll anchor and property name for the browser: https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY */\r\n\t\tif (window.pageYOffset !== undefined) {\r\n\t\t\tVelocity.State.scrollAnchor = window;\r\n\t\t\tVelocity.State.scrollPropertyLeft = \"pageXOffset\";\r\n\t\t\tVelocity.State.scrollPropertyTop = \"pageYOffset\";\r\n\t\t} else {\r\n\t\t\tVelocity.State.scrollAnchor = document.documentElement || document.body.parentNode || document.body;\r\n\t\t\tVelocity.State.scrollPropertyLeft = \"scrollLeft\";\r\n\t\t\tVelocity.State.scrollPropertyTop = \"scrollTop\";\r\n\t\t}\r\n\r\n\t\t/* Shorthand alias for jQuery's $.data() utility. */\r\n\t\tfunction Data(element) {\r\n\t\t\t/* Hardcode a reference to the plugin name. */\r\n\t\t\tvar response = $.data(element, \"velocity\");\r\n\r\n\t\t\t/* jQuery <=1.4.2 returns null instead of undefined when no match is found. We normalize this behavior. */\r\n\t\t\treturn response === null ? undefined : response;\r\n\t\t}\r\n\r\n\t\t/**************\r\n\t\t Delay Timer\r\n\t\t **************/\r\n\r\n\t\tfunction pauseDelayOnElement(element, currentTime) {\r\n\t\t\t/* Check for any delay timers, and pause the set timeouts (while preserving time data)\r\n\t\t\t to be resumed when the \"resume\" command is issued */\r\n\t\t\tvar data = Data(element);\r\n\t\t\tif (data && data.delayTimer && !data.delayPaused) {\r\n\t\t\t\tdata.delayRemaining = data.delay - currentTime + data.delayBegin;\r\n\t\t\t\tdata.delayPaused = true;\r\n\t\t\t\tclearTimeout(data.delayTimer.setTimeout);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction resumeDelayOnElement(element, currentTime) {\r\n\t\t\t/* Check for any paused timers and resume */\r\n\t\t\tvar data = Data(element);\r\n\t\t\tif (data && data.delayTimer && data.delayPaused) {\r\n\t\t\t\t/* If the element was mid-delay, re initiate the timeout with the remaining delay */\r\n\t\t\t\tdata.delayPaused = false;\r\n\t\t\t\tdata.delayTimer.setTimeout = setTimeout(data.delayTimer.next, data.delayRemaining);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\r\n\t\t/**************\r\n\t\t Easing\r\n\t\t **************/\r\n\r\n\t\t/* Step easing generator. */\r\n\t\tfunction generateStep(steps) {\r\n\t\t\treturn function(p) {\r\n\t\t\t\treturn Math.round(p * steps) * (1 / steps);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t/* Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */\r\n\t\tfunction generateBezier(mX1, mY1, mX2, mY2) {\r\n\t\t\tvar NEWTON_ITERATIONS = 4,\r\n\t\t\t\t\tNEWTON_MIN_SLOPE = 0.001,\r\n\t\t\t\t\tSUBDIVISION_PRECISION = 0.0000001,\r\n\t\t\t\t\tSUBDIVISION_MAX_ITERATIONS = 10,\r\n\t\t\t\t\tkSplineTableSize = 11,\r\n\t\t\t\t\tkSampleStepSize = 1.0 / (kSplineTableSize - 1.0),\r\n\t\t\t\t\tfloat32ArraySupported = \"Float32Array\" in window;\r\n\r\n\t\t\t/* Must contain four arguments. */\r\n\t\t\tif (arguments.length !== 4) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t/* Arguments must be numbers. */\r\n\t\t\tfor (var i = 0; i < 4; ++i) {\r\n\t\t\t\tif (typeof arguments[i] !== \"number\" || isNaN(arguments[i]) || !isFinite(arguments[i])) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/* X values must be in the [0, 1] range. */\r\n\t\t\tmX1 = Math.min(mX1, 1);\r\n\t\t\tmX2 = Math.min(mX2, 1);\r\n\t\t\tmX1 = Math.max(mX1, 0);\r\n\t\t\tmX2 = Math.max(mX2, 0);\r\n\r\n\t\t\tvar mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n\r\n\t\t\tfunction A(aA1, aA2) {\r\n\t\t\t\treturn 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n\t\t\t}\r\n\t\t\tfunction B(aA1, aA2) {\r\n\t\t\t\treturn 3.0 * aA2 - 6.0 * aA1;\r\n\t\t\t}\r\n\t\t\tfunction C(aA1) {\r\n\t\t\t\treturn 3.0 * aA1;\r\n\t\t\t}\r\n\r\n\t\t\tfunction calcBezier(aT, aA1, aA2) {\r\n\t\t\t\treturn ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n\t\t\t}\r\n\r\n\t\t\tfunction getSlope(aT, aA1, aA2) {\r\n\t\t\t\treturn 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n\t\t\t}\r\n\r\n\t\t\tfunction newtonRaphsonIterate(aX, aGuessT) {\r\n\t\t\t\tfor (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n\t\t\t\t\tvar currentSlope = getSlope(aGuessT, mX1, mX2);\r\n\r\n\t\t\t\t\tif (currentSlope === 0.0) {\r\n\t\t\t\t\t\treturn aGuessT;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n\t\t\t\t\taGuessT -= currentX / currentSlope;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn aGuessT;\r\n\t\t\t}\r\n\r\n\t\t\tfunction calcSampleValues() {\r\n\t\t\t\tfor (var i = 0; i < kSplineTableSize; ++i) {\r\n\t\t\t\t\tmSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction binarySubdivide(aX, aA, aB) {\r\n\t\t\t\tvar currentX, currentT, i = 0;\r\n\r\n\t\t\t\tdo {\r\n\t\t\t\t\tcurrentT = aA + (aB - aA) / 2.0;\r\n\t\t\t\t\tcurrentX = calcBezier(currentT, mX1, mX2) - aX;\r\n\t\t\t\t\tif (currentX > 0.0) {\r\n\t\t\t\t\t\taB = currentT;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\taA = currentT;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n\r\n\t\t\t\treturn currentT;\r\n\t\t\t}\r\n\r\n\t\t\tfunction getTForX(aX) {\r\n\t\t\t\tvar intervalStart = 0.0,\r\n\t\t\t\t\t\tcurrentSample = 1,\r\n\t\t\t\t\t\tlastSample = kSplineTableSize - 1;\r\n\r\n\t\t\t\tfor (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n\t\t\t\t\tintervalStart += kSampleStepSize;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t--currentSample;\r\n\r\n\t\t\t\tvar dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),\r\n\t\t\t\t\t\tguessForT = intervalStart + dist * kSampleStepSize,\r\n\t\t\t\t\t\tinitialSlope = getSlope(guessForT, mX1, mX2);\r\n\r\n\t\t\t\tif (initialSlope >= NEWTON_MIN_SLOPE) {\r\n\t\t\t\t\treturn newtonRaphsonIterate(aX, guessForT);\r\n\t\t\t\t} else if (initialSlope === 0.0) {\r\n\t\t\t\t\treturn guessForT;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar _precomputed = false;\r\n\r\n\t\t\tfunction precompute() {\r\n\t\t\t\t_precomputed = true;\r\n\t\t\t\tif (mX1 !== mY1 || mX2 !== mY2) {\r\n\t\t\t\t\tcalcSampleValues();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar f = function(aX) {\r\n\t\t\t\tif (!_precomputed) {\r\n\t\t\t\t\tprecompute();\r\n\t\t\t\t}\r\n\t\t\t\tif (mX1 === mY1 && mX2 === mY2) {\r\n\t\t\t\t\treturn aX;\r\n\t\t\t\t}\r\n\t\t\t\tif (aX === 0) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\tif (aX === 1) {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn calcBezier(getTForX(aX), mY1, mY2);\r\n\t\t\t};\r\n\r\n\t\t\tf.getControlPoints = function() {\r\n\t\t\t\treturn [{x: mX1, y: mY1}, {x: mX2, y: mY2}];\r\n\t\t\t};\r\n\r\n\t\t\tvar str = \"generateBezier(\" + [mX1, mY1, mX2, mY2] + \")\";\r\n\t\t\tf.toString = function() {\r\n\t\t\t\treturn str;\r\n\t\t\t};\r\n\r\n\t\t\treturn f;\r\n\t\t}\r\n\r\n\t\t/* Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */\r\n\t\t/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass\r\n\t\t then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */\r\n\t\tvar generateSpringRK4 = (function() {\r\n\t\t\tfunction springAccelerationForState(state) {\r\n\t\t\t\treturn (-state.tension * state.x) - (state.friction * state.v);\r\n\t\t\t}\r\n\r\n\t\t\tfunction springEvaluateStateWithDerivative(initialState, dt, derivative) {\r\n\t\t\t\tvar state = {\r\n\t\t\t\t\tx: initialState.x + derivative.dx * dt,\r\n\t\t\t\t\tv: initialState.v + derivative.dv * dt,\r\n\t\t\t\t\ttension: initialState.tension,\r\n\t\t\t\t\tfriction: initialState.friction\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn {dx: state.v, dv: springAccelerationForState(state)};\r\n\t\t\t}\r\n\r\n\t\t\tfunction springIntegrateState(state, dt) {\r\n\t\t\t\tvar a = {\r\n\t\t\t\t\tdx: state.v,\r\n\t\t\t\t\tdv: springAccelerationForState(state)\r\n\t\t\t\t},\r\n\t\t\t\t\t\tb = springEvaluateStateWithDerivative(state, dt * 0.5, a),\r\n\t\t\t\t\t\tc = springEvaluateStateWithDerivative(state, dt * 0.5, b),\r\n\t\t\t\t\t\td = springEvaluateStateWithDerivative(state, dt, c),\r\n\t\t\t\t\t\tdxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),\r\n\t\t\t\t\t\tdvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);\r\n\r\n\t\t\t\tstate.x = state.x + dxdt * dt;\r\n\t\t\t\tstate.v = state.v + dvdt * dt;\r\n\r\n\t\t\t\treturn state;\r\n\t\t\t}\r\n\r\n\t\t\treturn function springRK4Factory(tension, friction, duration) {\r\n\r\n\t\t\t\tvar initState = {\r\n\t\t\t\t\tx: -1,\r\n\t\t\t\t\tv: 0,\r\n\t\t\t\t\ttension: null,\r\n\t\t\t\t\tfriction: null\r\n\t\t\t\t},\r\n\t\t\t\t\t\tpath = [0],\r\n\t\t\t\t\t\ttime_lapsed = 0,\r\n\t\t\t\t\t\ttolerance = 1 / 10000,\r\n\t\t\t\t\t\tDT = 16 / 1000,\r\n\t\t\t\t\t\thave_duration, dt, last_state;\r\n\r\n\t\t\t\ttension = parseFloat(tension) || 500;\r\n\t\t\t\tfriction = parseFloat(friction) || 20;\r\n\t\t\t\tduration = duration || null;\r\n\r\n\t\t\t\tinitState.tension = tension;\r\n\t\t\t\tinitState.friction = friction;\r\n\r\n\t\t\t\thave_duration = duration !== null;\r\n\r\n\t\t\t\t/* Calculate the actual time it takes for this animation to complete with the provided conditions. */\r\n\t\t\t\tif (have_duration) {\r\n\t\t\t\t\t/* Run the simulation without a duration. */\r\n\t\t\t\t\ttime_lapsed = springRK4Factory(tension, friction);\r\n\t\t\t\t\t/* Compute the adjusted time delta. */\r\n\t\t\t\t\tdt = time_lapsed / duration * DT;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdt = DT;\r\n\t\t\t\t}\r\n\r\n\t\t\t\twhile (true) {\r\n\t\t\t\t\t/* Next/step function .*/\r\n\t\t\t\t\tlast_state = springIntegrateState(last_state || initState, dt);\r\n\t\t\t\t\t/* Store the position. */\r\n\t\t\t\t\tpath.push(1 + last_state.x);\r\n\t\t\t\t\ttime_lapsed += 16;\r\n\t\t\t\t\t/* If the change threshold is reached, break. */\r\n\t\t\t\t\tif (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the\r\n\t\t\t\t computed path and returns a snapshot of the position according to a given percentComplete. */\r\n\t\t\t\treturn !have_duration ? time_lapsed : function(percentComplete) {\r\n\t\t\t\t\treturn path[ (percentComplete * (path.length - 1)) | 0 ];\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t}());\r\n\r\n\t\t/* jQuery easings. */\r\n\t\tVelocity.Easings = {\r\n\t\t\tlinear: function(p) {\r\n\t\t\t\treturn p;\r\n\t\t\t},\r\n\t\t\tswing: function(p) {\r\n\t\t\t\treturn 0.5 - Math.cos(p * Math.PI) / 2;\r\n\t\t\t},\r\n\t\t\t/* Bonus \"spring\" easing, which is a less exaggerated version of easeInOutElastic. */\r\n\t\t\tspring: function(p) {\r\n\t\t\t\treturn 1 - (Math.cos(p * 4.5 * Math.PI) * Math.exp(-p * 6));\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* CSS3 and Robert Penner easings. */\r\n\t\t$.each(\r\n\t\t\t\t[\r\n\t\t\t\t\t[\"ease\", [0.25, 0.1, 0.25, 1.0]],\r\n\t\t\t\t\t[\"ease-in\", [0.42, 0.0, 1.00, 1.0]],\r\n\t\t\t\t\t[\"ease-out\", [0.00, 0.0, 0.58, 1.0]],\r\n\t\t\t\t\t[\"ease-in-out\", [0.42, 0.0, 0.58, 1.0]],\r\n\t\t\t\t\t[\"easeInSine\", [0.47, 0, 0.745, 0.715]],\r\n\t\t\t\t\t[\"easeOutSine\", [0.39, 0.575, 0.565, 1]],\r\n\t\t\t\t\t[\"easeInOutSine\", [0.445, 0.05, 0.55, 0.95]],\r\n\t\t\t\t\t[\"easeInQuad\", [0.55, 0.085, 0.68, 0.53]],\r\n\t\t\t\t\t[\"easeOutQuad\", [0.25, 0.46, 0.45, 0.94]],\r\n\t\t\t\t\t[\"easeInOutQuad\", [0.455, 0.03, 0.515, 0.955]],\r\n\t\t\t\t\t[\"easeInCubic\", [0.55, 0.055, 0.675, 0.19]],\r\n\t\t\t\t\t[\"easeOutCubic\", [0.215, 0.61, 0.355, 1]],\r\n\t\t\t\t\t[\"easeInOutCubic\", [0.645, 0.045, 0.355, 1]],\r\n\t\t\t\t\t[\"easeInQuart\", [0.895, 0.03, 0.685, 0.22]],\r\n\t\t\t\t\t[\"easeOutQuart\", [0.165, 0.84, 0.44, 1]],\r\n\t\t\t\t\t[\"easeInOutQuart\", [0.77, 0, 0.175, 1]],\r\n\t\t\t\t\t[\"easeInQuint\", [0.755, 0.05, 0.855, 0.06]],\r\n\t\t\t\t\t[\"easeOutQuint\", [0.23, 1, 0.32, 1]],\r\n\t\t\t\t\t[\"easeInOutQuint\", [0.86, 0, 0.07, 1]],\r\n\t\t\t\t\t[\"easeInExpo\", [0.95, 0.05, 0.795, 0.035]],\r\n\t\t\t\t\t[\"easeOutExpo\", [0.19, 1, 0.22, 1]],\r\n\t\t\t\t\t[\"easeInOutExpo\", [1, 0, 0, 1]],\r\n\t\t\t\t\t[\"easeInCirc\", [0.6, 0.04, 0.98, 0.335]],\r\n\t\t\t\t\t[\"easeOutCirc\", [0.075, 0.82, 0.165, 1]],\r\n\t\t\t\t\t[\"easeInOutCirc\", [0.785, 0.135, 0.15, 0.86]]\r\n\t\t\t\t], function(i, easingArray) {\r\n\t\t\tVelocity.Easings[easingArray[0]] = generateBezier.apply(null, easingArray[1]);\r\n\t\t});\r\n\r\n\t\t/* Determine the appropriate easing type given an easing input. */\r\n\t\tfunction getEasing(value, duration) {\r\n\t\t\tvar easing = value;\r\n\r\n\t\t\t/* The easing option can either be a string that references a pre-registered easing,\r\n\t\t\t or it can be a two-/four-item array of integers to be converted into a bezier/spring function. */\r\n\t\t\tif (Type.isString(value)) {\r\n\t\t\t\t/* Ensure that the easing has been assigned to jQuery's Velocity.Easings object. */\r\n\t\t\t\tif (!Velocity.Easings[value]) {\r\n\t\t\t\t\teasing = false;\r\n\t\t\t\t}\r\n\t\t\t} else if (Type.isArray(value) && value.length === 1) {\r\n\t\t\t\teasing = generateStep.apply(null, value);\r\n\t\t\t} else if (Type.isArray(value) && value.length === 2) {\r\n\t\t\t\t/* springRK4 must be passed the animation's duration. */\r\n\t\t\t\t/* Note: If the springRK4 array contains non-numbers, generateSpringRK4() returns an easing\r\n\t\t\t\t function generated with default tension and friction values. */\r\n\t\t\t\teasing = generateSpringRK4.apply(null, value.concat([duration]));\r\n\t\t\t} else if (Type.isArray(value) && value.length === 4) {\r\n\t\t\t\t/* Note: If the bezier array contains non-numbers, generateBezier() returns false. */\r\n\t\t\t\teasing = generateBezier.apply(null, value);\r\n\t\t\t} else {\r\n\t\t\t\teasing = false;\r\n\t\t\t}\r\n\r\n\t\t\t/* Revert to the Velocity-wide default easing type, or fall back to \"swing\" (which is also jQuery's default)\r\n\t\t\t if the Velocity-wide default has been incorrectly modified. */\r\n\t\t\tif (easing === false) {\r\n\t\t\t\tif (Velocity.Easings[Velocity.defaults.easing]) {\r\n\t\t\t\t\teasing = Velocity.defaults.easing;\r\n\t\t\t\t} else {\r\n\t\t\t\t\teasing = EASING_DEFAULT;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn easing;\r\n\t\t}\r\n\r\n\t\t/*****************\r\n\t\t CSS Stack\r\n\t\t *****************/\r\n\r\n\t\t/* The CSS object is a highly condensed and performant CSS stack that fully replaces jQuery's.\r\n\t\t It handles the validation, getting, and setting of both standard CSS properties and CSS property hooks. */\r\n\t\t/* Note: A \"CSS\" shorthand is aliased so that our code is easier to read. */\r\n\t\tvar CSS = Velocity.CSS = {\r\n\t\t\t/*************\r\n\t\t\t RegEx\r\n\t\t\t *************/\r\n\r\n\t\t\tRegEx: {\r\n\t\t\t\tisHex: /^#([A-f\\d]{3}){1,2}$/i,\r\n\t\t\t\t/* Unwrap a property value's surrounding text, e.g. \"rgba(4, 3, 2, 1)\" ==> \"4, 3, 2, 1\" and \"rect(4px 3px 2px 1px)\" ==> \"4px 3px 2px 1px\". */\r\n\t\t\t\tvalueUnwrap: /^[A-z]+\\((.*)\\)$/i,\r\n\t\t\t\twrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,\r\n\t\t\t\t/* Split a multi-value property into an array of subvalues, e.g. \"rgba(4, 3, 2, 1) 4px 3px 2px 1px\" ==> [ \"rgba(4, 3, 2, 1)\", \"4px\", \"3px\", \"2px\", \"1px\" ]. */\r\n\t\t\t\tvalueSplit: /([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/ig\r\n\t\t\t},\r\n\t\t\t/************\r\n\t\t\t Lists\r\n\t\t\t ************/\r\n\r\n\t\t\tLists: {\r\n\t\t\t\tcolors: [\"fill\", \"stroke\", \"stopColor\", \"color\", \"backgroundColor\", \"borderColor\", \"borderTopColor\", \"borderRightColor\", \"borderBottomColor\", \"borderLeftColor\", \"outlineColor\"],\r\n\t\t\t\ttransformsBase: [\"translateX\", \"translateY\", \"scale\", \"scaleX\", \"scaleY\", \"skewX\", \"skewY\", \"rotateZ\"],\r\n\t\t\t\ttransforms3D: [\"transformPerspective\", \"translateZ\", \"scaleZ\", \"rotateX\", \"rotateY\"],\r\n\t\t\t\tunits: [\r\n\t\t\t\t\t\"%\", // relative\r\n\t\t\t\t\t\"em\", \"ex\", \"ch\", \"rem\", // font relative\r\n\t\t\t\t\t\"vw\", \"vh\", \"vmin\", \"vmax\", // viewport relative\r\n\t\t\t\t\t\"cm\", \"mm\", \"Q\", \"in\", \"pc\", \"pt\", \"px\", // absolute lengths\r\n\t\t\t\t\t\"deg\", \"grad\", \"rad\", \"turn\", // angles\r\n\t\t\t\t\t\"s\", \"ms\" // time\r\n\t\t\t\t],\r\n\t\t\t\tcolorNames: {\r\n\t\t\t\t\t\"aliceblue\": \"240,248,255\",\r\n\t\t\t\t\t\"antiquewhite\": \"250,235,215\",\r\n\t\t\t\t\t\"aquamarine\": \"127,255,212\",\r\n\t\t\t\t\t\"aqua\": \"0,255,255\",\r\n\t\t\t\t\t\"azure\": \"240,255,255\",\r\n\t\t\t\t\t\"beige\": \"245,245,220\",\r\n\t\t\t\t\t\"bisque\": \"255,228,196\",\r\n\t\t\t\t\t\"black\": \"0,0,0\",\r\n\t\t\t\t\t\"blanchedalmond\": \"255,235,205\",\r\n\t\t\t\t\t\"blueviolet\": \"138,43,226\",\r\n\t\t\t\t\t\"blue\": \"0,0,255\",\r\n\t\t\t\t\t\"brown\": \"165,42,42\",\r\n\t\t\t\t\t\"burlywood\": \"222,184,135\",\r\n\t\t\t\t\t\"cadetblue\": \"95,158,160\",\r\n\t\t\t\t\t\"chartreuse\": \"127,255,0\",\r\n\t\t\t\t\t\"chocolate\": \"210,105,30\",\r\n\t\t\t\t\t\"coral\": \"255,127,80\",\r\n\t\t\t\t\t\"cornflowerblue\": \"100,149,237\",\r\n\t\t\t\t\t\"cornsilk\": \"255,248,220\",\r\n\t\t\t\t\t\"crimson\": \"220,20,60\",\r\n\t\t\t\t\t\"cyan\": \"0,255,255\",\r\n\t\t\t\t\t\"darkblue\": \"0,0,139\",\r\n\t\t\t\t\t\"darkcyan\": \"0,139,139\",\r\n\t\t\t\t\t\"darkgoldenrod\": \"184,134,11\",\r\n\t\t\t\t\t\"darkgray\": \"169,169,169\",\r\n\t\t\t\t\t\"darkgrey\": \"169,169,169\",\r\n\t\t\t\t\t\"darkgreen\": \"0,100,0\",\r\n\t\t\t\t\t\"darkkhaki\": \"189,183,107\",\r\n\t\t\t\t\t\"darkmagenta\": \"139,0,139\",\r\n\t\t\t\t\t\"darkolivegreen\": \"85,107,47\",\r\n\t\t\t\t\t\"darkorange\": \"255,140,0\",\r\n\t\t\t\t\t\"darkorchid\": \"153,50,204\",\r\n\t\t\t\t\t\"darkred\": \"139,0,0\",\r\n\t\t\t\t\t\"darksalmon\": \"233,150,122\",\r\n\t\t\t\t\t\"darkseagreen\": \"143,188,143\",\r\n\t\t\t\t\t\"darkslateblue\": \"72,61,139\",\r\n\t\t\t\t\t\"darkslategray\": \"47,79,79\",\r\n\t\t\t\t\t\"darkturquoise\": \"0,206,209\",\r\n\t\t\t\t\t\"darkviolet\": \"148,0,211\",\r\n\t\t\t\t\t\"deeppink\": \"255,20,147\",\r\n\t\t\t\t\t\"deepskyblue\": \"0,191,255\",\r\n\t\t\t\t\t\"dimgray\": \"105,105,105\",\r\n\t\t\t\t\t\"dimgrey\": \"105,105,105\",\r\n\t\t\t\t\t\"dodgerblue\": \"30,144,255\",\r\n\t\t\t\t\t\"firebrick\": \"178,34,34\",\r\n\t\t\t\t\t\"floralwhite\": \"255,250,240\",\r\n\t\t\t\t\t\"forestgreen\": \"34,139,34\",\r\n\t\t\t\t\t\"fuchsia\": \"255,0,255\",\r\n\t\t\t\t\t\"gainsboro\": \"220,220,220\",\r\n\t\t\t\t\t\"ghostwhite\": \"248,248,255\",\r\n\t\t\t\t\t\"gold\": \"255,215,0\",\r\n\t\t\t\t\t\"goldenrod\": \"218,165,32\",\r\n\t\t\t\t\t\"gray\": \"128,128,128\",\r\n\t\t\t\t\t\"grey\": \"128,128,128\",\r\n\t\t\t\t\t\"greenyellow\": \"173,255,47\",\r\n\t\t\t\t\t\"green\": \"0,128,0\",\r\n\t\t\t\t\t\"honeydew\": \"240,255,240\",\r\n\t\t\t\t\t\"hotpink\": \"255,105,180\",\r\n\t\t\t\t\t\"indianred\": \"205,92,92\",\r\n\t\t\t\t\t\"indigo\": \"75,0,130\",\r\n\t\t\t\t\t\"ivory\": \"255,255,240\",\r\n\t\t\t\t\t\"khaki\": \"240,230,140\",\r\n\t\t\t\t\t\"lavenderblush\": \"255,240,245\",\r\n\t\t\t\t\t\"lavender\": \"230,230,250\",\r\n\t\t\t\t\t\"lawngreen\": \"124,252,0\",\r\n\t\t\t\t\t\"lemonchiffon\": \"255,250,205\",\r\n\t\t\t\t\t\"lightblue\": \"173,216,230\",\r\n\t\t\t\t\t\"lightcoral\": \"240,128,128\",\r\n\t\t\t\t\t\"lightcyan\": \"224,255,255\",\r\n\t\t\t\t\t\"lightgoldenrodyellow\": \"250,250,210\",\r\n\t\t\t\t\t\"lightgray\": \"211,211,211\",\r\n\t\t\t\t\t\"lightgrey\": \"211,211,211\",\r\n\t\t\t\t\t\"lightgreen\": \"144,238,144\",\r\n\t\t\t\t\t\"lightpink\": \"255,182,193\",\r\n\t\t\t\t\t\"lightsalmon\": \"255,160,122\",\r\n\t\t\t\t\t\"lightseagreen\": \"32,178,170\",\r\n\t\t\t\t\t\"lightskyblue\": \"135,206,250\",\r\n\t\t\t\t\t\"lightslategray\": \"119,136,153\",\r\n\t\t\t\t\t\"lightsteelblue\": \"176,196,222\",\r\n\t\t\t\t\t\"lightyellow\": \"255,255,224\",\r\n\t\t\t\t\t\"limegreen\": \"50,205,50\",\r\n\t\t\t\t\t\"lime\": \"0,255,0\",\r\n\t\t\t\t\t\"linen\": \"250,240,230\",\r\n\t\t\t\t\t\"magenta\": \"255,0,255\",\r\n\t\t\t\t\t\"maroon\": \"128,0,0\",\r\n\t\t\t\t\t\"mediumaquamarine\": \"102,205,170\",\r\n\t\t\t\t\t\"mediumblue\": \"0,0,205\",\r\n\t\t\t\t\t\"mediumorchid\": \"186,85,211\",\r\n\t\t\t\t\t\"mediumpurple\": \"147,112,219\",\r\n\t\t\t\t\t\"mediumseagreen\": \"60,179,113\",\r\n\t\t\t\t\t\"mediumslateblue\": \"123,104,238\",\r\n\t\t\t\t\t\"mediumspringgreen\": \"0,250,154\",\r\n\t\t\t\t\t\"mediumturquoise\": \"72,209,204\",\r\n\t\t\t\t\t\"mediumvioletred\": \"199,21,133\",\r\n\t\t\t\t\t\"midnightblue\": \"25,25,112\",\r\n\t\t\t\t\t\"mintcream\": \"245,255,250\",\r\n\t\t\t\t\t\"mistyrose\": \"255,228,225\",\r\n\t\t\t\t\t\"moccasin\": \"255,228,181\",\r\n\t\t\t\t\t\"navajowhite\": \"255,222,173\",\r\n\t\t\t\t\t\"navy\": \"0,0,128\",\r\n\t\t\t\t\t\"oldlace\": \"253,245,230\",\r\n\t\t\t\t\t\"olivedrab\": \"107,142,35\",\r\n\t\t\t\t\t\"olive\": \"128,128,0\",\r\n\t\t\t\t\t\"orangered\": \"255,69,0\",\r\n\t\t\t\t\t\"orange\": \"255,165,0\",\r\n\t\t\t\t\t\"orchid\": \"218,112,214\",\r\n\t\t\t\t\t\"palegoldenrod\": \"238,232,170\",\r\n\t\t\t\t\t\"palegreen\": \"152,251,152\",\r\n\t\t\t\t\t\"paleturquoise\": \"175,238,238\",\r\n\t\t\t\t\t\"palevioletred\": \"219,112,147\",\r\n\t\t\t\t\t\"papayawhip\": \"255,239,213\",\r\n\t\t\t\t\t\"peachpuff\": \"255,218,185\",\r\n\t\t\t\t\t\"peru\": \"205,133,63\",\r\n\t\t\t\t\t\"pink\": \"255,192,203\",\r\n\t\t\t\t\t\"plum\": \"221,160,221\",\r\n\t\t\t\t\t\"powderblue\": \"176,224,230\",\r\n\t\t\t\t\t\"purple\": \"128,0,128\",\r\n\t\t\t\t\t\"red\": \"255,0,0\",\r\n\t\t\t\t\t\"rosybrown\": \"188,143,143\",\r\n\t\t\t\t\t\"royalblue\": \"65,105,225\",\r\n\t\t\t\t\t\"saddlebrown\": \"139,69,19\",\r\n\t\t\t\t\t\"salmon\": \"250,128,114\",\r\n\t\t\t\t\t\"sandybrown\": \"244,164,96\",\r\n\t\t\t\t\t\"seagreen\": \"46,139,87\",\r\n\t\t\t\t\t\"seashell\": \"255,245,238\",\r\n\t\t\t\t\t\"sienna\": \"160,82,45\",\r\n\t\t\t\t\t\"silver\": \"192,192,192\",\r\n\t\t\t\t\t\"skyblue\": \"135,206,235\",\r\n\t\t\t\t\t\"slateblue\": \"106,90,205\",\r\n\t\t\t\t\t\"slategray\": \"112,128,144\",\r\n\t\t\t\t\t\"snow\": \"255,250,250\",\r\n\t\t\t\t\t\"springgreen\": \"0,255,127\",\r\n\t\t\t\t\t\"steelblue\": \"70,130,180\",\r\n\t\t\t\t\t\"tan\": \"210,180,140\",\r\n\t\t\t\t\t\"teal\": \"0,128,128\",\r\n\t\t\t\t\t\"thistle\": \"216,191,216\",\r\n\t\t\t\t\t\"tomato\": \"255,99,71\",\r\n\t\t\t\t\t\"turquoise\": \"64,224,208\",\r\n\t\t\t\t\t\"violet\": \"238,130,238\",\r\n\t\t\t\t\t\"wheat\": \"245,222,179\",\r\n\t\t\t\t\t\"whitesmoke\": \"245,245,245\",\r\n\t\t\t\t\t\"white\": \"255,255,255\",\r\n\t\t\t\t\t\"yellowgreen\": \"154,205,50\",\r\n\t\t\t\t\t\"yellow\": \"255,255,0\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/************\r\n\t\t\t Hooks\r\n\t\t\t ************/\r\n\r\n\t\t\t/* Hooks allow a subproperty (e.g. \"boxShadowBlur\") of a compound-value CSS property\r\n\t\t\t (e.g. \"boxShadow: X Y Blur Spread Color\") to be animated as if it were a discrete property. */\r\n\t\t\t/* Note: Beyond enabling fine-grained property animation, hooking is necessary since Velocity only\r\n\t\t\t tweens properties with single numeric values; unlike CSS transitions, Velocity does not interpolate compound-values. */\r\n\t\t\tHooks: {\r\n\t\t\t\t/********************\r\n\t\t\t\t Registration\r\n\t\t\t\t ********************/\r\n\r\n\t\t\t\t/* Templates are a concise way of indicating which subproperties must be individually registered for each compound-value CSS property. */\r\n\t\t\t\t/* Each template consists of the compound-value's base name, its constituent subproperty names, and those subproperties' default values. */\r\n\t\t\t\ttemplates: {\r\n\t\t\t\t\t\"textShadow\": [\"Color X Y Blur\", \"black 0px 0px 0px\"],\r\n\t\t\t\t\t\"boxShadow\": [\"Color X Y Blur Spread\", \"black 0px 0px 0px 0px\"],\r\n\t\t\t\t\t\"clip\": [\"Top Right Bottom Left\", \"0px 0px 0px 0px\"],\r\n\t\t\t\t\t\"backgroundPosition\": [\"X Y\", \"0% 0%\"],\r\n\t\t\t\t\t\"transformOrigin\": [\"X Y Z\", \"50% 50% 0px\"],\r\n\t\t\t\t\t\"perspectiveOrigin\": [\"X Y\", \"50% 50%\"]\r\n\t\t\t\t},\r\n\t\t\t\t/* A \"registered\" hook is one that has been converted from its template form into a live,\r\n\t\t\t\t tweenable property. It contains data to associate it with its root property. */\r\n\t\t\t\tregistered: {\r\n\t\t\t\t\t/* Note: A registered hook looks like this ==> textShadowBlur: [ \"textShadow\", 3 ],\r\n\t\t\t\t\t which consists of the subproperty's name, the associated root property's name,\r\n\t\t\t\t\t and the subproperty's position in the root's value. */\r\n\t\t\t\t},\r\n\t\t\t\t/* Convert the templates into individual hooks then append them to the registered object above. */\r\n\t\t\t\tregister: function() {\r\n\t\t\t\t\t/* Color hooks registration: Colors are defaulted to white -- as opposed to black -- since colors that are\r\n\t\t\t\t\t currently set to \"transparent\" default to their respective template below when color-animated,\r\n\t\t\t\t\t and white is typically a closer match to transparent than black is. An exception is made for text (\"color\"),\r\n\t\t\t\t\t which is almost always set closer to black than white. */\r\n\t\t\t\t\tfor (var i = 0; i < CSS.Lists.colors.length; i++) {\r\n\t\t\t\t\t\tvar rgbComponents = (CSS.Lists.colors[i] === \"color\") ? \"0 0 0 1\" : \"255 255 255 1\";\r\n\t\t\t\t\t\tCSS.Hooks.templates[CSS.Lists.colors[i]] = [\"Red Green Blue Alpha\", rgbComponents];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar rootProperty,\r\n\t\t\t\t\t\t\thookTemplate,\r\n\t\t\t\t\t\t\thookNames;\r\n\r\n\t\t\t\t\t/* In IE, color values inside compound-value properties are positioned at the end the value instead of at the beginning.\r\n\t\t\t\t\t Thus, we re-arrange the templates accordingly. */\r\n\t\t\t\t\tif (IE) {\r\n\t\t\t\t\t\tfor (rootProperty in CSS.Hooks.templates) {\r\n\t\t\t\t\t\t\tif (!CSS.Hooks.templates.hasOwnProperty(rootProperty)) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\thookTemplate = CSS.Hooks.templates[rootProperty];\r\n\t\t\t\t\t\t\thookNames = hookTemplate[0].split(\" \");\r\n\r\n\t\t\t\t\t\t\tvar defaultValues = hookTemplate[1].match(CSS.RegEx.valueSplit);\r\n\r\n\t\t\t\t\t\t\tif (hookNames[0] === \"Color\") {\r\n\t\t\t\t\t\t\t\t/* Reposition both the hook's name and its default value to the end of their respective strings. */\r\n\t\t\t\t\t\t\t\thookNames.push(hookNames.shift());\r\n\t\t\t\t\t\t\t\tdefaultValues.push(defaultValues.shift());\r\n\r\n\t\t\t\t\t\t\t\t/* Replace the existing template for the hook's root property. */\r\n\t\t\t\t\t\t\t\tCSS.Hooks.templates[rootProperty] = [hookNames.join(\" \"), defaultValues.join(\" \")];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Hook registration. */\r\n\t\t\t\t\tfor (rootProperty in CSS.Hooks.templates) {\r\n\t\t\t\t\t\tif (!CSS.Hooks.templates.hasOwnProperty(rootProperty)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thookTemplate = CSS.Hooks.templates[rootProperty];\r\n\t\t\t\t\t\thookNames = hookTemplate[0].split(\" \");\r\n\r\n\t\t\t\t\t\tfor (var j in hookNames) {\r\n\t\t\t\t\t\t\tif (!hookNames.hasOwnProperty(j)) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvar fullHookName = rootProperty + hookNames[j],\r\n\t\t\t\t\t\t\t\t\thookPosition = j;\r\n\r\n\t\t\t\t\t\t\t/* For each hook, register its full name (e.g. textShadowBlur) with its root property (e.g. textShadow)\r\n\t\t\t\t\t\t\t and the hook's position in its template's default value string. */\r\n\t\t\t\t\t\t\tCSS.Hooks.registered[fullHookName] = [rootProperty, hookPosition];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/*****************************\r\n\t\t\t\t Injection and Extraction\r\n\t\t\t\t *****************************/\r\n\r\n\t\t\t\t/* Look up the root property associated with the hook (e.g. return \"textShadow\" for \"textShadowBlur\"). */\r\n\t\t\t\t/* Since a hook cannot be set directly (the browser won't recognize it), style updating for hooks is routed through the hook's root property. */\r\n\t\t\t\tgetRoot: function(property) {\r\n\t\t\t\t\tvar hookData = CSS.Hooks.registered[property];\r\n\r\n\t\t\t\t\tif (hookData) {\r\n\t\t\t\t\t\treturn hookData[0];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* If there was no hook match, return the property name untouched. */\r\n\t\t\t\t\t\treturn property;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tgetUnit: function(str, start) {\r\n\t\t\t\t\tvar unit = (str.substr(start || 0, 5).match(/^[a-z%]+/) || [])[0] || \"\";\r\n\r\n\t\t\t\t\tif (unit && _inArray(CSS.Lists.units, unit)) {\r\n\t\t\t\t\t\treturn unit;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn \"\";\r\n\t\t\t\t},\r\n\t\t\t\tfixColors: function(str) {\r\n\t\t\t\t\treturn str.replace(/(rgba?\\(\\s*)?(\\b[a-z]+\\b)/g, function($0, $1, $2) {\r\n\t\t\t\t\t\tif (CSS.Lists.colorNames.hasOwnProperty($2)) {\r\n\t\t\t\t\t\t\treturn ($1 ? $1 : \"rgba(\") + CSS.Lists.colorNames[$2] + ($1 ? \"\" : \",1)\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn $1 + $2;\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t/* Convert any rootPropertyValue, null or otherwise, into a space-delimited list of hook values so that\r\n\t\t\t\t the targeted hook can be injected or extracted at its standard position. */\r\n\t\t\t\tcleanRootPropertyValue: function(rootProperty, rootPropertyValue) {\r\n\t\t\t\t\t/* If the rootPropertyValue is wrapped with \"rgb()\", \"clip()\", etc., remove the wrapping to normalize the value before manipulation. */\r\n\t\t\t\t\tif (CSS.RegEx.valueUnwrap.test(rootPropertyValue)) {\r\n\t\t\t\t\t\trootPropertyValue = rootPropertyValue.match(CSS.RegEx.valueUnwrap)[1];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If rootPropertyValue is a CSS null-value (from which there's inherently no hook value to extract),\r\n\t\t\t\t\t default to the root's default value as defined in CSS.Hooks.templates. */\r\n\t\t\t\t\t/* Note: CSS null-values include \"none\", \"auto\", and \"transparent\". They must be converted into their\r\n\t\t\t\t\t zero-values (e.g. textShadow: \"none\" ==> textShadow: \"0px 0px 0px black\") for hook manipulation to proceed. */\r\n\t\t\t\t\tif (CSS.Values.isCSSNullValue(rootPropertyValue)) {\r\n\t\t\t\t\t\trootPropertyValue = CSS.Hooks.templates[rootProperty][1];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn rootPropertyValue;\r\n\t\t\t\t},\r\n\t\t\t\t/* Extracted the hook's value from its root property's value. This is used to get the starting value of an animating hook. */\r\n\t\t\t\textractValue: function(fullHookName, rootPropertyValue) {\r\n\t\t\t\t\tvar hookData = CSS.Hooks.registered[fullHookName];\r\n\r\n\t\t\t\t\tif (hookData) {\r\n\t\t\t\t\t\tvar hookRoot = hookData[0],\r\n\t\t\t\t\t\t\t\thookPosition = hookData[1];\r\n\r\n\t\t\t\t\t\trootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot, rootPropertyValue);\r\n\r\n\t\t\t\t\t\t/* Split rootPropertyValue into its constituent hook values then grab the desired hook at its standard position. */\r\n\t\t\t\t\t\treturn rootPropertyValue.toString().match(CSS.RegEx.valueSplit)[hookPosition];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */\r\n\t\t\t\t\t\treturn rootPropertyValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/* Inject the hook's value into its root property's value. This is used to piece back together the root property\r\n\t\t\t\t once Velocity has updated one of its individually hooked values through tweening. */\r\n\t\t\t\tinjectValue: function(fullHookName, hookValue, rootPropertyValue) {\r\n\t\t\t\t\tvar hookData = CSS.Hooks.registered[fullHookName];\r\n\r\n\t\t\t\t\tif (hookData) {\r\n\t\t\t\t\t\tvar hookRoot = hookData[0],\r\n\t\t\t\t\t\t\t\thookPosition = hookData[1],\r\n\t\t\t\t\t\t\t\trootPropertyValueParts,\r\n\t\t\t\t\t\t\t\trootPropertyValueUpdated;\r\n\r\n\t\t\t\t\t\trootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot, rootPropertyValue);\r\n\r\n\t\t\t\t\t\t/* Split rootPropertyValue into its individual hook values, replace the targeted value with hookValue,\r\n\t\t\t\t\t\t then reconstruct the rootPropertyValue string. */\r\n\t\t\t\t\t\trootPropertyValueParts = rootPropertyValue.toString().match(CSS.RegEx.valueSplit);\r\n\t\t\t\t\t\trootPropertyValueParts[hookPosition] = hookValue;\r\n\t\t\t\t\t\trootPropertyValueUpdated = rootPropertyValueParts.join(\" \");\r\n\r\n\t\t\t\t\t\treturn rootPropertyValueUpdated;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */\r\n\t\t\t\t\t\treturn rootPropertyValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/*******************\r\n\t\t\t Normalizations\r\n\t\t\t *******************/\r\n\r\n\t\t\t/* Normalizations standardize CSS property manipulation by pollyfilling browser-specific implementations (e.g. opacity)\r\n\t\t\t and reformatting special properties (e.g. clip, rgba) to look like standard ones. */\r\n\t\t\tNormalizations: {\r\n\t\t\t\t/* Normalizations are passed a normalization target (either the property's name, its extracted value, or its injected value),\r\n\t\t\t\t the targeted element (which may need to be queried), and the targeted property value. */\r\n\t\t\t\tregistered: {\r\n\t\t\t\t\tclip: function(type, element, propertyValue) {\r\n\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\treturn \"clip\";\r\n\t\t\t\t\t\t\t\t/* Clip needs to be unwrapped and stripped of its commas during extraction. */\r\n\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\tvar extracted;\r\n\r\n\t\t\t\t\t\t\t\t/* If Velocity also extracted this value, skip extraction. */\r\n\t\t\t\t\t\t\t\tif (CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\textracted = propertyValue;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/* Remove the \"rect()\" wrapper. */\r\n\t\t\t\t\t\t\t\t\textracted = propertyValue.toString().match(CSS.RegEx.valueUnwrap);\r\n\r\n\t\t\t\t\t\t\t\t\t/* Strip off commas. */\r\n\t\t\t\t\t\t\t\t\textracted = extracted ? extracted[1].replace(/,(\\s+)?/g, \" \") : propertyValue;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn extracted;\r\n\t\t\t\t\t\t\t\t/* Clip needs to be re-wrapped during injection. */\r\n\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\treturn \"rect(\" + propertyValue + \")\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tblur: function(type, element, propertyValue) {\r\n\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\treturn Velocity.State.isFirefox ? \"filter\" : \"-webkit-filter\";\r\n\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\tvar extracted = parseFloat(propertyValue);\r\n\r\n\t\t\t\t\t\t\t\t/* If extracted is NaN, meaning the value isn't already extracted. */\r\n\t\t\t\t\t\t\t\tif (!(extracted || extracted === 0)) {\r\n\t\t\t\t\t\t\t\t\tvar blurComponent = propertyValue.toString().match(/blur\\(([0-9]+[A-z]+)\\)/i);\r\n\r\n\t\t\t\t\t\t\t\t\t/* If the filter string had a blur component, return just the blur value and unit type. */\r\n\t\t\t\t\t\t\t\t\tif (blurComponent) {\r\n\t\t\t\t\t\t\t\t\t\textracted = blurComponent[1];\r\n\t\t\t\t\t\t\t\t\t\t/* If the component doesn't exist, default blur to 0. */\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\textracted = 0;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn extracted;\r\n\t\t\t\t\t\t\t\t/* Blur needs to be re-wrapped during injection. */\r\n\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t/* For the blur effect to be fully de-applied, it needs to be set to \"none\" instead of 0. */\r\n\t\t\t\t\t\t\t\tif (!parseFloat(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\treturn \"none\";\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\treturn \"blur(\" + propertyValue + \")\";\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t/* <=IE8 do not support the standard opacity property. They use filter:alpha(opacity=INT) instead. */\r\n\t\t\t\t\topacity: function(type, element, propertyValue) {\r\n\t\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\treturn \"filter\";\r\n\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\t/* <=IE8 return a \"filter\" value of \"alpha(opacity=\\d{1,3})\".\r\n\t\t\t\t\t\t\t\t\t Extract the value and convert it to a decimal value to match the standard CSS opacity property's formatting. */\r\n\t\t\t\t\t\t\t\t\tvar extracted = propertyValue.toString().match(/alpha\\(opacity=(.*)\\)/i);\r\n\r\n\t\t\t\t\t\t\t\t\tif (extracted) {\r\n\t\t\t\t\t\t\t\t\t\t/* Convert to decimal value. */\r\n\t\t\t\t\t\t\t\t\t\tpropertyValue = extracted[1] / 100;\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t/* When extracting opacity, default to 1 since a null value means opacity hasn't been set. */\r\n\t\t\t\t\t\t\t\t\t\tpropertyValue = 1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\t/* Opacified elements are required to have their zoom property set to a non-zero value. */\r\n\t\t\t\t\t\t\t\t\telement.style.zoom = 1;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Setting the filter property on elements with certain font property combinations can result in a\r\n\t\t\t\t\t\t\t\t\t highly unappealing ultra-bolding effect. There's no way to remedy this throughout a tween, but dropping the\r\n\t\t\t\t\t\t\t\t\t value altogether (when opacity hits 1) at leasts ensures that the glitch is gone post-tweening. */\r\n\t\t\t\t\t\t\t\t\tif (parseFloat(propertyValue) >= 1) {\r\n\t\t\t\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t/* As per the filter property's spec, convert the decimal value to a whole number and wrap the value. */\r\n\t\t\t\t\t\t\t\t\t\treturn \"alpha(opacity=\" + parseInt(parseFloat(propertyValue) * 100, 10) + \")\";\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* With all other browsers, normalization is not required; return the same values that were passed in. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\treturn \"opacity\";\r\n\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/*****************************\r\n\t\t\t\t Batched Registrations\r\n\t\t\t\t *****************************/\r\n\r\n\t\t\t\t/* Note: Batched normalizations extend the CSS.Normalizations.registered object. */\r\n\t\t\t\tregister: function() {\r\n\r\n\t\t\t\t\t/*****************\r\n\t\t\t\t\t Transforms\r\n\t\t\t\t\t *****************/\r\n\r\n\t\t\t\t\t/* Transforms are the subproperties contained by the CSS \"transform\" property. Transforms must undergo normalization\r\n\t\t\t\t\t so that they can be referenced in a properties map by their individual names. */\r\n\t\t\t\t\t/* Note: When transforms are \"set\", they are actually assigned to a per-element transformCache. When all transform\r\n\t\t\t\t\t setting is complete complete, CSS.flushTransformCache() must be manually called to flush the values to the DOM.\r\n\t\t\t\t\t Transform setting is batched in this way to improve performance: the transform style only needs to be updated\r\n\t\t\t\t\t once when multiple transform subproperties are being animated simultaneously. */\r\n\t\t\t\t\t/* Note: IE9 and Android Gingerbread have support for 2D -- but not 3D -- transforms. Since animating unsupported\r\n\t\t\t\t\t transform properties results in the browser ignoring the *entire* transform string, we prevent these 3D values\r\n\t\t\t\t\t from being normalized for these browsers so that tweening skips these properties altogether\r\n\t\t\t\t\t (since it will ignore them as being unsupported by the browser.) */\r\n\t\t\t\t\tif ((!IE || IE > 9) && !Velocity.State.isGingerbread) {\r\n\t\t\t\t\t\t/* Note: Since the standalone CSS \"perspective\" property and the CSS transform \"perspective\" subproperty\r\n\t\t\t\t\t\t share the same name, the latter is given a unique token within Velocity: \"transformPerspective\". */\r\n\t\t\t\t\t\tCSS.Lists.transformsBase = CSS.Lists.transformsBase.concat(CSS.Lists.transforms3D);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (var i = 0; i < CSS.Lists.transformsBase.length; i++) {\r\n\t\t\t\t\t\t/* Wrap the dynamically generated normalization function in a new scope so that transformName's value is\r\n\t\t\t\t\t\t paired with its respective function. (Otherwise, all functions would take the final for loop's transformName.) */\r\n\t\t\t\t\t\t(function() {\r\n\t\t\t\t\t\t\tvar transformName = CSS.Lists.transformsBase[i];\r\n\r\n\t\t\t\t\t\t\tCSS.Normalizations.registered[transformName] = function(type, element, propertyValue) {\r\n\t\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\t\t/* The normalized property name is the parent \"transform\" property -- the property that is actually set in CSS. */\r\n\t\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\t\treturn \"transform\";\r\n\t\t\t\t\t\t\t\t\t\t/* Transform values are cached onto a per-element transformCache object. */\r\n\t\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\t\t/* If this transform has yet to be assigned a value, return its null value. */\r\n\t\t\t\t\t\t\t\t\t\tif (Data(element) === undefined || Data(element).transformCache[transformName] === undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Scale CSS.Lists.transformsBase default to 1 whereas all other transform properties default to 0. */\r\n\t\t\t\t\t\t\t\t\t\t\treturn /^scale/i.test(transformName) ? 1 : 0;\r\n\t\t\t\t\t\t\t\t\t\t\t/* When transform values are set, they are wrapped in parentheses as per the CSS spec.\r\n\t\t\t\t\t\t\t\t\t\t\t Thus, when extracting their values (for tween calculations), we strip off the parentheses. */\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\treturn Data(element).transformCache[transformName].replace(/[()]/g, \"\");\r\n\t\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\t\tvar invalid = false;\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* If an individual transform property contains an unsupported unit type, the browser ignores the *entire* transform property.\r\n\t\t\t\t\t\t\t\t\t\t Thus, protect users from themselves by skipping setting for transform values supplied with invalid unit types. */\r\n\t\t\t\t\t\t\t\t\t\t/* Switch on the base transform type; ignore the axis by removing the last letter from the transform's name. */\r\n\t\t\t\t\t\t\t\t\t\tswitch (transformName.substr(0, transformName.length - 1)) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Whitelist unit types for each transform. */\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"translate\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(%|px|em|rem|vw|vh|\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* Since an axis-free \"scale\" property is supported as well, a little hack is used here to detect it by chopping off its last letter. */\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"scal\":\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"scale\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* Chrome on Android has a bug in which scaled elements blur if their initial scale\r\n\t\t\t\t\t\t\t\t\t\t\t\t value is below 1 (which can happen with forcefeeding). Thus, we detect a yet-unset scale property\r\n\t\t\t\t\t\t\t\t\t\t\t\t and ensure that its first value is always 1. More info: http://stackoverflow.com/questions/10417890/css3-animations-with-transform-causes-blurred-elements-on-webkit/10417962#10417962 */\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (Velocity.State.isAndroid && Data(element).transformCache[transformName] === undefined && propertyValue < 1) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpropertyValue = 1;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"skew\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(deg|\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"rotate\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(deg|\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (!invalid) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* As per the CSS spec, wrap the value in parentheses. */\r\n\t\t\t\t\t\t\t\t\t\t\tData(element).transformCache[transformName] = \"(\" + propertyValue + \")\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Although the value is set on the transformCache object, return the newly-updated value for the calling code to process as normal. */\r\n\t\t\t\t\t\t\t\t\t\treturn Data(element).transformCache[transformName];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/*************\r\n\t\t\t\t\t Colors\r\n\t\t\t\t\t *************/\r\n\r\n\t\t\t\t\t/* Since Velocity only animates a single numeric value per property, color animation is achieved by hooking the individual RGBA components of CSS color properties.\r\n\t\t\t\t\t Accordingly, color values must be normalized (e.g. \"#ff0000\", \"red\", and \"rgb(255, 0, 0)\" ==> \"255 0 0 1\") so that their components can be injected/extracted by CSS.Hooks logic. */\r\n\t\t\t\t\tfor (var j = 0; j < CSS.Lists.colors.length; j++) {\r\n\t\t\t\t\t\t/* Wrap the dynamically generated normalization function in a new scope so that colorName's value is paired with its respective function.\r\n\t\t\t\t\t\t (Otherwise, all functions would take the final for loop's colorName.) */\r\n\t\t\t\t\t\t(function() {\r\n\t\t\t\t\t\t\tvar colorName = CSS.Lists.colors[j];\r\n\r\n\t\t\t\t\t\t\t/* Note: In IE<=8, which support rgb but not rgba, color properties are reverted to rgb by stripping off the alpha component. */\r\n\t\t\t\t\t\t\tCSS.Normalizations.registered[colorName] = function(type, element, propertyValue) {\r\n\t\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\t\treturn colorName;\r\n\t\t\t\t\t\t\t\t\t\t/* Convert all color values into the rgb format. (Old IE can return hex values and color names instead of rgb/rgba.) */\r\n\t\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\t\tvar extracted;\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* If the color is already in its hookable form (e.g. \"255 255 255 1\") due to having been previously extracted, skip extraction. */\r\n\t\t\t\t\t\t\t\t\t\tif (CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\textracted = propertyValue;\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tvar converted,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolorNames = {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblack: \"rgb(0, 0, 0)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblue: \"rgb(0, 0, 255)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgray: \"rgb(128, 128, 128)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgreen: \"rgb(0, 128, 0)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tred: \"rgb(255, 0, 0)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twhite: \"rgb(255, 255, 255)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Convert color names to rgb. */\r\n\t\t\t\t\t\t\t\t\t\t\tif (/^[A-z]+$/i.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (colorNames[propertyValue] !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconverted = colorNames[propertyValue];\r\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* If an unmatched color name is provided, default to black. */\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconverted = colorNames.black;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* Convert hex values to rgb. */\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (CSS.RegEx.isHex.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconverted = \"rgb(\" + CSS.Values.hexToRgb(propertyValue).join(\" \") + \")\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* If the provided color doesn't match any of the accepted color formats, default to black. */\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (!(/^rgba?\\(/i.test(propertyValue))) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconverted = colorNames.black;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Remove the surrounding \"rgb/rgba()\" string then replace commas with spaces and strip\r\n\t\t\t\t\t\t\t\t\t\t\t repeated spaces (in case the value included spaces to begin with). */\r\n\t\t\t\t\t\t\t\t\t\t\textracted = (converted || propertyValue).toString().match(CSS.RegEx.valueUnwrap)[1].replace(/,(\\s+)?/g, \" \");\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* So long as this isn't <=IE8, add a fourth (alpha) component if it's missing and default it to 1 (visible). */\r\n\t\t\t\t\t\t\t\t\t\tif ((!IE || IE > 8) && extracted.split(\" \").length === 3) {\r\n\t\t\t\t\t\t\t\t\t\t\textracted += \" 1\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn extracted;\r\n\t\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\t\t/* If we have a pattern then it might already have the right values */\r\n\t\t\t\t\t\t\t\t\t\tif (/^rgb/.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* If this is IE<=8 and an alpha component exists, strip it off. */\r\n\t\t\t\t\t\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (propertyValue.split(\" \").length === 4) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tpropertyValue = propertyValue.split(/\\s+/).slice(0, 3).join(\" \");\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t/* Otherwise, add a fourth (alpha) component if it's missing and default it to 1 (visible). */\r\n\t\t\t\t\t\t\t\t\t\t} else if (propertyValue.split(\" \").length === 3) {\r\n\t\t\t\t\t\t\t\t\t\t\tpropertyValue += \" 1\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Re-insert the browser-appropriate wrapper(\"rgb/rgba()\"), insert commas, and strip off decimal units\r\n\t\t\t\t\t\t\t\t\t\t on all values but the fourth (R, G, and B only accept whole numbers). */\r\n\t\t\t\t\t\t\t\t\t\treturn (IE <= 8 ? \"rgb\" : \"rgba\") + \"(\" + propertyValue.replace(/\\s+/g, \",\").replace(/\\.(\\d)+(?=,)/g, \"\") + \")\";\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/**************\r\n\t\t\t\t\t Dimensions\r\n\t\t\t\t\t **************/\r\n\t\t\t\t\tfunction augmentDimension(name, element, wantInner) {\r\n\t\t\t\t\t\tvar isBorderBox = CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() === \"border-box\";\r\n\r\n\t\t\t\t\t\tif (isBorderBox === (wantInner || false)) {\r\n\t\t\t\t\t\t\t/* in box-sizing mode, the CSS width / height accessors already give the outerWidth / outerHeight. */\r\n\t\t\t\t\t\t\tvar i,\r\n\t\t\t\t\t\t\t\t\tvalue,\r\n\t\t\t\t\t\t\t\t\taugment = 0,\r\n\t\t\t\t\t\t\t\t\tsides = name === \"width\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"],\r\n\t\t\t\t\t\t\t\t\tfields = [\"padding\" + sides[0], \"padding\" + sides[1], \"border\" + sides[0] + \"Width\", \"border\" + sides[1] + \"Width\"];\r\n\r\n\t\t\t\t\t\t\tfor (i = 0; i < fields.length; i++) {\r\n\t\t\t\t\t\t\t\tvalue = parseFloat(CSS.getPropertyValue(element, fields[i]));\r\n\t\t\t\t\t\t\t\tif (!isNaN(value)) {\r\n\t\t\t\t\t\t\t\t\taugment += value;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn wantInner ? -augment : augment;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfunction getDimension(name, wantInner) {\r\n\t\t\t\t\t\treturn function(type, element, propertyValue) {\r\n\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\treturn name;\r\n\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\treturn parseFloat(propertyValue) + augmentDimension(name, element, wantInner);\r\n\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\treturn (parseFloat(propertyValue) - augmentDimension(name, element, wantInner)) + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tCSS.Normalizations.registered.innerWidth = getDimension(\"width\", true);\r\n\t\t\t\t\tCSS.Normalizations.registered.innerHeight = getDimension(\"height\", true);\r\n\t\t\t\t\tCSS.Normalizations.registered.outerWidth = getDimension(\"width\");\r\n\t\t\t\t\tCSS.Normalizations.registered.outerHeight = getDimension(\"height\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/************************\r\n\t\t\t CSS Property Names\r\n\t\t\t ************************/\r\n\r\n\t\t\tNames: {\r\n\t\t\t\t/* Camelcase a property name into its JavaScript notation (e.g. \"background-color\" ==> \"backgroundColor\").\r\n\t\t\t\t Camelcasing is used to normalize property names between and across calls. */\r\n\t\t\t\tcamelCase: function(property) {\r\n\t\t\t\t\treturn property.replace(/-(\\w)/g, function(match, subMatch) {\r\n\t\t\t\t\t\treturn subMatch.toUpperCase();\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t/* For SVG elements, some properties (namely, dimensional ones) are GET/SET via the element's HTML attributes (instead of via CSS styles). */\r\n\t\t\t\tSVGAttribute: function(property) {\r\n\t\t\t\t\tvar SVGAttributes = \"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";\r\n\r\n\t\t\t\t\t/* Certain browsers require an SVG transform to be applied as an attribute. (Otherwise, application via CSS is preferable due to 3D support.) */\r\n\t\t\t\t\tif (IE || (Velocity.State.isAndroid && !Velocity.State.isChrome)) {\r\n\t\t\t\t\t\tSVGAttributes += \"|transform\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn new RegExp(\"^(\" + SVGAttributes + \")$\", \"i\").test(property);\r\n\t\t\t\t},\r\n\t\t\t\t/* Determine whether a property should be set with a vendor prefix. */\r\n\t\t\t\t/* If a prefixed version of the property exists, return it. Otherwise, return the original property name.\r\n\t\t\t\t If the property is not at all supported by the browser, return a false flag. */\r\n\t\t\t\tprefixCheck: function(property) {\r\n\t\t\t\t\t/* If this property has already been checked, return the cached value. */\r\n\t\t\t\t\tif (Velocity.State.prefixMatches[property]) {\r\n\t\t\t\t\t\treturn [Velocity.State.prefixMatches[property], true];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar vendors = [\"\", \"Webkit\", \"Moz\", \"ms\", \"O\"];\r\n\r\n\t\t\t\t\t\tfor (var i = 0, vendorsLength = vendors.length; i < vendorsLength; i++) {\r\n\t\t\t\t\t\t\tvar propertyPrefixed;\r\n\r\n\t\t\t\t\t\t\tif (i === 0) {\r\n\t\t\t\t\t\t\t\tpropertyPrefixed = property;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t/* Capitalize the first letter of the property to conform to JavaScript vendor prefix notation (e.g. webkitFilter). */\r\n\t\t\t\t\t\t\t\tpropertyPrefixed = vendors[i] + property.replace(/^\\w/, function(match) {\r\n\t\t\t\t\t\t\t\t\treturn match.toUpperCase();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Check if the browser supports this property as prefixed. */\r\n\t\t\t\t\t\t\tif (Type.isString(Velocity.State.prefixElement.style[propertyPrefixed])) {\r\n\t\t\t\t\t\t\t\t/* Cache the match. */\r\n\t\t\t\t\t\t\t\tVelocity.State.prefixMatches[property] = propertyPrefixed;\r\n\r\n\t\t\t\t\t\t\t\treturn [propertyPrefixed, true];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* If the browser doesn't support this property in any form, include a false flag so that the caller can decide how to proceed. */\r\n\t\t\t\t\t\treturn [property, false];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/************************\r\n\t\t\t CSS Property Values\r\n\t\t\t ************************/\r\n\r\n\t\t\tValues: {\r\n\t\t\t\t/* Hex to RGB conversion. Copyright Tim Down: http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb */\r\n\t\t\t\thexToRgb: function(hex) {\r\n\t\t\t\t\tvar shortformRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,\r\n\t\t\t\t\t\t\tlongformRegex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,\r\n\t\t\t\t\t\t\trgbParts;\r\n\r\n\t\t\t\t\thex = hex.replace(shortformRegex, function(m, r, g, b) {\r\n\t\t\t\t\t\treturn r + r + g + g + b + b;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trgbParts = longformRegex.exec(hex);\r\n\r\n\t\t\t\t\treturn rgbParts ? [parseInt(rgbParts[1], 16), parseInt(rgbParts[2], 16), parseInt(rgbParts[3], 16)] : [0, 0, 0];\r\n\t\t\t\t},\r\n\t\t\t\tisCSSNullValue: function(value) {\r\n\t\t\t\t\t/* The browser defaults CSS values that have not been set to either 0 or one of several possible null-value strings.\r\n\t\t\t\t\t Thus, we check for both falsiness and these special strings. */\r\n\t\t\t\t\t/* Null-value checking is performed to default the special strings to 0 (for the sake of tweening) or their hook\r\n\t\t\t\t\t templates as defined as CSS.Hooks (for the sake of hook injection/extraction). */\r\n\t\t\t\t\t/* Note: Chrome returns \"rgba(0, 0, 0, 0)\" for an undefined color whereas IE returns \"transparent\". */\r\n\t\t\t\t\treturn (!value || /^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(value));\r\n\t\t\t\t},\r\n\t\t\t\t/* Retrieve a property's default unit type. Used for assigning a unit type when one is not supplied by the user. */\r\n\t\t\t\tgetUnitType: function(property) {\r\n\t\t\t\t\tif (/^(rotate|skew)/i.test(property)) {\r\n\t\t\t\t\t\treturn \"deg\";\r\n\t\t\t\t\t} else if (/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(property)) {\r\n\t\t\t\t\t\t/* The above properties are unitless. */\r\n\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* Default to px for all other properties. */\r\n\t\t\t\t\t\treturn \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/* HTML elements default to an associated display type when they're not set to display:none. */\r\n\t\t\t\t/* Note: This function is used for correctly setting the non-\"none\" display value in certain Velocity redirects, such as fadeIn/Out. */\r\n\t\t\t\tgetDisplayType: function(element) {\r\n\t\t\t\t\tvar tagName = element && element.tagName.toString().toLowerCase();\r\n\r\n\t\t\t\t\tif (/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"inline\";\r\n\t\t\t\t\t} else if (/^(li)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"list-item\";\r\n\t\t\t\t\t} else if (/^(tr)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"table-row\";\r\n\t\t\t\t\t} else if (/^(table)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"table\";\r\n\t\t\t\t\t} else if (/^(tbody)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"table-row-group\";\r\n\t\t\t\t\t\t/* Default to \"block\" when no match is found. */\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn \"block\";\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/* The class add/remove functions are used to temporarily apply a \"velocity-animating\" class to elements while they're animating. */\r\n\t\t\t\taddClass: function(element, className) {\r\n\t\t\t\t\tif (element) {\r\n\t\t\t\t\t\tif (element.classList) {\r\n\t\t\t\t\t\t\telement.classList.add(className);\r\n\t\t\t\t\t\t} else if (Type.isString(element.className)) {\r\n\t\t\t\t\t\t\t// Element.className is around 15% faster then set/getAttribute\r\n\t\t\t\t\t\t\telement.className += (element.className.length ? \" \" : \"\") + className;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Work around for IE strict mode animating SVG - and anything else that doesn't behave correctly - the same way jQuery does it\r\n\t\t\t\t\t\t\tvar currentClass = element.getAttribute(IE <= 7 ? \"className\" : \"class\") || \"\";\r\n\r\n\t\t\t\t\t\t\telement.setAttribute(\"class\", currentClass + (currentClass ? \" \" : \"\") + className);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tremoveClass: function(element, className) {\r\n\t\t\t\t\tif (element) {\r\n\t\t\t\t\t\tif (element.classList) {\r\n\t\t\t\t\t\t\telement.classList.remove(className);\r\n\t\t\t\t\t\t} else if (Type.isString(element.className)) {\r\n\t\t\t\t\t\t\t// Element.className is around 15% faster then set/getAttribute\r\n\t\t\t\t\t\t\t// TODO: Need some jsperf tests on performance - can we get rid of the regex and maybe use split / array manipulation?\r\n\t\t\t\t\t\t\telement.className = element.className.toString().replace(new RegExp(\"(^|\\\\s)\" + className.split(\" \").join(\"|\") + \"(\\\\s|$)\", \"gi\"), \" \");\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Work around for IE strict mode animating SVG - and anything else that doesn't behave correctly - the same way jQuery does it\r\n\t\t\t\t\t\t\tvar currentClass = element.getAttribute(IE <= 7 ? \"className\" : \"class\") || \"\";\r\n\r\n\t\t\t\t\t\t\telement.setAttribute(\"class\", currentClass.replace(new RegExp(\"(^|\\s)\" + className.split(\" \").join(\"|\") + \"(\\s|$)\", \"gi\"), \" \"));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/****************************\r\n\t\t\t Style Getting & Setting\r\n\t\t\t ****************************/\r\n\r\n\t\t\t/* The singular getPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */\r\n\t\t\tgetPropertyValue: function(element, property, rootPropertyValue, forceStyleLookup) {\r\n\t\t\t\t/* Get an element's computed property value. */\r\n\t\t\t\t/* Note: Retrieving the value of a CSS property cannot simply be performed by checking an element's\r\n\t\t\t\t style attribute (which only reflects user-defined values). Instead, the browser must be queried for a property's\r\n\t\t\t\t *computed* value. You can read more about getComputedStyle here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */\r\n\t\t\t\tfunction computePropertyValue(element, property) {\r\n\t\t\t\t\t/* When box-sizing isn't set to border-box, height and width style values are incorrectly computed when an\r\n\t\t\t\t\t element's scrollbars are visible (which expands the element's dimensions). Thus, we defer to the more accurate\r\n\t\t\t\t\t offsetHeight/Width property, which includes the total dimensions for interior, border, padding, and scrollbar.\r\n\t\t\t\t\t We subtract border and padding to get the sum of interior + scrollbar. */\r\n\t\t\t\t\tvar computedValue = 0;\r\n\r\n\t\t\t\t\t/* IE<=8 doesn't support window.getComputedStyle, thus we defer to jQuery, which has an extensive array\r\n\t\t\t\t\t of hacks to accurately retrieve IE8 property values. Re-implementing that logic here is not worth bloating the\r\n\t\t\t\t\t codebase for a dying browser. The performance repercussions of using jQuery here are minimal since\r\n\t\t\t\t\t Velocity is optimized to rarely (and sometimes never) query the DOM. Further, the $.css() codepath isn't that slow. */\r\n\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\tcomputedValue = $.css(element, property); /* GET */\r\n\t\t\t\t\t\t/* All other browsers support getComputedStyle. The returned live object reference is cached onto its\r\n\t\t\t\t\t\t associated element so that it does not need to be refetched upon every GET. */\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* Browsers do not return height and width values for elements that are set to display:\"none\". Thus, we temporarily\r\n\t\t\t\t\t\t toggle display to the element type's default value. */\r\n\t\t\t\t\t\tvar toggleDisplay = false;\r\n\r\n\t\t\t\t\t\tif (/^(width|height)$/.test(property) && CSS.getPropertyValue(element, \"display\") === 0) {\r\n\t\t\t\t\t\t\ttoggleDisplay = true;\r\n\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", CSS.Values.getDisplayType(element));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar revertDisplay = function() {\r\n\t\t\t\t\t\t\tif (toggleDisplay) {\r\n\t\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", \"none\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tif (!forceStyleLookup) {\r\n\t\t\t\t\t\t\tif (property === \"height\" && CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() !== \"border-box\") {\r\n\t\t\t\t\t\t\t\tvar contentBoxHeight = element.offsetHeight - (parseFloat(CSS.getPropertyValue(element, \"borderTopWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"borderBottomWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingTop\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingBottom\")) || 0);\r\n\t\t\t\t\t\t\t\trevertDisplay();\r\n\r\n\t\t\t\t\t\t\t\treturn contentBoxHeight;\r\n\t\t\t\t\t\t\t} else if (property === \"width\" && CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() !== \"border-box\") {\r\n\t\t\t\t\t\t\t\tvar contentBoxWidth = element.offsetWidth - (parseFloat(CSS.getPropertyValue(element, \"borderLeftWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"borderRightWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingLeft\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingRight\")) || 0);\r\n\t\t\t\t\t\t\t\trevertDisplay();\r\n\r\n\t\t\t\t\t\t\t\treturn contentBoxWidth;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar computedStyle;\r\n\r\n\t\t\t\t\t\t/* For elements that Velocity hasn't been called on directly (e.g. when Velocity queries the DOM on behalf\r\n\t\t\t\t\t\t of a parent of an element its animating), perform a direct getComputedStyle lookup since the object isn't cached. */\r\n\t\t\t\t\t\tif (Data(element) === undefined) {\r\n\t\t\t\t\t\t\tcomputedStyle = window.getComputedStyle(element, null); /* GET */\r\n\t\t\t\t\t\t\t/* If the computedStyle object has yet to be cached, do so now. */\r\n\t\t\t\t\t\t} else if (!Data(element).computedStyle) {\r\n\t\t\t\t\t\t\tcomputedStyle = Data(element).computedStyle = window.getComputedStyle(element, null); /* GET */\r\n\t\t\t\t\t\t\t/* If computedStyle is cached, use it. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcomputedStyle = Data(element).computedStyle;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* IE and Firefox do not return a value for the generic borderColor -- they only return individual values for each border side's color.\r\n\t\t\t\t\t\t Also, in all browsers, when border colors aren't all the same, a compound value is returned that Velocity isn't setup to parse.\r\n\t\t\t\t\t\t So, as a polyfill for querying individual border side colors, we just return the top border's color and animate all borders from that value. */\r\n\t\t\t\t\t\tif (property === \"borderColor\") {\r\n\t\t\t\t\t\t\tproperty = \"borderTopColor\";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* IE9 has a bug in which the \"filter\" property must be accessed from computedStyle using the getPropertyValue method\r\n\t\t\t\t\t\t instead of a direct property lookup. The getPropertyValue method is slower than a direct lookup, which is why we avoid it by default. */\r\n\t\t\t\t\t\tif (IE === 9 && property === \"filter\") {\r\n\t\t\t\t\t\t\tcomputedValue = computedStyle.getPropertyValue(property); /* GET */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcomputedValue = computedStyle[property];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Fall back to the property's style value (if defined) when computedValue returns nothing,\r\n\t\t\t\t\t\t which can happen when the element hasn't been painted. */\r\n\t\t\t\t\t\tif (computedValue === \"\" || computedValue === null) {\r\n\t\t\t\t\t\t\tcomputedValue = element.style[property];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trevertDisplay();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* For top, right, bottom, and left (TRBL) values that are set to \"auto\" on elements of \"fixed\" or \"absolute\" position,\r\n\t\t\t\t\t defer to jQuery for converting \"auto\" to a numeric value. (For elements with a \"static\" or \"relative\" position, \"auto\" has the same\r\n\t\t\t\t\t effect as being set to 0, so no conversion is necessary.) */\r\n\t\t\t\t\t/* An example of why numeric conversion is necessary: When an element with \"position:absolute\" has an untouched \"left\"\r\n\t\t\t\t\t property, which reverts to \"auto\", left's value is 0 relative to its parent element, but is often non-zero relative\r\n\t\t\t\t\t to its *containing* (not parent) element, which is the nearest \"position:relative\" ancestor or the viewport (and always the viewport in the case of \"position:fixed\"). */\r\n\t\t\t\t\tif (computedValue === \"auto\" && /^(top|right|bottom|left)$/i.test(property)) {\r\n\t\t\t\t\t\tvar position = computePropertyValue(element, \"position\"); /* GET */\r\n\r\n\t\t\t\t\t\t/* For absolute positioning, jQuery's $.position() only returns values for top and left;\r\n\t\t\t\t\t\t right and bottom will have their \"auto\" value reverted to 0. */\r\n\t\t\t\t\t\t/* Note: A jQuery object must be created here since jQuery doesn't have a low-level alias for $.position().\r\n\t\t\t\t\t\t Not a big deal since we're currently in a GET batch anyway. */\r\n\t\t\t\t\t\tif (position === \"fixed\" || (position === \"absolute\" && /top|left/i.test(property))) {\r\n\t\t\t\t\t\t\t/* Note: jQuery strips the pixel unit from its returned values; we re-add it here to conform with computePropertyValue's behavior. */\r\n\t\t\t\t\t\t\tcomputedValue = $(element).position()[property] + \"px\"; /* GET */\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn computedValue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar propertyValue;\r\n\r\n\t\t\t\t/* If this is a hooked property (e.g. \"clipLeft\" instead of the root property of \"clip\"),\r\n\t\t\t\t extract the hook's value from a normalized rootPropertyValue using CSS.Hooks.extractValue(). */\r\n\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\tvar hook = property,\r\n\t\t\t\t\t\t\thookRoot = CSS.Hooks.getRoot(hook);\r\n\r\n\t\t\t\t\t/* If a cached rootPropertyValue wasn't passed in (which Velocity always attempts to do in order to avoid requerying the DOM),\r\n\t\t\t\t\t query the DOM for the root property's value. */\r\n\t\t\t\t\tif (rootPropertyValue === undefined) {\r\n\t\t\t\t\t\t/* Since the browser is now being directly queried, use the official post-prefixing property name for this lookup. */\r\n\t\t\t\t\t\trootPropertyValue = CSS.getPropertyValue(element, CSS.Names.prefixCheck(hookRoot)[0]); /* GET */\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If this root has a normalization registered, peform the associated normalization extraction. */\r\n\t\t\t\t\tif (CSS.Normalizations.registered[hookRoot]) {\r\n\t\t\t\t\t\trootPropertyValue = CSS.Normalizations.registered[hookRoot](\"extract\", element, rootPropertyValue);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Extract the hook's value. */\r\n\t\t\t\t\tpropertyValue = CSS.Hooks.extractValue(hook, rootPropertyValue);\r\n\r\n\t\t\t\t\t/* If this is a normalized property (e.g. \"opacity\" becomes \"filter\" in <=IE8) or \"translateX\" becomes \"transform\"),\r\n\t\t\t\t\t normalize the property's name and value, and handle the special case of transforms. */\r\n\t\t\t\t\t/* Note: Normalizing a property is mutually exclusive from hooking a property since hook-extracted values are strictly\r\n\t\t\t\t\t numerical and therefore do not require normalization extraction. */\r\n\t\t\t\t} else if (CSS.Normalizations.registered[property]) {\r\n\t\t\t\t\tvar normalizedPropertyName,\r\n\t\t\t\t\t\t\tnormalizedPropertyValue;\r\n\r\n\t\t\t\t\tnormalizedPropertyName = CSS.Normalizations.registered[property](\"name\", element);\r\n\r\n\t\t\t\t\t/* Transform values are calculated via normalization extraction (see below), which checks against the element's transformCache.\r\n\t\t\t\t\t At no point do transform GETs ever actually query the DOM; initial stylesheet values are never processed.\r\n\t\t\t\t\t This is because parsing 3D transform matrices is not always accurate and would bloat our codebase;\r\n\t\t\t\t\t thus, normalization extraction defaults initial transform values to their zero-values (e.g. 1 for scaleX and 0 for translateX). */\r\n\t\t\t\t\tif (normalizedPropertyName !== \"transform\") {\r\n\t\t\t\t\t\tnormalizedPropertyValue = computePropertyValue(element, CSS.Names.prefixCheck(normalizedPropertyName)[0]); /* GET */\r\n\r\n\t\t\t\t\t\t/* If the value is a CSS null-value and this property has a hook template, use that zero-value template so that hooks can be extracted from it. */\r\n\t\t\t\t\t\tif (CSS.Values.isCSSNullValue(normalizedPropertyValue) && CSS.Hooks.templates[property]) {\r\n\t\t\t\t\t\t\tnormalizedPropertyValue = CSS.Hooks.templates[property][1];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpropertyValue = CSS.Normalizations.registered[property](\"extract\", element, normalizedPropertyValue);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If a (numeric) value wasn't produced via hook extraction or normalization, query the DOM. */\r\n\t\t\t\tif (!/^[\\d-]/.test(propertyValue)) {\r\n\t\t\t\t\t/* For SVG elements, dimensional properties (which SVGAttribute() detects) are tweened via\r\n\t\t\t\t\t their HTML attribute values instead of their CSS style values. */\r\n\t\t\t\t\tvar data = Data(element);\r\n\r\n\t\t\t\t\tif (data && data.isSVG && CSS.Names.SVGAttribute(property)) {\r\n\t\t\t\t\t\t/* Since the height/width attribute values must be set manually, they don't reflect computed values.\r\n\t\t\t\t\t\t Thus, we use use getBBox() to ensure we always get values for elements with undefined height/width attributes. */\r\n\t\t\t\t\t\tif (/^(height|width)$/i.test(property)) {\r\n\t\t\t\t\t\t\t/* Firefox throws an error if .getBBox() is called on an SVG that isn't attached to the DOM. */\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tpropertyValue = element.getBBox()[property];\r\n\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\tpropertyValue = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* Otherwise, access the attribute value directly. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tpropertyValue = element.getAttribute(property);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpropertyValue = computePropertyValue(element, CSS.Names.prefixCheck(property)[0]); /* GET */\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Since property lookups are for animation purposes (which entails computing the numeric delta between start and end values),\r\n\t\t\t\t convert CSS null-values to an integer of value 0. */\r\n\t\t\t\tif (CSS.Values.isCSSNullValue(propertyValue)) {\r\n\t\t\t\t\tpropertyValue = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (Velocity.debug >= 2) {\r\n\t\t\t\t\tconsole.log(\"Get \" + property + \": \" + propertyValue);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn propertyValue;\r\n\t\t\t},\r\n\t\t\t/* The singular setPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */\r\n\t\t\tsetPropertyValue: function(element, property, propertyValue, rootPropertyValue, scrollData) {\r\n\t\t\t\tvar propertyName = property;\r\n\r\n\t\t\t\t/* In order to be subjected to call options and element queueing, scroll animation is routed through Velocity as if it were a standard CSS property. */\r\n\t\t\t\tif (property === \"scroll\") {\r\n\t\t\t\t\t/* If a container option is present, scroll the container instead of the browser window. */\r\n\t\t\t\t\tif (scrollData.container) {\r\n\t\t\t\t\t\tscrollData.container[\"scroll\" + scrollData.direction] = propertyValue;\r\n\t\t\t\t\t\t/* Otherwise, Velocity defaults to scrolling the browser window. */\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (scrollData.direction === \"Left\") {\r\n\t\t\t\t\t\t\twindow.scrollTo(propertyValue, scrollData.alternateValue);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twindow.scrollTo(scrollData.alternateValue, propertyValue);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t/* Transforms (translateX, rotateZ, etc.) are applied to a per-element transformCache object, which is manually flushed via flushTransformCache().\r\n\t\t\t\t\t Thus, for now, we merely cache transforms being SET. */\r\n\t\t\t\t\tif (CSS.Normalizations.registered[property] && CSS.Normalizations.registered[property](\"name\", element) === \"transform\") {\r\n\t\t\t\t\t\t/* Perform a normalization injection. */\r\n\t\t\t\t\t\t/* Note: The normalization logic handles the transformCache updating. */\r\n\t\t\t\t\t\tCSS.Normalizations.registered[property](\"inject\", element, propertyValue);\r\n\r\n\t\t\t\t\t\tpropertyName = \"transform\";\r\n\t\t\t\t\t\tpropertyValue = Data(element).transformCache[property];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* Inject hooks. */\r\n\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\tvar hookName = property,\r\n\t\t\t\t\t\t\t\t\thookRoot = CSS.Hooks.getRoot(property);\r\n\r\n\t\t\t\t\t\t\t/* If a cached rootPropertyValue was not provided, query the DOM for the hookRoot's current value. */\r\n\t\t\t\t\t\t\trootPropertyValue = rootPropertyValue || CSS.getPropertyValue(element, hookRoot); /* GET */\r\n\r\n\t\t\t\t\t\t\tpropertyValue = CSS.Hooks.injectValue(hookName, propertyValue, rootPropertyValue);\r\n\t\t\t\t\t\t\tproperty = hookRoot;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Normalize names and values. */\r\n\t\t\t\t\t\tif (CSS.Normalizations.registered[property]) {\r\n\t\t\t\t\t\t\tpropertyValue = CSS.Normalizations.registered[property](\"inject\", element, propertyValue);\r\n\t\t\t\t\t\t\tproperty = CSS.Normalizations.registered[property](\"name\", element);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Assign the appropriate vendor prefix before performing an official style update. */\r\n\t\t\t\t\t\tpropertyName = CSS.Names.prefixCheck(property)[0];\r\n\r\n\t\t\t\t\t\t/* A try/catch is used for IE<=8, which throws an error when \"invalid\" CSS values are set, e.g. a negative width.\r\n\t\t\t\t\t\t Try/catch is avoided for other browsers since it incurs a performance overhead. */\r\n\t\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\telement.style[propertyName] = propertyValue;\r\n\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Browser does not support [\" + propertyValue + \"] for [\" + propertyName + \"]\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* SVG elements have their dimensional properties (width, height, x, y, cx, etc.) applied directly as attributes instead of as styles. */\r\n\t\t\t\t\t\t\t/* Note: IE8 does not support SVG elements, so it's okay that we skip it for SVG animation. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar data = Data(element);\r\n\r\n\t\t\t\t\t\t\tif (data && data.isSVG && CSS.Names.SVGAttribute(property)) {\r\n\t\t\t\t\t\t\t\t/* Note: For SVG attributes, vendor-prefixed property names are never used. */\r\n\t\t\t\t\t\t\t\t/* Note: Not all CSS properties can be animated via attributes, but the browser won't throw an error for unsupported properties. */\r\n\t\t\t\t\t\t\t\telement.setAttribute(property, propertyValue);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\telement.style[propertyName] = propertyValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (Velocity.debug >= 2) {\r\n\t\t\t\t\t\t\tconsole.log(\"Set \" + property + \" (\" + propertyName + \"): \" + propertyValue);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Return the normalized property name and value in case the caller wants to know how these values were modified before being applied to the DOM. */\r\n\t\t\t\treturn [propertyName, propertyValue];\r\n\t\t\t},\r\n\t\t\t/* To increase performance by batching transform updates into a single SET, transforms are not directly applied to an element until flushTransformCache() is called. */\r\n\t\t\t/* Note: Velocity applies transform properties in the same order that they are chronogically introduced to the element's CSS styles. */\r\n\t\t\tflushTransformCache: function(element) {\r\n\t\t\t\tvar transformString = \"\",\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t/* Certain browsers require that SVG transforms be applied as an attribute. However, the SVG transform attribute takes a modified version of CSS's transform string\r\n\t\t\t\t (units are dropped and, except for skewX/Y, subproperties are merged into their master property -- e.g. scaleX and scaleY are merged into scale(X Y). */\r\n\t\t\t\tif ((IE || (Velocity.State.isAndroid && !Velocity.State.isChrome)) && data && data.isSVG) {\r\n\t\t\t\t\t/* Since transform values are stored in their parentheses-wrapped form, we use a helper function to strip out their numeric values.\r\n\t\t\t\t\t Further, SVG transform properties only take unitless (representing pixels) values, so it's okay that parseFloat() strips the unit suffixed to the float value. */\r\n\t\t\t\t\tvar getTransformFloat = function(transformProperty) {\r\n\t\t\t\t\t\treturn parseFloat(CSS.getPropertyValue(element, transformProperty));\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* Create an object to organize all the transforms that we'll apply to the SVG element. To keep the logic simple,\r\n\t\t\t\t\t we process *all* transform properties -- even those that may not be explicitly applied (since they default to their zero-values anyway). */\r\n\t\t\t\t\tvar SVGTransforms = {\r\n\t\t\t\t\t\ttranslate: [getTransformFloat(\"translateX\"), getTransformFloat(\"translateY\")],\r\n\t\t\t\t\t\tskewX: [getTransformFloat(\"skewX\")], skewY: [getTransformFloat(\"skewY\")],\r\n\t\t\t\t\t\t/* If the scale property is set (non-1), use that value for the scaleX and scaleY values\r\n\t\t\t\t\t\t (this behavior mimics the result of animating all these properties at once on HTML elements). */\r\n\t\t\t\t\t\tscale: getTransformFloat(\"scale\") !== 1 ? [getTransformFloat(\"scale\"), getTransformFloat(\"scale\")] : [getTransformFloat(\"scaleX\"), getTransformFloat(\"scaleY\")],\r\n\t\t\t\t\t\t/* Note: SVG's rotate transform takes three values: rotation degrees followed by the X and Y values\r\n\t\t\t\t\t\t defining the rotation's origin point. We ignore the origin values (default them to 0). */\r\n\t\t\t\t\t\trotate: [getTransformFloat(\"rotateZ\"), 0, 0]\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* Iterate through the transform properties in the user-defined property map order.\r\n\t\t\t\t\t (This mimics the behavior of non-SVG transform animation.) */\r\n\t\t\t\t\t$.each(Data(element).transformCache, function(transformName) {\r\n\t\t\t\t\t\t/* Except for with skewX/Y, revert the axis-specific transform subproperties to their axis-free master\r\n\t\t\t\t\t\t properties so that they match up with SVG's accepted transform properties. */\r\n\t\t\t\t\t\tif (/^translate/i.test(transformName)) {\r\n\t\t\t\t\t\t\ttransformName = \"translate\";\r\n\t\t\t\t\t\t} else if (/^scale/i.test(transformName)) {\r\n\t\t\t\t\t\t\ttransformName = \"scale\";\r\n\t\t\t\t\t\t} else if (/^rotate/i.test(transformName)) {\r\n\t\t\t\t\t\t\ttransformName = \"rotate\";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Check that we haven't yet deleted the property from the SVGTransforms container. */\r\n\t\t\t\t\t\tif (SVGTransforms[transformName]) {\r\n\t\t\t\t\t\t\t/* Append the transform property in the SVG-supported transform format. As per the spec, surround the space-delimited values in parentheses. */\r\n\t\t\t\t\t\t\ttransformString += transformName + \"(\" + SVGTransforms[transformName].join(\" \") + \")\" + \" \";\r\n\r\n\t\t\t\t\t\t\t/* After processing an SVG transform property, delete it from the SVGTransforms container so we don't\r\n\t\t\t\t\t\t\t re-insert the same master property if we encounter another one of its axis-specific properties. */\r\n\t\t\t\t\t\t\tdelete SVGTransforms[transformName];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar transformValue,\r\n\t\t\t\t\t\t\tperspective;\r\n\r\n\t\t\t\t\t/* Transform properties are stored as members of the transformCache object. Concatenate all the members into a string. */\r\n\t\t\t\t\t$.each(Data(element).transformCache, function(transformName) {\r\n\t\t\t\t\t\ttransformValue = Data(element).transformCache[transformName];\r\n\r\n\t\t\t\t\t\t/* Transform's perspective subproperty must be set first in order to take effect. Store it temporarily. */\r\n\t\t\t\t\t\tif (transformName === \"transformPerspective\") {\r\n\t\t\t\t\t\t\tperspective = transformValue;\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* IE9 only supports one rotation type, rotateZ, which it refers to as \"rotate\". */\r\n\t\t\t\t\t\tif (IE === 9 && transformName === \"rotateZ\") {\r\n\t\t\t\t\t\t\ttransformName = \"rotate\";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttransformString += transformName + transformValue + \" \";\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* If present, set the perspective subproperty first. */\r\n\t\t\t\t\tif (perspective) {\r\n\t\t\t\t\t\ttransformString = \"perspective\" + perspective + \" \" + transformString;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tCSS.setPropertyValue(element, \"transform\", transformString);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* Register hooks and normalizations. */\r\n\t\tCSS.Hooks.register();\r\n\t\tCSS.Normalizations.register();\r\n\r\n\t\t/* Allow hook setting in the same fashion as jQuery's $.css(). */\r\n\t\tVelocity.hook = function(elements, arg2, arg3) {\r\n\t\t\tvar value;\r\n\r\n\t\t\telements = sanitizeElements(elements);\r\n\r\n\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t/* Initialize Velocity's per-element data cache if this element hasn't previously been animated. */\r\n\t\t\t\tif (Data(element) === undefined) {\r\n\t\t\t\t\tVelocity.init(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Get property value. If an element set was passed in, only return the value for the first element. */\r\n\t\t\t\tif (arg3 === undefined) {\r\n\t\t\t\t\tif (value === undefined) {\r\n\t\t\t\t\t\tvalue = CSS.getPropertyValue(element, arg2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t/* Set property value. */\r\n\t\t\t\t} else {\r\n\t\t\t\t\t/* sPV returns an array of the normalized propertyName/propertyValue pair used to update the DOM. */\r\n\t\t\t\t\tvar adjustedSet = CSS.setPropertyValue(element, arg2, arg3);\r\n\r\n\t\t\t\t\t/* Transform properties don't automatically set. They have to be flushed to the DOM. */\r\n\t\t\t\t\tif (adjustedSet[0] === \"transform\") {\r\n\t\t\t\t\t\tVelocity.CSS.flushTransformCache(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvalue = adjustedSet;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t};\r\n\r\n\t\t/*****************\r\n\t\t Animation\r\n\t\t *****************/\r\n\r\n\t\tvar animate = function() {\r\n\t\t\tvar opts;\r\n\r\n\t\t\t/******************\r\n\t\t\t Call Chain\r\n\t\t\t ******************/\r\n\r\n\t\t\t/* Logic for determining what to return to the call stack when exiting out of Velocity. */\r\n\t\t\tfunction getChain() {\r\n\t\t\t\t/* If we are using the utility function, attempt to return this call's promise. If no promise library was detected,\r\n\t\t\t\t default to null instead of returning the targeted elements so that utility function's return value is standardized. */\r\n\t\t\t\tif (isUtility) {\r\n\t\t\t\t\treturn promiseData.promise || null;\r\n\t\t\t\t\t/* Otherwise, if we're using $.fn, return the jQuery-/Zepto-wrapped element set. */\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn elementsWrapped;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/*************************\r\n\t\t\t Arguments Assignment\r\n\t\t\t *************************/\r\n\r\n\t\t\t/* To allow for expressive CoffeeScript code, Velocity supports an alternative syntax in which \"elements\" (or \"e\"), \"properties\" (or \"p\"), and \"options\" (or \"o\")\r\n\t\t\t objects are defined on a container object that's passed in as Velocity's sole argument. */\r\n\t\t\t/* Note: Some browsers automatically populate arguments with a \"properties\" object. We detect it by checking for its default \"names\" property. */\r\n\t\t\tvar syntacticSugar = (arguments[0] && (arguments[0].p || (($.isPlainObject(arguments[0].properties) && !arguments[0].properties.names) || Type.isString(arguments[0].properties)))),\r\n\t\t\t\t\t/* Whether Velocity was called via the utility function (as opposed to on a jQuery/Zepto object). */\r\n\t\t\t\t\tisUtility,\r\n\t\t\t\t\t/* When Velocity is called via the utility function ($.Velocity()/Velocity()), elements are explicitly\r\n\t\t\t\t\t passed in as the first parameter. Thus, argument positioning varies. We normalize them here. */\r\n\t\t\t\t\telementsWrapped,\r\n\t\t\t\t\targumentIndex;\r\n\r\n\t\t\tvar elements,\r\n\t\t\t\t\tpropertiesMap,\r\n\t\t\t\t\toptions;\r\n\r\n\t\t\t/* Detect jQuery/Zepto elements being animated via the $.fn method. */\r\n\t\t\tif (Type.isWrapped(this)) {\r\n\t\t\t\tisUtility = false;\r\n\r\n\t\t\t\targumentIndex = 0;\r\n\t\t\t\telements = this;\r\n\t\t\t\telementsWrapped = this;\r\n\t\t\t\t/* Otherwise, raw elements are being animated via the utility function. */\r\n\t\t\t} else {\r\n\t\t\t\tisUtility = true;\r\n\r\n\t\t\t\targumentIndex = 1;\r\n\t\t\t\telements = syntacticSugar ? (arguments[0].elements || arguments[0].e) : arguments[0];\r\n\t\t\t}\r\n\r\n\t\t\t/***************\r\n\t\t\t Promises\r\n\t\t\t ***************/\r\n\r\n\t\t\tvar promiseData = {\r\n\t\t\t\tpromise: null,\r\n\t\t\t\tresolver: null,\r\n\t\t\t\trejecter: null\r\n\t\t\t};\r\n\r\n\t\t\t/* If this call was made via the utility function (which is the default method of invocation when jQuery/Zepto are not being used), and if\r\n\t\t\t promise support was detected, create a promise object for this call and store references to its resolver and rejecter methods. The resolve\r\n\t\t\t method is used when a call completes naturally or is prematurely stopped by the user. In both cases, completeCall() handles the associated\r\n\t\t\t call cleanup and promise resolving logic. The reject method is used when an invalid set of arguments is passed into a Velocity call. */\r\n\t\t\t/* Note: Velocity employs a call-based queueing architecture, which means that stopping an animating element actually stops the full call that\r\n\t\t\t triggered it -- not that one element exclusively. Similarly, there is one promise per call, and all elements targeted by a Velocity call are\r\n\t\t\t grouped together for the purposes of resolving and rejecting a promise. */\r\n\t\t\tif (isUtility && Velocity.Promise) {\r\n\t\t\t\tpromiseData.promise = new Velocity.Promise(function(resolve, reject) {\r\n\t\t\t\t\tpromiseData.resolver = resolve;\r\n\t\t\t\t\tpromiseData.rejecter = reject;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (syntacticSugar) {\r\n\t\t\t\tpropertiesMap = arguments[0].properties || arguments[0].p;\r\n\t\t\t\toptions = arguments[0].options || arguments[0].o;\r\n\t\t\t} else {\r\n\t\t\t\tpropertiesMap = arguments[argumentIndex];\r\n\t\t\t\toptions = arguments[argumentIndex + 1];\r\n\t\t\t}\r\n\r\n\t\t\telements = sanitizeElements(elements);\r\n\r\n\t\t\tif (!elements) {\r\n\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\tif (!propertiesMap || !options || options.promiseRejectEmpty !== false) {\r\n\t\t\t\t\t\tpromiseData.rejecter();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpromiseData.resolver();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t/* The length of the element set (in the form of a nodeList or an array of elements) is defaulted to 1 in case a\r\n\t\t\t single raw DOM element is passed in (which doesn't contain a length property). */\r\n\t\t\tvar elementsLength = elements.length,\r\n\t\t\t\t\telementsIndex = 0;\r\n\r\n\t\t\t/***************************\r\n\t\t\t Argument Overloading\r\n\t\t\t ***************************/\r\n\r\n\t\t\t/* Support is included for jQuery's argument overloading: $.animate(propertyMap [, duration] [, easing] [, complete]).\r\n\t\t\t Overloading is detected by checking for the absence of an object being passed into options. */\r\n\t\t\t/* Note: The stop/finish/pause/resume actions do not accept animation options, and are therefore excluded from this check. */\r\n\t\t\tif (!/^(stop|finish|finishAll|pause|resume)$/i.test(propertiesMap) && !$.isPlainObject(options)) {\r\n\t\t\t\t/* The utility function shifts all arguments one position to the right, so we adjust for that offset. */\r\n\t\t\t\tvar startingArgumentPosition = argumentIndex + 1;\r\n\r\n\t\t\t\toptions = {};\r\n\r\n\t\t\t\t/* Iterate through all options arguments */\r\n\t\t\t\tfor (var i = startingArgumentPosition; i < arguments.length; i++) {\r\n\t\t\t\t\t/* Treat a number as a duration. Parse it out. */\r\n\t\t\t\t\t/* Note: The following RegEx will return true if passed an array with a number as its first item.\r\n\t\t\t\t\t Thus, arrays are skipped from this check. */\r\n\t\t\t\t\tif (!Type.isArray(arguments[i]) && (/^(fast|normal|slow)$/i.test(arguments[i]) || /^\\d/.test(arguments[i]))) {\r\n\t\t\t\t\t\toptions.duration = arguments[i];\r\n\t\t\t\t\t\t/* Treat strings and arrays as easings. */\r\n\t\t\t\t\t} else if (Type.isString(arguments[i]) || Type.isArray(arguments[i])) {\r\n\t\t\t\t\t\toptions.easing = arguments[i];\r\n\t\t\t\t\t\t/* Treat a function as a complete callback. */\r\n\t\t\t\t\t} else if (Type.isFunction(arguments[i])) {\r\n\t\t\t\t\t\toptions.complete = arguments[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/*********************\r\n\t\t\t Action Detection\r\n\t\t\t *********************/\r\n\r\n\t\t\t/* Velocity's behavior is categorized into \"actions\": Elements can either be specially scrolled into view,\r\n\t\t\t or they can be started, stopped, paused, resumed, or reversed . If a literal or referenced properties map is passed in as Velocity's\r\n\t\t\t first argument, the associated action is \"start\". Alternatively, \"scroll\", \"reverse\", \"pause\", \"resume\" or \"stop\" can be passed in \r\n\t\t\t instead of a properties map. */\r\n\t\t\tvar action;\r\n\r\n\t\t\tswitch (propertiesMap) {\r\n\t\t\t\tcase \"scroll\":\r\n\t\t\t\t\taction = \"scroll\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"reverse\":\r\n\t\t\t\t\taction = \"reverse\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pause\":\r\n\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Action: Pause\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\tvar currentTime = (new Date()).getTime();\r\n\r\n\t\t\t\t\t/* Handle delay timers */\r\n\t\t\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t\t\tpauseDelayOnElement(element, currentTime);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Pause and Resume are call-wide (not on a per element basis). Thus, calling pause or resume on a \r\n\t\t\t\t\t single element will cause any calls that containt tweens for that element to be paused/resumed\r\n\t\t\t\t\t as well. */\r\n\r\n\t\t\t\t\t/* Iterate through all calls and pause any that contain any of our elements */\r\n\t\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\r\n\t\t\t\t\t\tvar found = false;\r\n\t\t\t\t\t\t/* Inactive calls are set to false by the logic inside completeCall(). Skip them. */\r\n\t\t\t\t\t\tif (activeCall) {\r\n\t\t\t\t\t\t\t/* Iterate through the active call's targeted elements. */\r\n\t\t\t\t\t\t\t$.each(activeCall[1], function(k, activeElement) {\r\n\t\t\t\t\t\t\t\tvar queueName = (options === undefined) ? \"\" : options;\r\n\r\n\t\t\t\t\t\t\t\tif (queueName !== true && (activeCall[2].queue !== queueName) && !(options === undefined && activeCall[2].queue === false)) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Iterate through the calls targeted by the stop command. */\r\n\t\t\t\t\t\t\t\t$.each(elements, function(l, element) {\r\n\t\t\t\t\t\t\t\t\t/* Check that this call was applied to the target element. */\r\n\t\t\t\t\t\t\t\t\tif (element === activeElement) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Set call to paused */\r\n\t\t\t\t\t\t\t\t\t\tactiveCall[5] = {\r\n\t\t\t\t\t\t\t\t\t\t\tresume: false\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Once we match an element, we can bounce out to the next call entirely */\r\n\t\t\t\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t/* Proceed to check next call if we have already matched */\r\n\t\t\t\t\t\t\t\tif (found) {\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Since pause creates no new tweens, exit out of Velocity. */\r\n\t\t\t\t\treturn getChain();\r\n\r\n\t\t\t\tcase \"resume\":\r\n\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Action: Resume\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t/* Handle delay timers */\r\n\t\t\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t\t\tresumeDelayOnElement(element, currentTime);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Pause and Resume are call-wide (not on a per elemnt basis). Thus, calling pause or resume on a \r\n\t\t\t\t\t single element will cause any calls that containt tweens for that element to be paused/resumed\r\n\t\t\t\t\t as well. */\r\n\r\n\t\t\t\t\t/* Iterate through all calls and pause any that contain any of our elements */\r\n\t\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\t\t\t\t\t\tvar found = false;\r\n\t\t\t\t\t\t/* Inactive calls are set to false by the logic inside completeCall(). Skip them. */\r\n\t\t\t\t\t\tif (activeCall) {\r\n\t\t\t\t\t\t\t/* Iterate through the active call's targeted elements. */\r\n\t\t\t\t\t\t\t$.each(activeCall[1], function(k, activeElement) {\r\n\t\t\t\t\t\t\t\tvar queueName = (options === undefined) ? \"\" : options;\r\n\r\n\t\t\t\t\t\t\t\tif (queueName !== true && (activeCall[2].queue !== queueName) && !(options === undefined && activeCall[2].queue === false)) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Skip any calls that have never been paused */\r\n\t\t\t\t\t\t\t\tif (!activeCall[5]) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Iterate through the calls targeted by the stop command. */\r\n\t\t\t\t\t\t\t\t$.each(elements, function(l, element) {\r\n\t\t\t\t\t\t\t\t\t/* Check that this call was applied to the target element. */\r\n\t\t\t\t\t\t\t\t\tif (element === activeElement) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Flag a pause object to be resumed, which will occur during the next tick. In\r\n\t\t\t\t\t\t\t\t\t\t addition, the pause object will at that time be deleted */\r\n\t\t\t\t\t\t\t\t\t\tactiveCall[5].resume = true;\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Once we match an element, we can bounce out to the next call entirely */\r\n\t\t\t\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t/* Proceed to check next call if we have already matched */\r\n\t\t\t\t\t\t\t\tif (found) {\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Since resume creates no new tweens, exit out of Velocity. */\r\n\t\t\t\t\treturn getChain();\r\n\r\n\t\t\t\tcase \"finish\":\r\n\t\t\t\tcase \"finishAll\":\r\n\t\t\t\tcase \"stop\":\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Action: Stop\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t/* Clear the currently-active delay on each targeted element. */\r\n\t\t\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t\t\tif (Data(element) && Data(element).delayTimer) {\r\n\t\t\t\t\t\t\t/* Stop the timer from triggering its cached next() function. */\r\n\t\t\t\t\t\t\tclearTimeout(Data(element).delayTimer.setTimeout);\r\n\r\n\t\t\t\t\t\t\t/* Manually call the next() function so that the subsequent queue items can progress. */\r\n\t\t\t\t\t\t\tif (Data(element).delayTimer.next) {\r\n\t\t\t\t\t\t\t\tData(element).delayTimer.next();\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tdelete Data(element).delayTimer;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* If we want to finish everything in the queue, we have to iterate through it\r\n\t\t\t\t\t\t and call each function. This will make them active calls below, which will\r\n\t\t\t\t\t\t cause them to be applied via the duration setting. */\r\n\t\t\t\t\t\tif (propertiesMap === \"finishAll\" && (options === true || Type.isString(options))) {\r\n\t\t\t\t\t\t\t/* Iterate through the items in the element's queue. */\r\n\t\t\t\t\t\t\t$.each($.queue(element, Type.isString(options) ? options : \"\"), function(_, item) {\r\n\t\t\t\t\t\t\t\t/* The queue array can contain an \"inprogress\" string, which we skip. */\r\n\t\t\t\t\t\t\t\tif (Type.isFunction(item)) {\r\n\t\t\t\t\t\t\t\t\titem();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t/* Clearing the $.queue() array is achieved by resetting it to []. */\r\n\t\t\t\t\t\t\t$.queue(element, Type.isString(options) ? options : \"\", []);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tvar callsToStop = [];\r\n\r\n\t\t\t\t\t/* When the stop action is triggered, the elements' currently active call is immediately stopped. The active call might have\r\n\t\t\t\t\t been applied to multiple elements, in which case all of the call's elements will be stopped. When an element\r\n\t\t\t\t\t is stopped, the next item in its animation queue is immediately triggered. */\r\n\t\t\t\t\t/* An additional argument may be passed in to clear an element's remaining queued calls. Either true (which defaults to the \"fx\" queue)\r\n\t\t\t\t\t or a custom queue string can be passed in. */\r\n\t\t\t\t\t/* Note: The stop command runs prior to Velocity's Queueing phase since its behavior is intended to take effect *immediately*,\r\n\t\t\t\t\t regardless of the element's current queue state. */\r\n\r\n\t\t\t\t\t/* Iterate through every active call. */\r\n\t\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\t\t\t\t\t\t/* Inactive calls are set to false by the logic inside completeCall(). Skip them. */\r\n\t\t\t\t\t\tif (activeCall) {\r\n\t\t\t\t\t\t\t/* Iterate through the active call's targeted elements. */\r\n\t\t\t\t\t\t\t$.each(activeCall[1], function(k, activeElement) {\r\n\t\t\t\t\t\t\t\t/* If true was passed in as a secondary argument, clear absolutely all calls on this element. Otherwise, only\r\n\t\t\t\t\t\t\t\t clear calls associated with the relevant queue. */\r\n\t\t\t\t\t\t\t\t/* Call stopping logic works as follows:\r\n\t\t\t\t\t\t\t\t - options === true --> stop current default queue calls (and queue:false calls), including remaining queued ones.\r\n\t\t\t\t\t\t\t\t - options === undefined --> stop current queue:\"\" call and all queue:false calls.\r\n\t\t\t\t\t\t\t\t - options === false --> stop only queue:false calls.\r\n\t\t\t\t\t\t\t\t - options === \"custom\" --> stop current queue:\"custom\" call, including remaining queued ones (there is no functionality to only clear the currently-running queue:\"custom\" call). */\r\n\t\t\t\t\t\t\t\tvar queueName = (options === undefined) ? \"\" : options;\r\n\r\n\t\t\t\t\t\t\t\tif (queueName !== true && (activeCall[2].queue !== queueName) && !(options === undefined && activeCall[2].queue === false)) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Iterate through the calls targeted by the stop command. */\r\n\t\t\t\t\t\t\t\t$.each(elements, function(l, element) {\r\n\t\t\t\t\t\t\t\t\t/* Check that this call was applied to the target element. */\r\n\t\t\t\t\t\t\t\t\tif (element === activeElement) {\r\n\t\t\t\t\t\t\t\t\t\t/* Optionally clear the remaining queued calls. If we're doing \"finishAll\" this won't find anything,\r\n\t\t\t\t\t\t\t\t\t\t due to the queue-clearing above. */\r\n\t\t\t\t\t\t\t\t\t\tif (options === true || Type.isString(options)) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Iterate through the items in the element's queue. */\r\n\t\t\t\t\t\t\t\t\t\t\t$.each($.queue(element, Type.isString(options) ? options : \"\"), function(_, item) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* The queue array can contain an \"inprogress\" string, which we skip. */\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (Type.isFunction(item)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* Pass the item's callback a flag indicating that we want to abort from the queue call.\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t (Specifically, the queue will resolve the call's associated promise then abort.) */\r\n\t\t\t\t\t\t\t\t\t\t\t\t\titem(null, true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Clearing the $.queue() array is achieved by resetting it to []. */\r\n\t\t\t\t\t\t\t\t\t\t\t$.queue(element, Type.isString(options) ? options : \"\", []);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (propertiesMap === \"stop\") {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Since \"reverse\" uses cached start values (the previous call's endValues), these values must be\r\n\t\t\t\t\t\t\t\t\t\t\t changed to reflect the final value that the elements were actually tweened to. */\r\n\t\t\t\t\t\t\t\t\t\t\t/* Note: If only queue:false/queue:\"custom\" animations are currently running on an element, it won't have a tweensContainer\r\n\t\t\t\t\t\t\t\t\t\t\t object. Also, queue:false/queue:\"custom\" animations can't be reversed. */\r\n\t\t\t\t\t\t\t\t\t\t\tvar data = Data(element);\r\n\t\t\t\t\t\t\t\t\t\t\tif (data && data.tweensContainer && (queueName === true || queueName === \"\")) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t$.each(data.tweensContainer, function(m, activeTween) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tactiveTween.endValue = activeTween.currentValue;\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tcallsToStop.push(i);\r\n\t\t\t\t\t\t\t\t\t\t} else if (propertiesMap === \"finish\" || propertiesMap === \"finishAll\") {\r\n\t\t\t\t\t\t\t\t\t\t\t/* To get active tweens to finish immediately, we forcefully shorten their durations to 1ms so that\r\n\t\t\t\t\t\t\t\t\t\t\t they finish upon the next rAf tick then proceed with normal call completion logic. */\r\n\t\t\t\t\t\t\t\t\t\t\tactiveCall[2].duration = 1;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Prematurely call completeCall() on each matched active call. Pass an additional flag for \"stop\" to indicate\r\n\t\t\t\t\t that the complete callback and display:none setting should be skipped since we're completing prematurely. */\r\n\t\t\t\t\tif (propertiesMap === \"stop\") {\r\n\t\t\t\t\t\t$.each(callsToStop, function(i, j) {\r\n\t\t\t\t\t\t\tcompleteCall(j, true);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\t\t\t/* Immediately resolve the promise associated with this stop call since stop runs synchronously. */\r\n\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Since we're stopping, and not proceeding with queueing, exit out of Velocity. */\r\n\t\t\t\t\treturn getChain();\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t/* Treat a non-empty plain object as a literal properties map. */\r\n\t\t\t\t\tif ($.isPlainObject(propertiesMap) && !Type.isEmptyObject(propertiesMap)) {\r\n\t\t\t\t\t\taction = \"start\";\r\n\r\n\t\t\t\t\t\t/****************\r\n\t\t\t\t\t\t Redirects\r\n\t\t\t\t\t\t ****************/\r\n\r\n\t\t\t\t\t\t/* Check if a string matches a registered redirect (see Redirects above). */\r\n\t\t\t\t\t} else if (Type.isString(propertiesMap) && Velocity.Redirects[propertiesMap]) {\r\n\t\t\t\t\t\topts = $.extend({}, options);\r\n\r\n\t\t\t\t\t\tvar durationOriginal = opts.duration,\r\n\t\t\t\t\t\t\t\tdelayOriginal = opts.delay || 0;\r\n\r\n\t\t\t\t\t\t/* If the backwards option was passed in, reverse the element set so that elements animate from the last to the first. */\r\n\t\t\t\t\t\tif (opts.backwards === true) {\r\n\t\t\t\t\t\t\telements = $.extend(true, [], elements).reverse();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Individually trigger the redirect for each element in the set to prevent users from having to handle iteration logic in their redirect. */\r\n\t\t\t\t\t\t$.each(elements, function(elementIndex, element) {\r\n\t\t\t\t\t\t\t/* If the stagger option was passed in, successively delay each element by the stagger value (in ms). Retain the original delay value. */\r\n\t\t\t\t\t\t\tif (parseFloat(opts.stagger)) {\r\n\t\t\t\t\t\t\t\topts.delay = delayOriginal + (parseFloat(opts.stagger) * elementIndex);\r\n\t\t\t\t\t\t\t} else if (Type.isFunction(opts.stagger)) {\r\n\t\t\t\t\t\t\t\topts.delay = delayOriginal + opts.stagger.call(element, elementIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If the drag option was passed in, successively increase/decrease (depending on the presense of opts.backwards)\r\n\t\t\t\t\t\t\t the duration of each element's animation, using floors to prevent producing very short durations. */\r\n\t\t\t\t\t\t\tif (opts.drag) {\r\n\t\t\t\t\t\t\t\t/* Default the duration of UI pack effects (callouts and transitions) to 1000ms instead of the usual default duration of 400ms. */\r\n\t\t\t\t\t\t\t\topts.duration = parseFloat(durationOriginal) || (/^(callout|transition)/.test(propertiesMap) ? 1000 : DURATION_DEFAULT);\r\n\r\n\t\t\t\t\t\t\t\t/* For each element, take the greater duration of: A) animation completion percentage relative to the original duration,\r\n\t\t\t\t\t\t\t\t B) 75% of the original duration, or C) a 200ms fallback (in case duration is already set to a low value).\r\n\t\t\t\t\t\t\t\t The end result is a baseline of 75% of the redirect's duration that increases/decreases as the end of the element set is approached. */\r\n\t\t\t\t\t\t\t\topts.duration = Math.max(opts.duration * (opts.backwards ? 1 - elementIndex / elementsLength : (elementIndex + 1) / elementsLength), opts.duration * 0.75, 200);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Pass in the call's opts object so that the redirect can optionally extend it. It defaults to an empty object instead of null to\r\n\t\t\t\t\t\t\t reduce the opts checking logic required inside the redirect. */\r\n\t\t\t\t\t\t\tVelocity.Redirects[propertiesMap].call(element, element, opts || {}, elementIndex, elementsLength, elements, promiseData.promise ? promiseData : undefined);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t/* Since the animation logic resides within the redirect's own code, abort the remainder of this call.\r\n\t\t\t\t\t\t (The performance overhead up to this point is virtually non-existant.) */\r\n\t\t\t\t\t\t/* Note: The jQuery call chain is kept intact by returning the complete element set. */\r\n\t\t\t\t\t\treturn getChain();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar abortError = \"Velocity: First argument (\" + propertiesMap + \") was not a property map, a known action, or a registered redirect. Aborting.\";\r\n\r\n\t\t\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\t\t\tpromiseData.rejecter(new Error(abortError));\r\n\t\t\t\t\t\t} else if (window.console) {\r\n\t\t\t\t\t\t\tconsole.log(abortError);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn getChain();\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/**************************\r\n\t\t\t Call-Wide Variables\r\n\t\t\t **************************/\r\n\r\n\t\t\t/* A container for CSS unit conversion ratios (e.g. %, rem, and em ==> px) that is used to cache ratios across all elements\r\n\t\t\t being animated in a single Velocity call. Calculating unit ratios necessitates DOM querying and updating, and is therefore\r\n\t\t\t avoided (via caching) wherever possible. This container is call-wide instead of page-wide to avoid the risk of using stale\r\n\t\t\t conversion metrics across Velocity animations that are not immediately consecutively chained. */\r\n\t\t\tvar callUnitConversionData = {\r\n\t\t\t\tlastParent: null,\r\n\t\t\t\tlastPosition: null,\r\n\t\t\t\tlastFontSize: null,\r\n\t\t\t\tlastPercentToPxWidth: null,\r\n\t\t\t\tlastPercentToPxHeight: null,\r\n\t\t\t\tlastEmToPx: null,\r\n\t\t\t\tremToPx: null,\r\n\t\t\t\tvwToPx: null,\r\n\t\t\t\tvhToPx: null\r\n\t\t\t};\r\n\r\n\t\t\t/* A container for all the ensuing tween data and metadata associated with this call. This container gets pushed to the page-wide\r\n\t\t\t Velocity.State.calls array that is processed during animation ticking. */\r\n\t\t\tvar call = [];\r\n\r\n\t\t\t/************************\r\n\t\t\t Element Processing\r\n\t\t\t ************************/\r\n\r\n\t\t\t/* Element processing consists of three parts -- data processing that cannot go stale and data processing that *can* go stale (i.e. third-party style modifications):\r\n\t\t\t 1) Pre-Queueing: Element-wide variables, including the element's data storage, are instantiated. Call options are prepared. If triggered, the Stop action is executed.\r\n\t\t\t 2) Queueing: The logic that runs once this call has reached its point of execution in the element's $.queue() stack. Most logic is placed here to avoid risking it becoming stale.\r\n\t\t\t 3) Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container.\r\n\t\t\t `elementArrayIndex` allows passing index of the element in the original array to value functions.\r\n\t\t\t If `elementsIndex` were used instead the index would be determined by the elements' per-element queue.\r\n\t\t\t */\r\n\t\t\tfunction processElement(element, elementArrayIndex) {\r\n\r\n\t\t\t\t/*************************\r\n\t\t\t\t Part I: Pre-Queueing\r\n\t\t\t\t *************************/\r\n\r\n\t\t\t\t/***************************\r\n\t\t\t\t Element-Wide Variables\r\n\t\t\t\t ***************************/\r\n\r\n\t\t\t\tvar /* The runtime opts object is the extension of the current call's options and Velocity's page-wide option defaults. */\r\n\t\t\t\t\t\topts = $.extend({}, Velocity.defaults, options),\r\n\t\t\t\t\t\t/* A container for the processed data associated with each property in the propertyMap.\r\n\t\t\t\t\t\t (Each property in the map produces its own \"tween\".) */\r\n\t\t\t\t\t\ttweensContainer = {},\r\n\t\t\t\t\t\telementUnitConversionData;\r\n\r\n\t\t\t\t/******************\r\n\t\t\t\t Element Init\r\n\t\t\t\t ******************/\r\n\r\n\t\t\t\tif (Data(element) === undefined) {\r\n\t\t\t\t\tVelocity.init(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/******************\r\n\t\t\t\t Option: Delay\r\n\t\t\t\t ******************/\r\n\r\n\t\t\t\t/* Since queue:false doesn't respect the item's existing queue, we avoid injecting its delay here (it's set later on). */\r\n\t\t\t\t/* Note: Velocity rolls its own delay function since jQuery doesn't have a utility alias for $.fn.delay()\r\n\t\t\t\t (and thus requires jQuery element creation, which we avoid since its overhead includes DOM querying). */\r\n\t\t\t\tif (parseFloat(opts.delay) && opts.queue !== false) {\r\n\t\t\t\t\t$.queue(element, opts.queue, function(next, clearQueue) {\r\n\t\t\t\t\t\tif (clearQueue === true) {\r\n\t\t\t\t\t\t\t/* Do not continue with animation queueing. */\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* This is a flag used to indicate to the upcoming completeCall() function that this queue entry was initiated by Velocity. See completeCall() for further details. */\r\n\t\t\t\t\t\tVelocity.velocityQueueEntryFlag = true;\r\n\r\n\t\t\t\t\t\t/* The ensuing queue item (which is assigned to the \"next\" argument that $.queue() automatically passes in) will be triggered after a setTimeout delay.\r\n\t\t\t\t\t\t The setTimeout is stored so that it can be subjected to clearTimeout() if this animation is prematurely stopped via Velocity's \"stop\" command, and\r\n\t\t\t\t\t\t delayBegin/delayTime is used to ensure we can \"pause\" and \"resume\" a tween that is still mid-delay. */\r\n\r\n\t\t\t\t\t\t/* Temporarily store delayed elements to facilite access for global pause/resume */\r\n\t\t\t\t\t\tvar callIndex = Velocity.State.delayedElements.count++;\r\n\t\t\t\t\t\tVelocity.State.delayedElements[callIndex] = element;\r\n\r\n\t\t\t\t\t\tvar delayComplete = (function(index) {\r\n\t\t\t\t\t\t\treturn function() {\r\n\t\t\t\t\t\t\t\t/* Clear the temporary element */\r\n\t\t\t\t\t\t\t\tVelocity.State.delayedElements[index] = false;\r\n\r\n\t\t\t\t\t\t\t\t/* Finally, issue the call */\r\n\t\t\t\t\t\t\t\tnext();\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})(callIndex);\r\n\r\n\r\n\t\t\t\t\t\tData(element).delayBegin = (new Date()).getTime();\r\n\t\t\t\t\t\tData(element).delay = parseFloat(opts.delay);\r\n\t\t\t\t\t\tData(element).delayTimer = {\r\n\t\t\t\t\t\t\tsetTimeout: setTimeout(next, parseFloat(opts.delay)),\r\n\t\t\t\t\t\t\tnext: delayComplete\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************\r\n\t\t\t\t Option: Duration\r\n\t\t\t\t *********************/\r\n\r\n\t\t\t\t/* Support for jQuery's named durations. */\r\n\t\t\t\tswitch (opts.duration.toString().toLowerCase()) {\r\n\t\t\t\t\tcase \"fast\":\r\n\t\t\t\t\t\topts.duration = 200;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"normal\":\r\n\t\t\t\t\t\topts.duration = DURATION_DEFAULT;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"slow\":\r\n\t\t\t\t\t\topts.duration = 600;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t/* Remove the potential \"ms\" suffix and default to 1 if the user is attempting to set a duration of 0 (in order to produce an immediate style change). */\r\n\t\t\t\t\t\topts.duration = parseFloat(opts.duration) || 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/************************\r\n\t\t\t\t Global Option: Mock\r\n\t\t\t\t ************************/\r\n\r\n\t\t\t\tif (Velocity.mock !== false) {\r\n\t\t\t\t\t/* In mock mode, all animations are forced to 1ms so that they occur immediately upon the next rAF tick.\r\n\t\t\t\t\t Alternatively, a multiplier can be passed in to time remap all delays and durations. */\r\n\t\t\t\t\tif (Velocity.mock === true) {\r\n\t\t\t\t\t\topts.duration = opts.delay = 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\topts.duration *= parseFloat(Velocity.mock) || 1;\r\n\t\t\t\t\t\topts.delay *= parseFloat(Velocity.mock) || 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*******************\r\n\t\t\t\t Option: Easing\r\n\t\t\t\t *******************/\r\n\r\n\t\t\t\topts.easing = getEasing(opts.easing, opts.duration);\r\n\r\n\t\t\t\t/**********************\r\n\t\t\t\t Option: Callbacks\r\n\t\t\t\t **********************/\r\n\r\n\t\t\t\t/* Callbacks must functions. Otherwise, default to null. */\r\n\t\t\t\tif (opts.begin && !Type.isFunction(opts.begin)) {\r\n\t\t\t\t\topts.begin = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.progress && !Type.isFunction(opts.progress)) {\r\n\t\t\t\t\topts.progress = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.complete && !Type.isFunction(opts.complete)) {\r\n\t\t\t\t\topts.complete = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************************\r\n\t\t\t\t Option: Display & Visibility\r\n\t\t\t\t *********************************/\r\n\r\n\t\t\t\t/* Refer to Velocity's documentation (VelocityJS.org/#displayAndVisibility) for a description of the display and visibility options' behavior. */\r\n\t\t\t\t/* Note: We strictly check for undefined instead of falsiness because display accepts an empty string value. */\r\n\t\t\t\tif (opts.display !== undefined && opts.display !== null) {\r\n\t\t\t\t\topts.display = opts.display.toString().toLowerCase();\r\n\r\n\t\t\t\t\t/* Users can pass in a special \"auto\" value to instruct Velocity to set the element to its default display value. */\r\n\t\t\t\t\tif (opts.display === \"auto\") {\r\n\t\t\t\t\t\topts.display = Velocity.CSS.Values.getDisplayType(element);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.visibility !== undefined && opts.visibility !== null) {\r\n\t\t\t\t\topts.visibility = opts.visibility.toString().toLowerCase();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/**********************\r\n\t\t\t\t Option: mobileHA\r\n\t\t\t\t **********************/\r\n\r\n\t\t\t\t/* When set to true, and if this is a mobile device, mobileHA automatically enables hardware acceleration (via a null transform hack)\r\n\t\t\t\t on animating elements. HA is removed from the element at the completion of its animation. */\r\n\t\t\t\t/* Note: Android Gingerbread doesn't support HA. If a null transform hack (mobileHA) is in fact set, it will prevent other tranform subproperties from taking effect. */\r\n\t\t\t\t/* Note: You can read more about the use of mobileHA in Velocity's documentation: VelocityJS.org/#mobileHA. */\r\n\t\t\t\topts.mobileHA = (opts.mobileHA && Velocity.State.isMobile && !Velocity.State.isGingerbread);\r\n\r\n\t\t\t\t/***********************\r\n\t\t\t\t Part II: Queueing\r\n\t\t\t\t ***********************/\r\n\r\n\t\t\t\t/* When a set of elements is targeted by a Velocity call, the set is broken up and each element has the current Velocity call individually queued onto it.\r\n\t\t\t\t In this way, each element's existing queue is respected; some elements may already be animating and accordingly should not have this current Velocity call triggered immediately. */\r\n\t\t\t\t/* In each queue, tween data is processed for each animating property then pushed onto the call-wide calls array. When the last element in the set has had its tweens processed,\r\n\t\t\t\t the call array is pushed to Velocity.State.calls for live processing by the requestAnimationFrame tick. */\r\n\t\t\t\tfunction buildQueue(next) {\r\n\t\t\t\t\tvar data, lastTweensContainer;\r\n\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Option: Begin\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t/* The begin callback is fired once per call -- not once per elemenet -- and is passed the full raw DOM element set as both its context and its first argument. */\r\n\t\t\t\t\tif (opts.begin && elementsIndex === 0) {\r\n\t\t\t\t\t\t/* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\topts.begin.call(elements, elements);\r\n\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t\t\t}, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/*****************************************\r\n\t\t\t\t\t Tween Data Construction (for Scroll)\r\n\t\t\t\t\t *****************************************/\r\n\r\n\t\t\t\t\t/* Note: In order to be subjected to chaining and animation options, scroll's tweening is routed through Velocity as if it were a standard CSS property animation. */\r\n\t\t\t\t\tif (action === \"scroll\") {\r\n\t\t\t\t\t\t/* The scroll action uniquely takes an optional \"offset\" option -- specified in pixels -- that offsets the targeted scroll position. */\r\n\t\t\t\t\t\tvar scrollDirection = (/^x$/i.test(opts.axis) ? \"Left\" : \"Top\"),\r\n\t\t\t\t\t\t\t\tscrollOffset = parseFloat(opts.offset) || 0,\r\n\t\t\t\t\t\t\t\tscrollPositionCurrent,\r\n\t\t\t\t\t\t\t\tscrollPositionCurrentAlternate,\r\n\t\t\t\t\t\t\t\tscrollPositionEnd;\r\n\r\n\t\t\t\t\t\t/* Scroll also uniquely takes an optional \"container\" option, which indicates the parent element that should be scrolled --\r\n\t\t\t\t\t\t as opposed to the browser window itself. This is useful for scrolling toward an element that's inside an overflowing parent element. */\r\n\t\t\t\t\t\tif (opts.container) {\r\n\t\t\t\t\t\t\t/* Ensure that either a jQuery object or a raw DOM element was passed in. */\r\n\t\t\t\t\t\t\tif (Type.isWrapped(opts.container) || Type.isNode(opts.container)) {\r\n\t\t\t\t\t\t\t\t/* Extract the raw DOM element from the jQuery wrapper. */\r\n\t\t\t\t\t\t\t\topts.container = opts.container[0] || opts.container;\r\n\t\t\t\t\t\t\t\t/* Note: Unlike other properties in Velocity, the browser's scroll position is never cached since it so frequently changes\r\n\t\t\t\t\t\t\t\t (due to the user's natural interaction with the page). */\r\n\t\t\t\t\t\t\t\tscrollPositionCurrent = opts.container[\"scroll\" + scrollDirection]; /* GET */\r\n\r\n\t\t\t\t\t\t\t\t/* $.position() values are relative to the container's currently viewable area (without taking into account the container's true dimensions\r\n\t\t\t\t\t\t\t\t -- say, for example, if the container was not overflowing). Thus, the scroll end value is the sum of the child element's position *and*\r\n\t\t\t\t\t\t\t\t the scroll container's current scroll position. */\r\n\t\t\t\t\t\t\t\tscrollPositionEnd = (scrollPositionCurrent + $(element).position()[scrollDirection.toLowerCase()]) + scrollOffset; /* GET */\r\n\t\t\t\t\t\t\t\t/* If a value other than a jQuery object or a raw DOM element was passed in, default to null so that this option is ignored. */\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\topts.container = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t/* If the window itself is being scrolled -- not a containing element -- perform a live scroll position lookup using\r\n\t\t\t\t\t\t\t the appropriate cached property names (which differ based on browser type). */\r\n\t\t\t\t\t\t\tscrollPositionCurrent = Velocity.State.scrollAnchor[Velocity.State[\"scrollProperty\" + scrollDirection]]; /* GET */\r\n\t\t\t\t\t\t\t/* When scrolling the browser window, cache the alternate axis's current value since window.scrollTo() doesn't let us change only one value at a time. */\r\n\t\t\t\t\t\t\tscrollPositionCurrentAlternate = Velocity.State.scrollAnchor[Velocity.State[\"scrollProperty\" + (scrollDirection === \"Left\" ? \"Top\" : \"Left\")]]; /* GET */\r\n\r\n\t\t\t\t\t\t\t/* Unlike $.position(), $.offset() values are relative to the browser window's true dimensions -- not merely its currently viewable area --\r\n\t\t\t\t\t\t\t and therefore end values do not need to be compounded onto current values. */\r\n\t\t\t\t\t\t\tscrollPositionEnd = $(element).offset()[scrollDirection.toLowerCase()] + scrollOffset; /* GET */\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Since there's only one format that scroll's associated tweensContainer can take, we create it manually. */\r\n\t\t\t\t\t\ttweensContainer = {\r\n\t\t\t\t\t\t\tscroll: {\r\n\t\t\t\t\t\t\t\trootPropertyValue: false,\r\n\t\t\t\t\t\t\t\tstartValue: scrollPositionCurrent,\r\n\t\t\t\t\t\t\t\tcurrentValue: scrollPositionCurrent,\r\n\t\t\t\t\t\t\t\tendValue: scrollPositionEnd,\r\n\t\t\t\t\t\t\t\tunitType: \"\",\r\n\t\t\t\t\t\t\t\teasing: opts.easing,\r\n\t\t\t\t\t\t\t\tscrollData: {\r\n\t\t\t\t\t\t\t\t\tcontainer: opts.container,\r\n\t\t\t\t\t\t\t\t\tdirection: scrollDirection,\r\n\t\t\t\t\t\t\t\t\talternateValue: scrollPositionCurrentAlternate\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\telement: element\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\tconsole.log(\"tweensContainer (scroll): \", tweensContainer.scroll, element);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/******************************************\r\n\t\t\t\t\t\t Tween Data Construction (for Reverse)\r\n\t\t\t\t\t\t ******************************************/\r\n\r\n\t\t\t\t\t\t/* Reverse acts like a \"start\" action in that a property map is animated toward. The only difference is\r\n\t\t\t\t\t\t that the property map used for reverse is the inverse of the map used in the previous call. Thus, we manipulate\r\n\t\t\t\t\t\t the previous call to construct our new map: use the previous map's end values as our new map's start values. Copy over all other data. */\r\n\t\t\t\t\t\t/* Note: Reverse can be directly called via the \"reverse\" parameter, or it can be indirectly triggered via the loop option. (Loops are composed of multiple reverses.) */\r\n\t\t\t\t\t\t/* Note: Reverse calls do not need to be consecutively chained onto a currently-animating element in order to operate on cached values;\r\n\t\t\t\t\t\t there is no harm to reverse being called on a potentially stale data cache since reverse's behavior is simply defined\r\n\t\t\t\t\t\t as reverting to the element's values as they were prior to the previous *Velocity* call. */\r\n\t\t\t\t\t} else if (action === \"reverse\") {\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t\t\t/* Abort if there is no prior animation data to reverse to. */\r\n\t\t\t\t\t\tif (!data) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!data.tweensContainer) {\r\n\t\t\t\t\t\t\t/* Dequeue the element so that this queue entry releases itself immediately, allowing subsequent queue entries to run. */\r\n\t\t\t\t\t\t\t$.dequeue(element, opts.queue);\r\n\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t/*********************\r\n\t\t\t\t\t\t\t Options Parsing\r\n\t\t\t\t\t\t\t *********************/\r\n\r\n\t\t\t\t\t\t\t/* If the element was hidden via the display option in the previous call,\r\n\t\t\t\t\t\t\t revert display to \"auto\" prior to reversal so that the element is visible again. */\r\n\t\t\t\t\t\t\tif (data.opts.display === \"none\") {\r\n\t\t\t\t\t\t\t\tdata.opts.display = \"auto\";\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (data.opts.visibility === \"hidden\") {\r\n\t\t\t\t\t\t\t\tdata.opts.visibility = \"visible\";\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If the loop option was set in the previous call, disable it so that \"reverse\" calls aren't recursively generated.\r\n\t\t\t\t\t\t\t Further, remove the previous call's callback options; typically, users do not want these to be refired. */\r\n\t\t\t\t\t\t\tdata.opts.loop = false;\r\n\t\t\t\t\t\t\tdata.opts.begin = null;\r\n\t\t\t\t\t\t\tdata.opts.complete = null;\r\n\r\n\t\t\t\t\t\t\t/* Since we're extending an opts object that has already been extended with the defaults options object,\r\n\t\t\t\t\t\t\t we remove non-explicitly-defined properties that are auto-assigned values. */\r\n\t\t\t\t\t\t\tif (!options.easing) {\r\n\t\t\t\t\t\t\t\tdelete opts.easing;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (!options.duration) {\r\n\t\t\t\t\t\t\t\tdelete opts.duration;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* The opts object used for reversal is an extension of the options object optionally passed into this\r\n\t\t\t\t\t\t\t reverse call plus the options used in the previous Velocity call. */\r\n\t\t\t\t\t\t\topts = $.extend({}, data.opts, opts);\r\n\r\n\t\t\t\t\t\t\t/*************************************\r\n\t\t\t\t\t\t\t Tweens Container Reconstruction\r\n\t\t\t\t\t\t\t *************************************/\r\n\r\n\t\t\t\t\t\t\t/* Create a deepy copy (indicated via the true flag) of the previous call's tweensContainer. */\r\n\t\t\t\t\t\t\tlastTweensContainer = $.extend(true, {}, data ? data.tweensContainer : null);\r\n\r\n\t\t\t\t\t\t\t/* Manipulate the previous tweensContainer by replacing its end values and currentValues with its start values. */\r\n\t\t\t\t\t\t\tfor (var lastTween in lastTweensContainer) {\r\n\t\t\t\t\t\t\t\t/* In addition to tween data, tweensContainers contain an element property that we ignore here. */\r\n\t\t\t\t\t\t\t\tif (lastTweensContainer.hasOwnProperty(lastTween) && lastTween !== \"element\") {\r\n\t\t\t\t\t\t\t\t\tvar lastStartValue = lastTweensContainer[lastTween].startValue;\r\n\r\n\t\t\t\t\t\t\t\t\tlastTweensContainer[lastTween].startValue = lastTweensContainer[lastTween].currentValue = lastTweensContainer[lastTween].endValue;\r\n\t\t\t\t\t\t\t\t\tlastTweensContainer[lastTween].endValue = lastStartValue;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Easing is the only option that embeds into the individual tween data (since it can be defined on a per-property basis).\r\n\t\t\t\t\t\t\t\t\t Accordingly, every property's easing value must be updated when an options object is passed in with a reverse call.\r\n\t\t\t\t\t\t\t\t\t The side effect of this extensibility is that all per-property easing values are forcefully reset to the new value. */\r\n\t\t\t\t\t\t\t\t\tif (!Type.isEmptyObject(options)) {\r\n\t\t\t\t\t\t\t\t\t\tlastTweensContainer[lastTween].easing = opts.easing;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"reverse tweensContainer (\" + lastTween + \"): \" + JSON.stringify(lastTweensContainer[lastTween]), element);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttweensContainer = lastTweensContainer;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/*****************************************\r\n\t\t\t\t\t\t Tween Data Construction (for Start)\r\n\t\t\t\t\t\t *****************************************/\r\n\r\n\t\t\t\t\t} else if (action === \"start\") {\r\n\r\n\t\t\t\t\t\t/*************************\r\n\t\t\t\t\t\t Value Transferring\r\n\t\t\t\t\t\t *************************/\r\n\r\n\t\t\t\t\t\t/* If this queue entry follows a previous Velocity-initiated queue entry *and* if this entry was created\r\n\t\t\t\t\t\t while the element was in the process of being animated by Velocity, then this current call is safe to use\r\n\t\t\t\t\t\t the end values from the prior call as its start values. Velocity attempts to perform this value transfer\r\n\t\t\t\t\t\t process whenever possible in order to avoid requerying the DOM. */\r\n\t\t\t\t\t\t/* If values aren't transferred from a prior call and start values were not forcefed by the user (more on this below),\r\n\t\t\t\t\t\t then the DOM is queried for the element's current values as a last resort. */\r\n\t\t\t\t\t\t/* Note: Conversely, animation reversal (and looping) *always* perform inter-call value transfers; they never requery the DOM. */\r\n\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t\t\t/* The per-element isAnimating flag is used to indicate whether it's safe (i.e. the data isn't stale)\r\n\t\t\t\t\t\t to transfer over end values to use as start values. If it's set to true and there is a previous\r\n\t\t\t\t\t\t Velocity call to pull values from, do so. */\r\n\t\t\t\t\t\tif (data && data.tweensContainer && data.isAnimating === true) {\r\n\t\t\t\t\t\t\tlastTweensContainer = data.tweensContainer;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t Tween Data Calculation\r\n\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t/* This function parses property data and defaults endValue, easing, and startValue as appropriate. */\r\n\t\t\t\t\t\t/* Property map values can either take the form of 1) a single value representing the end value,\r\n\t\t\t\t\t\t or 2) an array in the form of [ endValue, [, easing] [, startValue] ].\r\n\t\t\t\t\t\t The optional third parameter is a forcefed startValue to be used instead of querying the DOM for\r\n\t\t\t\t\t\t the element's current value. Read Velocity's docmentation to learn more about forcefeeding: VelocityJS.org/#forcefeeding */\r\n\t\t\t\t\t\tvar parsePropertyValue = function(valueData, skipResolvingEasing) {\r\n\t\t\t\t\t\t\tvar endValue, easing, startValue;\r\n\r\n\t\t\t\t\t\t\t/* If we have a function as the main argument then resolve it first, in case it returns an array that needs to be split */\r\n\t\t\t\t\t\t\tif (Type.isFunction(valueData)) {\r\n\t\t\t\t\t\t\t\tvalueData = valueData.call(element, elementArrayIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Handle the array format, which can be structured as one of three potential overloads:\r\n\t\t\t\t\t\t\t A) [ endValue, easing, startValue ], B) [ endValue, easing ], or C) [ endValue, startValue ] */\r\n\t\t\t\t\t\t\tif (Type.isArray(valueData)) {\r\n\t\t\t\t\t\t\t\t/* endValue is always the first item in the array. Don't bother validating endValue's value now\r\n\t\t\t\t\t\t\t\t since the ensuing property cycling logic does that. */\r\n\t\t\t\t\t\t\t\tendValue = valueData[0];\r\n\r\n\t\t\t\t\t\t\t\t/* Two-item array format: If the second item is a number, function, or hex string, treat it as a\r\n\t\t\t\t\t\t\t\t start value since easings can only be non-hex strings or arrays. */\r\n\t\t\t\t\t\t\t\tif ((!Type.isArray(valueData[1]) && /^[\\d-]/.test(valueData[1])) || Type.isFunction(valueData[1]) || CSS.RegEx.isHex.test(valueData[1])) {\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[1];\r\n\t\t\t\t\t\t\t\t\t/* Two or three-item array: If the second item is a non-hex string easing name or an array, treat it as an easing. */\r\n\t\t\t\t\t\t\t\t} else if ((Type.isString(valueData[1]) && !CSS.RegEx.isHex.test(valueData[1]) && Velocity.Easings[valueData[1]]) || Type.isArray(valueData[1])) {\r\n\t\t\t\t\t\t\t\t\teasing = skipResolvingEasing ? valueData[1] : getEasing(valueData[1], opts.duration);\r\n\r\n\t\t\t\t\t\t\t\t\t/* Don't bother validating startValue's value now since the ensuing property cycling logic inherently does that. */\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[2];\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[1] || valueData[2];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/* Handle the single-value format. */\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tendValue = valueData;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Default to the call's easing if a per-property easing type was not defined. */\r\n\t\t\t\t\t\t\tif (!skipResolvingEasing) {\r\n\t\t\t\t\t\t\t\teasing = easing || opts.easing;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If functions were passed in as values, pass the function the current element as its context,\r\n\t\t\t\t\t\t\t plus the element's index and the element set's size as arguments. Then, assign the returned value. */\r\n\t\t\t\t\t\t\tif (Type.isFunction(endValue)) {\r\n\t\t\t\t\t\t\t\tendValue = endValue.call(element, elementArrayIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (Type.isFunction(startValue)) {\r\n\t\t\t\t\t\t\t\tstartValue = startValue.call(element, elementArrayIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Allow startValue to be left as undefined to indicate to the ensuing code that its value was not forcefed. */\r\n\t\t\t\t\t\t\treturn [endValue || 0, easing, startValue];\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tvar fixPropertyValue = function(property, valueData) {\r\n\t\t\t\t\t\t\t/* In case this property is a hook, there are circumstances where we will intend to work on the hook's root property and not the hooked subproperty. */\r\n\t\t\t\t\t\t\tvar rootProperty = CSS.Hooks.getRoot(property),\r\n\t\t\t\t\t\t\t\t\trootPropertyValue = false,\r\n\t\t\t\t\t\t\t\t\t/* Parse out endValue, easing, and startValue from the property's data. */\r\n\t\t\t\t\t\t\t\t\tendValue = valueData[0],\r\n\t\t\t\t\t\t\t\t\teasing = valueData[1],\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[2],\r\n\t\t\t\t\t\t\t\t\tpattern;\r\n\r\n\t\t\t\t\t\t\t/**************************\r\n\t\t\t\t\t\t\t Start Value Sourcing\r\n\t\t\t\t\t\t\t **************************/\r\n\r\n\t\t\t\t\t\t\t/* Other than for the dummy tween property, properties that are not supported by the browser (and do not have an associated normalization) will\r\n\t\t\t\t\t\t\t inherently produce no style changes when set, so they are skipped in order to decrease animation tick overhead.\r\n\t\t\t\t\t\t\t Property support is determined via prefixCheck(), which returns a false flag when no supported is detected. */\r\n\t\t\t\t\t\t\t/* Note: Since SVG elements have some of their properties directly applied as HTML attributes,\r\n\t\t\t\t\t\t\t there is no way to check for their explicit browser support, and so we skip skip this check for them. */\r\n\t\t\t\t\t\t\tif ((!data || !data.isSVG) && rootProperty !== \"tween\" && CSS.Names.prefixCheck(rootProperty)[1] === false && CSS.Normalizations.registered[rootProperty] === undefined) {\r\n\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Skipping [\" + rootProperty + \"] due to a lack of browser support.\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If the display option is being set to a non-\"none\" (e.g. \"block\") and opacity (filter on IE<=8) is being\r\n\t\t\t\t\t\t\t animated to an endValue of non-zero, the user's intention is to fade in from invisible, thus we forcefeed opacity\r\n\t\t\t\t\t\t\t a startValue of 0 if its startValue hasn't already been sourced by value transferring or prior forcefeeding. */\r\n\t\t\t\t\t\t\tif (((opts.display !== undefined && opts.display !== null && opts.display !== \"none\") || (opts.visibility !== undefined && opts.visibility !== \"hidden\")) && /opacity|filter/.test(property) && !startValue && endValue !== 0) {\r\n\t\t\t\t\t\t\t\tstartValue = 0;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If values have been transferred from the previous Velocity call, extract the endValue and rootPropertyValue\r\n\t\t\t\t\t\t\t for all of the current call's properties that were *also* animated in the previous call. */\r\n\t\t\t\t\t\t\t/* Note: Value transferring can optionally be disabled by the user via the _cacheValues option. */\r\n\t\t\t\t\t\t\tif (opts._cacheValues && lastTweensContainer && lastTweensContainer[property]) {\r\n\t\t\t\t\t\t\t\tif (startValue === undefined) {\r\n\t\t\t\t\t\t\t\t\tstartValue = lastTweensContainer[property].endValue + lastTweensContainer[property].unitType;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* The previous call's rootPropertyValue is extracted from the element's data cache since that's the\r\n\t\t\t\t\t\t\t\t instance of rootPropertyValue that gets freshly updated by the tweening process, whereas the rootPropertyValue\r\n\t\t\t\t\t\t\t\t attached to the incoming lastTweensContainer is equal to the root property's value prior to any tweening. */\r\n\t\t\t\t\t\t\t\trootPropertyValue = data.rootPropertyValueCache[rootProperty];\r\n\t\t\t\t\t\t\t\t/* If values were not transferred from a previous Velocity call, query the DOM as needed. */\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t/* Handle hooked properties. */\r\n\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\t\t\tif (startValue === undefined) {\r\n\t\t\t\t\t\t\t\t\t\trootPropertyValue = CSS.getPropertyValue(element, rootProperty); /* GET */\r\n\t\t\t\t\t\t\t\t\t\t/* Note: The following getPropertyValue() call does not actually trigger a DOM query;\r\n\t\t\t\t\t\t\t\t\t\t getPropertyValue() will extract the hook from rootPropertyValue. */\r\n\t\t\t\t\t\t\t\t\t\tstartValue = CSS.getPropertyValue(element, property, rootPropertyValue);\r\n\t\t\t\t\t\t\t\t\t\t/* If startValue is already defined via forcefeeding, do not query the DOM for the root property's value;\r\n\t\t\t\t\t\t\t\t\t\t just grab rootProperty's zero-value template from CSS.Hooks. This overwrites the element's actual\r\n\t\t\t\t\t\t\t\t\t\t root property value (if one is set), but this is acceptable since the primary reason users forcefeed is\r\n\t\t\t\t\t\t\t\t\t\t to avoid DOM queries, and thus we likewise avoid querying the DOM for the root property's value. */\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t/* Grab this hook's zero-value template, e.g. \"0px 0px 0px black\". */\r\n\t\t\t\t\t\t\t\t\t\trootPropertyValue = CSS.Hooks.templates[rootProperty][1];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t/* Handle non-hooked properties that haven't already been defined via forcefeeding. */\r\n\t\t\t\t\t\t\t\t} else if (startValue === undefined) {\r\n\t\t\t\t\t\t\t\t\tstartValue = CSS.getPropertyValue(element, property); /* GET */\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/**************************\r\n\t\t\t\t\t\t\t Value Data Extraction\r\n\t\t\t\t\t\t\t **************************/\r\n\r\n\t\t\t\t\t\t\tvar separatedValue,\r\n\t\t\t\t\t\t\t\t\tendValueUnitType,\r\n\t\t\t\t\t\t\t\t\tstartValueUnitType,\r\n\t\t\t\t\t\t\t\t\toperator = false;\r\n\r\n\t\t\t\t\t\t\t/* Separates a property value into its numeric value and its unit type. */\r\n\t\t\t\t\t\t\tvar separateValue = function(property, value) {\r\n\t\t\t\t\t\t\t\tvar unitType,\r\n\t\t\t\t\t\t\t\t\t\tnumericValue;\r\n\r\n\t\t\t\t\t\t\t\tnumericValue = (value || \"0\")\r\n\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t/* Match the unit type at the end of the value. */\r\n\t\t\t\t\t\t\t\t\t\t.replace(/[%A-z]+$/, function(match) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Grab the unit type. */\r\n\t\t\t\t\t\t\t\t\t\t\tunitType = match;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Strip the unit type off of value. */\r\n\t\t\t\t\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t/* If no unit type was supplied, assign one that is appropriate for this property (e.g. \"deg\" for rotateZ or \"px\" for width). */\r\n\t\t\t\t\t\t\t\tif (!unitType) {\r\n\t\t\t\t\t\t\t\t\tunitType = CSS.Values.getUnitType(property);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn [numericValue, unitType];\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tif (startValue !== endValue && Type.isString(startValue) && Type.isString(endValue)) {\r\n\t\t\t\t\t\t\t\tpattern = \"\";\r\n\t\t\t\t\t\t\t\tvar iStart = 0, // index in startValue\r\n\t\t\t\t\t\t\t\t\t\tiEnd = 0, // index in endValue\r\n\t\t\t\t\t\t\t\t\t\taStart = [], // array of startValue numbers\r\n\t\t\t\t\t\t\t\t\t\taEnd = [], // array of endValue numbers\r\n\t\t\t\t\t\t\t\t\t\tinCalc = 0, // Keep track of being inside a \"calc()\" so we don't duplicate it\r\n\t\t\t\t\t\t\t\t\t\tinRGB = 0, // Keep track of being inside an RGB as we can't use fractional values\r\n\t\t\t\t\t\t\t\t\t\tinRGBA = 0; // Keep track of being inside an RGBA as we must pass fractional for the alpha channel\r\n\r\n\t\t\t\t\t\t\t\tstartValue = CSS.Hooks.fixColors(startValue);\r\n\t\t\t\t\t\t\t\tendValue = CSS.Hooks.fixColors(endValue);\r\n\t\t\t\t\t\t\t\twhile (iStart < startValue.length && iEnd < endValue.length) {\r\n\t\t\t\t\t\t\t\t\tvar cStart = startValue[iStart],\r\n\t\t\t\t\t\t\t\t\t\t\tcEnd = endValue[iEnd];\r\n\r\n\t\t\t\t\t\t\t\t\tif (/[\\d\\.-]/.test(cStart) && /[\\d\\.-]/.test(cEnd)) {\r\n\t\t\t\t\t\t\t\t\t\tvar tStart = cStart, // temporary character buffer\r\n\t\t\t\t\t\t\t\t\t\t\t\ttEnd = cEnd, // temporary character buffer\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotStart = \".\", // Make sure we can only ever match a single dot in a decimal\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotEnd = \".\"; // Make sure we can only ever match a single dot in a decimal\r\n\r\n\t\t\t\t\t\t\t\t\t\twhile (++iStart < startValue.length) {\r\n\t\t\t\t\t\t\t\t\t\t\tcStart = startValue[iStart];\r\n\t\t\t\t\t\t\t\t\t\t\tif (cStart === dotStart) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotStart = \"..\"; // Can never match two characters\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (!/\\d/.test(cStart)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\ttStart += cStart;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\twhile (++iEnd < endValue.length) {\r\n\t\t\t\t\t\t\t\t\t\t\tcEnd = endValue[iEnd];\r\n\t\t\t\t\t\t\t\t\t\t\tif (cEnd === dotEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotEnd = \"..\"; // Can never match two characters\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (!/\\d/.test(cEnd)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\ttEnd += cEnd;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tvar uStart = CSS.Hooks.getUnit(startValue, iStart), // temporary unit type\r\n\t\t\t\t\t\t\t\t\t\t\t\tuEnd = CSS.Hooks.getUnit(endValue, iEnd); // temporary unit type\r\n\r\n\t\t\t\t\t\t\t\t\t\tiStart += uStart.length;\r\n\t\t\t\t\t\t\t\t\t\tiEnd += uEnd.length;\r\n\t\t\t\t\t\t\t\t\t\tif (uStart === uEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t// Same units\r\n\t\t\t\t\t\t\t\t\t\t\tif (tStart === tEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Same numbers, so just copy over\r\n\t\t\t\t\t\t\t\t\t\t\t\tpattern += tStart + uStart;\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Different numbers, so store them\r\n\t\t\t\t\t\t\t\t\t\t\t\tpattern += \"{\" + aStart.length + (inRGB ? \"!\" : \"\") + \"}\" + uStart;\r\n\t\t\t\t\t\t\t\t\t\t\t\taStart.push(parseFloat(tStart));\r\n\t\t\t\t\t\t\t\t\t\t\t\taEnd.push(parseFloat(tEnd));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t// Different units, so put into a \"calc(from + to)\" and animate each side to/from zero\r\n\t\t\t\t\t\t\t\t\t\t\tvar nStart = parseFloat(tStart),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnEnd = parseFloat(tEnd);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tpattern += (inCalc < 5 ? \"calc\" : \"\") + \"(\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ (nStart ? \"{\" + aStart.length + (inRGB ? \"!\" : \"\") + \"}\" : \"0\") + uStart\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ \" + \"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ (nEnd ? \"{\" + (aStart.length + (nStart ? 1 : 0)) + (inRGB ? \"!\" : \"\") + \"}\" : \"0\") + uEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ \")\";\r\n\t\t\t\t\t\t\t\t\t\t\tif (nStart) {\r\n\t\t\t\t\t\t\t\t\t\t\t\taStart.push(nStart);\r\n\t\t\t\t\t\t\t\t\t\t\t\taEnd.push(0);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (nEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t\taStart.push(0);\r\n\t\t\t\t\t\t\t\t\t\t\t\taEnd.push(nEnd);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else if (cStart === cEnd) {\r\n\t\t\t\t\t\t\t\t\t\tpattern += cStart;\r\n\t\t\t\t\t\t\t\t\t\tiStart++;\r\n\t\t\t\t\t\t\t\t\t\tiEnd++;\r\n\t\t\t\t\t\t\t\t\t\t// Keep track of being inside a calc()\r\n\t\t\t\t\t\t\t\t\t\tif (inCalc === 0 && cStart === \"c\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc === 1 && cStart === \"a\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc === 2 && cStart === \"l\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc === 3 && cStart === \"c\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc >= 4 && cStart === \"(\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\tinCalc++;\r\n\t\t\t\t\t\t\t\t\t\t} else if ((inCalc && inCalc < 5)\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc >= 4 && cStart === \")\" && --inCalc < 5) {\r\n\t\t\t\t\t\t\t\t\t\t\tinCalc = 0;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t// Keep track of being inside an rgb() / rgba()\r\n\t\t\t\t\t\t\t\t\t\tif (inRGB === 0 && cStart === \"r\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB === 1 && cStart === \"g\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB === 2 && cStart === \"b\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB === 3 && cStart === \"a\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB >= 3 && cStart === \"(\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (inRGB === 3 && cStart === \"a\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\tinRGBA = 1;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tinRGB++;\r\n\t\t\t\t\t\t\t\t\t\t} else if (inRGBA && cStart === \",\") {\r\n\t\t\t\t\t\t\t\t\t\t\tif (++inRGBA > 3) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tinRGB = inRGBA = 0;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t} else if ((inRGBA && inRGB < (inRGBA ? 5 : 4))\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB >= (inRGBA ? 4 : 3) && cStart === \")\" && --inRGB < (inRGBA ? 5 : 4)) {\r\n\t\t\t\t\t\t\t\t\t\t\tinRGB = inRGBA = 0;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tinCalc = 0;\r\n\t\t\t\t\t\t\t\t\t\t// TODO: changing units, fixing colours\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (iStart !== startValue.length || iEnd !== endValue.length) {\r\n\t\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\t\tconsole.error(\"Trying to pattern match mis-matched strings [\\\"\" + endValue + \"\\\", \\\"\" + startValue + \"\\\"]\");\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tpattern = undefined;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (pattern) {\r\n\t\t\t\t\t\t\t\t\tif (aStart.length) {\r\n\t\t\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Pattern found \\\"\" + pattern + \"\\\" -> \", aStart, aEnd, \"[\" + startValue + \",\" + endValue + \"]\");\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tstartValue = aStart;\r\n\t\t\t\t\t\t\t\t\t\tendValue = aEnd;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = startValueUnitType = \"\";\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tpattern = undefined;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (!pattern) {\r\n\t\t\t\t\t\t\t\t/* Separate startValue. */\r\n\t\t\t\t\t\t\t\tseparatedValue = separateValue(property, startValue);\r\n\t\t\t\t\t\t\t\tstartValue = separatedValue[0];\r\n\t\t\t\t\t\t\t\tstartValueUnitType = separatedValue[1];\r\n\r\n\t\t\t\t\t\t\t\t/* Separate endValue, and extract a value operator (e.g. \"+=\", \"-=\") if one exists. */\r\n\t\t\t\t\t\t\t\tseparatedValue = separateValue(property, endValue);\r\n\t\t\t\t\t\t\t\tendValue = separatedValue[0].replace(/^([+-\\/*])=/, function(match, subMatch) {\r\n\t\t\t\t\t\t\t\t\toperator = subMatch;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Strip the operator off of the value. */\r\n\t\t\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tendValueUnitType = separatedValue[1];\r\n\r\n\t\t\t\t\t\t\t\t/* Parse float values from endValue and startValue. Default to 0 if NaN is returned. */\r\n\t\t\t\t\t\t\t\tstartValue = parseFloat(startValue) || 0;\r\n\t\t\t\t\t\t\t\tendValue = parseFloat(endValue) || 0;\r\n\r\n\t\t\t\t\t\t\t\t/***************************************\r\n\t\t\t\t\t\t\t\t Property-Specific Value Conversion\r\n\t\t\t\t\t\t\t\t ***************************************/\r\n\r\n\t\t\t\t\t\t\t\t/* Custom support for properties that don't actually accept the % unit type, but where pollyfilling is trivial and relatively foolproof. */\r\n\t\t\t\t\t\t\t\tif (endValueUnitType === \"%\") {\r\n\t\t\t\t\t\t\t\t\t/* A %-value fontSize/lineHeight is relative to the parent's fontSize (as opposed to the parent's dimensions),\r\n\t\t\t\t\t\t\t\t\t which is identical to the em unit's behavior, so we piggyback off of that. */\r\n\t\t\t\t\t\t\t\t\tif (/^(fontSize|lineHeight)$/.test(property)) {\r\n\t\t\t\t\t\t\t\t\t\t/* Convert % into an em decimal value. */\r\n\t\t\t\t\t\t\t\t\t\tendValue = endValue / 100;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = \"em\";\r\n\t\t\t\t\t\t\t\t\t\t/* For scaleX and scaleY, convert the value into its decimal format and strip off the unit type. */\r\n\t\t\t\t\t\t\t\t\t} else if (/^scale/.test(property)) {\r\n\t\t\t\t\t\t\t\t\t\tendValue = endValue / 100;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = \"\";\r\n\t\t\t\t\t\t\t\t\t\t/* For RGB components, take the defined percentage of 255 and strip off the unit type. */\r\n\t\t\t\t\t\t\t\t\t} else if (/(Red|Green|Blue)$/i.test(property)) {\r\n\t\t\t\t\t\t\t\t\t\tendValue = (endValue / 100) * 255;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = \"\";\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t\t Unit Ratio Calculation\r\n\t\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t\t/* When queried, the browser returns (most) CSS property values in pixels. Therefore, if an endValue with a unit type of\r\n\t\t\t\t\t\t\t %, em, or rem is animated toward, startValue must be converted from pixels into the same unit type as endValue in order\r\n\t\t\t\t\t\t\t for value manipulation logic (increment/decrement) to proceed. Further, if the startValue was forcefed or transferred\r\n\t\t\t\t\t\t\t from a previous call, startValue may also not be in pixels. Unit conversion logic therefore consists of two steps:\r\n\t\t\t\t\t\t\t 1) Calculating the ratio of %/em/rem/vh/vw relative to pixels\r\n\t\t\t\t\t\t\t 2) Converting startValue into the same unit of measurement as endValue based on these ratios. */\r\n\t\t\t\t\t\t\t/* Unit conversion ratios are calculated by inserting a sibling node next to the target node, copying over its position property,\r\n\t\t\t\t\t\t\t setting values with the target unit type then comparing the returned pixel value. */\r\n\t\t\t\t\t\t\t/* Note: Even if only one of these unit types is being animated, all unit ratios are calculated at once since the overhead\r\n\t\t\t\t\t\t\t of batching the SETs and GETs together upfront outweights the potential overhead\r\n\t\t\t\t\t\t\t of layout thrashing caused by re-querying for uncalculated ratios for subsequently-processed properties. */\r\n\t\t\t\t\t\t\t/* Todo: Shift this logic into the calls' first tick instance so that it's synced with RAF. */\r\n\t\t\t\t\t\t\tvar calculateUnitRatios = function() {\r\n\r\n\t\t\t\t\t\t\t\t/************************\r\n\t\t\t\t\t\t\t\t Same Ratio Checks\r\n\t\t\t\t\t\t\t\t ************************/\r\n\r\n\t\t\t\t\t\t\t\t/* The properties below are used to determine whether the element differs sufficiently from this call's\r\n\t\t\t\t\t\t\t\t previously iterated element to also differ in its unit conversion ratios. If the properties match up with those\r\n\t\t\t\t\t\t\t\t of the prior element, the prior element's conversion ratios are used. Like most optimizations in Velocity,\r\n\t\t\t\t\t\t\t\t this is done to minimize DOM querying. */\r\n\t\t\t\t\t\t\t\tvar sameRatioIndicators = {\r\n\t\t\t\t\t\t\t\t\tmyParent: element.parentNode || document.body, /* GET */\r\n\t\t\t\t\t\t\t\t\tposition: CSS.getPropertyValue(element, \"position\"), /* GET */\r\n\t\t\t\t\t\t\t\t\tfontSize: CSS.getPropertyValue(element, \"fontSize\") /* GET */\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t/* Determine if the same % ratio can be used. % is based on the element's position value and its parent's width and height dimensions. */\r\n\t\t\t\t\t\t\t\t\t\tsamePercentRatio = ((sameRatioIndicators.position === callUnitConversionData.lastPosition) && (sameRatioIndicators.myParent === callUnitConversionData.lastParent)),\r\n\t\t\t\t\t\t\t\t\t\t/* Determine if the same em ratio can be used. em is relative to the element's fontSize. */\r\n\t\t\t\t\t\t\t\t\t\tsameEmRatio = (sameRatioIndicators.fontSize === callUnitConversionData.lastFontSize);\r\n\r\n\t\t\t\t\t\t\t\t/* Store these ratio indicators call-wide for the next element to compare against. */\r\n\t\t\t\t\t\t\t\tcallUnitConversionData.lastParent = sameRatioIndicators.myParent;\r\n\t\t\t\t\t\t\t\tcallUnitConversionData.lastPosition = sameRatioIndicators.position;\r\n\t\t\t\t\t\t\t\tcallUnitConversionData.lastFontSize = sameRatioIndicators.fontSize;\r\n\r\n\t\t\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t\t\t Element-Specific Units\r\n\t\t\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t\t\t/* Note: IE8 rounds to the nearest pixel when returning CSS values, thus we perform conversions using a measurement\r\n\t\t\t\t\t\t\t\t of 100 (instead of 1) to give our ratios a precision of at least 2 decimal values. */\r\n\t\t\t\t\t\t\t\tvar measurement = 100,\r\n\t\t\t\t\t\t\t\t\t\tunitRatios = {};\r\n\r\n\t\t\t\t\t\t\t\tif (!sameEmRatio || !samePercentRatio) {\r\n\t\t\t\t\t\t\t\t\tvar dummy = data && data.isSVG ? document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\") : document.createElement(\"div\");\r\n\r\n\t\t\t\t\t\t\t\t\tVelocity.init(dummy);\r\n\t\t\t\t\t\t\t\t\tsameRatioIndicators.myParent.appendChild(dummy);\r\n\r\n\t\t\t\t\t\t\t\t\t/* To accurately and consistently calculate conversion ratios, the element's cascaded overflow and box-sizing are stripped.\r\n\t\t\t\t\t\t\t\t\t Similarly, since width/height can be artificially constrained by their min-/max- equivalents, these are controlled for as well. */\r\n\t\t\t\t\t\t\t\t\t/* Note: Overflow must be also be controlled for per-axis since the overflow property overwrites its per-axis values. */\r\n\t\t\t\t\t\t\t\t\t$.each([\"overflow\", \"overflowX\", \"overflowY\"], function(i, property) {\r\n\t\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, property, \"hidden\");\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"position\", sameRatioIndicators.position);\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"fontSize\", sameRatioIndicators.fontSize);\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"boxSizing\", \"content-box\");\r\n\r\n\t\t\t\t\t\t\t\t\t/* width and height act as our proxy properties for measuring the horizontal and vertical % ratios. */\r\n\t\t\t\t\t\t\t\t\t$.each([\"minWidth\", \"maxWidth\", \"width\", \"minHeight\", \"maxHeight\", \"height\"], function(i, property) {\r\n\t\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, property, measurement + \"%\");\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t/* paddingLeft arbitrarily acts as our proxy property for the em ratio. */\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"paddingLeft\", measurement + \"em\");\r\n\r\n\t\t\t\t\t\t\t\t\t/* Divide the returned value by the measurement to get the ratio between 1% and 1px. Default to 1 since working with 0 can produce Infinite. */\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth = (parseFloat(CSS.getPropertyValue(dummy, \"width\", null, true)) || 1) / measurement; /* GET */\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight = (parseFloat(CSS.getPropertyValue(dummy, \"height\", null, true)) || 1) / measurement; /* GET */\r\n\t\t\t\t\t\t\t\t\tunitRatios.emToPx = callUnitConversionData.lastEmToPx = (parseFloat(CSS.getPropertyValue(dummy, \"paddingLeft\")) || 1) / measurement; /* GET */\r\n\r\n\t\t\t\t\t\t\t\t\tsameRatioIndicators.myParent.removeChild(dummy);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tunitRatios.emToPx = callUnitConversionData.lastEmToPx;\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth;\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t\t\t Element-Agnostic Units\r\n\t\t\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t\t\t/* Whereas % and em ratios are determined on a per-element basis, the rem unit only needs to be checked\r\n\t\t\t\t\t\t\t\t once per call since it's exclusively dependant upon document.body's fontSize. If this is the first time\r\n\t\t\t\t\t\t\t\t that calculateUnitRatios() is being run during this call, remToPx will still be set to its default value of null,\r\n\t\t\t\t\t\t\t\t so we calculate it now. */\r\n\t\t\t\t\t\t\t\tif (callUnitConversionData.remToPx === null) {\r\n\t\t\t\t\t\t\t\t\t/* Default to browsers' default fontSize of 16px in the case of 0. */\r\n\t\t\t\t\t\t\t\t\tcallUnitConversionData.remToPx = parseFloat(CSS.getPropertyValue(document.body, \"fontSize\")) || 16; /* GET */\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Similarly, viewport units are %-relative to the window's inner dimensions. */\r\n\t\t\t\t\t\t\t\tif (callUnitConversionData.vwToPx === null) {\r\n\t\t\t\t\t\t\t\t\tcallUnitConversionData.vwToPx = parseFloat(window.innerWidth) / 100; /* GET */\r\n\t\t\t\t\t\t\t\t\tcallUnitConversionData.vhToPx = parseFloat(window.innerHeight) / 100; /* GET */\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tunitRatios.remToPx = callUnitConversionData.remToPx;\r\n\t\t\t\t\t\t\t\tunitRatios.vwToPx = callUnitConversionData.vwToPx;\r\n\t\t\t\t\t\t\t\tunitRatios.vhToPx = callUnitConversionData.vhToPx;\r\n\r\n\t\t\t\t\t\t\t\tif (Velocity.debug >= 1) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Unit ratios: \" + JSON.stringify(unitRatios), element);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn unitRatios;\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t/********************\r\n\t\t\t\t\t\t\t Unit Conversion\r\n\t\t\t\t\t\t\t ********************/\r\n\r\n\t\t\t\t\t\t\t/* The * and / operators, which are not passed in with an associated unit, inherently use startValue's unit. Skip value and unit conversion. */\r\n\t\t\t\t\t\t\tif (/[\\/*]/.test(operator)) {\r\n\t\t\t\t\t\t\t\tendValueUnitType = startValueUnitType;\r\n\t\t\t\t\t\t\t\t/* If startValue and endValue differ in unit type, convert startValue into the same unit type as endValue so that if endValueUnitType\r\n\t\t\t\t\t\t\t\t is a relative unit (%, em, rem), the values set during tweening will continue to be accurately relative even if the metrics they depend\r\n\t\t\t\t\t\t\t\t on are dynamically changing during the course of the animation. Conversely, if we always normalized into px and used px for setting values, the px ratio\r\n\t\t\t\t\t\t\t\t would become stale if the original unit being animated toward was relative and the underlying metrics change during the animation. */\r\n\t\t\t\t\t\t\t\t/* Since 0 is 0 in any unit type, no conversion is necessary when startValue is 0 -- we just start at 0 with endValueUnitType. */\r\n\t\t\t\t\t\t\t} else if ((startValueUnitType !== endValueUnitType) && startValue !== 0) {\r\n\t\t\t\t\t\t\t\t/* Unit conversion is also skipped when endValue is 0, but *startValueUnitType* must be used for tween values to remain accurate. */\r\n\t\t\t\t\t\t\t\t/* Note: Skipping unit conversion here means that if endValueUnitType was originally a relative unit, the animation won't relatively\r\n\t\t\t\t\t\t\t\t match the underlying metrics if they change, but this is acceptable since we're animating toward invisibility instead of toward visibility,\r\n\t\t\t\t\t\t\t\t which remains past the point of the animation's completion. */\r\n\t\t\t\t\t\t\t\tif (endValue === 0) {\r\n\t\t\t\t\t\t\t\t\tendValueUnitType = startValueUnitType;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/* By this point, we cannot avoid unit conversion (it's undesirable since it causes layout thrashing).\r\n\t\t\t\t\t\t\t\t\t If we haven't already, we trigger calculateUnitRatios(), which runs once per element per call. */\r\n\t\t\t\t\t\t\t\t\telementUnitConversionData = elementUnitConversionData || calculateUnitRatios();\r\n\r\n\t\t\t\t\t\t\t\t\t/* The following RegEx matches CSS properties that have their % values measured relative to the x-axis. */\r\n\t\t\t\t\t\t\t\t\t/* Note: W3C spec mandates that all of margin and padding's properties (even top and bottom) are %-relative to the *width* of the parent element. */\r\n\t\t\t\t\t\t\t\t\tvar axis = (/margin|padding|left|right|width|text|word|letter/i.test(property) || /X$/.test(property) || property === \"x\") ? \"x\" : \"y\";\r\n\r\n\t\t\t\t\t\t\t\t\t/* In order to avoid generating n^2 bespoke conversion functions, unit conversion is a two-step process:\r\n\t\t\t\t\t\t\t\t\t 1) Convert startValue into pixels. 2) Convert this new pixel value into endValue's unit type. */\r\n\t\t\t\t\t\t\t\t\tswitch (startValueUnitType) {\r\n\t\t\t\t\t\t\t\t\t\tcase \"%\":\r\n\t\t\t\t\t\t\t\t\t\t\t/* Note: translateX and translateY are the only properties that are %-relative to an element's own dimensions -- not its parent's dimensions.\r\n\t\t\t\t\t\t\t\t\t\t\t Velocity does not include a special conversion process to account for this behavior. Therefore, animating translateX/Y from a % value\r\n\t\t\t\t\t\t\t\t\t\t\t to a non-% value will produce an incorrect start value. Fortunately, this sort of cross-unit conversion is rarely done by users in practice. */\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= (axis === \"x\" ? elementUnitConversionData.percentToPxWidth : elementUnitConversionData.percentToPxHeight);\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tcase \"px\":\r\n\t\t\t\t\t\t\t\t\t\t\t/* px acts as our midpoint in the unit conversion process; do nothing. */\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= elementUnitConversionData[startValueUnitType + \"ToPx\"];\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t/* Invert the px ratios to convert into to the target unit. */\r\n\t\t\t\t\t\t\t\t\tswitch (endValueUnitType) {\r\n\t\t\t\t\t\t\t\t\t\tcase \"%\":\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= 1 / (axis === \"x\" ? elementUnitConversionData.percentToPxWidth : elementUnitConversionData.percentToPxHeight);\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tcase \"px\":\r\n\t\t\t\t\t\t\t\t\t\t\t/* startValue is already in px, do nothing; we're done. */\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= 1 / elementUnitConversionData[endValueUnitType + \"ToPx\"];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/*********************\r\n\t\t\t\t\t\t\t Relative Values\r\n\t\t\t\t\t\t\t *********************/\r\n\r\n\t\t\t\t\t\t\t/* Operator logic must be performed last since it requires unit-normalized start and end values. */\r\n\t\t\t\t\t\t\t/* Note: Relative *percent values* do not behave how most people think; while one would expect \"+=50%\"\r\n\t\t\t\t\t\t\t to increase the property 1.5x its current value, it in fact increases the percent units in absolute terms:\r\n\t\t\t\t\t\t\t 50 points is added on top of the current % value. */\r\n\t\t\t\t\t\t\tswitch (operator) {\r\n\t\t\t\t\t\t\t\tcase \"+\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue + endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase \"-\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue - endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase \"*\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue * endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase \"/\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue / endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/**************************\r\n\t\t\t\t\t\t\t tweensContainer Push\r\n\t\t\t\t\t\t\t **************************/\r\n\r\n\t\t\t\t\t\t\t/* Construct the per-property tween object, and push it to the element's tweensContainer. */\r\n\t\t\t\t\t\t\ttweensContainer[property] = {\r\n\t\t\t\t\t\t\t\trootPropertyValue: rootPropertyValue,\r\n\t\t\t\t\t\t\t\tstartValue: startValue,\r\n\t\t\t\t\t\t\t\tcurrentValue: startValue,\r\n\t\t\t\t\t\t\t\tendValue: endValue,\r\n\t\t\t\t\t\t\t\tunitType: endValueUnitType,\r\n\t\t\t\t\t\t\t\teasing: easing\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tif (pattern) {\r\n\t\t\t\t\t\t\t\ttweensContainer[property].pattern = pattern;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\tconsole.log(\"tweensContainer (\" + property + \"): \" + JSON.stringify(tweensContainer[property]), element);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t/* Create a tween out of each property, and append its associated data to tweensContainer. */\r\n\t\t\t\t\t\tfor (var property in propertiesMap) {\r\n\r\n\t\t\t\t\t\t\tif (!propertiesMap.hasOwnProperty(property)) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* The original property name's format must be used for the parsePropertyValue() lookup,\r\n\t\t\t\t\t\t\t but we then use its camelCase styling to normalize it for manipulation. */\r\n\t\t\t\t\t\t\tvar propertyName = CSS.Names.camelCase(property),\r\n\t\t\t\t\t\t\t\t\tvalueData = parsePropertyValue(propertiesMap[property]);\r\n\r\n\t\t\t\t\t\t\t/* Find shorthand color properties that have been passed a hex string. */\r\n\t\t\t\t\t\t\t/* Would be quicker to use CSS.Lists.colors.includes() if possible */\r\n\t\t\t\t\t\t\tif (_inArray(CSS.Lists.colors, propertyName)) {\r\n\t\t\t\t\t\t\t\t/* Parse the value data for each shorthand. */\r\n\t\t\t\t\t\t\t\tvar endValue = valueData[0],\r\n\t\t\t\t\t\t\t\t\t\teasing = valueData[1],\r\n\t\t\t\t\t\t\t\t\t\tstartValue = valueData[2];\r\n\r\n\t\t\t\t\t\t\t\tif (CSS.RegEx.isHex.test(endValue)) {\r\n\t\t\t\t\t\t\t\t\t/* Convert the hex strings into their RGB component arrays. */\r\n\t\t\t\t\t\t\t\t\tvar colorComponents = [\"Red\", \"Green\", \"Blue\"],\r\n\t\t\t\t\t\t\t\t\t\t\tendValueRGB = CSS.Values.hexToRgb(endValue),\r\n\t\t\t\t\t\t\t\t\t\t\tstartValueRGB = startValue ? CSS.Values.hexToRgb(startValue) : undefined;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Inject the RGB component tweens into propertiesMap. */\r\n\t\t\t\t\t\t\t\t\tfor (var i = 0; i < colorComponents.length; i++) {\r\n\t\t\t\t\t\t\t\t\t\tvar dataArray = [endValueRGB[i]];\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (easing) {\r\n\t\t\t\t\t\t\t\t\t\t\tdataArray.push(easing);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (startValueRGB !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\tdataArray.push(startValueRGB[i]);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tfixPropertyValue(propertyName + colorComponents[i], dataArray);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t/* If we have replaced a shortcut color value then don't update the standard property name */\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tfixPropertyValue(propertyName, valueData);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Along with its property data, store a reference to the element itself onto tweensContainer. */\r\n\t\t\t\t\t\ttweensContainer.element = element;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/*****************\r\n\t\t\t\t\t Call Push\r\n\t\t\t\t\t *****************/\r\n\r\n\t\t\t\t\t/* Note: tweensContainer can be empty if all of the properties in this call's property map were skipped due to not\r\n\t\t\t\t\t being supported by the browser. The element property is used for checking that the tweensContainer has been appended to. */\r\n\t\t\t\t\tif (tweensContainer.element) {\r\n\t\t\t\t\t\t/* Apply the \"velocity-animating\" indicator class. */\r\n\t\t\t\t\t\tCSS.Values.addClass(element, \"velocity-animating\");\r\n\r\n\t\t\t\t\t\t/* The call array houses the tweensContainers for each element being animated in the current call. */\r\n\t\t\t\t\t\tcall.push(tweensContainer);\r\n\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t\t\tif (data) {\r\n\t\t\t\t\t\t\t/* Store the tweensContainer and options if we're working on the default effects queue, so that they can be used by the reverse command. */\r\n\t\t\t\t\t\t\tif (opts.queue === \"\") {\r\n\r\n\t\t\t\t\t\t\t\tdata.tweensContainer = tweensContainer;\r\n\t\t\t\t\t\t\t\tdata.opts = opts;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Switch on the element's animating flag. */\r\n\t\t\t\t\t\t\tdata.isAnimating = true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Once the final element in this call's element set has been processed, push the call array onto\r\n\t\t\t\t\t\t Velocity.State.calls for the animation tick to immediately begin processing. */\r\n\t\t\t\t\t\tif (elementsIndex === elementsLength - 1) {\r\n\t\t\t\t\t\t\t/* Add the current call plus its associated metadata (the element set and the call's options) onto the global call container.\r\n\t\t\t\t\t\t\t Anything on this call container is subjected to tick() processing. */\r\n\t\t\t\t\t\t\tVelocity.State.calls.push([call, elements, opts, null, promiseData.resolver, null, 0]);\r\n\r\n\t\t\t\t\t\t\t/* If the animation tick isn't running, start it. (Velocity shuts it off when there are no active calls to process.) */\r\n\t\t\t\t\t\t\tif (Velocity.State.isTicking === false) {\r\n\t\t\t\t\t\t\t\tVelocity.State.isTicking = true;\r\n\r\n\t\t\t\t\t\t\t\t/* Start the tick loop. */\r\n\t\t\t\t\t\t\t\ttick();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telementsIndex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* When the queue option is set to false, the call skips the element's queue and fires immediately. */\r\n\t\t\t\tif (opts.queue === false) {\r\n\t\t\t\t\t/* Since this buildQueue call doesn't respect the element's existing queue (which is where a delay option would have been appended),\r\n\t\t\t\t\t we manually inject the delay property here with an explicit setTimeout. */\r\n\t\t\t\t\tif (opts.delay) {\r\n\r\n\t\t\t\t\t\t/* Temporarily store delayed elements to facilitate access for global pause/resume */\r\n\t\t\t\t\t\tvar callIndex = Velocity.State.delayedElements.count++;\r\n\t\t\t\t\t\tVelocity.State.delayedElements[callIndex] = element;\r\n\r\n\t\t\t\t\t\tvar delayComplete = (function(index) {\r\n\t\t\t\t\t\t\treturn function() {\r\n\t\t\t\t\t\t\t\t/* Clear the temporary element */\r\n\t\t\t\t\t\t\t\tVelocity.State.delayedElements[index] = false;\r\n\r\n\t\t\t\t\t\t\t\t/* Finally, issue the call */\r\n\t\t\t\t\t\t\t\tbuildQueue();\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})(callIndex);\r\n\r\n\t\t\t\t\t\tData(element).delayBegin = (new Date()).getTime();\r\n\t\t\t\t\t\tData(element).delay = parseFloat(opts.delay);\r\n\t\t\t\t\t\tData(element).delayTimer = {\r\n\t\t\t\t\t\t\tsetTimeout: setTimeout(buildQueue, parseFloat(opts.delay)),\r\n\t\t\t\t\t\t\tnext: delayComplete\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tbuildQueue();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t/* Otherwise, the call undergoes element queueing as normal. */\r\n\t\t\t\t\t/* Note: To interoperate with jQuery, Velocity uses jQuery's own $.queue() stack for queuing logic. */\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$.queue(element, opts.queue, function(next, clearQueue) {\r\n\t\t\t\t\t\t/* If the clearQueue flag was passed in by the stop command, resolve this call's promise. (Promises can only be resolved once,\r\n\t\t\t\t\t\t so it's fine if this is repeatedly triggered for each element in the associated call.) */\r\n\t\t\t\t\t\tif (clearQueue === true) {\r\n\t\t\t\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Do not continue with animation queueing. */\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* This flag indicates to the upcoming completeCall() function that this queue entry was initiated by Velocity.\r\n\t\t\t\t\t\t See completeCall() for further details. */\r\n\t\t\t\t\t\tVelocity.velocityQueueEntryFlag = true;\r\n\r\n\t\t\t\t\t\tbuildQueue(next);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************\r\n\t\t\t\t Auto-Dequeuing\r\n\t\t\t\t *********************/\r\n\r\n\t\t\t\t/* As per jQuery's $.queue() behavior, to fire the first non-custom-queue entry on an element, the element\r\n\t\t\t\t must be dequeued if its queue stack consists *solely* of the current call. (This can be determined by checking\r\n\t\t\t\t for the \"inprogress\" item that jQuery prepends to active queue stack arrays.) Regardless, whenever the element's\r\n\t\t\t\t queue is further appended with additional items -- including $.delay()'s or even $.animate() calls, the queue's\r\n\t\t\t\t first entry is automatically fired. This behavior contrasts that of custom queues, which never auto-fire. */\r\n\t\t\t\t/* Note: When an element set is being subjected to a non-parallel Velocity call, the animation will not begin until\r\n\t\t\t\t each one of the elements in the set has reached the end of its individually pre-existing queue chain. */\r\n\t\t\t\t/* Note: Unfortunately, most people don't fully grasp jQuery's powerful, yet quirky, $.queue() function.\r\n\t\t\t\t Lean more here: http://stackoverflow.com/questions/1058158/can-somebody-explain-jquery-queue-to-me */\r\n\t\t\t\tif ((opts.queue === \"\" || opts.queue === \"fx\") && $.queue(element)[0] !== \"inprogress\") {\r\n\t\t\t\t\t$.dequeue(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/**************************\r\n\t\t\t Element Set Iteration\r\n\t\t\t **************************/\r\n\r\n\t\t\t/* If the \"nodeType\" property exists on the elements variable, we're animating a single element.\r\n\t\t\t Place it in an array so that $.each() can iterate over it. */\r\n\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t/* Ensure each element in a set has a nodeType (is a real element) to avoid throwing errors. */\r\n\t\t\t\tif (Type.isNode(element)) {\r\n\t\t\t\t\tprocessElement(element, i);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t/******************\r\n\t\t\t Option: Loop\r\n\t\t\t ******************/\r\n\r\n\t\t\t/* The loop option accepts an integer indicating how many times the element should loop between the values in the\r\n\t\t\t current call's properties map and the element's property values prior to this call. */\r\n\t\t\t/* Note: The loop option's logic is performed here -- after element processing -- because the current call needs\r\n\t\t\t to undergo its queue insertion prior to the loop option generating its series of constituent \"reverse\" calls,\r\n\t\t\t which chain after the current call. Two reverse calls (two \"alternations\") constitute one loop. */\r\n\t\t\topts = $.extend({}, Velocity.defaults, options);\r\n\t\t\topts.loop = parseInt(opts.loop, 10);\r\n\t\t\tvar reverseCallsCount = (opts.loop * 2) - 1;\r\n\r\n\t\t\tif (opts.loop) {\r\n\t\t\t\t/* Double the loop count to convert it into its appropriate number of \"reverse\" calls.\r\n\t\t\t\t Subtract 1 from the resulting value since the current call is included in the total alternation count. */\r\n\t\t\t\tfor (var x = 0; x < reverseCallsCount; x++) {\r\n\t\t\t\t\t/* Since the logic for the reverse action occurs inside Queueing and therefore this call's options object\r\n\t\t\t\t\t isn't parsed until then as well, the current call's delay option must be explicitly passed into the reverse\r\n\t\t\t\t\t call so that the delay logic that occurs inside *Pre-Queueing* can process it. */\r\n\t\t\t\t\tvar reverseOptions = {\r\n\t\t\t\t\t\tdelay: opts.delay,\r\n\t\t\t\t\t\tprogress: opts.progress\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* If a complete callback was passed into this call, transfer it to the loop redirect's final \"reverse\" call\r\n\t\t\t\t\t so that it's triggered when the entire redirect is complete (and not when the very first animation is complete). */\r\n\t\t\t\t\tif (x === reverseCallsCount - 1) {\r\n\t\t\t\t\t\treverseOptions.display = opts.display;\r\n\t\t\t\t\t\treverseOptions.visibility = opts.visibility;\r\n\t\t\t\t\t\treverseOptions.complete = opts.complete;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tanimate(elements, \"reverse\", reverseOptions);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/***************\r\n\t\t\t Chaining\r\n\t\t\t ***************/\r\n\r\n\t\t\t/* Return the elements back to the call chain, with wrapped elements taking precedence in case Velocity was called via the $.fn. extension. */\r\n\t\t\treturn getChain();\r\n\t\t};\r\n\r\n\t\t/* Turn Velocity into the animation function, extended with the pre-existing Velocity object. */\r\n\t\tVelocity = $.extend(animate, Velocity);\r\n\t\t/* For legacy support, also expose the literal animate method. */\r\n\t\tVelocity.animate = animate;\r\n\r\n\t\t/**************\r\n\t\t Timing\r\n\t\t **************/\r\n\r\n\t\t/* Ticker function. */\r\n\t\tvar ticker = window.requestAnimationFrame || rAFShim;\r\n\r\n\t\t/* Inactive browser tabs pause rAF, which results in all active animations immediately sprinting to their completion states when the tab refocuses.\r\n\t\t To get around this, we dynamically switch rAF to setTimeout (which the browser *doesn't* pause) when the tab loses focus. We skip this for mobile\r\n\t\t devices to avoid wasting battery power on inactive tabs. */\r\n\t\t/* Note: Tab focus detection doesn't work on older versions of IE, but that's okay since they don't support rAF to begin with. */\r\n\t\tif (!Velocity.State.isMobile && document.hidden !== undefined) {\r\n\t\t\tvar updateTicker = function() {\r\n\t\t\t\t/* Reassign the rAF function (which the global tick() function uses) based on the tab's focus state. */\r\n\t\t\t\tif (document.hidden) {\r\n\t\t\t\t\tticker = function(callback) {\r\n\t\t\t\t\t\t/* The tick function needs a truthy first argument in order to pass its internal timestamp check. */\r\n\t\t\t\t\t\treturn setTimeout(function() {\r\n\t\t\t\t\t\t\tcallback(true);\r\n\t\t\t\t\t\t}, 16);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* The rAF loop has been paused by the browser, so we manually restart the tick. */\r\n\t\t\t\t\ttick();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tticker = window.requestAnimationFrame || rAFShim;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t/* Page could be sitting in the background at this time (i.e. opened as new tab) so making sure we use correct ticker from the start */\r\n\t\t\tupdateTicker();\r\n\r\n\t\t\t/* And then run check again every time visibility changes */\r\n\t\t\tdocument.addEventListener(\"visibilitychange\", updateTicker);\r\n\t\t}\r\n\r\n\t\t/************\r\n\t\t Tick\r\n\t\t ************/\r\n\r\n\t\t/* Note: All calls to Velocity are pushed to the Velocity.State.calls array, which is fully iterated through upon each tick. */\r\n\t\tfunction tick(timestamp) {\r\n\t\t\t/* An empty timestamp argument indicates that this is the first tick occurence since ticking was turned on.\r\n\t\t\t We leverage this metadata to fully ignore the first tick pass since RAF's initial pass is fired whenever\r\n\t\t\t the browser's next tick sync time occurs, which results in the first elements subjected to Velocity\r\n\t\t\t calls being animated out of sync with any elements animated immediately thereafter. In short, we ignore\r\n\t\t\t the first RAF tick pass so that elements being immediately consecutively animated -- instead of simultaneously animated\r\n\t\t\t by the same Velocity call -- are properly batched into the same initial RAF tick and consequently remain in sync thereafter. */\r\n\t\t\tif (timestamp) {\r\n\t\t\t\t/* We normally use RAF's high resolution timestamp but as it can be significantly offset when the browser is\r\n\t\t\t\t under high stress we give the option for choppiness over allowing the browser to drop huge chunks of frames.\r\n\t\t\t\t We use performance.now() and shim it if it doesn't exist for when the tab is hidden. */\r\n\t\t\t\tvar timeCurrent = Velocity.timestamp && timestamp !== true ? timestamp : performance.now();\r\n\r\n\t\t\t\t/********************\r\n\t\t\t\t Call Iteration\r\n\t\t\t\t ********************/\r\n\r\n\t\t\t\tvar callsLength = Velocity.State.calls.length;\r\n\r\n\t\t\t\t/* To speed up iterating over this array, it is compacted (falsey items -- calls that have completed -- are removed)\r\n\t\t\t\t when its length has ballooned to a point that can impact tick performance. This only becomes necessary when animation\r\n\t\t\t\t has been continuous with many elements over a long period of time; whenever all active calls are completed, completeCall() clears Velocity.State.calls. */\r\n\t\t\t\tif (callsLength > 10000) {\r\n\t\t\t\t\tVelocity.State.calls = compactSparseArray(Velocity.State.calls);\r\n\t\t\t\t\tcallsLength = Velocity.State.calls.length;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Iterate through each active call. */\r\n\t\t\t\tfor (var i = 0; i < callsLength; i++) {\r\n\t\t\t\t\t/* When a Velocity call is completed, its Velocity.State.calls entry is set to false. Continue on to the next call. */\r\n\t\t\t\t\tif (!Velocity.State.calls[i]) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/************************\r\n\t\t\t\t\t Call-Wide Variables\r\n\t\t\t\t\t ************************/\r\n\r\n\t\t\t\t\tvar callContainer = Velocity.State.calls[i],\r\n\t\t\t\t\t\t\tcall = callContainer[0],\r\n\t\t\t\t\t\t\topts = callContainer[2],\r\n\t\t\t\t\t\t\ttimeStart = callContainer[3],\r\n\t\t\t\t\t\t\tfirstTick = !timeStart,\r\n\t\t\t\t\t\t\ttweenDummyValue = null,\r\n\t\t\t\t\t\t\tpauseObject = callContainer[5],\r\n\t\t\t\t\t\t\tmillisecondsEllapsed = callContainer[6];\r\n\r\n\r\n\r\n\t\t\t\t\t/* If timeStart is undefined, then this is the first time that this call has been processed by tick().\r\n\t\t\t\t\t We assign timeStart now so that its value is as close to the real animation start time as possible.\r\n\t\t\t\t\t (Conversely, had timeStart been defined when this call was added to Velocity.State.calls, the delay\r\n\t\t\t\t\t between that time and now would cause the first few frames of the tween to be skipped since\r\n\t\t\t\t\t percentComplete is calculated relative to timeStart.) */\r\n\t\t\t\t\t/* Further, subtract 16ms (the approximate resolution of RAF) from the current time value so that the\r\n\t\t\t\t\t first tick iteration isn't wasted by animating at 0% tween completion, which would produce the\r\n\t\t\t\t\t same style value as the element's current value. */\r\n\t\t\t\t\tif (!timeStart) {\r\n\t\t\t\t\t\ttimeStart = Velocity.State.calls[i][3] = timeCurrent - 16;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If a pause object is present, skip processing unless it has been set to resume */\r\n\t\t\t\t\tif (pauseObject) {\r\n\t\t\t\t\t\tif (pauseObject.resume === true) {\r\n\t\t\t\t\t\t\t/* Update the time start to accomodate the paused completion amount */\r\n\t\t\t\t\t\t\ttimeStart = callContainer[3] = Math.round(timeCurrent - millisecondsEllapsed - 16);\r\n\r\n\t\t\t\t\t\t\t/* Remove pause object after processing */\r\n\t\t\t\t\t\t\tcallContainer[5] = null;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmillisecondsEllapsed = callContainer[6] = timeCurrent - timeStart;\r\n\r\n\t\t\t\t\t/* The tween's completion percentage is relative to the tween's start time, not the tween's start value\r\n\t\t\t\t\t (which would result in unpredictable tween durations since JavaScript's timers are not particularly accurate).\r\n\t\t\t\t\t Accordingly, we ensure that percentComplete does not exceed 1. */\r\n\t\t\t\t\tvar percentComplete = Math.min((millisecondsEllapsed) / opts.duration, 1);\r\n\r\n\t\t\t\t\t/**********************\r\n\t\t\t\t\t Element Iteration\r\n\t\t\t\t\t **********************/\r\n\r\n\t\t\t\t\t/* For every call, iterate through each of the elements in its set. */\r\n\t\t\t\t\tfor (var j = 0, callLength = call.length; j < callLength; j++) {\r\n\t\t\t\t\t\tvar tweensContainer = call[j],\r\n\t\t\t\t\t\t\t\telement = tweensContainer.element;\r\n\r\n\t\t\t\t\t\t/* Check to see if this element has been deleted midway through the animation by checking for the\r\n\t\t\t\t\t\t continued existence of its data cache. If it's gone, or the element is currently paused, skip animating this element. */\r\n\t\t\t\t\t\tif (!Data(element)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar transformPropertyExists = false;\r\n\r\n\t\t\t\t\t\t/**********************************\r\n\t\t\t\t\t\t Display & Visibility Toggling\r\n\t\t\t\t\t\t **********************************/\r\n\r\n\t\t\t\t\t\t/* If the display option is set to non-\"none\", set it upfront so that the element can become visible before tweening begins.\r\n\t\t\t\t\t\t (Otherwise, display's \"none\" value is set in completeCall() once the animation has completed.) */\r\n\t\t\t\t\t\tif (opts.display !== undefined && opts.display !== null && opts.display !== \"none\") {\r\n\t\t\t\t\t\t\tif (opts.display === \"flex\") {\r\n\t\t\t\t\t\t\t\tvar flexValues = [\"-webkit-box\", \"-moz-box\", \"-ms-flexbox\", \"-webkit-flex\"];\r\n\r\n\t\t\t\t\t\t\t\t$.each(flexValues, function(i, flexValue) {\r\n\t\t\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", flexValue);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", opts.display);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Same goes with the visibility option, but its \"none\" equivalent is \"hidden\". */\r\n\t\t\t\t\t\tif (opts.visibility !== undefined && opts.visibility !== \"hidden\") {\r\n\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"visibility\", opts.visibility);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/************************\r\n\t\t\t\t\t\t Property Iteration\r\n\t\t\t\t\t\t ************************/\r\n\r\n\t\t\t\t\t\t/* For every element, iterate through each property. */\r\n\t\t\t\t\t\tfor (var property in tweensContainer) {\r\n\t\t\t\t\t\t\t/* Note: In addition to property tween data, tweensContainer contains a reference to its associated element. */\r\n\t\t\t\t\t\t\tif (tweensContainer.hasOwnProperty(property) && property !== \"element\") {\r\n\t\t\t\t\t\t\t\tvar tween = tweensContainer[property],\r\n\t\t\t\t\t\t\t\t\t\tcurrentValue,\r\n\t\t\t\t\t\t\t\t\t\t/* Easing can either be a pre-genereated function or a string that references a pre-registered easing\r\n\t\t\t\t\t\t\t\t\t\t on the Velocity.Easings object. In either case, return the appropriate easing *function*. */\r\n\t\t\t\t\t\t\t\t\t\teasing = Type.isString(tween.easing) ? Velocity.Easings[tween.easing] : tween.easing;\r\n\r\n\t\t\t\t\t\t\t\t/******************************\r\n\t\t\t\t\t\t\t\t Current Value Calculation\r\n\t\t\t\t\t\t\t\t ******************************/\r\n\r\n\t\t\t\t\t\t\t\tif (Type.isString(tween.pattern)) {\r\n\t\t\t\t\t\t\t\t\tvar patternReplace = percentComplete === 1 ?\r\n\t\t\t\t\t\t\t\t\t\t\tfunction($0, index, round) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvar result = tween.endValue[index];\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn round ? Math.round(result) : result;\r\n\t\t\t\t\t\t\t\t\t\t\t} :\r\n\t\t\t\t\t\t\t\t\t\t\tfunction($0, index, round) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvar startValue = tween.startValue[index],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttweenDelta = tween.endValue[index] - startValue,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult = startValue + (tweenDelta * easing(percentComplete, opts, tweenDelta));\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn round ? Math.round(result) : result;\r\n\t\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\tcurrentValue = tween.pattern.replace(/{(\\d+)(!)?}/g, patternReplace);\r\n\t\t\t\t\t\t\t\t} else if (percentComplete === 1) {\r\n\t\t\t\t\t\t\t\t\t/* If this is the last tick pass (if we've reached 100% completion for this tween),\r\n\t\t\t\t\t\t\t\t\t ensure that currentValue is explicitly set to its target endValue so that it's not subjected to any rounding. */\r\n\t\t\t\t\t\t\t\t\tcurrentValue = tween.endValue;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/* Otherwise, calculate currentValue based on the current delta from startValue. */\r\n\t\t\t\t\t\t\t\t\tvar tweenDelta = tween.endValue - tween.startValue;\r\n\r\n\t\t\t\t\t\t\t\t\tcurrentValue = tween.startValue + (tweenDelta * easing(percentComplete, opts, tweenDelta));\r\n\t\t\t\t\t\t\t\t\t/* If no value change is occurring, don't proceed with DOM updating. */\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!firstTick && (currentValue === tween.currentValue)) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\ttween.currentValue = currentValue;\r\n\r\n\t\t\t\t\t\t\t\t/* If we're tweening a fake 'tween' property in order to log transition values, update the one-per-call variable so that\r\n\t\t\t\t\t\t\t\t it can be passed into the progress callback. */\r\n\t\t\t\t\t\t\t\tif (property === \"tween\") {\r\n\t\t\t\t\t\t\t\t\ttweenDummyValue = currentValue;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/******************\r\n\t\t\t\t\t\t\t\t\t Hooks: Part I\r\n\t\t\t\t\t\t\t\t\t ******************/\r\n\t\t\t\t\t\t\t\t\tvar hookRoot;\r\n\r\n\t\t\t\t\t\t\t\t\t/* For hooked properties, the newly-updated rootPropertyValueCache is cached onto the element so that it can be used\r\n\t\t\t\t\t\t\t\t\t for subsequent hooks in this call that are associated with the same root property. If we didn't cache the updated\r\n\t\t\t\t\t\t\t\t\t rootPropertyValue, each subsequent update to the root property in this tick pass would reset the previous hook's\r\n\t\t\t\t\t\t\t\t\t updates to rootPropertyValue prior to injection. A nice performance byproduct of rootPropertyValue caching is that\r\n\t\t\t\t\t\t\t\t\t subsequently chained animations using the same hookRoot but a different hook can use this cached rootPropertyValue. */\r\n\t\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\t\t\t\thookRoot = CSS.Hooks.getRoot(property);\r\n\r\n\t\t\t\t\t\t\t\t\t\tvar rootPropertyValueCache = Data(element).rootPropertyValueCache[hookRoot];\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (rootPropertyValueCache) {\r\n\t\t\t\t\t\t\t\t\t\t\ttween.rootPropertyValue = rootPropertyValueCache;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t/*****************\r\n\t\t\t\t\t\t\t\t\t DOM Update\r\n\t\t\t\t\t\t\t\t\t *****************/\r\n\r\n\t\t\t\t\t\t\t\t\t/* setPropertyValue() returns an array of the property name and property value post any normalization that may have been performed. */\r\n\t\t\t\t\t\t\t\t\t/* Note: To solve an IE<=8 positioning bug, the unit type is dropped when setting a property value of 0. */\r\n\t\t\t\t\t\t\t\t\tvar adjustedSetData = CSS.setPropertyValue(element, /* SET */\r\n\t\t\t\t\t\t\t\t\t\t\tproperty,\r\n\t\t\t\t\t\t\t\t\t\t\ttween.currentValue + (IE < 9 && parseFloat(currentValue) === 0 ? \"\" : tween.unitType),\r\n\t\t\t\t\t\t\t\t\t\t\ttween.rootPropertyValue,\r\n\t\t\t\t\t\t\t\t\t\t\ttween.scrollData);\r\n\r\n\t\t\t\t\t\t\t\t\t/*******************\r\n\t\t\t\t\t\t\t\t\t Hooks: Part II\r\n\t\t\t\t\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t\t\t\t\t/* Now that we have the hook's updated rootPropertyValue (the post-processed value provided by adjustedSetData), cache it onto the element. */\r\n\t\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\t\t\t\t/* Since adjustedSetData contains normalized data ready for DOM updating, the rootPropertyValue needs to be re-extracted from its normalized form. ?? */\r\n\t\t\t\t\t\t\t\t\t\tif (CSS.Normalizations.registered[hookRoot]) {\r\n\t\t\t\t\t\t\t\t\t\t\tData(element).rootPropertyValueCache[hookRoot] = CSS.Normalizations.registered[hookRoot](\"extract\", null, adjustedSetData[1]);\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tData(element).rootPropertyValueCache[hookRoot] = adjustedSetData[1];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t/***************\r\n\t\t\t\t\t\t\t\t\t Transforms\r\n\t\t\t\t\t\t\t\t\t ***************/\r\n\r\n\t\t\t\t\t\t\t\t\t/* Flag whether a transform property is being animated so that flushTransformCache() can be triggered once this tick pass is complete. */\r\n\t\t\t\t\t\t\t\t\tif (adjustedSetData[0] === \"transform\") {\r\n\t\t\t\t\t\t\t\t\t\ttransformPropertyExists = true;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/****************\r\n\t\t\t\t\t\t mobileHA\r\n\t\t\t\t\t\t ****************/\r\n\r\n\t\t\t\t\t\t/* If mobileHA is enabled, set the translate3d transform to null to force hardware acceleration.\r\n\t\t\t\t\t\t It's safe to override this property since Velocity doesn't actually support its animation (hooks are used in its place). */\r\n\t\t\t\t\t\tif (opts.mobileHA) {\r\n\t\t\t\t\t\t\t/* Don't set the null transform hack if we've already done so. */\r\n\t\t\t\t\t\t\tif (Data(element).transformCache.translate3d === undefined) {\r\n\t\t\t\t\t\t\t\t/* All entries on the transformCache object are later concatenated into a single transform string via flushTransformCache(). */\r\n\t\t\t\t\t\t\t\tData(element).transformCache.translate3d = \"(0px, 0px, 0px)\";\r\n\r\n\t\t\t\t\t\t\t\ttransformPropertyExists = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (transformPropertyExists) {\r\n\t\t\t\t\t\t\tCSS.flushTransformCache(element);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* The non-\"none\" display value is only applied to an element once -- when its associated call is first ticked through.\r\n\t\t\t\t\t Accordingly, it's set to false so that it isn't re-processed by this call in the next tick. */\r\n\t\t\t\t\tif (opts.display !== undefined && opts.display !== \"none\") {\r\n\t\t\t\t\t\tVelocity.State.calls[i][2].display = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (opts.visibility !== undefined && opts.visibility !== \"hidden\") {\r\n\t\t\t\t\t\tVelocity.State.calls[i][2].visibility = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Pass the elements and the timing data (percentComplete, msRemaining, timeStart, tweenDummyValue) into the progress callback. */\r\n\t\t\t\t\tif (opts.progress) {\r\n\t\t\t\t\t\topts.progress.call(callContainer[1],\r\n\t\t\t\t\t\t\t\tcallContainer[1],\r\n\t\t\t\t\t\t\t\tpercentComplete,\r\n\t\t\t\t\t\t\t\tMath.max(0, (timeStart + opts.duration) - timeCurrent),\r\n\t\t\t\t\t\t\t\ttimeStart,\r\n\t\t\t\t\t\t\t\ttweenDummyValue);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If this call has finished tweening, pass its index to completeCall() to handle call cleanup. */\r\n\t\t\t\t\tif (percentComplete === 1) {\r\n\t\t\t\t\t\tcompleteCall(i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/* Note: completeCall() sets the isTicking flag to false when the last call on Velocity.State.calls has completed. */\r\n\t\t\tif (Velocity.State.isTicking) {\r\n\t\t\t\tticker(tick);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**********************\r\n\t\t Call Completion\r\n\t\t **********************/\r\n\r\n\t\t/* Note: Unlike tick(), which processes all active calls at once, call completion is handled on a per-call basis. */\r\n\t\tfunction completeCall(callIndex, isStopped) {\r\n\t\t\t/* Ensure the call exists. */\r\n\t\t\tif (!Velocity.State.calls[callIndex]) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t/* Pull the metadata from the call. */\r\n\t\t\tvar call = Velocity.State.calls[callIndex][0],\r\n\t\t\t\t\telements = Velocity.State.calls[callIndex][1],\r\n\t\t\t\t\topts = Velocity.State.calls[callIndex][2],\r\n\t\t\t\t\tresolver = Velocity.State.calls[callIndex][4];\r\n\r\n\t\t\tvar remainingCallsExist = false;\r\n\r\n\t\t\t/*************************\r\n\t\t\t Element Finalization\r\n\t\t\t *************************/\r\n\r\n\t\t\tfor (var i = 0, callLength = call.length; i < callLength; i++) {\r\n\t\t\t\tvar element = call[i].element;\r\n\r\n\t\t\t\t/* If the user set display to \"none\" (intending to hide the element), set it now that the animation has completed. */\r\n\t\t\t\t/* Note: display:none isn't set when calls are manually stopped (via Velocity(\"stop\"). */\r\n\t\t\t\t/* Note: Display gets ignored with \"reverse\" calls and infinite loops, since this behavior would be undesirable. */\r\n\t\t\t\tif (!isStopped && !opts.loop) {\r\n\t\t\t\t\tif (opts.display === \"none\") {\r\n\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", opts.display);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (opts.visibility === \"hidden\") {\r\n\t\t\t\t\t\tCSS.setPropertyValue(element, \"visibility\", opts.visibility);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If the element's queue is empty (if only the \"inprogress\" item is left at position 0) or if its queue is about to run\r\n\t\t\t\t a non-Velocity-initiated entry, turn off the isAnimating flag. A non-Velocity-initiatied queue entry's logic might alter\r\n\t\t\t\t an element's CSS values and thereby cause Velocity's cached value data to go stale. To detect if a queue entry was initiated by Velocity,\r\n\t\t\t\t we check for the existence of our special Velocity.queueEntryFlag declaration, which minifiers won't rename since the flag\r\n\t\t\t\t is assigned to jQuery's global $ object and thus exists out of Velocity's own scope. */\r\n\t\t\t\tvar data = Data(element);\r\n\r\n\t\t\t\tif (opts.loop !== true && ($.queue(element)[1] === undefined || !/\\.velocityQueueEntryFlag/i.test($.queue(element)[1]))) {\r\n\t\t\t\t\t/* The element may have been deleted. Ensure that its data cache still exists before acting on it. */\r\n\t\t\t\t\tif (data) {\r\n\t\t\t\t\t\tdata.isAnimating = false;\r\n\t\t\t\t\t\t/* Clear the element's rootPropertyValueCache, which will become stale. */\r\n\t\t\t\t\t\tdata.rootPropertyValueCache = {};\r\n\r\n\t\t\t\t\t\tvar transformHAPropertyExists = false;\r\n\t\t\t\t\t\t/* If any 3D transform subproperty is at its default value (regardless of unit type), remove it. */\r\n\t\t\t\t\t\t$.each(CSS.Lists.transforms3D, function(i, transformName) {\r\n\t\t\t\t\t\t\tvar defaultValue = /^scale/.test(transformName) ? 1 : 0,\r\n\t\t\t\t\t\t\t\t\tcurrentValue = data.transformCache[transformName];\r\n\r\n\t\t\t\t\t\t\tif (data.transformCache[transformName] !== undefined && new RegExp(\"^\\\\(\" + defaultValue + \"[^.]\").test(currentValue)) {\r\n\t\t\t\t\t\t\t\ttransformHAPropertyExists = true;\r\n\r\n\t\t\t\t\t\t\t\tdelete data.transformCache[transformName];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t/* Mobile devices have hardware acceleration removed at the end of the animation in order to avoid hogging the GPU's memory. */\r\n\t\t\t\t\t\tif (opts.mobileHA) {\r\n\t\t\t\t\t\t\ttransformHAPropertyExists = true;\r\n\t\t\t\t\t\t\tdelete data.transformCache.translate3d;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Flush the subproperty removals to the DOM. */\r\n\t\t\t\t\t\tif (transformHAPropertyExists) {\r\n\t\t\t\t\t\t\tCSS.flushTransformCache(element);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Remove the \"velocity-animating\" indicator class. */\r\n\t\t\t\t\t\tCSS.Values.removeClass(element, \"velocity-animating\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************\r\n\t\t\t\t Option: Complete\r\n\t\t\t\t *********************/\r\n\r\n\t\t\t\t/* Complete is fired once per call (not once per element) and is passed the full raw DOM element set as both its context and its first argument. */\r\n\t\t\t\t/* Note: Callbacks aren't fired when calls are manually stopped (via Velocity(\"stop\"). */\r\n\t\t\t\tif (!isStopped && opts.complete && !opts.loop && (i === callLength - 1)) {\r\n\t\t\t\t\t/* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\topts.complete.call(elements, elements);\r\n\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t\t}, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/**********************\r\n\t\t\t\t Promise Resolving\r\n\t\t\t\t **********************/\r\n\r\n\t\t\t\t/* Note: Infinite loops don't return promises. */\r\n\t\t\t\tif (resolver && opts.loop !== true) {\r\n\t\t\t\t\tresolver(elements);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/****************************\r\n\t\t\t\t Option: Loop (Infinite)\r\n\t\t\t\t ****************************/\r\n\r\n\t\t\t\tif (data && opts.loop === true && !isStopped) {\r\n\t\t\t\t\t/* If a rotateX/Y/Z property is being animated by 360 deg with loop:true, swap tween start/end values to enable\r\n\t\t\t\t\t continuous iterative rotation looping. (Otherise, the element would just rotate back and forth.) */\r\n\t\t\t\t\t$.each(data.tweensContainer, function(propertyName, tweenContainer) {\r\n\t\t\t\t\t\tif (/^rotate/.test(propertyName) && ((parseFloat(tweenContainer.startValue) - parseFloat(tweenContainer.endValue)) % 360 === 0)) {\r\n\t\t\t\t\t\t\tvar oldStartValue = tweenContainer.startValue;\r\n\r\n\t\t\t\t\t\t\ttweenContainer.startValue = tweenContainer.endValue;\r\n\t\t\t\t\t\t\ttweenContainer.endValue = oldStartValue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (/^backgroundPosition/.test(propertyName) && parseFloat(tweenContainer.endValue) === 100 && tweenContainer.unitType === \"%\") {\r\n\t\t\t\t\t\t\ttweenContainer.endValue = 0;\r\n\t\t\t\t\t\t\ttweenContainer.startValue = 100;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tVelocity(element, \"reverse\", {loop: true, delay: opts.delay});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/***************\r\n\t\t\t\t Dequeueing\r\n\t\t\t\t ***************/\r\n\r\n\t\t\t\t/* Fire the next call in the queue so long as this call's queue wasn't set to false (to trigger a parallel animation),\r\n\t\t\t\t which would have already caused the next call to fire. Note: Even if the end of the animation queue has been reached,\r\n\t\t\t\t $.dequeue() must still be called in order to completely clear jQuery's animation queue. */\r\n\t\t\t\tif (opts.queue !== false) {\r\n\t\t\t\t\t$.dequeue(element, opts.queue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/************************\r\n\t\t\t Calls Array Cleanup\r\n\t\t\t ************************/\r\n\r\n\t\t\t/* Since this call is complete, set it to false so that the rAF tick skips it. This array is later compacted via compactSparseArray().\r\n\t\t\t (For performance reasons, the call is set to false instead of being deleted from the array: http://www.html5rocks.com/en/tutorials/speed/v8/) */\r\n\t\t\tVelocity.State.calls[callIndex] = false;\r\n\r\n\t\t\t/* Iterate through the calls array to determine if this was the final in-progress animation.\r\n\t\t\t If so, set a flag to end ticking and clear the calls array. */\r\n\t\t\tfor (var j = 0, callsLength = Velocity.State.calls.length; j < callsLength; j++) {\r\n\t\t\t\tif (Velocity.State.calls[j] !== false) {\r\n\t\t\t\t\tremainingCallsExist = true;\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (remainingCallsExist === false) {\r\n\t\t\t\t/* tick() will detect this flag upon its next iteration and subsequently turn itself off. */\r\n\t\t\t\tVelocity.State.isTicking = false;\r\n\r\n\t\t\t\t/* Clear the calls array so that its length is reset. */\r\n\t\t\t\tdelete Velocity.State.calls;\r\n\t\t\t\tVelocity.State.calls = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/******************\r\n\t\t Frameworks\r\n\t\t ******************/\r\n\r\n\t\t/* Both jQuery and Zepto allow their $.fn object to be extended to allow wrapped elements to be subjected to plugin calls.\r\n\t\t If either framework is loaded, register a \"velocity\" extension pointing to Velocity's core animate() method. Velocity\r\n\t\t also registers itself onto a global container (window.jQuery || window.Zepto || window) so that certain features are\r\n\t\t accessible beyond just a per-element scope. This master object contains an .animate() method, which is later assigned to $.fn\r\n\t\t (if jQuery or Zepto are present). Accordingly, Velocity can both act on wrapped DOM elements and stand alone for targeting raw DOM elements. */\r\n\t\tglobal.Velocity = Velocity;\r\n\r\n\t\tif (global !== window) {\r\n\t\t\t/* Assign the element function to Velocity's core animate() method. */\r\n\t\t\tglobal.fn.velocity = animate;\r\n\t\t\t/* Assign the object function's defaults to Velocity's global defaults object. */\r\n\t\t\tglobal.fn.velocity.defaults = Velocity.defaults;\r\n\t\t}\r\n\r\n\t\t/***********************\r\n\t\t Packaged Redirects\r\n\t\t ***********************/\r\n\r\n\t\t/* slideUp, slideDown */\r\n\t\t$.each([\"Down\", \"Up\"], function(i, direction) {\r\n\t\t\tVelocity.Redirects[\"slide\" + direction] = function(element, options, elementsIndex, elementsSize, elements, promiseData) {\r\n\t\t\t\tvar opts = $.extend({}, options),\r\n\t\t\t\t\t\tbegin = opts.begin,\r\n\t\t\t\t\t\tcomplete = opts.complete,\r\n\t\t\t\t\t\tinlineValues = {},\r\n\t\t\t\t\t\tcomputedValues = {height: \"\", marginTop: \"\", marginBottom: \"\", paddingTop: \"\", paddingBottom: \"\"};\r\n\r\n\t\t\t\tif (opts.display === undefined) {\r\n\t\t\t\t\t/* Show the element before slideDown begins and hide the element after slideUp completes. */\r\n\t\t\t\t\t/* Note: Inline elements cannot have dimensions animated, so they're reverted to inline-block. */\r\n\t\t\t\t\topts.display = (direction === \"Down\" ? (Velocity.CSS.Values.getDisplayType(element) === \"inline\" ? \"inline-block\" : \"block\") : \"none\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\topts.begin = function() {\r\n\t\t\t\t\t/* If the user passed in a begin callback, fire it now. */\r\n\t\t\t\t\tif (elementsIndex === 0 && begin) {\r\n\t\t\t\t\t\tbegin.call(elements, elements);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Cache the elements' original vertical dimensional property values so that we can animate back to them. */\r\n\t\t\t\t\tfor (var property in computedValues) {\r\n\t\t\t\t\t\tif (!computedValues.hasOwnProperty(property)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tinlineValues[property] = element.style[property];\r\n\r\n\t\t\t\t\t\t/* For slideDown, use forcefeeding to animate all vertical properties from 0. For slideUp,\r\n\t\t\t\t\t\t use forcefeeding to start from computed values and animate down to 0. */\r\n\t\t\t\t\t\tvar propertyValue = CSS.getPropertyValue(element, property);\r\n\t\t\t\t\t\tcomputedValues[property] = (direction === \"Down\") ? [propertyValue, 0] : [0, propertyValue];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Force vertical overflow content to clip so that sliding works as expected. */\r\n\t\t\t\t\tinlineValues.overflow = element.style.overflow;\r\n\t\t\t\t\telement.style.overflow = \"hidden\";\r\n\t\t\t\t};\r\n\r\n\t\t\t\topts.complete = function() {\r\n\t\t\t\t\t/* Reset element to its pre-slide inline values once its slide animation is complete. */\r\n\t\t\t\t\tfor (var property in inlineValues) {\r\n\t\t\t\t\t\tif (inlineValues.hasOwnProperty(property)) {\r\n\t\t\t\t\t\t\telement.style[property] = inlineValues[property];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If the user passed in a complete callback, fire it now. */\r\n\t\t\t\t\tif (elementsIndex === elementsSize - 1) {\r\n\t\t\t\t\t\tif (complete) {\r\n\t\t\t\t\t\t\tcomplete.call(elements, elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (promiseData) {\r\n\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tVelocity(element, computedValues, opts);\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t/* fadeIn, fadeOut */\r\n\t\t$.each([\"In\", \"Out\"], function(i, direction) {\r\n\t\t\tVelocity.Redirects[\"fade\" + direction] = function(element, options, elementsIndex, elementsSize, elements, promiseData) {\r\n\t\t\t\tvar opts = $.extend({}, options),\r\n\t\t\t\t\t\tcomplete = opts.complete,\r\n\t\t\t\t\t\tpropertiesMap = {opacity: (direction === \"In\") ? 1 : 0};\r\n\r\n\t\t\t\t/* Since redirects are triggered individually for each element in the animated set, avoid repeatedly triggering\r\n\t\t\t\t callbacks by firing them only when the final element has been reached. */\r\n\t\t\t\tif (elementsIndex !== 0) {\r\n\t\t\t\t\topts.begin = null;\r\n\t\t\t\t}\r\n\t\t\t\tif (elementsIndex !== elementsSize - 1) {\r\n\t\t\t\t\topts.complete = null;\r\n\t\t\t\t} else {\r\n\t\t\t\t\topts.complete = function() {\r\n\t\t\t\t\t\tif (complete) {\r\n\t\t\t\t\t\t\tcomplete.call(elements, elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (promiseData) {\r\n\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If a display was passed in, use it. Otherwise, default to \"none\" for fadeOut or the element-specific default for fadeIn. */\r\n\t\t\t\t/* Note: We allow users to pass in \"null\" to skip display setting altogether. */\r\n\t\t\t\tif (opts.display === undefined) {\r\n\t\t\t\t\topts.display = (direction === \"In\" ? \"auto\" : \"none\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tVelocity(this, propertiesMap, opts);\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\treturn Velocity;\r\n\t}((window.jQuery || window.Zepto || window), window, (window ? window.document : undefined));\r\n}));\r\n\r\n/******************\r\n Known Issues\r\n ******************/\r\n\r\n/* The CSS spec mandates that the translateX/Y/Z transforms are %-relative to the element itself -- not its parent.\r\n Velocity, however, doesn't make this distinction. Thus, converting to or from the % unit with these subproperties\r\n will produce an inaccurate conversion value. The same issue exists with the cx/cy attributes of SVG circles and ellipses. */\r\n","import {createApp, defineCustomElement} from \"vue\";\r\nimport ZoekActiviteiten from \"./ZoekActiviteiten.vue\";\r\nimport {createPinia, setActivePinia} from \"pinia\";\r\nimport { setupCalendar } from 'v-calendar';\r\nimport VCalendar from 'v-calendar';\r\nimport Notifications from '@kyvg/vue3-notification';\r\nimport velocity from \"velocity-animate\";\r\n\r\nconst pinia = createPinia();\r\n\r\nsetActivePinia(pinia)\r\n\r\nconst app = createApp(ZoekActiviteiten);\r\napp.use(pinia);\r\napp.use(setupCalendar, {});\r\napp.use(Notifications, { velocity });\r\n\r\nif (document.getElementById('activity-search')) {\r\napp.mount(\"#activity-search\");\r\n}\r\n\r\nconst element = defineCustomElement(ZoekActiviteiten, {\r\n shadowRoot: false\r\n});\r\n\r\nelement.prototype.pinia = pinia;\r\n\r\nelement.prototype.plugins = [\r\n { plugin: Notifications },\r\n { plugin: VCalendar },\r\n ];\r\n\r\ncustomElements.define('zoek-activiteiten', element);"],"names":["compile","getTimeInSeconds","date","setDateToEnd","timeInMillis","BekostigingsType","ActiviteitRepository","params","sportmomentSearchApiEndpoint","id","platformId","sportmomentApi","groupSportaanbieder","activiteitRepository","immutable","extend","hasOwnProperty","target","i","source","key","fuzzy","module","pattern","array","str","opts","patternIdx","result","len","totalScore","currScore","pre","post","compareString","ch","idx","arr","prev","element","rendered","a","b","compare","List","component","item","active","li","index","msg","list","require$$0","require$$1","require$$2","Suggestions","el","data","options","e","keyCode","self","query","revisedData","value","candidate","callback","d","results","renderedString","sourceFormatting","boldString","indexString","indexOfQuery","endIndexOfQuery","suggestions","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","global","freeSelf","root","objectProto","objectToString","nativeMax","nativeMin","now","debounce","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","toNumber","isObject","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","type","isObjectLike","isSymbol","other","isBinary","lodash_debounce","R","ReflectApply","receiver","ReflectOwnKeys","ProcessEmitWarning","warning","NumberIsNaN","EventEmitter","eventsModule","once","defaultMaxListeners","checkListener","listener","arg","n","_getMaxListeners","that","doError","events","er","err","handler","listeners","arrayClone","_addListener","prepend","m","existing","w","onceWrapper","_onceWrap","state","wrapped","position","originalListener","spliceOne","keys","_listeners","unwrap","evlistener","unwrapListeners","emitter","listenerCount","copy","ret","name","resolve","reject","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","flags","wrapListener","exceptions","parseParam","param","parts","parseLink","link","linkUrl","linkParams","rel","parsedLinkParams","parsed","parseLinkHeader","linkHeader","splitRel","parseLinkHeader_1","MapiResponse","request","responseData","mapiResponse","constants","MapiError","errorType","body","message","mapiError","parseSingleHeader","raw","boundary","parseHeaders","headers","rawHeader","parseHeaders_1","require$$3","requestsUnderway","browserAbort","xhr","createResponse","normalizeBrowserProgressEvent","event","total","transferred","percent","sendRequestXhr","file","error","createRequestXhr","accessToken","url","browserSend","browserLayer","freeExports","exports","freeModule","InvalidCharacterError","TABLE","REGEX_SPACE_CHARACTERS","decode","input","length","bitCounter","bitStorage","buffer","output","encode","padding","c","base64","this","tokenCache","parseToken","token","usage","rawPayload","parsedPayload","parsePaylod","has","obj","parseMapboxToken","prefix","Events","EE","fn","context","addListener","evt","clearEvent","names","handlers","l","ee","a1","a2","a3","a4","a5","j","encodeArray","arrayValue","encodeValue","appendQueryParam","punctuation","appendQueryObject","queryObject","v","prependOrigin","origin","delimiter","interpolateRouteParams","route","_","paramId","preppedValue","urlUtils","xtend","require$$4","requestId","MapiRequest","client","defaultHeaders","headersWithDefaults","memo","routeParams","actualAccessToken","accessTokenOwnerId","response","handleResponse","getNextPage","nextPageRequest","getPage","handleError","extendedOptions","mapiRequest","MapiClient","requestOptions","mapiClient","browser","BrowserClient","createBrowserClient","browserClient","mapboxSdk","toString","isPlainObj","x","prototype","isPlainObject","DEFAULT_ERROR_PATH","NEWLINE_INDENT","rootValidator","validate","errorMessage","processMessage","validatorObj","validators","objectEntries","validationResult","validator","errorMessages","renderedMessage","objectId","ofPhrase","shapeValidator","shapeResult","invalidKeys","valueKey","createArrayValidator","validatingTuple","getValidator","requiredValidator","formatErrorMessage","isArrayCulprit","messages","orList","max","compareWith","min","path","prettifyResult","addArticle","nounPhrase","prettyResult","arrayCulprit","lib","assertShape","apiName","coordinates","pick","filter","val","pick_1","objectMap","cb","objectMap_1","stringifyBoolean","stringifyBooleans","createClient","createServiceFactory","ServicePrototype","clientOrConfig","service","createServiceFactory_1","Geocoding","featureTypes","config","geocoding","urlAlphabet","random","bytes","customRandom","alphabet","defaultSize","getRandom","mask","step","size","customAlphabet","nanoid","byte","MapboxEventManager","selected","geocoder","payload","keyEvent","eventArgs","proximity","ipProximityHeader","zoom","resultIndex","xhttp","header","headerValue","selectedID","resultIDs","feature","selectedIdx","searchStartRequiredProps","searchKeystrokeRequiredProps","searchSelectRequiredProps","requiredProps","prop","forceFlush","placeholder","localization","make","empty","match","tag","split","api","expose","part","method","Geolocation","positionOptions","geolocation","transformFeatureToGeolocationText","accuracy","addrInfo","getAddressInfo","addressAccuracy","currentAccuracy","accuracyIndex","acc","houseNumber","street","placeName","layer","REVERSE_GEOCODE_COORD_RGX","utils","Typeahead","MapboxClient","require$$5","mbxGeocoder","require$$6","require$$7","require$$8","subtag","require$$9","require$$10","require$$11","GEOCODE_REQUEST_TYPE","getFooterNode","div","MapboxGeocoder","container","addToExistingContainer","parent","map","searchIcon","actions","buttonIcon","geolocateIcon","typeahead","parentDraw","footerNode","geolocationPosition","geojson","text","resp","locationText","icon","ESC_KEY_CODE","TAB_KEY_CODE","flyOptions","bbox","defaultFlyOptions","search","requestType","spacesOrCommaRgx","isCoordKey","lng","lat","coords","trimmedSearch","searchInput","localGeocoderRes","externalGeocoderRes","geocoderError","res","features","ev","ctx","center","firstLanguage","language","localizedValue","showSuggestions","disableTrackProximity","browserLocale","flyTo","countries","types","minLength","limit","code","defaultMarkerOptions","markerOptions","useMap","inject","cache","regex","getOriginalEvent","vueEventName","$1","$2","useEventsBinding","emitFn","mapboxElement","events7","layerId","attrs","useAttrs","vueEventNames","computed","unbindFunctions","unbindEvents","eventNames","eventName","unbindFn","bindEvents","originalEvent","unref","watch","newVueEventNames","oldVueEventNames","eventNamesToDelete","oldVueEventName","eventNamesToAdd","newVueEventName","unwatch","newValue","capitalizeFirstLetter","string","usePropsBinding","props","propsConfig10","bindProps","_a","_b","setMethodName","methodExists","propNeedsBinding","watch2","unref2","export_helper_default","sfc","_hoisted_1","propsConfig","_sfc_main","__props","__emit","emit","computed2","removeLayer","unref4","removeSource","onMounted2","onUnmounted2","_ctx","_cache","_openBlock","_createElementBlock","MapboxLayer_default","_hoisted_12","_sfc_main2","watch4","unref5","onMounted3","onUnmounted3","layers","_openBlock2","_createElementBlock2","MapboxSource_default","_hoisted_13","propsConfig2","_sfc_main3","ref2","getId","suffix","unref6","sourceId","computed3","clusterMaxZoom","clusterRadius","clusterMinPoints","clusterProperties","clustersLayer","clusterCountLayer","unclusteredPointLayer","clustersClickHandler","clusterId","clustersMouseenterHandler","clustersMouseleaveHandler","unclusteredPointClickHandler","unclusteredPointMouseenterHandler","unclusteredPointMouseleaveHandler","_openBlock3","_createElementBlock3","_createVNode","MapboxCluster_default","mapboxgl2","_hoisted_14","_hoisted_2","mapboxgl3","LngLatBounds","LngLat","propsConfig4","events3","__default__","_sfc_main5","__expose","ref4","provide","isLoaded","computed5","style","options2","onMounted5","resizeObserver","onUnmounted4","_openBlock5","_createElementBlock5","_Fragment","_createElementVNode","_mergeProps","_renderSlot","MapboxMap_default","mapboxgl4","Popup","Point","LngLat2","mapboxgl5","propsConfig7","events5","_sfc_main11","popup","ref9","computed7","lngLat","onMounted8","onUnmounted6","_openBlock11","_createElementBlock11","_renderSlot6","MapboxPopup_default","Marker","Point2","mapboxgl6","propsConfig8","events6","_sfc_main12","slots","useSlots","marker","ref10","contentRef","popupRef","hasPopup","computed8","popupInstance","popupOptions","onMounted9","onUnmounted7","_openBlock12","_createElementBlock12","_createElementVNode4","_renderSlot7","_createBlock3","_mergeProps4","_withCtx2","_createCommentVNode6","MapboxMarker_default","getStarClass","reviewMultiplicityName","ariaLabel","factory","__WEBPACK_EXTERNAL_MODULE__594__","__webpack_modules__","__unused_webpack_module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","definition","__webpack_exports__","Component","LoadingPlugin","src","useLoading","external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_","removeElement","createComponent","parentContainer","vNode","hasWindow","MayBeHTMLElement","render","$props","$setup","$data","$options","trapFocusMixin","spinnervue_type_template_id_1ed0a811_hoisted_1","spinnervue_type_template_id_1ed0a811_render","spinnervue_type_script_lang_js","exportHelper","spinner","dotsvue_type_template_id_6ecfb4ba_hoisted_1","dotsvue_type_template_id_6ecfb4ba_render","dotsvue_type_script_lang_js","dots","barsvue_type_template_id_f81ac1c0_hoisted_1","barsvue_type_template_id_f81ac1c0_render","barsvue_type_script_lang_js","loaders","Componentvue_type_script_lang_js","globalProps","globalSlots","propsData","mergedSlots","app","instance","color","o","ot$1","at","t","r","h","H","st","rt","lt","ct","ut","T","ft","it","g","dt","Z","M","D","y","S","N","s","u","p","B","q","z","C","L","P","Y","W","J","K","Q","U","f","ot","I","X","A","$","V","G","F","O","tt","et","nt","k","E","pt","yt","ht","reactive","getClub","club","notify","onBeforeMount","addDays","amount","_date","toDate","constructFrom","getDefaultOptions","getInternalDefaultOptions","getISODay","day","isAfter","dateToCompare","_dateToCompare","isBefore","transpose","fromDate","constructor","TIMEZONE_UNIT_PRIORITY","Setter","__publicField","_utcDate","_options","ValueSetter","validateValue","setValue","priority","subPriority","DateToSystemTimezoneSetter","Parser","dateString","_value","EraParser","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","matchResult","parseTimezonePattern","sign","hours","minutes","seconds","millisecondsInHour","millisecondsInMinute","millisecondsInSecond","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","dayPeriod","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","isLeapYearIndex","year","YearParser","valueCallback","normalizedTwoDigitYear","LocalWeekYearParser","getWeekYear","startOfWeek","ISOWeekYearParser","_flags","firstWeekOfYear","startOfISOWeek","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","setWeek","week","diff","getWeek","LocalWeekParser","setISOWeek","getISOWeek","ISOWeekParser","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","month","DayOfYearParser","setDay","defaultOptions","weekStartsOn","currentDay","dayIndex","delta","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","setISODay","ISODayParser","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","SecondParser","FractionOfSecondParser","ISOTimezoneWithZParser","getTimezoneOffsetInMilliseconds","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","parse","dateStr","formatStr","referenceDate","locale","defaultLocale","firstWeekContainsDate","subFnOptions","setters","tokens","substring","firstCharacter","longFormatters","longFormatter","usedTokens","isProtectedWeekYearToken","warnOrThrowProtectedError","isProtectedDayOfYearToken","parser","incompatibleTokens","incompatibleToken","usedToken","parseResult","cleanEscapedString","uniquePrioritySetters","setter","setterArray","sides","alignments","placements","side","oppositeSideMap","oppositeAlignmentMap","clamp","start","end","evaluate","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","direction","expandPaddingObject","getPaddingObject","rectToClientRect","rect","width","height","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","computePosition","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","detectOverflow","_await$platform$isEle","elements","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","offset","shouldAddOffset","alignmentOffset","getPlacementList","autoAlignment","allowedPlacements","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","detectOverflowOptions","placements$1","overflow","currentIndex","currentPlacement","alignmentSides","currentOverflows","allOverflows","nextPlacement","placementsSortedByMostSpace","resetPlacement","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","_overflowsData$filter2","currentSideAxis","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","Ze","re","_e","Te","pe","ae","de","le","he","xe","Ue","Ye","Xe","Ke","Je","Qe","ne","ue","fe","Pe","ce","ke","Le","Fe","Re","De","Ie","mt","je","Ve","se","te","gt","wt","$e","Ee","ve","Ce","Vt","ModalRepository","docType","partner","redirectUrl","redirectFromUrl","umbracoApi","modalRepository","emits","platformStore","usePlatformStore","modalRef","ref","focused","useFocusWithin","cancelRedirect","handleCancelKeyPress","oldValue","currentPlatformId","currentPlatformUrl","placeHolder","findAndReplace","onMounted","onBeforeUnmount","getDateInHoursAndMinutes","getDateForRegistrationClosed","registrationStatusClass","calculateAvailableSpots","availablePlaces","availablePlacesPlatform","availableSpotsText","totalSpaces","isPlural","isSamePlatform","activityUrl","currentUrl","startRedirect","getActivity","isRegistrationStarted","isRegistrationEnded","mapRef","_useSlots","backgroundColor","textColor","getVisibleTextColor","unclusteredPointPaint","clustersPaint","clusterCountPaint","setMap","mapInstance","onIdle","bounds","distance","markersToFeatures","markers","itemToGeoJsonFeature","mapItem","onFeatureClick","onClusterClick","cluster","currentZoom","newZoom","onCloseClick","availableSpots","registrationStartDate","registrationEndDate","to","distanceInKm","kilometers","bookingUrl","clubUrl","getCurrentLocation","geoOptions","onSuccess","onError","KenmerkRepository","clubfinderCdnApi","categorie","kenmerkenRepository","debouncedGetData","useDebounceFn","kenmerkRepository","onEnter","onInput","onSelect","ProfileRepository","profileRepository","useProfileStore","defineStore","profile","isLoggedIn","useUrlSearchParams","setParam","pushState","setParamArray","values","clearParams","getParam","useHash","hashRef","hash","useFilters","initialFilter","filters","searchParams","formattedDate","format","activities","toggleShowAllActivityTypes","toggleShowAllLocations","activitiesToShow","locationsToShow","onToggleDropdown","sortingBy","onItemClicked","staticDays","arrayKeys","kenmerkFacets","otherKeys","createActiveFilter","filterKey","activeFilters","filterArray","filterValue","removeAll","remove","activeFilter","filterCopy","valueIndex","removeLocation","getKenmerk","kenmerkFacet","onChange","selectedOption","distances","hasLocation","getBoundingClientRect","getWindow","node","ownerDocument","getWindowScroll","win","scrollLeft","scrollTop","isElement","OwnElement","isHTMLElement","getHTMLElementScroll","getNodeScroll","getNodeName","getDocumentElement","getWindowScrollBarX","getComputedStyle","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","isFixed","documentElement","isOffsetParentAnElement","scroll","offsets","getLayoutRect","getParentNode","getScrollParent","listScrollParents","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","html","getContainingBlock","currentNode","css","getOffsetParent","window","top","bottom","right","left","auto","basePlacements","clippingParents","viewport","popper","variationPlacements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","order","modifiers","visited","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","pending","getBasePlacement","mergeByName","merged","current","getViewportRect","visualViewport","getDocumentRect","winScroll","contains","child","isShadow","next","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","mainClippingParents","firstClippingParent","clippingRect","accRect","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","getFreshSideObject","mergePaddingObject","expandToHashMap","hashMap","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","_options$altBoundary","_options$padding","altContext","referenceElement","popperRect","referenceClientRect","popperOffsets","popperClientRect","overflowOffsets","offsetData","multiply","DEFAULT_OPTIONS","areValidElements","_len","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","effectCleanupFns","isDestroyed","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref3","_ref3$options","effect","cleanupFn","noopFn","passive","_options$scroll","_options$resize","resize","scrollParents","eventListeners","popperOffsets$1","unsetSides","roundOffsets","dpr","mapToStyles","_ref2","_Object$assign2","gpuAcceleration","adaptive","_roundOffsets","hasX","hasY","sideX","sideY","commonStyles","_Object$assign","computeStyles","_options$gpuAccelerat","_options$adaptive","computeStyles$1","applyStyles","attributes","initialStyles","styleProperties","property","attribute","applyStyles$1","distanceAndSkiddingToXY","invertDistance","skidding","_options$offset","_data$state$placement","offset$1","matched","getOppositeVariationPlacement","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","getExpandedFallbackPlacements","_options$mainAxis","_options$altAxis","checkAltAxis","_options$flipVariatio","preferredPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getAltAxis","within","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","preventOverflow$1","_state$modifiersData$","axisProp","_options$element","arrow$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","createPopper","__defProp","__defNormalProp","commonjsGlobal","getDefaultExportFromCjs","objectProto$g","hasOwnProperty$d","baseHas$1","object","_baseHas","isArray$c","isArray_1","freeGlobal$1","_freeGlobal","root$8","_root","root$7","Symbol$5","_Symbol","Symbol$4","objectProto$f","hasOwnProperty$c","nativeObjectToString$1","symToStringTag$1","getRawTag$1","isOwn","unmasked","_getRawTag","objectProto$e","nativeObjectToString","objectToString$1","_objectToString","Symbol$3","getRawTag","nullTag","undefinedTag","symToStringTag","baseGetTag$a","_baseGetTag","isObjectLike$b","isObjectLike_1","baseGetTag$9","isObjectLike$a","symbolTag$1","isSymbol$3","isSymbol_1","isArray$b","isSymbol$2","reIsDeepProp","reIsPlainProp","isKey$3","_isKey","isObject$a","isObject_1","baseGetTag$8","isObject$9","asyncTag","funcTag$1","genTag","proxyTag","isFunction$3","isFunction_1","root$6","coreJsData$1","_coreJsData","coreJsData","maskSrcKey","uid","isMasked$1","_isMasked","funcProto$2","funcToString$2","toSource$2","_toSource","isFunction$2","isMasked","isObject$8","toSource$1","reRegExpChar","reIsHostCtor","funcProto$1","objectProto$d","funcToString$1","hasOwnProperty$b","reIsNative","baseIsNative$1","_baseIsNative","getValue$1","_getValue","baseIsNative","getValue","getNative$7","_getNative","getNative$6","nativeCreate$4","_nativeCreate","nativeCreate$3","hashClear$1","_hashClear","hashDelete$1","_hashDelete","nativeCreate$2","HASH_UNDEFINED$2","objectProto$c","hasOwnProperty$a","hashGet$1","data2","_hashGet","nativeCreate$1","objectProto$b","hasOwnProperty$9","hashHas$1","_hashHas","nativeCreate","HASH_UNDEFINED$1","hashSet$1","_hashSet","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash$1","entries","index2","entry","_Hash","listCacheClear$1","_listCacheClear","eq$6","eq_1","eq$5","assocIndexOf$4","_assocIndexOf","assocIndexOf$3","arrayProto","splice","listCacheDelete$1","lastIndex","_listCacheDelete","assocIndexOf$2","listCacheGet$1","_listCacheGet","assocIndexOf$1","listCacheHas$1","_listCacheHas","assocIndexOf","listCacheSet$1","_listCacheSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache$4","_ListCache","getNative$5","root$5","Map$3","_Map","Hash","ListCache$3","Map$2","mapCacheClear$1","_mapCacheClear","isKeyable$1","_isKeyable","isKeyable","getMapData$4","_getMapData","getMapData$3","mapCacheDelete$1","_mapCacheDelete","getMapData$2","mapCacheGet$1","_mapCacheGet","getMapData$1","mapCacheHas$1","_mapCacheHas","getMapData","mapCacheSet$1","_mapCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache$3","_MapCache","MapCache$2","memoize$1","memoized","memoize_1","memoize","MAX_MEMOIZE_SIZE","memoizeCapped$1","_memoizeCapped","memoizeCapped","rePropName","reEscapeChar","stringToPath$1","number","quote","subString","_stringToPath","arrayMap$1","iteratee","_arrayMap","Symbol$2","arrayMap","isArray$a","isSymbol$1","INFINITY$1","symbolProto$1","symbolToString","baseToString$1","_baseToString","baseToString","toString$1","toString_1","isArray$9","isKey$2","stringToPath","castPath$2","_castPath","baseGetTag$7","isObjectLike$9","argsTag$2","baseIsArguments$1","_baseIsArguments","baseIsArguments","isObjectLike$8","objectProto$a","hasOwnProperty$8","propertyIsEnumerable$1","isArguments$3","isArguments_1","MAX_SAFE_INTEGER$1","reIsUint","isIndex$3","_isIndex","MAX_SAFE_INTEGER","isLength$3","isLength_1","INFINITY","toKey$4","_toKey","castPath$1","isArguments$2","isArray$8","isIndex$2","isLength$2","toKey$3","hasPath$2","hasFunc","_hasPath","baseHas","hasPath$1","has$1","has_1","baseGetTag$6","isObjectLike$7","dateTag$2","baseIsDate$1","_baseIsDate","baseUnary$2","_baseUnary","_nodeUtilExports","_nodeUtil","freeGlobal2","moduleExports","freeProcess","nodeUtil2","baseIsDate","baseUnary$1","nodeUtil$1","nodeIsDate","isDate$1","isDate_1","baseGetTag$5","isArray$7","isObjectLike$6","stringTag$2","isString","isString_1","arraySome$2","predicate","_arraySome","ListCache$2","stackClear$1","_stackClear","stackDelete$1","_stackDelete","stackGet$1","_stackGet","stackHas$1","_stackHas","ListCache$1","Map$1","MapCache$1","LARGE_ARRAY_SIZE","stackSet$1","pairs","_stackSet","ListCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack$3","_Stack","HASH_UNDEFINED","setCacheAdd$1","_setCacheAdd","setCacheHas$1","_setCacheHas","MapCache","setCacheAdd","setCacheHas","SetCache$1","_SetCache","cacheHas$1","_cacheHas","SetCache","arraySome$1","cacheHas","COMPARE_PARTIAL_FLAG$5","COMPARE_UNORDERED_FLAG$3","equalArrays$2","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othValue2","othIndex","_equalArrays","root$4","Uint8Array$2","_Uint8Array","mapToArray$1","_mapToArray","setToArray$1","set","_setToArray","Symbol$1","Uint8Array$1","eq$4","equalArrays$1","mapToArray","setToArray","COMPARE_PARTIAL_FLAG$4","COMPARE_UNORDERED_FLAG$2","boolTag$2","dateTag$1","errorTag$1","mapTag$2","numberTag$2","regexpTag$1","setTag$2","stringTag$1","arrayBufferTag$1","dataViewTag$2","symbolProto","symbolValueOf","equalByTag$1","convert","stacked","_equalByTag","arrayPush$1","_arrayPush","arrayPush","isArray$6","baseGetAllKeys$1","keysFunc","symbolsFunc","_baseGetAllKeys","arrayFilter$1","resIndex","_arrayFilter","stubArray$1","stubArray_1","arrayFilter","stubArray","objectProto$9","propertyIsEnumerable","nativeGetSymbols","getSymbols$1","symbol","_getSymbols","baseTimes$1","_baseTimes","isBufferExports","isBuffer$3","stubFalse","stubFalse_1","root2","stubFalse2","Buffer2","nativeIsBuffer","isBuffer2","baseGetTag$4","isLength$1","isObjectLike$5","argsTag$1","arrayTag$1","boolTag$1","dateTag","errorTag","funcTag","mapTag$1","numberTag$1","objectTag$3","regexpTag","setTag$1","stringTag","weakMapTag$1","arrayBufferTag","dataViewTag$1","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray$1","_baseIsTypedArray","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray$3","isTypedArray_1","baseTimes","isArguments$1","isArray$5","isBuffer$2","isIndex$1","isTypedArray$2","objectProto$8","hasOwnProperty$7","arrayLikeKeys$2","inherited","isArr","isArg","isBuff","isType","skipIndexes","_arrayLikeKeys","objectProto$7","isPrototype$3","Ctor","proto","_isPrototype","overArg$2","transform","_overArg","overArg$1","nativeKeys$1","_nativeKeys","isPrototype$2","nativeKeys","objectProto$6","hasOwnProperty$6","baseKeys$1","_baseKeys","isFunction$1","isLength","isArrayLike$5","isArrayLike_1","arrayLikeKeys$1","baseKeys","isArrayLike$4","keys$3","keys_1","baseGetAllKeys","getSymbols","keys$2","getAllKeys$1","_getAllKeys","getAllKeys","COMPARE_PARTIAL_FLAG$3","objectProto$5","hasOwnProperty$5","equalObjects$1","objProps","objLength","othProps","objStacked","skipCtor","objValue","objCtor","othCtor","_equalObjects","getNative$4","root$3","DataView$1","_DataView","getNative$3","root$2","Promise$2","_Promise","getNative$2","root$1","Set$1","_Set","getNative$1","WeakMap$1","_WeakMap","DataView","Map","Promise$1","Set","WeakMap","baseGetTag$3","toSource","mapTag","objectTag$2","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag$1","ctorString","_getTag","Stack$2","equalArrays","equalByTag","equalObjects","getTag","isArray$4","isBuffer$1","isTypedArray$1","COMPARE_PARTIAL_FLAG$2","argsTag","arrayTag","objectTag$1","objectProto$4","hasOwnProperty$4","baseIsEqualDeep$1","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","_baseIsEqualDeep","baseIsEqualDeep","isObjectLike$4","baseIsEqual$2","_baseIsEqual","Stack$1","baseIsEqual$1","COMPARE_PARTIAL_FLAG$1","COMPARE_UNORDERED_FLAG$1","baseIsMatch$1","matchData","noCustomizer","srcValue","_baseIsMatch","isObject$7","isStrictComparable$2","_isStrictComparable","isStrictComparable$1","keys$1","getMatchData$1","_getMatchData","matchesStrictComparable$2","_matchesStrictComparable","baseIsMatch","getMatchData","matchesStrictComparable$1","baseMatches$1","_baseMatches","castPath","toKey$2","baseGet$2","_baseGet","baseGet$1","get$1","defaultValue","get_1","baseHasIn$1","_baseHasIn","baseHasIn","hasPath","hasIn$1","hasIn_1","baseIsEqual","get","hasIn","isKey$1","isStrictComparable","matchesStrictComparable","toKey$1","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","baseMatchesProperty$1","_baseMatchesProperty","identity$3","identity_1","baseProperty$1","_baseProperty","baseGet","basePropertyDeep$1","_basePropertyDeep","baseProperty","basePropertyDeep","isKey","toKey","property$1","property_1","baseMatches","baseMatchesProperty","identity$2","isArray$3","baseIteratee$2","_baseIteratee","createBaseFor$1","fromRight","iterable","_createBaseFor","createBaseFor","baseFor$2","_baseFor","baseFor$1","baseForOwn$2","_baseForOwn","isArrayLike$3","createBaseEach$1","eachFunc","collection","_createBaseEach","baseForOwn$1","createBaseEach","baseEach$1","_baseEach","baseEach","baseSome$1","collection2","_baseSome","eq$3","isArrayLike$2","isIndex","isObject$6","isIterateeCall$3","_isIterateeCall","arraySome","baseIteratee$1","baseSome","isArray$2","isIterateeCall$2","some","guard","some_1","baseGetTag$2","isObjectLike$3","boolTag","isBoolean","isBoolean_1","baseGetTag$1","isObjectLike$2","numberTag","isNumber","isNumber_1","getNative","defineProperty$2","_defineProperty","defineProperty$1","baseAssignValue$4","_baseAssignValue","baseAssignValue$3","eq$2","objectProto$3","hasOwnProperty$3","assignValue$1","_assignValue","baseAssignValue$2","baseForOwn","baseIteratee","mapValues","object2","mapValues_1","apply$2","_apply","apply$1","overRest$1","otherArgs","_overRest","constant$1","constant_1","constant","defineProperty","identity$1","baseSetToString$1","_baseSetToString","HOT_COUNT","HOT_SPAN","nativeNow","shortOut$1","count","lastCalled","stamp","remaining","_shortOut","baseSetToString","shortOut","setToString$1","_setToString","identity","overRest","setToString","baseRest$3","_baseRest","nativeKeysIn$1","_nativeKeysIn","isObject$5","isPrototype$1","nativeKeysIn","objectProto$2","hasOwnProperty$2","baseKeysIn$1","isProto","_baseKeysIn","arrayLikeKeys","baseKeysIn","isArrayLike$1","keysIn$3","keysIn_1","baseRest$2","eq$1","isIterateeCall$1","keysIn$2","objectProto$1","hasOwnProperty$1","defaults","sources","propsIndex","propsLength","defaults_1","baseAssignValue$1","eq","assignMergeValue$2","_assignMergeValue","_cloneBufferExports","_cloneBuffer","allocUnsafe","cloneBuffer2","isDeep","Uint8Array2","cloneArrayBuffer$1","arrayBuffer","_cloneArrayBuffer","cloneArrayBuffer","cloneTypedArray$1","typedArray","_cloneTypedArray","copyArray$1","_copyArray","isObject$4","objectCreate","baseCreate$1","_baseCreate","overArg","getPrototype$2","_getPrototype","baseCreate","getPrototype$1","isPrototype","initCloneObject$1","_initCloneObject","isArrayLike","isObjectLike$1","isArrayLikeObject$1","isArrayLikeObject_1","baseGetTag","getPrototype","objectTag","funcProto","funcToString","objectCtorString","isPlainObject$1","isPlainObject_1","safeGet$2","_safeGet","assignValue","baseAssignValue","copyObject$1","isNew","_copyObject","copyObject","keysIn$1","toPlainObject$1","toPlainObject_1","assignMergeValue$1","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArguments","isArray$1","isArrayLikeObject","isBuffer","isFunction","isObject$3","isTypedArray","safeGet$1","toPlainObject","baseMergeDeep$1","srcIndex","mergeFunc","isCommon","isTyped","_baseMergeDeep","Stack","assignMergeValue","baseFor","baseMergeDeep","isObject$2","keysIn","safeGet","baseMerge$2","_baseMerge","baseMerge$1","isObject$1","customDefaultsMerge$1","_customDefaultsMerge","baseRest$1","isIterateeCall","createAssigner$1","assigner","_createAssigner","baseMerge","createAssigner","mergeWith$1","mergeWith_1","baseRest","customDefaultsMerge","mergeWith","defaultsDeep","defaultsDeep_1","head","head_1","last","last_1","getType","isDate","hasAny","pad","char","isArray","arrayHasItems","resolveEl","off","on","elementContains","onSpaceOrEnter","omit","keys2","num","toIntegerExports","toInteger$2","toInteger2","dirtyNumber","toInteger$1","getTimezoneOffsetInMillisecondsExports","getTimezoneOffsetInMilliseconds$2","getTimezoneOffsetInMilliseconds2","utcDate","getTimezoneOffsetInMilliseconds$1","tzTokenizeDate","timeZone","dtf","getDateTimeFormat","partsOffset","hackyOffset","typeToPos","formatted","filled","pos","dtfCache","testDateFormatted","hourCycleSupported","newDateUTC","fullYear","hour","minute","second","millisecond","MILLISECONDS_IN_HOUR$1","MILLISECONDS_IN_MINUTE$1","patterns$1","tzParseTimezone","timezoneString","isUtcDate","token2","absoluteOffset","hours2","validateTimezone","isValidTimezoneIANAString","toUtcDate","calcOffset","fixedOffset","fixOffset","asUTC","asTS","over","localTS","utcGuess","o2","o3","validIANATimezoneCache","timeZoneString","tzPattern","tzPattern$1","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","DEFAULT_ADDITIONAL_DIGITS","patterns","toDate$1","argument","dirtyOptions","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","restDateString","parseDate$1","timestamp","parseTime","timeString","patternYYY","patternYYYYY","yearString","centuryString","validateDate","dayOfYear","validateDayOfYearDate","validateWeekDate","dayOfISOWeekYear","dayOfWeek","validateTime","isoWeekYear","fourthOfJanuaryDay","requiredArgs","required","_typeof","obj2","argStr","toInteger","startOfWeek$1","dirtyDate","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","defaultOptions2","MILLISECONDS_IN_WEEK$2","differenceInCalendarWeeks","dirtyDateLeft","dirtyDateRight","startOfWeekLeft","startOfWeekRight","timestampLeft","timestampRight","lastDayOfMonth","startOfMonth","getWeeksInMonth","_options$firstWeekCon","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","startOfWeekYear","firstWeek","MILLISECONDS_IN_WEEK$1","getISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","startOfISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","dirtyAmount","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","addYears","viewAddressKeys","getDays","monthComps","prevMonthComps","nextMonthComps","days","firstDayOfWeek","firstWeekday","isoWeeknumbers","weeknumbers","numDays","numWeeks","prevMonthDaysToShow","daysInWeek","prevMonth","thisMonth","nextMonth","formatter","dayFromEnd","weekdayOrdinal","weekdayOrdinalFromEnd","weekFromEnd","today","todayDay","todayMonth","todayYear","weeksInMonth","weekday","startDate","noonDate","endDate","weekdayPosition","weekdayPositionFromEnd","weeknumber","isoWeeknumber","isToday","isFirstDay","isLastDay","onTop","onBottom","onLeft","onRight","getDayIndex","getWeeks","showWeeknumbers","showIsoWeeknumbers","result2","weekIndex","fromDay","toDay","getWeekdays","getPageId","getPageAddressForDate","view","addPages","newDate","pageIsValid","page","pageIsBeforePage","comparePage","pageIsAfterPage","pageIsBetweenPages","fromPage","toPage","pageIsEqualToPage","aPage","bPage","pageRangeToArray","from","getPageKey","getCachedPage","weeks","weekdays2","cachedPage","trimWeeks","dayObj","weekObj","Cache","createKey","createItem","removeKey","DateRange","Locale","span","repeat","DateRepeat","ranges","dayParts","range","startDayIndex","endDayIndex","DateRangeContext","_c","_d","_a2","_b2","MS_PER_DAY","record","cell","records","onStart","onEnd","startTime","endTime","allDay","locales","localeSettings","dow","title","weekdays","navMonths","inputDateTime","inputDateTime24hr","inputTime","inputTime24hr","dayPopover","model","iso","masks","maxSwipeTime","minHorizontalSwipeDistance","maxVerticalSwipeDistance","touch","defaultConfig","defaultLocales","getDefault","setupDefaults","userDefaults","DEFAULT_MONTH_CACHE_SIZE","DEFAULT_PAGE_CACHE_SIZE","resolveConfig","locales2","detLocale","localeKeys","validKey","lk","defLocale","timezone","masks2","monthCacheSize","pageCacheSize","getMonthPartsKey","getMonthParts","getDayNames","getMonthNames","getRelativeTimeNames","formatDate","parseDate","nullDate","fillDate","patch","rules","isDateParts","fillParts","DatePatchKeys","applyRulesForDateParts","dte","getDateParts","getDateFromParts","milliseconds","getHourDates","GroupRuleType","GroupRuleType2","IntervalRuleType","IntervalRuleType2","ComponentRuleType","ComponentRuleType2","OrdinalComponentRuleType","OrdinalComponentRuleType2","IntervalRule","interval","dateParts","diffInDays","diffInWeeks","diffInMonths","diffInYears","ComponentRule","components2","getter","DaysRule","WeekdaysRule","WeeksRule","MonthsRule","YearsRule","comp","isDayInMonth","isDayOfWeek","isWeekInMonth","isMonthInYear","OrdinalComponentRule","numOrArray","isOrdinalWeekInMonth","ordinalWeek","ordinalWeekday","FunctionRule","dayInMonth","weekInMonth","monthInYear","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","daysInMonths","maskMacros","DATE_PART_RANGES","literal","formatFlags","twoDigits","threeDigits","fourDigits","word","noop","monthUpdate","arrName","parseFlags","cent","normalizeMasks","curr","daysToAdd","d1","d2","hrs","sec","ms","tzDate","monthParts","inLeapYear","firstDayOfMonth","getWeekdayDates","dates","localeId","units","rtf","unit","getMonthDates","datePartIsValid","rule","getDatePartOptions","getDatePartsOptions","getNearestDatePart","opt","diffPrev","isValid","dp","$0","info","literals","attrKey","Attribute","theme","simpleRanges","repeatRanges","showPopover","hidePopover","togglePopover","getPopoverEventHandlers","visibility","click","hover","hoverFocus","focus","hovered","clickHandler","mouseMoveHandler","mouseLeaveHandler","focusInHandler","focusOutHandler","removeHandlers","addHandlers","popoverDirective","binding","oldVisibility","newVisibility","addHorizontalSwipeHandler","maxSwipeTime2","minHorizontalSwipeDistance2","maxVerticalSwipeDistance2","startX","startY","isSwiping","touchStart","touchEnd","deltaX","deltaY","watchSkippers","skipWatcher","watcher","durationMs","handleWatcher","dateTime","windowExists","windowHasFeature","useDarkMode","isDark","displayMode","mediaQuery","mutationObserver","mqListener","setupSystem","moListener","selector","darkClass","setupClass","config2","setup","stopObservers","stopWatch","cleanup","onUnmounted","targetProps","displayProps","_defaultProfile","normalizeConfig","defaultProfile","rootColor","targetType","targetConfig","targetColor","HighlightRenderer","glyphs","highlight","highlights","base","BaseRenderer","collectionType","ContentRenderer","DotRenderer","BarRenderer","Theme","attr","renderer","contextKey$4","propsDef$2","createBase","minDate","maxDate","disabledDates","disabledAttribute","useOrCreateBase","contextKey$3","slotKey","provideSlots","remap","useSlot","propsDef$1","emitsDef","contextKey$2","createCalendar","containerRef","focusedDay","focusableDay","inTransition","navPopoverId","dayPopoverId","_view","_pages","transitionName","transitionPromise","removeHandlers2","firstPage","lastPage","minPage","getDateAddress","maxPage","navVisibility","isMonthly","isWeekly","isDaily","onTransitionBeforeEnter","onTransitionAfterEnter","addPages$1","address","count2","refreshDisabled","attributeContext","refreshFocusable","forDays","pages","hasAttributes","dayCells","getWeeknumberPosition","column","columnFromEnd","showWeeknumbers2","getPageForAttributes","attr2","getDefaultInitialPage","getTargetPageRange","force","pagesToAdd","getPageTransition","oldPage","newPage","defaultTransition","moveNext2","movePrev2","refreshPages","transition","position2","row","rowFromEnd","weeknumberPosition","targetBy","canMove","canMoveBy","canMovePrev","canMoveNext","move","moveBy","movePrev","moveNext","tryFocusDate","inMonth","daySelector","focusableEl","focusDate","onDayClick","onDayMouseenter","onDayMouseleave","onDayFocusin","onDayFocusout","onDayKeydown","onKeydown","onWeeknumberClick","toLeft","toRight","watchEffect","useCalendar","_sfc_main$k","defineComponent","timeout","popoverRef","state2","updateDirection","onPopperUpdate","popperOptions","isLeftRight","alignment2","destroyPopper","setupPopper","nextTick","updateState","newState","setTimer","delay","isCurrentTarget","show","toggle","onDocumentClick","popperRef","onDocumentKeydown","onDocumentShowPopover","detail","onDocumentHidePopover","onDocumentTogglePopover","addEvents","removeEvents","beforeEnter","afterEnter","beforeLeave","afterLeave","onClick","onMouseOver","onMouseLeave","onFocusIn","onFocusOut","cleanupRO","toRefs","_export_sfc","_sfc_render$7","openBlock","createElementBlock","normalizeClass","createVNode","Transition","withCtx","mergeProps","renderSlot","createTextVNode","toDisplayString","createElementVNode","createCommentVNode","Popover","_hoisted_1$c","_hoisted_2$b","_hoisted_3$9","_sfc_main$j","indicator","content","dot","bar","popover","__default__$3","_sfc_main$i","slot","createBlock","resolveDynamicComponent","normalizeProps","_hoisted_1$b","_hoisted_2$a","_sfc_main$h","dayTitle","Fragment","renderList","_sfc_main$g","_hoisted_1$a","_hoisted_2$9","_hoisted_3$8","_sfc_render$6","IconChevronRight","_sfc_main$f","_hoisted_1$9","_hoisted_2$8","_hoisted_3$7","_sfc_render$5","IconChevronLeft","_sfc_main$e","_hoisted_1$8","_hoisted_2$7","_hoisted_3$6","_sfc_render$4","IconChevronDown","_sfc_main$d","_hoisted_1$7","_hoisted_2$6","_hoisted_3$5","_sfc_render$3","IconClock","icons","_sfc_main$c","_hoisted_1$6","_hoisted_2$5","_hoisted_3$4","_hoisted_4$3","_sfc_main$b","navPlacement","navPopoverOptions","titleLeft","titleRight","layout_","gridStyle","normalizeStyle","withKeys","withDirectives","contextKey$1","createPage","getMonthItems","thisYear","getYearItems","startYear","endYear","items","enabled","usePage","_hoisted_1$5","_hoisted_2$4","_hoisted_3$3","_hoisted_4$2","_hoisted_5$2","_sfc_main$a","monthMode","yearGroupCount","selectedYear","selectedYearGroup","getYearGroupIndex","navContainer","focusFirstItem","toggleMode","getStartYear","groupIndex","getEndYear","prevItemsEnabled","movePrevYear","movePrevYearGroup","nextItemsEnabled","moveNextYear","moveNextYearGroup","monthItems","prevMonthItems","prevMonthItemsEnabled","nextMonthItems","nextMonthItemsEnabled","yearItems","prevYearItems","prevYearItemsEnabled","nextYearItems","nextYearItemsEnabled","activeItems","firstYear","lastYear","title2","_sfc_main$9","toRef","_sfc_main$8","_sfc_main$7","attributeCells","attributedDay","processPopover","popovers2","customData","resolvedPopover","hasHighlights","hasDots","bars","hasBars","popovers","popoverAttrs","dayContentSlot","dayClasses","dayContentProps","tabindex","classes","dayContentEvents","dayPopover2","_hoisted_1$4","_hoisted_2$3","_hoisted_3$2","_hoisted_4$1","_hoisted_5$1","_sfc_render$2","_component_CalendarSlot","resolveComponent","_directive_popover","resolveDirective","wrapperClass","bgClass","toHandlers","CalendarDay","_hoisted_1$3","_hoisted_2$2","__default__$2","_sfc_main$6","label","$event","_sfc_main$5","_hoisted_1$2","_sfc_render$1","_component_CalendarHeader","_component_CalendarPage","_component_CalendarPageProvider","_component_CalendarDayPopover","_component_CalendarNavPopover","withModifiers","Calendar","contextKey","propsDef","createDatePicker","baseCtx","showCalendar","datePickerPopoverId","dateValue","dragValue","inputValues","calendarRef","updateTimeout","dragTrackingValue","watchValue","isRange","valueStart","valueEnd","isDateMode","isDateTimeMode","isTimeMode","isDragging","modelConfig","normalizeConfig2","getDateParts2","inputMask","inputMaskHasTime","inputMaskHasDate","inputMaskPatch","popoverEvents","inputValue","inputEvents","onInputInput","onInputChange","onInputKeyup","selectAttribute","hasValue","dragAttribute","getAutoRules","_rules","normalizeDateConfig","hasDateValue","hasRangeValue","valuesAreEqual","aIsDate","bIsDate","valueIsDisabled","normalizeValue","targetPriority","sortRange","denormalizeValue","updateValue","forceUpdateValue","clearIfEqual","fInput","hPopover","dragging","mValue","normalizedConfig","normalizedValue","valueRef","denormalizedValue","hidePopover$1","formatInput","moveToValue","onInputUpdate","inputValue2","cancelDrag","onPopoverBeforeShow","onPopoverAfterShow","onPopoverBeforeHide","onPopoverAfterHide","handleDayClick","onDayMouseEnter","showPopover$1","togglePopover$1","dValue","useDatePicker","_amOptions","_pmOptions","createTimePicker","is24hr","hideTimeHeader","timeAccuracy","updateDpValue","updateParts","newParts","partsValid","showHeader","date2","isAM","hValue","amHourOptions","ho","pmHourOptions","hourOptions","isAMOptions","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","__default__$1","_sfc_main$4","selectedLabel","option","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_sfc_main$3","timePicker","isRef","_sfc_main$2","positions","_sfc_main$1","guardReactiveProps","datePicker","slotCtx","_sfc_render","_component_DatePickerPopover","_component_DatePickerBase","DatePicker","components","install","defaults2","componentKey","getInitialDates","onDaySelect","newEndDate","isOpen","toggleOpen","toggleDay","selectedCopy","toggledIndex","clearSelected","initialSearchResults","debouncedSearch","hasItems","hasGroups","searchResults","showMore","usingSlots","toggleSidebarFilter","resultCount","sidebarFilterAriaLabel","newFacets","kenmerk","indexOf","facet","selectedFacets","unselectedFacets","showFacetList","sortByName","sortToUse","sortByOrder","sortByCount","overFlowCount","nUnusedToShow","hasMoreToShow","isSelected","onFacetChange","activeFacetsCopy","facetId","indexOfFacet","toggleShowMore","showMoreButtonText","close","ZoekalertRepository","profileId","zoekAlertRepository","profileStore","onSubscribeClick","gtag","parsedFilters","onUnsubscribeClick","closeNotLoggedInPopover","login","register","ActivatieRepository","activatieId","clubfinderApi","activatieRepository","isEmpty","maxZoom","getSafeNumber","parsedValue","cmsData","CmsDataProvider","CMS_DATA_ID","usingHash","sortOptions","currentSort","searchFilter","selectedDayPart","dayPart","createActiviteitFilter","loadMapMarkersIfNeeded","toggleDistanceSortOption","newLat","newLon","onActivitySelect","facetKey","entity","tryDistanceSearch","onLocationSelected","addToDataLayer","onDistanceChange","locateUser","setVisibleItems","onShowMore","toggleClubMode","onSortChange","sortBy","getFacetsOfGroup","facetName","onQueryChange","onDateSelect","onDaysChange","activatieFacets","onDayPartSelect","onAgeChange","markerData","toggleMap","clearDistance","getKenmerken","kenmerken","activitiesSingular","activitiesPlural","generateFacetList","rebuildFilters","searchOnLocation","allEntries","locationDistanceFilters","class2type","isArraylike","hasOwn","store","setId","copyIsArray","clone","deep","elem","$makeArray","first","elems","queue","box","offsetParentFn","parentOffset","document","undefined","IE","rAFShim","timeLast","timeCurrent","timeDelta","performance","perf","nowOffset","compactSparseArray","_slice","slice","begin","cloned","upTo","_inArray","sanitizeElements","Type","variable","isJQuery","DURATION_DEFAULT","EASING_DEFAULT","Velocity","queueName","currentTime","activeCall","pauseDelayOnElement","resumeDelayOnElement","Data","generateStep","steps","generateBezier","mX1","mY1","mX2","mY2","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","mSampleValues","aA1","aA2","calcBezier","aT","getSlope","newtonRaphsonIterate","aX","aGuessT","currentSlope","currentX","calcSampleValues","binarySubdivide","aA","aB","currentT","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","_precomputed","precompute","generateSpringRK4","springAccelerationForState","springEvaluateStateWithDerivative","initialState","derivative","springIntegrateState","dxdt","dvdt","springRK4Factory","tension","friction","duration","initState","time_lapsed","tolerance","DT","have_duration","last_state","percentComplete","easingArray","getEasing","easing","CSS","rgbComponents","rootProperty","hookTemplate","hookNames","defaultValues","fullHookName","hookPosition","hookData","rootPropertyValue","hookRoot","hookValue","rootPropertyValueParts","rootPropertyValueUpdated","propertyValue","extracted","blurComponent","transformName","invalid","colorName","converted","colorNames","augmentDimension","wantInner","isBorderBox","augment","fields","getDimension","subMatch","SVGAttributes","vendors","vendorsLength","propertyPrefixed","hex","shortformRegex","longformRegex","rgbParts","tagName","className","currentClass","forceStyleLookup","computePropertyValue","computedValue","toggleDisplay","revertDisplay","contentBoxHeight","contentBoxWidth","computedStyle","hook","normalizedPropertyName","normalizedPropertyValue","scrollData","propertyName","hookName","transformString","getTransformFloat","transformProperty","SVGTransforms","transformValue","perspective","arg2","arg3","adjustedSet","animate","getChain","isUtility","promiseData","elementsWrapped","syntacticSugar","argumentIndex","propertiesMap","elementsLength","elementsIndex","startingArgumentPosition","action","found","activeElement","callsToStop","activeTween","completeCall","durationOriginal","delayOriginal","elementIndex","abortError","callUnitConversionData","call","processElement","elementArrayIndex","tweensContainer","elementUnitConversionData","clearQueue","callIndex","delayComplete","buildQueue","lastTweensContainer","scrollDirection","scrollOffset","scrollPositionCurrent","scrollPositionCurrentAlternate","scrollPositionEnd","lastTween","lastStartValue","parsePropertyValue","valueData","skipResolvingEasing","endValue","startValue","fixPropertyValue","separatedValue","endValueUnitType","startValueUnitType","operator","separateValue","unitType","numericValue","iStart","iEnd","aStart","aEnd","inCalc","inRGB","inRGBA","cStart","cEnd","tStart","tEnd","dotStart","dotEnd","uStart","uEnd","nStart","nEnd","calculateUnitRatios","sameRatioIndicators","samePercentRatio","sameEmRatio","measurement","unitRatios","dummy","colorComponents","endValueRGB","startValueRGB","dataArray","tick","reverseCallsCount","reverseOptions","ticker","updateTicker","callsLength","callContainer","timeStart","firstTick","tweenDummyValue","pauseObject","millisecondsEllapsed","callLength","transformPropertyExists","flexValues","flexValue","tween","currentValue","patternReplace","round","tweenDelta","rootPropertyValueCache","adjustedSetData","isStopped","remainingCallsExist","transformHAPropertyExists","tweenContainer","oldStartValue","elementsSize","complete","inlineValues","computedValues","pinia","createPinia","setActivePinia","createApp","ZoekActiviteiten","setupCalendar","Notifications","velocity","defineCustomElement","VCalendar"],"mappings":"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","x_google_ignoreList":[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,45,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,185]}