{"version":3,"mappings":"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","names":["fiveStarSliderSelector","config","fiveStarSlider","Glide","directoryHeroHeader","facetedFilterFormEl","e","properties","propertiesToDelete","input","segment_name","key","trackSegmentEvent","getContextProperties","controllerElement","activatorTextValue","filterPanelShowClass","activatorActiveClass","activatorWithSelectionClass","generalNav","activatorTarget","panelTarget","singleValueButton","activatorTextElement","inputTargets","getOverlayElement","overlay","uncheckSameNameWithDifferentValue","inputName","setSingleValueCheckbox","uncheckSameName","singleValueIsChecked","getCheckedOptions","getActivatorTextFormLabel","label","setCurrentSelections","checkedOptions","values","getCurrentFilterValues","clearCurrentFilterValues","el","checkbox","filtersClearedValue","filtersCleared","setFiltersClearedValue","bool","revert","uncheckAllOptions","revertSelections","updatePageHeader","activatorText","city","newOptionsSelected","checkedInputs","currentFilterSelection","shouldRevert","currentValues","updateActivatorState","checkedCount","firstChecked","activatorTextHTML","additionalCount","opened","close","onClickOutside","moveFacetedFilters","open","deselectOther","singleSelect","actions","actionName","headerSearch","contentEl","activator","directChildren","hiddenWrapper","child","i","reviewsSliderSelector","reviewsSliderEl","articleSliderSelector","initializeArticleSlider","linkEl","__vitePreload","setUpGeolocation","setUpModals","loadMap"],"sources":["../../../../app/frontend/components/b2c/directory/fiveStarSlider.js","../../../../app/frontend/components/shared/controllers/facetedFilterController.js","../../../../app/frontend/components/directory/headerSearch.js","../../../../app/frontend/components/directory/truncation.js","../../../../app/frontend/components/directory/sliders.js","../../../../app/frontend/entrypoints/unified_directory.js"],"sourcesContent":["// set up five star slider if it exists\nimport Glide from \"@glidejs/glide\";\n\nconst fiveStarSliderSelector = '.five-star-reviews.glide';\nif (document.querySelector(fiveStarSliderSelector)) {\n const config = {\n type: 'carousel',\n perView: 3,\n gap: 20,\n peek: {\n before: 10,\n after: 10,\n },\n breakpoints: {\n 500: {\n perView: 1.2,\n gap: 16,\n peek: {\n before: 16,\n after: 0,\n }\n },\n 767: {\n perView: 1.5,\n gap: 25,\n peek: {\n before: 25,\n after: 0,\n }\n },\n 1150: {\n perView: 1,\n gap: 50,\n peek: {\n before: 25,\n after: 25,\n },\n },\n }\n };\n\n if (document.body.classList.contains('faceted-search')){\n config.breakpoints[1150].perView = 2;\n config.breakpoints[1150].gap = 25;\n }\n\n const fiveStarSlider = new Glide(fiveStarSliderSelector, config);\n fiveStarSlider.on('mount.after', () => {\n // This is needed to trigger the overflowExpandableController.\n // If we migrate to stimulus we can instead send the event directly to the controller\n window.dispatchEvent(new Event('resize'));\n });\n fiveStarSlider.mount();\n}\n","import { trackSegmentEvent, getContextProperties } from '~/components/shared/tracking/segmentAnalytics';\nimport { moveFacetedFilters } from '~/components/shared/moveFacetedFilters.js';\n\n// this needs to be here to update the header when the filters are applied\nconst directoryHeroHeader = document.querySelector('[data-directory-new-header-title]');\n\ndocument.querySelectorAll('[data-controller=\"faceted-filter-form\"]').forEach(facetedFilterFormEl => {\n facetedFilterFormEl.addEventListener('submit', async (e) => {\n e.preventDefault();\n\n const fireSegmentEvent = () => {\n const properties = {\n action: 'apply filter'\n };\n const propertiesToDelete = {};\n const inputTargets = Array.from(facetedFilterFormEl.querySelectorAll('input'));\n inputTargets.forEach(input => {\n const inputSegmentDataAttr = input.dataset.segmentPropName;\n const segment_name = inputSegmentDataAttr.replace('data-segment-', '').replace('-', '_');\n\n if (!input.checked) {\n propertiesToDelete[segment_name] = true;\n return;\n }\n\n if (properties.hasOwnProperty(segment_name)) {\n properties[segment_name] += `, ${input.value}`;\n } else {\n properties[segment_name] = input.value;\n }\n });\n\n for (const key of Object.keys(propertiesToDelete)) {\n if (typeof properties[key] === 'undefined') {\n properties[key] = undefined;\n }\n }\n trackSegmentEvent('Directory - Results', { ...getContextProperties(), ...properties });\n }\n\n fireSegmentEvent();\n facetedFilterFormEl.submit();\n });\n});\n\ndocument.querySelectorAll('[data-controller=\"faceted-filter\"]')\n .forEach(controllerElement => {\n\n // These are necessary until we actually have stimulus set up to take care of this for us\n const activatorTextValue = controllerElement.dataset.facetedFilterActivatorTextValue;\n const filterPanelShowClass = controllerElement.dataset.facetedFilterPanelShowClass;\n const activatorActiveClass = controllerElement.dataset.facetedFilterActivatorActiveClass;\n const activatorWithSelectionClass = controllerElement.dataset.facetedFilterActivatorWithSelectionClass;\n const generalNav = document.querySelector(\"[data-general-nav]\")\n const activatorTarget = controllerElement.querySelector('[data-faceted-filter-target=\"activator\"]');\n const panelTarget = controllerElement.querySelector('[data-faceted-filter-target=\"panel\"]');\n const singleValueButton = controllerElement.querySelector('[data-single-value]');\n\n const activatorTextElement = activatorTarget.querySelector('.activator__text');\n\n const inputTargets = Array.from(controllerElement.querySelectorAll('[data-faceted-filter-target=\"input\"]'));\n\n function getOverlayElement() {\n let overlay = document.querySelector('.generic-modal__overlay');\n if (overlay) return overlay;\n overlay = document.createElement('DIV');\n overlay.classList.add('generic-modal__overlay');\n document.body.prepend(overlay);\n return overlay;\n }\n\n function uncheckSameNameWithDifferentValue() {\n const inputName = inputTargets[0].name;\n const inputs = document.querySelectorAll(`input[name=\"${inputName}\"]`);\n inputs.forEach(input => {\n if (input.value !== inputTargets[0].value) {\n input.checked = false;\n }\n });\n }\n\n function setSingleValueCheckbox() {\n if (!singleValueButton) return;\n\n inputTargets[0].checked = !inputTargets[0].checked;\n\n if (inputTargets[0].checked === false) {\n uncheckSameName();\n }\n\n if (inputTargets[0].checked === true) {\n uncheckSameNameWithDifferentValue();\n }\n }\n\n function singleValueIsChecked() {\n if (!singleValueButton) return false;\n return inputTargets[0].checked;\n }\n\n function getCheckedOptions() {\n return inputTargets.filter(input => input.checked)\n }\n\n function getActivatorTextFormLabel(label) {\n if (!label) return activatorTextElement.innerHTML;\n\n return label.dataset.displayText || label.textContent;\n }\n\n function setCurrentSelections(checkedOptions) {\n if (checkedOptions.length === 0) return;\n\n const values = [];\n\n checkedOptions.forEach((input) => {\n values.push(input.id);\n })\n controllerElement.dataset.facetedFilterCurrentFilterValue = values.join(',');\n }\n\n function getCurrentFilterValues() {\n return controllerElement.dataset.facetedFilterCurrentFilterValue;\n }\n\n function clearCurrentFilterValues() {\n // this is to make sure all the single action buttons are cleared\n document.querySelectorAll('[data-single-value]').forEach(el => {\n el.dataset.facetedFilterCurrentFilterValue = '';\n el.classList.remove('faceted-filter__activator--with-selection');\n el.dataset.facetedFilterActivatorWithSelectionClass = '';\n const checkboxes = Array.from(el.querySelectorAll('[data-faceted-filter-target=\"input\"]'));\n checkboxes.forEach(checkbox => {\n checkbox.checked = false;\n });\n });\n controllerElement.dataset.facetedFilterCurrentFilterValue = '';\n }\n\n function filtersClearedValue() {\n return controllerElement.dataset.facetedFilterFiltersClearedValue;\n }\n\n function filtersCleared() {\n return filtersClearedValue() === 'true';\n }\n\n function setFiltersClearedValue(bool) {\n controllerElement.dataset.facetedFilterFiltersClearedValue = bool.toString();\n }\n\n function revert() {\n uncheckAllOptions();\n revertSelections();\n }\n\n function updatePageHeader() {\n if (singleValueIsChecked() && directoryHeroHeader.innerHTML.includes(' in ')) {\n const activatorText = activatorTextElement.innerHTML;\n const city = directoryHeroHeader.innerHTML.split('in ')[1].split('<')[0];\n // this is necessary because the method can be called twice (if multiple single value filters are active, which makes the city value blank)\n if (city) {\n switch (activatorText) {\n case 'Open Now':\n directoryHeroHeader.innerHTML = `Book same-day urgent care open now in ${city}`;\n break;\n case 'Accepts Kids':\n directoryHeroHeader.innerHTML = `Book same-day urgent care that accepts kids in ${city}`;\n break;\n case 'Telemedicine':\n directoryHeroHeader.innerHTML = `Book same-day telemedicine in ${city}`;\n break;\n default:\n return;\n }\n }\n }\n }\n\n function newOptionsSelected() {\n let checkedInputs = getCheckedOptions();\n\n if (checkedInputs.length > 0) {\n checkedInputs = checkedInputs.map(input => input.id)\n }\n\n const currentFilterSelection = getCurrentFilterValues();\n\n return checkedInputs.join(',') !== currentFilterSelection;\n }\n\n function shouldRevert() {\n const currentFilters = getCurrentFilterValues();\n return currentFilters.length > 0 && newOptionsSelected() && filtersCleared() === false;\n }\n\n function uncheckAllOptions() {\n getCheckedOptions().forEach((input) => input.checked = false);\n }\n\n function revertSelections() {\n const currentValues = getCurrentFilterValues().split(',');\n const targetInputs = inputTargets.filter((input) => currentValues.includes(input.id));\n targetInputs.forEach(input => input.checked = true);\n }\n\n function updateActivatorState() {\n const checkedInputs = getCheckedOptions();\n const checkedCount = checkedInputs.length;\n\n if (checkedCount === 0) {\n activatorTarget.classList.remove(activatorWithSelectionClass);\n activatorTextElement.innerHTML = activatorTextValue;\n } else {\n if (shouldRevert()) {\n revert();\n return;\n }\n activatorTarget.classList.add(activatorWithSelectionClass);\n const firstChecked = checkedInputs[0];\n let activatorTextHTML = getActivatorTextFormLabel(firstChecked.labels[0]);\n\n const additionalCount = checkedCount - 1;\n\n if (additionalCount > 0) {\n activatorTextHTML += ` +${additionalCount}`\n }\n activatorTextElement.innerHTML = activatorTextHTML;\n }\n }\n\n function uncheckSameName() {\n const inputName = inputTargets[0].name;\n const inputs = document.querySelectorAll(`input[name=\"${inputName}\"]`);\n inputs.forEach(input => input.checked = false);\n }\n\n let opened = false;\n\n function close(e) {\n document.removeEventListener('click', onClickOutside)\n\n if (e && e.target.type === 'submit') {\n return;\n }\n\n activatorTarget.classList.remove(activatorActiveClass);\n generalNav.classList.remove(\"faceted-panel-open\")\n\n // this is a fix for ios, as it doesn't fire scroll event when you scroll to the top\n if ((window.pageYOffset <= 0) || (window.pageYOffset <= 0 && window.innerHeight < 356)) {\n generalNav.classList.remove('is-sticking');\n moveFacetedFilters(generalNav);\n }\n\n panelTarget.classList.remove(filterPanelShowClass)\n if (window.innerWidth < 768) {\n document.body.classList.remove('no-scroll');\n getOverlayElement().classList.remove('opened');\n }\n opened = !opened;\n window.facetedFilterOpen = false;\n }\n\n const onClickOutside = (e) => {\n e.stopPropagation();\n const isOutside = !controllerElement.contains(e.target) && e.target !== controllerElement;\n if (isOutside) {\n close();\n document.removeEventListener('click', onClickOutside)\n }\n }\n\n function open() {\n document.addEventListener('click', onClickOutside)\n generalNav.classList.add(\"faceted-panel-open\")\n generalNav.classList.add(\"is-sticking\")\n panelTarget.classList.add(filterPanelShowClass);\n activatorTarget.classList.add(activatorActiveClass);\n if (window.innerWidth < 768) {\n document.body.classList.add('no-scroll');\n getOverlayElement().classList.add('opened');\n moveFacetedFilters(generalNav);\n }\n opened = !opened;\n window.facetedFilterOpen = true;\n }\n\n function deselectOther(e) {\n inputTargets.forEach(input => {\n if (e.target !== input) {\n input.checked = false;\n }\n });\n }\n\n function singleSelect(e) {\n if (singleValueButton) {\n setSingleValueCheckbox();\n updateActivatorState();\n }\n }\n\n const actions = {\n deselectOther,\n close,\n toggle: async () => {\n if (opened) {\n close();\n } else {\n if (activatorTarget.disabled === true) return;\n if (window.facetedFilterOpen) return;\n open();\n }\n },\n clear: () => {\n inputTargets.forEach(input => {\n input.checked = false;\n });\n setFiltersClearedValue(true);\n clearCurrentFilterValues();\n },\n singleSelect: () => {\n singleSelect();\n }\n }\n\n\n controllerElement.querySelectorAll(\"[data-action]\").forEach(el => {\n const actionName = el.dataset.action.split('#')[1];\n\n if (actionName === 'deselectOther') {\n el.addEventListener('change', actions[actionName]);\n } else {\n el.addEventListener('click', actions[actionName]);\n }\n })\n\n setCurrentSelections(getCheckedOptions());\n updateActivatorState();\n updatePageHeader();\n\n });\n","const headerSearch = document.querySelector('[data-directory-header-search]');\n\nheaderSearch.addEventListener('submit', (e) => {\n const cityInput = headerSearch.querySelector('[data-directory-header-search-city]');\n if (!cityInput.value) {\n e.preventDefault();\n alert(\"Please search for and select a city.\")\n }\n})","// handle show more truncation\n\ndocument\n .querySelectorAll('[data-show-more-truncate-controller]')\n .forEach((el) => {\n // defaulting to > 2 direct children\n const contentEl = el.querySelector('[data-show-more-truncate-content]');\n const activator = el.querySelector('[data-show-more-truncate-activator]');\n // if there's no way to expand the content, don't truncate it\n if (!activator) {\n return\n }\n\n const directChildren = contentEl.querySelectorAll(':scope > *');\n const hiddenWrapper = document.createElement('span');\n if (directChildren.length > 2) {\n hiddenWrapper.classList.add('hidden');\n directChildren.forEach((child, i) => {\n if (i > 2) {\n hiddenWrapper.append(child);\n }\n });\n if (hiddenWrapper.hasChildNodes()) {\n contentEl.append(hiddenWrapper);\n }\n activator.addEventListener('click', () => {\n hiddenWrapper.classList.remove('hidden');\n activator.remove();\n });\n\n } else {\n activator.remove();\n }\n });","import Glide from \"@glidejs/glide\";\nimport {initializeArticleSlider} from \"~/components/shared/articles-slider\";\n\n// set up review slider\nconst reviewsSliderSelector = '.directory-reviews__container.glide';\nconst reviewsSliderEl = document.querySelector(reviewsSliderSelector);\nif (reviewsSliderEl) {\n const reviewsSlider = new Glide(reviewsSliderSelector, {\n perView: 1.8,\n gap: 20,\n peek: {\n before: 0,\n after: 40,\n },\n breakpoints: {\n 650: {\n perView: 1.2,\n gap: 10,\n peek: {\n before: 0,\n after: 32,\n },\n },\n },\n });\n reviewsSlider.mount();\n}\n\n// set up article slider\n\nconst articleSliderSelector = '.directory-featured-articles.glide';\n\nif (articleSliderSelector) {\n const articleSliderOptions = {\n type: 'carousel',\n startAt: 0,\n perView: 5,\n slideWidth: 248,\n gap: 10,\n peek: {\n before: 0,\n after: 12,\n },\n breakpoints: {\n 1024: {\n perView: 3,\n peek: {\n before: 0,\n after: 40,\n },\n },\n 650: {\n perView: 2,\n peek: {\n before: 0,\n after: 32,\n },\n },\n 450: {\n perView: 1,\n peek: {\n before: 0,\n after: 32,\n },\n },\n },\n }\n\n initializeArticleSlider(articleSliderSelector, articleSliderOptions);\n}\n\n// handle click anywhere\n\ndocument.querySelectorAll('[data-click-anywhere-controller]').forEach((el) => {\n const linkEl = el.querySelector('[data-click-anywhere-link]');\n el.addEventListener('click', (e) => {\n const tooltipEl = document.querySelector('[data-tooltip-content].opened');\n if (tooltipEl) {\n return;\n }\n e.stopPropagation();\n if (linkEl !== e.target && !linkEl.contains(e.target)) {\n if (e.target.nodeName === 'A') {\n return;\n }\n window.open(linkEl.href, '_blank');\n }\n });\n});\n\n","\nimport { loadMap } from \"~/components/b2c/directory/mapbox_map\";\n\n\n\nimport \"~/components/b2c/find_care_form\";\nimport \"~/components/shared/tracking/globalTracking\";\n\nimport { setUpModals } from \"~/components/shared/controllers/modalController\";\nimport \"~/components/shared/overflowExpandableController\";\n\n\nimport \"~/components/shared/controllers/slideOutController\";\nimport \"~/components/shared/controllers/expansionController\";\nimport \"~/components/shared/controllers/showMoreController\";\nimport \"~/components/shared/controllers/tooltipController\";\nimport '~/components/shared/containerQueryPolyfill';\nimport '~/components/shared/navigation';\nimport '~/components/b2c/directory/bookableTimes';\nimport '~/components/b2c/directory/nonApiBookableTimes';\nimport '~/components/b2c/directory/fiveStarSlider';\nimport '~/components/shared/controllers/facetedFilterController';\nimport '~/components/shared/controllers/autocompleteController';\nimport { setUpGeolocation } from '~/components/b2c/directory/browserGeolocation';\n\nimport '~/components/shared/globalFooter';\nimport '~/components/directory/headerSearch';\nimport '~/components/directory/truncation';\nimport '~/components/directory/sliders';\n\n\nif (document.body.id === 'ppc_landing_page') {\n import('~/components/b2c/ppc_landing_page/reviewsSlider');\n import('~/components/b2c/ppc_landing_page/howItWorksSlider');\n setUpGeolocation()\n} else {\n setUpModals();\n}\n\nif (document.body.dataset.directoryLevel === 'ROOT') {\n setUpGeolocation();\n}\n\nloadMap();\n"],"file":"assets/unified_directory-b38ab32b.js"}