KeymailSpecials2/wwwroot/js/functions.js

1317 lines
36 KiB
JavaScript

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;
},
runModule: function(params) {
var pluginName = (params.plugin).toLowerCase();
var moduleFile = options.jsFolder + 'modules/' + pluginName + '.js';
if( params.file ) {
moduleFile = params.file;
}
var pluginCheck = function() {
return typeof CNVS[params.plugin] !== 'undefined';
};
if( !pluginCheck() ) {
Core.loadJS({ file: moduleFile, id: 'canvas-' + pluginName + '-fn' });
Core.isFuncTrue(pluginCheck).then( function(cond) {
if( !cond ) {
return false;
}
CNVS[params.plugin].init(params.selector);
});
} else {
CNVS[params.plugin].init(params.selector);
}
return true;
},
initModule: function(params) {
if( 'dependent' != params.selector ) {
if( typeof params.selector === 'object' ) {
if( params.selector instanceof jQuery ){
params.selector = params.selector[0];
}
var _el = params.selector;
} else {
var _el = Core.getVars.baseEl.querySelectorAll( params.selector );
}
if( _el.length < 1 ) {
return false;
}
}
var required = true;
var dependentActive = true;
if( params.required && Array.isArray( params.required ) ) {
var requireAll = {};
params.required.forEach( function(req) {
return requireAll[req.plugin] = !req.fn() ? false : true;
});
params.required.forEach( function(req) {
if( !req.fn() ) {
required = false;
var getjQuery = async function() {
Core.loadJS({ file: req.file, id: req.id });
var funcAvailable = new Promise( function(resolve) {
var int = setInterval( function() {
if( req.fn() ) {
requireAll[req.plugin] = true;
var allTrue = Object.values(requireAll).every( function(value) {
return value === true;
});
if( allTrue ) {
clearInterval(int);
resolve(true);
}
}
}, 333);
});
required = await funcAvailable;
Core.runModule( params );
}();
}
});
}
if( typeof params.dependency !== 'undefined' && typeof params.dependency === 'function' ) {
dependentActive = false;
var runDependent = async function() {
var depAvailable = new Promise( function(resolve) {
if( params.dependency.call( params, 'dependent' ) == true ) {
resolve(true);
}
});
return await depAvailable;
};
dependentActive = runDependent();
}
if( required && dependentActive ) {
Core.runModule( params );
}
return true;
},
topScrollOffset: function() {
var headerHeight = 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') ) {
headerHeight = vars.elHeaderWrap.offsetHeight;
}
if( vars.elPageMenu?.classList.contains('dots-menu') || !vars.elPageMenu?.classList.contains('sticky-page-menu') ) {
pageMenuOffset = 0;
}
}
Core.getVars.topScrollOffset = headerHeight + pageMenuOffset + 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() {
return Core.initModule({ selector: '#gotoTop', plugin: 'GoToTop' });
},
stickFooterOnSmall: function() {
return Core.initModule({ selector: '#footer', plugin: 'StickFooterOnSmall' });
},
logo: function() {
return Core.initModule({ selector: '#logo', plugin: 'Logo' });
},
headers: function() {
Core.getVars.headerClasses = vars.elHeader?.className || '';
Core.getVars.headerWrapClasses = vars.elHeaderWrap?.className || '';
return Core.initModule({ selector: '#header', plugin: 'Headers' });
},
menus: function() {
return Core.initModule({ selector: '#header', plugin: 'Menus' });
},
pageMenu: function() {
return Core.initModule({ selector: '#page-menu', plugin: 'PageMenu' });
},
sliderDimensions: function() {
return Core.initModule({ selector: '.slider-element', plugin: 'SliderDimensions' });
},
sliderMenuClass: function() {
return Core.initModule({ selector: '.transparent-header + .swiper_wrapper,.swiper_wrapper + .transparent-header,.transparent-header + .revslider-wrap,.revslider-wrap + .transparent-header', plugin: 'SliderMenuClass' });
},
topSearch: function() {
return Core.initModule({ selector: '#top-search-trigger', plugin: 'TopSearch' });
},
topCart: function() {
return Core.initModule({ selector: '#top-cart', plugin: 'TopCart' });
},
sidePanel: function() {
return Core.initModule({ selector: '#side-panel', plugin: 'SidePanel' });
},
adaptiveColorScheme: function() {
return Core.initModule({ selector: '.adaptive-color-scheme', plugin: 'AdaptiveColorScheme' });
},
portfolioAjax: function() {
return Core.initModule({ selector: '.portfolio-ajax', plugin: 'PortfolioAjax' });
},
cursor: function() {
if( vars.customCursor ) {
return Core.initModule({ selector: 'body', plugin: 'Cursor' });
}
},
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 {
easing: function() {
return Core.initModule({ selector: '[data-easing]', plugin: 'Easing', required: [ vars.required.jQuery ] });
},
bootstrap: function() {
var notExec = true;
document.querySelectorAll('*').forEach( function(el) {
if( notExec ) {
el.getAttributeNames().some( function(text) {
if( text.includes('data-bs') ) {
notExec = false;
return Core.initModule({ selector: 'body', plugin: 'Bootstrap' });
}
});
}
});
},
resizeVideos: function(element) {
return Core.initModule({ selector: element ? element : 'iframe[src*="youtube"],iframe[src*="vimeo"],iframe[src*="dailymotion"],iframe[src*="maps.google.com"],iframe[src*="google.com/maps"]', plugin: 'ResizeVideos', required: [ vars.required.jQuery ] });
},
pageTransition: function() {
if( vars.pageTransition ) {
return Core.initModule({ selector: 'body', plugin: 'PageTransition' });
}
},
lazyLoad: function(element) {
return Core.initModule({ selector: element ? element : '.lazy:not(.lazy-loaded)', plugin: 'LazyLoad' });
},
dataClasses: function() {
return Core.initModule({ selector: '[data-class]', plugin: 'DataClasses' });
},
dataHeights: function() {
return Core.initModule({ selector: '[data-height-xxl],[data-height-xl],[data-height-lg],[data-height-md],[data-height-sm],[data-height-xs]', plugin: 'DataHeights' });
},
lightbox: function(element) {
return Core.initModule({ selector: element ? element : '[data-lightbox]', plugin: 'Lightbox', required: [ vars.required.jQuery ] });
},
modal: function(element) {
return Core.initModule({ selector: element ? element : '.modal-on-load', plugin: 'Modal', required: [ vars.required.jQuery ] });
},
animations: function(element) {
return Core.initModule({ selector: element ? element : '[data-animate]', plugin: 'Animations' });
},
hoverAnimations: function(element) {
return Core.initModule({ selector: element ? element : '[data-hover-animate]', plugin: 'HoverAnimations' });
},
gridInit: function(element) {
return Core.initModule({ selector: element ? element : '.grid-container', plugin: 'Grid', required: [ vars.required.jQuery ] });
},
filterInit: function(element) {
return Core.initModule({ selector: element ? element : '.grid-filter,.custom-filter', plugin: 'Filter', required: [ vars.required.jQuery ] });
},
canvasSlider: function(element) {
return Core.initModule({ selector: element ? element : '.swiper_wrapper', plugin: 'CanvasSlider' });
},
sliderParallax: function() {
return Core.initModule({ selector: '.slider-parallax', plugin: 'SliderParallax' });
},
flexSlider: function(element) {
return Core.initModule({ selector: element ? element : '.fslider', plugin: 'FlexSlider', required: [ vars.required.jQuery ] });
},
html5Video: function(element) {
return Core.initModule({ selector: element ? element : '.video-wrap', plugin: 'FullVideo' });
},
youtubeBgVideo: function(element) {
return Core.initModule({ selector: element ? element : '.yt-bg-player', plugin: 'YoutubeBG', required: [ vars.required.jQuery ] });
},
toggle: function(element) {
return Core.initModule({ selector: element ? element : '.toggle', plugin: 'Toggle', required: [ vars.required.jQuery ] });
},
accordion: function(element) {
return Core.initModule({ selector: element ? element : '.accordion', plugin: 'Accordion', required: [ vars.required.jQuery ] });
},
counter: function(element) {
return Core.initModule({ selector: element ? element : '.counter', plugin: 'Counter', required: [ vars.required.jQuery ] });
},
countdown: function(element) {
return Core.initModule({ selector: element ? element : '.countdown', plugin: 'Countdown', required: [ vars.required.jQuery ] });
},
gmap: function(element) {
return Core.initModule({ selector: element ? element : '.gmap', plugin: 'GoogleMaps', required: [ vars.required.jQuery ] });
},
roundedSkills: function(element) {
return Core.initModule({ selector: element ? element : '.rounded-skill', plugin: 'RoundedSkills', required: [ vars.required.jQuery ] });
},
progress: function(element) {
return Core.initModule({ selector: element ? element : '.skill-progress', plugin: 'Progress' });
},
twitterFeed: function(element) {
return Core.initModule({ selector: element ? element : '.twitter-feed', plugin: 'Twitter', required: [ vars.required.jQuery ] });
},
flickrFeed: function(element) {
return Core.initModule({ selector: element ? element : '.flickr-feed', plugin: 'Flickr', required: [ vars.required.jQuery ] });
},
instagram: function(element) {
return Core.initModule({ selector: element ? element : '.instagram-photos', plugin: 'Instagram' });
},
// Dribbble Pending
navTree: function(element) {
return Core.initModule({ selector: element ? element : '.nav-tree', plugin: 'NavTree', required: [ vars.required.jQuery ] });
},
carousel: function(element) {
return Core.initModule({ selector: element ? element : '.carousel-widget', plugin: 'Carousel', required: [ vars.required.jQuery ] });
},
masonryThumbs: function(element) {
return Core.initModule({ selector: element ? element : '.masonry-thumbs', plugin: 'MasonryThumbs', required: [ vars.required.jQuery ] });
},
notifications: function(element) {
return Core.initModule({ selector: element ? element : false, plugin: 'Notifications', required: [ vars.required.jQuery ] });
},
textRotator: function(element) {
return Core.initModule({ selector: element ? element : '.text-rotater', plugin: 'TextRotator', required: [ vars.required.jQuery ] });
},
onePage: function(element) {
return Core.initModule({ selector: element ? element : '[data-scrollto],.one-page-menu', plugin: 'OnePage' });
},
ajaxForm: function(element) {
return Core.initModule({ selector: element ? element : '.form-widget', plugin: 'AjaxForm', required: [ vars.required.jQuery ] });
},
subscribe: function(element) {
return Core.initModule({ selector: element ? element : '.subscribe-widget', plugin: 'Subscribe', required: [ vars.required.jQuery ] });
},
conditional: function(element) {
return Core.initModule({ selector: element ? element : '.form-group[data-condition],.form-group[data-conditions]', plugin: 'Conditional' });
},
shapeDivider: function(element) {
return Core.initModule({ selector: element ? element : '.shape-divider', plugin: 'ShapeDivider' });
},
stickySidebar: function(element) {
return Core.initModule({ selector: element ? element : '.sticky-sidebar-wrap', plugin: 'StickySidebar', required: [ vars.required.jQuery ] });
},
cookies: function(element) {
return Core.initModule({ selector: element ? element : '.gdpr-settings,[data-cookies]', plugin: 'Cookies' });
},
quantity: function(element) {
return Core.initModule({ selector: element ? element : '.quantity', plugin: 'Quantity' });
},
readmore: function(element) {
return Core.initModule({ selector: element ? element : '[data-readmore]', plugin: 'ReadMore' });
},
pricingSwitcher: function(element) {
return Core.initModule({ selector: element ? element : '.pricing-tenure-switcher', plugin: 'PricingSwitcher' });
},
ajaxTrigger: function(element) {
return Core.initModule({ selector: element ? element : '[data-ajax-loader]', plugin: 'AjaxTrigger' });
},
videoFacade: function(element) {
return Core.initModule({ selector: element ? element : '.video-facade', plugin: 'VideoFacade' });
},
schemeToggle: function(element) {
return Core.initModule({ selector: element ? element : '.body-scheme-toggle', plugin: 'SchemeToggle' });
},
clipboardCopy: function(element) {
return Core.initModule({ selector: element ? element : '.clipboard-copy', plugin: 'Clipboard' });
},
codeHighlight: function(element) {
return Core.initModule({ selector: element ? element : '.code-highlight', plugin: 'CodeHighlight' });
},
tips: function() {
if( vars.tips ) {
return Core.initModule({ selector: 'body', plugin: 'Tips' });
}
},
textSplitter: function(element) {
return Core.initModule({ selector: element ? element : '.text-splitter', plugin: 'TextSplitter' });
},
mediaActions: function(element) {
return Core.initModule({ selector: element ? element : '.media-wrap', plugin: 'MediaActions' });
},
viewportDetect: function(element) {
return Core.initModule({ selector: element ? element : '.viewport-detect', plugin: 'ViewportDetect' });
},
scrollDetect: function(element) {
return Core.initModule({ selector: element ? element : '.scroll-detect', plugin: 'ScrollDetect' });
},
fontSizer: function(element) {
return Core.initModule({ selector: element ? element : '.font-sizer', plugin: 'FontSizer' });
},
hover3D: function(element) {
return Core.initModule({ selector: element ? element : '.hover-3d', plugin: 'Hover3D' });
},
buttons: function(element) {
return Core.initModule({ selector: element ? element : '.button-text-effect', plugin: 'Buttons' });
},
bsComponents: function(element) {
return Core.initModule({ selector: element ? element : '[data-bs-toggle="tooltip"],[data-bs-toggle="popover"],[data-bs-toggle="tab"],[data-bs-toggle="pill"],.style-msg', plugin: 'BSComponents' });
}
};
}();
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;
}
return {};
})));