function rakar_content_load_scripts() { var $ = jQuery; "use strict"; /*================================= JS Index Here ==================================*/ /* 01. On Load Function 02. Preloader 03. Mobile Menu 04. Sticky fix 05. Scroll To Top 06. Set Background Image Color & Mask 07. Global Slider 08. Ajax Contact Form 09. Search Box Popup 10. Popup Sidemenu 11. Magnific Popup 12. Section Position 13. Filter 14. Counter Up 15. Shape Mockup 16. Progress Bar Animation 17. Countdown 18. Image to SVG Code 00. Woocommerce Toggle 00. Right Click Disable */ /*================================= JS Index End ==================================*/ /* /*---------- 03. Mobile Menu ----------*/ $.fn.thmobilemenu = function (options) { var opt = $.extend( { menuToggleBtn: ".th-menu-toggle", bodyToggleClass: "th-body-visible", subMenuClass: "th-submenu", subMenuParent: "th-item-has-children", subMenuParentToggle: "th-active", meanExpandClass: "th-mean-expand", appendElement: '', subMenuToggleClass: "th-open", toggleSpeed: 400, }, options ); return this.each(function () { var menu = $(this); function menuToggle() { menu.toggleClass(opt.bodyToggleClass); var subMenu = "." + opt.subMenuClass; $(subMenu).each(function () { if ($(this).hasClass(opt.subMenuToggleClass)) { $(this).removeClass(opt.subMenuToggleClass); $(this).css("display", "none"); $(this).parent().removeClass(opt.subMenuParentToggle); } }); } menu.find("li").each(function () { var submenu = $(this).find("ul"); submenu.addClass(opt.subMenuClass); submenu.css("display", "none"); submenu.parent().addClass(opt.subMenuParent); submenu.prev("a").append(opt.appendElement); submenu.next("a").append(opt.appendElement); }); function toggleDropDown($element) { var $parent = $($element).parent(); var $siblings = $parent.siblings(); $siblings.removeClass(opt.subMenuParentToggle); $siblings.find("ul").slideUp(opt.toggleSpeed).removeClass(opt.subMenuToggleClass); $parent.toggleClass(opt.subMenuParentToggle); $($element).next("ul").slideToggle(opt.toggleSpeed).toggleClass(opt.subMenuToggleClass); } var expandToggler = "." + opt.meanExpandClass; $(expandToggler).each(function () { $(this).on("click", function (e) { e.preventDefault(); toggleDropDown($(this).parent()); }); }); $(opt.menuToggleBtn).each(function () { $(this).on("click", function () { menuToggle(); }); }); menu.on("click", function (e) { e.stopPropagation(); menuToggle(); }); menu.find("div").on("click", function (e) { e.stopPropagation(); }); }); }; $(".th-menu-wrapper").thmobilemenu(); /*---------- 04. Sticky fix ----------*/ $(window).scroll(function () { var topPos = $(this).scrollTop(); if (topPos > 500) { $('.sticky-wrapper').addClass('sticky'); $('.category-menu').addClass('close-category'); } else { $('.sticky-wrapper').removeClass('sticky') $('.category-menu').removeClass('close-category'); } }) $(".menu-expand").each(function () { $(this).on("click", function (e) { e.preventDefault(); $('.category-menu').toggleClass('open-category'); }); }); /*---------- 05. Scroll To Top ----------*/ if ($('.scroll-top').length > 0) { var scrollTopbtn = document.querySelector('.scroll-top'); var progressPath = document.querySelector('.scroll-top path'); var pathLength = progressPath.getTotalLength(); progressPath.style.transition = progressPath.style.WebkitTransition = 'none'; progressPath.style.strokeDasharray = pathLength + ' ' + pathLength; progressPath.style.strokeDashoffset = pathLength; progressPath.getBoundingClientRect(); progressPath.style.transition = progressPath.style.WebkitTransition = 'stroke-dashoffset 10ms linear'; var updateProgress = function () { var scroll = $(window).scrollTop(); var height = $(document).height() - $(window).height(); var progress = pathLength - (scroll * pathLength / height); progressPath.style.strokeDashoffset = progress; } updateProgress(); $(window).scroll(updateProgress); var offset = 50; var duration = 750; jQuery(window).on('scroll', function() { if (jQuery(this).scrollTop() > offset) { jQuery(scrollTopbtn).addClass('show'); } else { jQuery(scrollTopbtn).removeClass('show'); } }); jQuery(scrollTopbtn).on('click', function(event) { event.preventDefault(); jQuery('html, body').animate({scrollTop: 0}, duration); return false; }) } /*---------- 06. Set Background Image Color & Mask ----------*/ if ($("[data-bg-src]").length > 0) { $("[data-bg-src]").each(function () { var src = $(this).attr("data-bg-src"); $(this).css("background-image", "url(" + src + ")"); $(this).removeAttr("data-bg-src").addClass("background-image"); }); } if ($('[data-bg-color]').length > 0) { $('[data-bg-color]').each(function () { var color = $(this).attr('data-bg-color'); $(this).css('background-color', color); $(this).removeAttr('data-bg-color'); }); }; $('[data-border]').each(function() { var borderColor = $(this).data('border'); $(this).css('--th-border-color', borderColor); }); if ($('[data-mask-src]').length > 0) { $('[data-mask-src]').each(function () { var mask = $(this).attr('data-mask-src'); $(this).css({ 'mask-image': 'url(' + mask + ')', '-webkit-mask-image': 'url(' + mask + ')' }); $(this).addClass('bg-mask'); $(this).removeAttr('data-mask-src'); }); }; /*----------- 07. Global Slider ----------*/ $('.th-slider').each(function () { var thSlider = $(this); var settings = $(this).data('slider-options'); // Store references to the navigation Slider var prevArrow = thSlider.find('.slider-prev'); var nextArrow = thSlider.find('.slider-next'); var paginationElN = thSlider.find('.slider-pagination.pagi-number'); var paginationExternel = thSlider.siblings('.slider-controller').find('.slider-pagination'); var paginationEl = paginationExternel.length ? paginationExternel.get(0) : thSlider.find('.slider-pagination').get(0); var paginationType = settings['paginationType'] ? settings['paginationType'] : 'bullets'; var autoplayconditon = settings['autoplay']; var sliderDefault = { slidesPerView: 1, spaceBetween: settings['spaceBetween'] ? settings['spaceBetween'] : 24, loop: settings['loop'] == false ? false : true, speed: settings['speed'] ? settings['speed'] : 1000, autoplay: autoplayconditon ? autoplayconditon : {delay: 6000, disableOnInteraction: false}, navigation: { nextEl: nextArrow.get(0), prevEl: prevArrow.get(0), }, pagination: { el: paginationEl, type: paginationType, clickable: true, renderBullet: function (index, className) { var number = index + 1; var formattedNumber = number < 10 ? '0' + number : number; if (paginationElN.length) { return '' + formattedNumber + ''; } else { return ''; } }, formatFractionCurrent: function (number) { if (number < 10) { return '0' + number; } else { return number; } }, formatFractionTotal: function (number) { if (number < 10) { return '0' + number; } else { return number; } } }, on: { slideChange: function() { setTimeout(function () { swiper.params.mousewheel.releaseOnEdges = false; }, 500); }, reachEnd: function() { setTimeout(function () { swiper.params.mousewheel.releaseOnEdges = true; }, 750); } } }; var options = JSON.parse(thSlider.attr('data-slider-options')); options = $.extend({}, sliderDefault, options); var swiper = new Swiper(thSlider.get(0), options); // Assign the swiper variable if ($('.slider-area').length > 0) { $('.slider-area').closest(".container").parent().addClass("arrow-wrap"); } }); // Function to add animation classes function animationProperties() { $('[data-ani]').each(function () { var animationName = $(this).data('ani'); $(this).addClass(animationName); }); $('[data-ani-delay]').each(function () { var delayTime = $(this).data('ani-delay'); $(this).css('animation-delay', delayTime); }); } animationProperties(); // Add click event handlers for external slider arrows based on data attributes $('[data-slider-prev], [data-slider-next]').on('click', function () { var sliderSelector = $(this).data('slider-prev') || $(this).data('slider-next'); var targetSlider = $(sliderSelector); if (targetSlider.length) { var swiper = targetSlider[0].swiper; if (swiper) { if ($(this).data('slider-prev')) { swiper.slidePrev(); } else { swiper.slideNext(); } } } }); /*-------------- 08. Slider Tab -------------*/ $.fn.activateSliderThumbs = function (options) { var opt = $.extend( { sliderTab: false, tabButton: ".tab-btn", }, options ); return this.each(function () { var $container = $(this); var $thumbs = $container.find(opt.tabButton); var $line = $('').appendTo($container); var sliderSelector = $container.data("slider-tab"); var $slider = $(sliderSelector); var swiper = $slider[0].swiper; $thumbs.on("click", function (e) { e.preventDefault(); var clickedThumb = $(this); clickedThumb.addClass("active").siblings().removeClass("active"); linePos(clickedThumb, $container); clickedThumb.prevAll(opt.tabButton).addClass('list-active'); clickedThumb.nextAll(opt.tabButton).removeClass('list-active'); if (opt.sliderTab) { var slideIndex = clickedThumb.index(); swiper.slideTo(slideIndex); } }); if (opt.sliderTab) { swiper.on("slideChange", function () { var activeIndex = swiper.realIndex; var $activeThumb = $thumbs.eq(activeIndex); $activeThumb.addClass("active").siblings().removeClass("active"); linePos($activeThumb, $container); $activeThumb.prevAll(opt.tabButton).addClass('list-active'); $activeThumb.nextAll(opt.tabButton).removeClass('list-active'); }); var initialSlideIndex = swiper.activeIndex; var $initialThumb = $thumbs.eq(initialSlideIndex); $initialThumb.addClass("active").siblings().removeClass("active"); linePos($initialThumb, $container); $initialThumb.prevAll(opt.tabButton).addClass('list-active'); $initialThumb.nextAll(opt.tabButton).removeClass('list-active'); } function linePos($activeThumb) { var thumbOffset = $activeThumb.position(); var marginTop = parseInt($activeThumb.css('margin-top')) || 0; var marginLeft = parseInt($activeThumb.css('margin-left')) || 0; $line.css("--height-set", $activeThumb.outerHeight() + "px"); $line.css("--width-set", $activeThumb.outerWidth() + "px"); $line.css("--pos-y", thumbOffset.top + marginTop + "px"); $line.css("--pos-x", thumbOffset.left + marginLeft + "px"); } }); }; if ($(".testi-box-tab").length) { $(".testi-box-tab").activateSliderThumbs({ sliderTab: true, tabButton: ".tab-btn", }); } if ($(".product-thumb").length) { $(".product-thumb").activateSliderThumbs({ sliderTab: true, tabButton: ".tab-btn", }); } /*----------- 09. Ajax Contact Form ----------*/ /*---------- 10. Popup Sidemenu ----------*/ function popupSideMenu($sideMenu, $sideMunuOpen, $sideMenuCls, $toggleCls) { // Sidebar Popup $($sideMunuOpen).on('click', function (e) { e.preventDefault(); $($sideMenu).addClass($toggleCls); }); // $($sideMenu).on('click', function (e) { // e.stopPropagation(); // $($sideMenu).removeClass($toggleCls) // }); var sideMenuChild = $sideMenu + ' > div'; $(sideMenuChild).on('click', function (e) { e.stopPropagation(); $($sideMenu).addClass($toggleCls) }); $($sideMenuCls).on('click', function (e) { e.preventDefault(); e.stopPropagation(); $($sideMenu).removeClass($toggleCls); }); }; popupSideMenu( ".popup-search-box", ".searchBoxToggler", ".searchClose", "show" ); popupSideMenu('.sidemenu-cart', '.sideMenuToggler', '.sideMenuCls', 'show'); popupSideMenu('.sidemenu-info', '.sideMenuInfo', '.sideMenuCls', 'show'); /*----------- 11. Magnific Popup ----------*/ /* magnificPopup img view */ $(".popup-image").magnificPopup({ type: "image", mainClass: 'mfp-zoom-in', removalDelay: 260, gallery: { enabled: true, }, }); /* magnificPopup video view */ $(".popup-video").magnificPopup({ type: "iframe", }); /* magnificPopup video view */ $(".popup-content").magnificPopup({ type: "inline", midClick: true, }); /*---------- 12. Section Position ----------*/ // Interger Converter function convertInteger(str) { return parseInt(str, 10); } $.fn.sectionPosition = function (mainAttr, posAttr) { $(this).each(function () { var section = $(this); function setPosition() { var sectionHeight = Math.floor(section.height() / 2), // Main Height of section posData = section.attr(mainAttr), // where to position posFor = section.attr(posAttr), // On Which section is for positioning topMark = "top-half", // Pos top bottomMark = "bottom-half", // Pos Bottom parentPT = convertInteger($(posFor).css("padding-top")), // Default Padding of parent parentPB = convertInteger($(posFor).css("padding-bottom")); // Default Padding of parent if (posData === topMark) { $(posFor).css( "padding-bottom", parentPB + sectionHeight + "px" ); section.css("margin-top", "-" + sectionHeight + "px"); } else if (posData === bottomMark) { $(posFor).css( "padding-top", parentPT + sectionHeight + "px" ); section.css("margin-bottom", "-" + sectionHeight + "px"); } } setPosition(); // Set Padding On Load }); }; var postionHandler = "[data-sec-pos]"; if ($(postionHandler).length) { $(postionHandler).imagesLoaded(function () { $(postionHandler).sectionPosition("data-sec-pos", "data-pos-for"); }); } /*----------- 13. Filter ----------*/ $(".filter-active").imagesLoaded(function () { var $filter = ".filter-active", $filterItem = ".filter-item", $filterMenu = ".filter-menu-active"; if ($($filter).length > 0) { var $grid = $($filter).isotope({ itemSelector: $filterItem, filter: "*", masonry: { columnWidth: $filterItem, }, }); // filter items on button click $($filterMenu).on("click", "button", function () { var filterValue = $(this).attr("data-filter"); $grid.isotope({ filter: filterValue, }); }); // Menu Active Class $($filterMenu).on("click", "button", function (event) { event.preventDefault(); $(this).addClass("active"); $(this).siblings(".active").removeClass("active"); }); } $('.load-more-btn').on('click', function() { var $icon = $(this).find('i'); $icon.addClass('fa-spin-pulse'); setTimeout(function() { $icon.removeClass('fa-spin-pulse'); }, 1000); var $button = $(this); setTimeout(function() { var $closestLoadMoreActive = $button.prev('.load-more-active'); if ($closestLoadMoreActive.length === 0) { $closestLoadMoreActive = $button.closest('.container').find('.load-more-active'); } $closestLoadMoreActive.find('.filter-item.d-none, .accordion-card.d-none').removeClass('d-none'); var $grid = $($filter).isotope({ filter: "*", }); }, 700); }); }); /*----------- 14. Counter Up ----------*/ $(".counter-number").counterUp({ delay: 10, time: 1000, }); /*----------- 15. Hover Item ----------*/ $(".hover-item").hover(function() { $(this).addClass("item-active"); $(this).siblings().removeClass("item-active"); }); /*----------- 16. Shape Mockup ----------*/ $.fn.shapeMockup = function () { var $shape = $(this); $shape.each(function() { var $currentShape = $(this), shapeTop = $currentShape.data('top'), shapeRight = $currentShape.data('right'), shapeBottom = $currentShape.data('bottom'), shapeLeft = $currentShape.data('left'); $currentShape.css({ top: shapeTop, right: shapeRight, bottom: shapeBottom, left: shapeLeft, }).removeAttr('data-top') .removeAttr('data-right') .removeAttr('data-bottom') .removeAttr('data-left') .closest('.elementor-widget').css('position', 'static') .closest('.e-parent').addClass('shape-mockup-wrap'); }); }; if ($('.shape-mockup')) { $('.shape-mockup').shapeMockup(); } /*----------- 21. Overlay Direction ----------*/ if ($('.overlay-direction').length > 0) { if (window.innerWidth > 767) { const nodes = [].slice.call(document.querySelectorAll(".overlay-direction .filter-item"), 0); const directions = { 0: "top", 1: "right", 2: "bottom", 3: "left" }; const classNames = ["in", "out"].map(p => Object.values(directions).map(d => `${p}-${d}`)).reduce((a, b) => a.concat(b)); const getDirectionKey = (ev, node) => { const { width, height, top, left } = node.getBoundingClientRect(); const l = ev.pageX - (left + window.pageXOffset); const t = ev.pageY - (top + window.pageYOffset); const x = l - width / 2 * (width > height ? height / width : 1); const y = t - height / 2 * (height > width ? width / height : 1); return Math.round(Math.atan2(y, x) / 1.57079633 + 5) % 4; }; class Item { constructor(element) { this.element = element; this.element.addEventListener("mouseover", ev => this.update(ev, "in")); this.element.addEventListener("mouseout", ev => this.update(ev, "out")); } update(ev, prefix) { this.element.classList.remove(...classNames); this.element.classList.add(`${prefix}-${directions[getDirectionKey(ev, this.element)]}`); } } nodes.forEach(node => new Item(node)); } } /*----------- 22. Indicator ----------*/ // Indicator $.fn.indicator = function () { // Loop through each .indicator-active element $(this).each(function () { var $menu = $(this), $linkBtn = $menu.find("a"), $btn = $menu.find("button"); // Append indicator $menu.append(''); var $line = $menu.find(".indicator"); // Check which type button is Available var $currentBtn; if ($linkBtn.length) { $currentBtn = $linkBtn; } else if ($btn.length) { $currentBtn = $btn; } // On Click Button Class Remove $currentBtn.on("click", function (e) { e.preventDefault(); $(this).addClass("active"); $(this).siblings(".active").removeClass("active"); linePos(); }); // Indicator Position function linePos() { var $btnActive = $menu.find(".active"), $height = $btnActive.css("height"), $width = $btnActive.css("width"), $top = $btnActive.position().top + "px", $left = $btnActive.position().left + "px"; $(window).on('resize', function () { $top = $btnActive.position().top + "px", $left = $btnActive.position().left + "px"; }); $line.get(0).style.setProperty("--height-set", $height); $line.get(0).style.setProperty("--width-set", $width); $line.get(0).style.setProperty("--pos-y", $top); $line.get(0).style.setProperty("--pos-x", $left); } linePos(); $(window).on('resize', function () { linePos(); }); }); }; if ($(".indicator-active").length) { $(".indicator-active").indicator(); } /*----------- 20. image Slider ----------*/ $("#compslider").on("input change", (e) => { const sliderPos = e.target.value; $('.foreground-img').css('width', `${sliderPos}%`) $('.slider-button').css('left', `calc(${sliderPos}% - 32px)`) }); /*----------- Search Masonary ----------*/ $('.search-active').imagesLoaded(function () { var $filter = '.search-active', $filterItem = '.filter-item'; if ($($filter).length > 0) { var $grid = $($filter).isotope({ itemSelector: $filterItem, filter: '*', // masonry: { // // use outer width of grid-sizer for columnWidth // columnWidth: 1 // } }); }; }); } (function ($) { /*---------- 01. On Load Function ----------*/ $(window).on("load", function () { $(".preloader").fadeOut(); $(".th-slider").addClass('fade-ani'); }); /*---------- 02. Preloader ----------*/ if ($(".preloader").length > 0) { $(".preloaderCls").each(function () { $(this).on("click", function (e) { e.preventDefault(); $(".preloader").css("display", "none"); }); }); } $(document).ready(function () { setTimeout(function () { $('#loader').addClass('loaded'); // Once the container has finished, the scroll appears if ($('#loader').hasClass('loaded')) { // It is so that once the container is gone, the entire preloader section is deleted $('#preloader').delay(9000).queue(function () { $(this).remove(); }); } }, 3000); }); /*---------- Sticky Footer ----------*/ function checkHeight() { if ($('body').height() < $(window).height()) { $('.footer-sitcky').addClass('sticky-footer'); } else { $('.footer-sitcky').removeClass('sticky-footer'); } } $(window).on('load resize', function () { checkHeight(); }); // Elementor Frontend Load $(window).on('elementor/frontend/init', function () { if (elementorFrontend.isEditMode()) { elementorFrontend.hooks.addAction('frontend/element_ready/global', function () { setTimeout(function () { rakar_content_load_scripts(); $(".th-slider").addClass('fade-ani'); }, 500); }); } }); // Window Load $(window).on('load', function () { rakar_content_load_scripts(); }); })(jQuery);