1"use strict"; 2(globalThis["webpackChunkwpnest"] = globalThis["webpackChunkwpnest"] || []).push([["main"],{ 3
4/***/ "./sources/js/common/deviceMenu.js": 5/*!*****************************************!*\ 6 !*** ./sources/js/common/deviceMenu.js ***! 7 \*****************************************/ 8/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 9 10__webpack_require__.r(__webpack_exports__); 11/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 13/* harmony export */ }); 14const DeviceMenu = () => { 15 var _document$querySelect; 16 /* Responsive Navigation */ 17 const hamBurger = document.querySelector('.hamburger'); 18 const overlay = document.querySelector('.mbnav__backdrop'); 19 const mbnav = document.querySelector('.mbnav'); 20 const menuWrap = document.querySelector('.mbnav .menu-wrap'); 21 const menuClose = () => { 22 hamBurger.classList.remove('is-clicked'); 23 hamBurger.setAttribute('aria-hidden', 'false'); 24 document.body.classList.remove('scroll-fixed'); 25 mbnav.classList.remove('is-open'); 26 if (menuWrap) { 27 const menuItems = menuWrap.querySelectorAll('li'); 28 menuItems.forEach(item => item.classList.remove('is-open')); 29 document.querySelector('.mbnav__inner > .menu-wrap').style.setProperty('--leftSlide', '0'); 30 } 31 }; 32 if (!hamBurger || !overlay || !mbnav) { 33 return; 34 } 35 36 /* Mobile overlay click */ 37 overlay.addEventListener('click', () => { 38 menuClose(); 39 }); 40 hamBurger.addEventListener('click', function () { 41 const isOpen = hamBurger.classList.contains('is-clicked'); 42 if (isOpen) { 43 menuClose(); 44 hamBurger.setAttribute('aria-expanded', 'false'); 45 mbnav.setAttribute('aria-hidden', 'true'); 46 } else { 47 var _mbnav$querySelector; 48 hamBurger.classList.add('is-clicked'); 49 mbnav.classList.add('is-open'); 50 document.body.classList.add('scroll-fixed'); 51 hamBurger.setAttribute('aria-expanded', 'true'); 52 mbnav.setAttribute('aria-hidden', 'false'); 53 (_mbnav$querySelector = mbnav.querySelector('a, button, input')) === null || _mbnav$querySelector === void 0 || _mbnav$querySelector.focus(); 54 } 55 }); 56 const clickable = (_document$querySelect = document.querySelector('.mbnav__state')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.getAttribute('data-clickable'); 57 const listItemsWithSubMenu = document.querySelectorAll('.mbnav li:has(ul)'); 58 listItemsWithSubMenu.forEach(item => item.classList.add('has-sub')); 59 const subMenus = document.querySelectorAll('.mbnav li > ul'); 60 subMenus.forEach(subMenu => subMenu.classList.add('sub-menu')); 61 const hasSubLinks = document.querySelectorAll('.mbnav .has-sub > a'); 62 hasSubLinks.forEach(link => { 63 const caret = document.createElement('em'); 64 caret.classList.add('mbnav__caret'); 65 link.after(caret); 66 }); 67 const subMenuItems = document.querySelectorAll('.mbnav ul > li:has(ul.sub-menu)'); 68 subMenuItems.forEach(item => { 69 const subMenu = item.querySelector(':scope > ul'); 70 const parentLink = item.querySelector(':scope > a'); 71 if (subMenu && parentLink) { 72 const backClick = document.createElement('li'); 73 backClick.classList.add('back-click'); 74 backClick.textContent = parentLink.textContent.trim(); 75 subMenu.prepend(backClick); 76 } 77 }); 78 if (clickable === 'true') { 79 const caretElements = document.querySelectorAll('.mbnav .has-sub > .mbnav__caret'); 80 caretElements.forEach(caret => caret.classList.add('mbnav__caret')); 81 } else { 82 const nonClickableLinks = document.querySelectorAll('.mbnav .has-sub > a'); 83 nonClickableLinks.forEach(link => { 84 link.classList.add('mbnav__caret'); 85 link.setAttribute('href', 'javascript:;'); 86 }); 87 } 88 89 // === First part: wrapAll === 90 const menuInner = document.querySelector('.mbnav__inner'); 91 const children = Array.from(menuInner.children); 92 const outerWrap = document.createElement('div'); 93 outerWrap.classList.add('menu-wrap'); 94 const innerWrap = document.createElement('div'); 95 innerWrap.classList.add('menu-inner'); 96 children.forEach(child => innerWrap.appendChild(child)); 97 outerWrap.appendChild(innerWrap); 98 menuInner.appendChild(outerWrap); 99 const submenuElements = document.querySelectorAll('.mbnav__inner ul li.has-sub ul');
100 submenuElements.forEach(subMenu => { 101 const menuWrap = document.createElement('div'); 102 menuWrap.classList.add('menu-wrap'); 103 const innerWrap = document.createElement('div'); 104 innerWrap.classList.add('menu-inner'); 105 subMenu.parentNode.replaceChild(menuWrap, subMenu); 106 innerWrap.appendChild(subMenu); 107 menuWrap.appendChild(innerWrap); 108 }); 109 110 // Open menu on caret click 111 const caretTriggers = document.querySelectorAll('.mbnav .has-sub > .mbnav__caret'); 112 caretTriggers.forEach(trigger => { 113 trigger.addEventListener('click', function () { 114 const element = this.parentElement; 115 element.classList.add('is-open'); 116 document.body.classList.add('scroll-fixed'); 117 const menuLeftMove = document.querySelector('.mbnav__inner > .menu-wrap'); 118 const backMove = parseInt(window.getComputedStyle(menuLeftMove).getPropertyValue('--leftSlide'), 10) || 0; 119 menuLeftMove.style.setProperty('--leftSlide', `${backMove + 100}%`); 120 }); 121 }); 122 123 // Handle back click 124 const backClicks = document.querySelectorAll('.mbnav__inner .back-click'); 125 backClicks.forEach(backClick => { 126 backClick.addEventListener('click', function () { 127 const menuItem = this.closest('.menu-item'); 128 if (menuItem) { 129 menuItem.classList.remove('is-open'); 130 } 131 const menuLeftMove = document.querySelector('.mbnav__inner > .menu-wrap'); 132 const backMove = parseInt(window.getComputedStyle(menuLeftMove).getPropertyValue('--leftSlide'), 10) || 0; 133 menuLeftMove.style.setProperty('--leftSlide', `${backMove - 100}%`); 134 }); 135 }); 136 137 // Set padding from header height 138 const header = document.querySelector('header.main-header'); 139 if (header) { 140 const headerHeight = header.offsetHeight; 141 const menuInners = document.querySelectorAll('.mbnav .menu-wrap .menu-inner'); 142 menuInners.forEach(inner => { 143 inner.style.paddingTop = `${headerHeight}px`; 144 }); 145 } 146}; 147/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DeviceMenu); 148 149/***/ }), 150
151/***/ "./sources/js/script.js": 152/*!******************************!*\ 153 !*** ./sources/js/script.js ***! 154 \******************************/ 155/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 156 157__webpack_require__.r(__webpack_exports__); 158/* harmony import */ var aos__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! aos */ "./node_modules/aos/dist/aos.js"); 159/* harmony import */ var aos_dist_aos_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! aos/dist/aos.css */ "./node_modules/aos/dist/aos.css"); 160/* harmony import */ var _js_common_deviceMenu_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @js/common/deviceMenu.js */ "./sources/js/common/deviceMenu.js"); 161// Device menu is global, so keep it eager 162 163 164 165(0,_js_common_deviceMenu_js__WEBPACK_IMPORTED_MODULE_2__["default"])(); 166 167/** Scroll Reveal Animations */ 168window.addEventListener('load', () => { 169 aos__WEBPACK_IMPORTED_MODULE_0__.init({ 170 once: true, 171 offset: -500, 172 duration: 1000, 173 easing: 'ease-out-cubic', 174 disableMutationObserver: true, 175 mirror: false 176 }); 177 aos__WEBPACK_IMPORTED_MODULE_0__.refreshHard(); 178}); 179 180/* global requestAnimationFrame */ 181window.reInitAOS = function (scope = document) { 182 if (!window.AOS) { 183 return; 184 } 185 186 // Reset AOS state on newly injected elements 187 scope.querySelectorAll('[data-aos]').forEach(el => { 188 el.classList.remove('aos-init', 'aos-animate'); 189 }); 190 191 // Wait for DOM + layout + paint 192 requestAnimationFrame(() => { 193 requestAnimationFrame(() => { 194 aos__WEBPACK_IMPORTED_MODULE_0__.refreshHard(); 195 }); 196 }); 197}; 198window.AOS = aos__WEBPACK_IMPORTED_MODULE_0__; 199 200/** Homepage - Homepage Slider */ 201if (document.querySelector('.home-slider')) { 202 Promise.all(/*! import() */[__webpack_require__.e("library/common"), __webpack_require__.e("library/swiper"), __webpack_require__.e("sources_js_common_swiperInit_js")]).then(__webpack_require__.bind(__webpack_require__, /*! @js/common/swiperInit.js */ "./sources/js/common/swiperInit.js")).then(({ 203 initHomeSlider 204 }) => { 205 initHomeSlider(); 206 }); 207} 208 209/** Homepage - Conditions & Services Slider */ 210if (document.querySelector('.cs-slider')) { 211 Promise.all(/*! import() */[__webpack_require__.e("library/common"), __webpack_require__.e("library/swiper"), __webpack_require__.e("sources_js_common_swiperInit_js")]).then(__webpack_require__.bind(__webpack_require__, /*! @js/common/swiperInit.js */ "./sources/js/common/swiperInit.js")).then(({ 212 initServicesTabsSwiper 213 }) => { 214 initServicesTabsSwiper(); 215 }); 216} 217 218/** Homepage - Team Slider */ 219if (document.querySelector('.team-slider')) { 220 Promise.all(/*! import() */[__webpack_require__.e("library/common"), __webpack_require__.e("library/swiper"), __webpack_require__.e("sources_js_common_swiperInit_js")]).then(__webpack_require__.bind(__webpack_require__, /*! @js/common/swiperInit.js */ "./sources/js/common/swiperInit.js")).then(({ 221 initteamSlider 222 }) => { 223 initteamSlider(); 224 }); 225} 226 227/** Homepage - Insurances Slider */ 228if (document.querySelector('.insurances-slider')) { 229 Promise.all(/*! import() */[__webpack_require__.e("library/common"), __webpack_require__.e("library/swiper"), __webpack_require__.e("sources_js_common_swiperInit_js")]).then(__webpack_require__.bind(__webpack_require__, /*! @js/common/swiperInit.js */ "./sources/js/common/swiperInit.js")).then(({ 230 initinsurancesSlider 231 }) => { 232 initinsurancesSlider(); 233 }); 234} 235 236/** Homepage - Community Slider */ 237if (document.querySelector('.community-slider')) { 238 Promise.all(/*! import() */[__webpack_require__.e("library/common"), __webpack_require__.e("library/swiper"), __webpack_require__.e("sources_js_common_swiperInit_js")]).then(__webpack_require__.bind(__webpack_require__, /*! @js/common/swiperInit.js */ "./sources/js/common/swiperInit.js")).then(({ 239 initcommunitySlider 240 }) => { 241 initcommunitySlider(); 242 }); 243} 244 245/** Homepage - Testimonial Slider */ 246if (document.querySelector('.testimonial-slider')) { 247 Promise.all(/*! import() */[__webpack_require__.e("library/common"), __webpack_require__.e("library/swiper"), __webpack_require__.e("sources_js_common_swiperInit_js")]).then(__webpack_require__.bind(__webpack_require__, /*! @js/common/swiperInit.js */ "./sources/js/common/swiperInit.js")).then(({ 248 initTestimonialSlider 249 }) => { 250 initTestimonialSlider(); 251 }); 252} 253 254/** Inner Page - Testimonial Sliders */ 255if (document.querySelector('.testimonial-sliders')) { 256 Promise.all(/*! import() */[__webpack_require__.e("library/common"), __webpack_require__.e("library/swiper"), __webpack_require__.e("sources_js_common_swiperInit_js")]).then(__webpack_require__.bind(__webpack_require__, /*! @js/common/swiperInit.js */ "./sources/js/common/swiperInit.js")).then(({ 257 initTestimonialSliders 258 }) => { 259 initTestimonialSliders(); 260 }); 261} 262 263/** Virtual Clinic Slider */ 264if (document.querySelector('.clinics-swiper')) { 265 Promise.all(/*! import() */[__webpack_require__.e("library/common"), __webpack_require__.e("library/swiper"), __webpack_require__.e("sources_js_common_swiperInit_js")]).then(__webpack_require__.bind(__webpack_require__, /*! @js/common/swiperInit.js */ "./sources/js/common/swiperInit.js")).then(({
266 initVirtualClinicSlider 267 }) => { 268 initVirtualClinicSlider(); 269 }); 270} 271 272// Load Fancybox only if gallery/trigger elements exist 273if (document.querySelector('[data-fancybox]')) { 274 Promise.all(/*! import() */[__webpack_require__.e("library/common"), __webpack_require__.e("library/fancyapps"), __webpack_require__.e("sources_js_common_fancybox_js")]).then(__webpack_require__.bind(__webpack_require__, /*! @js/common/fancybox */ "./sources/js/common/fancybox.js")).then(({ 275 initFancybox 276 }) => { 277 initFancybox(); 278 }); 279} 280 281/** Sticky Header */ 282window.addEventListener('scroll', () => { 283 document.body.classList.toggle('scrolled', window.scrollY > 10); 284}); 285/** End Sticky Header */ 286 287/** Address Bar Close */ 288document.addEventListener('DOMContentLoaded', () => { 289 const addressBar = document.getElementById('address-bar'); 290 if (addressBar) { 291 const closeBtn = addressBar.querySelector('.address-close'); 292 if (closeBtn) { 293 closeBtn.addEventListener('click', () => { 294 addressBar.classList.add('is-closed'); 295 }); 296 } 297 } 298}); 299document.addEventListener('DOMContentLoaded', function () { 300 if (window.innerWidth < 768) { 301 var _document$querySelect; 302 (_document$querySelect = document.querySelector('header .header-buttons')) === null || _document$querySelect === void 0 || _document$querySelect.addEventListener('click', function (e) { 303 var _document$querySelect2, _trigger$nextElementS; 304 const trigger = e.target.closest('.call-tracking'); 305 if (!trigger) { 306 return; 307 } 308 e.preventDefault(); 309 (_document$querySelect2 = document.querySelector('.wrapper')) === null || _document$querySelect2 === void 0 || _document$querySelect2.classList.toggle('active'); 310 (_trigger$nextElementS = trigger.nextElementSibling) === null || _trigger$nextElementS === void 0 || _trigger$nextElementS.classList.add('active'); 311 }); 312 document.querySelectorAll('.advance-call-tracking .close-btn').forEach(function (button) { 313 button.addEventListener('click', function () { 314 var _document$querySelect3; 315 (_document$querySelect3 = document.querySelector('.wrapper')) === null || _document$querySelect3 === void 0 || _document$querySelect3.classList.remove('active'); 316 document.querySelectorAll('.advance-call-tracking').forEach(function (popup) { 317 popup.classList.remove('active'); 318 }); 319 }); 320 }); 321 } 322}); 323 324/** Main Navigation */ 325document.querySelectorAll('.menu-item-has-children').forEach(item => { 326 const link = item.querySelector('a'); 327 link.setAttribute('aria-haspopup', 'true'); 328 link.setAttribute('aria-expanded', 'false'); 329 330 // keyboard support 331 link.addEventListener('focus', () => { 332 item.classList.add('open'); 333 link.setAttribute('aria-expanded', 'true'); 334 }); 335 link.addEventListener('blur', () => { 336 item.classList.remove('open'); 337 link.setAttribute('aria-expanded', 'false'); 338 }); 339}); 340 341/** Virtual Video Section */ 342window.baystateVirtualTourLoaded = window.baystateVirtualTourLoaded || false; 343if (!window.baystateVirtualTourLoaded) { 344 window.baystateVirtualTourLoaded = true; 345 document.addEventListener('click', function (event) {
346 const trigger = event.target.closest('.virtual-tour-section__trigger'); 347 if (!trigger || trigger.classList.contains('is-loaded')) { 348 return; 349 } 350 trigger.classList.add('is-loaded'); 351 }); 352 document.addEventListener('keydown', function (event) { 353 if (event.key === 'Enter' || event.key === ' ') { 354 const trigger = event.target.closest('.virtual-tour-section__trigger'); 355 if (trigger && !trigger.classList.contains('is-loaded')) { 356 event.preventDefault(); 357 trigger.classList.add('is-loaded'); 358 } 359 } 360 }); 361} 362/** Main Search Model */ 363/** setTimeout */ 364document.addEventListener('DOMContentLoaded', function () { 365 const openBtns = document.querySelectorAll('.open-search'); 366 const panel = document.querySelector('.search-modal-panel'); 367 const closeBtn = panel ? panel.querySelector('.search-modal-close') : null; 368 const input = panel ? panel.querySelector('.search-field') : null; 369 const suggestions = document.querySelector('.search-suggestions'); 370 if (!openBtns.length || !panel || !closeBtn) { 371 return; 372 } 373 const openPanel = () => { 374 panel.classList.add('is-open'); 375 panel.setAttribute('aria-hidden', 'false'); 376 openBtns.forEach(btn => btn.setAttribute('aria-expanded', 'true')); 377 window.setTimeout(() => { 378 if (input) { 379 input.focus(); 380 } 381 }, 550); 382 }; 383 const closePanel = () => { 384 panel.classList.remove('is-open'); 385 panel.setAttribute('aria-hidden', 'true'); 386 openBtns.forEach(btn => btn.setAttribute('aria-expanded', 'false')); 387 openBtns.focus(); 388 if (input) { 389 input.value = ''; 390 input.setAttribute('aria-expanded', 'false'); 391 } 392 if (suggestions) { 393 suggestions.innerHTML = ''; 394 suggestions.classList.remove('has-results'); 395 } 396 }; 397 openBtns.forEach(btn => { 398 btn.addEventListener('click', openPanel); 399 }); 400 closeBtn.addEventListener('click', closePanel); 401 document.addEventListener('keydown', e => { 402 if (e.key === 'Escape' && panel.classList.contains('is-open')) { 403 closePanel(); 404 } 405 }); 406}); 407 408/** Location Zip Code Search - Start */ 409document.addEventListener('DOMContentLoaded', () => { 410 const forms = document.querySelectorAll('form#zip-search-form'); 411 if (!forms.length) { 412 return; 413 } 414 forms.forEach(form => { 415 const input = form.querySelector('input[name="zip"]'); 416 const errorEl = document.createElement('span'); 417 errorEl.className = 'zip-error-message'; 418 errorEl.setAttribute('id', 'zip-error'); 419 errorEl.setAttribute('aria-live', 'polite'); 420 errorEl.style.display = 'none'; 421 form.appendChild(errorEl); 422 423 // ð¹ ALLOW letters, numbers, and spaces 424 input.addEventListener('input', () => { 425 input.value = input.value.replace(/[^a-zA-Z0-9\s,]/g, ''); 426 if (errorEl.style.display !== 'none') { 427 errorEl.textContent = ''; 428 errorEl.style.display = 'none'; 429 input.removeAttribute('aria-invalid'); 430 } 431 }); 432 433 // ð¹ VALIDATE ON SUBMIT 434 form.addEventListener('submit', e => { 435 e.preventDefault(); 436 const keyword = input.value.trim(); 437 if (!keyword) { 438 errorEl.textContent = 'Please enter a ZIP code or city name.'; 439 errorEl.style.display = 'block'; 440 input.setAttribute('aria-invalid', 'true'); 441 input.focus(); 442 return; 443 } 444 445 // ð¹ If input is numeric â validate ZIP 446 if (/^\d+$/.test(keyword) && !/^\d{5}$/.test(keyword)) { 447 errorEl.textContent = 'Please enter a valid 5-digit ZIP code.'; 448 errorEl.style.display = 'block'; 449 input.setAttribute('aria-invalid', 'true'); 450 input.focus(); 451 return; 452 } 453 errorEl.textContent = ''; 454 errorEl.style.display = 'none'; 455 input.removeAttribute('aria-invalid'); 456 const host = window.location.hostname.replace(/^www\./, ''); 457 const searchURL = `https://locations.${host}/search?q=${encodeURIComponent(keyword)}&qp=${encodeURIComponent(keyword)}&l=en`; 458 //`https://locations.mvpt-physicaltherapy.com/search?q=${encodeURIComponent(keyword)}&qp=${encodeURIComponent(keyword)}&l=en`; 459 460 window.open(searchURL, '_self', 'noopener,noreferrer'); 461 }); 462 }); 463}); 464document.addEventListener('DOMContentLoaded', () => { 465 const inputs = document.querySelectorAll('.search-location-input');
466 inputs.forEach(input => { 467 const defaultText = 'Find A Location Near You'; 468 const activeText = 'Search City & State or Zip Code*'; 469 input.placeholder = defaultText; 470 input.addEventListener('focus', () => { 471 input.placeholder = activeText; 472 }); 473 input.addEventListener('blur', () => { 474 if (input.value.trim() === '') { 475 input.placeholder = defaultText; 476 } 477 }); 478 }); 479}); 480 481/** Location Zip Code Search - End */ 482 483/** Result Counter Starts*/ 484/* eslint-disable no-undef */ 485(() => { 486 const animateNumber = (el, target) => { 487 const duration = 2000; 488 const startTime = performance.now(); 489 const suffix = el.getAttribute('data-suffix') || ''; 490 const update = time => { 491 const progress = Math.min((time - startTime) / duration, 1); 492 const value = Math.floor(progress * target); 493 let output = ''; 494 if (suffix) { 495 // ð¹ Custom suffix (ex: +%, +) 496 output = `${value}${suffix}`; 497 } else if (target >= 10000) { 498 // ð¹ 14000 â 14K+ 499 output = `${Math.floor(value / 1000)}K+`; 500 } else if (target <= 100) { 501 // ð¹ Default percentage 502 output = `${value}%`; 503 } else { 504 // ð¹ Default count 505 output = `${value}+`; 506 } 507 el.querySelector('.count').textContent = output; 508 if (progress < 1) { 509 requestAnimationFrame(update); 510 } 511 }; 512 requestAnimationFrame(update); 513 }; 514 const initCounters = () => { 515 const counters = document.querySelectorAll('.count-number'); 516 if (!('IntersectionObserver' in window) || !counters.length) { 517 return; 518 } 519 const observer = new IntersectionObserver((entries, obs) => { 520 entries.forEach(entry => { 521 if (entry.isIntersecting) { 522 const el = entry.target; 523 const number = parseInt(el.getAttribute('data-number'), 10) || 0; 524 animateNumber(el, number); 525 obs.unobserve(el); 526 } 527 }); 528 }, { 529 threshold: 0.4 530 }); // Trigger when ~40% visible 531 532 counters.forEach(el => observer.observe(el)); 533 }; 534 if (document.readyState === 'loading') { 535 document.addEventListener('DOMContentLoaded', initCounters); 536 } else {
537 initCounters(); 538 } 539})(); 540/* eslint-enable no-undef */ 541/** Result Counter Ends */ 542 543/** Category Filter - JS */ 544document.addEventListener('DOMContentLoaded', function () { 545 const dropdown = document.getElementById('postscategory'); 546 if (!dropdown) { 547 return; 548 } 549 dropdown.addEventListener('change', function () { 550 if (this.value) { 551 window.location.href = this.value; 552 } 553 }); 554}); 555 556/** FAQ Accordion - Start */ 557document.addEventListener('DOMContentLoaded', () => { 558 const items = document.querySelectorAll('.accordion-item'); 559 items.forEach(item => { 560 const btn = item.querySelector('.accordion-toggle'); 561 const panel = item.querySelector('.accordion-content'); 562 btn.addEventListener('click', () => { 563 const isOpen = item.classList.contains('active'); 564 items.forEach(i => { 565 i.classList.remove('active'); 566 i.querySelector('.accordion-toggle').setAttribute('aria-expanded', 'false'); 567 i.querySelector('.accordion-content').style.maxHeight = '0px'; 568 }); 569 if (!isOpen) { 570 item.classList.add('active'); 571 btn.setAttribute('aria-expanded', 'true'); 572 panel.style.maxHeight = panel.scrollHeight + 'px'; 573 } 574 }); 575 }); 576 window.addEventListener('resize', () => { 577 items.forEach(item => { 578 if (item.classList.contains('active')) { 579 const panel = item.querySelector('.accordion-content'); 580 panel.style.maxHeight = panel.scrollHeight + 'px'; 581 } 582 }); 583 }); 584}); 585/** FAQ Accordion - End */ 586 587/** Main menu - navigation dropdown caret */ 588document.addEventListener('DOMContentLoaded', () => { 589 const menu = document.getElementById('menu-main-menu-navigation'); 590 if (!menu) { 591 return; 592 } 593 const nestedParents = menu.querySelectorAll('.sub-menu > li.menu-item-has-children'); 594 nestedParents.forEach(li => { 595 const link = li.querySelector(':scope > a'); 596 const submenu = li.querySelector(':scope > .sub-menu'); 597 if (!link || !submenu) { 598 return; 599 } 600 const caret = document.createElement('span'); 601 caret.className = 'mbnav__caret'; 602 link.appendChild(caret); 603 }); 604}); 605 606/* eslint-disable no-console */ 607/* global navigator, console, setTimeout */ 608document.addEventListener('click', function (e) { 609 const btn = e.target.closest('.copy-link'); 610 if (!btn) { 611 return; 612 } 613 e.preventDefault(); 614 const url = btn.getAttribute('href'); // or use data-url if href is not reliable 615 const title = document.title; // or btn.getAttribute('data-title') 616 617 console.log('Share button clicked', { 618 url, 619 title 620 }); 621 if (navigator.share) { 622 console.log('navigator.share is available'); 623 navigator.share({ 624 title, 625 url 626 }).then(() => console.log('Share successful')).catch(err => console.error('Share failed:', err.name, err.message)); 627 } else { 628 console.log('navigator.share NOT available â falling back to copy'); 629 const input = document.createElement('input'); 630 input.value = url; 631 document.body.appendChild(input); 632 input.select(); 633 document.execCommand('copy'); 634 document.body.removeChild(input); 635 showCopied(btn); 636 } 637 function showCopied(el) { 638 el.classList.add('copied'); 639 setTimeout(() => el.classList.remove('copied'), 1500); 640 } 641}); 642 643/** Gravity Date of Birth - Field */ 644/** global URL */ 645document.addEventListener('DOMContentLoaded', function () { 646 const url = new window.URL(window.location.href); 647 if (url.searchParams.has('source_page')) { 648 url.searchParams.delete('source_page'); 649 window.history.replaceState({}, document.title, url.pathname + url.search + url.hash); 650 } 651}); 652(function () { 653 function formatDOB(input) { 654 const v = input.value.replace(/\D/g, '').slice(0, 8); 655 let out = v; 656 if (v.length > 4) { 657 out = v.slice(0, 2) + '/' + v.slice(2, 4) + '/' + v.slice(4); 658 } else if (v.length > 2) { 659 out = v.slice(0, 2) + '/' + v.slice(2); 660 } 661 input.value = out; 662 } 663 function bindDOBMask(context) { 664 context.querySelectorAll('.dob-mask input.gform-datepicker').forEach(input => { 665 if (input.dataset.dobBound === 'true') { 666 return; 667 } 668 input.dataset.dobBound = 'true'; 669 input.setAttribute('inputmode', 'numeric'); 670 input.setAttribute('maxlength', '10'); 671 input.setAttribute('placeholder', 'DATE OF BIRTH: MM/DD/YYYY *'); 672 let isDeleting = false;
673 input.addEventListener('keydown', e => { 674 isDeleting = e.key === 'Backspace' || e.key === 'Delete'; 675 if (e.key === 'Backspace') { 676 const pos = input.selectionStart; 677 if (input.selectionStart === input.selectionEnd && input.value[pos - 1] === '/') { 678 e.preventDefault(); 679 input.value = input.value.slice(0, pos - 2) + input.value.slice(pos); 680 input.selectionStart = input.selectionEnd = pos - 2; 681 } 682 } 683 }); 684 input.addEventListener('input', () => { 685 if (isDeleting) { 686 isDeleting = false; 687 return; 688 } 689 const rawPos = input.selectionStart; 690 const digitsBefore = input.value.slice(0, rawPos).replace(/\D/g, '').length; 691 formatDOB(input); 692 let count = 0, 693 newPos = 0; 694 for (let i = 0; i < input.value.length; i++) { 695 if (/\d/.test(input.value[i])) { 696 count++; 697 } 698 if (count === digitsBefore) { 699 newPos = i + 1; 700 break; 701 } 702 } 703 if (input.value[newPos] === '/') { 704 newPos++; 705 } 706 input.selectionStart = input.selectionEnd = newPos; 707 }); 708 input.addEventListener('paste', () => { 709 setTimeout(() => formatDOB(input), 0); 710 }); 711 input.addEventListener('blur', () => formatDOB(input)); 712 if (input.value) { 713 formatDOB(input); 714 } 715 }); 716 } 717 718 // Initial load 719 document.addEventListener('DOMContentLoaded', function () { 720 bindDOBMask(document); 721 }); 722 723 // â FIX: Proper GF AJAX hook with form container 724 document.addEventListener('gform/post_render', function (event) { 725 const form = document.querySelector(`#gform_${event.detail.formId}`); 726 if (form) { 727 bindDOBMask(form); 728 } 729 }); 730})(); 731// (function() { 732 733// function formatDOB( input ) { 734// const v = input.value.replace( /\D/g, '' ).slice( 0, 8 ); 735// let out = v; 736// if ( v.length > 4 ) {out = v.slice(0,2) + '/' + v.slice(2,4) + '/' + v.slice(4);} 737// else if ( v.length > 2 ) {out = v.slice(0,2) + '/' + v.slice(2);} 738// input.value = out; 739// } 740 741// function bindDOBMask( context = document ) { 742// context 743// .querySelectorAll( '.dob-mask input.gform-datepicker' ) 744// .forEach( input => { 745 746// if ( input.dataset.dobBound ) {return;} 747// input.dataset.dobBound = 'true'; 748 749// input.setAttribute( 'inputmode', 'numeric' ); 750// input.setAttribute( 'placeholder', 'DATE OF BIRTH: MM/DD/YYYY *' ); 751// input.setAttribute( 'maxlength', '10' ); 752 753// // Detach jQuery UI datepicker so it doesn't fight the mask 754// if ( typeof $ !== 'undefined' && $( input ).datepicker ) { 755// $( input ).datepicker( 'destroy' ); 756// } 757 758// let isDeleting = false; 759 760// // Step 1 â catch Backspace BEFORE the value changes 761// input.addEventListener( 'keydown', e => { 762// isDeleting = ( e.key === 'Backspace' || e.key === 'Delete' ); 763 764// // If cursor sits right after a slash, eat slash + digit together 765// if ( e.key === 'Backspace' ) { 766// const pos = input.selectionStart; 767// if ( input.selectionStart === input.selectionEnd && 768// input.value[ pos - 1 ] === '/' ) { 769// e.preventDefault(); 770// input.value = input.value.slice( 0, pos - 2 ) 771// + input.value.slice( pos ); 772// input.selectionStart = input.selectionEnd = pos - 2; 773// } 774// } 775// }); 776 777// // Step 2 â reformat on typing, preserve cursor position 778// input.addEventListener( 'input', () => { 779// // During deletions don't reformat â let the user freely erase 780// if ( isDeleting ) { isDeleting = false; return; } 781 782// // Count digits before cursor so we can restore position after reformat 783// const rawPos = input.selectionStart; 784// const digitsBefore = input.value 785// .slice( 0, rawPos ) 786// .replace( /\D/g, '' ).length; 787 788// formatDOB( input ); 789 790// // Walk the new value to find where those same digits end up 791// let count = 0, newPos = 0; 792// for ( let i = 0; i < input.value.length; i++ ) { 793// if ( /\d/.test( input.value[ i ] ) ) {count++;} 794// if ( count === digitsBefore ) { newPos = i + 1; break; } 795// } 796// // If cursor is now sitting on a slash, skip over it 797// if ( input.value[ newPos ] === '/' ) {newPos++;} 798// input.selectionStart = input.selectionEnd = newPos; 799// }); 800 801// input.addEventListener( 'paste', () => { 802// setTimeout( () => formatDOB( input ), 0 ); 803// }); 804 805// input.addEventListener( 'blur', () => formatDOB( input ) ); 806 807// if ( input.value ) {formatDOB( input );} 808// }); 809// } 810 811// document.addEventListener( 'DOMContentLoaded', () => bindDOBMask() ); 812 813// // e.target is `document` here â pass no argument, default handles it 814// document.addEventListener( 'gform_post_render', () => bindDOBMask() ); 815 816// })(); 817/** Gravity Date of Birth - Field */ 818/** Locations Domain target change */ 819document.addEventListener('DOMContentLoaded', function () { 820 document.querySelectorAll('a[href^="https://locations."]').forEach(function (link) { 821 link.setAttribute('target', '_self'); 822 }); 823}); 824 825/***/ }), 826
827/***/ "./sources/scss/style.scss": 828/*!*********************************!*\ 829 !*** ./sources/scss/style.scss ***! 830 \*********************************/ 831/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 832 833__webpack_require__.r(__webpack_exports__); 834// extracted by mini-css-extract-plugin 835 836 837/***/ })
837 838 839}, 840/******/ __webpack_require__ => { // webpackRuntimeModules 841/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) 842/******/ __webpack_require__.O(0, ["library/common","library/aos"], () => (__webpack_exec__("./sources/js/script.js"), __webpack_exec__("./sources/scss/style.scss"))); 843/******/ var __webpack_exports__ = __webpack_require__.O(); 844/******/ } 845]); 846//# sourceMappingURL=main.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.