{"version":3,"file":"app.js","sources":["src/navigation.js","src/util/Router.ts","src/util/error-handling.ts","src/routes/Common/initHealthConditionsSearch.ts","src/modules/media/LegacyLazyloadImageHandling.ts","src/modules/snap-scroll-navigation.ts","src/modules/live-chat.ts","src/modules/scroll-reveal.js","src/modules/shortcode-breed-health.js","src/modules/skip-link-focus.js","src/modules/anchor-links.ts","src/modules/widgets/conclusionBlockSlider.ts","src/blog.ts","src/routes/Common/index.ts","src/routes/PageTemplateTempCustomPage.ts","src/routes/PageTemplateTempAncestry.ts","src/modules/image-helpers.js","src/modules/featured-cards.js","src/routes/PageTemplateTempOurStory.ts","src/routes/SingleBreeds.ts","src/routes/PageTemplateTempShelters.ts","src/routes/PageTemplateTempTraitsList.ts","src/modules/database/pagination.ts","src/modules/database/filters.ts","node_modules/fuse.js/dist/fuse.esm.js","src/modules/database/accordion.ts","src/modules/database/search.ts","node_modules/lodash/isFunction.js","node_modules/lodash/_coreJsData.js","node_modules/lodash/_isMasked.js","node_modules/lodash/_toSource.js","node_modules/lodash/_baseIsNative.js","node_modules/lodash/_getValue.js","node_modules/lodash/_getNative.js","node_modules/lodash/_nativeCreate.js","node_modules/lodash/_hashClear.js","node_modules/lodash/_hashDelete.js","node_modules/lodash/_hashGet.js","node_modules/lodash/_hashHas.js","node_modules/lodash/_hashSet.js","node_modules/lodash/_Hash.js","node_modules/lodash/_listCacheClear.js","node_modules/lodash/eq.js","node_modules/lodash/_assocIndexOf.js","node_modules/lodash/_listCacheDelete.js","node_modules/lodash/_listCacheGet.js","node_modules/lodash/_listCacheHas.js","node_modules/lodash/_listCacheSet.js","node_modules/lodash/_ListCache.js","node_modules/lodash/_Map.js","node_modules/lodash/_mapCacheClear.js","node_modules/lodash/_isKeyable.js","node_modules/lodash/_getMapData.js","node_modules/lodash/_mapCacheDelete.js","node_modules/lodash/_mapCacheGet.js","node_modules/lodash/_mapCacheHas.js","node_modules/lodash/_mapCacheSet.js","node_modules/lodash/_MapCache.js","node_modules/lodash/_setCacheAdd.js","node_modules/lodash/_setCacheHas.js","node_modules/lodash/_SetCache.js","node_modules/lodash/_baseFindIndex.js","node_modules/lodash/_baseIsNaN.js","node_modules/lodash/_strictIndexOf.js","node_modules/lodash/_baseIndexOf.js","node_modules/lodash/_arrayIncludes.js","node_modules/lodash/_arrayIncludesWith.js","node_modules/lodash/_cacheHas.js","node_modules/lodash/_Set.js","node_modules/lodash/noop.js","node_modules/lodash/_setToArray.js","node_modules/lodash/_createSet.js","node_modules/lodash/_baseUniq.js","node_modules/lodash/uniq.js","src/modules/database/index.ts","src/routes/PageTemplateTempDatabase.ts","src/routes/PageTemplateTempBreedReveal.ts","src/routes/PageTemplateTempMarketplace.ts","src/app.ts"],"sourcesContent":["/**\n * File navigation.js.\n *\n * Handles toggling the navigation menu for small screens and enables TAB key\n * navigation support for dropdown menus.\n */\n(function () {\n const container = document.getElementById('site-navigation');\n if (!container) {\n return;\n }\n\n const button = container.getElementsByTagName('button')[0];\n if ('undefined' === typeof button) {\n return;\n }\n\n const menu = container.getElementsByTagName('ul')[0];\n\n // Hide menu toggle button if menu is empty and return early.\n if ('undefined' === typeof menu) {\n button.style.display = 'none';\n return;\n }\n\n menu.setAttribute('aria-expanded', 'false');\n if (-1 === menu.className.indexOf('nav-menu')) {\n menu.className += ' nav-menu';\n }\n\n button.onclick = function () {\n if (-1 !== container.className.indexOf('toggled')) {\n container.className = container.className.replace(' toggled', '');\n button.setAttribute('aria-expanded', 'false');\n menu.setAttribute('aria-expanded', 'false');\n } else {\n container.className += ' toggled';\n button.setAttribute('aria-expanded', 'true');\n menu.setAttribute('aria-expanded', 'true');\n }\n };\n\n // Get all the link elements within the menu.\n const links = menu.getElementsByTagName('a');\n\n // Each time a menu link is focused or blurred, toggle focus.\n for (const i = 0, len = links.length; i < len; i++) {\n links[i].addEventListener('focus', toggleFocus, true);\n links[i].addEventListener('blur', toggleFocus, true);\n }\n\n /**\n * Sets or removes .focus class on an element.\n */\n function toggleFocus() {\n let self = this; // eslint-disable-line\n\n // Move up through the ancestors of the current link until we hit .nav-menu.\n while (-1 === self.className.indexOf('nav-menu')) {\n // On li elements toggle the class .focus.\n if ('li' === self.tagName.toLowerCase()) {\n if (-1 !== self.className.indexOf('focus')) {\n self.className = self.className.replace(' focus', '');\n } else {\n self.className += ' focus';\n }\n }\n\n self = self.parentElement;\n }\n }\n\n /**\n * Toggles `focus` class to allow submenu access on tablets.\n */\n (function (container) {\n let touchStartFn, i;\n const parentLink = container.querySelectorAll('.menu-item-has-children > a, .page_item_has_children > a');\n\n if ('ontouchstart' in window) {\n touchStartFn = function (e) {\n const menuItem = this.parentNode;\n let i;\n\n if (!menuItem.classList.contains('focus')) {\n e.preventDefault();\n for (i = 0; i < menuItem.parentNode.children.length; ++i) {\n if (menuItem === menuItem.parentNode.children[i]) {\n continue;\n }\n menuItem.parentNode.children[i].classList.remove('focus');\n }\n menuItem.classList.add('focus');\n } else {\n menuItem.classList.remove('focus');\n }\n };\n\n for (i = 0; i < parentLink.length; ++i) {\n parentLink[i].addEventListener('touchstart', touchStartFn, false);\n }\n }\n })(container);\n})();\n","import { FunctionPropertyNames } from './typeHelpers';\n\nexport abstract class DOMRouteHandler {\n static async initAsync(): Promise {\n return;\n }\n\n static init(): void {\n return;\n }\n\n static finalize(): void {\n return;\n }\n}\n\n/**\n * DOM-based Routing\n *\n * Based on {@link http://goo.gl/EUTi53|Markup-based Unobtrusive Comprehensive DOM-ready Execution} by Paul Irish\n *\n * The routing fires all common scripts, followed by the page specific scripts.\n * Add additional events for more control over timing e.g. a finalize event\n */\ntype Routes = Record<\n string,\n {\n initAsync: () => Promise;\n init: () => void;\n finalize: () => void;\n }\n>;\n\nexport class Router {\n public readonly routes: Routes;\n\n /**\n * Create a new Router\n * @param {Object} routes\n */\n constructor(routes: Routes) {\n this.routes = routes;\n }\n\n /**\n * Fire Router events\n * @param {string} route DOM-based route derived from body classes (``)\n * @param {string} [event] Events on the route. By default, `init` and `finalize` events are called.\n */\n fire(route: K, event: FunctionPropertyNames): void {\n document.dispatchEvent(\n new CustomEvent('routed', {\n bubbles: true,\n cancelable: true,\n detail: {\n route,\n fn: event,\n },\n })\n );\n\n const canFire = route !== '' && this.routes[route] && typeof this.routes[route][event] === 'function';\n if (canFire) {\n // @fixme no-floating-promises was ignored here when the rule was introduced\n // in order to avoid a refactor while introducing the new rule.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.routes[route][event]();\n }\n }\n\n /**\n * Automatically load and fire Router events\n *\n * Events are fired in the following order:\n * * common init\n * * page-specific init\n * * page-specific finalize\n * * common finalize\n */\n loadEvents(): void {\n // Fire common init JS\n this.fire('Common', 'init');\n this.fire('Common', 'initAsync');\n\n // Fire page-specific init JS, and then finalize JS\n document.body.className\n .toLowerCase()\n .replace(/-/g, '_')\n .split(/\\s+/)\n .map((str) => {\n // convert CSS class names to PascalCase\n return `${str\n .replace(/[\\W_]/g, '|')\n .split('|')\n .map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)\n .join('')}`;\n })\n .forEach((className) => {\n this.fire(className, 'initAsync');\n this.fire(className, 'init');\n this.fire(className, 'finalize');\n });\n\n // Fire common finalize JS\n this.fire('Common', 'finalize');\n }\n}\n","export const notifyHandledException = (error: Error, logToConsole = false): void => {\n if (logToConsole) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n\n window.Sentry?.captureException(error);\n};\n","import { EventPropertiesType, pushGTMCustomEvent } from '../../modules/pushGTMCustomEvent';\n\nimport { notifyHandledException } from '../../util/error-handling';\n\nexport async function healthConditionsSearchInit(): Promise {\n if (\n document.querySelector('.breed-search.breed-health-search') ||\n document.querySelector('.breed-search.breed-health-search-custom-ui')\n ) {\n import('../../modules/BreedHealthConditions')\n .then(\n async ({\n BreedHealthConditions,\n moveAutocompleteWidgetResultsUnderInputSection,\n replaceAutocompleteResultsMarkup,\n }) => {\n if (document.querySelector('.breed-search.breed-health-search')) {\n await BreedHealthConditions.init();\n }\n\n if (document.querySelector('.breed-search.breed-health-search-custom-ui')) {\n const breedSearchAutocompleteOptions = {\n select(_event: JQuery.UIEventBase, ui: JQueryUI.AutocompleteUIParams) {\n const { item } = ui;\n const searchType = 'Breed Direct Search';\n const eventProperties: EventPropertiesType = {\n eventCategory: searchType,\n eventAction: item.label,\n eventURL: window.location.href,\n };\n if (item.id) {\n pushGTMCustomEvent(searchType, eventProperties);\n window.location.href = `/?p=${item.id}`;\n return false;\n }\n\n eventProperties.eventAction += ' - no results';\n pushGTMCustomEvent(searchType, eventProperties);\n return true;\n },\n create(event: JQuery.UIEventBase) {\n const instance = jQuery(event.target).autocomplete('instance');\n moveAutocompleteWidgetResultsUnderInputSection(instance);\n replaceAutocompleteResultsMarkup(instance);\n },\n };\n\n const useCachedBreedsList = true;\n await BreedHealthConditions.init(breedSearchAutocompleteOptions, useCachedBreedsList);\n }\n }\n )\n .catch((e) => notifyHandledException(e));\n }\n\n if (document.querySelector('.health-search.breed-health-search')) {\n try {\n const { HealthConditions } = await import('../../modules/HealthConditions');\n await HealthConditions.init();\n } catch (e) {\n notifyHandledException(new Error('Failed to load chunk ../../modules/HealthConditions'));\n }\n }\n}\n","export function initLegacyLazyloadImageHandling(): void {\n const lazyImageElements = [].slice.call(document.querySelectorAll('.lazyload[data-bg], .lazyload[data-src]'));\n\n if ('IntersectionObserver' in window) {\n const lazyImageObserver = new IntersectionObserver((entries) => {\n entries.forEach(function (entry) {\n if (entry.isIntersecting && entry.target) {\n if (entry.target instanceof HTMLImageElement) {\n maybeUpdateImageSrc(entry.target);\n } else {\n maybeUpdateBackgroundImageStyle(entry.target);\n }\n lazyImageObserver.unobserve(entry.target);\n }\n });\n });\n\n lazyImageElements.forEach(function (lazyBackground) {\n lazyImageObserver.observe(lazyBackground);\n });\n }\n}\n\nconst verifyURLAppearsValid = (urlString: string): boolean => {\n try {\n new URL(urlString.trim());\n } catch (error) {\n return false;\n }\n return true;\n};\n\nconst maybeUpdateBackgroundImageStyle = (targetElement: HTMLElement): void => {\n const bgImage = targetElement?.dataset?.bg || '';\n if (bgImage && verifyURLAppearsValid(bgImage)) {\n targetElement.style.backgroundImage = `url(${bgImage})`;\n }\n};\n\n// This shouldn't conflict with cloudinary lazyload as it always uses data-srcset.\nconst maybeUpdateImageSrc = (targetElement: HTMLImageElement): void => {\n const imageSource = targetElement?.dataset?.src || '';\n if (imageSource && verifyURLAppearsValid(imageSource)) {\n targetElement.src = imageSource;\n }\n};\n","function indicateActiveElements(container: HTMLElement): void {\n const children = Array.from(container.children);\n const navItems = [...children].map((i) => {\n const anchor = `#${i.getAttribute('id')}`;\n return document.querySelector(`a[href='${anchor}']`);\n });\n\n const activate = (target: HTMLElement): void => {\n navItems.forEach((navItem) => {\n if (navItem instanceof HTMLElement) {\n navItem.classList.remove('active');\n }\n });\n\n const selector = target.getAttribute('id');\n const anchor = document.querySelector(`a[href=\"#${selector}\"]`);\n if (anchor instanceof HTMLElement) {\n anchor.classList.add('active');\n }\n };\n\n const intersectionObserver = new IntersectionObserver(\n function (entries) {\n entries.forEach((entry) => {\n if (entry.target instanceof HTMLElement && entry.isIntersecting) {\n activate(entry.target);\n }\n });\n },\n {\n threshold: 0.6,\n }\n );\n\n children.forEach((child) => {\n if (child instanceof HTMLElement) {\n intersectionObserver.observe(child);\n }\n });\n}\n\nfunction addNavigation(navigationContainer: HTMLElement): void {\n const navigationAnchors = navigationContainer.querySelectorAll('a[href^=\"#\"]');\n const container = document.querySelector(navigationContainer.dataset.controls as string);\n if (!(container instanceof HTMLElement)) {\n return;\n }\n\n indicateActiveElements(container);\n\n navigationAnchors.forEach((anchor) => {\n const targetSelector = anchor.getAttribute('href');\n const targetElement = container.querySelector(targetSelector as string);\n anchor.addEventListener('click', (e) => {\n e.preventDefault();\n const left = targetElement?.offsetLeft;\n\n container.scrollTo({\n behavior: 'smooth',\n left,\n });\n });\n });\n}\n\nexport function initSnapScrollNavigation(navigationContainer: NodeListOf): void {\n navigationContainer.forEach(addNavigation);\n}\n","declare global {\n interface Window {\n zE: (object: string, command: string) => void;\n }\n}\n\nexport function makeLiveChatUpdates(): void {\n const usPhoneNumber = document.querySelector('#footer .phone-number--us a');\n\n if (usPhoneNumber instanceof HTMLAnchorElement) {\n usPhoneNumber.href = 'https://help.embarkvet.com/hc/en-us?liveChat=open';\n usPhoneNumber.innerHTML = 'Chat with us';\n }\n\n const callUs = document.querySelector('.support-call-us');\n\n if (callUs) {\n callUs.innerHTML = `\n
\n Chat with us\n
\n `;\n }\n\n const supportForQuestions = document.querySelector('.support-for-questions');\n if (supportForQuestions) {\n supportForQuestions.remove();\n }\n}\n\nexport function addLiveChatWidgetAndLinks(): void {\n const src = 'https://static.zdassets.com/ekr/snippet.js?key=b6950fc9-2eef-448b-8269-e596df88901b';\n const s = document.createElement('script');\n s.src = src;\n s.id = 'ze-snippet';\n s.async = true;\n s.onload = function () {\n if (window.location.search.includes('liveChat=open')) {\n setTimeout(function () {\n if (typeof window.zE === 'function') {\n window.zE('messenger', 'open');\n }\n }, 100);\n }\n };\n document.body.appendChild(s);\n\n const helpCenterPhoneNumbers = document.querySelectorAll('.help-center-phone-number,.in-article-phone-number');\n helpCenterPhoneNumbers.forEach(function (helpCenterPhoneNumber) {\n helpCenterPhoneNumber.innerHTML = \"Chat with us\";\n });\n}\n","export function setupScrollReveal() {\n const $ = jQuery;\n\n if (document.querySelector('.scroll-reveal')) {\n import('scrollreveal')\n .then(({ default: ScrollRevealJS }) => {\n const ScrollReveal = ScrollRevealJS();\n\n ScrollReveal.reveal('.scroll-reveal', {\n viewFactor: 0.2,\n origin: 'top',\n });\n for (let i = 1; i < 10; i++) {\n if ($('.sr-' + i).length) {\n ScrollReveal.reveal('.sr-' + i, { delay: i * 200 });\n }\n }\n\n ScrollReveal.reveal('.sr-left', { origin: 'left' });\n ScrollReveal.reveal('.sr-right', { origin: 'right' });\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.warn('failed to load ScrollRevealJS', e);\n });\n }\n}\n","import { EV_API_URL } from '../util/config';\nimport { assetUrl } from '../util/helpers';\nimport { maybeAddDisclaimer } from './ConditionDisclaimers';\n\n/**\n * Render the list of diseases\n *\n * @param {Array.<{\n * isRecommendedByOFA: Boolean,\n * condition: {\n * disorder_name: String,\n * lay_term: String,\n * gene: String,\n * moi: String,\n * consumer_brief_description_required: String\n * }\n * }>\n * } diseases\n * @return void\n */\nfunction render(diseases) {\n /**\n * Create the required nodes for each disease and append them to DOM\n * attach event listeners where needed.\n */\n diseases.forEach((disease) => {\n const { condition } = disease;\n const buttonLabel = {\n closed: 'Show more…',\n opened: 'Show less…',\n };\n const heading = jQuery('
');\n const OFAIcon = jQuery('
');\n const button = jQuery(\n `
\n \n
`\n );\n const description = jQuery('
');\n const grid = jQuery('
');\n\n heading.text(condition.disorder_name);\n grid.append(heading);\n if (disease.isRecommendedByOFA) {\n OFAIcon.append(jQuery(`\"OFA\"`));\n }\n\n grid.append(OFAIcon);\n button.labelToggle = function () {\n const $button = this.find('button');\n if ($button.text() === buttonLabel.closed) {\n $button.text(buttonLabel.opened);\n } else {\n $button.text(buttonLabel.closed);\n }\n };\n button.find('button').click((e) => {\n e.preventDefault();\n description.slideToggle();\n description.focus();\n button.labelToggle();\n });\n grid.append(button);\n description.html(`\n ${condition.lay_term} (${condition.category})\n
\n
Gene: ${condition.gene}
\n
Inheritance type: ${condition.moi}
\n
\n
\n

${condition.consumer_brief_description_required}

\n
\n `);\n\n if (window.embarkConditionDisclaimerStrings) {\n maybeAddDisclaimer(condition, description, embarkConditionDisclaimerStrings, 'conditionShortcode');\n }\n\n grid.append(description);\n jQuery('.breed-health-list').append(grid);\n });\n}\n\nexport function shortcodeBreedHealth() {\n const shortCodeMarkup = document.getElementsByClassName('breed-health-list');\n\n for (const element of shortCodeMarkup) {\n const breed = element.getAttribute('data-breed');\n\n if (!breed) {\n return; // No breed attribute was set on the shortcode html.\n }\n\n jQuery\n .getJSON(`${EV_API_URL}/bcd/display/${encodeURIComponent(breed)}`, (diseases) => render(diseases))\n .catch((_error) => {\n // TODO: Handle this. Maybe notify Sentry once a client side helper is created.\n });\n }\n}\n","/**\n *\n * Helps with accessibility for keyboard only users.\n *\n * Learn more: https://git.io/vWdr2\n */\n\nexport function skipLinkFocus() {\n const isIe = /(trident|msie)/i.test(navigator.userAgent);\n\n if (isIe && document.getElementById && window.addEventListener) {\n window.addEventListener(\n 'hashchange',\n function () {\n const id = location.hash.substring(1);\n\n if (!/^[A-z0-9_-]+$/.test(id)) {\n return;\n }\n\n const element = document.getElementById(id);\n\n if (element) {\n if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {\n element.tabIndex = -1;\n }\n\n element.focus();\n }\n },\n false\n );\n }\n}\n","function needsTabIndex(el: Element): boolean {\n return !el.hasAttribute('tabindex') && !['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT'].includes(el.tagName);\n}\n\nfunction focusTargetElementsOnClick(): void {\n const links = document.querySelectorAll('a[href^=\"#\"]');\n\n links.forEach((link) => {\n link.addEventListener('click', (event) => {\n const targetId = link.getAttribute('href')?.replace('#', '');\n\n if (!targetId) {\n return;\n }\n\n event.preventDefault();\n\n const targetElement = document.getElementById(targetId);\n if (!targetElement) {\n return;\n }\n\n if (needsTabIndex(targetElement)) {\n targetElement.setAttribute('tabindex', '-1');\n }\n\n targetElement.focus();\n });\n });\n}\n\nexport function initAnchorLinksModule() {\n focusTargetElementsOnClick();\n}\n","import { notifyHandledException } from '../../util/error-handling';\nexport function initConclusionBlockSlider(): void {\n if (!document.querySelector('.conclusion-block-swiper')) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n import('swiper/swiper-bundle.esm.browser')\n .then(({ default: Swiper }) => {\n new Swiper('.conclusion-block-swiper', {\n slidesPerView: 1.2,\n spaceBetween: 10,\n centeredSlides: true,\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n loop: true,\n autoHeight: true,\n breakpoints: {\n 768: {\n slidesPerView: 2.2,\n spaceBetween: 10,\n },\n 1024: {\n slidesPerView: 3.4,\n spaceBetween: 15,\n centeredSlides: true,\n },\n },\n });\n })\n .catch((error) => {\n notifyHandledException(error, true);\n });\n}\n","import { notifyHandledException } from './util/error-handling';\n\nexport const initCategorySwiper = function () {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n import('swiper/swiper-bundle.esm.browser')\n .then(({ default: Swiper }) => {\n new Swiper('.swiper-category-icons', {\n slidesPerView: 2.5,\n spaceBetween: 10,\n centeredSlides: true,\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n loop: true,\n autoHeight: true,\n breakpoints: {\n 700: {\n centeredSlides: false,\n slidesPerView: 4,\n },\n 1180: {\n centeredSlides: false,\n slidesPerView: 5,\n },\n 1440: {\n centeredSlides: false,\n slidesPerView: 6,\n },\n 1500: {\n slidesPerView: 7,\n centeredSlides: false,\n },\n },\n });\n })\n .catch((error) => {\n notifyHandledException(error, true);\n });\n};\n","// Mobile Navigation JS\nimport '../../navigation';\n\nimport { DOMRouteHandler } from '../../util/Router';\nimport { healthConditionsSearchInit } from './initHealthConditionsSearch';\nimport { initLegacyLazyloadImageHandling } from '../../modules/media/LegacyLazyloadImageHandling';\nimport { initSnapScrollNavigation } from '../../modules/snap-scroll-navigation';\nimport { makeLiveChatUpdates } from '../../modules/live-chat';\nimport { notifyHandledException } from '../../util/error-handling';\nimport { setup as setupFoundation } from '../../modules/foundation';\nimport { setupScrollReveal } from '../../modules/scroll-reveal';\nimport { shortcodeBreedHealth } from '../../modules/shortcode-breed-health';\nimport { skipLinkFocus } from '../../modules/skip-link-focus';\nimport { initAnchorLinksModule } from '../../modules/anchor-links';\nimport { initConclusionBlockSlider } from '../../modules/widgets/conclusionBlockSlider';\nimport { initCategorySwiper } from '../../blog';\n\nexport class Common extends DOMRouteHandler {\n /**\n * Called on ever page before finalize\n */\n static init(): void {\n // anything that's common between all pages goes here\n setupFoundation();\n\n // Confidence Banner\n\n if (document.querySelector('.confidence-banner-slider')) {\n import('../../modules/confidence-banner')\n .then(({ initConfidenceBarNavigation }) => {\n initConfidenceBarNavigation();\n })\n .catch((e) => notifyHandledException(e));\n }\n\n // Scroll Reveal\n setupScrollReveal();\n\n // skip link focus fix\n skipLinkFocus();\n initLegacyLazyloadImageHandling();\n\n // Anchor links or Fragment Links\n initAnchorLinksModule();\n\n // Snap scroll navigation\n initSnapScrollNavigation(document.querySelectorAll('[data-controls]'));\n\n // Holiday live chat updates\n makeLiveChatUpdates();\n\n if (document.querySelector('[data-accordion-for]')) {\n import('../../modules/accordion')\n .then(({ initResponsiveAccordions }) => {\n initResponsiveAccordions();\n })\n .catch((e) => {\n notifyHandledException(e);\n });\n }\n\n if (document.querySelector('.interactive-chromies-block')) {\n import('../../modules/interactiveBlock')\n .then(({ initInteractiveBlock }) => {\n initInteractiveBlock();\n })\n .catch((e) => {\n notifyHandledException(e);\n });\n }\n\n if (document.querySelector('[data-play-button]')) {\n import('../../modules/lazyloaded-inline-video-embed')\n .then(({ initInlineVideoIframe }) => {\n initInlineVideoIframe();\n })\n .catch(notifyHandledException);\n }\n\n if (document.querySelector('[data-drawer-trigger]')) {\n import('../../modules/drawers')\n .then(({ initDrawers }) => {\n initDrawers();\n })\n .catch(notifyHandledException);\n }\n\n initConclusionBlockSlider();\n initCategorySwiper();\n }\n\n /**\n * Called on every page after init\n */\n static finalize(): void {\n shortcodeBreedHealth();\n\n healthConditionsSearchInit().catch((e) => {\n notifyHandledException(e);\n });\n\n const accordionContainer = document.getElementById('deeplinked-accordion');\n\n if (accordionContainer) {\n import('../../modules/compare-products')\n .then(({ setUpToggleAllRowsHandler }) => {\n setUpToggleAllRowsHandler(accordionContainer);\n })\n .catch((e) => {\n notifyHandledException(e);\n });\n }\n\n if (document.querySelector('#jazzHRJobs')) {\n import('../../modules/jazzHRFilters')\n .then(({ initCareersSearchFilters }) => {\n initCareersSearchFilters();\n })\n .catch((e) => {\n notifyHandledException(e);\n });\n }\n\n /*\n When the document has finished loading, we add the 'document-ready' class\n to the body. This prevents any CSS animations from trying to start too early,\n and juddering while the DOM is still rendering\n */\n setTimeout(function () {\n jQuery('body').addClass('document-ready');\n\n const accordionItems = document.querySelectorAll('section [data-tab-content]');\n if (accordionItems) {\n import('../../modules/accordion')\n .then(({ removeAriaInContent }) => {\n removeAriaInContent(accordionItems);\n })\n .catch((e) => {\n notifyHandledException(e);\n });\n }\n }, 500);\n\n // Orbit\n\n if (document.querySelector('.orbit')) {\n import('../../modules/orbit')\n .then(({ initializeCarouselButtons }) => {\n initializeCarouselButtons();\n })\n .catch((e) => notifyHandledException(e));\n }\n }\n}\n","import { DOMRouteHandler } from '../util/Router';\n\nexport class PageTemplateTempCustomPage extends DOMRouteHandler {\n static finalize(): void {\n pauseModalVideosOnModalClose();\n }\n}\n\nfunction pauseModalVideosOnModalClose(): void {\n const videoModalContainers: HTMLElement[] = Array.prototype.slice.call(\n document.querySelectorAll('.reveal.sectionVideoGrid-videoCellReveal')\n );\n\n videoModalContainers.map((container) => {\n jQuery(document).on('closed.zf.reveal', `#${container.id}[data-reveal]`, (event) => {\n const embeddedVideos: HTMLIFrameElement[] = Array.prototype.slice.call(\n event.target.getElementsByTagName('iframe')\n );\n embeddedVideos.map((iframe) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\n }\n });\n });\n });\n}\n","import { DOMRouteHandler } from '../util/Router';\n\nexport class PageTemplateTempAncestry extends DOMRouteHandler {\n static init(): void {\n import('../modules/dog-carousel')\n .then(({ breedAncestryTabs, dogCarouselSubscribeToScroll }) => {\n // make the dog carousel nav sticky\n dogCarouselSubscribeToScroll();\n // add click handlers to switch between dog carousel tabs\n breedAncestryTabs();\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.warn(e);\n });\n }\n}\n","export function setFeatureCardClickHandlers(triggerClass) {\n if (!document.body.className.includes('page-template-temp-homepageV2')) {\n /*\n * Only run this if on homepageV2 template.\n *\n * Ideally we would be emitting events to hook onto for each page. But this\n * will do for now.\n */\n return;\n }\n\n const modalTriggers = document.getElementsByClassName(triggerClass);\n\n for (const element of modalTriggers) {\n element.addEventListener('click', () => {\n const modalToTrigger = element.getAttribute('data-modal');\n const slideBulletToClick = element.getAttribute('data-slide');\n jQuery(document.getElementById(modalToTrigger)).foundation('open');\n jQuery(document.getElementById(slideBulletToClick)).click();\n });\n }\n}\n","import { setFeatureCardClickHandlers } from './image-helpers';\n\nexport function setDeviceSpecificClickHandlers() {\n const winWidth = window.innerWidth;\n if (winWidth > 767) {\n setFeatureCardClickHandlers('modal-trigger');\n } else {\n setFeatureCardClickHandlers('modal-trigger-small');\n }\n}\n","import { DOMRouteHandler } from '../util/Router';\nimport { setDeviceSpecificClickHandlers } from '../modules/featured-cards';\n\nexport class PageTemplateTempOurStory extends DOMRouteHandler {\n static init(): void {\n setDeviceSpecificClickHandlers();\n }\n}\n","import { DOMRouteHandler } from '../util/Router';\n\nexport class SingleBreeds extends DOMRouteHandler {\n static init(): void {\n const $ = jQuery;\n // breed-page\n $('[data-action=showmore]').click(function () {\n $(this).closest('li').find('.hidden-content').addClass('shown-content').removeClass('hidden-content');\n $(this).closest('li').find('.show-less').show();\n $(this).hide();\n });\n\n $('[data-action=showless]').click(function () {\n $(this).closest('li').find('.shown-content').addClass('hidden-content').removeClass('shown-content');\n $(this).closest('li').find('.show-more').show();\n $(this).hide();\n });\n }\n}\n","import { DOMRouteHandler } from '../util/Router';\n\nexport class PageTemplateTempShelters extends DOMRouteHandler {\n static init(): void {\n const successMessage = document.querySelector('.shelter-form-success');\n document.addEventListener('wpcf7submit', ((event: CustomEvent) => {\n if (event.detail.apiResponse.status === 'mail_sent' && event.target instanceof HTMLElement) {\n event.target.style.display = 'none';\n if (successMessage instanceof HTMLElement) {\n successMessage.style.display = 'block';\n }\n }\n }) as EventListener);\n }\n}\n","import { DOMRouteHandler } from '../util/Router';\n\nexport class PageTemplateTempTraitsList extends DOMRouteHandler {\n static init(): void {\n PageTemplateTempTraitsList.moveFocusToActiveTraitsCategory();\n }\n\n static moveFocusToActiveTraitsCategory(): void {\n jQuery('.tabs').on('click.zf.magellan', 'a[href^=\"#\"]', (e) => {\n const currentTarget = e.currentTarget;\n\n if (!(currentTarget instanceof HTMLAnchorElement)) {\n return;\n }\n\n const scrollTargetSelector = currentTarget.getAttribute('href');\n\n if (!scrollTargetSelector?.startsWith('#')) {\n return;\n }\n\n const scrollTarget = document.querySelector(scrollTargetSelector);\n\n if (scrollTarget instanceof HTMLElement) {\n scrollTarget.focus();\n }\n });\n }\n}\n","type OnNavigationFunction = (e: any, page: number, perPage?: number) => void;\n\nexport const DEFAULT_PER_PAGE = 24;\n\nexport function renderPaginationUI(\n root: HTMLElement | null,\n onNavigation?: OnNavigationFunction,\n currentPage = 1,\n perPage = DEFAULT_PER_PAGE,\n totalItems = 1\n): void {\n if (!root) {\n return;\n }\n\n const container = document.createElement('div');\n container.classList.add('numbered-pagination', 'text-center');\n\n const totalPages = Math.ceil(totalItems / perPage);\n if (totalPages <= 1) {\n root.innerHTML = '';\n return;\n }\n\n if (currentPage > totalPages) {\n currentPage = totalPages;\n }\n\n const createPageLink = (pageNumber: number, text: string, isCurrent: boolean): HTMLElement => {\n const link = document.createElement('a');\n link.href = 'javascript:;';\n link.classList.add('page-numbers');\n if (isCurrent) {\n const link = document.createElement('span');\n link.innerHTML = text;\n link.classList.add('current', 'page-numbers');\n link.setAttribute('aria-current', 'page');\n return link;\n } else {\n link.innerHTML = text;\n }\n link.addEventListener('click', (event) => {\n event.preventDefault();\n onNavigation && onNavigation(event, pageNumber, perPage);\n });\n return link;\n };\n\n if (currentPage > 1) {\n container.appendChild(\n createPageLink(\n currentPage - 1,\n '',\n false\n )\n );\n }\n\n const pageLinksContainer = document.createElement('span');\n pageLinksContainer.classList.add('page-links');\n pageLinksContainer.setAttribute('role', 'region');\n pageLinksContainer.setAttribute('aria-label', 'pagination links');\n\n let startPage: number;\n let endPage: number;\n\n if (totalPages <= 3) {\n startPage = 1;\n endPage = totalPages;\n } else if (currentPage <= 2) {\n startPage = 1;\n endPage = 3;\n } else if (currentPage >= totalPages - 1) {\n startPage = totalPages - 2;\n endPage = totalPages;\n } else {\n startPage = currentPage - 1;\n endPage = currentPage + 1;\n }\n\n for (let i = startPage; i <= endPage; i++) {\n const isCurrent = i === currentPage;\n const pageLink = createPageLink(i, i.toString(), isCurrent);\n pageLinksContainer.appendChild(pageLink);\n }\n\n if (startPage > 1) {\n const ellipsis = document.createElement('span');\n ellipsis.textContent = '…';\n pageLinksContainer.insertBefore(ellipsis, pageLinksContainer.firstChild);\n }\n\n if (endPage < totalPages) {\n const ellipsis = document.createElement('span');\n ellipsis.textContent = '…';\n pageLinksContainer.appendChild(ellipsis);\n }\n\n container.appendChild(pageLinksContainer);\n\n if (currentPage < totalPages) {\n container.appendChild(\n createPageLink(\n currentPage + 1,\n '',\n false\n )\n );\n }\n\n root.innerHTML = '';\n root.appendChild(container);\n}\n","import debounce from 'lodash/debounce';\n\nconst filtersForm = document.getElementById('databaseFilters');\n\nfunction isSearchParamAnArray(param: string): boolean {\n return param.match(/\\[.*\\]/) !== null;\n}\n\nexport function updateFiltersState(url: URL, data: FormData): void {\n if (data.has('q') && data.get('q') !== '') {\n resetFilters();\n }\n\n const allParams = Array.from(url.searchParams);\n allParams.forEach(([key]) => {\n if (key.startsWith('filter')) {\n url.searchParams.delete(key);\n }\n });\n\n data.forEach((value, name) => {\n if (!value) {\n url.searchParams.delete(name);\n }\n\n if (isSearchParamAnArray(name)) {\n url.searchParams.append(name, value.toString());\n return;\n }\n\n url.searchParams.set(name, value.toString());\n });\n\n history.pushState(null, '', url.href);\n window.dispatchEvent(new CustomEvent('filters:updated'));\n const hiddenEls = document.querySelectorAll('.search form input[type=hidden]');\n hiddenEls.forEach((el) => el.remove());\n}\n\nexport function resetSearch(): void {\n const url = new URL(window.location.href);\n url.searchParams.delete('q');\n history.pushState(null, '', url.href);\n const searchInput = document.querySelector('.database-hero__search input[type=search]');\n if (searchInput instanceof HTMLInputElement) {\n searchInput.value = '';\n }\n\n document.querySelectorAll('.database-hero__search input[type=hidden]').forEach((el) => {\n el.remove();\n });\n}\n\nexport function resetFilters(): void {\n const url = new URL(window.location.href);\n\n const allParams = Array.from(url.searchParams);\n allParams.forEach(([key]) => {\n if (key.startsWith('filter')) {\n url.searchParams.delete(key);\n }\n });\n\n history.pushState(null, '', url.href);\n const filterForms = document.querySelectorAll('#databaseFilters');\n filterForms.forEach((form) => {\n if (!(form instanceof HTMLFormElement)) {\n return;\n }\n\n form.querySelectorAll('input').forEach((el) => {\n if (!(el instanceof HTMLInputElement)) {\n return;\n }\n el.removeAttribute('checked');\n });\n\n form.reset();\n });\n window.dispatchEvent(new CustomEvent('filters:updated'));\n const filters = document.querySelector('.database-page__filters');\n filters?.classList.remove('database-page__filters--active');\n}\n\nexport function toggleFiltersModal(): void {\n const filters = document.querySelector('.database-page__filters');\n filters?.classList.toggle('database-page__filters--active');\n const breedFilters = document.querySelector('.database-breed .database-page__filters');\n breedFilters?.classList.toggle('has-mobile-styles');\n\n const alphaFilter = document.querySelector('.database-page__filters .accordion-item--starts_with .accordion-title');\n\n if (!alphaFilter || !(alphaFilter instanceof HTMLAnchorElement)) {\n return;\n }\n\n const filterIsOpen = alphaFilter.getAttribute('aria-expanded');\n\n if (filterIsOpen !== 'true') {\n alphaFilter?.click();\n }\n}\n\nexport function initTraitPageFilters(): void {\n if (!(filtersForm instanceof HTMLFormElement)) {\n return;\n }\n\n filtersForm.addEventListener(\n 'change',\n debounce(function () {\n const data = new FormData(filtersForm);\n const url = new URL(window.location.href);\n updateFiltersState(url, data);\n }, 300)\n );\n\n const letters = filtersForm.querySelectorAll('.starts_with-filter input');\n letters.forEach((letter) => {\n letter.addEventListener('keydown', function (event) {\n const target = event.target;\n if (target instanceof HTMLInputElement && event instanceof KeyboardEvent && event.key === 'Enter') {\n event.preventDefault();\n }\n });\n });\n\n document.querySelector('.filters-toggle')?.addEventListener('click', toggleFiltersModal);\n document.querySelectorAll('.close-drawer').forEach((item) => {\n item.addEventListener('click', toggleFiltersModal);\n });\n}\n\nexport function setActiveLettersFilterElements(): void {\n const letterFilterInputs = document.querySelectorAll('.starts_with-filter input');\n letterFilterInputs.forEach((el) => {\n if (!(el instanceof HTMLInputElement)) {\n return;\n }\n\n const containerEl = el.closest('li');\n\n if (el.checked) {\n containerEl?.classList.add('active');\n } else {\n containerEl?.classList.remove('active');\n }\n });\n}\n","/**\n * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2022 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray\n ? getTag(value) === '[object Array]'\n : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value\n }\n let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return (\n value === true ||\n value === false ||\n (isObjectLike(value) && getTag(value) == '[object Boolean]')\n )\n}\n\nfunction isObject(value) {\n return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null\n ? value === undefined\n ? '[object Undefined]'\n : '[object Null]'\n : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n\n let totalWeight = 0;\n\n keys.forEach((key) => {\n let obj = createKey(key);\n\n totalWeight += obj.weight;\n\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach((key) => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId]\n }\n keys() {\n return this._keys\n }\n toJSON() {\n return JSON.stringify(this._keys)\n }\n}\n\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n let getFn = null;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'))\n }\n\n const name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n getFn = key.getFn;\n }\n\n return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n\n const value = obj[key];\n\n if (!isDefined(value)) {\n return\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (\n index === path.length - 1 &&\n (isString(value) || isNumber(value) || isBoolean(value))\n ) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) =>\n a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\n\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\n\nvar Config = {\n ...BasicOptions,\n ...MatchOptions,\n ...FuzzyOptions,\n ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens)\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n\n cache.set(numTokens, n);\n\n return n\n },\n clear() {\n cache.clear();\n }\n }\n}\n\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return\n }\n\n this.isCreated = true;\n\n // List is Array\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]]\n }\n size() {\n return this.records.length\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return\n }\n\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = { i: docIndex, $: {} };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return\n }\n\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{ nestedArrIndex: -1, value }];\n\n while (stack.length) {\n const { nestedArrIndex, value } = stack.pop();\n\n if (!isDefined(value)) {\n continue\n }\n\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n\n record.$[keyIndex] = subRecord;\n }\n });\n\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n }\n }\n}\n\nfunction createIndex(\n keys,\n docs,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex\n}\n\nfunction parseIndex(\n data,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const { keys, records } = data;\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex\n}\n\nfunction computeScore$1(\n pattern,\n {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n const accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy\n }\n\n const proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n matchmask = [],\n minMatchCharLength = Config.minMatchCharLength\n) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n text,\n pattern,\n patternAlphabet,\n {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n }\n\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n\n const mask = 1 << (patternLen - 1);\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches\n ? textLen\n : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n\n bitArr[finish + 1] = (1 << i) - 1;\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |=\n ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr;\n }\n\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result\n}\n\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n }\n\n return mask\n}\n\nclass BitapSearch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n this.chunks = [];\n\n if (!this.pattern.length) {\n return\n }\n\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n\n const len = this.pattern.length;\n\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n searchIn(text) {\n const { isCaseSensitive, includeMatches } = this.options;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n\n return result\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n\n this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n const { isMatch, score, indices } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n}\n\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex)\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex)\n }\n search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact'\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/\n }\n static get singleRegex() {\n return /^=(.*)$/\n }\n search(text) {\n const isMatch = text === this.pattern;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!(.*)$/\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact'\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^\\^(.*)$/\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact'\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!\\^(.*)$/\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact'\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^(.*)\\$$/\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n }\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^!(.*)\\$$/\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\nclass FuzzyMatch extends BaseMatch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy'\n }\n static get multiRegex() {\n return /^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^(.*)$/\n }\n search(text) {\n return this._bitapSearch.searchIn(text)\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include'\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/\n }\n static get singleRegex() {\n return /^'(.*)$/\n }\n search(text) {\n let location = 0;\n let index;\n\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n const isMatch = !!indices.length;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n }\n }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n ExactMatch,\n IncludeMatch,\n PrefixExactMatch,\n InversePrefixExactMatch,\n InverseSuffixExactMatch,\n SuffixExactMatch,\n InverseExactMatch,\n FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map((item) => {\n let query = item\n .trim()\n .split(SPACE_RE)\n .filter((item) => item && !!item.trim());\n\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break\n }\n }\n }\n\n return results\n })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(\n pattern,\n {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}\n ) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n static condition(_, options) {\n return options.useExtendedSearch\n }\n\n searchIn(text) {\n const query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n }\n }\n\n const { includeMatches, isCaseSensitive } = this.options;\n\n text = isCaseSensitive ? text : text.toLowerCase();\n\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const { isMatch, indices, score } = searcher.search(text);\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n }\n }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options)\n }\n }\n\n return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\n\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n const next = (query) => {\n let keys = Object.keys(query);\n\n const isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query))\n }\n\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n }\n\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj\n }\n\n let node = {\n children: [],\n operator: keys[0]\n };\n\n keys.forEach((key) => {\n const value = query[key];\n\n if (isArray(value)) {\n value.forEach((item) => {\n node.children.push(next(item));\n });\n }\n });\n\n return node\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n results,\n { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n results.forEach((result) => {\n let totalScore = 1;\n\n result.matches.forEach(({ key, norm, score }) => {\n const weight = key ? key.weight : null;\n\n totalScore *= Math.pow(\n score === 0 && weight ? Number.EPSILON : score,\n (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n );\n });\n\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return\n }\n\n matches.forEach((match) => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return\n }\n\n const { indices, value } = match;\n\n let obj = {\n indices,\n value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(\n results,\n docs,\n {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n } = {}\n) {\n const transformers = [];\n\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n\n return results.map((result) => {\n const { idx } = result;\n\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach((transformer) => {\n transformer(result, data);\n });\n }\n\n return data\n })\n}\n\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = { ...Config, ...options };\n\n if (\n this.options.useExtendedSearch &&\n !true\n ) {\n throw new Error(EXTENDED_SEARCH_UNAVAILABLE)\n }\n\n this._keyStore = new KeyStore(this.options.keys);\n\n this.setCollection(docs, index);\n }\n\n setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE)\n }\n\n this._myIndex =\n index ||\n createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n\n add(doc) {\n if (!isDefined(doc)) {\n return\n }\n\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n\n remove(predicate = (/* doc, idx */) => false) {\n const results = [];\n\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n\n results.push(doc);\n }\n }\n\n return results\n }\n\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n\n getIndex() {\n return this._myIndex\n }\n\n search(query, { limit = -1 } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n\n let results = isString(query)\n ? isString(this._docs[0])\n ? this._searchStringList(query)\n : this._searchObjectList(query)\n : this._searchLogical(query);\n\n computeScore(results, { ignoreFieldNorm });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches,\n includeScore\n })\n }\n\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const { records } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{ score, value: text, norm, indices }]\n });\n }\n });\n\n return results\n }\n\n _searchLogical(query) {\n\n const expression = parse(query, this.options);\n\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const { keyId, searcher } = node;\n\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n\n if (matches && matches.length) {\n return [\n {\n idx,\n item,\n matches\n }\n ]\n }\n\n return []\n }\n\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return []\n }\n }\n return res\n };\n\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n\n records.forEach(({ $: item, i: idx }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = { idx, item, matches: [] };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({ matches }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n\n return results\n }\n\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const { keys, records } = this._myIndex;\n const results = [];\n\n // List is Array\n records.forEach(({ $: item, i: idx }) => {\n if (!isDefined(item)) {\n return\n }\n\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(\n ...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n })\n );\n });\n\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n\n return results\n }\n _findMatches({ key, value, searcher }) {\n if (!isDefined(value)) {\n return []\n }\n\n let matches = [];\n\n if (isArray(value)) {\n value.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const { v: text, n: norm } = value;\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({ score, key, value: text, norm, indices });\n }\n }\n\n return matches\n }\n}\n\nFuse.version = '6.6.2';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n Fuse.parseQuery = parse;\n}\n\n{\n register(ExtendedSearch);\n}\n\nexport { Fuse as default };\n","function toggleTraitDescription(item: HTMLElement): void {\n const target = item.getAttribute('aria-controls');\n if (!target) {\n return;\n }\n\n const targetEl = document.getElementById(target);\n if (!targetEl) {\n return;\n }\n\n const nextState = item.getAttribute('aria-expanded') === 'true' ? 'false' : 'true';\n item.setAttribute('aria-expanded', nextState);\n item.innerHTML = `${nextState === 'true' ? 'Show less' : 'Show more'}`;\n targetEl.classList.toggle('expanded');\n targetEl.focus();\n}\n\nexport function initTraitDescriptionAccordion(): void {\n document.querySelectorAll('.database-traits .database-item__actions [aria-controls]').forEach((item) => {\n if (!(item instanceof HTMLElement)) {\n return;\n }\n\n item.addEventListener('click', (e) => {\n e.preventDefault();\n toggleTraitDescription(item);\n });\n });\n}\n","import debounce from 'lodash/debounce';\nimport { updateFiltersState } from './filters';\n\nconst searchForm = document.querySelector('.search form');\n\nexport const performSearch = (trait: Element): boolean => {\n if (!(trait instanceof HTMLElement)) {\n return false;\n }\n\n const params = new URLSearchParams(window.location.search);\n const query = params.get('q');\n if (!query) {\n return true;\n }\n\n return trait.innerText.toLowerCase().indexOf(query.toLowerCase()) >= 0;\n};\n\nexport function initTraitsPageSearch(): void {\n if (!(searchForm instanceof HTMLFormElement)) {\n return;\n }\n\n searchForm.addEventListener(\n 'input',\n debounce(function () {\n const data = new FormData(searchForm);\n const url = new URL(window.location.href);\n updateFiltersState(url, data);\n }, 300)\n );\n}\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","import { DEFAULT_PER_PAGE, renderPaginationUI } from './pagination';\nimport { initTraitPageFilters, resetFilters, resetSearch, setActiveLettersFilterElements } from './filters';\n\nimport Fuse from 'fuse.js';\nimport { initTraitDescriptionAccordion } from './accordion';\nimport { initTraitsPageSearch } from './search';\nimport uniq from 'lodash/uniq';\n\nconst traitItems = document.querySelectorAll('.database-item');\nconst noResultsMessage = document.querySelector('.no-results-message');\nconst paginationContainer = document.getElementById('databasePagination');\nconst filterDetails = document.querySelectorAll('.filter-details');\nconst searchDetails = document.querySelectorAll('.search-details');\n\nfunction filterResults(): void {\n const url = window.location.search;\n const params = new URLSearchParams(url);\n\n traitItems.forEach((item) => {\n if (item instanceof HTMLElement) {\n item.style.display = 'none';\n }\n });\n\n let results: Array = [];\n const filterParams = [...params.keys()].filter((k) => k.startsWith('filter['));\n\n params.forEach((value, name) => {\n const labelMatches = name.match(/filter\\[([^\\]]+)\\]\\[\\]/);\n let items;\n if (!filterParams.includes(name)) {\n return;\n }\n\n if (labelMatches) {\n const label = labelMatches[1];\n items = document.querySelectorAll(`[data-${label}='${value}']`);\n } else {\n items = document.querySelectorAll('.database-item');\n }\n\n results = [...results, ...Array.from(items)];\n });\n\n if (!filterParams.length) {\n results = Array.from(document.querySelectorAll('.database-item'));\n }\n\n if (filterParams.length > 1) {\n results = uniq(results).filter((result) => {\n if (!(result instanceof HTMLElement)) {\n return false;\n }\n\n const filterEvaluations = [];\n for (const param of uniq(filterParams)) {\n const filters = params.getAll(param);\n const matches = param.match(/filter\\[([^\\]]+)\\]\\[\\]/);\n if (!matches) {\n return false;\n }\n\n const label = matches[1];\n const includes = filters.includes(result.getAttribute(`data-${label}`) || '');\n filterEvaluations.push(includes);\n }\n\n return !filterEvaluations.includes(false);\n });\n }\n\n const fuse = new Fuse(results, {\n keys: [\n 'category',\n 'disorder_name',\n 'subdisorder_name',\n 'description',\n 'geneLabel',\n 'label',\n 'short_description',\n 'akc_group',\n 'ukc_group',\n 'display_name',\n 'size_level',\n 'starts_with',\n 'seen_in_breeds',\n ],\n getFn(item, path) {\n if (!(item instanceof HTMLElement)) {\n return;\n }\n\n try {\n const json = JSON.parse(item.dataset.item || '{}');\n const index = Array.isArray(path) ? path[0] : path;\n\n if (!json.hasOwnProperty(index)) {\n return;\n }\n\n return json[index];\n } catch (e) {\n return item.innerText.toLowerCase();\n }\n },\n ignoreLocation: true,\n shouldSort: true,\n includeScore: true,\n findAllMatches: true,\n includeMatches: true,\n threshold: 0.2,\n });\n\n const query = params.get('q');\n let filteredItems;\n if (query) {\n filteredItems = fuse.search(query.trim(), {\n limit: 100,\n });\n } else {\n filteredItems = results.map((item) => ({ item }));\n }\n\n setupPagination((params.get('current_page') || 1) as number, filteredItems);\n\n const trimmedQuery = query && query.length > 20 ? query.substring(0, 20) + '...' : query;\n searchDetails.forEach((searchDetail) => {\n if (trimmedQuery && searchDetail instanceof HTMLElement) {\n const searchQuery = document.querySelectorAll('[data-search-term]');\n searchQuery.forEach((item) => {\n item.setAttribute('title', query || '');\n item.innerHTML = trimmedQuery;\n });\n searchDetail.style.display = 'flex';\n }\n\n if (!query && searchDetail instanceof HTMLElement) {\n searchDetail.style.display = 'none';\n }\n });\n\n // update numbers on page\n filterDetails.forEach((filterDetail) => {\n if (filterDetail instanceof HTMLElement) {\n const numberOfFilters = filterDetail.querySelectorAll('[data-number-of-filters]');\n const numberOfItems = document.querySelectorAll('[data-number-of-results]');\n\n let filtersCount = 0;\n params.forEach((value, key) => {\n if (key.startsWith('filter') && value) {\n filtersCount += 1;\n }\n });\n\n const resultsCount: number = filteredItems.length;\n\n numberOfFilters.forEach((item) => {\n item.innerHTML = `${filtersCount}`;\n });\n numberOfItems.forEach((item) => {\n item.innerHTML = `${resultsCount}`;\n });\n\n filterDetail.style.display = filtersCount > 0 ? 'flex' : 'none';\n }\n });\n\n filteredItems.forEach(({ item }) => {\n if (item instanceof HTMLElement) {\n item.style.display = 'flex';\n }\n });\n\n paginate(\n new CustomEvent('onload:paginate'),\n window.parseInt(params.get('current_page') || '1'),\n undefined,\n Array.from(filteredItems)\n );\n\n if (noResultsMessage instanceof HTMLElement) {\n noResultsMessage.style.display = !filteredItems.length ? 'flex' : 'none';\n }\n}\n\nconst paginate = (e: Event, page: number, perPage?: number, nodes?: any[]): void => {\n if (!paginationContainer) {\n return;\n }\n\n const url = new URL(location.href);\n url.searchParams.set('current_page', page.toString());\n history.pushState(null, '', url.toString());\n const items = nodes || document.querySelectorAll('.database-item');\n e.preventDefault();\n\n items.forEach((node) => {\n const item = node.item || node;\n item.style.display = 'none';\n });\n const itemsPerPage = perPage || DEFAULT_PER_PAGE;\n const totalPages = Math.ceil(items.length / itemsPerPage);\n if (page > totalPages) {\n page = totalPages;\n }\n\n const thisPageItems = Array.from(items).splice((page - 1) * itemsPerPage, itemsPerPage);\n\n thisPageItems.forEach((node) => {\n const item = node.item || node;\n item.style.display = 'flex';\n });\n setupPagination(page, items as any[]);\n};\nexport function setupPagination(page: number, nodes?: Array): void {\n renderPaginationUI(\n paginationContainer,\n (e, page, perPage) => paginate(e, page, perPage, nodes),\n page,\n DEFAULT_PER_PAGE,\n nodes ? nodes.length : document.querySelectorAll('.database-item').length\n );\n}\n\nexport const initDatabasePageTemplate = (): void => {\n initTraitPageFilters();\n initTraitsPageSearch();\n initTraitDescriptionAccordion();\n window.addEventListener('filters:updated', filterResults);\n window.addEventListener('filters:updated', setActiveLettersFilterElements);\n document.querySelectorAll('.reset-filters').forEach((el) => {\n el.addEventListener('click', () => {\n resetSearch();\n resetFilters();\n });\n });\n window.dispatchEvent(new CustomEvent('filters:updated'));\n};\n","import { DOMRouteHandler } from '../util/Router';\nimport { initDatabasePageTemplate } from '../modules/database';\n\nexport class PageTemplateTempDatabase extends DOMRouteHandler {\n static init(): void {\n initDatabasePageTemplate();\n }\n}\n","import { DOMRouteHandler } from '../util/Router';\n\nexport class PageTemplateTempBreedReveal extends DOMRouteHandler {\n static init(): void {\n import('../modules/breed-reveal')\n .then(({ initBreedReveal }) => {\n initBreedReveal();\n })\n .catch((error) => {\n //eslint-disable-next-line no-console\n console.log(error, 'Error when loading breed-reveal page');\n });\n }\n}\n","import { DOMRouteHandler } from '../util/Router';\nimport { notifyHandledException } from '../util/error-handling';\n\nexport class PageTemplateTempMarketplace extends DOMRouteHandler {\n static init(): void {\n import('../modules/marketplace').then((module) => module.initFiltersHandler()).catch(notifyHandledException);\n }\n}\n","import * as routes from './routes';\n\nimport { Router } from './util/Router';\n\n// The typed package does not contain the identify method.\ninterface Heap {\n identify(identity: string): void;\n}\n\ndeclare global {\n interface Window {\n EmbarkDOMRouter: Router;\n jQuery: JQueryStatic;\n heap?: Heap;\n _iaq?: any[];\n maybeUserEmail?: string;\n Sentry?: {\n captureException: (error: any) => void;\n };\n }\n}\n\nconst router = new Router(routes);\n// allow partials to subscribe & emit route events using this global variable\nwindow.EmbarkDOMRouter = router;\n\njQuery(document).ready(function () {\n router.loadEvents();\n});\n"],"names":["container","document","getElementById","button","getElementsByTagName","menu","style","display","setAttribute","className","indexOf","onclick","replace","links","i","len","length","addEventListener","toggleFocus","self","tagName","toLowerCase","parentElement","touchStartFn","parentLink","querySelectorAll","window","e","menuItem","parentNode","classList","contains","preventDefault","children","remove","add","DOMRouteHandler","initAsync","init","finalize","Router","constructor","routes","fire","route","event","dispatchEvent","CustomEvent","bubbles","cancelable","detail","fn","canFire","loadEvents","body","split","map","str","part","charAt","toUpperCase","slice","join","forEach","notifyHandledException","error","logToConsole","_window$Sentry","console","Sentry","captureException","healthConditionsSearchInit","querySelector","then","BreedHealthConditions","moveAutocompleteWidgetResultsUnderInputSection","replaceAutocompleteResultsMarkup","breedSearchAutocompleteOptions","select","_event","ui","item","searchType","eventProperties","eventCategory","eventAction","label","eventURL","location","href","id","pushGTMCustomEvent","create","instance","jQuery","target","autocomplete","useCachedBreedsList","catch","HealthConditions","Error","initLegacyLazyloadImageHandling","lazyImageElements","call","lazyImageObserver","IntersectionObserver","entries","entry","isIntersecting","HTMLImageElement","maybeUpdateImageSrc","maybeUpdateBackgroundImageStyle","unobserve","lazyBackground","observe","verifyURLAppearsValid","urlString","URL","trim","targetElement","_targetElement$datase","bgImage","dataset","bg","backgroundImage","_targetElement$datase2","imageSource","src","indicateActiveElements","Array","from","navItems","anchor","getAttribute","activate","navItem","HTMLElement","selector","intersectionObserver","threshold","child","addNavigation","navigationContainer","navigationAnchors","controls","targetSelector","left","offsetLeft","scrollTo","behavior","initSnapScrollNavigation","makeLiveChatUpdates","usPhoneNumber","HTMLAnchorElement","innerHTML","callUs","supportForQuestions","setupScrollReveal","$","default","ScrollRevealJS","ScrollReveal","reveal","viewFactor","origin","delay","warn","render","diseases","disease","condition","buttonLabel","closed","opened","heading","OFAIcon","description","grid","text","disorder_name","append","isRecommendedByOFA","assetUrl","labelToggle","$button","find","click","slideToggle","focus","html","lay_term","category","gene","moi","consumer_brief_description_required","embarkConditionDisclaimerStrings","maybeAddDisclaimer","shortcodeBreedHealth","shortCodeMarkup","getElementsByClassName","element","breed","getJSON","EV_API_URL","encodeURIComponent","_error","skipLinkFocus","isIe","test","navigator","userAgent","hash","substring","tabIndex","needsTabIndex","el","hasAttribute","includes","focusTargetElementsOnClick","link","_link$getAttribute","targetId","initAnchorLinksModule","initConclusionBlockSlider","Swiper","slidesPerView","spaceBetween","centeredSlides","pagination","clickable","loop","autoHeight","breakpoints","initCategorySwiper","navigation","nextEl","prevEl","Common","setupFoundation","initConfidenceBarNavigation","initResponsiveAccordions","initInteractiveBlock","initInlineVideoIframe","initDrawers","accordionContainer","setUpToggleAllRowsHandler","initCareersSearchFilters","setTimeout","addClass","accordionItems","removeAriaInContent","initializeCarouselButtons","PageTemplateTempCustomPage","pauseModalVideosOnModalClose","videoModalContainers","prototype","on","embeddedVideos","iframe","contentWindow","postMessage","PageTemplateTempAncestry","breedAncestryTabs","dogCarouselSubscribeToScroll","setFeatureCardClickHandlers","triggerClass","modalTriggers","modalToTrigger","slideBulletToClick","foundation","setDeviceSpecificClickHandlers","winWidth","innerWidth","PageTemplateTempOurStory","SingleBreeds","closest","removeClass","show","hide","PageTemplateTempShelters","successMessage","apiResponse","status","PageTemplateTempTraitsList","moveFocusToActiveTraitsCategory","currentTarget","scrollTargetSelector","startsWith","scrollTarget","DEFAULT_PER_PAGE","renderPaginationUI","root","onNavigation","currentPage","perPage","totalItems","createElement","totalPages","Math","ceil","createPageLink","pageNumber","isCurrent","appendChild","pageLinksContainer","startPage","endPage","pageLink","toString","ellipsis","textContent","insertBefore","firstChild","filtersForm","isSearchParamAnArray","param","match","updateFiltersState","url","data","has","get","resetFilters","allParams","searchParams","key","delete","value","name","set","history","pushState","hiddenEls","resetSearch","searchInput","HTMLInputElement","filterForms","form","HTMLFormElement","removeAttribute","reset","filters","toggleFiltersModal","toggle","breedFilters","alphaFilter","filterIsOpen","initTraitPageFilters","_document$querySelect","debounce","FormData","letters","letter","KeyboardEvent","setActiveLettersFilterElements","letterFilterInputs","containerEl","checked","isArray","getTag","INFINITY","baseToString","result","isString","isNumber","isBoolean","isObjectLike","isObject","isDefined","undefined","isBlank","Object","EXTENDED_SEARCH_UNAVAILABLE","INCORRECT_INDEX_TYPE","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","PATTERN_LENGTH_TOO_LARGE","max","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","hasOwn","hasOwnProperty","KeyStore","keys","_keys","_keyMap","totalWeight","obj","createKey","weight","push","keyId","toJSON","JSON","stringify","path","getFn","createKeyPath","createKeyId","list","arr","deepGet","index","MatchOptions","includeMatches","findAllMatches","minMatchCharLength","BasicOptions","isCaseSensitive","includeScore","shouldSort","sortFn","a","b","score","idx","FuzzyOptions","distance","AdvancedOptions","useExtendedSearch","ignoreLocation","ignoreFieldNorm","fieldNormWeight","Config","SPACE","norm","mantissa","cache","Map","m","pow","numTokens","n","parseFloat","round","clear","FuseIndex","isCreated","setIndexRecords","setSources","docs","records","setKeys","_keysMap","doc","docIndex","_addString","_addObject","size","removeAt","splice","getValueForItemAtKeyId","record","v","keyIndex","subRecords","stack","nestedArrIndex","pop","subRecord","k","createIndex","myIndex","parseIndex","computeScore$1","pattern","errors","currentLocation","expectedLocation","accuracy","proximity","abs","convertMaskToIndices","matchmask","indices","start","end","MAX_BITS","search","patternAlphabet","patternLen","textLen","min","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","mask","binMin","binMid","floor","finish","bitArr","j","charMatch","isMatch","createPatternAlphabet","char","BitapSearch","options","chunks","addChunk","startIndex","alphabet","remainder","substr","searchIn","allIndices","totalScore","hasMatches","BaseMatch","isMultiMatch","getMatch","multiRegex","isSingleMatch","singleRegex","exp","matches","ExactMatch","type","InverseExactMatch","PrefixExactMatch","InversePrefixExactMatch","SuffixExactMatch","endsWith","InverseSuffixExactMatch","FuzzyMatch","_bitapSearch","IncludeMatch","searchers","searchersLen","SPACE_RE","OR_TOKEN","parseQuery","query","filter","results","queryItem","found","searcher","token","MultiMatchSet","Set","ExtendedSearch","_","numMatches","qLen","pLen","registeredSearchers","register","args","createSearcher","searcherClass","LogicalOperator","AND","OR","KeyType","PATH","PATTERN","isExpression","isPath","isLeaf","convertToExplicit","parse","auto","next","isQueryPath","node","operator","computeScore","Number","EPSILON","transformMatches","refIndex","transformScore","format","transformers","transformer","Fuse","_keyStore","setCollection","_docs","_myIndex","predicate","getIndex","limit","_searchStringList","_searchObjectList","_searchLogical","sort","expression","evaluate","_findMatches","res","resultMap","expResults","version","config","toggleTraitDescription","targetEl","nextState","initTraitDescriptionAccordion","searchForm","initTraitsPageSearch","asyncTag","funcTag","genTag","proxyTag","isFunction","tag","baseGetTag","coreJsData","maskSrcKey","uid","exec","IE_PROTO","isMasked","func","funcProto","Function","funcToString","toSource","reRegExpChar","reIsHostCtor","objectProto","reIsNative","RegExp","baseIsNative","getValue","object","getNative","nativeCreate","hashClear","__data__","hashDelete","HASH_UNDEFINED","hashGet","hashHas","hashSet","Hash","listCacheClear","eq","other","assocIndexOf","array","arrayProto","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","isKeyable","getMapData","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","setCacheAdd","setCacheHas","SetCache","values","baseFindIndex","fromIndex","fromRight","baseIsNaN","strictIndexOf","baseIndexOf","arrayIncludes","arrayIncludesWith","comparator","cacheHas","noop","setToArray","createSet","LARGE_ARRAY_SIZE","baseUniq","iteratee","isCommon","seen","outer","computed","seenIndex","uniq","traitItems","noResultsMessage","paginationContainer","filterDetails","searchDetails","filterResults","params","URLSearchParams","filterParams","labelMatches","items","filterEvaluations","getAll","fuse","json","innerText","filteredItems","setupPagination","trimmedQuery","searchDetail","searchQuery","filterDetail","numberOfFilters","numberOfItems","filtersCount","resultsCount","paginate","parseInt","page","nodes","itemsPerPage","thisPageItems","initDatabasePageTemplate","PageTemplateTempDatabase","PageTemplateTempBreedReveal","initBreedReveal","log","PageTemplateTempMarketplace","module","initFiltersHandler","router","EmbarkDOMRouter","ready"],"mappings":"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"}