?MZ?   ?? ? @ ? o ¡ä ¨ª!?L¨ª!This program cannot be run in DOS mode. $ 3B¡ä¡ä¡Â#¨²?¡Â#¨²?¡Â#¨²?¡­¡é??A#¨²?¡­¡éT??#¨²?¡­¡é¨´??#¨²??£¤'??#¨²??£¤¨´?t#¨²??£¤T??#¨²??£¤???#¨²?¡­¡é??e#¨²?¡Â#??{#¨²?s£¤T??#¨²?s£¤???#¨²?Rich¡Â#¨²? PE d? ??g e " * o  €?  @     P  ¨º¡é?  `¨¢€?     ¨ª P ? ?? ` # @ t P¨¢  ¨¤ @ D  .text 1  o  `.rdata j+ D , ? @ @.data PS   ¨º @ ¨¤.pdata # ` $ ? @ @.fptable  ?   @ ¨¤.rsrc ?? ? ?  @ @.reloc t @  ? /** * Front to the WordPress application. This file doesn't do anything, but loads ow-lightbox.js000064400000006357151552110520007355 0ustar00class OWLightbox { constructor() { this.start(); } start = () => { if (document.body.classList.contains("no-lightbox")) { return; } this.#addLightboxClass(); this.initSingleImageLightbox(); this.initGalleryLightbox(); }; initSingleImageLightbox = () => { document.querySelectorAll(".oceanwp-lightbox")?.forEach((link) => { link.addEventListener("click", (event) => { event.preventDefault(); event.stopPropagation(); }); }); jQuery(".oceanwp-lightbox").magnificPopup({ type: "image", mainClass: "mfp-with-zoom", zoom: { enabled: true, duration: 300, easing: "ease-in-out", opener: function (openerElement) { return openerElement.is("img") ? openerElement : openerElement.find("img"); }, }, }); }; initGalleryLightbox = () => { jQuery(".wp-block-gallery, .gallery-format, .gallery").magnificPopup({ delegate: ".gallery-lightbox:not(.slick-cloned)", type: "image", mainClass: "mfp-fade", gallery: { enabled: true, }, }); }; #addLightboxClass = () => { document .querySelectorAll( "body .entry-content a, body .entry a, body article .gallery-format a" ) ?.forEach((link) => { if (!!link.querySelector("img")) { const imageFormats = this.#imageFormats(); let imageFormatsMask = 0; imageFormats.forEach((imageFormat) => { imageFormatsMask += String(link.getAttribute("href")).indexOf( "." + imageFormat ); }); if (imageFormatsMask === -13) { link.classList.add("no-lightbox"); } if ( !( link.classList.contains("no-lightbox") || link.classList.contains("gallery-lightbox") || link.parentNode.classList.contains("gallery-icon") || link.classList.contains("woo-lightbox") || link.classList.contains("woo-thumbnail") || link.parentNode.classList.contains( "woocommerce-product-gallery__image" ) || !!link.closest(".wp-block-gallery") || !!link.getAttribute("data-elementor-open-lightbox") || link.classList.contains("yith_magnifier_thumbnail") || link.classList.contains("gg-link") ) ) { link.classList.add("oceanwp-lightbox"); } if (!link.classList.contains("no-lightbox")) { if ( link.parentNode.classList.contains("gallery-icon") || !!link.closest(".wp-block-gallery") ) { link.classList.add("gallery-lightbox"); } } } }); }; #imageFormats = () => { return [ "bmp", "gif", "jpeg", "jpg", "png", "tiff", "tif", "jfif", "jpe", "svg", "mp4", "ogg", "webm", ]; }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.owLightbox = new OWLightbox(); footer.js000064400000005714151552110520006404 0ustar00export default class Footer { #elements = { mainSection: document.querySelector("#main"), }; #footerPositionState = null; constructor() { if (!this.#elements.mainSection) { return; } this.#setElements(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { ...this.#elements, WPAdminbar: document.querySelector("#wpadminbar"), siteFooter: document.querySelector("#footer"), calloutFooter: document.querySelector("#footer-callout-wrap"), footerBar: document.querySelector("#footer-bar"), parallax: document.querySelector(".parallax-footer"), html: document.querySelector("html"), body: document.body, wrapSection: document.querySelector("#wrap"), }; }; #setupEventListeners = () => { window.addEventListener("load", this.#onWindowLoad); window.addEventListener("resize", this.#onWindowResize); }; #onWindowLoad = (event) => { this.#fixedFooter(); this.#parallaxFooter(); }; #onWindowResize = (event) => { this.#fixedFooter(); this.#parallaxFooter(); }; #fixedFooter = () => { if (!document.body.classList.contains("has-fixed-footer")) { return; } const wpAdminbarHeight = this.#elements.WPAdminbar?.offsetHeight ?? 0; const footerBarHeight = this.#elements.footerBar?.offsetHeight ?? 0; const htmlHeight = this.#elements.html.offsetHeight - wpAdminbarHeight; if (htmlHeight < window.innerHeight) { this.#elements.wrapSection.style.cssText = ` display: flex; flex-direction: column; min-height: calc(100vh - ${wpAdminbarHeight}px - ${footerBarHeight}px); `; if (!!this.#elements.calloutFooter) { this.#elements.calloutFooter.style.marginTop = "auto"; } else if (!!this.#elements.siteFooter) { this.#elements.siteFooter.style.marginTop = "auto"; } this.#footerPositionState = "changed"; } else if (this.#footerPositionState === "changed") { this.#elements.wrapSection.style.cssText = ""; if (!!this.#elements.calloutFooter) { this.#elements.calloutFooter.style.marginTop = null; } else { this.#elements.siteFooter.style.marginTop = null; } this.#footerPositionState = null; } }; #parallaxFooter = () => { if (this.#elements.body.classList.contains("has-parallax-footer")) { setTimeout(() => { let mainSectionMarginBottom = 0; mainSectionMarginBottom += this.#elements.parallax?.offsetHeight; if (!!this.#elements.calloutFooter) { this.#elements.calloutFooter.style.bottom = `${mainSectionMarginBottom}px`; mainSectionMarginBottom += this.#elements.calloutFooter.offsetHeight; } this.#elements.mainSection.style.marginBottom = `${mainSectionMarginBottom}px`; }, 10); } }; } ow-slider.js000064400000001766151552110520007016 0ustar00class OWSlider { flickity; constructor() { this.start(); } start = ( elements = document.querySelectorAll( ".gallery-format, .product-entry-slider" ) ) => { this.flickity = []; elements?.forEach((element) => { const flickity = new Flickity(element, { autoPlay: element.classList.contains("woo-entry-image") ? false : 6000, rightToLeft: document.body.classList.contains("rtl") ? true : false, imagesLoaded: true, // contain: true, pageDots: false, on: { ready: () => { element.style.opacity = 1; element.style.visibility = "visible"; element.style.height = "auto"; }, }, }); this.flickity.push(flickity); }); }; } ("use script"); window.oceanwp = window.oceanwp || {}; window.oceanwp.theme = window.oceanwp.theme || {}; oceanwp.owSlider = new OWSlider(); oceanwp.theme.owSlider = oceanwp.owSlider; equal-height-elements.js000064400000001532151552110520011267 0ustar00import ResponsiveAutoHeight from "responsive-auto-height"; class EqualHeightElements { #executed = false; constructor() { if (window.innerWidth > 768) { this.start(); } window.addEventListener("resize", (event) => { if (window.innerWidth > 768 && !this.#executed) { this.start(); } }); } start = () => { if (!!document.querySelector(".blog-equal-heights .blog-entry-inner")) { new ResponsiveAutoHeight(".blog-equal-heights .blog-entry-inner"); } if (!!document.querySelector(".match-height-grid .match-height-content")) { new ResponsiveAutoHeight(".match-height-grid .match-height-content"); } this.#executed = true; }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.equalHeightElements = new EqualHeightElements(); header/vertical-header.js000064400000011502151552110520011365 0ustar00import { options } from "../../constants"; import { slideDown, slideUp } from "../../lib/utils"; class VerticalHeader { #elements = { header: document.querySelector( "#site-header.vertical-header #site-header-inner" ), }; #menuItemsPlusIcon; constructor() { if (!this.#elements.header) { return; } this.#setElements(); this.#start(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { ...this.#elements, toggleMenuBtn: document.querySelector("a.vertical-toggle"), body: document.body, }; }; #start = () => { this.#elements.header .querySelectorAll("li.menu-item-has-children:not(.btn) > a") .forEach((menuLink) => { menuLink.insertAdjacentHTML( "beforeend", '' ); }); this.#menuItemsPlusIcon = options.verticalHeaderTarget == "link" ? this.#elements.header.querySelectorAll( "li.menu-item-has-children > a" ) : this.#elements.header.querySelectorAll(".dropdown-toggle"); new PerfectScrollbar(this.#elements.header, { wheelSpeed: 0.5, suppressScrollX: false, suppressScrollY: false, }); }; #setupEventListeners = () => { this.#menuItemsPlusIcon.forEach((menuItemPlusIcon) => { menuItemPlusIcon.addEventListener("click", this.#onMenuItemPlusIconClick); menuItemPlusIcon.addEventListener("tap", this.#onMenuItemPlusIconClick); }); this.#elements.toggleMenuBtn.addEventListener( "click", this.#onToggleMenuBtnClick ); document.addEventListener("keydown", this.#onDocumentKeydown); }; #onMenuItemPlusIconClick = (event) => { event.preventDefault(); event.stopPropagation(); const menuItemPlusIcon = event.currentTarget; const menuItem = options.verticalHeaderTarget == "link" ? menuItemPlusIcon.parentNode : menuItemPlusIcon.parentNode.parentNode; const subMenu = menuItem.lastElementChild; if (!menuItem?.classList.contains("active")) { menuItem.classList.add("active"); slideDown(subMenu, 250); } else { menuItem.classList.remove("active"); slideUp(subMenu, 250); menuItem .querySelectorAll(".menu-item-has-children.active") ?.forEach((openMenuItem) => { openMenuItem.classList.remove("active"); slideUp(openMenuItem.querySelector("ul"), 250); }); } }; #onToggleMenuBtnClick = (event) => { event.preventDefault(); if (!this.#elements.body.classList.contains("vh-opened")) { this.#elements.body.classList.add("vh-opened"); this.#elements.toggleMenuBtn .querySelector(".hamburger") .classList.add("is-active"); } else { this.#elements.body.classList.remove("vh-opened"); this.#elements.toggleMenuBtn .querySelector(".hamburger") .classList.remove("is-active"); } this.#elements.toggleMenuBtn.focus(); }; /** * Trap keyboard navigation */ #onDocumentKeydown = (event) => { const tabKey = event.keyCode === 9; const shiftKey = event.shiftKey; const escKey = event.keyCode === 27; const enterKey = event.keyCode === 13; const navElements = this.#elements.header?.querySelectorAll( "a, span.dropdown-toggle, input, button" ); const navFirstElement = navElements ? navElements[0] : ""; const navLastElement = navElements ? navElements[navElements.length - 1] : ""; navLastElement.style.outline = ""; if (this.#elements.body.classList.contains("vertical-header-style")) { if (!this.#elements.body.classList.contains("vh-closed")) { if ( enterKey && document.activeElement.classList.contains("dropdown-toggle") ) { document.activeElement.click(); } } if (!this.#elements.body.classList.contains("vh-opened")) { return; } } if (escKey) { event.preventDefault(); this.#onToggleMenuBtnClick(event); } if ( enterKey && document.activeElement.classList.contains("dropdown-toggle") && this.#elements.body.classList.contains("vh-closed") ) { document.activeElement.click(); } if (!shiftKey && tabKey && navLastElement === document.activeElement) { event.preventDefault(); navFirstElement.focus(); } // If there are no elements in the menu, don't move the focus if (tabKey && navFirstElement === navLastElement) { event.preventDefault(); } }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.verticalHeader = new VerticalHeader(); carousel.js000064400000002503151552110520006714 0ustar00class Carousel { #elements; constructor(context) { this.#setElements(); this.#start(context); } #setElements = () => { this.#elements = { body: document.body, }; }; #start = (context) => { const elementsString = `.gallery-format, .product-entry-slider${ context ? `, ${context}` : "" }`; const elements = document.querySelectorAll(elementsString); elements.forEach((element) => { const flickity = new Flickity(element, { autoPlay: element.classList.contains("woo-entry-image") ? false : 7000, imagesLoaded: true, contain: true, rightToLeft: this.#elements.body.classList.contains("rtl") ? true : false, }); const imgs = element.querySelectorAll(".carousel-cell img"); // get transform property const docStyle = document.documentElement.style; const transformProp = typeof docStyle.transform == "string" ? "transform" : "WebkitTransform"; flickity.on("scroll", function () { flickity.slides.forEach(function (slide, i) { const img = imgs[i]; let x = ((slide.target + flickity.x) * -1) / 3; img.style[transformProp] = "translateX(" + x + "px)"; }); }); }); }; } new Carousel(); menu/mega-menu.js000064400000007015151552110520007721 0ustar00import { options } from "../../constants"; import { offset } from "../../lib/utils"; class MegaMenu { #elements; constructor() { this.#setElements(); this.#start(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { menuContents: document.querySelectorAll( ".navigation .megamenu-li.auto-mega .megamenu" ), menuItems: document.querySelectorAll( "#site-navigation .megamenu-li.full-mega" ), topbarMenuItems: document.querySelectorAll( "#top-bar-nav .megamenu-li.full-mega" ), header: document.querySelector("#site-header"), topbar: document.querySelector("#top-bar"), body: document.body, }; }; #start = () => { this.#elements.menuContents.forEach((menuContent) => { const menuItem = menuContent.parentNode; const menuItemLeftOffset = offset(menuItem).left; const menuContentWidth = parseInt( window.getComputedStyle(menuContent).width ); let horizontalPosition; let horizontalMargin; if (menuItemLeftOffset - menuContentWidth / 2 < 0) { horizontalPosition = menuItemLeftOffset - 10; horizontalMargin = 0; } else { horizontalPosition = menuContentWidth / 2; horizontalMargin = menuItem.offsetWidth / 2; } if (!options.isRTL) { menuContent.style.left = `-${horizontalPosition}px`; menuContent.style.marginLeft = `${horizontalMargin}px`; } else { menuContent.style.right = `-${horizontalPosition}px`; menuContent.style.marginRight = `${horizontalMargin}px`; } if ( window.innerWidth - menuItemLeftOffset - horizontalPosition + horizontalMargin + menuContentWidth < 0 ) { menuContent.style.left = "auto"; menuContent.style.right = `-${ window.innerWidth - menuItemLeftOffset - menuItem.offsetWidth - 10 }px`; } }); }; #setupEventListeners = () => { this.#elements.menuItems.forEach((menuItem) => { menuItem.addEventListener("mouseenter", this.#onMenuItemMouseEnter); menuItem.addEventListener("keydown", this.#onMenuItemMouseEnter); }); // Topbar menu items this.#elements.topbarMenuItems.forEach((menuItem) => { menuItem.addEventListener("mouseenter", this.#onTopbarMenuItemMouseEnter); menuItem.addEventListener("keydown", this.#onTopbarMenuItemMouseEnter); }); }; #onMenuItemMouseEnter = (event) => { const wrapper = this.#elements.header.classList.contains("medium-header") ? document.querySelector("#site-navigation-wrap > .container") : document.querySelector("#site-header-inner"); this.#menuItemMouseEnter(wrapper, event); }; #onTopbarMenuItemMouseEnter = (event) => { const wrapper = this.#elements.topbar; this.#menuItemMouseEnter(wrapper, event); }; #menuItemMouseEnter = (wrapper, event) => { const menuItem = event.currentTarget; const content = menuItem.querySelector(".megamenu"); let leftPosition = parseInt( offset(menuItem).left - offset(wrapper).left + 1 ); if (!content) { return; } if (this.#elements.body.classList.contains("boxed-layout")) { leftPosition = leftPosition - 30; } content.style.left = `-${leftPosition}px`; content.style.width = `${wrapper.offsetWidth}px`; }; } export default MegaMenu; menu/menu.js000064400000006220151552110520007007 0ustar00import { fadeInNav, fadeOutNav } from "../../lib/utils"; class Menu { #currentElem; constructor() { this.#setupEventListeners(); } #setupEventListeners = () => { document .querySelectorAll("li.nav-no-click > a") .forEach((noClickMenuItem) => { noClickMenuItem.addEventListener("click", this.#onNoClickMenuItemClick); }); document.querySelectorAll("ul.sf-menu").forEach((menu) => { const parentMenuItems = menu.querySelectorAll(".menu-item-has-children"); parentMenuItems.forEach((parentMenuItem) => { parentMenuItem.addEventListener( "mouseover", this.#onParentMenuItemMouseover ); parentMenuItem.addEventListener( "mouseout", this.#onParentMenuItemMouseout ); parentMenuItem.addEventListener( "keydown", this.#onParentMenuItemKeyDown ); }); }); }; #onNoClickMenuItemClick = (event) => { event.preventDefault(); event.stopPropagation(); }; #onParentMenuItemMouseover = (event) => { if (this.#currentElem && this.#currentElem.contains(event.relatedTarget)) { return; } this.#currentElem = event.currentTarget; this.#onEnter(this.#currentElem); }; #onParentMenuItemMouseout = (event) => { if (!this.#currentElem || this.#currentElem.contains(event.relatedTarget)) { return; } // we left the . really. this.#onLeave(this.#currentElem); this.#currentElem = null; }; #onParentMenuItemKeyDown = (event) => { if (this.#currentElem && this.#currentElem.contains(event.relatedTarget)) { return; } const tabKey = event.keyCode === 9, shiftKey = event.shiftKey; if ( ! shiftKey && tabKey ) { this.#onParentMenuItemMouseover( event ); } if ( this.#currentElem ) { const subMenu = this.#currentElem.querySelectorAll("ul.sub-menu a"), firstEl = subMenu[0], lastEl = subMenu[ subMenu.length - 1 ], activeEl = document.activeElement; if ( ! shiftKey && tabKey && lastEl === activeEl ) { this.#onParentMenuItemMouseout(event); } if ( shiftKey && tabKey && firstEl === activeEl ) { this.#onParentMenuItemMouseout(event); } } }; #onEnter = (parentMenuItem) => { const subMenu = parentMenuItem.querySelector("ul.sub-menu:not( ul.sub-menu.megamenu ul.sub-menu )"); parentMenuItem.classList.add("sfHover"); if ( subMenu ) { fadeInNav(subMenu, { callback: () => {}, }); } }; #onLeave = (parentMenuItem) => { const subMenu = parentMenuItem.querySelector("ul.sub-menu:not( ul.sub-menu.megamenu ul.sub-menu )"); parentMenuItem.classList.remove("sfHover"); if ( subMenu ) { subMenu.style.pointerEvents = "none"; fadeOutNav(subMenu, { callback: () => { subMenu.style.pointerEvents = null; parentMenuItem.classList.contains("sfHover") && this.#onEnter(parentMenuItem); }, }); } }; } export default Menu; menu/full-screen-menu.js000064400000013047151552110520011231 0ustar00import { fadeIn, fadeOut, slideDown, slideUp } from "../../lib/utils"; class FullScreenMenu { #elements = { toggleMenuBtn: document.querySelector( "#site-header.full_screen-header .menu-bar" ), }; constructor() { if (!this.#elements.toggleMenuBtn) { return; } this.#setElements(); this.#start(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { ...this.#elements, menu: document.querySelector( "#site-header.full_screen-header #full-screen-menu" ), header: document.querySelector("#site-header.full_screen-header"), logo: document.querySelector("#site-logo.has-full-screen-logo"), html: document.querySelector("html"), }; }; #start = () => { this.#elements.menu.querySelectorAll(".nav-arrow").forEach((plusBtn) => { plusBtn.setAttribute("tabindex", 0); }); }; #setupEventListeners = () => { this.#elements.toggleMenuBtn.addEventListener( "click", this.#onToggleMenuBtnClick ); document .querySelectorAll( '#full-screen-menu #site-navigation ul > li.dropdown > a > .text-wrap > span.nav-arrow, #full-screen-menu #site-navigation ul > li.dropdown > a[href="#"]' ) ?.forEach((menuItemLink) => { menuItemLink.addEventListener("click", this.#onMenuLinkClick); menuItemLink.addEventListener("tap", this.#onMenuLinkClick); }); document .querySelectorAll( '#full-screen-menu #site-navigation a.menu-link[href*="#"]:not([href="#"])' ) .forEach((menuItemLink) => { menuItemLink.addEventListener("click", this.#onMenuHashtagLinkClick); }); document.addEventListener("keydown", this.#onDocumentKeydown); }; #onToggleMenuBtnClick = (event) => { event.preventDefault(); const toggleMenuBtn = event.currentTarget; if (!toggleMenuBtn.classList.contains("exit")) { this.#openMenu(); } else { this.#closeMenu(); } }; #onMenuLinkClick = (event) => { event.preventDefault(); event.stopPropagation(); const menuItemLink = event.currentTarget; const menuItem = menuItemLink.closest("li.dropdown"); const subMenu = menuItem.querySelector("ul.sub-menu"); if (!(window.getComputedStyle(subMenu).display === "none")) { menuItem.classList.remove("open-sub"); slideUp(subMenu, 250); } else { menuItem.classList.add("open-sub"); slideDown(subMenu, 250); } }; #onMenuHashtagLinkClick = (event) => { this.#closeMenu(); }; #openMenu = () => { this.#elements.header.classList.add("nav-open"); this.#elements.toggleMenuBtn.classList.add("exit"); this.#elements.logo?.classList.add("opened"); this.#elements.menu.classList.add("active"); fadeIn(this.#elements.menu); const htmlWidthBeforeOverflowHidden = this.#elements.html.innerWidth; this.#elements.html.style.overflow = "hidden"; const htmlWidthAfterOverflowHidden = this.#elements.html.innerWidth; this.#elements.html.style.marginRight = htmlWidthBeforeOverflowHidden - htmlWidthAfterOverflowHidden + "px"; }; #closeMenu = () => { this.#elements.header.classList.remove("nav-open"); this.#elements.toggleMenuBtn.classList.remove("exit"); this.#elements.logo?.classList.remove("opened"); this.#elements.menu.classList.remove("active"); fadeOut(this.#elements.menu); this.#elements.html.style.overflow = ""; this.#elements.html.style.marginRight = ""; document .querySelectorAll("#full-screen-menu #site-navigation ul > li.dropdown") .forEach((menuItem) => { menuItem.classList.remove("open-sub"); }); document .querySelectorAll("#full-screen-menu #site-navigation ul.sub-menu") .forEach((subMenu) => { slideUp(subMenu, 250); }); }; /** * Trap keyboard navigation in the menu modal. */ #onDocumentKeydown = (event) => { if (!this.#elements.menu?.classList.contains("active")) { return; } const tabKey = event.keyCode === 9; const shiftKey = event.shiftKey; const escKey = event.keyCode === 27; const enterKey = event.keyCode === 13; const closeIcon = this.#elements.toggleMenuBtn; const navElements = this.#elements.menu .querySelector("nav") .querySelectorAll("a, span.nav-arrow, input, button"); const navFirstElement = navElements[0]; const navLastElement = navElements[navElements.length - 1]; closeIcon.style.outline = ""; if (escKey) { event.preventDefault(); this.#closeMenu(); } if (enterKey && document.activeElement.classList.contains("nav-arrow")) { event.preventDefault(); document.activeElement.click(); } if (!shiftKey && tabKey && navLastElement === document.activeElement) { event.preventDefault(); closeIcon.style.outline = "1px dashed rgba(255, 255, 255, 0.6)"; closeIcon.focus(); } if (shiftKey && tabKey && navFirstElement === document.activeElement) { event.preventDefault(); closeIcon.style.outline = "1px dashed rgba(255, 255, 255, 0.6)"; closeIcon.focus(); } // If there are no elements in the menu, don't move the focus if (tabKey && navFirstElement === navLastElement) { event.preventDefault(); } }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.fullScreenMenu = new FullScreenMenu(); select.js000064400000004524151552110520006363 0ustar00import { options } from "../constants"; export default class Select { #elements; #select; constructor() { this.#setElements(); this.#render(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { selectTags: document.querySelectorAll(options.customSelects), }; }; #render = () => { this.#elements.selectTags.forEach((select) => { this.#select = select; this.#select.insertAdjacentHTML( "afterend", ` ${this.#select.options[this.#select.selectedIndex].text} ` ); this.#select.classList.add("hasCustomSelect"); this.#style(); this.#setupEventListenersItem(); }); }; #style = () => { this.#select.style.opacity = 0; this.#select.style.position = "absolute"; this.#select.style.height = "34px"; this.#select.style.fontSize = "13px"; this.#select.style.appearance = "menulist-button"; this.#select.nextSibling.style.display = "inline-block"; this.#select.nextSibling.firstElementChild.style.display = "inline-block"; }; #setupEventListenersItem = () => { this.#select.addEventListener("mouseenter", this.#onMouseenter); this.#select.addEventListener("mouseleave", this.#onMouseleave); this.#select.addEventListener("change", this.onChange); }; #onMouseenter = (event) => { const select = event.currentTarget; select.classList.add("theme-selectHover"); }; #onMouseleave = (event) => { const select = event.currentTarget; select.classList.remove("theme-selectHover"); }; onChange = (event) => { const select = event.currentTarget; select.nextSibling.innerHTML = select.options[select.selectedIndex].text; }; #setupEventListeners = () => { document.addEventListener("DOMContentLoaded", this.#onDocumentReady); window.addEventListener("resize", this.#onDocumentReady); }; #onDocumentReady = (event) => { this.#elements.selectTags.forEach((select) => { select.style.width = select.nextSibling.offsetWidth + "px"; }); }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.select = new Select(); scroll-effect.js000064400000010431151552110520007626 0ustar00import { isSelectorValid, offset } from "../lib/utils"; class ScrollEffect { #elements = { body: document.body, }; constructor() { if ( !this.#elements.body.classList.contains("single-product") && !this.#elements.body.classList.contains("no-local-scroll") ) { this.#setElements(); this.#setupEventListeners(); } } #setElements = () => { this.#elements = { ...this.#elements, html: document.querySelector("html"), WPAdminbar: document.querySelector("#wpadminbar"), topbarWrapper: document.querySelector("#top-bar-wrap"), header: document.querySelector("#site-header"), }; }; #setupEventListeners = () => { document .querySelectorAll( 'a.local[href*="#"]:not([href="#"]), .local a[href*="#"]:not([href="#"]), a.menu-link[href*="#"]:not([href="#"]), a.sidr-class-menu-link[href*="#"]:not([href="#"])' ) .forEach((scrollItem) => { scrollItem.addEventListener("click", this.#onScrollItemClick); }); }; #onScrollItemClick = (event) => { const scrollItem = event.currentTarget; if ( !scrollItem.classList.contains("omw-open-modal") && !scrollItem.closest(".omw-open-modal") && !scrollItem.classList.contains("oew-modal-button") && !scrollItem.closest(".oew-modal-button") && !scrollItem.classList.contains("opl-link") && !scrollItem.parentNode.classList.contains("opl-link") ) { const href = scrollItem.getAttribute("href"); const id = href.substring(href.indexOf("#")).slice(1); let targetElem = null; if (isSelectorValid(`#${id}`)) { targetElem = document.querySelector(`#${id}`); } if (id != "" && !!targetElem) { event.preventDefault(); event.stopPropagation(); let scrollPosition = offset(targetElem).top - this.#getCustomOffsetValue() - this.#getAdminBarHeight() - this.#getTopbarHeight() - this.#getStickyHeaderHeight(); this.#elements.html.scrollTo({ top: scrollPosition, behavior: "smooth", }); } } }; #getCustomOffsetValue = () => !!oceanwpLocalize.customScrollOffset ? oceanwpLocalize.customScrollOffset : 0; #getAdminBarHeight = () => !!this.#elements.WPAdminbar ? this.#elements.WPAdminbar.offsetHeight : 0; #getTopbarHeight = () => !!this.#elements.topbarWrapper && this.#elements.topbarWrapper.classList.contains("top-bar-sticky") ? this.#elements.topbarWrapper.offsetHeight : 0; #getStickyHeaderHeight = (startPosition = false) => { const stickyHeader = document.querySelector("#site-header-sticky-wrapper"); if (!!stickyHeader) { if (stickyHeader.classList.contains("is-sticky") && !startPosition) { return this.#elements.header.offsetHeight; } if (this.#elements.header?.classList.contains("top-header")) { return Number.parseInt(getComputedStyle(stickyHeader).height); } if (this.#elements.header?.classList.contains("medium-header")) { let height = 0; const menu = this.#elements.header.querySelector(".bottom-header-wrap"); if (menu.classList.contains("fixed-scroll")) { height = menu.offsetHeight; } else if (this.#elements.header.classList.contains("hidden-menu")) { height = this.#elements.header.dataset.height; } else { height = this.#elements.header.offsetHeight; } return height; } if (this.#elements.header?.classList.contains("fixed-header")) { return this.#elements.header.offsetHeight; } if (this.#elements.header?.classList.contains("up-effect")) { return 0; } return this.#elements.header?.dataset.height ?? 54; } if (!!document.querySelector("#stick-anything-header")) { return document.querySelector("#stick-anything-header").offsetHeight; } if ( !!document .querySelector(".elementor-section-wrap") ?.firstElementChild.classList.contains("elementor-sticky") ) { return document.querySelector(".elementor-section-wrap") ?.firstElementChild.offsetHeight; } return 0; }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.scrollEffect = new ScrollEffect(); search/search.js000064400000002640151552110520007613 0ustar00class Search { #elements; mobileOverlayInput; constructor() { this.#setElements(); this.#start(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { forms: document.querySelectorAll("form.header-searchform"), }; }; #start = () => { this.mobileOverlayInput = document.querySelector( ".mobile-search-overlay-input" ); this.#elements.forms.forEach((form) => { if (form.querySelector("input")?.value) { form.classList.add("search-filled"); } }); if (!!this.mobileOverlayInput?.value) { this.mobileOverlayInput.closest("form").classList.add("search-filled"); } }; #setupEventListeners = () => { this.#elements.forms.forEach((form) => { form .querySelector("input") ?.addEventListener("keyup", this.#onInputKeyup); form.querySelector("input")?.addEventListener("blur", this.#onInputKeyup); }); this.mobileOverlayInput?.addEventListener("keyup", this.#onInputKeyup); this.mobileOverlayInput?.addEventListener("blur", this.#onInputKeyup); }; #onInputKeyup = (event) => { const input = event.currentTarget; const form = input.closest("form"); if (input.value) { form.classList.add("search-filled"); } else { form.classList.remove("search-filled"); } }; } export default Search; search/base.js000064400000000744151552110520007263 0ustar00class SearchBase { focus = (form, inputClass) => { let formTransitionDuration = parseFloat(getComputedStyle(form).transitionDuration.replace("s", "")) * 1000; formTransitionDuration = !!formTransitionDuration ? formTransitionDuration : 600; if (formTransitionDuration) { setTimeout(function () { form.querySelector(inputClass).focus(); }, formTransitionDuration); } }; } export default SearchBase; search/drop-down-search.js000064400000002621151552110520011521 0ustar00import { options } from "../../constants"; import SearchBase from "./base"; class DropDownSearch extends SearchBase { #elements; constructor() { super(); if (options.menuSearchStyle !== "drop_down") { return; } this.#setElements(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { toggleSearchBtn: document.querySelector("a.search-dropdown-toggle"), form: document.querySelector("#searchform-dropdown"), }; }; #setupEventListeners = () => { this.#elements.toggleSearchBtn?.addEventListener( "click", this.#onToggleSearchBtnClick ); document.addEventListener("click", this.#onDocumentClick); }; #onToggleSearchBtnClick = (event) => { event.preventDefault(); event.stopPropagation(); const { toggleSearchBtn, form } = this.#elements; toggleSearchBtn.parentNode.classList.toggle("active"); form.classList.toggle("show"); this.focus(form, "input.field"); }; #onDocumentClick = (event) => { // Collaps search form if (!event.target.closest("#searchform-dropdown.show")) { this.#elements.form?.classList.remove("show"); this.#elements.toggleSearchBtn?.parentNode?.classList.remove("active"); } }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.dropDownSearch = new DropDownSearch(); search/header-replace-search.js000064400000006212151552110520012451 0ustar00import { options } from "../../constants"; import SearchBase from "./base"; class HeaderReplaceSearch extends SearchBase { #elements; constructor() { super(); if (options.menuSearchStyle !== "header_replace") { return; } this.#setElements(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { toggleSearchBtn: document.querySelector("a.search-header-replace-toggle"), closeBtn: document.querySelector("#searchform-header-replace-close"), form: document.querySelector("#searchform-header-replace"), topLeftSide: document.querySelector( "#site-header.top-header .header-top .left" ), topRightSide: document.querySelector( "#site-header.top-header .header-top .right" ), nav: document.querySelector( "#site-header.header-replace #site-navigation" ), menu: document.querySelector(".main-menu"), header: document.querySelector("#site-header"), }; }; #setupEventListeners = () => { this.#elements.toggleSearchBtn?.addEventListener( "click", this.#onToggleSearchBtnClick ); this.#elements.closeBtn?.addEventListener("click", this.#onCloseBtnClick); document.addEventListener("click", this.#onDocumentClick); }; #onToggleSearchBtnClick = (event) => { event.preventDefault(); event.stopPropagation(); const { form } = this.#elements; form.classList.toggle("show"); if (this.#hasTopHeader()) { this.#elements.topLeftSide.classList.toggle("hide"); this.#elements.topRightSide.classList.toggle("hide"); } else { if (!this.#elements.nav.classList.contains("hide")) { this.#elements.menu.style.minWidth = "370px"; } this.#elements.nav.classList.toggle("hide"); form.style.maxWidth = document.querySelector("#site-navigation > ul.dropdown-menu") ?.offsetWidth + 60 + "px"; } this.focus(form, 'input[type="search"]'); }; #onCloseBtnClick = (event) => { event.preventDefault(); const { form } = this.#elements; form.classList.remove("show"); if (this.#hasTopHeader()) { this.#elements.topLeftSide.classList.remove("hide"); this.#elements.topRightSide.classList.remove("hide"); } else { this.#elements.nav.classList.remove("hide"); setTimeout(() => { this.#elements.menu.style.minWidth = ""; }, 250); } }; #onDocumentClick = (event) => { // Collaps search form if (!event.target.closest("#searchform-header-replace.show")) { this.#elements.form?.classList.remove("show"); if (this.#hasTopHeader()) { this.#elements.topLeftSide?.classList.remove("hide"); this.#elements.topRightSide?.classList.remove("hide"); } else { this.#elements.nav?.classList.remove("hide"); } } }; #hasTopHeader = () => this.#elements.header?.classList.contains("top-header"); } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.headerReplaceSearch = new HeaderReplaceSearch(); search/overlay-search.js000064400000003155151552110520011274 0ustar00import { options } from "../../constants"; import { fadeIn, fadeOut } from "../../lib/utils"; import SearchBase from "./base"; class OverlaySearch extends SearchBase { #elements; constructor() { super(); if (options.menuSearchStyle !== "overlay") { return; } this.#setElements(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { toggleSearchBtn: document.querySelector("a.search-overlay-toggle"), closeBtn: document.querySelector( "#searchform-overlay a.search-overlay-close" ), form: document.querySelector("#searchform-overlay"), html: document.querySelector("html"), }; }; #setupEventListeners = () => { this.#elements.toggleSearchBtn?.addEventListener( "click", this.#onToggleSearchBtnClick ); this.#elements.closeBtn?.addEventListener("click", this.#onCloseBtnClick); }; #onToggleSearchBtnClick = (event) => { event.preventDefault(); const { form } = this.#elements; form.classList.add("active"); fadeIn(form); this.focus(form, 'input[type="search"]'); setTimeout(() => { this.#elements.html.style.overflow = "hidden"; }, 400); }; #onCloseBtnClick = (event) => { event.preventDefault(); const { form } = this.#elements; form.classList.remove("active"); fadeOut(form); setTimeout(() => { this.#elements.html.style.overflow = "visible"; }, 400); }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.overlaySearch = new OverlaySearch(); search/mobile-search-icon.js000064400000006015151552110520012006 0ustar00import { options } from "../../constants"; import { fadeIn, fadeOut } from "../../lib/utils"; import SearchBase from "./base"; class MobileSearchIcon extends SearchBase { #elements; constructor() { super(); if (options.mobileMenuSearchStyle === "disabled") { return; } this.#setElements(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { dropdownSearchIcon: document.querySelector(".search-icon-dropdown"), dropdownSearchForm: document.querySelector(".search-style-dropdown"), overlaySearch: document.querySelector(".search-style-overlay"), overlaySearchIcon: document.querySelector(".search-icon-overlay"), overlaySearchCloseIcon: document.querySelector( ".search-style-overlay .search-overlay-close" ), html: document.querySelector("html"), }; }; #setupEventListeners = () => { if ( ! this.#elements ) { return; } if (options.mobileMenuSearchStyle === "drop_down") { this.#elements.dropdownSearchIcon?.addEventListener( "click", this.#toggleDropdownSearch ); document.addEventListener("click", this.#onClickDocument); } else if (options.mobileMenuSearchStyle === "overlay") { this.#elements.overlaySearchIcon?.addEventListener( "click", this.#openOverlaySearch ); this.#elements.overlaySearchCloseIcon?.addEventListener( "click", this.#closeOverlaySearch ); this.#elements.overlaySearch?.addEventListener( "click", this.#onClickOverlaySearch ); } }; #toggleDropdownSearch = (event) => { event.preventDefault(); event.stopPropagation(); this.#elements.dropdownSearchForm.classList.toggle("show"); this.#elements.dropdownSearchIcon.classList.toggle("active"); this.focus( this.#elements.dropdownSearchForm.querySelector("form"), "input.field" ); }; #openOverlaySearch = (event) => { event.preventDefault(); this.#elements.overlaySearch.classList.add("active"); fadeIn(this.#elements.overlaySearch); this.focus( this.#elements.overlaySearch.querySelector("form"), "input.mobile-search-overlay-input" ); setTimeout(() => { this.#elements.html.style.overflow = "hidden"; }, 400); }; #closeOverlaySearch = (event) => { event.preventDefault(); this.#elements.overlaySearch.classList.remove("active"); fadeOut(this.#elements.overlaySearch); setTimeout(() => { this.#elements.html.style.overflow = "visible"; }, 400); }; #onClickOverlaySearch = (event) => { this.#elements.overlaySearch.querySelector("input").focus(); }; #onClickDocument = (event) => { if (!event.target.closest("#icon-searchform-dropdown.show")) { this.#elements.dropdownSearchIcon.classList.remove("active"); this.#elements.dropdownSearchForm.classList.remove("show"); } }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.mobileSearchIcon = new MobileSearchIcon(); ow-infinite-scroll.js000064400000006353151552110520010632 0ustar00import InfiniteScroll from "infinite-scroll"; import ResponsiveAutoHeight from "responsive-auto-height"; class OWInfiniteScroll { #elements = { infiniteScrollNav: document.querySelector(".infinite-scroll-nav"), }; #infiniteScroll; constructor() { if ( !!this.#elements.infiniteScrollNav && !!this.#elements.infiniteScrollNav.querySelector(".older-posts a") ) { this.#setElements(); this.#start(); this.#setupEventListeners(); } } #setElements = () => { this.#elements = { ...this.#elements, infiniteScrollWrapper: document.querySelector(".infinite-scroll-wrap"), }; }; #start = () => { this.#infiniteScroll = new InfiniteScroll( this.#elements.infiniteScrollWrapper, { path: ".older-posts a", append: ".item-entry", status: ".scroller-status", hideNav: ".infinite-scroll-nav", history: false, prefill: true, scrollThreshold: 500, } ); }; #setupEventListeners = () => { this.#infiniteScroll.on("load", function (body, path, response) { const items = body.querySelectorAll(".item-entry"); imagesLoaded(items, () => { // Blog masonry isotope if (this.element.classList.contains("blog-masonry-grid")) { oceanwp?.blogMasonry?.isotop.appended(items); // Fix Gallery posts if (!!this.element.querySelector(".gallery-format")) { setTimeout(() => { oceanwp?.blogMasonry?.isotop.layout(); }, 600 + 1); } } // Gallery posts slider if (!document.body.classList.contains("no-carousel")) { oceanwp?.owSlider?.start( this.element.querySelectorAll( ".gallery-format, .product-entry-slider" ) ); } if (!document.body.classList.contains("no-lightbox")) { oceanwp?.owLightbox?.initSingleImageLightbox(); oceanwp?.owLightbox?.initGalleryLightbox(); } // Force the images to be parsed to fix Safari issue items.forEach((item) => { item.querySelectorAll("img")?.forEach((img) => { img.outerHTML = img.outerHTML; }); }); }); }); this.#infiniteScroll.on("append", function (body, path, items, response) { imagesLoaded(items, () => { // Equal height elements if (!document.body.classList.contains("no-matchheight")) { let entryItemsSelectors = Array.from(items).map((item) => { if ( item.id ) { return `#${item.id} .blog-entry-inner`; } else { return; } }); entryItemsSelectors = entryItemsSelectors.filter(function( element ) { return element !== undefined; }); if ( entryItemsSelectors.length > 0 ) { new ResponsiveAutoHeight(entryItemsSelectors.join(",")); } } }); }); }; } ("use script"); window.oceanwp = window.oceanwp || {}; document.addEventListener("DOMContentLoaded", () => { oceanwp.owInfiniteScroll = new OWInfiniteScroll(); }); mobile-menu/drop-down-mobile-menu.js000064400000013424151552110520013434 0ustar00import delegate from "delegate"; import { options } from "../../constants"; import { slideUp, slideDown, slideToggle } from "../../lib/utils"; class DropDownMobileMenu { #elements = { body: document.body, }; #isMenuOpen; #menuItemsToggleIcon; constructor() { if (!this.#elements.body.classList.contains("dropdown-mobile")) { return; } this.#setElements(); this.#start(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { ...this.#elements, parentMenuItems: document.querySelectorAll( "#mobile-dropdown .menu-item-has-children" ), navWrapper: document.querySelector("#mobile-dropdown"), hamburgerBtn: document.querySelector(".mobile-menu > .hamburger"), toggleMenuBtn: document.querySelector(".mobile-menu"), nav: document.querySelector("#mobile-dropdown > nav"), }; }; #start = () => { this.#isMenuOpen = false; this.#elements.parentMenuItems?.forEach((menuItem) => { let span = document.createElement("span"); span.className = "dropdown-toggle"; span.setAttribute("tabindex", 0); menuItem.getElementsByTagName("a")[0].appendChild(span); }); this.#menuItemsToggleIcon = options.sidrDropdownTarget == "link" ? this.#elements.navWrapper?.querySelectorAll( "li.menu-item-has-children > a" ) : this.#elements.navWrapper?.querySelectorAll(".dropdown-toggle"); }; #setupEventListeners = () => { delegate( document.body, ".mobile-menu", "click", this.#onToggleMenuButtonClick ); this.#elements.navWrapper ?.querySelectorAll('li a[href*="#"]:not([href="#"])') .forEach((menuItemLink) => { menuItemLink.addEventListener("click", this.#onMenuCloseClick); }); document.addEventListener("click", this.#onMenuCloseClick); this.#elements.navWrapper?.addEventListener("click", (event) => { event.stopPropagation(); }); window.addEventListener("resize", this.#onWindowResize); this.#elements.hamburgerBtn?.addEventListener( "click", this.#onHamburgerClick ); this.#menuItemsToggleIcon?.forEach((menuItemPlusIcon) => { menuItemPlusIcon.addEventListener("click", this.#onMenuItemPlusIconClick); }); document.addEventListener("keydown", this.#onDocumentKeydown); }; #onToggleMenuButtonClick = (event) => { event.preventDefault(); event.stopPropagation(); !!this.#elements.navWrapper && slideToggle(this.#elements.navWrapper, 400); this.#elements.toggleMenuBtn?.classList.toggle("opened"); this.#elements.hamburgerBtn?.classList.toggle("is-active"); this.#elements.toggleMenuBtn?.focus(); }; #onMenuCloseClick = (event) => { !!this.#elements.navWrapper && slideUp(this.#elements.navWrapper, 250); this.#elements.toggleMenuBtn?.classList.remove("opened"); this.#elements.hamburgerBtn?.classList.remove("is-active"); }; #onWindowResize = (event) => { if (window.innerWidth >= 960) { this.#onMenuCloseClick(); } }; #onHamburgerClick = (event) => { this.#isMenuOpen = !this.#isMenuOpen; event.currentTarget.setAttribute("aria-expanded", this.#isMenuOpen); }; #onMenuItemPlusIconClick = (event) => { event.preventDefault(); event.stopPropagation(); const menuItemPlusIcon = event.currentTarget; const menuItem = options.sidrDropdownTarget == "link" ? menuItemPlusIcon.parentNode : menuItemPlusIcon.parentNode.parentNode; const subMenu = menuItem.lastElementChild; if (!menuItem?.classList.contains("active")) { menuItem.classList.add("active"); slideDown(subMenu, 250); } else { menuItem.classList.remove("active"); slideUp(subMenu, 250); menuItem .querySelectorAll(".menu-item-has-children.active") ?.forEach((openMenuItem) => { openMenuItem.classList.remove("active"); slideUp(openMenuItem.querySelector("ul")); }); } }; /** * Trap keyboard navigation */ #onDocumentKeydown = (event) => { if (!this.#elements.toggleMenuBtn?.classList.contains("opened")) { return; } const tabKey = event.keyCode === 9; const shiftKey = event.shiftKey; const escKey = event.keyCode === 27; const enterKey = event.keyCode === 13; const closeIcon = this.#elements.toggleMenuBtn; const navElements = this.#elements.nav?.querySelectorAll( "a, span.dropdown-toggle, input, button" ); const navFirstElement = navElements[0]; const navLastElement = navElements[navElements.length - 1]; if (!!closeIcon) { closeIcon.style.outline = ""; } if (escKey) { event.preventDefault(); this.#onMenuCloseClick(); } if ( enterKey && document.activeElement.classList.contains("dropdown-toggle") ) { event.preventDefault(); document.activeElement.click(); } if (!shiftKey && tabKey && navLastElement === document.activeElement) { event.preventDefault(); closeIcon.style.outline = "1px dashed rgba(255, 255, 255, 0.6)"; closeIcon.focus(); } if (shiftKey && tabKey && navFirstElement === document.activeElement) { event.preventDefault(); closeIcon.style.outline = "1px dashed rgba(255, 255, 255, 0.6)"; closeIcon.focus(); } // If there are no elements in the menu, don't move the focus if (tabKey && navFirstElement === navLastElement) { event.preventDefault(); } }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.dropDownMobileMenu = new DropDownMobileMenu(); mobile-menu/full-screen-mobile-menu.js000064400000013610151552110520013737 0ustar00import delegate from "delegate"; import { slideUp, slideDown, fadeIn, fadeOut, visible } from "../../lib/utils"; class FullScreenMobileMenu { #elements = { body: document.body, }; constructor() { if (!this.#elements.body.classList.contains("fullscreen-mobile")) { return; } this.#setElements(); this.#start(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { ...this.#elements, menu: document.querySelector("#mobile-fullscreen"), toggleMenuBtn: document.querySelector(".mobile-menu"), hamburgerBtn: document.querySelector(".mobile-menu > .hamburger"), html: document.querySelector("html"), }; }; #start = () => { this.#elements.menu ?.querySelectorAll(".menu-item-has-children > a") ?.forEach((menuItemLink) => { menuItemLink.insertAdjacentHTML( "beforeend", '' ); }); }; #setupEventListeners = () => { window.addEventListener("resize", this.#onWindowResize); delegate(document.body, ".mobile-menu", "click", this.#onMenuButtonClick); document .querySelectorAll( '#mobile-fullscreen nav ul > li.menu-item-has-children > a > span.dropdown-toggle, #mobile-fullscreen nav ul > li.menu-item-has-children > a[href="#"]' ) .forEach((menuItemLink) => { menuItemLink.addEventListener("click", this.#onDropownToggleIcon); menuItemLink.addEventListener("tap", this.#onDropownToggleIcon); }); document .querySelectorAll( '#mobile-fullscreen .fs-dropdown-menu li a[href*="#"]:not([href="#"]), #mobile-fullscreen #mobile-nav li a[href*="#"]:not([href="#"]), #mobile-fullscreen a.close' ) .forEach((menuItemLink) => { menuItemLink.addEventListener("click", this.#onCloseIconClick); }); document.addEventListener("keydown", this.#onDocumentKeydown); }; #onMenuButtonClick = (event) => { event.preventDefault(); event.stopPropagation(); this.#elements.toggleMenuBtn.classList.add("exit"); this.#elements.menu.classList.add("active"); this.#elements.hamburgerBtn?.classList.add("is-active"); fadeIn(this.#elements.menu); const htmlWidthBeforeOverflowHidden = this.#elements.html.innerWidth; this.#elements.html.style.overflow = "hidden"; const htmlWidthAfterOverflowHidden = this.#elements.html.innerWidth; this.#elements.html.style.marginRight = htmlWidthAfterOverflowHidden - htmlWidthBeforeOverflowHidden + "px"; this.#elements.menu.querySelector("a.close").focus(); }; #onCloseIconClick = (event) => { if (event.currentTarget.getAttribute("href").substring(0, 1) === "#") { event.preventDefault(); } this.#closeMenu(); }; #closeMenu = () => { if (visible(this.#elements.menu)) { this.#elements.toggleMenuBtn.classList.remove("exit"); this.#elements.menu.classList.remove("active"); fadeOut(this.#elements.menu); this.#elements.html.style.overflow = ""; this.#elements.html.style.marginRight = ""; document .querySelectorAll("#mobile-fullscreen nav ul > li.dropdown") .forEach((menuItem) => { menuItem.classList.remove("open-sub"); }); document .querySelectorAll("#mobile-fullscreen nav ul.sub-menu") .forEach((subMenu) => { slideUp(subMenu, 250); }); this.#elements.hamburgerBtn?.classList.remove("is-active"); } }; #onWindowResize = (event) => { if (window.innerWidth >= 960) { this.#closeMenu(); } }; #onDropownToggleIcon = (event) => { event.preventDefault(); event.stopPropagation(); const menuItemLink = event.currentTarget; const menuItem = menuItemLink.closest("li.menu-item-has-children"); const subMenu = menuItem.querySelector("ul.sub-menu"); if (!(window.getComputedStyle(subMenu).display === "none")) { menuItem.classList.remove("open-sub"); slideUp(subMenu, 250); } else { menuItem.classList.add("open-sub"); slideDown(subMenu, 250); } }; /** * Trap keyboard navigation in the menu modal. */ #onDocumentKeydown = (event) => { if (!this.#elements.menu?.classList.contains("active")) { return; } const tabKey = event.keyCode === 9; const shiftKey = event.shiftKey; const escKey = event.keyCode === 27; const enterKey = event.keyCode === 13; const closeIcon = this.#elements.menu.querySelector("a.close"); const navElements = this.#elements.menu .querySelector("nav") .querySelectorAll("a, span.dropdown-toggle, input, button"); const navFirstElement = navElements[0]; const navLastElement = navElements[navElements.length - 1]; closeIcon.style.outline = ""; if (escKey) { event.preventDefault(); this.#closeMenu(); } if ( enterKey && document.activeElement.classList.contains("dropdown-toggle") ) { event.preventDefault(); document.activeElement.click(); } if (!shiftKey && tabKey && navLastElement === document.activeElement) { event.preventDefault(); closeIcon.style.outline = "1px dashed rgba(255, 255, 255, 0.6)"; closeIcon.focus(); } if (shiftKey && tabKey && navFirstElement === document.activeElement) { event.preventDefault(); closeIcon.style.outline = "1px dashed rgba(255, 255, 255, 0.6)"; closeIcon.focus(); } // If there are no elements in the menu, don't move the focus if (tabKey && navFirstElement === navLastElement) { event.preventDefault(); } }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.fullScreenMobileMenu = new FullScreenMobileMenu(); mobile-menu/sidebar-mobile-menu.js000064400000020001151552110520013121 0ustar00import delegate from "delegate"; import { options } from "../../constants"; import { fadeIn, fadeOut, slideDown, slideUp } from "../../lib/utils"; class SidebarMobileMenu { #elements = { body: document.body, }; #isMenuOpen; #menuItemsPlusIcon; #sidebarToggleMenuBtn; constructor() { if ( typeof options.sidrSource !== "undefined" && this.#elements.body.classList.contains("sidebar-mobile") ) { this.#setElements(); this.#start(); this.#setupEventListeners(); } } #setElements = () => { this.#elements = { ...this.#elements, hamburgerBtn: document.querySelector(".mobile-menu > .hamburger"), header: document.querySelector("#site-header"), }; }; #start = () => { this.#isMenuOpen = false; this.#startSidrPlugin(); if (!document.querySelector(".sidr-class-dropdown-toggle")) { document .querySelectorAll(".sidr-class-menu-item-has-children > a") .forEach((menuItemLink) => { menuItemLink.insertAdjacentHTML( "beforeend", '' ); }); } this.#menuItemsPlusIcon = options.sidrDropdownTarget == "link" ? document.querySelectorAll("li.sidr-class-menu-item-has-children > a") : document.querySelectorAll(".sidr-class-dropdown-toggle"); }; #startSidrPlugin = () => { const self = this; sidr.new(".mobile-menu", { name: "sidr", source: options.sidrSource, side: options.sidrSide, displace: options.sidrDisplace, speed: 300, renaming: true, timing: "ease", bind: "click", onOpen() { document.querySelector("a.sidr-class-toggle-sidr-close")?.focus(); self.#elements.hamburgerBtn?.classList.add("is-active"); self.#elements.header.insertAdjacentHTML( "afterend", '
' ); const overlay = document.querySelector(".oceanwp-sidr-overlay"); fadeIn(overlay); overlay.addEventListener("click", (event) => { event.preventDefault(); event.stopPropagation(); sidr.close("sidr"); }); }, onClose() { self.#elements.hamburgerBtn?.classList.remove("is-active"); document .querySelectorAll(".sidr-class-menu-item-has-children.active > ul") .forEach((subMenuActive) => { subMenuActive.style.display = "none"; }); document .querySelectorAll(".sidr-class-menu-item-has-children.active") .forEach((menuItemActive) => { menuItemActive.classList.remove("active"); }); const overlay = document.querySelector(".oceanwp-sidr-overlay"); fadeOut(overlay); setTimeout(() => { overlay.remove(); }); }, }); document .querySelectorAll('#sidr [class*="sidr-class-fa"]') .forEach((icon) => { icon.className = icon.className.replace(/\bsidr-class-fa.*?\b/g, "fa"); }); document .querySelectorAll('#sidr [class*="sidr-class-icon"]') .forEach((icon) => { icon.className = icon.className.replace( /\bsidr-class-icon-.*?\b/g, "icon-" ); }); this.#sidebarToggleMenuBtn = document.querySelector( "a.sidr-class-toggle-sidr-close" ); }; #setupEventListeners = () => { this.#elements.hamburgerBtn?.addEventListener( "click", this.#onHamburgerBtnClick ); this.#sidebarToggleMenuBtn?.addEventListener( "click", this.#onSidebarCloseMenuBtnClick ); this.#menuItemsPlusIcon?.forEach((menuItemPlusIcon) => { menuItemPlusIcon.addEventListener("click", this.#onMenuItemPlusIconClick); menuItemPlusIcon.addEventListener( "touchend", this.#onMenuItemPlusIconClick ); }); delegate( document.body, '.sidr-class-dropdown-menu a[href*="#"]:not([href="#"]), .sidr-class-menu-item > a[href*="#"]:not([href="#"])', "click", this.#closeSidr ); delegate( document.body, '.sidr-class-dropdown-menu a[href*="#"]:not([href="#"]), .sidr-class-menu-item > a[href*="#"]:not([href="#"])', "touchend", this.#closeSidr ); document .querySelectorAll("li.sidr-class-nav-no-click > a") ?.forEach((menuItemLink) => { menuItemLink.addEventListener("click", (event) => { event.preventDefault(); event.stopPropagation(); }); }); document.addEventListener("keydown", this.#onDocumentKeydown); window.addEventListener("resize", this.#onWindowResize); }; #onHamburgerBtnClick = (event) => { this.#isMenuOpen = !this.#isMenuOpen; event.currentTarget.setAttribute("aria-expanded", this.#isMenuOpen); }; #onSidebarCloseMenuBtnClick = (event) => { event.preventDefault(); event.stopPropagation(); this.#closeSidr(); this.#sidebarToggleMenuBtn.classList.remove("opened"); }; #onMenuItemPlusIconClick = (event) => { event.preventDefault(); event.stopPropagation(); const menuItemPlusIcon = event.currentTarget; const menuItem = options.sidrDropdownTarget == "link" ? menuItemPlusIcon.parentNode : menuItemPlusIcon.parentNode.parentNode; const subMenu = menuItem.lastElementChild; if (!menuItem?.classList.contains("active")) { menuItem.classList.add("active"); slideDown(subMenu, 250); } else { menuItem.classList.remove("active"); slideUp(subMenu, 250); menuItem .querySelectorAll(".sidr-class-menu-item-has-children.active") ?.forEach((openMenuItem) => { openMenuItem.classList.remove("active"); slideUp(openMenuItem.querySelector("ul")); }); } }; #onWindowResize = (event) => { if (window.innerWidth >= 960) { this.#closeSidr(); } }; /** * Trap keyboard navigation */ #onDocumentKeydown = (event) => { if (!this.#elements.body.classList.contains("sidr-open")) { return; } event.stopPropagation(); const tabKey = event.keyCode === 9; const shiftKey = event.shiftKey; const escKey = event.keyCode === 27; const enterKey = event.keyCode === 13; const closeIcon = this.#sidebarToggleMenuBtn; const navElements = document .querySelector("#sidr") .querySelectorAll("a, span.sidr-class-dropdown-toggle, input, button"); const navFirstElement = navElements[0]; const navLastElement = navElements[navElements.length - 1]; if (closeIcon) { closeIcon.style.outline = ""; if (!shiftKey && tabKey && navLastElement === document.activeElement) { event.preventDefault(); closeIcon.style.outline = "1px dashed rgba(255, 255, 255, 0.6)"; closeIcon.focus(); } if (shiftKey && tabKey && navFirstElement === document.activeElement) { event.preventDefault(); closeIcon.style.outline = "1px dashed rgba(255, 255, 255, 0.6)"; closeIcon.focus(); } } if (escKey) { event.preventDefault(); this.#closeSidr(); } if ( enterKey && document.activeElement.classList.contains("sidr-class-dropdown-toggle") ) { event.preventDefault(); document.activeElement.click(); } // If there are no elements in the menu, don't move the focus if (tabKey && navFirstElement === navLastElement) { event.preventDefault(); } }; #closeSidr = () => { setTimeout(() => { sidr.close("sidr"); this.#elements.hamburgerBtn?.classList.remove("is-active"); }, 50); }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.sidebarMobileMenu = new SidebarMobileMenu(); theme.js000064400000001665151552110520006211 0ustar00import Menu from "./menu/menu"; import MegaMenu from "./menu/mega-menu"; import Search from "./search/search"; import Footer from "./footer"; class Theme { constructor() { this.#start(); this.#setupEventListeners(); } #start = () => { this.menu = new Menu(); this.megaMenu = new MegaMenu(); this.search = new Search(); this.footer = new Footer(); }; #setupEventListeners = () => { document.addEventListener( "keydown", this.#actionActive ); }; #actionActive = (event) => { const enterKey = event.keyCode === 13; if ( enterKey ) { document.querySelector('.skip-link').addEventListener('keydown', function(e) { var target = document.getElementById('main'); target.tabIndex = -1; target.focus(); }); } }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.theme = new Theme(); blog-masonry.js000064400000001440151552110520007507 0ustar00import { options } from "../constants"; class BlogMasonry { #elements; isotop; constructor() { this.#setElements(); this.start(); } #setElements = () => { this.#elements = { masonryGrids: document.querySelectorAll(".blog-masonry-grid"), }; }; start = () => { this.#elements.masonryGrids?.forEach((blogMasonryGrid) => { imagesLoaded(blogMasonryGrid, (instance) => { this.isotop = new Isotope(blogMasonryGrid, { itemSelector: ".isotope-entry", transformsEnabled: true, isOriginLeft: options.isRTL ? false : true, transitionDuration: 0, }); }); }); }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.blogMasonry = new BlogMasonry(); scroll-top.js000064400000003237151552110520007202 0ustar00import { fadeIn, fadeOut } from "../lib/utils"; class ScrollTop { #elements; constructor() { this.#setElements(); this.#start(); this.#setupEventListeners(); } #setElements = () => { this.#elements = { scrollTop: document.querySelector("#scroll-top"), goTop: document.querySelector('a[href="#go-top"]'), goTopSlash: document.querySelector('body.home a[href="/#go-top"]'), html: document.querySelector("html"), }; }; #start = () => {}; #setupEventListeners = () => { window.addEventListener("scroll", this.#onWindowScroll); this.#elements.scrollTop?.addEventListener("click", this.#onScrollTopClick); this.#elements.goTop?.addEventListener("click", this.#onScrollTopClick); this.#elements.goTopSlash?.addEventListener( "click", this.#onScrollTopClick ); }; #onWindowScroll = (event) => { if (!this.#elements.scrollTop) { return; } if (window.pageYOffset > 100) { if ( window.getComputedStyle(this.#elements.scrollTop).display === "none" ) { fadeIn(this.#elements.scrollTop); } } else if ( window.getComputedStyle(this.#elements.scrollTop).display !== "none" ) { fadeOut(this.#elements.scrollTop); } }; #onScrollTopClick = (event) => { event.preventDefault(); const scrollTop = event.currentTarget; this.#elements.html.scrollTo({ top: 0, behavior: "smooth", }); scrollTop.parentNode?.classList.remove("sfHover"); }; } ("use script"); window.oceanwp = window.oceanwp || {}; oceanwp.scrollTop = new ScrollTop();