first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 22:06:07 +03:00
commit 5ad37467cf
475 changed files with 33476 additions and 0 deletions

231
public/assets/js/aos.js Normal file
View File

@@ -0,0 +1,231 @@
/**
* *******************************************************
* AOS (Animate on scroll) - wowjs alternative
* made to animate elements on scroll in both directions
* *******************************************************
*/
import styles from '../../sass/aos.scss';
// Modules & helpers
import throttle from 'lodash.throttle';
import debounce from 'lodash.debounce';
import observer from './libs/observer';
import detect from './helpers/detector';
import handleScroll from './helpers/handleScroll';
import prepare from './helpers/prepare';
import elements from './helpers/elements';
/**
* Private variables
*/
let $aosElements = [];
let initialized = false;
/**
* Default options
*/
let options = {
offset: 120,
delay: 0,
easing: 'ease',
duration: 400,
disable: false,
once: false,
mirror: false,
anchorPlacement: 'top-bottom',
startEvent: 'DOMContentLoaded',
animatedClassName: 'aos-animate',
initClassName: 'aos-init',
useClassNames: false,
disableMutationObserver: false,
throttleDelay: 99,
debounceDelay: 50
};
// Detect not supported browsers (<=IE9)
// http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
const isBrowserNotSupported = () => document.all && !window.atob;
const initializeScroll = function initializeScroll() {
// Extend elements objects in $aosElements with their positions
$aosElements = prepare($aosElements, options);
// Perform scroll event, to refresh view and show/hide elements
handleScroll($aosElements);
/**
* Handle scroll event to animate elements on scroll
*/
window.addEventListener(
'scroll',
throttle(() => {
handleScroll($aosElements, options.once);
}, options.throttleDelay)
);
return $aosElements;
};
/**
* Refresh AOS
*/
const refresh = function refresh(initialize = false) {
// Allow refresh only when it was first initialized on startEvent
if (initialize) initialized = true;
if (initialized) initializeScroll();
};
/**
* Hard refresh
* create array with new elements and trigger refresh
*/
const refreshHard = function refreshHard() {
$aosElements = elements();
if (isDisabled(options.disable) || isBrowserNotSupported()) {
return disable();
}
refresh();
};
/**
* Disable AOS
* Remove all attributes to reset applied styles
*/
const disable = function() {
$aosElements.forEach(function(el, i) {
el.node.removeAttribute('data-aos');
el.node.removeAttribute('data-aos-easing');
el.node.removeAttribute('data-aos-duration');
el.node.removeAttribute('data-aos-delay');
if (options.initClassName) {
el.node.classList.remove(options.initClassName);
}
if (options.animatedClassName) {
el.node.classList.remove(options.animatedClassName);
}
});
};
/**
* Check if AOS should be disabled based on provided setting
*/
const isDisabled = function(optionDisable) {
return (
optionDisable === true ||
(optionDisable === 'mobile' && detect.mobile()) ||
(optionDisable === 'phone' && detect.phone()) ||
(optionDisable === 'tablet' && detect.tablet()) ||
(typeof optionDisable === 'function' && optionDisable() === true)
);
};
/**
* Initializing AOS
* - Create options merging defaults with user defined options
* - Set attributes on <body> as global setting - css relies on it
* - Attach preparing elements to options.startEvent,
* window resize and orientation change
* - Attach function that handle scroll and everything connected to it
* to window scroll event and fire once document is ready to set initial state
*/
const init = function init(settings) {
options = Object.assign(options, settings);
// Create initial array with elements -> to be fullfilled later with prepare()
$aosElements = elements();
/**
* Disable mutation observing if not supported
*/
if (!options.disableMutationObserver && !observer.isSupported()) {
console.info(`
aos: MutationObserver is not supported on this browser,
code mutations observing has been disabled.
You may have to call "refreshHard()" by yourself.
`);
options.disableMutationObserver = true;
}
/**
* Observe [aos] elements
* If something is loaded by AJAX
* it'll refresh plugin automatically
*/
if (!options.disableMutationObserver) {
observer.ready('[data-aos]', refreshHard);
}
/**
* Don't init plugin if option `disable` is set
* or when browser is not supported
*/
if (isDisabled(options.disable) || isBrowserNotSupported()) {
return disable();
}
/**
* Set global settings on body, based on options
* so CSS can use it
*/
document
.querySelector('body')
.setAttribute('data-aos-easing', options.easing);
document
.querySelector('body')
.setAttribute('data-aos-duration', options.duration);
document.querySelector('body').setAttribute('data-aos-delay', options.delay);
/**
* Handle initializing
*/
if (['DOMContentLoaded', 'load'].indexOf(options.startEvent) === -1) {
// Listen to options.startEvent and initialize AOS
document.addEventListener(options.startEvent, function() {
refresh(true);
});
} else {
window.addEventListener('load', function() {
refresh(true);
});
}
if (
options.startEvent === 'DOMContentLoaded' &&
['complete', 'interactive'].indexOf(document.readyState) > -1
) {
// Initialize AOS if default startEvent was already fired
refresh(true);
}
/**
* Refresh plugin on window resize or orientation change
*/
window.addEventListener(
'resize',
debounce(refresh, options.debounceDelay, true)
);
window.addEventListener(
'orientationchange',
debounce(refresh, options.debounceDelay, true)
);
return $aosElements;
};
/**
* Export Public API
*/
export default {
init,
refresh,
refreshHard
};

File diff suppressed because one or more lines are too long

7
public/assets/js/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/assets/js/jquery-3-6-0.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,114 @@
/**
* jQuery Line Progressbar
* Author: KingRayhan<rayhan095@gmail.com>
* Author URL: https://electronthemes.com
* Version: 1.1.2
*/
;(function($) {
'use strict'
$.fn.LineProgressbar = function(options) {
options = $.extend(
{
percentage: 100,
ShowProgressCount: true,
duration: 1000,
unit: '%',
animation: true,
// Styling Options
fillBackgroundColor: '#3498db',
backgroundColor: '#EEEEEE',
radius: '10px',
height: '10px',
width: '100%',
},
options
)
$.options = options
return this.each(function(index, el) {
// Markup
if ($(el).data("progress-init") === undefined)
$(el).data("progress-init", options.percentage);
let elementProgress = $(el).data("progress-init");
if (elementProgress === options.percentage) {
$(el).html(
'<div class="percentCount"></div><div class="progressbar"><div class="proggress"></div></div>'
)
}
var progressFill = $(el).find('.proggress')
var progressBar = $(el).find('.progressbar')
progressFill.css({
backgroundColor: options.fillBackgroundColor,
height: options.height,
borderRadius: options.radius,
})
progressBar.css({
width: options.width,
backgroundColor: options.backgroundColor,
borderRadius: options.radius,
})
/**
* Progress with animation
*/
if (options.animation) {
// Progressing
progressFill.animate(
{
width: options.percentage + '%',
},
{
step: function(x) {
if (options.ShowProgressCount) {
$(el)
.find('.percentCount')
.text(Math.round(x) + options.unit)
}
},
duration: options.duration,
}
)
} else {
// Without animation
progressFill.css('width', options.percentage + '%')
$(el)
.find('.percentCount')
.text(Math.round(options.percentage) + '%')
}
})
}
})(jQuery)
$('[line-progressbar]').each(function() {
var $this = $(this)
function LineProgressing() {
$this.LineProgressbar({
percentage: $this.data('percentage'),
unit: $this.data('unit'),
animation: $this.data('animation'),
ShowProgressCount: $this.data('showcount'),
duration: $this.data('duration'),
fillBackgroundColor: $this.data('progress-color'),
backgroundColor: $this.data('bg-color'),
radius: $this.data('radius'),
height: $this.data('height'),
width: $this.data('width'),
})
}
var loadOnce = 0
$this.waypoint(
function() {
loadOnce += 1
if (loadOnce < 2) {
LineProgressing()
}
},
{ offset: '100%', triggerOnce: true }
)
})

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,190 @@
/* jQuery Nice Select - v1.1.0
https://github.com/hernansartorio/jquery-nice-select
Made by Hernán Sartorio */
(function($) {
$.fn.niceSelect = function(method) {
// Methods
if (typeof method == 'string') {
if (method == 'update') {
this.each(function() {
var $select = $(this);
var $dropdown = $(this).next('.nice-select');
var open = $dropdown.hasClass('open');
if ($dropdown.length) {
$dropdown.remove();
create_nice_select($select);
if (open) {
$select.next().trigger('click');
}
}
});
} else if (method == 'destroy') {
this.each(function() {
var $select = $(this);
var $dropdown = $(this).next('.nice-select');
if ($dropdown.length) {
$dropdown.remove();
$select.css('display', '');
}
});
if ($('.nice-select').length == 0) {
$(document).off('.nice_select');
}
} else {
console.log('Method "' + method + '" does not exist.')
}
return this;
}
// Hide native select
this.hide();
// Create custom markup
this.each(function() {
var $select = $(this);
if (!$select.next().hasClass('nice-select')) {
create_nice_select($select);
}
});
function create_nice_select($select) {
$select.after($('<div></div>')
.addClass('nice-select')
.addClass($select.attr('class') || '')
.addClass($select.attr('disabled') ? 'disabled' : '')
.attr('tabindex', $select.attr('disabled') ? null : '0')
.html('<span class="current"></span><ul class="list"></ul>')
);
var $dropdown = $select.next();
var $options = $select.find('option');
var $selected = $select.find('option:selected');
$dropdown.find('.current').html($selected.data('display') || $selected.text());
$options.each(function(i) {
var $option = $(this);
var display = $option.data('display');
$dropdown.find('ul').append($('<li></li>')
.attr('data-value', $option.val())
.attr('data-display', (display || null))
.addClass('option' +
($option.is(':selected') ? ' selected' : '') +
($option.is(':disabled') ? ' disabled' : ''))
.html($option.text())
);
});
}
/* Event listeners */
// Unbind existing events in case that the plugin has been initialized before
$(document).off('.nice_select');
// Open/close
$(document).on('click.nice_select', '.nice-select', function(event) {
var $dropdown = $(this);
$('.nice-select').not($dropdown).removeClass('open');
$dropdown.toggleClass('open');
if ($dropdown.hasClass('open')) {
$dropdown.find('.option');
$dropdown.find('.focus').removeClass('focus');
$dropdown.find('.selected').addClass('focus');
} else {
$dropdown.focus();
}
});
// Close when clicking outside
$(document).on('click.nice_select', function(event) {
if ($(event.target).closest('.nice-select').length === 0) {
$('.nice-select').removeClass('open').find('.option');
}
});
// Option click
$(document).on('click.nice_select', '.nice-select .option:not(.disabled)', function(event) {
var $option = $(this);
var $dropdown = $option.closest('.nice-select');
$dropdown.find('.selected').removeClass('selected');
$option.addClass('selected');
var text = $option.data('display') || $option.text();
$dropdown.find('.current').text(text);
$dropdown.prev('select').val($option.data('value')).trigger('change');
});
// Keyboard events
$(document).on('keydown.nice_select', '.nice-select', function(event) {
var $dropdown = $(this);
var $focused_option = $($dropdown.find('.focus') || $dropdown.find('.list .option.selected'));
// Space or Enter
if (event.keyCode == 32 || event.keyCode == 13) {
if ($dropdown.hasClass('open')) {
$focused_option.trigger('click');
} else {
$dropdown.trigger('click');
}
return false;
// Down
} else if (event.keyCode == 40) {
if (!$dropdown.hasClass('open')) {
$dropdown.trigger('click');
} else {
var $next = $focused_option.nextAll('.option:not(.disabled)').first();
if ($next.length > 0) {
$dropdown.find('.focus').removeClass('focus');
$next.addClass('focus');
}
}
return false;
// Up
} else if (event.keyCode == 38) {
if (!$dropdown.hasClass('open')) {
$dropdown.trigger('click');
} else {
var $prev = $focused_option.prevAll('.option:not(.disabled)').first();
if ($prev.length > 0) {
$dropdown.find('.focus').removeClass('focus');
$prev.addClass('focus');
}
}
return false;
// Esc
} else if (event.keyCode == 27) {
if ($dropdown.hasClass('open')) {
$dropdown.trigger('click');
}
// Tab
} else if (event.keyCode == 9) {
if ($dropdown.hasClass('open')) {
return false;
}
}
});
// Detect CSS pointer-events support, for IE <= 10. From Modernizr.
var style = document.createElement('a').style;
style.cssText = 'pointer-events:auto';
if (style.pointerEvents !== 'auto') {
$('html').addClass('no-csspointerevents');
}
return this;
};
}(jQuery));

470
public/assets/js/main.js Normal file
View File

@@ -0,0 +1,470 @@
(function ($) {
$(document).ready(function () {
//mobile menu active
if ($("#mobile-menu").length > 0) {
//Mobile menu
$("#mobile-menu").meanmenu({
meanMenuContainer: ".mobile-menu",
meanScreenWidth: "991",
});
$(".mobile-menu-bar").on("click", function () {
$(".sidebar-main").addClass("active");
});
$(".sidebar-close").on("click", function () {
$(".sidebar-main").removeClass("active");
});
}
//Video poppup
if ($(".play-btn").length > 0) {
$(".play-btn").magnificPopup({
type: "iframe",
});
}
//Post gallary slider
const blog_gallary = $(".gallary-slider");
if (blog_gallary.length > 0) {
//Blog Gallary
blog_gallary.owlCarousel({
loop: true,
autoHeight: true,
nav: true,
navText: [
"<i class='fa-solid fa-angle-left'></i>",
"<i class='fa-solid fa-angle-right'></i>",
],
dots: false,
items: 1,
});
}
// sticky header active
if ($("#header").length > 0) {
$(window).on("scroll", function (event) {
var scroll = $(window).scrollTop();
if (scroll < 1) {
$("#header").removeClass("sticky");
} else {
$("#header").addClass("sticky");
}
});
}
//demo sidebar active
const demosIcon = $("#demosIcon, .demos");
const demoSidebar = $("#demo-sidebar");
demosIcon.on("click", function (e) {
e.preventDefault();
demoSidebar.toggleClass("active-sidebar");
});
});
// pricing-plan-tab
$("#ce-toggle").click(function (event) {
$(".plan-toggle-wrap").toggleClass("active");
});
$("#ce-toggle").change(function () {
if ($(this).is(":checked")) {
$(".tab-content #yearly").hide();
$(".tab-content #monthly").show();
} else {
$(".tab-content #yearly").show();
$(".tab-content #monthly").hide();
}
});
// owl-carousel-brend-logo
$(".our-brnad-logos").owlCarousel({
loop: true,
margin: 10,
nav: false,
dots: false,
autoplay: true,
autoplayTimeout: 3000,
responsive: {
0: {
items: 1,
},
600: {
items: 3,
},
1000: {
items: 6,
},
},
});
// owl-carousel-slider
$(".trusred-slider-all").owlCarousel({
loop: true,
margin: 10,
nav: false,
dote: true,
//autoplay: true,
// autoplayTimeout: 3000,
items: 1,
});
// owl-carousel-slider
$(".citi-slider-all").owlCarousel({
loop: true,
margin: 10,
nav: true,
dots: false,
navText: [
"<i class='fa-solid fa-arrow-left'></i>",
"<i class='fa-solid fa-arrow-right'></i>",
],
responsive: {
0: {
items: 1,
},
900: {
items: 3.4,
},
},
});
// about team
$(".about-team-slider-all").owlCarousel({
loop: false,
margin: 10,
nav: true,
dots: false,
navText: [
"<i class='fa-solid fa-arrow-left'></i>",
"<i class='fa-solid fa-arrow-right'></i>",
],
responsive: {
0: {
items: 1,
},
900: {
items: 4,
},
},
});
// owl-carousel-slider-home5
$(".home5-slider").owlCarousel({
loop: true,
margin: 10,
nav: false,
dots: false,
responsive: {
0: {
items: 1,
},
900: {
items: 3,
},
},
});
// sticky header active
if ($("#header").length > 0) {
$(window).on("scroll", function (event) {
var scroll = $(window).scrollTop();
if (scroll < 1) {
$("#header").removeClass("sticky");
} else {
$("#header").addClass("sticky");
}
});
}
$(".liting-slider-all").owlCarousel({
loop: true,
margin: 10,
nav: true,
dots: false,
navText: [
"<i class='fa-solid fa-arrow-left'></i>",
"<i class='fa-solid fa-arrow-right'></i>",
],
responsive: {
0: {
items: 1,
},
900: {
items: 3,
},
},
});
$(".porpertice-slider").owlCarousel({
loop: true,
margin: 10,
nav: true,
dots: false,
navText: [
"<i class='fa-solid fa-arrow-left'></i>",
"<i class='fa-solid fa-arrow-right'></i>",
],
responsive: {
0: {
items: 1,
},
900: {
items: 4,
},
},
});
$(".about-slider-all").owlCarousel({
loop: true,
margin: 10,
nav: false,
dots: true,
responsive: {
0: {
items: 1,
},
900: {
items: 2,
},
},
});
$(".fearuted-carousel-area").owlCarousel({
loop: true,
margin: 10,
nav: true,
dots: false,
smartSpeed:1000,
navText: [
"<i class='fa-solid fa-angle-left'></i>",
"<i class='fa-solid fa-angle-right'></i>",
],
responsive: {
0: {
items: 1,
},
900: {
items: 1,
},
},
});
//liting-slider
$(".property-slides-js").slick({
centerMode: false,
margin: "30",
slidesToShow: 3,
arrows: true,
prevArrow: $(".testimonial-prev-arrow1"),
nextArrow: $(".testimonial-next-arrow1"),
draggable: false,
responsive: [
{
breakpoint: 768,
settings: {
arrows: false,
centerMode: true,
centerPadding: "40px",
slidesToShow: 3,
},
},
{
breakpoint: 480,
settings: {
arrows: false,
centerMode: true,
centerPadding: "40px",
slidesToShow: 1,
},
},
],
});
//liting-slider2
$(".property-slides-js2").slick({
centerMode: false,
margin: "30",
slidesToShow: 3,
arrows: true,
prevArrow: $(".testimonial-prev-arrow2"),
nextArrow: $(".testimonial-next-arrow2"),
draggable: false,
responsive: [
{
breakpoint: 768,
settings: {
arrows: false,
centerMode: true,
centerPadding: "40px",
slidesToShow: 3,
},
},
{
breakpoint: 480,
settings: {
arrows: false,
centerMode: true,
centerPadding: "40px",
slidesToShow: 1,
},
},
],
});
// home4-header-video
new ModalVideo(".video-play-button2");
new ModalVideo(".videoplybtn");
// pricing-plan-tab
$("#ce-toggle").click(function (event) {
$(".plan-toggle-wrap").toggleClass("active");
});
$("#ce-toggle").change(function () {
if ($(this).is(":checked")) {
$(".tab-content #yearly").hide();
$(".tab-content #monthly").show();
} else {
$(".tab-content #yearly").show();
$(".tab-content #monthly").hide();
}
});
// nice-select
// $("select").niceSelect();
// page-progress
// var progressPath = document.querySelector(".progress-wrap path");
// if (progressPath) {
// var pathLength = progressPath.getTotalLength();
// progressPath.style.transition = progressPath.style.WebkitTransition =
// "none";
// progressPath.style.strokeDasharray = pathLength + " " + pathLength;
// progressPath.style.strokeDashoffset = pathLength;
// progressPath.getBoundingClientRect();
// progressPath.style.transition = progressPath.style.WebkitTransition =
// "stroke-dashoffset 10ms linear";
// var updateProgress = function () {
// var scroll = $(window).scrollTop();
// var height = $(document).height() - $(window).height();
// var progress = pathLength - (scroll * pathLength) / height;
// progressPath.style.strokeDashoffset = progress;
// };
// updateProgress();
// $(window).scroll(updateProgress);
// var offset = 50;
// var duration = 550;
// jQuery(window).on("scroll", function () {
// if (jQuery(this).scrollTop() > offset) {
// jQuery(".progress-wrap").addClass("active-progress");
// } else {
// jQuery(".progress-wrap").removeClass("active-progress");
// }
// });
// jQuery(".progress-wrap").on("click", function (event) {
// event.preventDefault();
// jQuery("html, body").animate({ scrollTop: 0 }, duration);
// return false;
// });
// }
// nice-select
$("select").niceSelect();
AOS.init({
offset: 200,
duration: 400,
easing: "ease-in-out",
anchorPlacement: "top-bottom",
disable: "mobile",
});
// preloader
$(window).on("load", function (event) {
setTimeout(function () {
$("#preloader").fadeToggle();
}, 1500);
});
//Product slider
// $(".product-slider-single").slick({
// slidesToShow: 1,
// slidesToScroll: 1,
// asNavFor: ".product-slider-nav",
// dots: false,
// arrows: false,
// centerMode: false,
// focusOnSelect: true,
// });
// $(".product-slider-nav").slick({
// slidesToShow: 5,
// slidesToScroll: 1,
// arrows: false,
// focusOnSelect: true,
// asNavFor: ".product-slider-single",
// });
//Product slider
$(".product-slider-single").slick({
slidesToShow: 1,
slidesToScroll: 1,
asNavFor: ".product-slider-nav",
dots: false,
arrows: false,
centerMode: false,
focusOnSelect: true,
});
$(".product-slider-nav").slick({
slidesToShow: 5,
slidesToScroll: 1,
arrows: false,
focusOnSelect: true,
asNavFor: ".product-slider-single",
});
})(jQuery);
// nice-select
// $("select").niceSelect();
// line progress bar
let progress = $('#progress1').LineProgressbar({
percentage: 96
});
let progress2 = $('#progress2').LineProgressbar({
percentage: 96
});
let progress3 = $('#progress3').LineProgressbar({
percentage: 100
});

View File

@@ -0,0 +1,286 @@
/*!
* jQuery meanMenu v2.0.8
* @Copyright (C) 2012-2014 Chris Wharton @ MeanThemes (https://github.com/meanthemes/meanMenu)
*
*/
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
* HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR
* FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE
* OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
* COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.COPYRIGHT HOLDERS WILL NOT
* BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL
* DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://gnu.org/licenses/>.
*
* Find more information at http://www.meanthemes.com/plugins/meanmenu/
*
*/
(function ($) {
"use strict";
$.fn.meanmenu = function (options) {
var defaults = {
meanMenuTarget: jQuery(this), // Target the current HTML markup you wish to replace
meanMenuContainer: 'body', // Choose where meanmenu will be placed within the HTML
meanMenuClose: "X", // single character you want to represent the close menu button
meanMenuCloseSize: "18px", // set font size of close button
meanMenuOpen: "<span /><span /><span />", // text/markup you want when menu is closed
meanRevealPosition: "right", // left right or center positions
meanRevealPositionDistance: "0", // Tweak the position of the menu
meanRevealColour: "", // override CSS colours for the reveal background
meanScreenWidth: "767", // set the screen width you want meanmenu to kick in at
meanNavPush: "", // set a height here in px, em or % if you want to budge your layout now the navigation is missing.
meanShowChildren: true, // true to show children in the menu, false to hide them
meanExpandableChildren: true, // true to allow expand/collapse children
meanExpand: "+", // single character you want to represent the expand for ULs
meanContract: "-", // single character you want to represent the contract for ULs
meanRemoveAttrs: false, // true to remove classes and IDs, false to keep them
onePage: false, // set to true for one page sites
meanDisplay: "block", // override display method for table cell based layouts e.g. table-cell
removeElements: "" // set to hide page elements
};
options = $.extend(defaults, options);
// get browser width
var currentWidth = window.innerWidth || document.documentElement.clientWidth;
return this.each(function () {
var meanMenu = options.meanMenuTarget;
var meanContainer = options.meanMenuContainer;
var meanMenuClose = options.meanMenuClose;
var meanMenuCloseSize = options.meanMenuCloseSize;
var meanMenuOpen = options.meanMenuOpen;
var meanRevealPosition = options.meanRevealPosition;
var meanRevealPositionDistance = options.meanRevealPositionDistance;
var meanRevealColour = options.meanRevealColour;
var meanScreenWidth = options.meanScreenWidth;
var meanNavPush = options.meanNavPush;
var meanRevealClass = ".meanmenu-reveal";
var meanShowChildren = options.meanShowChildren;
var meanExpandableChildren = options.meanExpandableChildren;
var meanExpand = options.meanExpand;
var meanContract = options.meanContract;
var meanRemoveAttrs = options.meanRemoveAttrs;
var onePage = options.onePage;
var meanDisplay = options.meanDisplay;
var removeElements = options.removeElements;
//detect known mobile/tablet usage
var isMobile = false;
if ( (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/Blackberry/i)) || (navigator.userAgent.match(/Windows Phone/i)) ) {
isMobile = true;
}
if ( (navigator.userAgent.match(/MSIE 8/i)) || (navigator.userAgent.match(/MSIE 7/i)) ) {
// add scrollbar for IE7 & 8 to stop breaking resize function on small content sites
jQuery('html').css("overflow-y" , "scroll");
}
var meanRevealPos = "";
var meanCentered = function() {
if (meanRevealPosition === "center") {
var newWidth = window.innerWidth || document.documentElement.clientWidth;
var meanCenter = ( (newWidth/2)-22 )+"px";
meanRevealPos = "left:" + meanCenter + ";right:auto;";
if (!isMobile) {
jQuery('.meanmenu-reveal').css("left",meanCenter);
} else {
jQuery('.meanmenu-reveal').animate({
left: meanCenter
});
}
}
};
var menuOn = false;
var meanMenuExist = false;
if (meanRevealPosition === "right") {
meanRevealPos = "right:" + meanRevealPositionDistance + ";left:auto;";
}
if (meanRevealPosition === "left") {
meanRevealPos = "left:" + meanRevealPositionDistance + ";right:auto;";
}
// run center function
meanCentered();
// set all styles for mean-reveal
var $navreveal = "";
var meanInner = function() {
// get last class name
if (jQuery($navreveal).is(".meanmenu-reveal.meanclose")) {
$navreveal.html(meanMenuClose);
} else {
$navreveal.html(meanMenuOpen);
}
};
// re-instate original nav (and call this on window.width functions)
var meanOriginal = function() {
jQuery('.mean-bar,.mean-push').remove();
jQuery(meanContainer).removeClass("mean-container");
jQuery(meanMenu).css('display', meanDisplay);
menuOn = false;
meanMenuExist = false;
jQuery(removeElements).removeClass('mean-remove');
};
// navigation reveal
var showMeanMenu = function() {
var meanStyles = "background:"+meanRevealColour+";color:"+meanRevealColour+";"+meanRevealPos;
if (currentWidth <= meanScreenWidth) {
jQuery(removeElements).addClass('mean-remove');
meanMenuExist = true;
// add class to body so we don't need to worry about media queries here, all CSS is wrapped in '.mean-container'
jQuery(meanContainer).addClass("mean-container");
jQuery('.mean-container').prepend('<div class="mean-bar"><a href="#nav" class="meanmenu-reveal" style="'+meanStyles+'">Show Navigation</a><nav class="mean-nav"></nav></div>');
//push meanMenu navigation into .mean-nav
var meanMenuContents = jQuery(meanMenu).html();
jQuery('.mean-nav').html(meanMenuContents);
// remove all classes from EVERYTHING inside meanmenu nav
if(meanRemoveAttrs) {
jQuery('nav.mean-nav ul, nav.mean-nav ul *').each(function() {
// First check if this has mean-remove class
if (jQuery(this).is('.mean-remove')) {
jQuery(this).attr('class', 'mean-remove');
} else {
jQuery(this).removeAttr("class");
}
jQuery(this).removeAttr("id");
});
}
// push in a holder div (this can be used if removal of nav is causing layout issues)
jQuery(meanMenu).before('<div class="mean-push" />');
jQuery('.mean-push').css("margin-top",meanNavPush);
// hide current navigation and reveal mean nav link
jQuery(meanMenu).hide();
jQuery(".meanmenu-reveal").show();
// turn 'X' on or off
jQuery(meanRevealClass).html(meanMenuOpen);
$navreveal = jQuery(meanRevealClass);
//hide mean-nav ul
jQuery('.mean-nav ul').hide();
// hide sub nav
if(meanShowChildren) {
// allow expandable sub nav(s)
if(meanExpandableChildren){
jQuery('.mean-nav ul ul').each(function() {
if(jQuery(this).children().length){
jQuery(this,'li:first').parent().append('<a class="mean-expand" href="#" style="font-size: '+ meanMenuCloseSize +'">'+ meanExpand +'</a>');
}
});
jQuery('.mean-expand').on("click",function(e){
e.preventDefault();
if (jQuery(this).hasClass("mean-clicked")) {
jQuery(this).text(meanExpand);
jQuery(this).prev('ul').slideUp(300, function(){});
} else {
jQuery(this).text(meanContract);
jQuery(this).prev('ul').slideDown(300, function(){});
}
jQuery(this).toggleClass("mean-clicked");
});
} else {
jQuery('.mean-nav ul ul').show();
}
} else {
jQuery('.mean-nav ul ul').hide();
}
// add last class to tidy up borders
jQuery('.mean-nav ul li').last().addClass('mean-last');
$navreveal.removeClass("meanclose");
jQuery($navreveal).click(function(e){
e.preventDefault();
if( menuOn === false ) {
$navreveal.css("text-align", "center");
$navreveal.css("text-indent", "0");
$navreveal.css("font-size", meanMenuCloseSize);
jQuery('.mean-nav ul:first').slideDown();
menuOn = true;
} else {
jQuery('.mean-nav ul:first').slideUp();
menuOn = false;
}
$navreveal.toggleClass("meanclose");
meanInner();
jQuery(removeElements).addClass('mean-remove');
});
// for one page websites, reset all variables...
if ( onePage ) {
jQuery('.mean-nav ul > li > a:first-child').on( "click" , function () {
jQuery('.mean-nav ul:first').slideUp();
menuOn = false;
jQuery($navreveal).toggleClass("meanclose").html(meanMenuOpen);
});
}
} else {
meanOriginal();
}
};
if (!isMobile) {
// reset menu on resize above meanScreenWidth
jQuery(window).resize(function () {
currentWidth = window.innerWidth || document.documentElement.clientWidth;
if (currentWidth > meanScreenWidth) {
meanOriginal();
} else {
meanOriginal();
}
if (currentWidth <= meanScreenWidth) {
showMeanMenu();
meanCentered();
} else {
meanOriginal();
}
});
}
jQuery(window).resize(function () {
// get browser width
currentWidth = window.innerWidth || document.documentElement.clientWidth;
if (!isMobile) {
meanOriginal();
if (currentWidth <= meanScreenWidth) {
showMeanMenu();
meanCentered();
}
} else {
meanCentered();
if (currentWidth <= meanScreenWidth) {
if (meanMenuExist === false) {
showMeanMenu();
}
} else {
meanOriginal();
}
}
});
// run main menuMenu function on load
showMeanMenu();
});
};
})(jQuery);

View File

@@ -0,0 +1,86 @@
;(function($) {
$(document).ready(function() {
//mobile-wrap
const mobile_nav_open = $('.mobile-nav-icon');
const mobile_sidebar = $('.mobile-sidebar');
const mobile_nav_close = $('.menu-close');
mobile_nav_open.on('click', function(){
mobile_sidebar.addClass('mobile-menu-active');
});
mobile_nav_close.on('click', function(){
mobile_sidebar.removeClass('mobile-menu-active');
});
//mobile-menus
$('.mobile-nav a').each(function(){
var href = $(this).attr('href');
if(href = '#'){
$(this).addClass('hash-nav')
}else {
$(this).removeClass('hash-nav')
}
});
//mobile-menus-markup
$.fn.menumarker = function(options){
mobile_menu = $(this),
settings = $.extend({
format: "dropdown",
sticky: false
}, options);
return this.each(function(){
mobile_menu.find('li ul').parent().addClass('has-sub');
var multiTg = function(){
mobile_menu.find('.hash-nav').parent().addClass('hash-has-sub');
mobile_menu.find(".has-sub").prepend('<span class="submenu-button"><em></em></span>');
mobile_menu.find('.submenu-button').on('click', function(){
$(this).toggleClass('submenu-opened');
if ($(this).siblings('ul').hasClass('open-sub')) {
$(this).siblings('ul').removeClass('open-sub').hide('fadeIn');
$(this).siblings('ul').hide('fadeIn');
} else {
$(this).siblings('ul').addClass('open-sub').hide('fadeIn');
$(this).siblings('ul').slideToggle().show('fadeIn');
}
});
};
if (settings.format === 'multitoggle') multiTg();
else mobile_menu.addClass('dropdown');
if (settings.sticky === true) mobile_menu.css('position', 'fixed');
var resizeFix = function () {
if ($(window).width() > 991) {
mobile_menu.find('ul').show('fadeIn');
mobile_menu.find('ul.sub-menu').hide('fadeIn');
}
};
resizeFix();
return $(window).on('resize', resizeFix);
})
}
$('.mobile-nav').menumarker({
format: "multitoggle"
});
});
})(jQuery);

25
public/assets/js/modal-video.min.js vendored Normal file

File diff suppressed because one or more lines are too long

7
public/assets/js/owl.carousel.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,305 @@
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof module === 'object' && module.exports) {
// Node/CommonJS
module.exports = function( root, jQuery ) {
if ( jQuery === undefined ) {
// require('jQuery') returns a factory that requires window to
// build a jQuery instance, we normalize how we use modules
// that require this pattern but the window provided is a noop
// if it's defined (how jquery works)
if ( typeof window !== 'undefined' ) {
jQuery = require('jquery');
}
else {
jQuery = require('jquery')(root);
}
}
factory(jQuery);
return jQuery;
};
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
$.fn.tilt = function (options) {
/**
* RequestAnimationFrame
*/
const requestTick = function() {
if (this.ticking) return;
requestAnimationFrame(updateTransforms.bind(this));
this.ticking = true;
};
/**
* Bind mouse movement evens on instance
*/
const bindEvents = function() {
const _this = this;
$(this).on('mousemove', mouseMove);
$(this).on('mouseenter', mouseEnter);
if (this.settings.reset) $(this).on('mouseleave', mouseLeave);
if (this.settings.glare) $(window).on('resize', updateGlareSize.bind(_this));
};
/**
* Set transition only on mouse leave and mouse enter so it doesn't influence mouse move transforms
*/
const setTransition = function() {
if (this.timeout !== undefined) clearTimeout(this.timeout);
$(this).css({'transition': `${this.settings.speed}ms ${this.settings.easing}`});
if(this.settings.glare) this.glareElement.css({'transition': `opacity ${this.settings.speed}ms ${this.settings.easing}`});
this.timeout = setTimeout(() => {
$(this).css({'transition': ''});
if(this.settings.glare) this.glareElement.css({'transition': ''});
}, this.settings.speed);
};
/**
* When user mouse enters tilt element
*/
const mouseEnter = function(event) {
this.ticking = false;
$(this).css({'will-change': 'transform'});
setTransition.call(this);
// Trigger change event
$(this).trigger("tilt.mouseEnter");
};
/**
* Return the x,y position of the mouse on the tilt element
* @returns {{x: *, y: *}}
*/
const getMousePositions = function(event) {
if (typeof(event) === "undefined") {
event = {
pageX: $(this).offset().left + $(this).outerWidth() / 2,
pageY: $(this).offset().top + $(this).outerHeight() / 2
};
}
return {x: event.pageX, y: event.pageY};
};
/**
* When user mouse moves over the tilt element
*/
const mouseMove = function(event) {
this.mousePositions = getMousePositions(event);
requestTick.call(this);
};
/**
* When user mouse leaves tilt element
*/
const mouseLeave = function() {
setTransition.call(this);
this.reset = true;
requestTick.call(this);
// Trigger change event
$(this).trigger("tilt.mouseLeave");
};
/**
* Get tilt values
*
* @returns {{x: tilt value, y: tilt value}}
*/
const getValues = function() {
const width = $(this).outerWidth();
const height = $(this).outerHeight();
const left = $(this).offset().left;
const top = $(this).offset().top;
const percentageX = (this.mousePositions.x - left) / width;
const percentageY = (this.mousePositions.y - top) / height;
// x or y position inside instance / width of instance = percentage of position inside instance * the max tilt value
const tiltX = ((this.settings.maxTilt / 2) - ((percentageX) * this.settings.maxTilt)).toFixed(2);
const tiltY = (((percentageY) * this.settings.maxTilt) - (this.settings.maxTilt / 2)).toFixed(2);
// angle
const angle = Math.atan2(this.mousePositions.x - (left+width/2),- (this.mousePositions.y - (top+height/2)) )*(180/Math.PI);
// Return x & y tilt values
return {tiltX, tiltY, 'percentageX': percentageX * 100, 'percentageY': percentageY * 100, angle};
};
/**
* Update tilt transforms on mousemove
*/
const updateTransforms = function() {
this.transforms = getValues.call(this);
if (this.reset) {
this.reset = false;
$(this).css('transform', `perspective(${this.settings.perspective}px) rotateX(0deg) rotateY(0deg)`);
// Rotate glare if enabled
if (this.settings.glare){
this.glareElement.css('transform', `rotate(180deg) translate(-50%, -50%)`);
this.glareElement.css('opacity', `0`);
}
return;
} else {
$(this).css('transform', `perspective(${this.settings.perspective}px) rotateX(${this.settings.disableAxis === 'x' ? 0 : this.transforms.tiltY}deg) rotateY(${this.settings.disableAxis === 'y' ? 0 : this.transforms.tiltX}deg) scale3d(${this.settings.scale},${this.settings.scale},${this.settings.scale})`);
// Rotate glare if enabled
if (this.settings.glare){
this.glareElement.css('transform', `rotate(${this.transforms.angle}deg) translate(-50%, -50%)`);
this.glareElement.css('opacity', `${this.transforms.percentageY * this.settings.maxGlare / 100}`);
}
}
// Trigger change event
$(this).trigger("change", [this.transforms]);
this.ticking = false;
};
/**
* Prepare elements
*/
const prepareGlare = function () {
const glarePrerender = this.settings.glarePrerender;
// If option pre-render is enabled we assume all html/css is present for an optimal glare effect.
if (!glarePrerender)
// Create glare element
$(this).append('<div class="js-tilt-glare"><div class="js-tilt-glare-inner"></div></div>');
// Store glare selector if glare is enabled
this.glareElementWrapper = $(this).find(".js-tilt-glare");
this.glareElement = $(this).find(".js-tilt-glare-inner");
// Remember? We assume all css is already set, so just return
if (glarePrerender) return;
// Abstracted re-usable glare styles
const stretch = {
'position': 'absolute',
'top': '0',
'left': '0',
'width': '100%',
'height': '100%',
};
// Style glare wrapper
this.glareElementWrapper.css(stretch).css({
'overflow': 'hidden',
'pointer-events': 'none',
});
// Style glare element
this.glareElement.css({
'position': 'absolute',
'top': '50%',
'left': '50%',
'background-image': `linear-gradient(0deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%)`,
'width': `${$(this).outerWidth()*2}`,
'height': `${$(this).outerWidth()*2}`,
'transform': 'rotate(180deg) translate(-50%, -50%)',
'transform-origin': '0% 0%',
'opacity': '0',
});
};
/**
* Update glare on resize
*/
const updateGlareSize = function () {
this.glareElement.css({
'width': `${$(this).outerWidth()*2}`,
'height': `${$(this).outerWidth()*2}`,
});
};
/**
* Public methods
*/
$.fn.tilt.destroy = function() {
$(this).each(function () {
$(this).find('.js-tilt-glare').remove();
$(this).css({'will-change': '', 'transform': ''});
$(this).off('mousemove mouseenter mouseleave');
});
};
$.fn.tilt.getValues = function() {
const results = [];
$(this).each(function () {
this.mousePositions = getMousePositions.call(this);
results.push(getValues.call(this));
});
return results;
};
$.fn.tilt.reset = function() {
$(this).each(function () {
this.mousePositions = getMousePositions.call(this);
this.settings = $(this).data('settings');
mouseLeave.call(this);
setTimeout(() => {
this.reset = false;
}, this.settings.transition);
});
};
/**
* Loop every instance
*/
return this.each(function () {
/**
* Default settings merged with user settings
* Can be set trough data attributes or as parameter.
* @type {*}
*/
this.settings = $.extend({
maxTilt: $(this).is('[data-tilt-max]') ? $(this).data('tilt-max') : 20,
perspective: $(this).is('[data-tilt-perspective]') ? $(this).data('tilt-perspective') : 300,
easing: $(this).is('[data-tilt-easing]') ? $(this).data('tilt-easing') : 'cubic-bezier(.03,.98,.52,.99)',
scale: $(this).is('[data-tilt-scale]') ? $(this).data('tilt-scale') : '1',
speed: $(this).is('[data-tilt-speed]') ? $(this).data('tilt-speed') : '400',
transition: $(this).is('[data-tilt-transition]') ? $(this).data('tilt-transition') : true,
disableAxis: $(this).is('[data-tilt-disable-axis]') ? $(this).data('tilt-disable-axis') : null,
axis: $(this).is('[data-tilt-axis]') ? $(this).data('tilt-axis') : null,
reset: $(this).is('[data-tilt-reset]') ? $(this).data('tilt-reset') : true,
glare: $(this).is('[data-tilt-glare]') ? $(this).data('tilt-glare') : false,
maxGlare: $(this).is('[data-tilt-maxglare]') ? $(this).data('tilt-maxglare') : 1,
}, options);
// Add deprecation warning & set disableAxis to deprecated axis setting
if(this.settings.axis !== null){
console.warn('Tilt.js: the axis setting has been renamed to disableAxis. See https://github.com/gijsroge/tilt.js/pull/26 for more information');
this.settings.disableAxis = this.settings.axis;
}
this.init = () => {
// Store settings
$(this).data('settings', this.settings);
// Prepare element
if(this.settings.glare) prepareGlare.call(this);
// Bind events
bindEvents.call(this);
};
// Init
this.init();
});
};
/**
* Auto load
*/
$('[data-tilt]').tilt();
return true;
}));