-
WIBUHAX0R1337
-
/
home
/
zqegovsj
/
www
/
us3web.haibo.com.cn
/
laundrypodsac
/
fr
/
js
/
[ Home ]
Create Folder
Create File
Nama File / Folder
Size
Action
mailform
--
NONE
wow
--
NONE
TMSearch.js
2.672KB
Edit File
Delete File
Rename
active.js
8.237KB
Edit File
Delete File
Rename
active_bak.js
12.074KB
Edit File
Delete File
Rename
admin.js
2.421KB
Edit File
Delete File
Rename
ajax.mail.js
1.188KB
Edit File
Delete File
Rename
appear.js
4.129KB
Edit File
Delete File
Rename
be-an-agent-distributor.php
6.478KB
Edit File
Delete File
Rename
bootstrap-select.min.js
30.684KB
Edit File
Delete File
Rename
bootstrap-touch-slider.js
1.537KB
Edit File
Delete File
Rename
bootstrap.bundle.min.js
78.536KB
Edit File
Delete File
Rename
bootstrap.js
68.226KB
Edit File
Delete File
Rename
bootstrap.min.js
35.114KB
Edit File
Delete File
Rename
boss_filterproduct.js
2.178KB
Edit File
Delete File
Rename
camera.js
69.202KB
Edit File
Delete File
Rename
carouFredSel-6.2.1.js
35.233KB
Edit File
Delete File
Rename
cloud-zoom.1.0.3.js
15.709KB
Edit File
Delete File
Rename
color-switcher.js
3.297KB
Edit File
Delete File
Rename
cs.bossthemes.js
5.518KB
Edit File
Delete File
Rename
custom.js
2.247KB
Edit File
Delete File
Rename
device.min.js
3.829KB
Edit File
Delete File
Rename
drive-me-plugin.js
288.314KB
Edit File
Delete File
Rename
feedback.js
0.765KB
Edit File
Delete File
Rename
foot.php
7.876KB
Edit File
Delete File
Rename
functions.bundle.js
296.567KB
Edit File
Delete File
Rename
functions.js
50.441KB
Edit File
Delete File
Rename
gdpr-cookie.js
16.294KB
Edit File
Delete File
Rename
general.js
4.236KB
Edit File
Delete File
Rename
getwidthbrowser.js
0.681KB
Edit File
Delete File
Rename
html5shiv.js
2.328KB
Edit File
Delete File
Rename
industry.js
1.887KB
Edit File
Delete File
Rename
inquiryForm.js
7.04KB
Edit File
Delete File
Rename
inquiryForm_beanagent.js
7.633KB
Edit File
Delete File
Rename
ismobile.js
2.066KB
Edit File
Delete File
Rename
jquery-1.11.2.min.js
93.687KB
Edit File
Delete File
Rename
jquery-2.1.1.min.js
82.274KB
Edit File
Delete File
Rename
jquery-2.2.4.min.js
83.576KB
Edit File
Delete File
Rename
jquery-migrate-1.2.1.js
16.738KB
Edit File
Delete File
Rename
jquery-ui.js
508.513KB
Edit File
Delete File
Rename
jquery.appear.js
1.406KB
Edit File
Delete File
Rename
jquery.appear.min.js
1.787KB
Edit File
Delete File
Rename
jquery.cookie.js
3.161KB
Edit File
Delete File
Rename
jquery.counterup.min.js
2.131KB
Edit File
Delete File
Rename
jquery.equalheights.js
1.332KB
Edit File
Delete File
Rename
jquery.fancybox-buttons.js
3.089KB
Edit File
Delete File
Rename
jquery.fancybox-media.js
5.374KB
Edit File
Delete File
Rename
jquery.fancybox.js
65.961KB
Edit File
Delete File
Rename
jquery.fancybox.min.js
57.141KB
Edit File
Delete File
Rename
jquery.fancybox.pack.js
22.637KB
Edit File
Delete File
Rename
jquery.flexslider-min.js
21.167KB
Edit File
Delete File
Rename
jquery.form.min.js
14.903KB
Edit File
Delete File
Rename
jquery.hotspot.js
2.944KB
Edit File
Delete File
Rename
jquery.isotope.min.js
58.878KB
Edit File
Delete File
Rename
jquery.jgrowl.js
14.691KB
Edit File
Delete File
Rename
jquery.js
87.399KB
Edit File
Delete File
Rename
jquery.mCustomScrollbar.concat.min.js
43.672KB
Edit File
Delete File
Rename
jquery.magnific-popup.min.js
20.459KB
Edit File
Delete File
Rename
jquery.meanmenu.js
5.801KB
Edit File
Delete File
Rename
jquery.min.js
82.38KB
Edit File
Delete File
Rename
jquery.mobile.customized.min.js
17.117KB
Edit File
Delete File
Rename
jquery.mobilemenu.js
2.065KB
Edit File
Delete File
Rename
jquery.mousewheel.min.js
1.371KB
Edit File
Delete File
Rename
jquery.paroller.min.js
2.706KB
Edit File
Delete File
Rename
jquery.prettyPhoto.js
35.358KB
Edit File
Delete File
Rename
jquery.rd-google-map.js
4.428KB
Edit File
Delete File
Rename
jquery.rd-mailform.min.js
23.84KB
Edit File
Delete File
Rename
jquery.rd-navbar.js
9.66KB
Edit File
Delete File
Rename
jquery.rd-styleswitcher.js
3.894KB
Edit File
Delete File
Rename
jquery.responsive.tabs.js
8.758KB
Edit File
Delete File
Rename
jquery.revolution.min.js
104.369KB
Edit File
Delete File
Rename
jquery.selectbox-0.2.min.js
9.068KB
Edit File
Delete File
Rename
jquery.simplr.smoothscroll.min.js
0.752KB
Edit File
Delete File
Rename
jquery.smoothscroll.js
7.346KB
Edit File
Delete File
Rename
jquery.tools.min.js
91.418KB
Edit File
Delete File
Rename
jquery.ui.totop.js
1.23KB
Edit File
Delete File
Rename
jquery.waypoints.min.js
8.626KB
Edit File
Delete File
Rename
lang.js
3.13KB
Edit File
Delete File
Rename
magnific-popup.min.js
19.742KB
Edit File
Delete File
Rename
main.js
32.558KB
Edit File
Delete File
Rename
mapmarker.js
2.059KB
Edit File
Delete File
Rename
modal.js
7.685KB
Edit File
Delete File
Rename
modernizr-2.8.3.min.js
15.154KB
Edit File
Delete File
Rename
moment.js
57.527KB
Edit File
Delete File
Rename
nav-tool.js
1.061KB
Edit File
Delete File
Rename
nouislider.min.js
16.344KB
Edit File
Delete File
Rename
odometer.js
10.022KB
Edit File
Delete File
Rename
owl.carousel.js
39.455KB
Edit File
Delete File
Rename
owl.carousel.min.js
39.455KB
Edit File
Delete File
Rename
owl.js
83.304KB
Edit File
Delete File
Rename
page-test.php
14.846KB
Edit File
Delete File
Rename
parallax-scroll.js
8.72KB
Edit File
Delete File
Rename
parallax.min.js
16.868KB
Edit File
Delete File
Rename
plugins.js
4.707KB
Edit File
Delete File
Rename
plugins.min.js
671.7KB
Edit File
Delete File
Rename
pointer-events.js
2.382KB
Edit File
Delete File
Rename
popper.min.js
19.976KB
Edit File
Delete File
Rename
product.js
10.788KB
Edit File
Delete File
Rename
rangeslider.min.js
40.212KB
Edit File
Delete File
Rename
right-3.js
2.266KB
Edit File
Delete File
Rename
right-4.js
1.412KB
Edit File
Delete File
Rename
script.js
0.244KB
Edit File
Delete File
Rename
script_0.js
11.731KB
Edit File
Delete File
Rename
search.js
0.327KB
Edit File
Delete File
Rename
sform.js
2.772KB
Edit File
Delete File
Rename
superfish.js
11.383KB
Edit File
Delete File
Rename
swiper.min.js
141.427KB
Edit File
Delete File
Rename
tilt.jquery.min.js
5.56KB
Edit File
Delete File
Rename
tmform.js
46.13KB
Edit File
Delete File
Rename
tmstickup.js
2.016KB
Edit File
Delete File
Rename
vendor.js
299.053KB
Edit File
Delete File
Rename
vendor_bak.js
445.484KB
Edit File
Delete File
Rename
web-plugin.js
288.125KB
Edit File
Delete File
Rename
wow.js
11.656KB
Edit File
Delete File
Rename
wow.min.js
6.987KB
Edit File
Delete File
Rename
if( typeof jQuery !== 'undefined' ) { var $ = jQuery.noConflict(); } (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : ( global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SEMICOLON = factory() ); } (this, (function() { // USE STRICT "use strict"; var options = { pageTransition: false, cursor: false, tips: false, headerSticky: true, headerMobileSticky: false, menuBreakpoint: 992, pageMenuBreakpoint: 992, gmapAPI: '', scrollOffset: 60, scrollExternalLinks: true, smoothScroll: false, jsFolder: 'js/', cssFolder: 'css/', }; if( typeof cnvsOptions !== 'undefined' ) { options = Object.assign({}, options, cnvsOptions); } var vars = { baseEl: document, elRoot: document.documentElement, elHead: document.head, elBody: document.body, viewport: { width: 0, height: 0, }, hash: window.location.hash, topScrollOffset: 0, elWrapper: document.getElementById('wrapper'), elHeader: document.getElementById('header'), headerClasses: '', elHeaderWrap: document.getElementById('header-wrap'), headerWrapClasses: '', headerHeight: 0, headerOffset: 0, headerWrapHeight: 0, headerWrapOffset: 0, elPrimaryMenus: document.querySelectorAll('.primary-menu'), elPrimaryMenuTriggers: document.querySelectorAll('.primary-menu-trigger'), elPageMenu: document.getElementById('page-menu'), pageMenuOffset: 0, elSlider: document.getElementById('slider'), elFooter: document.getElementById('footer'), elAppMenu: document.querySelector('.app-menu'), portfolioAjax: {}, sliderParallax: { el: document.querySelector('.slider-parallax'), caption: document.querySelector('.slider-parallax .slider-caption'), inner: document.querySelector('.slider-inner'), offset: 0, }, get menuBreakpoint() { return this.elBody.getAttribute('data-menu-breakpoint') || options.menuBreakpoint; }, get pageMenuBreakpoint() { return this.elBody.getAttribute('data-pagemenu-breakpoint') || options.pageMenuBreakpoint; }, get customCursor() { var value = this.elBody.getAttribute('data-custom-cursor') || options.cursor; return value == 'true' || value === true ? true : false; }, get pageTransition() { var value = this.elBody.classList.contains('page-transition') || options.pageTransition; return value == 'true' || value === true ? true : false; }, get tips() { var value = this.elBody.getAttribute('data-tips') || options.tips; return value == 'true' || value === true ? true : false; }, get smoothScroll() { var value = this.elBody.getAttribute('data-smooth-scroll') || options.smoothScroll; return value == 'true' || value === true ? true : false; }, get isRTL() { return this.elRoot.getAttribute('dir') == 'rtl' ? true : false; }, scrollPos: { x: 0, y: 0, }, $jq: typeof jQuery !== "undefined" ? jQuery.noConflict() : '', resizers: {}, recalls: {}, debounced: false, events: {}, modules: {}, fn: {}, required: { jQuery: { plugin: 'jquery', fn: function(){ return typeof jQuery !== 'undefined'; }, file: options.jsFolder+'jquery.js', id: 'canvas-jquery', } }, fnInit: function() { DocumentOnReady.init(); DocumentOnLoad.init(); DocumentOnResize.init(); } }; var Core = function() { return { getOptions: options, getVars: vars, run: function(obj) { Object.values(obj).map( function(fn) { return typeof fn === 'function' && fn.call(); }); }, runBase: function() { Core.run(Base); }, runModules: function() { Core.run(Modules); }, runContainerModules: function(parent) { if( typeof parent === 'undefined' ) { return false; } Core.getVars.baseEl = parent; Core.runModules(); Core.getVars.baseEl = document; }, breakpoints: function() { var viewWidth = Core.viewport().width; var breakpoint = { xxl: { enter: 1400, exit: 99999 }, xl: { enter: 1200, exit: 1399 }, lg: { enter: 992, exit: 1199.98 }, md: { enter: 768, exit: 991.98 }, sm: { enter: 576, exit: 767.98 }, xs: { enter: 0, exit: 575.98 } }; var previous = ''; Object.keys( breakpoint ).forEach( function(key) { if ( (viewWidth > breakpoint[key].enter) && (viewWidth <= breakpoint[key].exit) ) { vars.elBody.classList.add( 'device-'+key ); } else { vars.elBody.classList.remove( 'device-'+key ); if( previous != '' ) { vars.elBody.classList.remove( 'device-down-'+previous ); } } if ( viewWidth <= breakpoint[key].exit ) { if( previous != '' ) { vars.elBody.classList.add( 'device-down-'+previous ); } } previous = key; if ( viewWidth > breakpoint[key].enter ) { vars.elBody.classList.add( 'device-up-'+key ); return; } else { vars.elBody.classList.remove( 'device-up-'+key ); } }); }, colorScheme: function() { if( vars.elBody.classList.contains('adaptive-color-scheme') ) { window.matchMedia('(prefers-color-scheme: dark)').matches ? vars.elBody.classList.add( 'dark' ) : vars.elBody.classList.remove('dark'); } var bodyColorScheme = Core.cookie.get('__cnvs_body_color_scheme'); if( bodyColorScheme && bodyColorScheme != '' ) { bodyColorScheme.split(" ").includes('dark') ? vars.elBody.classList.add( 'dark' ) : vars.elBody.classList.remove( 'dark' ); } }, throttle: function(timer, func, delay) { if(timer) { return; } timer = setTimeout( function() { func(); timer = undefined; }, delay); }, debounce: function(callback, delay) { clearTimeout(vars.debounced); vars.debounced = setTimeout(callback, delay); }, debouncedResize: function(func, delay) { var timeoutId; return function() { var context = this; var args = arguments; clearTimeout(timeoutId); timeoutId = setTimeout( function() { func.apply(context, args); }, delay); }; }, addEvent: function(el, event, args = {}) { if( typeof el === "undefined" || typeof event === "undefined" ) { return; } var createEvent = new CustomEvent( event, { detail: args }); el.dispatchEvent( createEvent ); vars.events[event] = true; }, scrollEnd: function(callback, refresh = 199) { if (!callback || typeof callback !== 'function') return; window.addEventListener('scroll', function() { Core.debounce( callback, refresh ); }, {passive: true}); }, viewport: function() { var viewport = { width: window.innerWidth || vars.elRoot.clientWidth, height: window.innerHeight || vars.elRoot.clientHeight }; vars.viewport = viewport; document.documentElement.style.setProperty('--cnvs-viewport-width', viewport.width); document.documentElement.style.setProperty('--cnvs-viewport-height', viewport.height); document.documentElement.style.setProperty('--cnvs-body-height', vars.elBody.clientHeight); return viewport; }, isElement: function(selector) { if (typeof selector === 'object' && selector !== null) { return true; } if (selector instanceof Element || selector instanceof HTMLElement) { return true; } if (typeof selector.jquery !== 'undefined') { selector = selector[0]; } if (typeof selector.nodeType !== 'undefined') { return true; } return false; }, getSelector: function(selector, jquery=true, customjs=true) { if(jquery) { if( Core.getVars.baseEl !== document ) { selector = jQuery(Core.getVars.baseEl).find(selector); } else { selector = jQuery(selector); } if( customjs ) { if( typeof customjs == 'string' ) { selector = selector.filter(':not('+ customjs +')'); } else { selector = selector.filter(':not(.customjs)'); } } } else { if( Core.isElement(selector) ) { selector = selector; } else { if( customjs ) { if( typeof customjs == 'string' ) { selector = Core.getVars.baseEl.querySelectorAll(selector+':not('+customjs+')'); } else { selector = Core.getVars.baseEl.querySelectorAll(selector+':not(.customjs)'); } } else { selector = Core.getVars.baseEl.querySelectorAll(selector); } } } return selector; }, onResize: function(callback, refresh = 333) { if (!callback || typeof callback !== 'function') return; window.addEventListener('resize', function() { Core.debounce( callback, refresh ); }); }, imagesLoaded: function(el) { var imgs = el.getElementsByTagName('img') || document.images, len = imgs.length, counter = 0; if(len < 1) { Core.addEvent(el, 'CanvasImagesLoaded'); } var incrementCounter = async function() { counter++; if(counter === len) { Core.addEvent(el, 'CanvasImagesLoaded'); } }; [].forEach.call( imgs, function( img ) { if(img.complete) { incrementCounter(); } else { img.addEventListener('load', incrementCounter, false); } }); }, contains: function(classes, selector) { var classArray = classes.split(" "); var hasClass = false; classArray.forEach( function(classTxt) { if( vars.elBody.classList.contains(classTxt) ) { hasClass = true; } }); return hasClass; }, has: function(nodeList, selector) { return [].slice.call(nodeList)?.filter( function(e) { return e.querySelector(selector); }); }, filtered: function(nodeList, selector) { return [].slice.call(nodeList)?.filter( function(e) { return e.matches(selector); }); }, parents: function(elem, selector) { if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for ( ; elem && elem !== document; elem = elem.parentNode ) { if (selector) { if (elem.matches(selector)) { parents.push(elem); } continue; } parents.push(elem); } return parents; }, siblings: function(elem, nodes = false) { if( nodes ) { return [].slice.call(nodes).filter( function(sibling) { return sibling !== elem; }); } else { return [].slice.call(elem.parentNode.children).filter( function(sibling) { return sibling !== elem; }); } }, getNext: function(elem, selector) { var nextElem = elem.nextElementSibling; if( !selector ) { return nextElem; } if( nextElem && nextElem.matches(selector) ) { return nextElem; } return null; }, offset: function(el) { var rect = el.getBoundingClientRect(), scrollLeft = window.scrollX || document.documentElement.scrollLeft, scrollTop = window.scrollY || document.documentElement.scrollTop; return {top: rect.top + scrollTop, left: rect.left + scrollLeft}; }, isHidden: function(el) { return (el.offsetParent === null); }, classesFn: function(func, classes, selector) { var classArray = classes.split(" "); classArray.forEach( function(classTxt) { if( func == 'add' ) { selector.classList.add(classTxt); } else if( func == 'toggle' ) { selector.classList.toggle(classTxt); } else { selector.classList.remove(classTxt); } }); }, cookie: function() { return { set: function(name, value, daysToExpire) { var date = new Date(); date.setTime(date.getTime() + (daysToExpire * 24 * 60 * 60 * 1000)); var expires = "expires=" + date.toUTCString(); document.cookie = name + "=" + value + ";" + expires + ";path=/"; }, get: function(name) { var decodedCookies = decodeURIComponent(document.cookie); var cookies = decodedCookies.split(";"); for (let i = 0; i < cookies.length; i++) { var cookie = cookies[i].trim(); if (cookie.startsWith(name + "=")) { return cookie.substring(name.length + 1); } } return null; }, remove: function(name) { document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; } }; }(), scrollTo: function(offset = 0, speed = 1250, easing, behavior = 'smooth') { if( easing && (typeof jQuery !== 'undefined' && typeof jQuery.easing["easeOutQuad"] !== 'undefined') ) { jQuery('body,html').stop(true).animate({ 'scrollTop': Number(offset) }, Number( speed ), easing ); } else { var smoothScroll = 'scrollBehavior' in document.documentElement.style; if( typeof window.scroll === 'function' && smoothScroll ) { window.scroll({ top: Number(offset), behavior: behavior }); } else { var body = Core.getVars.elBody; var rootEl = Core.getVars.elRoot; body.scrollIntoView(); rootEl.scrollIntoView(); var scrollToTop = function() { if (body.scrollTop > Number(offset) || rootEl.scrollTop > Number(offset)) { body.scrollTop -= 20; rootEl.scrollTop -= 20; setTimeout(scrollToTop, 10); } }; scrollToTop(); } } }, smoothScroll: function() { new initSmoothScrollfunction(document,90,5); function initSmoothScrollfunction(target, speed, smooth) { if (target === document) target = (document.scrollingElement || document.documentElement || document.body.parentNode || document.body); // cross browser support for document scrolling var moving = false; var pos = target.scrollTop; var frame = target === document.body && document.documentElement ? document.documentElement : target; // safari is the new IE target.addEventListener('mousewheel', scrolled, { passive: false }); target.addEventListener('DOMMouseScroll', scrolled, { passive: false }); function scrolled(e) { e.preventDefault(); // disable default scrolling var delta = normalizeWheelDelta(e); pos += -delta * speed; pos = Math.max(0, Math.min(pos, target.scrollHeight - frame.clientHeight)); // limit scrolling if (!moving) update(); } function normalizeWheelDelta(e){ if(e.detail){ if(e.wheelDelta) return e.wheelDelta/e.detail/40 * (e.detail>0 ? 1 : -1); // Opera else return -e.detail/3; // Firefox }else return e.wheelDelta/120; // IE,Safari,Chrome }; function update() { moving = true; var delta = (pos - target.scrollTop) / smooth; target.scrollTop += delta; if (Math.abs(delta) > 0.5) requestFrame(update); else moving = false; } var requestFrame = function() { // requestAnimationFrame cross browser return ( window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(func) { window.setTimeout(func, 1000 / 50); } ); }(); } }, loadCSS: function(params) { var file = params.file; var htmlID = params.id || false; var cssFolder = params.cssFolder || false; if( !file ) { return false; } if( htmlID && document.getElementById(htmlID) ) { return false; } var htmlStyle = document.createElement('link'); htmlStyle.id = htmlID; htmlStyle.href = cssFolder ? options.cssFolder+file : file; htmlStyle.rel = 'stylesheet'; htmlStyle.type = 'text/css'; vars.elHead.appendChild(htmlStyle); return true; }, loadJS: function(params) { var file = params.file; var htmlID = params.id || false; var type = params.type || false; var callback = params.callback; var async = params.async || true; var defer = params.defer || true; var jsFolder = params.jsFolder || false; if( !file ) { return false; } if( htmlID && document.getElementById(htmlID) ) { return false; } var htmlScript = document.createElement('script'); if ( typeof callback !== 'undefined' ) { if( typeof callback != 'function' ) { throw new Error('Not a valid callback!'); } else { htmlScript.onload = callback; } } htmlScript.id = htmlID; htmlScript.src = jsFolder ? options.jsFolder+file : file; if( type ) { htmlScript.type = type; } htmlScript.async = async ? true : false; htmlScript.defer = defer ? true : false; vars.elBody.appendChild(htmlScript); return true; }, isFuncTrue: async function(fn) { if( 'function' !== typeof fn ) { return false; } var counter = 0; return new Promise( function(resolve, reject) { if(fn()) { resolve(true); } else { var int = setInterval( function() { if(fn()) { clearInterval( int ); resolve(true); } else { if( counter > 30 ) { clearInterval( int ); reject(true); } } counter++; }, 333); } }).catch( function(error) { console.log('Function does not exist: ' + fn); }); }, initFunction: function(params) { vars.elBody.classList.add(params.class); Core.addEvent(window, params.event); vars.events[params.event] = true; }, topScrollOffset: function() { var topOffsetScroll = 0; var pageMenuOffset = vars.elPageMenu?.querySelector('#page-menu-wrap')?.offsetHeight || 0; if( vars.elBody.classList.contains('is-expanded-menu') ) { if( vars.elHeader?.classList.contains('sticky-header') ) { topOffsetScroll = vars.elHeaderWrap.offsetHeight; } if( vars.elPageMenu?.classList.contains('dots-menu') ) { pageMenuOffset = 0; } } topOffsetScroll = topOffsetScroll + pageMenuOffset; Core.getVars.topScrollOffset = topOffsetScroll + options.scrollOffset; }, }; }(); var Base = function() { return { init: function() { Mobile.any() && vars.elBody.classList.add('device-touch'); }, menuBreakpoint: function() { if( Core.getVars.menuBreakpoint <= Core.viewport().width ) { vars.elBody.classList.add( 'is-expanded-menu' ); } else { vars.elBody.classList.remove( 'is-expanded-menu' ); } if( vars.elPageMenu ) { if( typeof Core.getVars.pageMenuBreakpoint === 'undefined' ) { Core.getVars.pageMenuBreakpoint = Core.getVars.menuBreakpoint; } if( Core.getVars.pageMenuBreakpoint <= Core.viewport().width ) { vars.elBody.classList.add( 'is-expanded-pagemenu' ); } else { vars.elBody.classList.remove( 'is-expanded-pagemenu' ); } } }, goToTop: function() { CNVS.GoToTop.init('#gotoTop'); }, stickFooterOnSmall: function() { CNVS.StickFooterOnSmall && CNVS.StickFooterOnSmall.init('#footer'); }, logo: function() { CNVS.Logo.init('#logo'); }, headers: function() { Core.getVars.headerClasses = vars.elHeader?.className || ''; Core.getVars.headerWrapClasses = vars.elHeaderWrap?.className || ''; CNVS.Headers.init('#header'); }, menus: function() { CNVS.Menus.init('#header'); }, pageMenu: function() { CNVS.PageMenu && CNVS.PageMenu.init('#page-menu'); }, sliderDimensions: function() { CNVS.SliderDimensions && CNVS.SliderDimensions.init('.slider-element'); }, sliderMenuClass: function() { CNVS.SliderMenuClass && CNVS.SliderMenuClass.init('.transparent-header + .swiper_wrapper,.swiper_wrapper + .transparent-header,.transparent-header + .revslider-wrap,.revslider-wrap + .transparent-header'); }, topSearch: function() { CNVS.TopSearch.init('#top-search-trigger'); }, topCart: function() { CNVS.TopCart.init('#top-cart'); }, sidePanel: function() { CNVS.SidePanel && CNVS.SidePanel.init('#side-panel'); }, adaptiveColorScheme: function() { CNVS.AdaptiveColorScheme && CNVS.AdaptiveColorScheme.init('.adaptive-color-scheme'); }, portfolioAjax: function() { CNVS.PortfolioAjax && CNVS.PortfolioAjax.init('.portfolio-ajax'); }, cursor: function() { if( vars.customCursor ) { CNVS.Cursor && CNVS.Cursor.init('body'); } }, setBSTheme: function() { if( vars.elBody.classList.contains('dark') ) { document.querySelector('html').setAttribute('data-bs-theme', 'dark'); } else { document.querySelector('html').removeAttribute('data-bs-theme'); document.querySelectorAll('.dark')?.forEach( function(el) { el.setAttribute('data-bs-theme', 'dark'); }); } vars.elBody.querySelectorAll('.not-dark')?.forEach( function(el) { el.setAttribute('data-bs-theme', 'light'); }); } } }(); var Modules = function() { return { bootstrap: function() { var notExec = true; document.querySelectorAll('*').forEach( function(el) { if( notExec ) { el.getAttributeNames().some( function(text) { if( text.includes('data-bs') ) { notExec = false; CNVS.Bootstrap && CNVS.Bootstrap.init('body'); return true; } }); } }); }, resizeVideos: function(element) { CNVS.ResizeVideos && CNVS.ResizeVideos.init(element ? element : 'iframe[src*="youtube"],iframe[src*="vimeo"],iframe[src*="dailymotion"],iframe[src*="maps.google.com"],iframe[src*="google.com/maps"]'); }, pageTransition: function() { if( vars.pageTransition ) { CNVS.PageTransition && CNVS.PageTransition.init('body'); } }, lazyLoad: function(element) { CNVS.LazyLoad && CNVS.LazyLoad.init(element ? element : '.lazy:not(.lazy-loaded)'); }, dataClasses: function() { CNVS.DataClasses && CNVS.DataClasses.init('[data-class]'); }, dataHeights: function() { CNVS.DataHeights && CNVS.DataHeights.init('[data-height-xxl],[data-height-xl],[data-height-lg],[data-height-md],[data-height-sm],[data-height-xs]'); }, lightbox: function(element) { CNVS.Lightbox && CNVS.Lightbox.init(element ? element : '[data-lightbox]'); }, modal: function(element) { CNVS.Modal && CNVS.Modal.init(element ? element : '.modal-on-load'); }, animations: function(element) { CNVS.Animations && CNVS.Animations.init(element ? element : '[data-animate]'); }, hoverAnimations: function(element) { CNVS.HoverAnimations && CNVS.HoverAnimations.init(element ? element : '[data-hover-animate]'); }, gridInit: function(element) { CNVS.Grid && CNVS.Grid.init(element ? element : '.grid-container'); }, filterInit: function(element) { CNVS.Filter && CNVS.Filter.init(element ? element : '.grid-filter,.custom-filter'); }, canvasSlider: function(element) { CNVS.CanvasSlider && CNVS.CanvasSlider.init(element ? element : '.swiper_wrapper'); }, sliderParallax: function() { CNVS.SliderParallax && CNVS.SliderParallax.init('.slider-parallax'); }, flexSlider: function(element) { CNVS.FlexSlider && CNVS.FlexSlider.init(element ? element : '.fslider'); }, html5Video: function(element) { CNVS.FullVideo && CNVS.FullVideo.init(element ? element : '.video-wrap'); }, youtubeBgVideo: function(element) { CNVS.YoutubeBG && CNVS.YoutubeBG.init(element ? element : '.yt-bg-player'); }, toggle: function(element) { CNVS.Toggle && CNVS.Toggle.init(element ? element : '.toggle'); }, accordion: function(element) { CNVS.Accordion && CNVS.Accordion.init(element ? element : '.accordion'); }, counter: function(element) { CNVS.Counter && CNVS.Counter.init(element ? element : '.counter'); }, countdown: function(element) { CNVS.Countdown && CNVS.Countdown.init(element ? element : '.countdown'); }, gmap: function(element) { CNVS.GoogleMaps && CNVS.GoogleMaps.init(element ? element : '.gmap'); }, roundedSkills: function(element) { CNVS.RoundedSkills && CNVS.RoundedSkills.init(element ? element : '.rounded-skill'); }, progress: function(element) { CNVS.Progress && CNVS.Progress.init(element ? element : '.skill-progress'); }, twitterFeed: function(element) { CNVS.Twitter && CNVS.Twitter.init(element ? element : '.twitter-feed'); }, flickrFeed: function(element) { CNVS.Flickr && CNVS.Flickr.init(element ? element : '.flickr-feed'); }, instagram: function(element) { CNVS.Instagram && CNVS.Instagram.init(element ? element : '.instagram-photos'); }, // Dribbble Pending navTree: function(element) { CNVS.NavTree && CNVS.NavTree.init(element ? element : '.nav-tree'); }, carousel: function(element) { CNVS.Carousel && CNVS.Carousel.init(element ? element : '.carousel-widget'); }, masonryThumbs: function(element) { CNVS.MasonryThumbs && CNVS.MasonryThumbs.init(element ? element : '.masonry-thumbs'); }, notifications: function(element) { CNVS.Notifications && CNVS.Notifications.init(element ? element : false); }, textRotator: function(element) { CNVS.TextRotator && CNVS.TextRotator.init(element ? element : '.text-rotater'); }, onePage: function(element) { CNVS.OnePage && CNVS.OnePage.init(element ? element : '[data-scrollto],.one-page-menu'); }, ajaxForm: function(element) { CNVS.AjaxForm && CNVS.AjaxForm.init(element ? element : '.form-widget'); }, subscribe: function(element) { CNVS.Subscribe && CNVS.Subscribe.init(element ? element : '.subscribe-widget'); }, conditional: function(element) { CNVS.Conditional && CNVS.Conditional.init(element ? element : '.form-group[data-condition],.form-group[data-conditions]'); }, shapeDivider: function(element) { CNVS.ShapeDivider && CNVS.ShapeDivider.init(element ? element : '.shape-divider'); }, stickySidebar: function(element) { CNVS.StickySidebar && CNVS.StickySidebar.init(element ? element : '.sticky-sidebar-wrap'); }, cookies: function(element) { CNVS.Cookies && CNVS.Cookies.init(element ? element : '.gdpr-settings,[data-cookies]'); }, quantity: function(element) { CNVS.Quantity && CNVS.Quantity.init(element ? element : '.quantity'); }, readmore: function(element) { CNVS.ReadMore && CNVS.ReadMore.init(element ? element : '[data-readmore]'); }, pricingSwitcher: function(element) { CNVS.PricingSwitcher && CNVS.PricingSwitcher.init(element ? element : '.pricing-tenure-switcher'); }, ajaxButton: function(element) { CNVS.AjaxButton && CNVS.AjaxButton.init(element ? element : '[data-ajax-loader]'); }, videoFacade: function(element) { CNVS.VideoFacade && CNVS.VideoFacade.init(element ? element : '.video-facade'); }, schemeToggle: function(element) { CNVS.SchemeToggle && CNVS.SchemeToggle.init(element ? element : '.body-scheme-toggle'); }, clipboardCopy: function(element) { CNVS.Clipboard && CNVS.Clipboard.init(element ? element : '.clipboard-copy'); }, codeHighlight: function(element) { CNVS.CodeHighlight && CNVS.CodeHighlight.init(element ? element : '.code-highlight'); }, tips: function() { if( vars.tips ) { CNVS.Tips && CNVS.Tips.init('body'); } }, textSplitter: function(element) { CNVS.TextSplitter && CNVS.TextSplitter.init(element ? element : '.text-splitter'); }, mediaActions: function(element) { CNVS.MediaActions && CNVS.MediaActions.init(element ? element : '.media-wrap'); }, viewportDetect: function(element) { CNVS.ViewportDetect && CNVS.ViewportDetect.init(element ? element : '.viewport-detect'); }, scrollDetect: function(element) { CNVS.ScrollDetect && CNVS.ScrollDetect.init(element ? element : '.scroll-detect'); }, fontSizer: function(element) { CNVS.FontSizer && CNVS.FontSizer.init(element ? element : '.font-sizer'); }, hover3D: function(element) { CNVS.Hover3D && CNVS.Hover3D.init(element ? element : '.hover-3d'); }, bsComponents: function(element) { CNVS.BSComponents && CNVS.BSComponents.init(element ? element : '[data-bs-toggle="tooltip"],[data-bs-toggle="popover"],[data-bs-toggle="tab"],[data-bs-toggle="pill"],.style-msg'); } }; }(); var Mobile = function() { return { Android: function() { return navigator.userAgent.match(/Android/i); }, BlackBerry: function() { return navigator.userAgent.match(/BlackBerry/i); }, iOS: function() { return navigator.userAgent.match(/iPhone|iPad|iPod/i); }, Opera: function() { return navigator.userAgent.match(/Opera Mini/i); }, Windows: function() { return navigator.userAgent.match(/IEMobile/i); }, any: function() { return (Mobile.Android() || Mobile.BlackBerry() || Mobile.iOS() || Mobile.Opera() || Mobile.Windows()); } } }(); // Add your Custom JS Codes here var Custom = function() { return { onReady: function() { // Add JS Codes here to Run on Document Ready }, onLoad: function() { // Add JS Codes here to Run on Window Load }, onResize: function() { // Add JS Codes here to Run on Window Resize } } }(); var DocumentOnResize = function() { return { init: function() { Core.viewport(); Core.breakpoints(); Base.menuBreakpoint(); Core.run(vars.resizers); Custom.onResize(); Core.addEvent( window, 'cnvsResize' ); } }; }(); var DocumentOnReady = function() { return { init: function() { Core.breakpoints(); Core.colorScheme(); Core.runBase(); Core.runModules(); Core.topScrollOffset(); if( vars.smoothScroll ) { new Core.smoothScroll(); } DocumentOnReady.windowscroll(); Custom.onReady(); }, windowscroll: function() { Core.scrollEnd( function() { Base.pageMenu(); }); } }; }(); var DocumentOnLoad = function() { return { init: function() { Custom.onLoad(); } }; }(); document.addEventListener( 'DOMContentLoaded', function() { DocumentOnReady.init(); }); window.addEventListener('load', function() { DocumentOnLoad.init(); }); var resizeFunctions = Core.debouncedResize( function() { DocumentOnResize.init(); }, 250); window.addEventListener('resize', function() { resizeFunctions(); }); var canvas_umd = { Core, Base, Modules, Mobile, Custom, }; return canvas_umd; }))); (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : ( global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.CNVS = factory() ); } (this, (function() { // USE STRICT "use strict"; /** * -------------------------------------------------------------------------- * DO NOT DELETE!! Start (Required) * -------------------------------------------------------------------------- */ if( SEMICOLON === 'undefined' || SEMICOLON.Core === 'undefined' || SEMICOLON.Base === 'undefined' || SEMICOLON.Modules === 'undefined' || SEMICOLON.Mobile === 'undefined' ) { return false; } var __core = SEMICOLON.Core; var __base = SEMICOLON.Base; var __modules = SEMICOLON.Modules; var __mobile = SEMICOLON.Mobile; // DO NOT DELETE!! End return { /** * -------------------------------------------------------------------------- * Logo Functions Start (Required) * -------------------------------------------------------------------------- */ Logo: function() { return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var head = __core.getVars.elHead, style, css; if( selector[0].querySelector('.logo-dark') ) { style = document.createElement('style'); head.appendChild(style); css = '.dark #header-wrap:not(.not-dark) #logo [class^="logo-"], .dark .header-row:not(.not-dark) #logo [class^="logo-"] { display: none; } .dark #header-wrap:not(.not-dark) #logo .logo-dark, .dark .header-row:not(.not-dark) #logo .logo-dark { display: flex; }'; style.appendChild(document.createTextNode(css)); } if( selector[0].querySelector('.logo-sticky') ) { style = document.createElement('style'); head.appendChild(style); css = '.sticky-header #logo [class^="logo-"] { display: none !important; } .sticky-header #logo .logo-sticky { display: flex !important; }'; style.appendChild(document.createTextNode(css)); } if( selector[0].querySelector('.logo-sticky-shrink') ) { style = document.createElement('style'); head.appendChild(style); css = '.sticky-header-shrink #logo [class^="logo-"] { display: none; } .sticky-header-shrink #logo .logo-sticky-shrink { display: flex; }'; style.appendChild(document.createTextNode(css)); } if( selector[0].querySelector('.logo-mobile') ) { style = document.createElement('style'); head.appendChild(style); css = 'body:not(.is-expanded-menu) #logo [class^="logo-"] { display: none; } body:not(.is-expanded-menu) #logo .logo-mobile { display: flex; }'; style.appendChild(document.createTextNode(css)); } } }; }(), // Logo Functions End /** * -------------------------------------------------------------------------- * GoToTop Functions Start (Required) * -------------------------------------------------------------------------- */ GoToTop: function() { var _init = function(element) { var elSpeed = element.getAttribute('data-speed') || 700, elEasing = element.getAttribute('data-easing'); element.onclick = function(e) { __core.scrollTo(0, Number(elSpeed), elEasing); e.preventDefault(); }; }; var _scroll = function(element) { var body = __core.getVars.elBody.classList; var elMobile = element.getAttribute('data-mobile') || 'false', elOffset = element.getAttribute('data-offset') || 450; if( elMobile == 'false' && ( body.contains('device-xs') || body.contains('device-sm') || body.contains('device-md') ) ) { return true; } if( window.scrollY > Number(elOffset) ) { body.add('gototop-active'); } else { body.remove('gototop-active'); } }; return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } _init(selector[0]); _scroll(selector[0]); window.addEventListener('scroll', function(){ _scroll(selector[0]); }, {passive:true}); } }; }(), // GoToTop Functions End /** * -------------------------------------------------------------------------- * StickFooterOnSmall Functions Start * -------------------------------------------------------------------------- */ StickFooterOnSmall: function() { return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } __core.getVars.elFooter.style.marginTop = ''; var windowH = __core.viewport().height, wrapperH = __core.getVars.elWrapper.offsetHeight; if( !__core.getVars.elBody.classList.contains('sticky-footer') && __core.getVars.elFooter !== 'undefined' && __core.getVars.elWrapper.contains( __core.getVars.elFooter ) ) { if( windowH > wrapperH ) { __core.getVars.elFooter.style.marginTop = (windowH - wrapperH)+'px'; } } if( __core.getVars.elAppMenu ) { if((__core.viewport().height - (__core.getVars.elAppMenu.getBoundingClientRect().top + __core.getVars.elAppMenu.getBoundingClientRect().height)) === 0) { __core.getVars.elFooter.style.marginBottom = __core.getVars.elAppMenu.offsetHeight+'px'; } } __core.getVars.resizers.stickfooter = function() { __base.stickFooterOnSmall(); }; } }; }(), // StickFooterOnSmall Functions End /** * -------------------------------------------------------------------------- * Header Functions Start (Required) * -------------------------------------------------------------------------- */ Headers: function() { var _offset = function() { var elHeader = __core.getVars.elHeader; var elHeaderInc = document.querySelector('.include-header'); __core.getVars.headerOffset = elHeader.offsetTop; if( __core.getVars.elHeader?.classList.contains('floating-header') || elHeaderInc?.classList.contains('include-topbar') ) { __core.getVars.headerOffset = __core.offset(elHeader).top; } __core.getVars.elHeaderWrap?.classList.add('position-absolute'); __core.getVars.headerWrapOffset = __core.getVars.headerOffset + __core.getVars.elHeaderWrap?.offsetTop; __core.getVars.elHeaderWrap?.classList.remove('position-absolute'); if( elHeader.hasAttribute('data-sticky-offset') ) { var headerDefinedOffset = elHeader.getAttribute('data-sticky-offset'); if( headerDefinedOffset == 'full' ) { __core.getVars.headerWrapOffset = __core.viewport().height; var headerOffsetNegative = elHeader.getAttribute('data-sticky-offset-negative'); if( typeof headerOffsetNegative !== 'undefined' ) { if( headerOffsetNegative == 'auto' ) { __core.getVars.headerWrapOffset = __core.getVars.headerWrapOffset - elHeader.offsetHeight - 1; } else { __core.getVars.headerWrapOffset = __core.getVars.headerWrapOffset - Number(headerOffsetNegative) - 1; } } } else { __core.getVars.headerWrapOffset = Number(headerDefinedOffset); } } }; var _sticky = function(stickyOffset) { if( !__core.getVars.elBody.classList.contains('is-expanded-menu') && __core.getVars.mobileSticky != 'true' ) { return true; } if( window.scrollY > stickyOffset ) { if( !__core.getVars.elBody.classList.contains('side-header') ) { __core.getVars.elHeader.classList.add('sticky-header'); _changeMenuClass('sticky'); if( __core.getVars.elBody.classList.contains('is-expanded-menu') && __core.getVars.stickyShrink == 'true' && !__core.getVars.elHeader.classList.contains('no-sticky') ) { if( ( window.scrollY - stickyOffset ) > Number( __core.getVars.stickyShrinkOffset ) ) { __core.getVars.elHeader.classList.add('sticky-header-shrink'); } else { __core.getVars.elHeader.classList.remove('sticky-header-shrink'); } } } } else { _removeSticky(); if( __core.getVars.mobileSticky == 'true' ) { _changeMenuClass('responsive'); } } }; var _removeSticky = function() { __core.getVars.elHeader.className = __core.getVars.headerClasses; __core.getVars.elHeader.classList.remove('sticky-header', 'sticky-header-shrink'); if( __core.getVars.elHeaderWrap ) { __core.getVars.elHeaderWrap.className = __core.getVars.headerWrapClasses; } if( !__core.getVars.elHeaderWrap?.classList.contains('force-not-dark') ) { __core.getVars.elHeaderWrap?.classList.remove('not-dark'); } __base.sliderMenuClass(); }; var _changeMenuClass = function(type) { var newClassesArray = ''; if( 'responsive' == type ) { if( __core.getVars.elBody.classList.contains('is-expanded-menu') ){ return true; } if( __core.getVars.mobileHeaderClasses ) { newClassesArray = __core.getVars.mobileHeaderClasses.split(/ +/); } } else { if( !__core.getVars.elHeader.classList.contains('sticky-header') ){ return true; } if( __core.getVars.stickyHeaderClasses ) { newClassesArray = __core.getVars.stickyHeaderClasses.split(/ +/); } } var noOfNewClasses = newClassesArray.length; if( noOfNewClasses > 0 ) { var i = 0; for( i=0; i<noOfNewClasses; i++ ) { if( newClassesArray[i] == 'not-dark' ) { __core.getVars.elHeader.classList.remove('dark'); if( !__core.getVars.elHeaderWrap?.classList.contains('.not-dark') ) { __core.getVars.elHeaderWrap?.classList.add('not-dark'); } } else if( newClassesArray[i] == 'dark' ) { __core.getVars.elHeaderWrap?.classList.remove('not-dark force-not-dark'); if( !__core.getVars.elHeader.classList.contains( newClassesArray[i] ) ) { __core.getVars.elHeader.classList.add( newClassesArray[i] ); } } else if( !__core.getVars.elHeader.classList.contains( newClassesArray[i] ) ) { __core.getVars.elHeader.classList.add( newClassesArray[i] ); } } } __base.setBSTheme(); }; var _includeHeader = function() { var elHeaderInc = document.querySelector('.include-header'); var elHeader = __core.getVars.elHeader; __core.getVars.headerHeight = elHeader.offsetHeight; if( !elHeaderInc ) { return true; } elHeaderInc.style.marginTop = ''; if( !__core.getVars.elBody.classList.contains('is-expanded-menu') ) { return true; } if( elHeader.classList.contains('floating-header') || elHeaderInc.classList.contains('include-topbar') ) { __core.getVars.headerHeight = elHeader.offsetHeight + __core.offset(elHeader).top; } elHeaderInc.style.marginTop = (__core.getVars.headerHeight * -1) + 'px'; __modules.sliderParallax(); } var _sideHeader = function() { var headerTrigger = document.getElementById("header-trigger"); if( headerTrigger ) { headerTrigger.onclick = function(e) { e.preventDefault(); __core.getVars.elBody.classList.contains('open-header') && __core.getVars.elBody.classList.toggle("side-header-open"); }; } }; return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var elHeader = __core.getVars.elHeader; var isSticky = elHeader.classList.contains('no-sticky') ? false : true; var headerWrapClone = elHeader.querySelector('.header-wrap-clone'); __core.getVars.stickyHeaderClasses = elHeader.getAttribute('data-sticky-class'); __core.getVars.mobileHeaderClasses = elHeader.getAttribute('data-responsive-class'); __core.getVars.stickyShrink = elHeader.getAttribute('data-sticky-shrink') || 'true'; __core.getVars.stickyShrinkOffset = elHeader.getAttribute('data-sticky-shrink-offset') || 300; __core.getVars.mobileSticky = elHeader.getAttribute('data-mobile-sticky') || 'false'; __core.getVars.headerHeight = elHeader.offsetHeight; if( !headerWrapClone ) { headerWrapClone = document.createElement('div'); headerWrapClone.classList = 'header-wrap-clone'; __core.getVars.elHeaderWrap?.parentNode.insertBefore( headerWrapClone, __core.getVars.elHeaderWrap?.nextSibling); headerWrapClone = elHeader.querySelector('.header-wrap-clone'); } if( isSticky ) { setTimeout( function() { _offset(); _sticky( __core.getVars.headerWrapOffset ); _changeMenuClass('sticky'); }, 500); window.addEventListener('scroll', function(){ _sticky( __core.getVars.headerWrapOffset ); }, {passive:true}); } _changeMenuClass('responsive'); _includeHeader(); _sideHeader(); __core.getVars.resizers.headers = function() { setTimeout( function() { _removeSticky(); if( isSticky ) { _offset(); _sticky( __core.getVars.headerWrapOffset ); _changeMenuClass('sticky'); } _changeMenuClass('responsive'); _includeHeader(); }, 250); }; } }; }(), // Header Functions End /** * -------------------------------------------------------------------------- * Menu Functions Start (Required) * -------------------------------------------------------------------------- */ Menus: function() { var _init = function() { __core.getVars.headerWrapHeight = __core.getVars.elHeaderWrap?.offsetHeight; var onClickMenus = [].slice.call(__core.getVars.elPrimaryMenus).filter( function(elem) { return elem.matches('.on-click'); }); var onClickTopMenus = document.querySelectorAll('.top-links.on-click'); var onClickMenuCurrent = []; onClickMenus.forEach( function(pMenu) { onClickMenuCurrent.push(pMenu.querySelector('.current')); }); var onClickTopMenuCurrent = []; onClickTopMenus.forEach( function(topMenu) { onClickTopMenuCurrent.push(topMenu.querySelector('.current')); }); document.addEventListener('click', function(e) { if( !e.target.closest('.primary-menu-trigger') && !e.target.closest('.primary-menu') ) { _reset(); _functions(); } if ( !e.target.closest('.primary-menu.on-click') ) { onClickMenus.forEach( function(pMenu) { pMenu.querySelectorAll('.menu-item').forEach( function(item) { item.classList.remove('current'); }); }); onClickMenuCurrent?.forEach( function(current) { current.classList.add('current'); }); } if ( !e.target.closest('.top-links.on-click') ) { onClickTopMenus.forEach( function(topMenu) { topMenu.querySelectorAll('.top-links-sub-menu,.top-links-section').forEach( function(item) { item.classList.remove('d-block'); }); }); onClickTopMenus.forEach( function(topMenu) { topMenu.querySelectorAll('.top-links-item').forEach( function(item) { item.classList.remove('current'); }); }); onClickTopMenuCurrent?.forEach( function(current) { current.classList.add('current'); }); } }, false); document.querySelectorAll( '.menu-item' ).forEach(function(el) { if( el.querySelectorAll('.sub-menu-container').length > 0 ) { el.classList.add('sub-menu'); } if( !el.classList.contains('mega-menu-title') && el.querySelectorAll('.sub-menu-container').length > 0 && el.querySelectorAll('.sub-menu-trigger').length < 1 ) { var subMenuTrigger = document.createElement('button'); subMenuTrigger.classList = 'sub-menu-trigger fa-solid fa-chevron-right'; subMenuTrigger.innerHTML = '<span class="visually-hidden">Open Sub-Menu</span>'; el.append( subMenuTrigger ); } }); }; var _reset = function() { var body = __core.getVars.elBody, subMenusSel = '.mega-menu-content, .sub-menu-container', menuItemSel = '.menu-item'; document.querySelectorAll('.primary-menu-trigger').forEach( function(el) { el.classList.remove('primary-menu-trigger-active'); }); __core.getVars.elPrimaryMenus.forEach( function(el) { if( !body.classList.contains('is-expanded-menu') ) { el.querySelector('.menu-container')?.classList.remove('d-block'); } else { el.querySelector('.menu-container')?.classList.remove('d-block', 'd-none'); el.querySelectorAll(subMenusSel)?.forEach( function(item) { item.classList.remove('d-none'); }); document.querySelectorAll('.menu-container:not(.mobile-primary-menu)').forEach( function(el) { el.style.display = ''; }); __core.getVars.elPrimaryMenus.forEach( function(el) { el.querySelectorAll('.mobile-primary-menu')?.forEach( function(elem) { elem.classList.remove('d-block'); }); }); } el.querySelectorAll(subMenusSel)?.forEach( function(item) { item.classList.remove('d-block'); }); el.classList.remove('primary-menu-active'); var classes = body.className.split(" ").filter( function(classText) { return !classText.startsWith('primary-menu-open'); }); body.className = classes.join(" ").trim(); }); }; var _arrows = function() { var addArrow = function(menuItemDiv) { if( menuItemDiv && !menuItemDiv.querySelector('.sub-menu-indicator') ) { var arrow = document.createElement("i"); arrow.classList.add('sub-menu-indicator'); var customArrow = menuItemDiv.closest('.primary-menu')?.getAttribute('data-arrow-class') || 'fa-solid fa-caret-down'; customArrow && customArrow.split(" ").forEach( function(className) { arrow.classList.add(className); }); menuItemDiv.append(arrow); } }; // Arrows for Top Links Items document.querySelectorAll( '.top-links-item' ).forEach( function(menuItem) { var menuItemDiv = menuItem.querySelector(':scope > a'); menuItem.querySelector(':scope > .top-links-sub-menu, :scope > .top-links-section') && addArrow( menuItemDiv ); }); // Arrows for Primary Menu Items document.querySelectorAll( '.menu-item' ).forEach( function(menuItem) { var menuItemDiv = menuItem.querySelector(':scope > .menu-link > div'); ( !menuItem.classList.contains('mega-menu-title') && menuItem.querySelector(':scope > .sub-menu-container, :scope > .mega-menu-content') ) && addArrow( menuItemDiv ); }); // Arrows for Page Menu Items document.querySelectorAll( '.page-menu-item' ).forEach( function(menuItem) { var menuItemDiv = menuItem.querySelector(':scope > a > div'); menuItem.querySelector(':scope > .page-menu-sub-menu') && addArrow( menuItemDiv ); }); }; var _invert = function(subMenuEl) { var subMenus = subMenuEl || document.querySelectorAll( '.mega-menu-content, .sub-menu-container, .top-links-section' ); if( !__core.getVars.elBody.classList.contains('is-expanded-menu') ) { return false; } var primaryMenu; subMenus.forEach( function(el) { primaryMenu = el.closest('.primary-menu'); el.classList.remove('menu-pos-invert'); var elChildren = el.querySelectorAll(':scope > *'); elChildren.forEach( function(elChild) { elChild.style.display = 'block'; }); el.style.display = 'block'; var viewportOffset = el.getBoundingClientRect(); if( el.closest('.mega-menu-small') ) { var outside = __core.viewport().width - (viewportOffset.left + viewportOffset.width); if( outside < 0 ) { el.style.left = outside + 'px'; } } if( __core.getVars.elBody.classList.contains('rtl') ) { if( viewportOffset.left < 0 ) { el.classList.add('menu-pos-invert'); } } if( __core.viewport().width - (viewportOffset.left + viewportOffset.width) < 0 ) { el.classList.add('menu-pos-invert'); } }); subMenus.forEach( function(el) { var elChildren = el.querySelectorAll(':scope > *'); elChildren.forEach( function(elChild) { elChild.style.display = ''; }); el.style.display = ''; }); primaryMenu?.classList.add('primary-menu-init'); }; var _functions = function() { var subMenusSel = '.mega-menu-content, .sub-menu-container', menuItemSel = '.menu-item', subMenuSel = '.sub-menu', subMenuTriggerSel = '.sub-menu-trigger', body = __core.getVars.elBody.classList; var triggersBtn = document.querySelectorAll( subMenuTriggerSel ); var triggerLinks = new Array; triggersBtn.forEach( function(el) { var triggerLink = el.closest('.menu-item').querySelector('.menu-link[href^="#"]'); if( triggerLink ) { triggerLinks.push(triggerLink); } }); var triggers = [].slice.call(triggersBtn).concat([].slice.call(triggerLinks)); document.querySelectorAll(subMenuTriggerSel).forEach( function(el) { el.classList.remove('icon-rotate-90') }); // Menu Item hover functionality if( body.contains('is-expanded-menu') ) { var menuHoverDelay = getComputedStyle(__core.getVars.elHeader).getPropertyValue('--cnvs-primary-menu-submenu-display-speed') || 666; if( !isNaN(menuHoverDelay.split('ms')[0]) ) { menuHoverDelay = menuHoverDelay.split('ms')[0]; } else if( !isNaN(menuHoverDelay.split('s')[0]) ) { menuHoverDelay = menuHoverDelay.split('s')[0] * 1000; } [].slice.call(__core.getVars.elPrimaryMenus).filter( function(elem) { return !elem.matches('.on-click'); }).forEach( function(pMenu) { pMenu.querySelectorAll(subMenuSel).forEach( function(item){ var _t; item.addEventListener('mouseenter', function() { clearTimeout(_t); item.classList.add('menu-item-hover'); }, false); item.addEventListener('mouseleave', function() { _t = setTimeout( function(){ item.classList.remove('menu-item-hover'); }, Number(menuHoverDelay)); }, false); }); }); } /** * Mobile Menu Functionality */ if( !body.contains('is-expanded-menu') ) { // Reset Menus to their Closed State __core.getVars.elPrimaryMenus.forEach( function(el) { el.querySelectorAll(subMenusSel).forEach( function(elem) { elem.classList.add('d-none'); body.remove("primary-menu-open"); }) }); triggers.forEach( function(trigger) { trigger.onclick = function(e) { e.preventDefault(); var triggerEl = trigger; if( !trigger.classList.contains('sub-menu-trigger') ) { triggerEl = trigger.closest(menuItemSel).querySelector(':scope > ' + subMenuTriggerSel); } __core.siblings(triggerEl.closest(menuItemSel)).forEach( function(item) { item.querySelectorAll(subMenusSel).forEach( function(item) { item.classList.add('d-none'); }); }); if( triggerEl.closest('.mega-menu-content') ) { var parentSubMenuContainers = []; __core.parents(triggerEl, menuItemSel).forEach( function(item) { parentSubMenuContainers.push(item.querySelector(':scope > ' + subMenusSel)); }); [].slice.call(triggerEl.closest('.mega-menu-content').querySelectorAll(subMenusSel)).filter( function(item) { return !parentSubMenuContainers.includes(item); }).forEach( function(item) { item.classList.add('d-none'); }); } _triggerState(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel, 'd-none'); }; }); } /** * On-Click Menu Functionality */ if( body.contains('is-expanded-menu') ) { if( body.contains('side-header') || body.contains('overlay-menu') ) { __core.getVars.elPrimaryMenus.forEach( function(pMenu) { pMenu.classList.add('on-click'); pMenu.querySelectorAll(subMenuTriggerSel).forEach( function(item) { item.style.zIndex = '-1'; }); }); } [].slice.call(__core.getVars.elPrimaryMenus).filter( function(elem) { return elem.matches('.on-click'); }).forEach( function(pMenu) { var menuItemSubs = __core.has( pMenu.querySelectorAll(menuItemSel), subMenuTriggerSel ); menuItemSubs.forEach( function(el) { var triggerEl = el.querySelector(':scope > .menu-link'); triggerEl.onclick = function(e) { e.preventDefault(); __core.siblings(triggerEl.closest(menuItemSel)).forEach( function(item) { item.querySelectorAll(subMenusSel).forEach( function(item) { item.classList.remove('d-block'); }); }); if( triggerEl.closest('.mega-menu-content') ) { var parentSubMenuContainers = []; __core.parents(triggerEl, menuItemSel).forEach( function(item) { parentSubMenuContainers.push(item.querySelector(':scope > ' + subMenusSel)); }); [].slice.call(triggerEl.closest('.mega-menu-content').querySelectorAll(subMenusSel)).filter( function(item) { return !parentSubMenuContainers.includes(item); }).forEach( function(item) { item.classList.remove('d-block'); }); } _triggerState(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel, 'd-block'); }; }); }); } /** * Top-Links On-Click Functionality */ document.querySelectorAll('.top-links').forEach( function(item) { if( item.classList.contains('on-click') || !body.contains('device-up-lg') ) { item.querySelectorAll('.top-links-item').forEach( function(menuItem) { if( menuItem.querySelectorAll('.top-links-sub-menu,.top-links-section').length > 0 ) { var triggerEl = menuItem.querySelector(':scope > a'); triggerEl.onclick = function(e) { e.preventDefault(); __core.siblings(menuItem).forEach( function(item) { item.querySelectorAll('.top-links-sub-menu, .top-links-section').forEach( function(item) { item.classList.remove('d-block'); }); }); menuItem.querySelector(':scope > .top-links-sub-menu, :scope > .top-links-section').classList.toggle('d-block'); __core.siblings(menuItem).forEach( function(item) { item.classList.remove('current'); }); menuItem.classList.toggle('current'); }; } }) } }); _invert( document.querySelectorAll('.top-links-section') ); }; var _triggerState = function(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel, classCheck) { triggerEl.closest('.menu-container').querySelectorAll(subMenuTriggerSel).forEach( function(el) { el.classList.remove('icon-rotate-90'); }); var triggerredSubMenus = triggerEl.closest(menuItemSel).querySelector( ':scope > ' + subMenusSel ); var childSubMenus = triggerEl.closest(menuItemSel).querySelectorAll( subMenusSel ); if( classCheck == 'd-none' ) { if( triggerredSubMenus.classList.contains('d-none') ) { triggerredSubMenus.classList.remove('d-none'); } else { childSubMenus.forEach( function(item) { item.classList.add('d-none'); }); } } else { if( triggerredSubMenus.classList.contains('d-block') ) { childSubMenus.forEach( function(item) { item.classList.remove('d-block'); }); } else { triggerredSubMenus.classList.add('d-block'); } } _current(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel); } var _current = function(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel) { [].slice.call(triggerEl.closest('.menu-container').querySelectorAll(menuItemSel)).forEach( function(item) { item.classList.remove('current'); }); var setCurrent = function(item, menuItemSel, subMenusSel) { if( !__core.isHidden(item.closest(menuItemSel).querySelector(':scope > ' + subMenusSel)) ) { item.closest(menuItemSel).classList.add('current'); item.closest(menuItemSel).querySelector(':scope > ' + subMenuTriggerSel)?.classList.add('icon-rotate-90'); } else { item.closest(menuItemSel).classList.remove('current'); item.closest(menuItemSel).querySelector(':scope > ' + subMenuTriggerSel)?.classList.remove('icon-rotate-90'); } }; setCurrent(triggerEl, menuItemSel, subMenusSel, subMenuTriggerSel); __core.parents(triggerEl, menuItemSel).forEach( function(item) { setCurrent(item, menuItemSel, subMenusSel, subMenuTriggerSel); }); }; var _trigger = function() { var body = __core.getVars.elBody.classList; document.querySelectorAll('.primary-menu-trigger').forEach( function(menuTrigger) { menuTrigger.onclick = function(e) { e.preventDefault(); var elTarget = menuTrigger.getAttribute( 'data-target' ) || '*'; if( __core.filtered( __core.getVars.elPrimaryMenus, elTarget ).length < 1 ) { return; } if( !body.contains('is-expanded-menu') ) { __core.getVars.elPrimaryMenus.forEach( function(el) { if( el.querySelectorAll('.mobile-primary-menu').length > 0 ) { el.matches(elTarget) && el.querySelectorAll('.mobile-primary-menu').forEach( function(elem) { elem.classList.toggle('d-block'); }); } else { el.matches(elTarget) && el.querySelectorAll('.menu-container').forEach( function(elem) { elem.classList.toggle('d-block'); }); } }); } menuTrigger.classList.toggle('primary-menu-trigger-active'); __core.getVars.elPrimaryMenus.forEach( function(elem) { elem.matches(elTarget) && elem.classList.toggle('primary-menu-active'); }); body.toggle('primary-menu-open'); if( elTarget != '*' ) { body.toggle('primary-menu-open-' + elTarget.replace(/[^a-zA-Z0-9-]/g, "")); } else { body.toggle('primary-menu-open-all'); } }; }); }; var _fullWidth = function() { var body = __core.getVars.elBody.classList; if( !body.contains('is-expanded-menu') ) { document.querySelectorAll('.mega-menu-content, .top-search-form').forEach( function(el) { el.style.width = ''; }); return true; } var headerWidth = document.querySelector('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content')?.closest('.header-row').offsetWidth; if( __core.getVars.elHeader.querySelectorAll('.container-fullwidth').length > 0 ) { document.querySelectorAll('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content').forEach( function(el) { el.style.width = headerWidth + 'px'; }); } document.querySelectorAll('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content, .top-search-form').forEach( function(el) { el.style.width = headerWidth + 'px'; }); if( __core.getVars.elHeader.classList.contains('full-header') ) { document.querySelectorAll('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content').forEach( function(el) { el.style.width = headerWidth + 'px'; }); } if( __core.getVars.elHeader.classList.contains('floating-header') ) { var floatingHeaderPadding = getComputedStyle(document.querySelector('#header')).getPropertyValue('--cnvs-header-floating-padding'); document.querySelectorAll('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content').forEach( function(el) { el.style.width = (headerWidth + (Number(floatingHeaderPadding.split('px')[0]) *2)) + 'px'; }); } }; return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } _init(); _reset(); _arrows(); _invert(); _functions(); _trigger(); _fullWidth(); var windowWidth = __core.viewport().width; __core.getVars.resizers.menus = function() { if( windowWidth != __core.viewport().width ) { __base.menus(); } }; __core.getVars.recalls.menureset = function() { _reset(); _functions(); }; } }; }(), // Menu Functions End /** * -------------------------------------------------------------------------- * Page-Menu Functions Start * -------------------------------------------------------------------------- */ PageMenu: function() { var _sticky = function(stickyOffset) { var pageMenu = __core.getVars.elPageMenu; if( window.scrollY > stickyOffset ) { if( __core.getVars.elBody.classList.contains('device-up-lg') ) { pageMenu.classList.add('sticky-page-menu'); } else { if( pageMenu.getAttribute('data-mobile-sticky') == 'true' ) { pageMenu.classList.add('sticky-page-menu'); } } } else { pageMenu.classList.remove('sticky-page-menu'); } }; return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var pageMenu = __core.getVars.elPageMenu, pageMenuWrap = pageMenu.querySelector('#page-menu-wrap'), pageMenuClone = pageMenu.querySelector('.page-menu-wrap-clone'); if( !pageMenuClone ) { pageMenuClone = document.createElement('div'); pageMenuClone.classList = 'page-menu-wrap-clone'; pageMenuWrap.parentNode.insertBefore( pageMenuClone, pageMenuWrap.nextSibling); pageMenuClone = pageMenu.querySelector('.page-menu-wrap-clone'); } pageMenuClone.style.height = pageMenu.querySelector('#page-menu-wrap').offsetHeight + 'px'; pageMenu.querySelector('#page-menu-trigger').onclick = function(e) { e.preventDefault(); __core.getVars.elBody.classList.remove('top-search-open'); pageMenu.classList.toggle('page-menu-open'); }; pageMenu.querySelector('nav').onclick = function(e) { __core.getVars.elBody.classList.remove('top-search-open'); document.getElementById('top-cart').classList.remove('top-cart-open'); }; document.addEventListener('click', function(e) { if( !e.target.closest('#page-menu') ) { pageMenu.classList.remove('page-menu-open'); } }, false); if( pageMenu.classList.contains('no-sticky') || pageMenu.classList.contains('dots-menu') ) { return true; } var headerHeight; if( __core.getVars.elHeader.classList.contains('no-sticky') || __core.getVars.elHeader.getAttribute('data-sticky-shrink') == 'false' ) { headerHeight = getComputedStyle(__core.getVars.elHeader).getPropertyValue('--cnvs-header-height').split('px')[0]; } else { headerHeight = getComputedStyle(__core.getVars.elHeader).getPropertyValue('--cnvs-header-height-shrink').split('px')[0]; } if( __core.getVars.elHeader.getAttribute('data-sticky-shrink') == 'false' ) { pageMenu.style.setProperty("--cnvs-page-submenu-sticky-offset", headerHeight+'px'); } setTimeout(function() { __core.getVars.pageMenuOffset = __core.offset(pageMenu).top - headerHeight; _sticky( __core.getVars.pageMenuOffset ); }, 500); window.addEventListener('scroll', function(){ _sticky( __core.getVars.pageMenuOffset ); }, {passive:true}); __core.getVars.resizers.pagemenu = function() { setTimeout( function() { __core.getVars.pageMenuOffset = __core.offset(pageMenu).top - headerHeight; _sticky( __core.getVars.pageMenuOffset ); }, 250); }; } }; }(), // Page-Menu Functions End /** * -------------------------------------------------------------------------- * SliderDimension Functions Start (Required if using Sliders) * -------------------------------------------------------------------------- */ SliderDimensions: function() { return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var slider = document.querySelector('.slider-element'), sliderParallaxEl = document.querySelector('.slider-parallax'), body = __core.getVars.elBody, parallaxElHeight = sliderParallaxEl?.offsetHeight, parallaxElWidth = sliderParallaxEl?.offsetWidth, slInner = sliderParallaxEl?.querySelector('.slider-inner'), slSwiperW = slider.querySelector('.swiper-wrapper'), slSwiperS = slider.querySelector('.swiper-slide'), slFlexHeight = slider.classList.contains('h-auto') || slider.classList.contains('min-vh-0'); if( body.classList.contains('device-up-lg') ) { setTimeout(function() { if( slInner ) { slInner.style.height = parallaxElHeight + 'px'; } if( slFlexHeight ) { parallaxElHeight = slider.querySelector('.slider-inner')?.querySelector('*').offsetHeight; slider.style.height = parallaxElHeight + 'px'; if( slInner ) { slInner.style.height = parallaxElHeight + 'px'; } } }, 500); if( slFlexHeight && slSwiperS ) { var slSwiperFC = slSwiperS.querySelector('*'); if( slSwiperFC.classList.contains('container') || slSwiperFC.classList.contains('container-fluid') ) { slSwiperFC = slSwiperFC.querySelector('*'); } if( slSwiperFC.offsetHeight > slSwiperW.offsetHeight ) { slSwiperW.style.height = 'auto'; } } if( body.classList.contains('side-header') && slInner ) { slInner.style.width = parallaxElWidth + 'px'; } if( !body.classList.contains('stretched') ) { parallaxElWidth = __core.getVars.elWrapper.offsetWidth; if( slInner ) { slInner.style.width = parallaxElWidth + 'px'; } } } else { if( slSwiperW ) { slSwiperW.style.height = ''; } if( sliderParallaxEl ) { sliderParallaxEl.style.height = ''; } if( slInner ) { slInner.style.width = ''; slInner.style.height = ''; } } __core.getVars.resizers.sliderdimensions = function() { __base.sliderDimensions(); }; } }; }(), // SliderDimension Functions End /** * -------------------------------------------------------------------------- * SliderMenuClass Functions Start (Required if using Sliders with Transparent Headers) * -------------------------------------------------------------------------- */ SliderMenuClass: function() { var _swiper = function() { if( !__core.getVars.elHeader.classList.contains('ignore-slider') && ( __core.getVars.elBody.classList.contains('is-expanded-menu') || ( __core.getVars.elHeader.classList.contains('transparent-header-responsive') && !__core.getVars.elBody.classList.contains('primary-menu-open') ) ) ) { var activeSlide = __core.getVars.elSlider.querySelector('.swiper-slide-active'); _schemeChanger(activeSlide); } }; var _revolution = function() { if( !__core.getVars.elHeader.classList.contains('ignore-slider') && ( __core.getVars.elBody.classList.contains('is-expanded-menu') || ( __core.getVars.elHeader.classList.contains('transparent-header-responsive') && !__core.getVars.elBody.classList.contains('primary-menu-open') ) ) ) { var activeSlide = __core.getVars.elSlider.querySelector('.active-revslide'); _schemeChanger(activeSlide); } }; var _schemeChanger = function(activeSlide) { if( !activeSlide ) { return; } var darkExists = false, oldClassesArray, noOfOldClasses; if( activeSlide.classList.contains('dark') ){ if( __core.getVars.headerClasses ) { oldClassesArray = __core.getVars.headerClasses; } else { oldClassesArray = ''; } noOfOldClasses = oldClassesArray.length; if( noOfOldClasses > 0 ) { for( var i=0; i<noOfOldClasses; i++ ) { if( oldClassesArray[i] == 'dark' ) { darkExists = true; break; } } } var headerToChange = document.querySelector('#header.transparent-header:not(.sticky-header,.semi-transparent,.floating-header)'); if( headerToChange ) { headerToChange.classList.add('dark'); } if( !darkExists ) { var headerToChange = document.querySelector('#header.transparent-header.sticky-header,#header.transparent-header.semi-transparent.sticky-header,#header.transparent-header.floating-header.sticky-header'); if( headerToChange ) { headerToChange.classList.remove('dark'); } } __core.getVars.elHeaderWrap.classList.remove('not-dark'); } else { if( __core.getVars.elBody.classList.contains('dark') ) { activeSlide.classList.add('not-dark'); document.querySelector('#header.transparent-header:not(.semi-transparent,.floating-header)').classList.remove('dark'); document.querySelector('#header.transparent-header:not(.sticky-header,.semi-transparent,.floating-header)')?.querySelector('#header-wrap').classList.add('not-dark'); } else { document.querySelector('#header.transparent-header:not(.semi-transparent,.floating-header)').classList.remove('dark'); __core.getVars.elHeaderWrap.classList.remove('not-dark'); } } if( __core.getVars.elHeader.classList.contains('sticky-header') ) { __base.headers(); } }; return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } _swiper(); _revolution(); __base.setBSTheme(); __core.getVars.resizers.slidermenuclass = function() { __base.sliderMenuClass(); }; } }; }(), // SliderMenuClass Functions End /** * -------------------------------------------------------------------------- * TopSearch Functions Start (Required) * -------------------------------------------------------------------------- */ TopSearch: function() { return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var searchForm = document.querySelector('.top-search-form'); if( !searchForm ) { return true; } searchForm.closest('.header-row').classList.add( 'top-search-parent' ); var topSearchParent = document.querySelector('.top-search-parent'), timeout; selector[0].onclick = function(e) { e.stopPropagation(); e.preventDefault(); clearTimeout( timeout ); __core.getVars.elBody.classList.toggle('top-search-open'); document.getElementById('top-cart')?.classList.remove('top-cart-open'); __core.getVars.recalls.menureset(); if( __core.getVars.elBody.classList.contains('top-search-open') ) { topSearchParent.classList.add('position-relative'); } else { timeout = setTimeout( function() { topSearchParent.classList.remove('position-relative'); }, 500); } __core.getVars.elBody.classList.remove("primary-menu-open"); __core.getVars.elPageMenu && __core.getVars.elPageMenu.classList.remove('page-menu-open'); if (__core.getVars.elBody.classList.contains('top-search-open')){ searchForm.querySelector('input').focus(); } }; document.addEventListener( 'click', function(e) { if (!e.target.closest('.top-search-form')) { __core.getVars.elBody.classList.remove('top-search-open'); timeout = setTimeout( function() { topSearchParent.classList.remove('position-relative'); }, 500); } }, false); } }; }(), // TopSearch Functions End /** * -------------------------------------------------------------------------- * TopCart Functions Start (Required) * -------------------------------------------------------------------------- */ TopCart: function() { return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } if( !document.getElementById('top-cart-trigger') ) { return false; } document.getElementById('top-cart-trigger').onclick = function(e) { e.stopPropagation(); e.preventDefault(); selector[0].classList.toggle('top-cart-open'); }; document.addEventListener('click', function(e) { if( !e.target.closest('#top-cart') ) { selector[0].classList.remove('top-cart-open'); } }, false); } }; }(), // TopCart Functions End /** * -------------------------------------------------------------------------- * SidePanel Functions Start * -------------------------------------------------------------------------- */ SidePanel: function() { return { init: function(selector) { selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var body = __core.getVars.elBody.classList; document.addEventListener('click', function(e) { if( !e.target.closest('#side-panel') && !e.target.closest('.side-panel-trigger') ) { body.remove('side-panel-open'); } }, false); document.querySelectorAll('.side-panel-trigger').forEach( function(el) { el.onclick = function(e) { e.preventDefault(); body.toggle('side-panel-open'); if( body.contains('device-touch') && body.contains('side-push-panel') ) { body.toggle('ohidden'); } }; }); } }; }(), // SidePanel Functions End /** * -------------------------------------------------------------------------- * AdaptiveColorScheme Functions Start * -------------------------------------------------------------------------- */ AdaptiveColorScheme: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-adaptivecolorscheme', event: 'pluginAdaptiveColorSchemeReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var adaptiveEl = document.querySelector('[data-adaptive-light-class],[data-adaptive-dark-class]'); var adaptLightClass; var adaptDarkClass; if( __core.getVars.elBody.contains(adaptiveEl) ) { adaptLightClass = adaptiveEl.getAttribute( 'data-adaptive-light-class' ); adaptDarkClass = adaptiveEl.getAttribute( 'data-adaptive-dark-class' ); } var adaptClasses = function(dark) { if( dark ) { __core.getVars.elBody.classList.add( 'dark' ); } else { __core.getVars.elBody.classList.remove('dark'); } if( __core.getVars.elBody.contains(adaptiveEl) ) { if( dark ) { adaptiveEl.classList.remove( adaptLightClass ); adaptiveEl.classList.add( adaptDarkClass ); } else { adaptiveEl.classList.remove( adaptDarkClass ); adaptiveEl.classList.add( adaptLightClass ); } } __base.setBSTheme(); }; if( window.matchMedia ) { adaptClasses( window.matchMedia('(prefers-color-scheme: dark)').matches ); window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function(e) { adaptClasses( e.matches ); }); } } }; }(), // AdaptiveColorScheme Functions End /** * -------------------------------------------------------------------------- * PortfolioAjax Functions Start * -------------------------------------------------------------------------- */ PortfolioAjax: function() { var _newNextPrev = function(portPostId) { var portNext = _getNext(portPostId); var portPrev = _getPrev(portPostId); var portNav = document.getElementById('portfolio-navigation'); if( !document.getElementById('prev-portfolio') && portPrev ) { var prevPortItem = document.createElement('a'); prevPortItem.setAttribute('href', '#'); prevPortItem.setAttribute('id', 'prev-portfolio'); prevPortItem.setAttribute('data-id', portPrev); prevPortItem.innerHTML = '<i class="bi-arrow-left"></i>'; prevPortItem && portNav?.insertBefore(prevPortItem, document.getElementById('close-portfolio')); } if( !document.getElementById('next-portfolio') && portNext ) { var nextPortItem = document.createElement('a'); nextPortItem.setAttribute('href', '#'); nextPortItem.setAttribute('id', 'next-portfolio'); nextPortItem.setAttribute('data-id', portNext); nextPortItem.innerHTML = '<i class="bi-arrow-right"></i>'; nextPortItem && portNav?.insertBefore(nextPortItem, document.getElementById('close-portfolio')); } }; var _load = function(portPostId, prevPostPortId, getIt) { if( !getIt ) { getIt = false; } var portNext = _getNext(portPostId); var portPrev = _getPrev(portPostId); if( getIt == false ) { _close(); __core.getVars.elBody.classList.add('portfolio-ajax-loading'); // __core.getVars.portfolioAjax.loader.classList.add('loader-overlay-display'); var portfolioDataLoader = document.getElementById(portPostId).getAttribute('data-loader'); fetch(portfolioDataLoader).then( function(response) { return response.text(); }).then( function(html) { __core.getVars.portfolioAjax.container.innerHTML = html; var nextPortfolio = document.getElementById('next-portfolio'), prevPortfolio = document.getElementById('prev-portfolio'); nextPortfolio?.classList.add('d-none'); prevPortfolio?.classList.add('d-none'); if( portNext ) { nextPortfolio?.setAttribute('data-id', portNext); nextPortfolio?.classList.remove('d-none'); } if( portPrev ) { prevPortfolio?.setAttribute('data-id', portPrev); prevPortfolio?.classList.remove('d-none'); } _initAjax(portPostId); _open(); __core.getVars.portfolioAjax.items.forEach( function(item) { item.classList.remove('portfolio-active'); }); document.getElementById(portPostId).classList.add('portfolio-active'); }).catch( function(error) { console.warn('Something went wrong.', error); }); } }; var _close = function() { if( __core.getVars.portfolioAjax.wrapper && __core.getVars.portfolioAjax.wrapper.offsetHeight > 32 ) { __core.getVars.elBody.classList.remove('portfolio-ajax-loading'); // __core.getVars.portfolioAjax.loader.classList.add('loader-overlay-display'); __core.getVars.portfolioAjax.wrapper.classList.remove('portfolio-ajax-opened'); __core.getVars.portfolioAjax.wrapper.querySelector('#portfolio-ajax-single').addEventListener('transitionend', function() { __core.getVars.portfolioAjax.wrapper.querySelector('#portfolio-ajax-single').remove(); }); __core.getVars.portfolioAjax.items.forEach( function(item) { item.classList.remove('portfolio-active'); }); } }; var _open = function() { var countImages = __core.getVars.portfolioAjax.container.querySelectorAll('img').length; if( countImages < 1 ) { _display(); } else { __core.imagesLoaded(__core.getVars.portfolioAjax.container); __core.getVars.portfolioAjax.container.addEventListener( 'CanvasImagesLoaded', function() { _display(); }); } }; var _display = function() { __core.getVars.portfolioAjax.container.style.display = 'block'; __core.getVars.portfolioAjax.wrapper.classList.add('portfolio-ajax-opened'); __core.getVars.elBody.classList.remove('portfolio-ajax-loading'); // __core.getVars.portfolioAjax.loader.classList.remove('loader-overlay-display'); setTimeout( function() { __core.runContainerModules( __core.getVars.portfolioAjax.wrapper ); __core.scrollTo((__core.getVars.portfolioAjax.wrapperOffset - __core.getVars.topScrollOffset - 60), false, false); }, 500); } var _getNext = function(portPostId) { var portNext = false; var hasNext = document.getElementById(portPostId).nextElementSibling; if( hasNext ) { portNext = hasNext.getAttribute('id'); } return portNext; }; var _getPrev = function(portPostId) { var portPrev = false; var hasPrev = document.getElementById(portPostId).previousElementSibling; if( hasPrev ) { portPrev = hasPrev.getAttribute('id'); } return portPrev; }; var _initAjax = function(portPostId) { __core.getVars.portfolioAjax.prevItem = document.getElementById(portPostId); _newNextPrev(portPostId); document.querySelectorAll('#next-portfolio, #prev-portfolio').forEach( function(el) { el.onclick = function(e) { e.preventDefault(); _close(); var portPostId = el.getAttribute('data-id'); document.getElementById(portPostId).classList.add('portfolio-active'); _load(portPostId, __core.getVars.portfolioAjax.prevItem); }; }) document.getElementById('close-portfolio').onclick = function(e) { e.preventDefault(); _close(); }; }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-ajaxportfolio', event: 'pluginAjaxPortfolioReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } __core.getVars.portfolioAjax.items = selector[0].querySelectorAll('.portfolio-item'); __core.getVars.portfolioAjax.wrapper = document.getElementById('portfolio-ajax-wrap'); __core.getVars.portfolioAjax.wrapperOffset = __core.offset(__core.getVars.portfolioAjax.wrapper).top; __core.getVars.portfolioAjax.container = document.getElementById('portfolio-ajax-container'); __core.getVars.portfolioAjax.loader = document.getElementById('portfolio-ajax-loader'); __core.getVars.portfolioAjax.prevItem = ''; selector[0].querySelectorAll('.portfolio-ajax-trigger').forEach( function(el) { if( !el.querySelector('i:nth-child(2)') ) { el.innerHTML += '<i class="bi-arrow-repeat icon-spin"></i>'; } el.onclick = function(e) { e.preventDefault(); var portPostId = e.target.closest('.portfolio-item').getAttribute('id'); if( !e.target.closest('.portfolio-item').classList.contains('portfolio-active') ) { _load(portPostId, __core.getVars.portfolioAjax.prevItem); } }; }); } }; }(), // PortfolioAjax Functions End /** * -------------------------------------------------------------------------- * Cursor Functions Start * -------------------------------------------------------------------------- */ Cursor: function() { return { init: function(selector) { __core.initFunction({ class: 'has-plugin-cursor', event: 'pluginCursorReady' }); var cursor = document.querySelector('.cnvs-cursor'); var cursorFollower = document.querySelector('.cnvs-cursor-follower'); var cursorDot = document.querySelector('.cnvs-cursor-dot'); var addCursorEl = function(selector, parent) { var el = document.createElement('div'); el.classList.add(selector.split('.')[1]); parent.prepend( el ); return document.querySelector(selector); }; if( !cursor ) { cursor = addCursorEl('.cnvs-cursor', __core.getVars.elWrapper); } if( !cursorFollower ) { cursorFollower = addCursorEl('.cnvs-cursor-follower', cursor); } if( !cursorDot ) { cursorDot = addCursorEl('.cnvs-cursor-dot', cursor); } var onMouseMove = function(event) { cursor.style.transform = "translate3d("+ event.clientX + 'px'+","+event.clientY+'px'+",0px)"; } document.addEventListener('mousemove', onMouseMove); document.querySelectorAll('a,button').forEach( function(el) { el.addEventListener('mouseenter', function() { cursor.classList.add('cnvs-cursor-action'); }); el.addEventListener('mouseleave', function() { cursor.classList.remove('cnvs-cursor-action'); }); }); } }; }(), // Cursor Functions End /** * -------------------------------------------------------------------------- * Bootstrap Functions Start * -------------------------------------------------------------------------- */ Bootstrap: function() { return { init: function(selector) { __core.isFuncTrue( function() { return typeof bootstrap !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-bootstrap', event: 'pluginBootstrapReady' }); }); } }; }(), // Bootstrap Functions End /** * -------------------------------------------------------------------------- * ResizeVideos Functions Start * -------------------------------------------------------------------------- */ ResizeVideos: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().fitVids; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-fitvids', event: 'pluginFitVidsReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.parent().fitVids({ customSelector: 'iframe[src*="youtube"],iframe[src*="vimeo"],iframe[src*="dailymotion"],iframe[src*="maps.google.com"],iframe[src*="google.com/maps"]', ignore: '.no-fv' }); }); } }; }(), // ResizeVideos Functions End /** * -------------------------------------------------------------------------- * PageTransition Functions Start * -------------------------------------------------------------------------- */ PageTransition: function() { return { init: function(selector) { var body = __core.getVars.elBody; __core.initFunction({ class: 'has-plugin-pagetransition', event: 'pluginPageTransitionReady' }); if( body.classList.contains('no-transition') ) { return true; } if( !body.classList.contains('page-transition') ) { body.classList.add('page-transition'); } window.onpageshow = function(event) { if(event.persisted) { window.location.reload(); } }; var pageTransition = document.querySelector('.page-transition-wrap'); var elAnimIn = body.getAttribute('data-animation-in') || 'fadeIn', elSpeedIn = body.getAttribute('data-speed-in') || 1000, elTimeoutActive = false, elTimeout = body.getAttribute('data-loader-timeout'), elLoader = body.getAttribute('data-loader'), elLoaderColor = body.getAttribute('data-loader-color'), elLoaderHtml = body.getAttribute('data-loader-html'), elLoaderAppend = '', elLoaderCSSVar = ''; if( !elTimeout ) { elTimeoutActive = false; elTimeout = false; } else { elTimeoutActive = true; elTimeout = Number(elTimeout); } if( elLoaderColor ) { if( elLoaderColor == 'theme' ) { elLoaderCSSVar = ' style="--cnvs-loader-color:var(--cnvs-themecolor);"'; } else { elLoaderCSSVar = ' style="--cnvs-loader-color:'+elLoaderColor+';"'; } } var elLoaderBefore = '<div class="css3-spinner"'+elLoaderCSSVar+'>', elLoaderAfter = '</div>'; if( elLoader == '2' ) { elLoaderAppend = '<div class="css3-spinner-flipper"></div>'; } else if( elLoader == '3' ) { elLoaderAppend = '<div class="css3-spinner-double-bounce1"></div><div class="css3-spinner-double-bounce2"></div>'; } else if( elLoader == '4' ) { elLoaderAppend = '<div class="css3-spinner-rect1"></div><div class="css3-spinner-rect2"></div><div class="css3-spinner-rect3"></div><div class="css3-spinner-rect4"></div><div class="css3-spinner-rect5"></div>'; } else if( elLoader == '5' ) { elLoaderAppend = '<div class="css3-spinner-cube1"></div><div class="css3-spinner-cube2"></div>'; } else if( elLoader == '6' ) { elLoaderAppend = '<div class="css3-spinner-scaler"></div>'; } else if( elLoader == '7' ) { elLoaderAppend = '<div class="css3-spinner-grid-pulse"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>'; } else if( elLoader == '8' ) { elLoaderAppend = '<div class="css3-spinner-clip-rotate"><div></div></div>'; } else if( elLoader == '9' ) { elLoaderAppend = '<div class="css3-spinner-ball-rotate"><div></div><div></div><div></div></div>'; } else if( elLoader == '10' ) { elLoaderAppend = '<div class="css3-spinner-zig-zag"><div></div><div></div></div>'; } else if( elLoader == '11' ) { elLoaderAppend = '<div class="css3-spinner-triangle-path"><div></div><div></div><div></div></div>'; } else if( elLoader == '12' ) { elLoaderAppend = '<div class="css3-spinner-ball-scale-multiple"><div></div><div></div><div></div></div>'; } else if( elLoader == '13' ) { elLoaderAppend = '<div class="css3-spinner-ball-pulse-sync"><div></div><div></div><div></div></div>'; } else if( elLoader == '14' ) { elLoaderAppend = '<div class="css3-spinner-scale-ripple"><div></div><div></div><div></div></div>'; } else { elLoaderAppend = '<div class="css3-spinner-bounce1"></div><div class="css3-spinner-bounce2"></div><div class="css3-spinner-bounce3"></div>'; } if( !elLoaderHtml ) { elLoaderHtml = elLoaderAppend; } elLoaderHtml = elLoaderBefore + elLoaderHtml + elLoaderAfter; if( elAnimIn == 'fadeIn' ) { __core.getVars.elWrapper.classList.add('op-1'); } else { __core.getVars.elWrapper.classList.add('not-animated'); } if( !pageTransition ) { var divPT = document.createElement('div'); divPT.classList.add('page-transition-wrap'); divPT.innerHTML = elLoaderHtml; body.prepend( divPT ); pageTransition = document.querySelector('.page-transition-wrap'); } if( elSpeedIn ) { __core.getVars.elWrapper.style.setProperty('--cnvs-animate-duration', Number(elSpeedIn)+'ms'); if( elAnimIn == 'fadeIn' ) { pageTransition.style.setProperty('--cnvs-animate-duration', Number(elSpeedIn)+'ms'); } } var endPageTransition = function() { elAnimIn.split(" ").forEach( function(_class) { pageTransition.classList.remove(_class); }); pageTransition.classList.add('fadeOut', 'animated'); var removePageTransition = function() { pageTransition.remove(); if( elAnimIn != 'fadeIn' ) { __core.getVars.elWrapper.classList.remove('not-animated'); (elAnimIn + ' animated').split(" ").forEach(function(_class) { __core.getVars.elWrapper.classList.add(_class); }); } }; var displayContent = function() { body.classList.remove('page-transition'); setTimeout(function() { (elAnimIn + ' animated').split(" ").forEach( function(_class) { __core.getVars.elWrapper.classList.remove(_class); }); }, 333); setTimeout(function() { __core.getVars.elWrapper.style.removeProperty('--cnvs-animate-duration'); }, 666); }; pageTransition.addEventListener('transitionend', removePageTransition); pageTransition.addEventListener('animationend', removePageTransition); __core.getVars.elWrapper.addEventListener('transitionend', displayContent); __core.getVars.elWrapper.addEventListener('animationend', displayContent); return true; }; if( document.readyState === 'complete' ) { endPageTransition(); } if( elTimeoutActive ) { setTimeout( endPageTransition, elTimeout ); } window.addEventListener('load', function(){ endPageTransition(); }); } }; }(), // PageTransition Functions End /** * -------------------------------------------------------------------------- * LazyLoad Functions Start * -------------------------------------------------------------------------- */ LazyLoad: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof LazyLoad !== "undefined" }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-lazyload', event: 'pluginlazyLoadReady' }); window.lazyLoadInstance = new LazyLoad({ threshold: 150, elements_selector: '.lazy:not(.lazy-loaded)', class_loading: 'lazy-loading', class_loaded: 'lazy-loaded', class_error: 'lazy-error', callback_loaded: function(el) { __core.addEvent( window, 'lazyLoadLoaded' ); if( el.parentNode.getAttribute('data-lazy-container') == 'true' ) { __core.runContainerModules( el.parentNode ); } } }); }); } }; }(), // LazyLoad Functions End /** * -------------------------------------------------------------------------- * DataClasses Functions Start * -------------------------------------------------------------------------- */ DataClasses: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-dataclasses', event: 'pluginDataClassesReady' }); selector = __core.getSelector( selector, false, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(el) { var classes = el.getAttribute('data-class'); classes = classes.split(/ +/); if( classes.length > 0 ) { classes.forEach( function(_class) { var deviceClass = _class.split(":"); if( __core.getVars.elBody.classList.contains(deviceClass[0] == 'dark' ? deviceClass[0] : 'device-' + deviceClass[0]) ) { el.classList.add(deviceClass[1]); } else { el.classList.remove(deviceClass[1]); } }); } }); __core.getVars.resizers.dataClasses = function() { setTimeout( function() { __modules.dataClasses(); }, 333); }; } }; }(), // DataClasses Functions End /** * -------------------------------------------------------------------------- * DataHeights Functions Start * -------------------------------------------------------------------------- */ DataHeights: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-dataheights', event: 'pluginDataHeightsReady' }); selector = __core.getSelector( selector, false, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(el) { var heightXs = el.getAttribute('data-height-xs') || 'auto', heightSm = el.getAttribute('data-height-sm') || heightXs, heightMd = el.getAttribute('data-height-md') || heightSm, heightLg = el.getAttribute('data-height-lg') || heightMd, heightXl = el.getAttribute('data-height-xl') || heightLg, heightXxl = el.getAttribute('data-height-xxl') || heightXl, body = __core.getVars.elBody.classList, elHeight; if( body.contains('device-xs') ) { elHeight = heightXs; } else if( body.contains('device-sm') ) { elHeight = heightSm; } else if( body.contains('device-md') ) { elHeight = heightMd; } else if( body.contains('device-lg') ) { elHeight = heightLg; } else if( body.contains('device-xl') ) { elHeight = heightXl; } else if( body.contains('device-xxl') ) { elHeight = heightXxl; } if( elHeight ) { el.style.height = !isNaN( elHeight ) ? elHeight + 'px' : elHeight; } }); __core.getVars.resizers.dataHeights = function() { __modules.dataHeights(); }; } }; }(), // DataHeights Functions End /** * -------------------------------------------------------------------------- * Lightbox Functions Start * -------------------------------------------------------------------------- */ Lightbox: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().magnificPopup; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-lightbox', event: 'pluginLightboxReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } var closeButtonIcon = '<i class="bi-x-lg"></i>'; selector.each( function(){ var element = jQuery(this), elType = element.attr('data-lightbox'), elCloseButton = element.attr('data-close-button') || 'outside', elDisableUnder = element.attr('data-disable-under') || 600, elFixedContent = element.attr('data-content-position') || 'auto', elZoom = element.attr('data-zoom'), $body = jQuery('body'); elCloseButton = elCloseButton == 'inside' ? true : false; elFixedContent = elFixedContent == 'fixed' ? true : false; if( elType == 'image' ) { var settings = { type: 'image', tLoading: '', closeOnContentClick: true, closeBtnInside: elCloseButton, fixedContentPos: true, mainClass: 'mfp-no-margins mfp-fade', image: { verticalFit: true }, closeIcon: closeButtonIcon, }; if( elZoom == 'true' ) { settings.zoom = { enabled: true, duration: 300, easing: 'ease-in-out', opener: function(openerElement) { return openerElement.is('img') ? openerElement : openerElement.find('img'); } }; } element.magnificPopup(settings); } if( elType == 'gallery' ) { if( element.find('a[data-lightbox="gallery-item"]').parent('.clone').hasClass('clone') ) { element.find('a[data-lightbox="gallery-item"]').parent('.clone').find('a[data-lightbox="gallery-item"]').attr('data-lightbox',''); } if( element.find('a[data-lightbox="gallery-item"]').parents('.cloned').hasClass('cloned') ) { element.find('a[data-lightbox="gallery-item"]').parents('.cloned').find('a[data-lightbox="gallery-item"]').attr('data-lightbox',''); } element.magnificPopup({ delegate: element.hasClass('grid-container-filterable') ? 'a.grid-lightbox-filtered[data-lightbox="gallery-item"]' : 'a[data-lightbox="gallery-item"]', type: 'image', tLoading: '', closeOnContentClick: true, closeBtnInside: elCloseButton, fixedContentPos: true, mainClass: 'mfp-no-margins mfp-fade', // class to remove default margin from left and right side image: { verticalFit: true }, gallery: { enabled: true, navigateByImgClick: true, preload: [0,1] // Will preload 0 - before current, and 1 after the current image }, closeIcon: closeButtonIcon, }); } if( elType == 'iframe' ) { element.magnificPopup({ disableOn: Number( elDisableUnder ), type: 'iframe', tLoading: '', removalDelay: 160, preloader: false, closeBtnInside: elCloseButton, fixedContentPos: elFixedContent, closeIcon: closeButtonIcon, }); } if( elType == 'inline' ) { element.magnificPopup({ type: 'inline', tLoading: '', mainClass: 'mfp-no-margins mfp-fade', closeBtnInside: elCloseButton, fixedContentPos: true, overflowY: 'scroll', closeIcon: closeButtonIcon, }); } if( elType == 'ajax' ) { element.magnificPopup({ type: 'ajax', tLoading: '', closeBtnInside: elCloseButton, autoFocusLast: false, closeIcon: closeButtonIcon, callbacks: { ajaxContentAdded: function(mfpResponse) { __core.runContainerModules( document.querySelector('.mfp-content') ); }, open: function() { $body.addClass('ohidden'); }, close: function() { $body.removeClass('ohidden'); } } }); } if( elType == 'ajax-gallery' ) { element.magnificPopup({ delegate: 'a[data-lightbox="ajax-gallery-item"]', type: 'ajax', tLoading: '', closeBtnInside: elCloseButton, closeIcon: closeButtonIcon, autoFocusLast: false, gallery: { enabled: true, preload: 0, navigateByImgClick: false }, callbacks: { ajaxContentAdded: function(mfpResponse) { __core.runContainerModules( document.querySelector('.mfp-content') ); }, open: function() { $body.addClass('ohidden'); }, close: function() { $body.removeClass('ohidden'); } } }); } element.on( 'mfpOpen', function(){ var lightboxItem = jQuery.magnificPopup.instance.currItem.el, lightboxClass = jQuery( lightboxItem ).attr('data-lightbox-class'), lightboxBgClass = jQuery( lightboxItem ).attr('data-lightbox-bg-class'); if( lightboxClass != '' ) { jQuery(jQuery.magnificPopup.instance.container).addClass( lightboxClass ); } if( lightboxBgClass != '' ) { jQuery(jQuery.magnificPopup.instance.bgOverlay).addClass( lightboxBgClass ); } }); }); }); } }; }(), // Lightbox Functions End /** * -------------------------------------------------------------------------- * Modal Functions Start * -------------------------------------------------------------------------- */ Modal: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().magnificPopup; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-modal', event: 'pluginModalReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } var closeButtonIcon = '<i class="bi-x-lg"></i>'; selector.each( function(){ var element = jQuery(this), elTarget = element.attr('data-target'), elTargetValue = '__cnvs_' + elTarget.split('#')[1], elDelay = element.attr('data-delay') || 500, elTimeout = element.attr('data-timeout'), elAnimateIn = element.attr('data-animate-in'), elAnimateOut = element.attr('data-animate-out'), elBgClick = element.attr('data-bg-click'), elCloseBtn = element.attr('data-close-btn'), elCookies = element.attr('data-cookies'), elCookiePath = element.attr('data-cookie-path'), elCookieExp = element.attr('data-cookie-expire'); if( elCookies == "false" ) { __core.cookie.remove( elTargetValue ); } if( elCookies == 'true' ) { var elementCookie = __core.cookie.get( elTargetValue ); if( typeof elementCookie !== 'undefined' && elementCookie == '0' ) { return true; } } if( elBgClick == 'false' ) { elBgClick = false; } else { elBgClick = true; } if( elCloseBtn == 'false' ) { elCloseBtn = false; } else { elCloseBtn = true; } elDelay = Number(elDelay) + 500; setTimeout(function() { jQuery.magnificPopup.open({ items: { src: elTarget }, type: 'inline', mainClass: 'mfp-no-margins mfp-fade', closeBtnInside: false, fixedContentPos: true, closeOnBgClick: elBgClick, showCloseBtn: elCloseBtn, removalDelay: 500, closeIcon: closeButtonIcon, callbacks: { open: function(){ if( elAnimateIn != '' ) { jQuery(elTarget).addClass( elAnimateIn + ' animated' ); } }, beforeClose: function(){ if( elAnimateOut != '' ) { jQuery(elTarget).removeClass( elAnimateIn ).addClass( elAnimateOut ); } }, afterClose: function() { if( elAnimateIn != '' || elAnimateOut != '' ) { jQuery(elTarget).removeClass( elAnimateIn + ' ' + elAnimateOut + ' animated' ); } } } }, 0); }, elDelay ); if( document.querySelector('.modal-cookies-close') ) { document.querySelector('.modal-cookies-close').onclick = function() { jQuery.magnificPopup.close(); if( elCookies == 'true' ) { var cookieOps = {}; if( elCookieExp ) { cookieOps.expires = Number( elCookieExp ); } if( elCookiePath ) { cookieOps.path = elCookiePath; } __core.cookie.set( elTargetValue, '0', cookieOps ); } } } if( elTimeout != '' ) { setTimeout(function() { jQuery.magnificPopup.close(); }, elDelay + Number(elTimeout) ); } }); }); } }; }(), // Modal Functions End /** * -------------------------------------------------------------------------- * Animations Functions Start * -------------------------------------------------------------------------- */ Animations: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-animations', event: 'pluginAnimationsReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var SELECTOR = '[data-animate]', ANIMATE_CLASS_NAME = 'animated'; var isAnimated = function(element) { element.classList.contains(ANIMATE_CLASS_NAME); }; var intersectionObserver = new IntersectionObserver( function(entries, observer) { entries.forEach( function(entry) { var element = entry.target, elAnimation = element.getAttribute('data-animate'), elAnimOut = element.getAttribute('data-animate-out'), elAnimDelay = element.getAttribute('data-delay'), elAnimDelayOut = element.getAttribute('data-delay-out'), elAnimDelayTime = 0, elAnimDelayOutTime = 3000, elAnimations = elAnimation.split(' '); if( element.closest('.fslider.no-thumbs-animate') ) { return true; } if( element.closest('.swiper-slide') ) { return true; } if( elAnimDelay ) { elAnimDelayTime = Number( elAnimDelay ) + 500; } else { elAnimDelayTime = 500; } if( elAnimOut && elAnimDelayOut ) { elAnimDelayOutTime = Number( elAnimDelayOut ) + elAnimDelayTime; } if( !element.classList.contains('animated') ) { element.classList.add('not-animated'); if( entry.intersectionRatio > 0 ) { setTimeout( function() { element.classList.remove('not-animated'); elAnimations.forEach( function(item) { element.classList.add(item); }); element.classList.add('animated'); }, elAnimDelayTime); if( elAnimOut ) { setTimeout( function() { elAnimations.forEach( function(item) { element.classList.remove(item); }); elAnimOut.split(' ').forEach( function(item) { element.classList.add(item); }); }, elAnimDelayOutTime); } } } if( !element.classList.contains('not-animated') ) { observer.unobserve(element); } }); } ); var elements = [].filter.call(document.querySelectorAll(SELECTOR), function(element) { return !isAnimated(element, ANIMATE_CLASS_NAME); }); elements.forEach( function(element) { return intersectionObserver.observe(element); }); } }; }(), // Animations Functions End /** * -------------------------------------------------------------------------- * HoverAnimations Functions Start * -------------------------------------------------------------------------- */ HoverAnimations: function() { var _t, _x; var _showOverlay = function(params) { clearTimeout(_x); _t = setTimeout( function() { params.element.classList.add( 'not-animated' ); (params.elAnimateOut + ' not-animated').split(" ").forEach( function(_class) { params.element.classList.remove(_class); }); (params.elAnimate + ' animated').split(" ").forEach( function(_class) { params.element.classList.add(_class); }); }, params.elDelayT ); }; var _hideOverlay = function(params) { params.element.classList.add( 'not-animated' ); (params.elAnimate + ' not-animated').split(" ").forEach( function(_class) { params.element.classList.remove(_class); }); (params.elAnimateOut + ' animated').split(" ").forEach( function(_class) { params.element.classList.add(_class); }); if( params.elReset == 'true' ) { _x = setTimeout( function() { (params.elAnimateOut + ' animated').split(" ").forEach( function(_class) { params.element.classList.remove(_class); }); params.element.classList.add( 'not-animated' ); }, Number( params.elSpeed ) ); } clearTimeout(_t); }; var _isInsideElement = function(touch){ var rect = element.getBoundingClientRect(); return ( touch.clientX >= rect.left && touch.clientX <= rect.right && touch.clientY >= rect.top && touch.clientY <= rect.bottom ); }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-hoveranimation', event: 'pluginHoverAnimationReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(element) { var elAnimate = element.getAttribute( 'data-hover-animate' ), elAnimateOut = element.getAttribute( 'data-hover-animate-out' ) || 'fadeOut', elSpeed = element.getAttribute( 'data-hover-speed' ) || 600, elDelay = element.getAttribute( 'data-hover-delay' ), elParent = element.getAttribute( 'data-hover-parent' ), elReset = element.getAttribute( 'data-hover-reset' ) || 'false', elMobile = element.getAttribute( 'data-hover-mobile' ) || 'true'; if( elMobile != 'true' ) { if( elMobile == 'false' ) { if( !__core.getVars.elBody.classList.contains('device-up-lg') ) { return true; } } else { if( !__core.getVars.elBody.classList.contains('device-up-' + elMobile) ) { return true; } } } element.classList.add( 'not-animated' ); if( !elParent ) { if( element.closest( '.bg-overlay' ) ) { elParent = element.closest( '.bg-overlay' ); } else { elParent = element; } } else { if( elParent == 'self' ) { elParent = element; } else { elParent = element.closest( elParent ); } } var elDelayT = 0; if( elDelay ) { elDelayT = Number( elDelay ); } if( elSpeed ) { element.style.animationDuration = Number( elSpeed ) + 'ms'; } var params = { element: element, elAnimate: elAnimate, elAnimateOut: elAnimateOut, elSpeed: elSpeed, elDelayT: elDelayT, elParent: elParent, elReset: elReset, } elParent.addEventListener( 'mouseenter', function(){ _showOverlay(params); }, false); elParent.addEventListener( 'mouseleave', function(){ _hideOverlay(params); }, false); // elParent.addEventListener( 'touchstart', function(e){ // e.preventDefault(); // _showOverlay(params); // elParent.addEventListener('touchmove', function(e){ // if (!_isInsideElement(e.touches[0])) { // _hideOverlay(params); // elParent.removeEventListener('touchmove'); // } // }); // elParent.addEventListener('touchend', function(){ // _hideOverlay(params); // elParent.removeEventListener('touchmove'); // elParent.removeEventListener('touchend'); // }); // }); }); } }; }(), // HoverAnimations Functions End /** * -------------------------------------------------------------------------- * Grid Functions Start * -------------------------------------------------------------------------- */ Grid: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && typeof Isotope !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-isotope', event: 'pluginIsotopeReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function() { var element = jQuery(this), elTransition = element.attr('data-transition') || '0.65s', elLayoutMode = element.attr('data-layout') || 'masonry', elStagger = element.attr('data-stagger') || 0, elBase = element.attr('data-basewidth') || '.portfolio-item:not(.wide):eq(0)', elOriginLeft = true, elGrid; if( __core.getVars.isRTL ) { elOriginLeft = false; } if( element.hasClass('portfolio') || element.hasClass('post-timeline') ){ elGrid = element.isotope({ layoutMode: elLayoutMode, isOriginLeft: elOriginLeft, transitionDuration: elTransition, stagger: Number( elStagger ), percentPosition: true, masonry: { columnWidth: element.find( elBase )[0] } }); } else { elGrid = element.isotope({ layoutMode: elLayoutMode, isOriginLeft: elOriginLeft, transitionDuration: elTransition, stagger: Number( elStagger ), percentPosition: true, }); } if( element.data('isotope') ) { element.addClass('has-init-isotope'); } var elementInterval = setInterval( function() { if( element.find('.lazy.lazy-loaded').length == element.find('.lazy').length ) { setTimeout( function() { element.filter('.has-init-isotope').isotope('layout'); }, 666); clearInterval( elementInterval ); } }, 1000); jQuery(window).on( 'lazyLoadLoaded', function() { element.filter('.has-init-isotope').isotope('layout'); }); __core.getVars.resizers.isotope = function() { element.filter('.has-init-isotope').isotope('layout'); }; }); }); } }; }(), // Grid Functions End /** * -------------------------------------------------------------------------- * Filter Functions Start * -------------------------------------------------------------------------- */ Filter: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && typeof Isotope !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-isotope-filter', event: 'pluginGridFilterReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function() { var element = jQuery(this), elCon = element.attr('data-container'), elActClass = element.attr('data-active-class'), elDefFilter = element.attr('data-default'); if( !elActClass ) { elActClass = 'activeFilter'; } if( !jQuery(elCon).hasClass('grid-container') ) { return false; } element.find('a').off( 'click' ).on( 'click', function(){ element.find('li').removeClass( elActClass ); jQuery(this).parent('li').addClass( elActClass ); var selector = jQuery(this).attr('data-filter'); jQuery(elCon).isotope({ filter: selector }); return false; }); if( elDefFilter ) { element.find('li').removeClass( elActClass ); element.find('[data-filter="'+ elDefFilter +'"]').parent('li').addClass( elActClass ); jQuery(elCon).isotope({ filter: elDefFilter }); } jQuery(elCon).on( 'arrangeComplete layoutComplete', function(event, filteredItems) { jQuery(elCon).addClass('grid-container-filterable'); if( jQuery(elCon).attr('data-lightbox') == 'gallery' ) { jQuery(elCon).find("[data-lightbox]").removeClass('grid-lightbox-filtered'); filteredItems.forEach( function(item) { jQuery(item.element).find("[data-lightbox]").addClass('grid-lightbox-filtered'); }); } __modules.lightbox(); }); }); jQuery('.grid-shuffle').off( 'click' ).on( 'click', function(){ var element = jQuery(this), elCon = element.attr('data-container'); if( !jQuery(elCon).hasClass('grid-container') ) { return false; } jQuery(elCon).isotope('shuffle'); }); }); } }; }(), // Filter Functions End /** * -------------------------------------------------------------------------- * CanvasSlider Functions Start * -------------------------------------------------------------------------- */ CanvasSlider: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof Swiper !== "undefined"; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-swiper', event: 'pluginSwiperReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(element) { if( !element.classList.contains('swiper_wrapper') ) { return true; } if( element.querySelectorAll('.swiper-slide').length < 1 ) { return true; } var elDirection = element.getAttribute('data-direction') || 'horizontal', elSpeed = element.getAttribute('data-speed') || 300, elAutoPlay = element.getAttribute('data-autoplay'), elAutoPlayDisableOnInteraction = element.getAttribute('data-autoplay-disable-on-interaction') || true, elPauseOnHover = element.getAttribute('data-hover'), elLoop = element.getAttribute('data-loop'), elStart = element.getAttribute('data-start') || 1, elEffect = element.getAttribute('data-effect') || 'slide', elGrabCursor = element.getAttribute('data-grab'), elParallax = element.getAttribute('data-parallax'), elAutoHeight = element.getAttribute('data-autoheight'), slideNumberTotal = element.querySelector('.slide-number-total'), slideNumberCurrent = element.querySelector('.slide-number-current'), elVideoAutoPlay = element.getAttribute('data-video-autoplay'), elSettings = element.getAttribute('data-settings'), elPagination, elPaginationClickable; elAutoPlay = elAutoPlay ? Number( elAutoPlay ) : 999999999; elPauseOnHover = elPauseOnHover == 'true' ? true : false; elAutoPlayDisableOnInteraction = elAutoPlayDisableOnInteraction == 'false' ? false : true; elLoop = elLoop == 'true' ? true : false; elParallax = elParallax == 'true' ? true : false; elGrabCursor = elGrabCursor == 'false' ? false : true; elAutoHeight = elAutoHeight == 'true' ? true : false; elVideoAutoPlay = elVideoAutoPlay == 'false' ? false : true; elStart = elStart == 'random' ? Math.floor( Math.random() * element.querySelectorAll('.swiper-slide:not(.swiper-slide-duplicate)').length ) : Number( elStart ) - 1; if( element.querySelector('.swiper-pagination') ) { elPagination = element.querySelector('.swiper-pagination'); elPaginationClickable = true; } else { elPagination = ''; elPaginationClickable = false; } var elementNavNext = element.querySelector('.slider-arrow-right'), elementNavPrev = element.querySelector('.slider-arrow-left'), elementScollBar = element.querySelector('.swiper-scrollbar'); var cnvsSwiper = new Swiper( element.querySelector('.swiper-parent'), { direction: elDirection, speed: Number( elSpeed ), autoplay: { delay: elAutoPlay, pauseOnMouseEnter: elPauseOnHover, disableOnInteraction: elAutoPlayDisableOnInteraction }, loop: elLoop, initialSlide: elStart, effect: elEffect, parallax: elParallax, slidesPerView: 1, grabCursor: elGrabCursor, autoHeight: elAutoHeight, pagination: { el: elPagination, clickable: elPaginationClickable }, navigation: { prevEl: elementNavPrev, nextEl: elementNavNext }, scrollbar: { el: elementScollBar }, on: { afterInit: function(swiper) { __base.sliderDimensions(); if( element.querySelectorAll('.yt-bg-player').length > 0 ) { element.querySelectorAll('.yt-bg-player').forEach( function(el) { el.setAttribute('data-autoplay', 'false'); el.classList.remove('customjs'); }); __modules.youtubeBgVideo(); var activeYTVideo = jQuery('.swiper-slide-active').find('.yt-bg-player:not(.customjs)'); activeYTVideo.on('YTPReady', function() { setTimeout( function() { activeYTVideo.filter('.mb_YTPlayer').YTPPlay(); }, 1200); }); } document.querySelectorAll('.swiper-slide-active [data-animate]').forEach( function(el) { var toAnimateDelay = el.getAttribute('data-delay'), toAnimateDelayTime = 0; if( toAnimateDelay ) { toAnimateDelayTime = Number( toAnimateDelay ) + 750; } else { toAnimateDelayTime = 750; } if( !el.classList.contains('animated') ) { el.classList.add('not-animated'); var elementAnimation = el.getAttribute('data-animate'); setTimeout( function() { el.classList.remove('not-animated'); ( elementAnimation + ' animated').split(" ").forEach( function(_class) { el.classList.add(_class); }); }, toAnimateDelayTime); } }); element.querySelectorAll('[data-animate]').forEach( function(el) { var elementAnimation = el.getAttribute('data-animate'); if( el.closest('.swiper-slide').classList.contains('swiper-slide-active') ) { return true; } ( elementAnimation + ' animated').split(" ").forEach( function(_class) { el.classList.remove(_class); }); el.classList.add('not-animated'); }); if( elAutoHeight ) { setTimeout( function() { swiper.updateAutoHeight(300); }, 1000); } }, transitionStart: function(swiper) { element.querySelectorAll('[data-animate]').forEach( function(el) { var elementAnimation = el.getAttribute('data-animate'); if( el.closest('.swiper-slide').classList.contains('swiper-slide-active') ) { return true; } ( elementAnimation + ' animated').split(" ").forEach( function(_class) { el.classList.remove(_class); }); el.classList.add('not-animated'); }); SEMICOLON.Base.sliderMenuClass(); }, transitionEnd: function(swiper) { if( slideNumberCurrent ){ if( elLoop == true ) { slideNumberCurrent.innerHTML = Number( element.querySelector('.swiper-slide.swiper-slide-active').getAttribute('data-swiper-slide-index') ) + 1; } else { slideNumberCurrent.innerHTML = swiper.activeIndex + 1; } } element.querySelectorAll('.swiper-slide').forEach( function(slide) { if( slide.querySelector('video') && elVideoAutoPlay == true ) { slide.querySelector('video').pause(); } if( slide.querySelector('.yt-bg-player.mb_YTPlayer:not(.customjs)') ) { jQuery(slide).find('.yt-bg-player.mb_YTPlayer:not(.customjs)').YTPPause(); } }); element.querySelectorAll('.swiper-slide:not(.swiper-slide-active)').forEach( function(slide) { if( slide.querySelector('video') ) { if( slide.querySelector('video').currentTime != 0 ) { slide.querySelector('video').currentTime = 0; } } var activeYTPlayer = slide.querySelector('.yt-bg-player.mb_YTPlayer:not(.customjs)'); if( activeYTPlayer ) { jQuery(activeYTPlayer).YTPSeekTo( activeYTPlayer.getAttribute('data-start') ); } }); if( element.querySelector('.swiper-slide.swiper-slide-active').querySelector('video') && elVideoAutoPlay == true ) { element.querySelector('.swiper-slide.swiper-slide-active').querySelector('video').play(); } if( element.querySelector('.swiper-slide.swiper-slide-active').querySelector('.yt-bg-player.mb_YTPlayer:not(.customjs)') && elVideoAutoPlay == true ) { jQuery(element).find('.swiper-slide.swiper-slide-active').find('.yt-bg-player.mb_YTPlayer:not(.customjs)').YTPPlay(); } element.querySelectorAll('.swiper-slide.swiper-slide-active [data-animate]').forEach( function(el) { var toAnimateDelay = el.getAttribute('data-delay'), toAnimateDelayTime = 0; if( toAnimateDelay ) { toAnimateDelayTime = Number( toAnimateDelay ) + 300; } else { toAnimateDelayTime = 300; } if( !el.classList.contains('animated') ) { el.classList.add('not-animated'); var elementAnimation = el.getAttribute('data-animate'); setTimeout( function() { el.classList.remove('not-animated'); ( elementAnimation + ' animated').split(" ").forEach( function(_class) { el.classList.add(_class); }); }, toAnimateDelayTime); } }); } } }); if( slideNumberCurrent ) { if( elLoop == true ) { slideNumberCurrent.innerHTML = cnvsSwiper.realIndex + 1; } else { slideNumberCurrent.innerHTML = cnvsSwiper.activeIndex + 1; } } if( slideNumberTotal ) { slideNumberTotal.innerHTML = element.querySelectorAll('.swiper-slide:not(.swiper-slide-duplicate)').length; } }); }); } }; }(), // CanvasSlider Functions End /** * -------------------------------------------------------------------------- * SliderParallax Functions Start * -------------------------------------------------------------------------- */ SliderParallax: function() { var _settings; var _transform; var _transform2; var _parallax = function(_settings) { if( !_settings.sliderPx.el ) { return true; } fastdom.measure( function(){ _settings.scrollPos.y = window.scrollY; if( _settings.body.classList.contains('is-expanded-menu') && !_settings.isMobile ) { if( ( _settings.height + _settings.sliderPx.offset + 50 ) > _settings.scrollPos.y ){ _settings.classes.add('slider-parallax-visible'); _settings.classes.remove('slider-parallax-invisible'); if ( _settings.scrollPos.y > _settings.sliderPx.offset ) { if( typeof _settings.sliderPx.el.querySelector('.slider-inner') === 'object' ) { _transform = ((_settings.scrollPos.y-_settings.sliderPx.offset) * -.4); _transform2 = ((_settings.scrollPos.y-_settings.sliderPx.offset) * -.15); _setParallax(0, _transform, _settings.sliderPx.inner); _setParallax(0, _transform2, _settings.sliderPx.caption); } else { _transform = ((_settings.scrollPos.y-_settings.sliderPx.offset) / 1.5); _transform2 = ((_settings.scrollPos.y-_settings.sliderPx.offset) / 7); _setParallax(0, _transform, _settings.sliderPx.el); _setParallax(0, _transform2, _settings.sliderPx.caption); } } else { if( _settings.sliderPx.el.querySelector('.slider-inner') ) { _setParallax(0, 0, _settings.sliderPx.inner); _setParallax(0, 0, _settings.sliderPx.caption); } else { _setParallax(0, 0, _settings.sliderPx.el); _setParallax(0, 0, _settings.sliderPx.caption); } } } else { _settings.classes.add('slider-parallax-invisible'); _settings.classes.remove('slider-parallax-visible'); } } else { if( _settings.sliderPx.el.querySelector('.slider-inner') ) { _setParallax(0, 0, _settings.sliderPx.inner); _setParallax(0, 0, _settings.sliderPx.caption); } else { _setParallax(0, 0, _settings.sliderPx.el); _setParallax(0, 0, _settings.sliderPx.caption); } _settings.classes.add('slider-parallax-visible'); _settings.classes.remove('slider-parallax-invisible'); } }); }; var _offset = function() { var sliderPx = __core.getVars.sliderParallax; var sliderParallaxOffsetTop = 0, headerHeight = __core.getVars.elHeader?.offsetHeight || 0; if( __core.getVars.elBody.classList.contains('side-header') || (__core.getVars.elHeader && __core.getNext(__core.getVars.elHeader, '.include-header').length > 0) ) { headerHeight = 0; } // if( $pageTitle.length > 0 ) { // sliderParallaxOffsetTop = $pageTitle.outerHeight() + headerHeight - 20; // } else { // sliderParallaxOffsetTop = headerHeight - 20; // } if( __core.getNext(__core.getVars.elSlider, '#header').length > 0 ) { sliderParallaxOffsetTop = 0; } sliderPx.offset = sliderParallaxOffsetTop; }; var _setParallax = function(xPos, yPos, el) { if( el ) { fastdom.mutate( function(){ el.style.transform = "translate3d(" + xPos + ", " + yPos + "px, 0)"; }); } }; var _elementFade = function(_settings) { if( _settings.sliderPx.el.length < 1 ) { return true; } fastdom.mutate( function(){ if( _settings.body.classList.contains('is-expanded-menu') && !_settings.isMobile ) { var tHeaderOffset; if( (_settings.header && _settings.header.classList.contains('transparent-header')) || _settings.body.classList.contains('side-header') ) { tHeaderOffset = 100; } else { tHeaderOffset = 0; } if( _settings.sliderPx.el.classList.contains('slider-parallax-visible') ) { _settings.sliderPx.el.querySelectorAll('.slider-arrow-left,.slider-arrow-right,.slider-caption,.slider-element-fade').forEach( function(el) { el.style.opacity = 1 - ( ( ( _settings.scrollPos.y - tHeaderOffset ) * 1.85 ) / _settings.height ); }); } } else { _settings.sliderPx.el.querySelectorAll('.slider-arrow-left,.slider-arrow-right,.slider-caption,.slider-element-fade').forEach( function(el) { el.style.opacity = 1; }); } }); }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof fastdom !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } _settings = { sliderPx: __core.getVars.sliderParallax, body: __core.getVars.elBody, header: __core.getVars.elHeader, scrollPos: __core.getVars.scrollPos, isMobile: __mobile.any(), get height() { return this.sliderPx.el.offsetHeight; }, get classes() { return this.sliderPx.el.classList; }, }; if( _settings.sliderPx.el.querySelector('.slider-inner') ) { _setParallax(0, 0, _settings.sliderPx.inner); _setParallax(0, 0, _settings.sliderPx.caption); } else { _setParallax(0, 0, _settings.sliderPx.el); _setParallax(0, 0, _settings.sliderPx.caption); } window.addEventListener('scroll', function(){ _parallax(_settings); _elementFade(_settings); }, {passive:true}); __core.getVars.resizers.sliderparallax = function() { _parallax(_settings); _elementFade(_settings); }; }); } }; }(), // SliderParallax Functions End /** * -------------------------------------------------------------------------- * FlexSlider Functions Start * -------------------------------------------------------------------------- */ FlexSlider: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().flexslider; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-flexslider', event: 'pluginFlexSliderReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each(function() { var element = jQuery(this), elLazy = element.find('.lazy'), elAnimation = element.attr('data-animation') || 'slide', elEasing = element.attr('data-easing') || 'swing', elDirection = element.attr('data-direction') || 'horizontal', elReverse = element.attr('data-reverse'), elSlideshow = element.attr('data-slideshow'), elPause = element.attr('data-pause') || 5000, elSpeed = element.attr('data-speed') || 600, elVideo = element.attr('data-video'), elPagi = element.attr('data-pagi'), elArrows = element.attr('data-arrows'), elArrowLeft = element.attr('data-arrow-left') || 'uil uil-angle-left-b', elArrowRight = element.attr('data-arrow-right') || 'uil uil-angle-right-b', elThumbs = element.attr('data-thumbs'), elHover = element.attr('data-hover'), elSheight = element.attr('data-smooth-height'), elTouch = element.attr('data-touch'), elUseCSS = false; if( elEasing == 'swing' ) { elEasing = 'swing'; elUseCSS = true; } if( elReverse == 'true' ) { elReverse = true; } else { elReverse = false; } if( elSlideshow == "false" ) { elSlideshow = false; } else { elSlideshow = true; } if( !elVideo ) { elVideo = false; } if( elSheight == 'false' ) { elSheight = false; } else { elSheight = true; } if( elDirection == 'vertical' ) { elSheight = false; } if( elPagi == 'false' ) { elPagi = false; } else { elPagi = true; } if( elThumbs == 'true' ) { elPagi = 'thumbnails'; } else { elPagi = elPagi; } if( elArrows == 'false' ) { elArrows = false; } else { elArrows = true; } if( elHover == 'false' ) { elHover = false; } else { elHover = true; } if( elTouch == 'false' ) { elTouch = false; } else { elTouch = true; } element.find('.flexslider').flexslider({ selector: ".slider-wrap > .slide", animation: elAnimation, easing: elEasing, direction: elDirection, reverse: elReverse, slideshow: elSlideshow, slideshowSpeed: Number(elPause), animationSpeed: Number(elSpeed), pauseOnHover: elHover, video: elVideo, controlNav: elPagi, directionNav: elArrows, smoothHeight: elSheight, useCSS: elUseCSS, touch: elTouch, start: function( slider ){ __modules.animations(); __modules.lightbox(); jQuery('.flex-prev').html('<i class="'+ elArrowLeft +'"></i>'); jQuery('.flex-next').html('<i class="'+ elArrowRight +'"></i>'); setTimeout( function(){ if( slider.parents( '.grid-container.has-init-isotope' ).length > 0 ) { slider.parents( '.grid-container.has-init-isotope' ).isotope('layout'); } }, 1200 ); if( typeof skrollrInstance !== "undefined" ) { skrollrInstance.refresh(); } }, after: function( slider ){ if( slider.parents( '.grid-container.has-init-isotope' ).length > 0 && !slider.hasClass('flexslider-grid-relayout') ) { slider.parents( '.grid-container.has-init-isotope' ).isotope('layout'); slider.addClass('flexslider-grid-relayout'); } jQuery('.menu-item:visible').find('.flexslider .slide').resize(); } }); // jQuery(window).on( 'lazyLoadLoaded', function(){ // if( elLazy.length == element.find('.lazy.lazy-loaded').length ) { // lazyLoadInstance.update(); // setTimeout( function() { // element.find('.flexslider .slide').resize(); // }, 500 ); // } // }); }); }); } }; }(), // FlexSlider Functions End /** * -------------------------------------------------------------------------- * FullVideo Functions Start * -------------------------------------------------------------------------- */ FullVideo: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-html5video', event: 'pluginHtml5VideoReady' }); selector = __core.getSelector( selector, false, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(element) { var elVideo = element.querySelector('video'), elRatio = element.getAttribute('data-ratio') || '16/9'; if( !elVideo ) { return true; } elRatio = elRatio.split('/'); elVideo.style.left = ''; elVideo.style.top = ''; var divWidth = element.offsetWidth, divHeight = element.offsetHeight, elWidth = ( Number(elRatio[0])*divHeight)/Number(elRatio[1]), elHeight = divHeight; if( elWidth < divWidth ) { elWidth = divWidth; elHeight = (Number(elRatio[1])*divWidth)/Number(elRatio[0]); } elVideo.style.width = elWidth + 'px'; elVideo.style.height = elHeight + 'px'; if( elHeight > divHeight ) { elVideo.style.left = ''; elVideo.style.top = -( ( elHeight - divHeight )/2 ) + 'px'; } if( elWidth > divWidth ) { elVideo.style.left = -( ( elWidth - divWidth )/2 ) + 'px'; elVideo.style.top = ''; } if( SEMICOLON.Mobile.any() && !element.classList.contains('no-placeholder') ) { var placeholderImg = elVideo.getAttribute('poster'); if( placeholderImg != '' ) { element.innerHTML += '<div class="video-placeholder" style="background-image: url('+ placeholderImg +');"></div>'; } elVideo.classList.add('d-none'); } }); __core.getVars.resizers.html5video = function() { __modules.html5Video(); }; } }; }(), // FullVideo Functions End /** * -------------------------------------------------------------------------- * YoutubeBG Functions Start * -------------------------------------------------------------------------- */ YoutubeBG: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().YTPlayer; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-youtubebg', event: 'pluginYoutubeBgVideoReady' }); selector = __core.getSelector( selector, true, '.mb_YTPlayer,.customjs' ); if( selector.length < 1 ){ return true; } selector.each( function(){ var element = jQuery(this), elVideo = element.attr('data-video'), elMute = element.attr('data-mute') || true, elRatio = element.attr('data-ratio') || '16/9', elQuality = element.attr('data-quality') || 'hd720', elOpacity = element.attr('data-opacity') || 1, elContainer = element.attr('data-container') || 'parent', elOptimize = element.attr('data-optimize') || true, elLoop = element.attr('data-loop') || true, elControls = element.attr('data-controls') || false, elVolume = element.attr('data-volume') || 50, elStart = element.attr('data-start') || 0, elStop = element.attr('data-stop') || 0, elAutoPlay = element.attr('data-autoplay') || true, elFullScreen = element.attr('data-fullscreen') || false, elCoverImage = element.attr('data-coverimage') || '', elPauseOnBlur = element.attr('data-pauseonblur') || true, elPlayIfVisible = element.attr('data-playifvisible') || false; if( elMute == 'false' ) { elMute = false; } if( elContainer == 'parent' ) { var parent = element.parent(); if( parent.attr('id') ) { elContainer = '#' + parent.attr('id'); } else { var ytPid = 'yt-bg-player-parent-' + Math.floor( Math.random() * 10000 ); parent.attr( 'id', ytPid ); elContainer = '#' + ytPid; } } if( elOptimize == 'false' ) { elOptimize = false; } if( elLoop == 'false' ) { elLoop = false; } if( elControls == 'true' ) { elControls = true; } if( elAutoPlay == 'false' ) { elAutoPlay = false; } if( elFullScreen == 'true' ) { elFullScreen = true; } if( elPauseOnBlur == 'true' ) { elPauseOnBlur = true; } if( elPlayIfVisible == 'true' ) { elPlayIfVisible = true; } element.YTPlayer({ videoURL: elVideo, mute: elMute, ratio: elRatio, quality: elQuality, opacity: Number(elOpacity), containment: elContainer, optimizeDisplay: elOptimize, loop: elLoop, vol: Number(elVolume), startAt: Number(elStart), stopAt: Number(elStop), autoPlay: elAutoPlay, realfullscreen: elFullScreen, showYTLogo: false, showControls: false, coverImage: elCoverImage, stopMovieOnBlur: elPauseOnBlur, playOnlyIfVisible: elPlayIfVisible, }); }); }); } }; }(), // YoutubeBG Functions End /** * -------------------------------------------------------------------------- * Toggle Functions Start * -------------------------------------------------------------------------- */ Toggle: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-toggles', event: 'pluginTogglesReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function(){ var element = jQuery(this), elSpeed = element.attr('data-speed') || 300, elState = element.attr('data-state'); if( elState != 'open' ){ element.children('.toggle-content').hide(); } else { element.addClass('toggle-active').children('.toggle-content').slideDown( Number(elSpeed) ); } element.children('.toggle-header').off( 'click' ).on( 'click', function(){ element.toggleClass('toggle-active').children('.toggle-content').slideToggle( Number(elSpeed) ); return true; }); }); }); } }; }(), // Toggle Functions End /** * -------------------------------------------------------------------------- * Accordion Functions Start * -------------------------------------------------------------------------- */ Accordion: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-accordions', event: 'pluginAccordionsReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function(){ var element = jQuery(this), elState = element.attr('data-state'), elActive = element.attr('data-active') || 1, elActiveClass = element.attr('data-active-class') || '', elCollapsible = element.attr('data-collapsible') || 'false', windowHash = location.hash, accActive; elActive = Number( elActive ) - 1; if( typeof windowHash !== 'undefined' && windowHash != '' ) { accActive = element.find('.accordion-header'+ windowHash); if( accActive.length > 0 ) { elActive = accActive.index() / 2; } } element.find('.accordion-content').hide(); if( elState != 'closed' ) { element.find('.accordion-header:eq('+ Number(elActive) +')').addClass('accordion-active ' + elActiveClass).next().show(); } element.find('.accordion-header').off( 'click' ).on( 'click', function(){ var clickTarget = jQuery(this); if( clickTarget.next().is(':hidden') ) { element.find('.accordion-header').removeClass('accordion-active ' + elActiveClass).next().slideUp("normal"); clickTarget.toggleClass('accordion-active ' + elActiveClass, true).next().stop(true,true).slideDown("normal", function(){ if( ( jQuery('body').hasClass('device-sm') || jQuery('body').hasClass('device-xs') ) && element.hasClass('scroll-on-open') ) { __core.scrollTo((__core.offset(clickTarget).top - __core.getVars.topScrollOffset - 40), 800, 'easeOutQuad'); } __core.runContainerModules( clickTarget.next()[0] ); }); } else { if( elCollapsible == 'true' ) { clickTarget.toggleClass('accordion-active ' + elActiveClass, false).next().stop(true,true).slideUp("normal"); } } return false; }); }); }); } }; }(), // Accordion Functions End /** * -------------------------------------------------------------------------- * Counter Functions Start * -------------------------------------------------------------------------- */ Counter: function() { var _run = function(elCounter, elFormat) { if( elFormat.comma == 'true' ) { var reFormat = '\\B(?=(\\d{'+ elFormat.places +'})+(?!\\d))', regExp = new RegExp( reFormat, "g" ); elCounter.find('span').countTo({ formatter: function(value, options) { value = value.toFixed( options.decimals ); value = value.replace( regExp, elFormat.sep ); return value; } }); } else { elCounter.find('span').countTo(); } }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().countTo; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-counter', event: 'pluginCounterReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each(function(){ var element = jQuery(this), elComma = element.find('span').attr('data-comma'), elSep = element.find('span').attr('data-sep') || ',', elPlaces = element.find('span').attr('data-places') || 3; var elCommaObj = { comma: elComma, sep: elSep, places: Number( elPlaces ) } if( element.hasClass('counter-instant') ) { _run(element, elCommaObj); return; } var observer = new IntersectionObserver( function(entries, observer) { entries.forEach( function(entry) { if (entry.isIntersecting) { _run(element, elCommaObj); observer.unobserve(entry.target); } }); }, {rootMargin: '0px 0px 50px'}); observer.observe( element[0] ); }); }); } }; }(), // Counter Functions End /** * -------------------------------------------------------------------------- * Countdown Functions Start * -------------------------------------------------------------------------- */ Countdown: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && typeof moment !== "undefined" && jQuery().countdown; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-countdown', event: 'pluginCountdownReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function(){ var element = jQuery(this), elFormat = element.attr( 'data-format' ) || 'dHMS', elSince = element.attr( 'data-since' ), elYear = element.attr( 'data-year' ), elMonth = element.attr( 'data-month' ), elDay = element.attr( 'data-day' ), elHour = element.attr( 'data-hour' ), elMin = element.attr( 'data-minute' ), elSec = element.attr( 'data-second' ), elRedirect = element.attr( 'data-redirect' ), dateFormat, setDate; if( elYear ){ dateFormat = elYear; } if( elMonth && elMonth < 13 ){ dateFormat = dateFormat +"-"+ ( elMonth < 10 ? '0'+elMonth : elMonth); } else { if( elYear ) { dateFormat = dateFormat +"-01"; } } if( elDay && elDay < 32 ){ dateFormat = dateFormat +"-"+ ( elDay < 10 ? '0'+elDay : elDay); } else { if( elYear ) { dateFormat = dateFormat +"-01"; } } setDate = dateFormat != '' ? new Date( moment( dateFormat ) ) : new Date(); if( elHour && elHour < 25 ){ setDate.setHours( setDate.getHours() + Number( elHour ) ); } if( elMin && elMin < 60 ){ setDate.setMinutes( setDate.getMinutes() + Number( elMin ) ); } if( elSec && elSec < 60 ){ setDate.setSeconds( setDate.getSeconds() + Number( elSec ) ); } if( !elRedirect ) { elRedirect = false; } if( elSince == 'true' ) { element.countdown({ since: setDate, format: elFormat, expiryUrl: elRedirect, }); } else { element.countdown({ until: setDate, format: elFormat, expiryUrl: elRedirect, }); } }); }); } }; }(), // Countdown Functions End /** * -------------------------------------------------------------------------- * GoogleMaps Functions Start * -------------------------------------------------------------------------- */ GoogleMaps: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } if( !__core.getOptions.gmapAPI ) { console.warn( 'No API Key defined for Google Maps! Please set an API Key in js/functions.js File!' ); return true; } __core.loadJS({file: 'https://maps.google.com/maps/api/js?key='+__core.getOptions.gmapAPI+"&callback=SEMICOLON.Modules.gmap", id: 'canvas-gmapapi-js'}); __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && typeof google !== "undefined" && jQuery().gMap; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-gmap', event: 'pluginGmapReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function() { var element = jQuery(this), elLat = element.attr( 'data-latitude' ), elLon = element.attr( 'data-longitude' ), elAdd = element.attr( 'data-address' ), elCon = element.attr( 'data-content' ), elScroll = element.attr( 'data-scrollwheel' ) || true, elType = element.attr( 'data-maptype' ) || 'ROADMAP', elZoom = element.attr( 'data-zoom' ) || 12, elStyles = element.attr( 'data-styles' ), elMarkers = element.attr( 'data-markers' ), elIcon = element.attr( 'data-icon' ), elConPan = element.attr( 'data-control-pan' ) || false, elConZoom = element.attr( 'data-control-zoom' )|| false, elConMapT = element.attr( 'data-control-maptype' )|| false, elConScale = element.attr( 'data-control-scale' )|| false, elConStreetV = element.attr( 'data-control-streetview' )|| false, elConOverview = element.attr( 'data-control-overview' )|| false; if( elAdd ) { elLat = elLon = false; } else { if( !elLat && !elLon ) { console.log( 'Google Map co-ordinates not entered.' ); return true; } } if( elStyles ) { elStyles = JSON.parse( elStyles ); } if( elScroll == 'false' ) { elScroll = false; } if( elConPan == 'true' ) { elConPan = true; } if( elConZoom == 'true' ) { elConZoom = true; } if( elConMapT == 'true' ) { elConMapT = true; } if( elConScale == 'true' ) { elConScale = true; } if( elConStreetV == 'true' ) { elConStreetV = true; } if( elConOverview == 'true' ) { elConOverview = true; } if( elMarkers ) { elMarkers = Function( 'return ' + elMarkers )(); } else { if( elAdd ) { elMarkers = [ { address: elAdd, html: elCon ? elCon : elAdd } ] } else { elMarkers = [ { latitude: elLat, longitude: elLon, html: elCon ? elCon : false } ] } } if( elIcon ) { elIcon = Function( 'return ' + elIcon )(); } else { elIcon = { image: "https://www.google.com/mapfiles/marker.png", shadow: "https://www.google.com/mapfiles/shadow50.png", iconsize: [20, 34], shadowsize: [37, 34], iconanchor: [9, 34], shadowanchor: [19, 34] }; } element.gMap({ controls: { panControl: elConPan, zoomControl: elConZoom, mapTypeControl: elConMapT, scaleControl: elConScale, streetViewControl: elConStreetV, overviewMapControl: elConOverview }, scrollwheel: elScroll, maptype: elType, markers: elMarkers, icon: elIcon, latitude: elLat, longitude: elLon, address: elAdd, zoom: Number( elZoom ), styles: elStyles }); }); }); } }; }(), // GoogleMaps Functions End /** * -------------------------------------------------------------------------- * RoundedSkills Functions Start * -------------------------------------------------------------------------- */ RoundedSkills: function() { var _run = function(element, properties) { element.easyPieChart({ size: properties.size, animate: properties.speed, scaleColor: false, trackColor: properties.trackcolor, lineWidth: properties.width, lineCap: 'square', barColor: properties.color }); }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().easyPieChart; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-piechart', event: 'pluginRoundedSkillReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each(function(){ var element = jQuery(this), elSize = element.attr('data-size') || 140, elSpeed = element.attr('data-speed') || 2000, elWidth = element.attr('data-width') || 4, elColor = element.attr('data-color') || '#0093BF', elTrackColor = element.attr('data-trackcolor') || 'rgba(0,0,0,0.04)'; var properties = { size: Number( elSize ), speed: Number( elSpeed ), width: Number( elWidth ), color: elColor, trackcolor: elTrackColor }; element.css({ 'width': elSize+'px', 'height': elSize+'px', 'line-height': elSize+'px' }); if( jQuery('body').hasClass('device-up-lg') ){ element.animate({opacity:0}, 10); var observer = new IntersectionObserver( function(entries, observer){ entries.forEach( function(entry){ if (entry.isIntersecting) { if (!element.hasClass('skills-animated')) { setTimeout( function(){ element.css({opacity: 1}); }, 100); _run(element, properties); element.addClass('skills-animated'); } observer.unobserve( entry.target ); } }); }, {rootMargin: '0px 0px 50px'}); observer.observe( element[0] ); } else { _run(element, properties); } }); }); } }; }(), // RoundedSkills Functions End /** * -------------------------------------------------------------------------- * Progress Functions Start * -------------------------------------------------------------------------- */ Progress: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().countTo; }).then( function(cond) { __core.initFunction({ class: 'has-plugin-progress', event: 'pluginProgressReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(element) { var elValue = element.getAttribute('data-percent') || 90, elSpeed = element.getAttribute('data-speed') || 1200, elBar = element.querySelector('.skill-progress-percent'); elSpeed = Number(elSpeed) + 'ms'; elBar.style.setProperty( '--cnvs-progress-speed', elSpeed ); var observer = new IntersectionObserver( function(entries, observer){ entries.forEach( function(entry) { if (entry.isIntersecting) { if (!elBar.classList.contains('skill-animated')) { __modules.counter(element.querySelector('.counter')); if ( element.classList.contains('skill-progress-vertical') ) { elBar.style.height = elValue + "%"; elBar.classList.add('skill-animated'); } else { elBar.style.width = elValue + "%"; elBar.classList.add('skill-animated'); } } observer.unobserve( entry.target ); } }); }, {rootMargin: '0px 0px 50px'}); observer.observe( elBar ); }); }); } }; }(), // Progress Functions End /** * -------------------------------------------------------------------------- * Twitter Functions Start * -------------------------------------------------------------------------- */ Twitter: function() { var _build = function(tweet, element, username) { var elFontClass = element.getAttribute('data-font-class') || 'font-body'; var status = tweet.text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) { return '<a href="'+url+'" target="_blank">'+url+'</a>'; }).replace(/\B@([_a-z0-9]+)/ig, function(reply) { return reply.charAt(0)+'<a href="https://twitter.com/'+reply.substring(1)+'" target="_blank">'+reply.substring(1)+'</a>'; }); if( element.classList.contains('fslider') ) { var slide = document.createElement('div'); slide.classList.add('slide'); slide.innerHTML += '<p class="mb-3 '+elFontClass+'">'+status+'</p><small class="d-block"><a href="https://twitter.com/'+username+'/statuses/'+tweet.id_str+'" target="_blank">'+_time(tweet.created_at)+'</a></small>'; element.querySelector('.slider-wrap').append(slide); } else { element.innerHTML += '<li><i class="fa-brands fa-twitter"></i><div><span>'+status+'</span><small><a href="https://twitter.com/'+username+'/statuses/'+tweet.id_str+'" target="_blank">'+_time(tweet.created_at)+'</a></small></div></li>'; } } var _time = function(time_value) { var parsed_date = new Date(time_value); var relative_to = new Date(); var delta = parseInt((relative_to.getTime() - parsed_date) / 1000); delta = delta + (relative_to.getTimezoneOffset() * 60); if (delta < 60) { return 'less than a minute ago'; } else if(delta < 120) { return 'about a minute ago'; } else if(delta < (60*60)) { return (parseInt(delta / 60)).toString() + ' minutes ago'; } else if(delta < (120*60)) { return 'about an hour ago'; } else if(delta < (24*60*60)) { return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago'; } else if(delta < (48*60*60)) { return '1 day ago'; } else { return (parseInt(delta / 86400)).toString() + ' days ago'; } } return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-twitter', event: 'pluginTwitterFeedReady' }); selector = __core.getSelector( selector, false, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(element) { var elUser = element.getAttribute('data-username') || 'twitter', elCount = element.getAttribute('data-count') || 3, elLoader = element.getAttribute('data-loader') || 'include/twitter/tweets.php', elFetch = element.getAttribute('data-fetch-message') || 'Fetching Tweets from Twitter...'; var alert = element.querySelector('.twitter-widget-alert'); if( !alert ) { alert = document.createElement('div'); alert.classList.add( 'alert', 'alert-warning', 'twitter-widget-alert', 'text-center' ); element.prepend(alert); alert.innerHTML = '<div class="spinner-grow spinner-grow-sm me-2" role="status"><span class="visually-hidden">Loading...</span></div> ' + elFetch; } fetch( elLoader + '?username='+ elUser ).then( function(response) { return response.json(); }).then( function(tweets) { alert.remove(); var i = 0; tweets?.some( function(tw) { if( i == Number(elCount) ) { return; } _build(tw, element, elUser); i++; }); if( element.classList.contains('fslider') ) { var timer = setInterval( function() { if( element.querySelectorAll('.slide').length > 1 ) { element.classList.remove('customjs'); setTimeout( function() { __modules.flexSlider(); jQuery(element).find( '.flexslider .slide' ).resize(); }, 500); clearInterval(timer); } }, 1000); } }).catch( function(err) { console.log(err); alert.classList.remove( 'alert-warning' ); alert.classList.add( 'alert-danger' ); alert.innerHTML = 'Could not fetch Tweets from Twitter API. Please try again later.'; }); }); } }; }(), // Twitter Functions End /** * -------------------------------------------------------------------------- * Flickr Functions Start * -------------------------------------------------------------------------- */ Flickr: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().jflickrfeed; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-flickr', event: 'pluginFlickrFeedReady' }); selector = __core.getSelector( selector, true, false ); if( selector.length < 1 ){ return true; } selector.each(function() { var element = jQuery(this), elID = element.attr('data-id'), elCount = element.attr('data-count') || 9, elType = element.attr('data-type'), elTypeGet = 'photos_public.gne'; if( elType == 'group' ) { elTypeGet = 'groups_pool.gne'; } element.jflickrfeed({ feedapi: elTypeGet, limit: Number(elCount), qstrings: { id: elID }, itemTemplate: '<a class="grid-item" href="{{image_b}}" title="{{title}}" data-lightbox="gallery-item">' + '<img src="{{image_s}}" alt="{{title}}" />' + '</a>' }, function(data) { element.removeClass('customjs'); __core.imagesLoaded(element[0]); __modules.lightbox(); element[0].addEventListener( 'CanvasImagesLoaded', function() { __modules.gridInit(); __modules.masonryThumbs(); }); }); }); }); } }; }(), // Flickr Functions End /** * -------------------------------------------------------------------------- * Instagram Functions Start * -------------------------------------------------------------------------- */ Instagram: function() { var _get = function(element, loader, limit, fetchAlert) { var alert = element.closest('.instagram-widget-alert'); if( !alert ) { alert = document.createElement('div'); alert.classList.add( 'alert', 'alert-warning', 'instagram-widget-alert', 'text-center' ); element.insertAdjacentElement( 'beforebegin', alert ); alert.innerHTML = '<div class="spinner-grow spinner-grow-sm me-2" role="status"><span class="visually-hidden">Loading...</span></div> ' + fetchAlert; } fetch(loader).then( function(response) { return response.json(); }).then( function(images) { if( images.length > 0 ) { alert.remove(); for (var i = 0; i < limit; i++) { if ( i === limit ) continue; var photo = images[i], thumb = photo.media_url; if( photo.media_type === 'VIDEO' ) { thumb = photo.thumbnail_url; } element.innerHTML += '<a class="grid-item" href="'+ photo.permalink +'" target="_blank"><img src="'+ thumb +'" alt="Image"></a>'; } } element.classList.remove('customjs'); __core.imagesLoaded(element); element.addEventListener( 'CanvasImagesLoaded', function() { __modules.masonryThumbs(); __modules.lightbox(); }); }).catch( function(err) { console.log(err); alert.classList.remove( 'alert-warning' ); alert.classList.add( 'alert-danger' ); alert.innerHTML = 'Could not fetch Photos from Instagram API. Please try again later.'; }); }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-instagram', event: 'pluginInstagramReady' }); selector = __core.getSelector( selector, false, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(element) { var elLimit = element.getAttribute('data-count') || 12, elLoader = element.getAttribute('data-loader') || 'include/instagram/instagram.php', elFetch = element.getAttribute('data-fetch-message') || 'Fetching Photos from Instagram...'; if( Number( elLimit ) > 12 ) { elLimit = 12; } _get(element, elLoader, elLimit, elFetch); }); } }; }(), // Instagram Functions End /** * -------------------------------------------------------------------------- * NavTree Functions Start * -------------------------------------------------------------------------- */ NavTree: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-navtree', event: 'pluginNavTreeReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function(){ var element = jQuery(this), elSpeed = element.attr('data-speed') || 250, elEasing = element.attr('data-easing') || 'swing', elArrow = element.attr('data-arrow-class') || 'fa-solid fa-angle-right'; element.find( 'ul li:has(ul)' ).addClass('sub-menu'); element.find( 'ul li:has(ul) > a' ).filter(':not(:has(.sub-menu-indicator))').append( '<i class="sub-menu-indicator '+ elArrow +'"></i>' ); if( element.hasClass('on-hover') ){ element.find( 'ul li:has(ul):not(.active)' ).hover( function(e){ jQuery(this).children('ul').stop(true, true).slideDown( Number(elSpeed), elEasing); }, function(){ jQuery(this).children('ul').delay(250).slideUp( Number(elSpeed), elEasing); }); } else { element.find( 'ul li:has(ul) > a' ).off( 'click' ).on( 'click', function(){ var childElement = jQuery(this); element.find( 'ul li' ).not(childElement.parents()).removeClass('active'); childElement.parent().children('ul').slideToggle( Number(elSpeed), elEasing, function(){ jQuery(this).find('ul').hide(); jQuery(this).find('li.active').removeClass('active'); }); element.find( 'ul li > ul' ).not(childElement.parent().children('ul')).not(childElement.parents('ul')).slideUp( Number(elSpeed), elEasing ); childElement.parent('li:has(ul)').toggleClass('active'); return true; }); } }); }); } }; }(), // NavTree Functions End /** * -------------------------------------------------------------------------- * Carousel Functions Start * -------------------------------------------------------------------------- */ Carousel: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().owlCarousel; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-carousel', event: 'pluginCarouselReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function(){ var element = jQuery(this), elItems = element.attr('data-items') || 4, elItemsXs = element.attr('data-items-xs') || Number( elItems ), elItemsSm = element.attr('data-items-sm') || Number( elItemsXs ), elItemsMd = element.attr('data-items-md') || Number( elItemsSm ), elItemsLg = element.attr('data-items-lg') || Number( elItemsMd ), elItemsXl = element.attr('data-items-xl') || Number( elItemsLg ), elItemsXxl = element.attr('data-items-xxl') || Number( elItemsXl ), elLoop = element.attr('data-loop'), elAutoPlay = element.attr('data-autoplay'), elSpeed = element.attr('data-speed') || 250, elAnimateIn = element.attr('data-animate-in'), elAnimateOut = element.attr('data-animate-out'), elAutoWidth = element.attr('data-auto-width'), elNav = element.attr('data-nav'), elNavPrev = element.attr('data-nav-prev') || '<i class="uil uil-angle-left-b"></i>', elNavNext = element.attr('data-nav-next') || '<i class="uil uil-angle-right-b"></i>', elPagi = element.attr('data-pagi'), elMargin = element.attr('data-margin') || 20, elStage = element.attr('data-stage-padding') || 0, elMerge = element.attr('data-merge'), elStart = element.attr('data-start') || 0, elRewind = element.attr('data-rewind'), elSlideBy = element.attr('data-slideby') || 1, elCenter = element.attr('data-center'), elLazy = element.attr('data-lazyload'), elVideo = element.attr('data-video'), elRTL = element.attr('data-rtl'), elAutoPlayTime = 5000, elAutoPlayHoverP = true; if( elSlideBy == 'page' ) { elSlideBy = 'page'; } else { elSlideBy = Number(elSlideBy); } if( elLoop == 'true' ){ elLoop = true; } else { elLoop = false; } if( !elAutoPlay ){ elAutoPlay = false; elAutoPlayHoverP = false; } else { elAutoPlayTime = Number(elAutoPlay); elAutoPlay = true; } if( !elAnimateIn ) { elAnimateIn = false; } if( !elAnimateOut ) { elAnimateOut = false; } if( elAutoWidth == 'true' ){ elAutoWidth = true; } else { elAutoWidth = false; } if( elNav == 'false' ){ elNav = false; } else { elNav = true; } if( elPagi == 'false' ){ elPagi = false; } else { elPagi = true; } if( elRewind == 'true' ){ elRewind = true; } else { elRewind = false; } if( elMerge == 'true' ){ elMerge = true; } else { elMerge = false; } if( elCenter == 'true' ){ elCenter = true; } else { elCenter = false; } if( elLazy == 'true' ){ elLazy = true; } else { elLazy = false; } if( elVideo == 'true' ){ elVideo = true; } else { elVideo = false; } if( elRTL == 'true' || jQuery('body').hasClass('rtl') ){ elRTL = true; } else { elRTL = false; } var carousel = element.owlCarousel({ margin: Number(elMargin), loop: elLoop, stagePadding: Number(elStage), merge: elMerge, startPosition: Number(elStart), rewind: elRewind, slideBy: elSlideBy, center: elCenter, lazyLoad: elLazy, autoWidth: elAutoWidth, nav: elNav, navText: [elNavPrev,elNavNext], autoplay: elAutoPlay, autoplayTimeout: elAutoPlayTime, autoplayHoverPause: elAutoPlayHoverP, dots: elPagi, smartSpeed: Number(elSpeed), fluidSpeed: Number(elSpeed), video: elVideo, animateIn: elAnimateIn, animateOut: elAnimateOut, rtl: elRTL, responsive:{ 0:{ items: elItemsXs }, 576:{ items: elItemsSm }, 768:{ items: elItemsMd }, 992:{ items: elItemsLg }, 1200:{ items: elItemsXl }, 1400:{ items: elItemsXxl } }, onInitialized: function(){ __base.sliderDimensions(element.parents('.slider-element')[0]); __core.runContainerModules(element[0]); if( element.find('.owl-dot').length > 0 ) { element.addClass('with-carousel-dots'); } } }); jQuery(window).on( 'lazyLoadLoaded', function(){ if( element.find('.lazy').length == element.find('.lazy.lazy-loaded').length ) { lazyLoadInstance.update(); setTimeout( function(){ carousel.trigger( 'refresh.owl.carousel' ); }, 500); } }); }); }); } }; }(), // Carousel Functions End /** * -------------------------------------------------------------------------- * MasonryThumbs Functions Start * -------------------------------------------------------------------------- */ MasonryThumbs: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && typeof Isotope !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-masonrythumbs', event: 'pluginMasonryThumbsReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function() { var element = jQuery(this), elChildren = element.children(), elBig = element.attr('data-big'); if( elChildren.length < 1 ) { return false; } elChildren.removeClass('grid-item-big').css({ 'width': '' }); var compStyle = window.getComputedStyle( elChildren.eq(0)[0] ); var firstElementWidth = Number(compStyle.getPropertyValue('width').split('px')[0]); if( element.filter('.has-init-isotope').length > 0 ) { element.isotope({ masonry: { columnWidth: firstElementWidth } }); } if( elBig ) { elBig = elBig.split(","); var elBigNum = '', bigi = ''; for( bigi = 0; bigi < elBig.length; bigi++ ){ elBigNum = Number(elBig[bigi]) - 1; elChildren.eq(elBigNum).addClass('grid-item-big'); } } setTimeout( function() { element.find('.grid-item-big').css({ width: (firstElementWidth * 2) + 'px' }); }, 500); setTimeout( function() { element.filter('.has-init-isotope').isotope( 'layout' ); }, 1000); element[0].addEventListener( 'transitionend', function() { __modules.readmore(); }); }); __core.getVars.resizers.masonryThumbs = function() { __modules.masonryThumbs(); }; }); } }; }(), // MasonryThumbs Functions End /** * -------------------------------------------------------------------------- * Notifications Functions Start * -------------------------------------------------------------------------- */ Notifications: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && typeof bootstrap !== "undefined"; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-notify', event: 'pluginNotifyReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } var element = selector, elPosition = element.attr('data-notify-position') || 'top-right', elType = element.attr('data-notify-type'), elMsg = element.attr('data-notify-msg') || 'Please set a message!', elTimeout = element.attr('data-notify-timeout') || 5000, elClose = element.attr('data-notify-close') || 'true', elAutoHide = element.attr('data-notify-autohide') || 'true', elId = 'toast-' + Math.floor( Math.random() * 10000 ), elTrigger = element.attr('data-notify-trigger') || 'self', elTarget = element.attr('data-notify-target'), elCloseHtml = '', elPosClass, elTypeClass, elCloseClass; if( jQuery(elTarget).length > 0 && elTrigger == 'self' ) { var toast = bootstrap.Toast.getOrCreateInstance(jQuery(elTarget).get(0)); toast.hide(); jQuery(elTarget).get(0).addEventListener('hidden.bs.toast', function() { CNVS.Notifications.init( selector ); }); } switch( elType ){ case 'primary': elTypeClass = 'text-white bg-primary border-0'; break; case 'warning': elTypeClass = 'text-dark bg-warning border-0'; break; case 'error': elTypeClass = 'text-white bg-danger border-0'; break; case 'success': elTypeClass = 'text-white bg-success border-0'; break; case 'info': elTypeClass = 'bg-info text-dark border-0'; break; case 'dark': elTypeClass = 'text-white bg-dark border-0'; break; default: elTypeClass = ''; break; } switch( elPosition ){ case 'top-left': elPosClass = 'top-0 start-0'; break; case 'top-center': elPosClass = 'top-0 start-50 translate-middle-x'; break; case 'middle-left': elPosClass = 'top-50 start-0 translate-middle-y'; break; case 'middle-center': elPosClass = 'top-50 start-50 translate-middle'; break; case 'middle-right': elPosClass = 'top-50 end-0 translate-middle-y'; break; case 'bottom-left': elPosClass = 'bottom-0 start-0'; break; case 'bottom-center': elPosClass = 'bottom-0 start-50 translate-middle-x'; break; case 'bottom-right': elPosClass = 'bottom-0 end-0'; break; default: elPosClass = 'top-0 end-0'; break; } if( elType == 'info' || elType == 'warning' || !elType ) { elCloseClass = ''; } else { elCloseClass = 'btn-close-white'; } if( elClose == 'true' ) { elCloseHtml = '<button type="button" class="btn-close '+ elCloseClass +' btn-sm me-2 mt-2 ms-auto" data-bs-dismiss="toast" aria-label="Close"></button>'; } if( elAutoHide != 'true' ) { elAutoHide = false; } else { elAutoHide = true; } let elTemplate = '<div class="position-fixed '+ elPosClass +' p-3" style="z-index: 999999;">'+ '<div id="'+ elId +'" class="toast p-2 hide '+ elTypeClass +'" role="alert" aria-live="assertive" aria-atomic="true">'+ '<div class="d-flex">'+ '<div class="toast-body">'+ elMsg + '</div>'+ elCloseHtml + '</div>'+ '</div>'; '</div>'; if( elTrigger == 'self' ) { if( !elTarget ) { element.attr( 'data-notify-target', '#'+elId ); jQuery('body').append( elTemplate ); } } var toastElList = [].slice.call(document.querySelectorAll('.toast')); var toastList = toastElList.map( function(toastEl) { return new bootstrap.Toast(toastEl); }); toastList.forEach( function(toast) { toast.hide(); }); var toastElement = element.attr('data-notify-target'), toastInstance = jQuery(toastElement), elMsgOld = toastInstance.find('.toast-body'); if( jQuery(toastElement).length > 0 ) { var toast = new bootstrap.Toast( toastInstance.get(0) ,{ delay: Number(elTimeout), autohide: elAutoHide, }); toast.show(); if( elTrigger == 'self' ) { toastInstance.get(0).addEventListener('hidden.bs.toast', function() { toastInstance.parent().remove(); element.get(0).removeAttribute( 'data-notify-target' ); }); } } return false; }); } }; }(), // Notifications Functions End /** * -------------------------------------------------------------------------- * TextRotator Functions Start * -------------------------------------------------------------------------- */ TextRotator: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().Morphext && typeof Typed !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-textrotator', event: 'pluginTextRotatorReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function(){ var element = jQuery(this), elTyped = element.attr('data-typed') || 'false', elRotator = element.find('.t-rotate'), elAnimation = element.attr('data-rotate') || 'fade', elSpeed = element.attr('data-speed') || 1200, elSep = element.attr('data-separator') || ','; if( elTyped == 'true' ) { var elTexts = elRotator.html().split( elSep ), elLoop = element.attr('data-loop') || 'true', elShuffle = element.attr('data-shuffle'), elCur = element.attr('data-cursor') || 'true', elSpeed = element.attr('data-speed') || 50, elBackSpeed = element.attr('data-backspeed') || 30, elBackDelay = element.attr('data-backdelay'); if( elLoop == 'true' ) { elLoop = true; } else { elLoop = false; } if( elShuffle == 'true' ) { elShuffle = true; } else { elShuffle = false; } if( elCur == 'true' ) { elCur = true; } else { elCur = false; } elRotator.html( '' ).addClass('plugin-typed-init'); var typed = new Typed( elRotator[0], { strings: elTexts, typeSpeed: Number( elSpeed ), loop: elLoop, shuffle: elShuffle, showCursor: elCur, backSpeed: Number( elBackSpeed ), backDelay: Number( elBackDelay ) }); } else { var pluginData = elRotator.Morphext({ animation: elAnimation, separator: elSep, speed: Number(elSpeed) }); } }); }); } }; }(), // TextRotator Functions End /** * -------------------------------------------------------------------------- * OnePage Functions Start * -------------------------------------------------------------------------- */ OnePage: function() { var _init = function(selector) { _hash(); if( __core.getVars.elLinkScrolls ) { __core.getVars.elLinkScrolls.forEach( function(el) { _getSettings( el, 'scrollTo' ); el.onclick = function(e) { e.preventDefault(); _scroller( el, 'scrollTo' ); }; }); } if( __core.getVars.elOnePageMenus ) { __core.getVars.elOnePageMenus.forEach( function(onePageMenu) { __core.getVars.elOnePageActiveClass = onePageMenu.getAttribute('data-active-class') || 'current'; __core.getVars.elOnePageParentSelector = onePageMenu.getAttribute('data-parent') || 'li'; __core.getVars.elOnePageActiveOnClick = onePageMenu.getAttribute('data-onclick-active') || 'false'; onePageMenu.querySelectorAll('[data-href]').forEach( function(el) { _getSettings( el, 'onePage' ); el.onclick = function(e) { e.preventDefault(); _scroller( el, 'onePage' ); }; }); }); } }; var _hash = function() { if( __core.getOptions.scrollExternalLinks != true ) { return false; } if( document.querySelector('a[data-href="'+ __core.getVars.hash +'"]') || document.querySelector('a[data-scrollto="'+ __core.getVars.hash +'"]') ) { window.onbeforeunload = function() { __core.scrollTo(0, 0, false, 'auto'); }; __core.scrollTo(0, 0, false, 'auto'); var section = document.querySelector(__core.getVars.hash); if( section ) { var int = setInterval( function() { var settings = section.getAttribute('data-onepage-settings') && JSON.parse( section.getAttribute('data-onepage-settings') ); if( settings ) { _scroll(section, settings, 0); clearInterval(int); } }, 250); } } }; var _getSection = function(el, type) { var anchor; if( type == 'scrollTo' ) { anchor = el.getAttribute('data-scrollto'); } else { anchor = el.getAttribute('data-href'); } var section = document.querySelector( anchor ); return section; }; var _getSettings = function(el, type) { var section = _getSection(el, type); if( !section ) { return false; } section.removeAttribute('data-onepage-settings'); var settings = _settings( section, el ); setTimeout( function() { if( !section.hasAttribute('data-onepage-settings') ) { section.setAttribute( 'data-onepage-settings', JSON.stringify( settings ) ); } __core.getVars.pageSectionEls = document.querySelectorAll('[data-onepage-settings]'); }, 1000); }; var _scroller = function(el, type) { var section = _getSection(el, type), sectionId = section.getAttribute('id'); if( !section ) { return false; } var settings = JSON.parse( section.getAttribute('data-onepage-settings') ); if( type != 'scrollTo' && __core.getVars.elOnePageActiveOnClick == 'true' ) { parent = el.closest('.one-page-menu'); parent.querySelectorAll(__core.getVars.elOnePageParentSelector).forEach( function(el) { el.classList.remove( __core.getVars.elOnePageActiveClass ); }); parent.querySelector('a[data-href="#' + sectionId + '"]').closest(__core.getVars.elOnePageParentSelector).classList.add( __core.getVars.elOnePageActiveClass ); } if( !__core.getVars.elBody.classList.contains('is-expanded-menu') || __core.getVars.elBody.classList.contains('overlay-menu') ) { __core.getVars.recalls.menureset(); } _scroll(section, settings, 250); }; var _scroll = function(section, settings, timeout) { setTimeout( function() { var sectionOffset = __core.offset(section).top; if( !settings ) { return false; } __core.scrollTo((sectionOffset - Number(settings.offset)), settings.speed, settings.easing); }, Number(timeout)); }; var _position = function() { __core.getVars.elOnePageMenus && __core.getVars.elOnePageMenus.forEach( function(el) { el.querySelectorAll('[data-href]').forEach( function(item) { item.closest(__core.getVars.elOnePageParentSelector).classList.remove( __core.getVars.elOnePageActiveClass ); }); }); __core.getVars.elOnePageMenus && __core.getVars.elOnePageMenus.forEach( function(el) { el.querySelector('[data-href="#' + _current() + '"]')?.closest(__core.getVars.elOnePageParentSelector).classList.add( __core.getVars.elOnePageActiveClass ); }); }; var _current = function() { var currentOnePageSection; if( typeof __core.getVars.pageSectionEls === 'undefined' ) { return true; } __core.getVars.pageSectionEls.forEach( function(el) { var settings = el.getAttribute('data-onepage-settings') && JSON.parse( el.getAttribute('data-onepage-settings') ); if( settings ) { var h = __core.offset(el).top - settings.offset - 5, y = window.pageYOffset; if( ( y >= h ) && ( y < h + el.offsetHeight ) && el.getAttribute('id') != currentOnePageSection && el.getAttribute('id') ) { currentOnePageSection = el.getAttribute('id'); } } }); return currentOnePageSection; }; var _settings = function(section, element) { var body = __core.getVars.elBody.classList; if( typeof section === 'undefined' || element.length < 1 ) { return true; } if( section.hasAttribute('data-onepage-settings') ) { return true; } var options = { offset: __core.getVars.topScrollOffset, speed: 1250, easing: false }; var settings = {}, parentSettings = {}, parent = element.closest( '.one-page-menu' ); parentSettings.offset = parent?.getAttribute( 'data-offset' ) || options.offset; parentSettings.speed = parent?.getAttribute( 'data-speed' ) || options.speed; parentSettings.easing = parent?.getAttribute( 'data-easing' ) || options.easing; var elementSettings = { offset: element.getAttribute( 'data-offset' ) || parentSettings.offset, speed: element.getAttribute( 'data-speed' ) || parentSettings.speed, easing: element.getAttribute( 'data-easing' ) || parentSettings.easing, }; var elOffsetXXL = element.getAttribute( 'data-offset-xxl' ), elOffsetXL = element.getAttribute( 'data-offset-xl' ), elOffsetLG = element.getAttribute( 'data-offset-lg' ), elOffsetMD = element.getAttribute( 'data-offset-md' ), elOffsetSM = element.getAttribute( 'data-offset-sm' ), elOffsetXS = element.getAttribute( 'data-offset-xs' ); if( !elOffsetXS ) { elOffsetXS = Number(elementSettings.offset); } if( !elOffsetSM ) { elOffsetSM = Number(elOffsetXS); } if( !elOffsetMD ) { elOffsetMD = Number(elOffsetSM); } if( !elOffsetLG ) { elOffsetLG = Number(elOffsetMD); } if( !elOffsetXL ) { elOffsetXL = Number(elOffsetLG); } if( !elOffsetXXL ) { elOffsetXXL = Number(elOffsetXL); } if( body.contains('device-xs') ) { elementSettings.offset = elOffsetXS; } else if( body.contains('device-sm') ) { elementSettings.offset = elOffsetSM; } else if( body.contains('device-md') ) { elementSettings.offset = elOffsetMD; } else if( body.contains('device-lg') ) { elementSettings.offset = elOffsetLG; } else if( body.contains('device-xl') ) { elementSettings.offset = elOffsetXL; } else if( body.contains('device-xxl') ) { elementSettings.offset = elOffsetXXL; } settings.offset = elementSettings.offset; settings.speed = elementSettings.speed; settings.easing = elementSettings.easing; return settings; }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-onepage', event: 'pluginOnePageReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var scrollToLinks = __core.filtered( selector, '[data-scrollto]' ), onePageLinks = __core.filtered( selector, '.one-page-menu' ); if( scrollToLinks.length > 0 ) { __core.getVars.elLinkScrolls = scrollToLinks; } if( onePageLinks.length > 0 ) { __core.getVars.elOnePageMenus = onePageLinks; } _init(selector); _position(); window.addEventListener('scroll', function(){ _position(); }, {passive:true}); __core.getVars.resizers.onepage = function() { _init(selector); _position(); }; } }; }(), // OnePage Functions End /** * -------------------------------------------------------------------------- * AjaxForm Functions Start * -------------------------------------------------------------------------- */ AjaxForm: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().validate && jQuery().ajaxSubmit; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-form', event: 'pluginFormReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function(){ var element = jQuery(this), $body = jQuery('body'), elForm = element.find('form'), elFormId = elForm.attr('id'), elAlert = element.attr('data-alert-type'), elLoader = element.attr('data-loader'), elResult = element.find('.form-result'), elRedirect = element.attr('data-redirect'), defaultBtn, alertType; if( !elAlert ) { elAlert = 'notify'; } if( elFormId ) { $body.addClass( elFormId + '-ready' ); } element.find('form').validate({ errorPlacement: function(error, elementItem) { if( elementItem.parents('.form-group').length > 0 ) { error.appendTo( elementItem.parents('.form-group') ); } else { error.insertAfter( elementItem ); } }, focusCleanup: true, submitHandler: function(form) { if( element.hasClass( 'custom-submit' ) ) { jQuery(form).submit(); return true; } elResult.hide(); if( elLoader == 'button' ) { defaultBtn = jQuery(form).find('button'); defaultBtnText = defaultBtn.html(); defaultBtn.html('<i class="bi-arrow-repeat icon-spin m-0"></i>'); } else { jQuery(form).find('.form-process').fadeIn(); } if( elFormId ) { $body.removeClass( elFormId + '-ready ' + elFormId + '-complete ' + elFormId + '-success ' + elFormId + '-error' ).addClass( elFormId + '-processing' ); } jQuery(form).ajaxSubmit({ target: elResult, dataType: 'json', success: function(data) { if( elLoader == 'button' ) { defaultBtn.html( defaultBtnText ); } else { jQuery(form).find('.form-process').fadeOut(); } if( data.alert != 'error' && elRedirect ){ window.location.replace( elRedirect ); return true; } if( elAlert == 'inline' ) { if( data.alert == 'error' ) { alertType = 'alert-danger'; } else { alertType = 'alert-success'; } elResult.removeClass( 'alert-danger alert-success' ).addClass( 'alert ' + alertType ).html( data.message ).slideDown( 400 ); } else if( elAlert == 'notify' ) { elResult.attr( 'data-notify-type', data.alert ).attr( 'data-notify-msg', data.message ).html(''); __modules.notifications(elResult); } if( data.alert != 'error' ) { jQuery(form).resetForm(); jQuery(form).find('.btn-group > .btn').removeClass('active'); if( (typeof tinyMCE != 'undefined') && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden() ){ tinymce.activeEditor.setContent(''); } var rangeSlider = jQuery(form).find('.input-range-slider'); if( rangeSlider.length > 0 ) { rangeSlider.each( function(){ var range = jQuery(this).data('ionRangeSlider'); range.reset(); }); } var ratings = jQuery(form).find('.input-rating'); if( ratings.length > 0 ) { ratings.each( function(){ jQuery(this).rating('reset'); }); } var selectPicker = jQuery(form).find('.selectpicker'); if( selectPicker.length > 0 ) { selectPicker.each( function(){ jQuery(this).selectpicker('val', ''); jQuery(this).selectpicker('deselectAll'); }); } jQuery(form).find('.input-select2,select[data-selectsplitter-firstselect-selector]').change(); jQuery(form).trigger( 'formSubmitSuccess', data ); $body.removeClass( elFormId + '-error' ).addClass( elFormId + '-success' ); } else { jQuery(form).trigger( 'formSubmitError', data ); $body.removeClass( elFormId + '-success' ).addClass( elFormId + '-error' ); } if( elFormId ) { $body.removeClass( elFormId + '-processing' ).addClass( elFormId + '-complete' ); } if( jQuery(form).find('.g-recaptcha').children('div').length > 0 ) { grecaptcha.reset(); } } }); } }); }); }); } }; }(), // AjaxForm Functions End /** * -------------------------------------------------------------------------- * Subscribe Functions Start * -------------------------------------------------------------------------- */ Subscribe: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().validate && jQuery().ajaxSubmit; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-form', event: 'pluginFormReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return true; } selector.each( function(){ var element = jQuery(this), elAlert = element.attr('data-alert-type'), elLoader = element.attr('data-loader'), elResult = element.find('.widget-subscribe-form-result'), elRedirect = element.attr('data-redirect'), defButton, defButtonText, alertType; element.find('form').validate({ submitHandler: function(form) { elResult.hide(); if( elLoader == 'button' ) { defButton = jQuery(form).find('button'); defButtonText = defButton.html(); defButton.html('<i class="bi-arrow-repeat icon-spin nomargin"></i>'); } else { jQuery(form).find('.bi-envelope-plus').removeClass('bi-envelope-plus').addClass('bi-arrow-repeat icon-spin'); } jQuery(form).ajaxSubmit({ target: elResult, dataType: 'json', resetForm: true, success: function(data) { if( elLoader == 'button' ) { defButton.html( defButtonText ); } else { jQuery(form).find('.bi-arrow-repeat').removeClass('bi-arrow-repeat icon-spin').addClass('bi-envelope-plus'); } if( data.alert != 'error' && elRedirect ){ window.location.replace( elRedirect ); return true; } if( elAlert == 'inline' ) { if( data.alert == 'error' ) { alertType = 'alert-danger'; } else { alertType = 'alert-success'; } elResult.addClass( 'alert ' + alertType ).html( data.message ).slideDown( 400 ); } else { elResult.attr( 'data-notify-type', data.alert ).attr( 'data-notify-msg', data.message ).html(''); __modules.notifications(elResult); } } }); } }); }); }); } }; }(), // Subscribe Functions End /** * -------------------------------------------------------------------------- * Conditional Functions Start * -------------------------------------------------------------------------- */ Conditional: function() { var _eval = function(field, value, conditions, check, target) { if( ! field || ! conditions ) { return false; } var fulfilled = false; if( check == 'validate' ) { if( value ) { if ( target.getAttribute('aria-invalid') == 'false' ) { fulfilled = true; } else { fulfilled = false; } } } else { switch( conditions.operator ) { case '==': if( value == conditions.value ) { fulfilled = true; } break; case '!=': if( value != conditions.value ) { fulfilled = true; } break; case '>': if( value > conditions.value ) { fulfilled = true; } break; case '<': if( value < conditions.value ) { fulfilled = true; } break; case '<=': if( value <= conditions.value ) { fulfilled = true; } break; case '>=': if( value >= conditions.value ) { fulfilled = true; } break; case 'in': if( conditions.value.includes( value ) ) { fulfilled = true; } break; default: fulfilled = false; break; } } if( fulfilled ) { field.classList.add('condition-fulfilled'); field.querySelectorAll('input,select,textarea,button').forEach( function(el) { el.disabled = false; }); } else { field.classList.remove('condition-fulfilled'); field.querySelectorAll('input,select,textarea,button').forEach( function(el) { el.disabled = true; }); } }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-conditional', event: 'pluginConditionalReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(el) { var field = el, condition = field.getAttribute( 'data-condition' ) || '==', conditionTarget = field.getAttribute( 'data-condition-target' ), conditionValue = field.getAttribute( 'data-condition-value' ), conditionCheck = field.getAttribute( 'data-condition-check' ) || 'value', target = document.querySelector('[id*="'+conditionTarget+'"]'), value = target.value, targetType = target.type, eventType; var conditions = { operator: condition, field: conditionTarget, value: conditionValue } var targetTag = target.tagName.toLowerCase(); if( targetType == 'checkbox' || targetTag == 'select' || targetType == 'radio' ) { eventType = 'change'; } else { eventType = 'input'; } if( targetType == 'checkbox' ) { value = target.checked ? target.value : 0; } if( targetType == 'radio' ) { value = target.checked ? target.value : ''; } _eval(field, value, conditions, conditionCheck, target); target.addEventListener( eventType, function() { if( targetType == 'checkbox' ) { value = target.checked ? target.value : 0; } else if( targetType == 'radio' ) { value = target.checked ? target.value : ''; } else { value = target.value; } _eval(field, value, conditions, conditionCheck, target); }); if( conditionCheck == 'validate' ) { var mutationObserver = new MutationObserver( function(mutations) { mutations.forEach( function(mutation) { _eval(field, value, conditions, conditionCheck, target); }); }); mutationObserver.observe( target, { attributes: true, characterData: true, childList: true, subtree: true, attributeOldValue: true, characterDataOldValue: true }); } }); } }; }(), // Conditional Functions End /** * -------------------------------------------------------------------------- * ShapeDivider Functions Start * -------------------------------------------------------------------------- */ ShapeDivider: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-shapedivider', event: 'pluginShapeDividerReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(element) { var elShape = element.getAttribute('data-shape') || 'valley', elWidth = element.getAttribute('data-width') || 100, elHeight = element.getAttribute('data-height') || 100, elFill = element.getAttribute('data-fill'), elOut = element.getAttribute('data-outside') || 'false', elPos = element.getAttribute('data-position') || 'top', elId = 'shape-divider-' + Math.floor( Math.random() * 10000 ), shape = '', width, height, fill, outside = ''; if( element.classList.contains('shape-divider-complete') ) { return true; } if( elWidth < 100 ) { elWidth = 100; } width = 'width: calc( '+ Number( elWidth ) +'% + 1.5px );'; height = 'height: '+ Number( elHeight ) +'px;'; fill = 'fill: '+elFill+';'; if( elOut == 'true' ) { if( elPos == 'bottom' ) { outside = '#'+ elId +'.shape-divider { bottom: -'+( Number( elHeight ) - 1 ) +'px; } '; } else { outside = '#'+ elId +'.shape-divider { top: -'+( Number( elHeight ) - 1 ) +'px; } '; } } var css = outside + '#'+ elId +'.shape-divider svg { '+ width + height +' } #'+ elId +'.shape-divider .shape-divider-fill { '+ fill +' }', style = document.createElement('style'); __core.getVars.elHead.appendChild(style); style.appendChild(document.createTextNode(css)); element.setAttribute( 'id', elId ); switch(elShape){ case 'valley': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 355" preserveAspectRatio="none"><defs><style>.b{opacity:.5}.c{opacity:.3}</style></defs><path fill="none" d="M999.45 0H0v165.72l379.95 132.46L999.45 0z"></path><path class="b shape-divider-fill" d="M379.95 298.18l28.47 9.92L1000 118.75V0h-.55l-619.5 298.18zM492.04 337.25L1000 252.63V118.75L408.42 308.1l83.62 29.15z"></path><path class="b shape-divider-fill" d="M492.04 337.25L1000 252.63V118.75L408.42 308.1l83.62 29.15z"></path><path class="shape-divider-fill" d="M530.01 350.49l20.22 4.51H1000V252.63l-507.96 84.62 37.97 13.24z"></path><path class="b shape-divider-fill" d="M530.01 350.49l20.22 4.51H1000V252.63l-507.96 84.62 37.97 13.24z"></path><path class="b shape-divider-fill" d="M530.01 350.49l20.22 4.51H1000V252.63l-507.96 84.62 37.97 13.24z"></path><path class="shape-divider-fill" d="M542.94 355h7.29l-20.22-4.51 12.93 4.51z"></path><path class="b shape-divider-fill" d="M542.94 355h7.29l-20.22-4.51 12.93 4.51z"></path><path class="c shape-divider-fill" d="M542.94 355h7.29l-20.22-4.51 12.93 4.51z"></path><path class="b shape-divider-fill" d="M542.94 355h7.29l-20.22-4.51 12.93 4.51z"></path><path class="c shape-divider-fill" d="M379.95 298.18L0 165.72v66.59l353.18 78.75 26.77-12.88z"></path><path class="c shape-divider-fill" d="M353.18 311.06L0 232.31v71.86l288.42 38.06 64.76-31.17z"></path><path class="c shape-divider-fill" d="M353.18 311.06L0 232.31v71.86l288.42 38.06 64.76-31.17z"></path><path class="b shape-divider-fill" d="M380.28 317.11l28.14-9.01-28.47-9.92-26.77 12.88 27.1 6.05z"></path><path class="c shape-divider-fill" d="M380.28 317.11l28.14-9.01-28.47-9.92-26.77 12.88 27.1 6.05z"></path><path class="b shape-divider-fill" d="M479.79 339.29l12.25-2.04-83.62-29.15-28.14 9.01 99.51 22.18z"></path><path class="b shape-divider-fill" d="M479.79 339.29l12.25-2.04-83.62-29.15-28.14 9.01 99.51 22.18z"></path><path class="c shape-divider-fill" d="M479.79 339.29l12.25-2.04-83.62-29.15-28.14 9.01 99.51 22.18z"></path><path class="shape-divider-fill" d="M530.01 350.49l-37.97-13.24-12.25 2.04 50.22 11.2z"></path><path class="b shape-divider-fill" d="M530.01 350.49l-37.97-13.24-12.25 2.04 50.22 11.2z"></path><path class="b shape-divider-fill" d="M530.01 350.49l-37.97-13.24-12.25 2.04 50.22 11.2z"></path><path class="c shape-divider-fill" d="M530.01 350.49l-37.97-13.24-12.25 2.04 50.22 11.2zM288.42 342.23l9.46 1.25 82.4-26.37-27.1-6.05-64.76 31.17z"></path><path class="b shape-divider-fill" d="M288.42 342.23l9.46 1.25 82.4-26.37-27.1-6.05-64.76 31.17z"></path><path class="c shape-divider-fill" d="M288.42 342.23l9.46 1.25 82.4-26.37-27.1-6.05-64.76 31.17z"></path><path class="b shape-divider-fill" d="M380.28 317.11l-82.4 26.37 87.3 11.52h.34l94.27-15.71-99.51-22.18z"></path><path class="c shape-divider-fill" d="M380.28 317.11l-82.4 26.37 87.3 11.52h.34l94.27-15.71-99.51-22.18z"></path><path class="b shape-divider-fill" d="M380.28 317.11l-82.4 26.37 87.3 11.52h.34l94.27-15.71-99.51-22.18z"></path><path class="c shape-divider-fill" d="M380.28 317.11l-82.4 26.37 87.3 11.52h.34l94.27-15.71-99.51-22.18z"></path><path class="shape-divider-fill" d="M479.79 339.29L385.52 355h157.42l-12.93-4.51-50.22-11.2z"></path><path class="b shape-divider-fill" d="M479.79 339.29L385.52 355h157.42l-12.93-4.51-50.22-11.2z"></path><path class="c shape-divider-fill" d="M479.79 339.29L385.52 355h157.42l-12.93-4.51-50.22-11.2z"></path><path class="b shape-divider-fill" d="M479.79 339.29L385.52 355h157.42l-12.93-4.51-50.22-11.2z"></path><path class="c shape-divider-fill" d="M479.79 339.29L385.52 355h157.42l-12.93-4.51-50.22-11.2z"></path><path class="shape-divider-fill" d="M288.42 342.23L0 304.17V355h385.18l-87.3-11.52-9.46-1.25z"></path></svg>'; break; case 'valley-2': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M194,99c186.7,0.7,305-78.3,306-97.2c1,18.9,119.3,97.9,306,97.2c114.3-0.3,194,0.3,194,0.3s0-91.7,0-100c0,0,0,0,0-0 L0,0v99.3C0,99.3,79.7,98.7,194,99z"></path></svg>'; break; case 'valley-3': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1280 0L640 70 0 0v140l640-70 640 70V0z" opacity="0.5"></path><path class="shape-divider-fill" d="M1280 0H0l640 70 640-70z"></path></svg>'; break; case 'mountain': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M500,98.9L0,6.1V0h1000v6.1L500,98.9z"></path></svg>'; break; case 'mountain-2': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M640 140L1280 0H0z" opacity="0.5"/><path class="shape-divider-fill" d="M640 98l640-98H0z"/></svg>'; break; case 'mountain-3': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 491.58" preserveAspectRatio="none"><g style="isolation:isolate"><path class="shape-divider-fill" d="M1000 479.4v-87.96L500 0 0 391.46v87.96l500-335.94 500 335.92z" opacity="0.12" mix-blend-mode="overlay"/><path class="shape-divider-fill" d="M1000 487.31v-7.91L500 143.48 0 479.42v7.91l500-297.96 500 297.94z" opacity="0.25" mix-blend-mode="overlay"/><path class="shape-divider-fill" d="M1000 487.31L500 189.37 0 487.33v4.25h1000v-4.27z"/></g></svg>'; break; case 'mountain-4': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M738,99l262-93V0H0v5.6L738,99z"></path></svg>'; break; case 'mountain-5': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M978.81 122.25L0 0h1280l-262.1 116.26a73.29 73.29 0 0 1-39.09 5.99z" opacity="0.5"></path><path class="shape-divider-fill" d="M983.19 95.23L0 0h1280l-266 91.52a72.58 72.58 0 0 1-30.81 3.71z"></path></svg>'; break; case 'mountains': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" opacity="0.33" d="M473,67.3c-203.9,88.3-263.1-34-320.3,0C66,119.1,0,59.7,0,59.7V0h1000v59.7 c0,0-62.1,26.1-94.9,29.3c-32.8,3.3-62.8-12.3-75.8-22.1C806,49.6,745.3,8.7,694.9,4.7S492.4,59,473,67.3z"></path><path class="shape-divider-fill" opacity="0.66" d="M734,67.3c-45.5,0-77.2-23.2-129.1-39.1c-28.6-8.7-150.3-10.1-254,39.1 s-91.7-34.4-149.2,0C115.7,118.3,0,39.8,0,39.8V0h1000v36.5c0,0-28.2-18.5-92.1-18.5C810.2,18.1,775.7,67.3,734,67.3z"></path><path class="shape-divider-fill" d="M766.1,28.9c-200-57.5-266,65.5-395.1,19.5C242,1.8,242,5.4,184.8,20.6C128,35.8,132.3,44.9,89.9,52.5C28.6,63.7,0,0,0,0 h1000c0,0-9.9,40.9-83.6,48.1S829.6,47,766.1,28.9z"></path></svg>'; break; case 'mountains-2': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 247" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 200.92v.26l.75-.77-.75.51z"></path><path class="shape-divider-fill" d="M279.29 208.39c0-4.49 74.71-29.88 74.71-29.88l61.71 61.26L550 153.1l134.14 88.17L874.28 50 1000 178.51v-.33L874.28 0 684.14 191.27 550 103.1l-134.29 86.67L354 128.51s-74.71 25.39-74.71 29.88S144.23 52.08 144.23 52.08L.75 200.41l143.48-98.33s135.06 110.8 135.06 106.31z" opacity="0.25" isolation="isolate"></path><path class="shape-divider-fill" d="M1000 178.51L874.28 50 684.14 241.27 550 153.1l-134.29 86.67L354 178.51s-74.71 25.39-74.71 29.88-135.06-106.31-135.06-106.31L.75 200.41l-.75.77V247h1000z"></path><path class="shape-divider-fill" d="M1000 178.51L874.28 50 684.14 241.27 550 153.1l-134.29 86.67L354 178.51s-74.71 25.39-74.71 29.88-135.06-106.31-135.06-106.31L.75 200.41l-.75.77V247h1000z" opacity="0.25" isolation="isolate"></path></svg>'; break; case 'mountains-3': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M761.9,44.1L643.1,27.2L333.8,98L0,3.8V0l1000,0v3.9"></path></svg>'; break; case 'mountains-4': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 90.72l140-28.28 315.52 24.14L796.48 65.8 1140 104.89l140-14.17V0H0v90.72z" opacity="0.5"></path><path class="shape-divider-fill" d="M0 0v47.44L170 0l626.48 94.89L1110 87.11l170-39.67V0H0z"></path></svg>'; break; case 'plataeu': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1280 0l-131.81 111.68c-16.47 14-35.47 21-54.71 20.17L173 94a76.85 76.85 0 0 1-36.79-11.46L0 0z"></path></svg>'; break; case 'plataeu-2': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1093.48 131.85L173 94a76.85 76.85 0 0 1-36.79-11.46L0 0h1280l-131.81 111.68c-16.47 13.96-35.47 20.96-54.71 20.17z" opacity="0.5"></path><path class="shape-divider-fill" d="M1094.44 119L172.7 68.72a74.54 74.54 0 0 1-25.19-5.95L0 0h1280l-133.85 102c-15.84 12.09-33.7 17.95-51.71 17z"></path></svg>'; break; case 'hills': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M156.258 127.903l86.363-18.654 78.684 13.079L411.441 99.4l94.454 10.303L582.82 93.8l82.664 18.728 76.961-11.39L816.109 71.4l97.602 9.849L997.383 50.4l66.285 14.694 70.793-24.494h79.863L1280 0H0v122.138l60.613 9.965z"/></svg>'; break; case 'hills-2': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1214.323 66.051h-79.863l-70.793 18.224-66.285-10.933-83.672 22.953-97.601-7.328-73.664 22.125-76.961 8.475-82.664-13.934-76.926 11.832-94.453-7.666-90.137 17.059-78.684-9.731-86.363 13.879-95.644 3.125L0 126.717V0h1280l-.001 35.844z" opacity="0.5"></path><path class="shape-divider-fill" d="M0 0h1280v.006l-70.676 36.578-74.863 4.641-70.793 23.334-66.285-11.678-83.672 29.618-97.602-7.07-63.664 21.421-76.961 12.649-91.664-20.798-77.926 17.66-94.453-7.574-90.137 21.595-78.683-9.884-86.363 16.074-95.645 6.211L0 127.905z"></path></svg>'; break; case 'hills-3': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M156 35.51l95.46 34.84 120.04.24 71.5 33.35 90.09-3.91L640 137.65l102.39-37.17 85.55 10.65 88.11-7.19L992 65.28l73.21 5.31 66.79-22.1 77-.42L1280 0H0l64.8 38.69 91.2-3.18z"/></svg>'; break; case 'hills-4': shape = '<svg viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M156 35.41l95.46 34.73 120.04.25 71.5 33.24 90.09-3.89L640 137.25l102.39-37.06 85.55 10.61 88.11-7.17L992 65.08l73.21 5.31L1132 48.35l77-.42L1280 0H0l64.8 38.57 91.2-3.16z" opacity="0.5"/><path class="shape-divider-fill" d="M156 28.32l95.46 27.79 120.04.2L443 82.9l90.09-3.11L640 109.8l102.39-29.65 85.55 8.49 88.11-5.74L992 52.07l73.21 4.24L1132 38.68l77-.34L1280 0H0l64.8 30.86 91.2-2.54z"/></svg>'; break; case 'cloud': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.5 27.8" preserveAspectRatio="xMidYMax slice"><path class="shape-divider-fill" d="M0 0v6.7c1.9-.8 4.7-1.4 8.5-1 9.5 1.1 11.1 6 11.1 6s2.1-.7 4.3-.2c2.1.5 2.8 2.6 2.8 2.6s.2-.5 1.4-.7c1.2-.2 1.7.2 1.7.2s0-2.1 1.9-2.8c1.9-.7 3.6.7 3.6.7s.7-2.9 3.1-4.1 4.7 0 4.7 0 1.2-.5 2.4 0 1.7 1.4 1.7 1.4h1.4c.7 0 1.2.7 1.2.7s.8-1.8 4-2.2c3.5-.4 5.3 2.4 6.2 4.4.4-.4 1-.7 1.8-.9 2.8-.7 4 .7 4 .7s1.7-5 11.1-6c9.5-1.1 12.3 3.9 12.3 3.9s1.2-4.8 5.7-5.7c4.5-.9 6.8 1.8 6.8 1.8s.6-.6 1.5-.9c.9-.2 1.9-.2 1.9-.2s5.2-6.4 12.6-3.3c7.3 3.1 4.7 9 4.7 9s1.9-.9 4 0 2.8 2.4 2.8 2.4 1.9-1.2 4.5-1.2 4.3 1.2 4.3 1.2.2-1 1.4-1.7 2.1-.7 2.1-.7-.5-3.1 2.1-5.5 5.7-1.4 5.7-1.4 1.5-2.3 4.2-1.1c2.7 1.2 1.7 5.2 1.7 5.2s.3-.1 1.3.5c.5.4.8.8.9 1.1.5-1.4 2.4-5.8 8.4-4 7.1 2.1 3.5 8.9 3.5 8.9s.8-.4 2 0 1.1 1.1 1.1 1.1 1.1-1.1 2.3-1.1 2.1.5 2.1.5 1.9-3.6 6.2-1.2 1.9 6.4 1.9 6.4 2.6-2.4 7.4 0c3.4 1.7 3.9 4.9 3.9 4.9s3.3-6.9 10.4-7.9 11.5 2.6 11.5 2.6.8 0 1.2.2c.4.2.9.9.9.9s4.4-3.1 8.3.2c1.9 1.7 1.5 5 1.5 5s.3-1.1 1.6-1.4c1.3-.3 2.3.2 2.3.2s-.1-1.2.5-1.9 1.9-.9 1.9-.9-4.7-9.3 4.4-13.4c5.6-2.5 9.2.9 9.2.9s5-6.2 15.9-6.2 16.1 8.1 16.1 8.1.7-.2 1.6-.4V0H0z"></path></svg>'; break; case 'cloud-2': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 86" preserveAspectRatio="xMidYMid slice"><path class="shape-divider-fill" d="M1280 0H0v65.2c6.8 0 13.5.9 20.1 2.6 14-21.8 43.1-28 64.8-14 5.6 3.6 10.3 8.3 14 13.9 7.3-1.2 14.8-.6 21.8 1.6 2.1-37.3 34.1-65.8 71.4-63.7 24.3 1.4 46 15.7 56.8 37.6 19-17.6 48.6-16.5 66.3 2.4C323 54 327.4 65 327.7 76.5c.4.2.8.4 1.2.7 3.3 1.9 6.3 4.2 8.9 6.9 15.9-23.8 46.1-33.4 72.8-23.3 11.6-31.9 46.9-48.3 78.8-36.6 9.1 3.3 17.2 8.7 23.8 15.7 6.7-6.6 16.7-8.4 25.4-4.8 29.3-37.4 83.3-44 120.7-14.8 14 11 24.3 26.1 29.4 43.1 4.7.6 9.3 1.8 13.6 3.8 7.8-24.7 34.2-38.3 58.9-30.5 14.4 4.6 25.6 15.7 30.3 30 14.2 1.2 27.7 6.9 38.5 16.2 11.1-35.7 49-55.7 84.7-44.7 14.1 4.4 26.4 13.3 35 25.3 12-5.7 26.1-5.5 37.9.6 3.9-11.6 15.5-18.9 27.7-17.5.2-.3.3-.6.5-.9 23.3-41.4 75.8-56 117.2-32.6 14.1 7.9 25.6 19.7 33.3 33.8 28.8-23.8 71.5-19.8 95.3 9 2.6 3.1 4.9 6.5 6.9 10 3.8-.5 7.6-.8 11.4-.8L1280 0z"/></svg>'; break; case 'cloud-3': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 86" preserveAspectRatio="xMidYMid slice"><path class="shape-divider-fill" d="M833.9 27.5c-5.8 3.2-11 7.3-15.5 12.2-7.1-6.9-17.5-8.8-26.6-5-30.6-39.2-87.3-46.1-126.5-15.5-1.4 1.1-2.8 2.2-4.1 3.4C674.4 33.4 684 48 688.8 64.3c4.7.6 9.3 1.8 13.6 3.8 7.8-24.7 34.2-38.3 58.9-30.5 14.4 4.6 25.6 15.7 30.3 30 14.2 1.2 27.7 6.9 38.5 16.2C840.6 49.6 876 29.5 910.8 38c-20.4-20.3-51.8-24.6-76.9-10.5zM384 43.9c-9 5-16.7 11.9-22.7 20.3 15.4-7.8 33.3-8.7 49.4-2.6 3.7-10.1 9.9-19.1 18.1-26-15.4-2.3-31.2.6-44.8 8.3zm560.2 13.6c2 2.2 3.9 4.5 5.7 6.9 5.6-2.6 11.6-4 17.8-4.1-7.6-2.4-15.6-3.3-23.5-2.8zM178.7 7c29-4.2 57.3 10.8 70.3 37 8.9-8.3 20.7-12.8 32.9-12.5C256.4 1.8 214.7-8.1 178.7 7zm146.5 56.3c1.5 4.5 2.4 9.2 2.5 14 .4.2.8.4 1.2.7 3.3 1.9 6.3 4.2 8.9 6.9 5.8-8.7 13.7-15.7 22.9-20.5-11.1-5.2-23.9-5.6-35.5-1.1zM33.5 54.9c21.6-14.4 50.7-8.5 65 13 .1.2.2.3.3.5 7.3-1.2 14.8-.6 21.8 1.6.6-10.3 3.5-20.4 8.6-29.4.3-.6.7-1.2 1.1-1.8-32.1-17.2-71.9-10.6-96.8 16.1zm1228.9 2.7c2.3 2.9 4.4 5.9 6.2 9.1 3.8-.5 7.6-.8 11.4-.8V48.3c-6.4 1.8-12.4 5-17.6 9.3zM1127.3 11c1.9.9 3.7 1.8 5.6 2.8 14.2 7.9 25.8 19.7 33.5 34 13.9-11.4 31.7-16.9 49.6-15.3-20.5-27.7-57.8-36.8-88.7-21.5z" opacity="0.5"/><path class="shape-divider-fill" d="M0 0v66c6.8 0 13.5.9 20.1 2.6 3.5-5.4 8.1-10.1 13.4-13.6 24.9-26.8 64.7-33.4 96.8-16 10.5-17.4 28.2-29.1 48.3-32 36.1-15.1 77.7-5.2 103.2 24.5 19.7.4 37.1 13.1 43.4 31.8 11.5-4.5 24.4-4.2 35.6 1.1l.4-.2c15.4-21.4 41.5-32.4 67.6-28.6 25-21 62.1-18.8 84.4 5.1 6.7-6.6 16.7-8.4 25.4-4.8 29.2-37.4 83.3-44.1 120.7-14.8l1.8 1.5c37.3-32.9 94.3-29.3 127.2 8 1.2 1.3 2.3 2.7 3.4 4.1 9.1-3.8 19.5-1.9 26.6 5 24.3-26 65-27.3 91-3.1.5.5 1 .9 1.5 1.4 12.8 3.1 24.4 9.9 33.4 19.5 7.9-.5 15.9.4 23.5 2.8 7-.1 13.9 1.5 20.1 4.7 3.9-11.6 15.5-18.9 27.7-17.5.2-.3.3-.6.5-.9 22.1-39.2 70.7-54.7 111.4-35.6 30.8-15.3 68.2-6.2 88.6 21.5 18.3 1.7 35 10.8 46.5 25.1 5.2-4.3 11.1-7.4 17.6-9.3V0H0z"/></svg>'; break; case 'wave': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M421.9,6.5c22.6-2.5,51.5,0.4,75.5,5.3c23.6,4.9,70.9,23.5,100.5,35.7c75.8,32.2,133.7,44.5,192.6,49.7c23.6,2.1,48.7,3.5,103.4-2.5c54.7-6,106.2-25.6,106.2-25.6V0H0v30.3c0,0,72,32.6,158.4,30.5c39.2-0.7,92.8-6.7,134-22.4c21.2-8.1,52.2-18.2,79.7-24.2C399.3,7.9,411.6,7.5,421.9,6.5z"></path></svg>'; break; case 'wave-2': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.5 27.8" preserveAspectRatio="none"><path class="shape-divider-fill" d="M283.5,9.7c0,0-7.3,4.3-14,4.6c-6.8,0.3-12.6,0-20.9-1.5c-11.3-2-33.1-10.1-44.7-5.7 s-12.1,4.6-18,7.4c-6.6,3.2-20,9.6-36.6,9.3C131.6,23.5,99.5,7.2,86.3,8c-1.4,0.1-6.6,0.8-10.5,2c-3.8,1.2-9.4,3.8-17,4.7 c-3.2,0.4-8.3,1.1-14.2,0.9c-1.5-0.1-6.3-0.4-12-1.6c-5.7-1.2-11-3.1-15.8-3.7C6.5,9.2,0,10.8,0,10.8V0h283.5V9.7z M260.8,11.3 c-0.7-1-2-0.4-4.3-0.4c-2.3,0-6.1-1.2-5.8-1.1c0.3,0.1,3.1,1.5,6,1.9C259.7,12.2,261.4,12.3,260.8,11.3z M242.4,8.6 c0,0-2.4-0.2-5.6-0.9c-3.2-0.8-10.3-2.8-15.1-3.5c-8.2-1.1-15.8,0-15.1,0.1c0.8,0.1,9.6-0.6,17.6,1.1c3.3,0.7,9.3,2.2,12.4,2.7 C239.9,8.7,242.4,8.6,242.4,8.6z M185.2,8.5c1.7-0.7-13.3,4.7-18.5,6.1c-2.1,0.6-6.2,1.6-10,2c-3.9,0.4-8.9,0.4-8.8,0.5 c0,0.2,5.8,0.8,11.2,0c5.4-0.8,5.2-1.1,7.6-1.6C170.5,14.7,183.5,9.2,185.2,8.5z M199.1,6.9c0.2,0-0.8-0.4-4.8,1.1 c-4,1.5-6.7,3.5-6.9,3.7c-0.2,0.1,3.5-1.8,6.6-3C197,7.5,199,6.9,199.1,6.9z M283,6c-0.1,0.1-1.9,1.1-4.8,2.5s-6.9,2.8-6.7,2.7 c0.2,0,3.5-0.6,7.4-2.5C282.8,6.8,283.1,5.9,283,6z M31.3,11.6c0.1-0.2-1.9-0.2-4.5-1.2s-5.4-1.6-7.8-2C15,7.6,7.3,8.5,7.7,8.6 C8,8.7,15.9,8.3,20.2,9.3c2.2,0.5,2.4,0.5,5.7,1.6S31.2,11.9,31.3,11.6z M73,9.2c0.4-0.1,3.5-1.6,8.4-2.6c4.9-1.1,8.9-0.5,8.9-0.8 c0-0.3-1-0.9-6.2-0.3S72.6,9.3,73,9.2z M71.6,6.7C71.8,6.8,75,5.4,77.3,5c2.3-0.3,1.9-0.5,1.9-0.6c0-0.1-1.1-0.2-2.7,0.2 C74.8,5.1,71.4,6.6,71.6,6.7z M93.6,4.4c0.1,0.2,3.5,0.8,5.6,1.8c2.1,1,1.8,0.6,1.9,0.5c0.1-0.1-0.8-0.8-2.4-1.3 C97.1,4.8,93.5,4.2,93.6,4.4z M65.4,11.1c-0.1,0.3,0.3,0.5,1.9-0.2s2.6-1.3,2.2-1.2s-0.9,0.4-2.5,0.8C65.3,10.9,65.5,10.8,65.4,11.1 z M34.5,12.4c-0.2,0,2.1,0.8,3.3,0.9c1.2,0.1,2,0.1,2-0.2c0-0.3-0.1-0.5-1.6-0.4C36.6,12.8,34.7,12.4,34.5,12.4z M152.2,21.1 c-0.1,0.1-2.4-0.3-7.5-0.3c-5,0-13.6-2.4-17.2-3.5c-3.6-1.1,10,3.9,16.5,4.1C150.5,21.6,152.3,21,152.2,21.1z"></path><path class="shape-divider-fill" d="M269.6,18c-0.1-0.1-4.6,0.3-7.2,0c-7.3-0.7-17-3.2-16.6-2.9c0.4,0.3,13.7,3.1,17,3.3 C267.7,18.8,269.7,18,269.6,18z"></path><path class="shape-divider-fill" d="M227.4,9.8c-0.2-0.1-4.5-1-9.5-1.2c-5-0.2-12.7,0.6-12.3,0.5c0.3-0.1,5.9-1.8,13.3-1.2 S227.6,9.9,227.4,9.8z"></path><path class="shape-divider-fill" d="M204.5,13.4c-0.1-0.1,2-1,3.2-1.1c1.2-0.1,2,0,2,0.3c0,0.3-0.1,0.5-1.6,0.4 C206.4,12.9,204.6,13.5,204.5,13.4z"></path><path class="shape-divider-fill" d="M201,10.6c0-0.1-4.4,1.2-6.3,2.2c-1.9,0.9-6.2,3.1-6.1,3.1c0.1,0.1,4.2-1.6,6.3-2.6 S201,10.7,201,10.6z"></path><path class="shape-divider-fill" d="M154.5,26.7c-0.1-0.1-4.6,0.3-7.2,0c-7.3-0.7-17-3.2-16.6-2.9c0.4,0.3,13.7,3.1,17,3.3 C152.6,27.5,154.6,26.8,154.5,26.7z"></path><path class="shape-divider-fill" d="M41.9,19.3c0,0,1.2-0.3,2.9-0.1c1.7,0.2,5.8,0.9,8.2,0.7c4.2-0.4,7.4-2.7,7-2.6 c-0.4,0-4.3,2.2-8.6,1.9c-1.8-0.1-5.1-0.5-6.7-0.4S41.9,19.3,41.9,19.3z"></path><path class="shape-divider-fill" d="M75.5,12.6c0.2,0.1,2-0.8,4.3-1.1c2.3-0.2,2.1-0.3,2.1-0.5c0-0.1-1.8-0.4-3.4,0 C76.9,11.5,75.3,12.5,75.5,12.6z"></path><path class="shape-divider-fill" d="M15.6,13.2c0-0.1,4.3,0,6.7,0.5c2.4,0.5,5,1.9,5,2c0,0.1-2.7-0.8-5.1-1.4 C19.9,13.7,15.7,13.3,15.6,13.2z"></path></svg>'; break; case 'wave-3': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1047.1 3.7" preserveAspectRatio="xMidYMin slice"><path class="shape-divider-fill" d="M1047.1,0C557,0,8.9,0,0,0v1.6c0,0,0.6-1.5,2.7-0.3C3.9,2,6.1,4.1,8.3,3.5c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3C13.8,2,16,4.1,18.2,3.5c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3C23.6,2,25.9,4.1,28,3.5c0.9-0.2,1.5-1.9,1.5-1.9 c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3C63,2,65.3,4.1,67.4,3.5 C68.3,3.3,69,1.6,69,1.6s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3 C82.7,2,85,4.1,87.1,3.5c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3C92.6,2,94.8,4.1,97,3.5c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9 c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2 c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3 c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.6-0.4V0z M2.5,1.2C2.5,1.2,2.5,1.2,2.5,1.2C2.5,1.2,2.5,1.2,2.5,1.2z M2.7,1.4c0.1,0,0.1,0.1,0.1,0.1C2.8,1.4,2.8,1.4,2.7,1.4z"></path></svg>'; break; case 'wave-4': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 51.76c36.21-2.25 77.57-3.58 126.42-3.58 320 0 320 57 640 57 271.15 0 312.58-40.91 513.58-53.4V0H0z" opacity="0.3"></path><path class="shape-divider-fill" d="M0 24.31c43.46-5.69 94.56-9.25 158.42-9.25 320 0 320 89.24 640 89.24 256.13 0 307.28-57.16 481.58-80V0H0z" opacity="0.5"></path><path class="shape-divider-fill" d="M0 0v3.4C28.2 1.6 59.4.59 94.42.59c320 0 320 84.3 640 84.3 285 0 316.17-66.85 545.58-81.49V0z"></path></svg>'; break; case 'wave-5': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 0v100c20 17.3 40 29.51 80 29.51 51.79 0 74.69-48.57 151.75-48.57 73.72 0 91 54.88 191.56 54.88C543.95 135.8 554 14 665.69 14c109.46 0 98.85 87 188.2 87 70.37 0 69.81-33.73 115.6-33.73 55.85 0 62 39.62 115.6 39.62 58.08 0 57.52-46.59 115-46.59 39.8 0 60 22.48 79.89 39.69V0z"></path></svg>'; break; case 'wave-6': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M504.854,80.066c7.812,0,14.893,0.318,21.41,0.879 c-25.925,22.475-56.093,40.852-102.946,40.852c-20.779,0-37.996-2.349-52.898-6.07C413.517,107.295,434.056,80.066,504.854,80.066z M775.938,51.947c19.145,18.596,39.097,35.051,77.956,35.051c46.907,0,62.299-14.986,80.912-24.98 c-21.357-15.783-46.804-28.348-85.489-28.348C816.829,33.671,794.233,41.411,775.938,51.947z" opacity="0.3"></path><path class="shape-divider-fill" d="M1200.112,46.292c39.804,0,59.986,22.479,79.888,39.69v16.805 c-19.903-10.835-40.084-21.777-79.888-21.777c-72.014,0-78.715,43.559-147.964,43.559c-56.84,0-81.247-35.876-117.342-62.552 c9.309-4.998,19.423-8.749,34.69-8.749c55.846,0,61.99,39.617,115.602,39.617C1143.177,92.887,1142.618,46.292,1200.112,46.292z M80.011,115.488c-40.006,0-60.008-12.206-80.011-29.506v16.806c20.003,10.891,40.005,21.782,80.011,21.782 c80.004,0,78.597-30.407,137.669-30.407c55.971,0,62.526,24.026,126.337,24.026c9.858,0,18.509-0.916,26.404-2.461 c-57.186-14.278-80.177-48.808-138.66-48.808C154.698,66.919,131.801,115.488,80.011,115.488z M526.265,80.945 c56.848,4.902,70.056,28.726,137.193,28.726c54.001,0,73.43-35.237,112.48-57.724C751.06,27.782,727.548,0,665.691,0 C597.381,0,567.086,45.555,526.265,80.945z" opacity="0.5"></path><path class="shape-divider-fill" d="M0,0v85.982c20.003,17.3,40.005,29.506,80.011,29.506c51.791,0,74.688-48.569,151.751-48.569 c58.482,0,81.473,34.531,138.66,48.808c43.096-8.432,63.634-35.662,134.433-35.662c7.812,0,14.893,0.318,21.41,0.879 C567.086,45.555,597.381,0,665.691,0c61.856,0,85.369,27.782,110.246,51.947c18.295-10.536,40.891-18.276,73.378-18.276 c38.685,0,64.132,12.564,85.489,28.348c9.309-4.998,19.423-8.749,34.69-8.749c55.846,0,61.99,39.617,115.602,39.617 c58.08,0,57.521-46.595,115.015-46.595c39.804,0,59.986,22.479,79.888,39.69V0H0z"></path></svg>'; break; case 'slant': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0,6V0h1000v100L0,6z"></path></svg>'; break; case 'slant-2': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2600 131.1" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 0L2600 0 2600 69.1 0 0z"></path><path class="shape-divider-fill" opacity="0.5" d="M0 0L2600 0 2600 69.1 0 69.1z"></path><path class="shape-divider-fill" opacity="0.25" d="M2600 0L0 0 0 130.1 2600 69.1z"></path></svg>'; break; case 'slant-3': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1280 140V0H0l1280 140z" opacity="0.5"></path><path class="shape-divider-fill" d="M1280 98V0H0l1280 98z"></path></svg>'; break; case 'rounded': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1000,4.3V0H0v4.3C0.9,23.1,126.7,99.2,500,100S1000,22.7,1000,4.3z"></path></svg>'; break; case 'rounded-2': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0,0c0,0,0,6,0,6.7c0,18,240.2,93.6,615.2,92.6C989.8,98.5,1000,25,1000,6.7c0-0.7,0-6.7,0-6.7H0z"></path></svg>'; break; case 'rounded-3': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 0s573.08 140 1280 140V0z"></path></svg>'; break; case 'rounded-4': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 0v60s573.09 80 1280 80V0z" opacity="0.3"></path><path class="shape-divider-fill" d="M0 0v30s573.09 110 1280 110V0z" opacity="0.5"></path><path class="shape-divider-fill" d="M0 0s573.09 140 1280 140V0z"></path></svg>'; break; case 'rounded-5': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 0v.48C18.62 9.38 297.81 140 639.5 140 993.24 140 1280 0 1280 0z" opacity="0.3"></path><path class="shape-divider-fill" d="M0 .6c14 8.28 176.54 99.8 555.45 119.14C952.41 140 1280 0 1280 0H0z" opacity="0.5"></path><path class="shape-divider-fill" d="M726.29 101.2C1126.36 79.92 1281 0 1281 0H1c.05 0 325.25 122.48 725.29 101.2z"></path></svg>'; break; case 'triangle': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 10" preserveAspectRatio="none"><path class="shape-divider-fill" d="M350,10L340,0h20L350,10z"></path></svg>'; break; case 'drops': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.5 27.8" preserveAspectRatio="xMidYMax slice"><path class="shape-divider-fill" d="M0 0v1.4c.6.7 1.1 1.4 1.4 2 2 3.8 2.2 6.6 1.8 10.8-.3 3.3-2.4 9.4 0 12.3 1.7 2 3.7 1.4 4.6-.9 1.4-3.8-.7-8.2-.6-12 .1-3.7 3.2-5.5 6.9-4.9 4 .6 4.8 4 4.9 7.4.1 1.8-1.1 7 0 8.5.6.8 1.6 1.2 2.4.5 1.4-1.1.1-5.4.1-6.9.1-3.7.3-8.6 4.1-10.5 5-2.5 6.2 1.6 5.4 5.6-.4 1.7-1 9.2 2.9 6.3 1.5-1.1.7-3.5.5-4.9-.4-2.4-.4-4.3 1-6.5.9-1.4 2.4-3.1 4.2-3 2.4.1 2.7 2.2 4 3.7 1.5 1.8 1.8 2.2 3 .1 1.1-1.9 1.2-2.8 3.6-3.3 1.3-.3 4.8-1.4 5.9-.5 1.5 1.1.6 2.8.4 4.3-.2 1.1-.6 4 1.8 3.4 1.7-.4-.3-4.1.6-5.6 1.3-2.2 5.8-1.4 7 .5 1.3 2.1.5 5.8.1 8.1s-1.2 5-.6 7.4c1.3 5.1 4.4.9 4.3-2.4-.1-4.4-2-8.8-.5-13 .9-2.4 4.6-6.6 7.7-4.5 2.7 1.8.5 7.8.2 10.3-.2 1.7-.8 4.6.2 6.2.9 1.4 2 1.5 2.6-.3.5-1.5-.9-4.5-1-6.1-.2-1.7-.4-3.7.2-5.4 1.8-5.6 3.5 2.4 6.3.6 1.4-.9 4.3-9.4 6.1-3.1.6 2.2-1.3 7.8.7 8.9 4.2 2.3 1.5-7.1 2.2-8 3.1-4 4.7 3.8 6.1 4.1 3.1.7 2.8-7.9 8.1-4.5 1.7 1.1 2.9 3.3 3.2 5.2.4 2.2-1 4.5-.6 6.6 1 4.3 4.4 1.5 4.4-1.7 0-2.7-3-8.3 1.4-9.1 4.4-.9 7.3 3.5 7.8 6.9.3 2-1.5 10.9 1.3 11.3 4.1.6-3.2-15.7 4.8-15.8 4.7-.1 2.8 4.1 3.9 6.6 1 2.4 2.1 1 2.3-.8.3-1.9-.9-3.2 1.3-4.3 5.9-2.9 5.9 5.4 5.5 8.5-.3 2-1.7 8.4 2 8.1 6.9-.5-2.8-16.9 4.8-18.7 4.7-1.2 6.1 3.6 6.3 7.1.1 1.7-1.2 8.1.6 9.1 3.5 2 1.9-7 2-8.4.2-4 1.2-9.6 6.4-9.8 4.7-.2 3.2 4.6 2.7 7.5-.4 2.2 1.3 8.6 3.8 4.4 1.1-1.9-.3-4.1-.3-6 0-1.7.4-3.2 1.3-4.6 1-1.6 2.9-3.5 5.1-2.9 2.5.6 2.3 4.1 4.1 4.9 1.9.8 1.6-.9 2.3-2.1 1.2-2.1 2.1-2.1 4.4-2.4 1.4-.2 3.6-1.5 4.9-.5 2.3 1.7-.7 4.4.1 6.5.6 1.5 2.1 1.7 2.8.3.7-1.4-1.1-3.4-.3-4.8 1.4-2.5 6.2-1.2 7.2 1 2.3 4.8-3.3 12-.2 16.3 3 4.1 3.9-2.8 3.8-4.8-.4-4.3-2.1-8.9 0-13.1 1.3-2.5 5.9-5.7 7.9-2.4 2 3.2-1.3 9.8-.8 13.4.5 4.4 3.5 3.3 2.7-.8-.4-1.9-2.4-10 .6-11.1 3.7-1.4 2.8 7.2 6.5.4 2.2-4.1 4.9-3.1 5.2 1.2.1 1.5-.6 3.1-.4 4.6.2 1.9 1.8 3.7 3.3 1.3 1-1.6-2.6-10.4 2.9-7.3 2.6 1.5 1.6 6.5 4.8 2.7 1.3-1.5 1.7-3.6 4-3.7 2.2-.1 4 2.3 4.8 4.1 1.3 2.9-1.5 8.4.9 10.3 4.2 3.3 3-5.5 2.7-6.9-.6-3.9 1-7.2 5.5-5 4.1 2.1 4.3 7.7 4.1 11.6 0 .8-.6 9.5 2.5 5.2 1.2-1.7-.1-7.7.1-9.6.3-2.9 1.2-5.5 4.3-6.2 4.5-1 7.7 1.5 7.4 5.8-.2 3.5-1.8 7.7-.5 11.1 1 2.7 3.6 2.8 5 .2 1.6-3.1 0-8.3-.4-11.6-.4-4.2-.2-7 1.8-10.8 0 0-.1.1-.1.2-.2.4-.3.7-.4.8v.1c-.1.2-.1.2 0 0v-.1l.4-.8c0-.1.1-.1.1-.2.2-.4.5-.8.8-1.2V0H0zM282.7 3.4z"></path></svg>'; break; case 'cliff': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 279.24" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1000 0S331.54-4.18 0 279.24h1000z" opacity="0.25"></path><path class="shape-divider-fill" d="M1000 279.24s-339.56-44.3-522.95-109.6S132.86 23.76 0 25.15v254.09z"></path></svg>'; break; case 'zigzag': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1800 5.8" preserveAspectRatio="none"><path class="shape-divider-fill" d="M5.4.4l5.4 5.3L16.5.4l5.4 5.3L27.5.4 33 5.7 38.6.4l5.5 5.4h.1L49.9.4l5.4 5.3L60.9.4l5.5 5.3L72 .4l5.5 5.3L83.1.4l5.4 5.3L94.1.4l5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.4 5.3L161 .4l5.4 5.3L172 .4l5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3L261 .4l5.4 5.3L272 .4l5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3L361 .4l5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.6-5.4 5.5 5.3L461 .4l5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1L550 .4l5.4 5.3L561 .4l5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2L650 .4l5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2L750 .4l5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.4h.2L850 .4l5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.4V0H-.2v5.8z"></path></svg>'; break; case 'illusion': shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.5 19.6" preserveAspectRatio="none"><path class="shape-divider-fill" opacity="0.33" d="M0 0L0 18.8 141.8 4.1 283.5 18.8 283.5 0z"></path><path class="shape-divider-fill" opacity="0.33" d="M0 0L0 12.6 141.8 4 283.5 12.6 283.5 0z"></path><path class="shape-divider-fill" opacity="0.33" d="M0 0L0 6.4 141.8 4 283.5 6.4 283.5 0z"></path><path class="shape-divider-fill" d="M0 0L0 1.2 141.8 4 283.5 1.2 283.5 0z"></path></svg>'; break; default: shape = ''; break; } element.innerHTML = shape; element.querySelector('svg').classList.add( 'op-ts' ); setTimeout( function() { element.querySelector('svg').classList.add( 'op-1' ); }, 500); element.classList.add('shape-divider-complete'); }); } }; }(), // ShapeDivider Functions End /** * -------------------------------------------------------------------------- * StickySidebar Functions Start * -------------------------------------------------------------------------- */ StickySidebar: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof jQuery !== 'undefined' && jQuery().scwStickySidebar; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-stickysidebar', event: 'pluginStickySidebarReady' }); selector = __core.getSelector( selector ); if( selector.length < 1 ){ return false; } selector.each( function(){ var element = jQuery(this), elTop = element.attr('data-offset-top') || 110, elBottom = element.attr('data-offset-bottom') || 50; element.scwStickySidebar({ additionalMarginTop: Number(elTop), additionalMarginBottom: Number(elBottom) }); }); }); } }; }(), // StickySidebar Functions End /** * -------------------------------------------------------------------------- * Cookies Functions Start * -------------------------------------------------------------------------- */ Cookies: function() { var _resetPage = function(btn) { if( !btn.closest('#gdpr-preferences') ) { return false; } setTimeout( function() { window.location.reload(); }, 500); }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-cookie', event: 'pluginCookieReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var cookieBar = document.querySelector('.gdpr-settings'), elSpeed = cookieBar?.getAttribute('data-speed') || 300, elExpire = cookieBar?.getAttribute('data-expire') || 30, elDelay = cookieBar?.getAttribute('data-delay') || 1500, elPersist = cookieBar?.getAttribute('data-persistent'), elDirection = 'bottom', elHeight = cookieBar?.offsetHeight + 100, elWidth = cookieBar?.offsetWidth + 100, elSize, elSettings = document.querySelector('.gdpr-cookie-settings'), elSwitches = elSettings?.querySelectorAll('[data-cookie-name]'); if( !cookieBar && !elSettings ) { return true; } if( elPersist == 'true' ) { __core.cookie.set('__cnvs_cookies_accept', ''); __core.cookie.remove('__cnvs_cookies_decline'); } if( cookieBar ) { if( cookieBar?.classList.contains('gdpr-settings-sm') && cookieBar?.classList.contains('gdpr-settings-right') ) { elDirection = 'right'; } else if( cookieBar?.classList.contains('gdpr-settings-sm') ) { elDirection = 'left'; } if( elDirection == 'left' ) { elSize = -elWidth; cookieBar.style.right = 'auto'; cookieBar.style.marginLeft = '1rem'; } else if( elDirection == 'right' ) { elSize = -elWidth; cookieBar.style.left = 'auto'; cookieBar.style.marginRight = '1rem'; } else { elSize = -elHeight; } cookieBar.style[elDirection] = elSize + 'px'; if( __core.cookie.get('__cnvs_cookies_accept') != '1' ) { setTimeout( function() { cookieBar.style.display = 'block'; cookieBar.style.pointerEvents = 'auto'; cookieBar.style[elDirection] = 0; cookieBar.style.opacity = 1; }, Number( elDelay ) ); } } var gdprAcceptBtn = document.querySelectorAll('.gdpr-accept'), gdprDeclineBtn = document.querySelectorAll('.gdpr-decline'), gdprSaveCookies = document.querySelectorAll('.gdpr-save-cookies'); if( gdprAcceptBtn.length > 0 ) { gdprAcceptBtn.forEach( function(btn){ btn.onclick = function(e) { e.preventDefault(); if( cookieBar ) { cookieBar.style[elDirection] = elSize + 'px'; cookieBar.style.opacity = 0; cookieBar.ontransitionend = function() { cookieBar.style.display = 'none'; cookieBar.style.pointerEvents = 'none'; }; } __core.cookie.set('__cnvs_cookies_accept', '1', elExpire); __core.cookie.set('__cnvs_cookies_decline', '0', elExpire); _resetPage(btn); }; }); } if( gdprDeclineBtn.length > 0 ) { gdprDeclineBtn.forEach( function(btn){ btn.onclick = function(e) { e.preventDefault(); if( cookieBar ) { cookieBar.style[elDirection] = elSize + 'px'; cookieBar.style.opacity = 0; cookieBar.ontransitionend = function() { cookieBar.style.display = 'none'; cookieBar.style.pointerEvents = 'none'; }; } __core.cookie.set('__cnvs_cookies_accept', '0', elExpire); __core.cookie.set('__cnvs_cookies_decline', '1', elExpire); _resetPage(btn); }; }); } var acceptCookies = __core.cookie.get('__cnvs_cookies_accept'), declineCookies = __core.cookie.get('__cnvs_cookies_decline'), cookiesAllowed = (acceptCookies || acceptCookies != '0') && (!declineCookies || declineCookies != '1'); elSwitches?.forEach( function(el) { var elCookie = '__cnvs_gdpr_' + el.getAttribute('data-cookie-name'), getCookie = __core.cookie.get(elCookie); if( typeof getCookie !== 'undefined' && getCookie == '1' && cookiesAllowed ) { el.checked = true; } else { el.checked = false; } }); if( gdprSaveCookies.length > 0 ) { gdprSaveCookies.forEach( function(btn){ btn.onclick = function(e) { e.preventDefault(); __core.cookie.set('__cnvs_cookies_accept', '1', elExpire); __core.cookie.set('__cnvs_cookies_decline', '0', elExpire); elSwitches.forEach( function(el) { var elCookie = '__cnvs_gdpr_' + el.getAttribute( 'data-cookie-name' ); if( el.checked == true ) { __core.cookie.set(elCookie, '1', elExpire); } else { __core.cookie.remove(elCookie, ''); } }); if( elSettings.closest( '.mfp-content' ).length > 0 ) { jQuery$.magnificPopup.close(); } _resetPage(btn); }; }); } document.querySelectorAll('.gdpr-container')?.forEach( function(element) { var elCookie = '__cnvs_gdpr_' + element.getAttribute('data-cookie-name'), elContent = element.getAttribute('data-cookie-content'), elContentAjax = element.getAttribute('data-cookie-content-ajax'), getCookie = __core.cookie.get(elCookie); if( typeof getCookie !== 'undefined' && getCookie == '1' && cookiesAllowed ) { element.classList.add('gdpr-content-active'); if( elContentAjax ) { fetch( elContentAjax ).then( function(response) { return response.text(); }).then( function(html) { var domParser = new DOMParser(); var parsedHTML = domParser.parseFromString(html, 'text/html'); element?.insertAdjacentHTML('beforeend', parsedHTML.body.innerHTML); }).catch( function(err) { console.log(err); }); } else { if( elContent ) { element.innerHTML += elContent; } } __core.runContainerModules(element); } else { element.classList.add('gdpr-content-blocked'); } }); } }; }(), // Cookies Functions End /** * -------------------------------------------------------------------------- * Quantity Functions Start * -------------------------------------------------------------------------- */ Quantity: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-quantity', event: 'pluginQuantityReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(element) { var plus = element.querySelector('.plus'), minus = element.querySelector('.minus'), input = element.querySelector('.qty'); var eventChange = new Event("change"); plus.onclick = function(e) { e.preventDefault(); var value = input.value, step = input.getAttribute('step') || 1, max = input.getAttribute('max'), intRegex = /^\d+$/; if( max && ( Number(value) >= Number( max ) ) ) { return false; } if( intRegex.test( value ) ) { var valuePlus = Number(value) + Number(step); input.value = valuePlus; } else { input.value = Number(step); } input.dispatchEvent(eventChange); }; minus.onclick = function(e) { e.preventDefault(); var value = input.value, step = input.getAttribute('step') || 1, min = input.getAttribute('min'), intRegex = /^\d+$/; if( !min || min < 0 ) { min = 1; } if( intRegex.test( value ) ) { if( Number(value) > Number(min) ) { var valueMinus = Number(value) - Number(step); input.value = valueMinus; } } else { input.value = Number(step); } input.dispatchEvent(eventChange); }; }); } }; }(), // Quantity Functions End /** * -------------------------------------------------------------------------- * ReadMore Functions Start * -------------------------------------------------------------------------- */ ReadMore: function() { var _HEXtoRGBA = function(hex, op) { var c; if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)){ c= hex.substring(1).split(''); if(c.length==3){ c= [c[0], c[0], c[1], c[1], c[2], c[2]]; } c= '0x'+c.join(''); return 'rgba('+[(c>>16)&255, (c>>8)&255, c&255].join(',')+','+op+')'; } console.log('Bad Hex'); }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-readmore', event: 'pluginReadMoreReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(el) { var element = el, elSize = element.getAttribute('data-readmore-size') || '10rem', elSpeed = element.getAttribute('data-readmore-speed') || 500, elScrollUp = element.getAttribute('data-readmore-scrollup') || 'false', elTrigger = element.getAttribute('data-readmore-trigger') || '.read-more-trigger', elTriggerO = element.getAttribute('data-readmore-trigger-open') || 'Read More', elTriggerC = element.getAttribute('data-readmore-trigger-close') || 'Read Less', elMask; element.style.height = ''; element.classList.remove('read-more-wrap-open'); var elHeight = element.offsetHeight; var elTriggerElement = element.querySelector( elTrigger ); elTriggerElement.classList.remove('d-none'); var elHeightN = elHeight + elTriggerElement.offsetHeight; elTriggerElement.innerHTML = elTriggerO; elSpeed = Number( elSpeed ); element.classList.add('read-more-wrap'); element.style.height = elSize; element.style.transitionDuration = elSpeed + 'ms'; if( !element.querySelector('.read-more-mask') ) { element.innerHTML += '<div class="read-more-mask"></div>'; } elMask = element.querySelector('.read-more-mask'); var elMaskD = element.getAttribute('data-readmore-mask') || 'true', elMaskColor = element.getAttribute('data-readmore-maskcolor') || '#FFF', elMaskSize = element.getAttribute('data-readmore-masksize') || '100%'; if( elMaskD == 'true' ) { elMask.style.height = elMaskSize; elMask.style.backgroundImage = 'linear-gradient( '+ _HEXtoRGBA( elMaskColor, 0 ) +', '+ _HEXtoRGBA( elMaskColor, 1 ) +' )'; elMask.classList.add('op-ts', 'op-1'); } else { elMask.classList.add('d-none'); } var elTriggerEl = element.querySelector(elTrigger); // console.log( (element.getBoundingClientRect().top + document.body.scrollTop - __core.getVars.topScrollOffset) ); elTriggerEl.onclick = function(e) { e.preventDefault(); if( element.classList.contains('read-more-wrap-open') ) { element.style.height = elSize; element.classList.remove('read-more-wrap-open'); elTriggerEl.innerHTML = elTriggerO; setTimeout( function() { if( elScrollUp == 'true' ) { __core.scrollTo((element.offsetTop - __core.getVars.topScrollOffset), false, false); } }, elSpeed ); if( elMaskD == 'true' ) { elMask.classList.add('op-ts', 'op-1'); } } else { if( elTriggerC == 'false' ) { elTriggerEl.classList.add('d-none'); } element.style.height = elHeightN + 'px'; element.style.overflow = ''; element.classList.add('read-more-wrap-open'); if( elTriggerEl ) { elTriggerEl.innerHTML = elTriggerC; } if( elMaskD == 'true' ) { elMask.classList.remove('op-1'); elMask.classList.add('op-0'); } } elTriggerEl = element.querySelector(elTrigger); }; }); __core.getVars.resizers.readmore = function() { __modules.readmore(); }; } }; }(), // ReadMore Functions End /** * -------------------------------------------------------------------------- * PricingSwitcher Functions Start * -------------------------------------------------------------------------- */ PricingSwitcher: function() { var _staticValue; var _switcher = function(check, switcher, pricing, defClass, actClass) { var value; if( check.type == 'checkbox' ) { _staticValue = check.checked; } else if( check.type == 'radio' ) { if( check.checked ) { _staticValue = check.value; } } else { _staticValue = check.value; } value = _staticValue; switcher.querySelectorAll('.pts-switch')?.forEach( function(elem) { actClass.split(" ").forEach( function(_class) { elem.classList.remove(_class); }); defClass.split(" ").forEach( function(_class) { elem.classList.add(_class); }); }); pricing.querySelectorAll('.pts-content')?.forEach( function(elem) { elem.classList.add('d-none'); }); if( check.type == 'checkbox' ) { value = value ? 'true' : 'false'; } defClass.split(" ").forEach( function(_class) { switcher.querySelector('.pts-' + value)?.classList.remove(_class); }); actClass.split(" ").forEach( function(_class) { switcher.querySelector('.pts-' + value)?.classList.add(_class); }); pricing.querySelectorAll('.pts-content-' + value).forEach( function(el) { el.classList.remove('d-none'); }); }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-pricing-switcher', event: 'pluginPricingSwitcherReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(element) { var elCheck = element.querySelectorAll('[type="checkbox"], [type="radio"], select'), elDefClass = element.getAttribute('data-default-class') || 'text-muted op-05', elActClass = element.getAttribute('data-active-class') || 'fw-bold', elPricing = document.querySelector( element.getAttribute('data-container') ); elCheck.forEach( function(el) { _switcher(el, element, elPricing, elDefClass, elActClass); el.addEventListener( 'change', function() { _switcher(el, element, elPricing, elDefClass, elActClass); }); }); }); } }; }(), // PricingSwitcher Functions End /** * -------------------------------------------------------------------------- * AjaxButton Functions Start * -------------------------------------------------------------------------- */ AjaxButton: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-ajaxbutton', event: 'pluginAjaxButtonReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(el) { el.onclick = function(e) { e.preventDefault(); var trigger = el, elLoader = el.getAttribute('data-ajax-loader'), elContainer = document.querySelector( el.getAttribute('data-ajax-container') ), elContentPlacement = el.getAttribute('data-ajax-insertion') || 'append', elTriggerHide = el.getAttribute('data-ajax-trigger-hide') || 'true', elTriggerDisable = el.getAttribute('data-ajax-trigger-disable') || 'true'; fetch(elLoader).then( function(response) { return response.text(); }).then( function(html) { var domParser = new DOMParser(); var parsedHTML = domParser.parseFromString(html, 'text/html'); if( elContentPlacement == 'append' ) { elContainer?.insertAdjacentHTML('beforeend', parsedHTML.body.innerHTML); } else { elContainer?.insertAdjacentHTML('afterbegin', parsedHTML.body.innerHTML); } if( elTriggerHide == 'true' ) { el.classList.add('d-none'); } __core.runContainerModules(elContainer); if( elTriggerDisable == 'true' ) { setTimeout( function() { trigger.onclick = function(e) { e.stopPropagation(); e.preventDefault(); return false; }; }, 1000); } }).catch( function(err) { var errorDIV = document.createElement("div"); errorDIV.classList.add( 'd-inline-block', 'text-danger', 'me-3' ); errorDIV.innerText = 'Content Cannot be Loaded!'; elContainer?.prepend( errorDIV, ': ' + err ); }); }; }); } }; }(), // AjaxButton Functions End /** * -------------------------------------------------------------------------- * VideoFacade Functions Start * -------------------------------------------------------------------------- */ VideoFacade: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-videofacade', event: 'pluginVideoFacadeReady' }); selector = __core.getSelector( selector, false ); selector.forEach( function(element) { element.onclick = function(e) { e.preventDefault(); var videoContent = element.getAttribute('data-video-html'), videoRatio = element.getAttribute('data-video-ratio') || 'ratio ratio-16x9', videoPreviewEl = element.querySelector('.video-facade-preview'), videoContentEl = element.querySelector('.video-facade-content'); videoPreviewEl.classList.add('d-none'); videoContentEl.innerHTML += videoContent; videoRatio.split(" ").forEach( function(ratioClass) { videoContentEl.classList.add(ratioClass); }); }; }); } }; }(), // VideoFacade Functions End /** * -------------------------------------------------------------------------- * SchemeToggler Functions Start * -------------------------------------------------------------------------- */ SchemeToggle: function() { var _toggle = function(element, sibling=false, action=false) { var bodyClassToggle = element.getAttribute('data-bodyclass-toggle') || 'dark'; var classAdd = element.getAttribute('data-add-class') || 'scheme-toggler-active'; var classRemove = element.getAttribute('data-remove-class') || 'scheme-toggler-active'; var htmlAdd = element.getAttribute('data-add-html'); var htmlRemove = element.getAttribute('data-remove-html'); var toggleType = element.getAttribute('data-type') || 'trigger'; var remember = element.getAttribute('data-remember') || 'false'; if( __core.contains( bodyClassToggle, __core.getVars.elBody ) ) { __core.classesFn('add', classAdd, element); __core.classesFn('remove', classRemove, element); element.classList.add('body-state-toggled'); // Set Storage if( remember == "true" && action ) { localStorage.setItem('cnvsBodyColorScheme', 'dark'); } if( 'checkbox' == toggleType && sibling ) { element.querySelector('input[type=checkbox]').checked = true; } else { if( htmlAdd ) { element.innerHTML = htmlAdd; } } } else { __core.classesFn('add', classRemove, element); __core.classesFn('remove', classAdd, element); element.classList.remove('body-state-toggled'); // Remove Storage if( remember == "true" && action ) { localStorage.removeItem('cnvsBodyColorScheme'); } if( 'checkbox' == toggleType && sibling ) { element.querySelector('input[type=checkbox]').checked = false; } else { if( htmlRemove ) { element.innerHTML = htmlRemove; } } } __base.setBSTheme(); __modules.dataClasses(); }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-schemetoggler', event: 'pluginSchemeTogglerReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ) { return false; } selector.forEach( function(element) { var bodyClassToggle = element.getAttribute('data-bodyclass-toggle') || 'dark'; var toggleType = element.getAttribute('data-type') || 'trigger'; _toggle(element); if( 'checkbox' == toggleType ) { var elementCheck = element.querySelector('input[type=checkbox]'); elementCheck.addEventListener( 'change', function() { __core.classesFn('toggle', bodyClassToggle, __core.getVars.elBody); _toggle(element, false, true); __core.siblings(element, selector).forEach( function(el) { _toggle(el, true); }); }); } else { element.onclick = function(e) { e.preventDefault(); __core.classesFn('toggle', bodyClassToggle, __core.getVars.elBody); _toggle(element, false, true); __core.siblings(element, selector).forEach( function(el) { _toggle(el, true); }); }; } }); } }; }(), // SchemeToggler Functions End /** * -------------------------------------------------------------------------- * Clipboard Functions Start * -------------------------------------------------------------------------- */ Clipboard: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof ClipboardJS !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-clipboard', event: 'pluginClipboardReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var clipboards = [], count = 0; selector.forEach( function(el) { var trigger = el.querySelector('button'), triggerText = trigger.innerHTML, copiedtext = trigger.getAttribute('data-copied') || 'Copied', copiedTimeout = trigger.getAttribute('data-copied-timeout') || 5000; clipboards[count] = new ClipboardJS( trigger, { target: function(content) { return content.closest('.clipboard-copy').querySelector('code'); } }); clipboards[count].on('success', function(e) { trigger.innerHTML = copiedtext; trigger.disabled = true; setTimeout( function() { trigger.innerHTML = triggerText; trigger.disabled = false; }, Number(copiedTimeout)); }); count++; }); }); } }; }(), // Clipboard Functions End /** * -------------------------------------------------------------------------- * CodeHighlight Functions Start * -------------------------------------------------------------------------- */ CodeHighlight: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.loadCSS({ file: 'components/prism.css', id: 'canvas-prism-css', cssFolder: true }); __core.isFuncTrue( function() { return typeof Prism !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-codehighlight', event: 'pluginCodeHighlightReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(el) { Prism.highlightElement( el.querySelector('code') ); }); }); } }; }(), // CodeHighlight Functions End /** * -------------------------------------------------------------------------- * Tips Functions Start * -------------------------------------------------------------------------- */ Tips: function() { return { init: function(selector) { __core.isFuncTrue( function() { return typeof bootstrap !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } if( typeof cnvsTips === "undefined" || cnvsTips.length < 1 ) { return false; } __core.initFunction({ class: 'has-plugin-tips', event: 'pluginTipsReady' }); var randomIndex = Math.floor(Math.random() * cnvsTips.length); var randomTip = cnvsTips[randomIndex]; var tipsEl = document.getElementById('cnvs-tips-element'); if( !tipsEl ) { var tipsHTML = '<div class="position-fixed bottom-0 end-0 p-3 text-start" style="z-index: 699;"><div id="cnvs-tips-element" data-notify-trigger="custom" data-notify-target="#cnvs-tips-element" data-notify-timeout="7777" class="toast hide p-3 bg-white" role="alert" aria-live="assertive" aria-atomic="true" style="--bs-toast-max-width:400px;--bs-toast-bg: rgba(var(--bs-body-bg-rgb),.925);"><div class="toast-header bg-transparent border-0 mb-0 align-items-center pb-1"><h5 id="cnvs-tips-element-title" class="me-auto fs-6 fw-semibold mb-0"></h5><button type="button" class="btn-close me-1" data-bs-dismiss="toast" aria-label="Close"></button></div><div id="cnvs-tips-element-content" class="toast-body small pt-1"></div><a href="#" id="cnvs-tips-element-disable" class="text-muted text-decoration-underline op-06 h-op-08 px-2 pb-2 ms-1 mt-1 d-inline-block" data-cookies="true" style="font-size:.75rem;text-underline-offset:3px;">Disable Random Tips</a></div></div>'; __core.getVars.elWrapper.insertAdjacentHTML('beforeend', tipsHTML); tipsEl = document.getElementById('cnvs-tips-element'); } var tipsTitle = document.getElementById('cnvs-tips-element-title'); var tipsContent = document.getElementById('cnvs-tips-element-content'); var tipsDisable = document.getElementById('cnvs-tips-element-disable'); var tipsEnable = document.getElementById('cnvs-tips-element-enable'); tipsTitle.innerHTML = randomTip.title; tipsContent.innerHTML = randomTip.content; if( tipsDisable ) { tipsDisable.onclick = function(e) { e.preventDefault(); var tipsToast = bootstrap.Toast.getOrCreateInstance(document.getElementById('cnvs-tips-element')); tipsToast.hide(); __core.cookie.set('__cnvs_tips_cookies', 'hide', 1); }; } if( tipsEnable ) { tipsEnable.onclick = function(e) { e.preventDefault(); __core.cookie.remove('__cnvs_tips_cookies'); window.location.reload(); }; } (function(){ var enabled = true; if( __core.cookie.get('__cnvs_tips_cookies' ) == 'hide' ) { enabled = false; } if( enabled ) { setTimeout(function(){ __modules.notifications(tipsEl); }, Math.floor(Math.random() * 5000)); } })(); }); } }; }(), // Tips Functions End /** * -------------------------------------------------------------------------- * TextSplitter Functions Start * -------------------------------------------------------------------------- */ TextSplitter: function() { var _getText = function(element) { return element.textContent || element.innerText; }; var _joiner = function(arr, joiner='span', glue=' ') { return arr.map( function(chunk) { return '<'+ joiner +'>' + chunk + '</'+ joiner +'>'; }).join(glue); }; var _words = function(element, joiner='span') { return _joiner(_getText(element).split(' '), joiner, ' '); }; var _letters = function(element, joiner='span') { return _joiner(_getText(element).split(''), joiner, ''); }; var _splitter = function(el, type = 'word') { el.innerHTML = type == 'letter' ? _letters(el) : _words(el); el.querySelectorAll('span')?.forEach( function(elem, index) { elem.style.setProperty('--cnvs-split-index', index + 1); }); }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(el) { var type = el.getAttribute('data-split-type') || 'word'; _splitter(el, type); }); } }; }(), // TextSplitter Functions End /** * -------------------------------------------------------------------------- * MediaActions Functions Start * -------------------------------------------------------------------------- */ MediaActions: function() { var _pauseEv = ['ended', 'error', 'pause', 'seeking', 'waiting']; var _playEv = ['play', 'playing', 'timeupdate']; var _volume = function(mediaEl) { var mediaWrap = mediaEl.closest('.media-wrap'); if( mediaEl.volume < 0.1 || mediaEl.muted == true ) { mediaWrap.classList.add('media-is-muted'); } else { mediaWrap.classList.remove('media-is-muted'); } }; var _time = function(duration) { var minutes = (duration / 60).toFixed(0); var seconds = (duration % 60).toFixed(0); return minutes + ':' + (seconds < 10 ? '0' + seconds : seconds); }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-mediaactions', event: 'pluginMediaActionsReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(mediaWrap) { var mediaEl = mediaWrap.querySelector('video,audio'); var mediaTrigger = mediaWrap.querySelector('.media-trigger-playback'); var volumeTrigger = mediaWrap.querySelector('.media-trigger-volume'); var mediaDuration = mediaWrap.querySelector('.media-duration'); if( !mediaEl ) { return true; } _pauseEv.forEach( function(_event) { mediaEl.addEventListener(_event, function(){ mediaWrap.classList.remove('media-is-playing'); _volume(mediaEl); }); }); _playEv.forEach( function(_event) { mediaEl.addEventListener(_event, function(){ mediaWrap.classList.add('media-is-playing'); _volume(mediaEl); if( mediaDuration ) { mediaDuration.innerHTML = _time(mediaEl.currentTime); } }); }); mediaEl.addEventListener('volumechange', function(){ _volume(mediaEl); }); var ifLoaded = setInterval( function(){ if( mediaEl.readyState === 4 ) { if( mediaDuration ) { mediaDuration.innerHTML = _time(mediaEl.duration); } clearInterval(ifLoaded); } }, 1000); if( mediaTrigger ) { mediaTrigger.onclick = function(e) { e.preventDefault(); if (mediaEl.paused) { mediaEl.play(); } else { mediaEl.pause(); } }; } if( volumeTrigger ) { volumeTrigger.onclick = function(e) { e.preventDefault(); if (mediaEl.muted) { mediaEl.muted = false; } else { mediaEl.muted = true; } }; } }); } }; }(), // MediaActions Functions End /** * -------------------------------------------------------------------------- * ViewportDetect Functions Start * -------------------------------------------------------------------------- */ ViewportDetect: function() { var _setBSTheme = function(target) { if( target.classList.contains('dark') ) { target.setAttribute('data-bs-theme', 'dark'); } else { target.removeAttribute('data-bs-theme'); } }; return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-viewportdetect', event: 'pluginViewportDetectReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(el) { var elDelay = el.getAttribute('data-delay') || 0; var elClass = el.getAttribute('data-viewport-class') || ""; var elClassOut = el.getAttribute('data-viewport-class-out') || ""; var elClassTarget = el.getAttribute('data-viewport-class-target'); var elThreshold = el.getAttribute('data-viewport-threshold') || "0"; var elRootMargin = el.getAttribute('data-viewport-rootmargin') || "0px"; elClass = elClass.split(" "); elClassOut = elClassOut.split(" "); var hasDark = false; if( elClass.includes('dark') || elClassOut.includes('dark') ) { hasDark = true; } elClassTarget = elClassTarget ? document.querySelector(elClassTarget) : false; var observer = new IntersectionObserver( function(el) { el.forEach( function(entry) { var elTarget = entry.target; if( !elClassTarget ) { elClassTarget = elTarget; } if( entry.isIntersecting ) { setTimeout( function() { elTarget.classList.add('is-in-viewport'); elClass.forEach( function(_class) { _class && elClassTarget.classList.add(_class); }); elClassOut.forEach( function(_class) { _class && elClassTarget.classList.remove(_class); }); hasDark && _setBSTheme(elClassTarget); }, Number(elDelay)); } else { elTarget.classList.remove('is-in-viewport'); elClass.forEach( function(_class) { _class && elClassTarget.classList.remove(_class); }); elClassOut.forEach( function(_class) { _class && elClassTarget.classList.add(_class); }); hasDark && _setBSTheme(elClassTarget); } }); }, { threshold: parseFloat(elThreshold), rootMargin: elRootMargin, }); observer.observe(el); }); } }; }(), // ViewportDetect Functions End /** * -------------------------------------------------------------------------- * ScrollDetect Functions Start * -------------------------------------------------------------------------- */ ScrollDetect: function() { var _detects = []; var _percent = function(params) { var percent = 0, ratio = 0, start = 0, end = 0; var onScroll = function(params) { fastdom.measure( function(){ var position = window.scrollY; if( position >= params.start && position <= params.end ) { var startViewScroll = position - params.start; var offsetScroll = position - params.offset; percent = (startViewScroll / params.range.full) * 100; start = (startViewScroll / params.range.start); if( position > (params.start + params.height) && position < (params.offset) ) { start = 1; end = 0; } else if( position >= (params.offset) ) { start = 1; end = (offsetScroll / params.range.end); } else { end = 0; } ratio = start - end; } else if( position > params.end ) { percent = 100; ratio = 0; start = end = 1; } else { percent = ratio = start = end = 0; } if( ratio > 0 ) { params.elem.classList.add('scroll-detect-inview'); } else { params.elem.classList.remove('scroll-detect-inview'); } if( start > 0 && start < 1 ) { params.elem.classList.add('scroll-detect-inview-start'); } else { params.elem.classList.remove('scroll-detect-inview-start'); } if( end > 0 && end < 1 ) { params.elem.classList.add('scroll-detect-inview-end'); } else { params.elem.classList.remove('scroll-detect-inview-end'); } params.elem.style.setProperty('--cnvs-scroll-percent', percent); params.elem.style.setProperty('--cnvs-scroll-ratio', ratio); params.elem.style.setProperty('--cnvs-scroll-start', start); params.elem.style.setProperty('--cnvs-scroll-end', end); }); }; onScroll(params); }; var _handle = function() { _detects.forEach( function(settings) { _percent(settings); }); } return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof fastdom !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-scrolldetect', event: 'pluginScrollDetectReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var resizeObserver = new ResizeObserver( function(entries) { entries.forEach( function(entry) { if( !doing ) { var doing = setTimeout( function() { initParams(selector); doing = false; }, 333); } }); }); var initParams = function(selector) { _detects = []; selector.forEach( function(elem) { var elemWidth = elem.offsetWidth, elemHeight = elem.offsetHeight, elemOffset = __core.offset(elem).top, viewportHeight = __core.getVars.viewport.height, includeWidth = elem.getAttribute('data-include-width'), includeHeight = elem.getAttribute('data-include-height'), includeOffset = elem.getAttribute('data-include-offset'), scrollOffset = elem.getAttribute('data-scroll-offset'), parallaxRatio = elem.getAttribute('data-parallax-ratio'), params = {}; if( scrollOffset ) { scrollOffset = scrollOffset.split('%'); if( scrollOffset.length > 1 ) { elemOffset = elemOffset + (viewportHeight * Number(scrollOffset[0]) * 0.01); } else if( scrollOffset.length == 1 && scrollOffset[0] ) { elemOffset = elemOffset + Number(scrollOffset[0]); } } var scrollStart = elemOffset - viewportHeight, scrollEnd = elemOffset + elemHeight, scrollRange = scrollEnd - scrollStart; params.elem = elem; params.start = scrollStart; params.end = scrollEnd; params.range = { start: elemHeight, end: elemHeight, full: scrollRange, }; params.width = elemWidth; params.height = elemHeight; params.offset = elemOffset; if( includeWidth == 'true' || (elem.classList.contains('parallax') && elem.getAttribute('data-parallax-direction') == 'horizontal') ) { elem.style.setProperty('--cnvs-scroll-width', params.width); } if( includeHeight == 'true' || (elem.classList.contains('parallax') && elem.getAttribute('data-parallax-direction') != 'horizontal') ) { elem.style.setProperty('--cnvs-scroll-height', params.height); } if( includeOffset == 'true' ) { elem.style.setProperty('--cnvs-scroll-offset', params.offset); } if( !isNaN(parallaxRatio) ) { elem.style.setProperty('--cnvs-parallax-ratio', parallaxRatio); } _percent(params); _detects.push(params); resizeObserver.observe(elem); }); }; initParams(selector); _handle(); // var ticking = false; window.addEventListener("scroll", function(){ fastdom.mutate( function(){ _handle(); }); // if (!ticking) { // window.requestAnimationFrame( function(){ // _handle(); // ticking = false; // }); // ticking = true; // } }, {passive: true}); resizeObserver.observe(document.documentElement); }); } }; }(), // ScrollDetect Functions End /** * -------------------------------------------------------------------------- * FontSizer Functions Start * -------------------------------------------------------------------------- */ FontSizer: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-fontsizer', event: 'pluginFontSizerReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(elem) { var target = elem.getAttribute('data-target'); var targetEl = document.querySelector(target); var step = elem.getAttribute('data-step') || 10; var min = elem.getAttribute('data-min') || 12; var max = elem.getAttribute('data-max') || 24; var defaultSize = Number(document.defaultView.getComputedStyle(targetEl).getPropertyValue('font-size').split('px')[0]); var percent = defaultSize * Number(step) * .01; var defaultBtn = elem.querySelector('.font-size-default'); var minusBtn = elem.querySelector('.font-size-minus'); var plusBtn = elem.querySelector('.font-size-plus'); if( defaultBtn ) { defaultBtn.onclick = function(e) { e.preventDefault(); targetEl.style.fontSize = defaultSize + 'px'; }; } if( minusBtn ) { elem.querySelector('.font-size-minus').onclick = function(e) { e.preventDefault(); var current = Number(document.defaultView.getComputedStyle(targetEl).getPropertyValue('font-size').split('px')[0]); var newSize = current - percent; if( newSize >= min ) { targetEl.style.fontSize = newSize + 'px'; } }; } if( plusBtn ) { elem.querySelector('.font-size-plus').onclick = function(e) { e.preventDefault(); var current = Number(document.defaultView.getComputedStyle(targetEl).getPropertyValue('font-size').split('px')[0]); var newSize = current + percent; if( newSize <= max ) { targetEl.style.fontSize = newSize + 'px'; } }; } }); } }; }(), // FontSizer Functions End /** * -------------------------------------------------------------------------- * Hover3D Functions Start * -------------------------------------------------------------------------- */ Hover3D: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.initFunction({ class: 'has-plugin-hover3d', event: 'pluginHover3DReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } selector.forEach( function(el) { var height = el.clientHeight; var width = el.clientWidth; el.addEventListener( 'mousemove', function(e) { var xVal = e.layerX; var yVal = e.layerY; var yRotation = 20 * ((xVal - width / 2) / width); var xRotation = -20 * ((yVal - height / 2) / height); var transform = 'perspective(500px) scale(1.1) rotateX(' + xRotation + 'deg) rotateY(' + yRotation + 'deg) rotateZ(0)'; el.style.transform = transform; }); el.addEventListener( 'mouseout', function() { el.style.transform = 'perspective(500px) scale(1) rotateX(0) rotateY(0) rotateZ(0)'; }); el.addEventListener( 'mousedown', function() { el.style.transform = 'perspective(500px) scale(0.9) rotateX(0) rotateY(0) rotateZ(0)'; }); el.addEventListener( 'mouseup', function() { el.style.transform = 'perspective(500px) scale(1.1) rotateX(0) rotateY(0) rotateZ(0)'; }); }); } }; }(), // Hover3D Functions End /** * -------------------------------------------------------------------------- * BSComponents Functions Start * -------------------------------------------------------------------------- */ BSComponents: function() { return { init: function(selector) { if( __core.getSelector(selector, false, false).length < 1 ){ return true; } __core.isFuncTrue( function() { return typeof bootstrap !== 'undefined'; }).then( function(cond) { if( !cond ) { return false; } __core.initFunction({ class: 'has-plugin-bscomponents', event: 'pluginBsComponentsReady' }); selector = __core.getSelector( selector, false ); if( selector.length < 1 ){ return true; } var tooltips = [].slice.call(__core.getVars.baseEl.querySelectorAll('[data-bs-toggle="tooltip"]')); var tooltipList = tooltips.map( function(tooltipEl) { return new bootstrap.Tooltip(tooltipEl, {container: 'body'}); }); var popovers = [].slice.call(__core.getVars.baseEl.querySelectorAll('[data-bs-toggle="popover"]')); var popoverList = popovers.map( function(popoverEl) { return new bootstrap.Popover(popoverEl, {container: 'body'}); }); var tabs = document.querySelectorAll('[data-bs-toggle="tab"],[data-bs-toggle="pill"]'); var tabTargetShow = function(target) { var tabTrigger = new bootstrap.Tab(target); tabTrigger.show(); if( __core.getVars.hash && document.querySelector('[data-bs-target="'+__core.getVars.hash+'"]') ) { setTimeout( function(){ __core.scrollTo((__core.offset(target).top - __core.getVars.topScrollOffset - 20), 0, false, 'smooth'); }, 1000); } }; document.querySelectorAll('.canvas-tabs').forEach( function(el) { var activeTab = el.getAttribute('data-active'); if( activeTab ) { activeTab = Number(activeTab) - 1; tabTargetShow(el.querySelectorAll('[data-bs-target]')[activeTab]); } }); document.querySelectorAll('.tab-hover').forEach( function(el) { el.querySelectorAll('[data-bs-target]').forEach( function(tab) { tab.addEventListener( 'mouseenter', function() { tabTargetShow(tab); }); }); }); if( __core.getVars.hash && document.querySelector('[data-bs-target="'+__core.getVars.hash+'"]') ) { tabTargetShow(document.querySelector('[data-bs-target="'+__core.getVars.hash+'"]')); } tabs.forEach( function(el) { el.addEventListener('shown.bs.tab', function(e) { if( !el.classList.contains('container-modules-loaded') ) { var tabContent = el.getAttribute('data-bs-target') ? el.getAttribute('data-bs-target') : el.getAttribute('href'); __core.runContainerModules(document.querySelector(tabContent)); document.querySelector(tabContent).querySelectorAll('.flexslider').forEach( function(flex) { setTimeout( function() { jQuery(flex).find('.slide').resize(); }, 500); }); el.classList.add('container-modules-loaded'); } }); }); document.querySelectorAll('.style-msg .btn-close').forEach( function(el) { el.onclick = function(e) { e.preventDefault(); el.closest( '.style-msg' ).classList.add('d-none'); }; }); }); } }; }(), // BSComponents Functions End }; })));
© 2022 - 2023 WIBUHAXOR V1 By Lutfifakee || Padang Blackhat