khaihihi
1
Readme.txt
Normal file
|
@ -0,0 +1 @@
|
|||
This home page just for BI Parking. Fucking awesome <3 !
|
2
contactform/Readme.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Fully working PHP/AJAX contact form is available in the pro version.
|
||||
You can buy it from: https://bootstrapmade.com/newbiz-bootstrap-business-template/
|
118
contactform/contactform.js
Normal file
|
@ -0,0 +1,118 @@
|
|||
jQuery(document).ready(function($) {
|
||||
"use strict";
|
||||
|
||||
//Contact
|
||||
$('form.contactForm').submit(function() {
|
||||
var f = $(this).find('.form-group'),
|
||||
ferror = false,
|
||||
emailExp = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i;
|
||||
|
||||
f.children('input').each(function() { // run all inputs
|
||||
|
||||
var i = $(this); // current input
|
||||
var rule = i.attr('data-rule');
|
||||
|
||||
if (rule !== undefined) {
|
||||
var ierror = false; // error flag for current input
|
||||
var pos = rule.indexOf(':', 0);
|
||||
if (pos >= 0) {
|
||||
var exp = rule.substr(pos + 1, rule.length);
|
||||
rule = rule.substr(0, pos);
|
||||
} else {
|
||||
rule = rule.substr(pos + 1, rule.length);
|
||||
}
|
||||
|
||||
switch (rule) {
|
||||
case 'required':
|
||||
if (i.val() === '') {
|
||||
ferror = ierror = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'minlen':
|
||||
if (i.val().length < parseInt(exp)) {
|
||||
ferror = ierror = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
if (!emailExp.test(i.val())) {
|
||||
ferror = ierror = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'checked':
|
||||
if (! i.is(':checked')) {
|
||||
ferror = ierror = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'regexp':
|
||||
exp = new RegExp(exp);
|
||||
if (!exp.test(i.val())) {
|
||||
ferror = ierror = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
i.next('.validation').html((ierror ? (i.attr('data-msg') !== undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind');
|
||||
}
|
||||
});
|
||||
f.children('textarea').each(function() { // run all inputs
|
||||
|
||||
var i = $(this); // current input
|
||||
var rule = i.attr('data-rule');
|
||||
|
||||
if (rule !== undefined) {
|
||||
var ierror = false; // error flag for current input
|
||||
var pos = rule.indexOf(':', 0);
|
||||
if (pos >= 0) {
|
||||
var exp = rule.substr(pos + 1, rule.length);
|
||||
rule = rule.substr(0, pos);
|
||||
} else {
|
||||
rule = rule.substr(pos + 1, rule.length);
|
||||
}
|
||||
|
||||
switch (rule) {
|
||||
case 'required':
|
||||
if (i.val() === '') {
|
||||
ferror = ierror = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'minlen':
|
||||
if (i.val().length < parseInt(exp)) {
|
||||
ferror = ierror = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
i.next('.validation').html((ierror ? (i.attr('data-msg') != undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind');
|
||||
}
|
||||
});
|
||||
if (ferror) return false;
|
||||
else var str = $(this).serialize();
|
||||
var action = $(this).attr('action');
|
||||
if( ! action ) {
|
||||
action = 'contactform/contactform.php';
|
||||
}
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: action,
|
||||
data: str,
|
||||
success: function(msg) {
|
||||
// alert(msg);
|
||||
if (msg == 'OK') {
|
||||
$("#sendmessage").addClass("show");
|
||||
$("#errormessage").removeClass("show");
|
||||
$('.contactForm').find("input, textarea").val("");
|
||||
} else {
|
||||
$("#sendmessage").removeClass("show");
|
||||
$("#errormessage").addClass("show");
|
||||
$('#errormessage').html(msg);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
1
css/scss-files.txt
Normal file
|
@ -0,0 +1 @@
|
|||
The scss source files are available in the pro version.
|
1413
css/style.css
Normal file
BIN
img/BI_Logo.png
Normal file
After Width: | Height: | Size: 34 KiB |
1
img/about-extra-1.svg
Normal file
After Width: | Height: | Size: 19 KiB |
1
img/about-extra-2.svg
Normal file
After Width: | Height: | Size: 75 KiB |
1
img/about-img.svg
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
img/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
img/clients/client-1.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
img/clients/client-2.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
img/clients/client-3.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
img/clients/client-4.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
BIN
img/clients/client-5.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
img/clients/client-6.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
img/clients/client-7.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
img/clients/client-8.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
img/favicon.ico
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
img/favicon.png
Normal file
After Width: | Height: | Size: 491 B |
BIN
img/header-bg.psd
Normal file
BIN
img/intro-bg.png
Normal file
After Width: | Height: | Size: 48 KiB |
1
img/intro-img.svg
Normal file
After Width: | Height: | Size: 149 KiB |
BIN
img/logo.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
img/logo.psd
Normal file
BIN
img/logo_front.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
img/mo-hinh.JPG
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
img/portfolio/app1.jpg
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
img/portfolio/app2.jpg
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
img/portfolio/app3.jpg
Normal file
After Width: | Height: | Size: 89 KiB |
BIN
img/portfolio/card1.jpg
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
img/portfolio/card2.jpg
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
img/portfolio/card3.jpg
Normal file
After Width: | Height: | Size: 282 KiB |
BIN
img/portfolio/web1.jpg
Normal file
After Width: | Height: | Size: 289 KiB |
BIN
img/portfolio/web2.jpg
Normal file
After Width: | Height: | Size: 69 KiB |
BIN
img/portfolio/web3.jpg
Normal file
After Width: | Height: | Size: 141 KiB |
BIN
img/sacn-face-in-car.jpg
Normal file
After Width: | Height: | Size: 219 KiB |
BIN
img/scan-face-in-car-2jpg.jpg
Normal file
After Width: | Height: | Size: 1010 KiB |
BIN
img/team-1.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
img/team-2.jpg
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
img/team-3.jpg
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
img/team-4.jpg
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
img/testimonial-1.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
img/testimonial-2.jpg
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
img/testimonial-3.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
img/testimonial-4.jpg
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
img/testimonial-5.jpg
Normal file
After Width: | Height: | Size: 35 KiB |
888
index.html
Normal file
|
@ -0,0 +1,888 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Beet Innovators | BIParking</title>
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport">
|
||||
<meta content="" name="keywords">
|
||||
<meta content="" name="description">
|
||||
|
||||
<!-- Favicons -->
|
||||
<link href="img/favicon.ico" rel="icon">
|
||||
<link href="img/apple-touch-icon.png" rel="apple-touch-icon">
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i|Montserrat:300,400,500,700" rel="stylesheet">
|
||||
|
||||
<!-- Bootstrap CSS File -->
|
||||
<link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Libraries CSS Files -->
|
||||
<link href="lib/font-awesome/css/font-awesome.min.css" rel="stylesheet">
|
||||
<link href="lib/animate/animate.min.css" rel="stylesheet">
|
||||
<link href="lib/ionicons/css/ionicons.min.css" rel="stylesheet">
|
||||
<link href="lib/owlcarousel/assets/owl.carousel.min.css" rel="stylesheet">
|
||||
<link href="lib/lightbox/css/lightbox.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Main Stylesheet File -->
|
||||
<link href="css/style.css" rel="stylesheet">
|
||||
|
||||
<!-- =======================================================
|
||||
Theme Name: NewBiz
|
||||
Theme URL: https://bootstrapmade.com/newbiz-bootstrap-business-template/
|
||||
Author: BootstrapMade.com
|
||||
License: https://bootstrapmade.com/license/
|
||||
======================================================= -->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!--==========================
|
||||
Header
|
||||
============================-->
|
||||
<header id="header" class="fixed-top">
|
||||
<div class="container">
|
||||
|
||||
<div class="logo float-left">
|
||||
<!-- Uncomment below if you prefer to use an image logo -->
|
||||
<!-- <h1 class="text-light"><a href="#header"><span>NewBiz</span></a></h1> -->
|
||||
<a href="#intro" class="scrollto"><img src="img/BI_Logo.png" alt="" class="img-fluid" style="height:100px;"></a>
|
||||
</div>
|
||||
|
||||
<nav class="main-nav float-right d-none d-lg-block">
|
||||
<ul>
|
||||
<li class="active"><a href="#intro">Home</a></li>
|
||||
<!-- <li><a href="#about">About Us</a></li> -->
|
||||
<li><a href="#services">Services</a></li>
|
||||
<li><a href="#portfolio">Product</a></li>
|
||||
<!-- <li><a href="#team">Team</a></li> -->
|
||||
<!-- <li class="drop-down"><a href="">Drop Down</a>
|
||||
<ul>
|
||||
<li><a href="#">Drop Down 1</a></li>
|
||||
<li class="drop-down"><a href="#">Drop Down 2</a>
|
||||
<ul>
|
||||
<li><a href="#">Deep Drop Down 1</a></li>
|
||||
<li><a href="#">Deep Drop Down 2</a></li>
|
||||
<li><a href="#">Deep Drop Down 3</a></li>
|
||||
<li><a href="#">Deep Drop Down 4</a></li>
|
||||
<li><a href="#">Deep Drop Down 5</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#">Drop Down 3</a></li>
|
||||
<li><a href="#">Drop Down 4</a></li>
|
||||
<li><a href="#">Drop Down 5</a></li>
|
||||
</ul>
|
||||
</li> -->
|
||||
<li><a href="#contact">Contact Us</a></li>
|
||||
</ul>
|
||||
</nav><!-- .main-nav -->
|
||||
|
||||
</div>
|
||||
</header><!-- #header -->
|
||||
|
||||
<!--==========================
|
||||
Intro Section
|
||||
============================-->
|
||||
<section id="intro" class="clearfix">
|
||||
<div class="container">
|
||||
|
||||
<div class="intro-img">
|
||||
<img src="img/intro-img.svg" alt="" class="img-fluid">
|
||||
</div>
|
||||
|
||||
<div class="intro-info">
|
||||
<h2>We provide<br><span>solutions</span><br>for your parking!</h2>
|
||||
<div>
|
||||
<a href="#about" class="btn-get-started scrollto">Get Started</a>
|
||||
<a href="#services" class="btn-services scrollto">Our Services</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- #intro -->
|
||||
|
||||
<main id="main">
|
||||
|
||||
<!--==========================
|
||||
About Us Section
|
||||
============================-->
|
||||
<!-- <section id="about">
|
||||
<div class="container">
|
||||
|
||||
<header class="section-header">
|
||||
<h3>About Us</h3>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
|
||||
</header>
|
||||
|
||||
<div class="row about-container">
|
||||
|
||||
<div class="col-lg-6 content order-lg-1 order-2">
|
||||
<p>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
||||
</p>
|
||||
|
||||
<div class="icon-box wow fadeInUp">
|
||||
<div class="icon"><i class="fa fa-shopping-bag"></i></div>
|
||||
<h4 class="title"><a href="">Eiusmod Tempor</a></h4>
|
||||
<p class="description">Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi</p>
|
||||
</div>
|
||||
|
||||
<div class="icon-box wow fadeInUp" data-wow-delay="0.2s">
|
||||
<div class="icon"><i class="fa fa-photo"></i></div>
|
||||
<h4 class="title"><a href="">Magni Dolores</a></h4>
|
||||
<p class="description">Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>
|
||||
</div>
|
||||
|
||||
<div class="icon-box wow fadeInUp" data-wow-delay="0.4s">
|
||||
<div class="icon"><i class="fa fa-bar-chart"></i></div>
|
||||
<h4 class="title"><a href="">Dolor Sitema</a></h4>
|
||||
<p class="description">Minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat tarad limino ata</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 background order-lg-2 order-1 wow fadeInUp">
|
||||
<img src="img/about-img.svg" class="img-fluid" alt="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row about-extra">
|
||||
<div class="col-lg-6 wow fadeInUp">
|
||||
<img src="img/about-extra-1.svg" class="img-fluid" alt="">
|
||||
</div>
|
||||
<div class="col-lg-6 wow fadeInUp pt-5 pt-lg-0">
|
||||
<h4>Voluptatem dignissimos provident quasi corporis voluptates sit assumenda.</h4>
|
||||
<p>
|
||||
Ipsum in aspernatur ut possimus sint. Quia omnis est occaecati possimus ea. Quas molestiae perspiciatis occaecati qui rerum. Deleniti quod porro sed quisquam saepe. Numquam mollitia recusandae non ad at et a.
|
||||
</p>
|
||||
<p>
|
||||
Ad vitae recusandae odit possimus. Quaerat cum ipsum corrupti. Odit qui asperiores ea corporis deserunt veritatis quidem expedita perferendis. Qui rerum eligendi ex doloribus quia sit. Porro rerum eum eum.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row about-extra">
|
||||
<div class="col-lg-6 wow fadeInUp order-1 order-lg-2">
|
||||
<img src="img/about-extra-2.svg" class="img-fluid" alt="">
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 wow fadeInUp pt-4 pt-lg-0 order-2 order-lg-1">
|
||||
<h4>Neque saepe temporibus repellat ea ipsum et. Id vel et quia tempora facere reprehenderit.</h4>
|
||||
<p>
|
||||
Delectus alias ut incidunt delectus nam placeat in consequatur. Sed cupiditate quia ea quis. Voluptas nemo qui aut distinctio. Cumque fugit earum est quam officiis numquam. Ducimus corporis autem at blanditiis beatae incidunt sunt.
|
||||
</p>
|
||||
<p>
|
||||
Voluptas saepe natus quidem blanditiis. Non sunt impedit voluptas mollitia beatae. Qui esse molestias. Laudantium libero nisi vitae debitis. Dolorem cupiditate est perferendis iusto.
|
||||
</p>
|
||||
<p>
|
||||
Eum quia in. Magni quas ipsum a. Quis ex voluptatem inventore sint quia modi. Numquam est aut fuga mollitia exercitationem nam accusantium provident quia.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>#about -->
|
||||
|
||||
<!--==========================
|
||||
Services Section
|
||||
============================-->
|
||||
<section id="services" class="section-bg">
|
||||
<div class="container">
|
||||
|
||||
<header class="section-header">
|
||||
<h3>Consumer Issues</h3>
|
||||
<p></p>
|
||||
</header>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 col-lg-5 offset-lg-1 wow bounceInUp" data-wow-duration="1.4s">
|
||||
<div class="box">
|
||||
<div class="icon"><i class="ion-ios-analytics-outline" style="color: #ff689b;"></i></div>
|
||||
<h4 class="title"><a href="">Could not manage the parking lot overview</a></h4>
|
||||
<p class="description"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-5 wow bounceInUp" data-wow-duration="1.4s">
|
||||
<div class="box">
|
||||
<div class="icon"><i class="ion-ios-bookmarks-outline" style="color: #e9bf06;"></i></div>
|
||||
<h4 class="title"><a href="">Dependent too much on human</a></h4>
|
||||
<p class="description"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-5 offset-lg-1 wow bounceInUp" data-wow-delay="0.1s" data-wow-duration="1.4s">
|
||||
<div class="box">
|
||||
<div class="icon"><i class="ion-ios-paper-outline" style="color: #3fcdc7;"></i></div>
|
||||
<h4 class="title"><a href="">The security poor</a></h4>
|
||||
<p class="description"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-5 wow bounceInUp" data-wow-delay="0.1s" data-wow-duration="1.4s">
|
||||
<div class="box">
|
||||
<div class="icon"><i class="ion-ios-speedometer-outline" style="color:#41cf2e;"></i></div>
|
||||
<h4 class="title"><a href="">Time consuming</a></h4>
|
||||
<p class="description"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-5 offset-lg-1 wow bounceInUp" data-wow-delay="0.2s" data-wow-duration="1.4s">
|
||||
<div class="box">
|
||||
<div class="icon"><i class="ion-ios-world-outline" style="color: #d6ff22;"></i></div>
|
||||
<h4 class="title"><a href="">Uncontrolled financial and causing loss of revenue</a></h4>
|
||||
<p class="description"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- #services -->
|
||||
|
||||
<!--==========================
|
||||
Why Us Section
|
||||
============================-->
|
||||
<section id="why-us" class="wow fadeIn">
|
||||
<div class="container">
|
||||
<header class="section-header">
|
||||
<h3>Why choose us?</h3>
|
||||
<p></p>
|
||||
</header>
|
||||
|
||||
<div class="row row-eq-height justify-content-center">
|
||||
|
||||
<div class="col-lg-4 mb-4">
|
||||
<div class="card wow bounceInUp">
|
||||
<i class="fa fa-user"></i>
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Manager Users</h5>
|
||||
<p class="card-text">Deleniti optio et nisi dolorem debitis. Aliquam nobis est temporibus sunt ab inventore officiis aut voluptatibus.</p>
|
||||
<a href="#" class="readmore">Read more </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 mb-4">
|
||||
<div class="card wow bounceInUp">
|
||||
<i class="fa fa-check"></i>
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Control Driveway</h5>
|
||||
<p class="card-text">Driveway control by combining facial recognition and license plate tag from</p>
|
||||
<a href="#" class="readmore">Read more </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 mb-4">
|
||||
<div class="card wow bounceInUp">
|
||||
<i class="fa fa-car"></i>
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Data storage</h5>
|
||||
<p class="card-text">Report, retrieve data and Alerts when information is incorrect.</p>
|
||||
<a href="#" class="readmore">Read more </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row counters">
|
||||
|
||||
<div class="col-lg-3 col-6 text-center">
|
||||
<span data-toggle="counter-up">274</span>
|
||||
<p>Clients</p>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-6 text-center">
|
||||
<span data-toggle="counter-up">421</span>
|
||||
<p>Projects</p>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-6 text-center">
|
||||
<span data-toggle="counter-up">1,364</span>
|
||||
<p>Hours Of Support</p>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-6 text-center">
|
||||
<span data-toggle="counter-up">18</span>
|
||||
<p>Hard Workers</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!--==========================
|
||||
Portfolio Section
|
||||
============================-->
|
||||
<section id="portfolio" class="clearfix">
|
||||
<div class="container">
|
||||
|
||||
<header class="section-header">
|
||||
<h3 class="section-title">Our Product</h3>
|
||||
</header>
|
||||
|
||||
<!-- <div class="row">
|
||||
<div class="col-lg-12">
|
||||
<ul id="portfolio-flters">
|
||||
<li data-filter="*" class="filter-active">All</li>
|
||||
<li data-filter=".filter-app">App</li>
|
||||
<li data-filter=".filter-card">Card</li>
|
||||
<li data-filter=".filter-web">Web</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="row portfolio-container">
|
||||
|
||||
<!-- <div class="col-lg-4 col-md-6 portfolio-item filter-app">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/portfolio/app1.jpg" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">App 1</a></h4>
|
||||
<p>App</p>
|
||||
<div>
|
||||
<a href="img/portfolio/app1.jpg" data-lightbox="portfolio" data-title="App 1" class="link-preview" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-6 portfolio-item filter-web" data-wow-delay="0.1s">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/portfolio/web3.jpg" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">Web 3</a></h4>
|
||||
<p>Web</p>
|
||||
<div>
|
||||
<a href="img/portfolio/web3.jpg" class="link-preview" data-lightbox="portfolio" data-title="Web 3" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-6 portfolio-item filter-app" data-wow-delay="0.2s">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/portfolio/app2.jpg" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">App 2</a></h4>
|
||||
<p>App</p>
|
||||
<div>
|
||||
<a href="img/portfolio/app2.jpg" class="link-preview" data-lightbox="portfolio" data-title="App 2" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-6 portfolio-item filter-card">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/portfolio/card2.jpg" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">Card 2</a></h4>
|
||||
<p>Card</p>
|
||||
<div>
|
||||
<a href="img/portfolio/card2.jpg" class="link-preview" data-lightbox="portfolio" data-title="Card 2" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-6 portfolio-item filter-web" data-wow-delay="0.1s">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/portfolio/web2.jpg" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">Web 2</a></h4>
|
||||
<p>Web</p>
|
||||
<div>
|
||||
<a href="img/portfolio/web2.jpg" class="link-preview" data-lightbox="portfolio" data-title="Web 2" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-6 portfolio-item filter-app" data-wow-delay="0.2s">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/portfolio/app3.jpg" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">App 3</a></h4>
|
||||
<p>App</p>
|
||||
<div>
|
||||
<a href="img/portfolio/app3.jpg" class="link-preview" data-lightbox="portfolio" data-title="App 3" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-6 portfolio-item filter-card">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/portfolio/card1.jpg" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">Card 1</a></h4>
|
||||
<p>Card</p>
|
||||
<div>
|
||||
<a href="img/portfolio/card1.jpg" class="link-preview" data-lightbox="portfolio" data-title="Card 1" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-6 portfolio-item filter-card" data-wow-delay="0.1s">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/portfolio/card3.jpg" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">Card 3</a></h4>
|
||||
<p>Card</p>
|
||||
<div>
|
||||
<a href="img/portfolio/card3.jpg" class="link-preview" data-lightbox="portfolio" data-title="Card 3" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="col-lg-4 col-md-6 portfolio-item filter-web" data-wow-delay="0.2s">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/mo-hinh.JPG" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">Web 1</a></h4>
|
||||
<p>Web</p>
|
||||
<div>
|
||||
<a href="img/mo-hinh.JPG" class="link-preview" data-lightbox="portfolio" data-title="Web 1" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-6 portfolio-item filter-web" data-wow-delay="0.1s">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/sacn-face-in-car.jpg" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">Web 3</a></h4>
|
||||
<p>Web</p>
|
||||
<div>
|
||||
<a href="img/sacn-face-in-car.jpg" class="link-preview" data-lightbox="portfolio" data-title="Web 3" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-6 portfolio-item filter-web" data-wow-delay="0.1s">
|
||||
<div class="portfolio-wrap">
|
||||
<img src="img/scan-face-in-car-2jpg.jpg" class="img-fluid" alt="">
|
||||
<div class="portfolio-info">
|
||||
<h4><a href="#">Web 3</a></h4>
|
||||
<p>Web</p>
|
||||
<div>
|
||||
<a href="img/scan-face-in-car-2jpg.jpg" class="link-preview" data-lightbox="portfolio" data-title="Web 3" title="Preview"><i class="ion ion-eye"></i></a>
|
||||
<a href="#" class="link-details" title="More Details"><i class="ion ion-android-open"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!--==========================
|
||||
Clients Section
|
||||
============================-->
|
||||
<!-- <section id="testimonials" class="section-bg">
|
||||
<div class="container">
|
||||
|
||||
<header class="section-header">
|
||||
<h3>Testimonials</h3>
|
||||
</header>
|
||||
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8">
|
||||
|
||||
<div class="owl-carousel testimonials-carousel wow fadeInUp">
|
||||
|
||||
<div class="testimonial-item">
|
||||
<img src="img/testimonial-1.jpg" class="testimonial-img" alt="">
|
||||
<h3>Saul Goodman</h3>
|
||||
<h4>Ceo & Founder</h4>
|
||||
<p>
|
||||
Proin iaculis purus consequat sem cure digni ssim donec porttitora entum suscipit rhoncus. Accusantium quam, ultricies eget id, aliquam eget nibh et. Maecen aliquam, risus at semper.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="testimonial-item">
|
||||
<img src="img/testimonial-2.jpg" class="testimonial-img" alt="">
|
||||
<h3>Sara Wilsson</h3>
|
||||
<h4>Designer</h4>
|
||||
<p>
|
||||
Export tempor illum tamen malis malis eram quae irure esse labore quem cillum quid cillum eram malis quorum velit fore eram velit sunt aliqua noster fugiat irure amet legam anim culpa.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="testimonial-item">
|
||||
<img src="img/testimonial-3.jpg" class="testimonial-img" alt="">
|
||||
<h3>Jena Karlis</h3>
|
||||
<h4>Store Owner</h4>
|
||||
<p>
|
||||
Enim nisi quem export duis labore cillum quae magna enim sint quorum nulla quem veniam duis minim tempor labore quem eram duis noster aute amet eram fore quis sint minim.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="testimonial-item">
|
||||
<img src="img/testimonial-4.jpg" class="testimonial-img" alt="">
|
||||
<h3>Matt Brandon</h3>
|
||||
<h4>Freelancer</h4>
|
||||
<p>
|
||||
Fugiat enim eram quae cillum dolore dolor amet nulla culpa multos export minim fugiat minim velit minim dolor enim duis veniam ipsum anim magna sunt elit fore quem dolore labore illum veniam.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="testimonial-item">
|
||||
<img src="img/testimonial-5.jpg" class="testimonial-img" alt="">
|
||||
<h3>John Larson</h3>
|
||||
<h4>Entrepreneur</h4>
|
||||
<p>
|
||||
Quis quorum aliqua sint quem legam fore sunt eram irure aliqua veniam tempor noster veniam enim culpa labore duis sunt culpa nulla illum cillum fugiat legam esse veniam culpa fore nisi cillum quid.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</section>#testimonials -->
|
||||
|
||||
<!--==========================
|
||||
Team Section
|
||||
============================-->
|
||||
<!-- <section id="team">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h3>Team</h3>
|
||||
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque</p>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-3 col-md-6 wow fadeInUp">
|
||||
<div class="member">
|
||||
<img src="img/team-1.jpg" class="img-fluid" alt="">
|
||||
<div class="member-info">
|
||||
<div class="member-info-content">
|
||||
<h4>Walter White</h4>
|
||||
<span>Chief Executive Officer</span>
|
||||
<div class="social">
|
||||
<a href=""><i class="fa fa-twitter"></i></a>
|
||||
<a href=""><i class="fa fa-facebook"></i></a>
|
||||
<a href=""><i class="fa fa-google-plus"></i></a>
|
||||
<a href=""><i class="fa fa-linkedin"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6 wow fadeInUp" data-wow-delay="0.1s">
|
||||
<div class="member">
|
||||
<img src="img/team-2.jpg" class="img-fluid" alt="">
|
||||
<div class="member-info">
|
||||
<div class="member-info-content">
|
||||
<h4>Sarah Jhonson</h4>
|
||||
<span>Product Manager</span>
|
||||
<div class="social">
|
||||
<a href=""><i class="fa fa-twitter"></i></a>
|
||||
<a href=""><i class="fa fa-facebook"></i></a>
|
||||
<a href=""><i class="fa fa-google-plus"></i></a>
|
||||
<a href=""><i class="fa fa-linkedin"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6 wow fadeInUp" data-wow-delay="0.2s">
|
||||
<div class="member">
|
||||
<img src="img/team-3.jpg" class="img-fluid" alt="">
|
||||
<div class="member-info">
|
||||
<div class="member-info-content">
|
||||
<h4>William Anderson</h4>
|
||||
<span>CTO</span>
|
||||
<div class="social">
|
||||
<a href=""><i class="fa fa-twitter"></i></a>
|
||||
<a href=""><i class="fa fa-facebook"></i></a>
|
||||
<a href=""><i class="fa fa-google-plus"></i></a>
|
||||
<a href=""><i class="fa fa-linkedin"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6 wow fadeInUp" data-wow-delay="0.3s">
|
||||
<div class="member">
|
||||
<img src="img/team-4.jpg" class="img-fluid" alt="">
|
||||
<div class="member-info">
|
||||
<div class="member-info-content">
|
||||
<h4>Amanda Jepson</h4>
|
||||
<span>Accountant</span>
|
||||
<div class="social">
|
||||
<a href=""><i class="fa fa-twitter"></i></a>
|
||||
<a href=""><i class="fa fa-facebook"></i></a>
|
||||
<a href=""><i class="fa fa-google-plus"></i></a>
|
||||
<a href=""><i class="fa fa-linkedin"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>#team -->
|
||||
|
||||
<!--==========================
|
||||
Clients Section
|
||||
============================-->
|
||||
<section id="clients" class="section-bg">
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="section-header">
|
||||
<h3>Our Clients</h3>
|
||||
<p></p>
|
||||
</div>
|
||||
|
||||
<div class="row no-gutters clients-wrap clearfix wow fadeInUp">
|
||||
|
||||
<div class="col-lg-3 col-md-4 col-xs-6">
|
||||
<div class="client-logo">
|
||||
<img src="img/clients/client-1.png" class="img-fluid" alt="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4 col-xs-6">
|
||||
<div class="client-logo">
|
||||
<img src="img/clients/client-2.png" class="img-fluid" alt="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4 col-xs-6">
|
||||
<div class="client-logo">
|
||||
<img src="img/clients/client-3.png" class="img-fluid" alt="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4 col-xs-6">
|
||||
<div class="client-logo">
|
||||
<img src="img/clients/client-4.png" class="img-fluid" alt="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4 col-xs-6">
|
||||
<div class="client-logo">
|
||||
<img src="img/clients/client-5.png" class="img-fluid" alt="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4 col-xs-6">
|
||||
<div class="client-logo">
|
||||
<img src="img/clients/client-6.png" class="img-fluid" alt="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4 col-xs-6">
|
||||
<div class="client-logo">
|
||||
<img src="img/clients/client-7.png" class="img-fluid" alt="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4 col-xs-6">
|
||||
<div class="client-logo">
|
||||
<img src="img/clients/client-8.png" class="img-fluid" alt="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<!--==========================
|
||||
Contact Section
|
||||
============================-->
|
||||
<section id="contact">
|
||||
<div class="container-fluid">
|
||||
|
||||
<div class="section-header">
|
||||
<h3>Contact Us</h3>
|
||||
</div>
|
||||
|
||||
<div class="row wow fadeInUp">
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="map mb-4 mb-lg-0">
|
||||
<iframe src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d12097.433213460943!2d-74.0062269!3d40.7101282!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0xb89d1fe6bc499443!2sDowntown+Conference+Center!5e0!3m2!1smk!2sbg!4v1539943755621" frameborder="0" style="border:0; width: 100%; height: 312px;" allowfullscreen></iframe>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="row">
|
||||
<div class="col-md-5 info">
|
||||
<i class="ion-ios-location-outline"></i>
|
||||
<p>6th Floor, MITEC TOWER, Lot E2, Đường Cầu Giấy, Yên Hoà, Cầu Giấy, Hà Nội</p>
|
||||
</div>
|
||||
<div class="col-md-4 info">
|
||||
<i class="ion-ios-email-outline"></i>
|
||||
<p>contact@beetinnovators.com</p>
|
||||
</div>
|
||||
<div class="col-md-3 info">
|
||||
<i class="ion-ios-telephone-outline"></i>
|
||||
<p>+84 24 3554 5190</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form">
|
||||
<div id="sendmessage">Your message has been sent. Thank you!</div>
|
||||
<div id="errormessage"></div>
|
||||
<form action="" method="post" role="form" class="contactForm">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-lg-6">
|
||||
<input type="text" name="name" class="form-control" id="name" placeholder="Your Name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" />
|
||||
<div class="validation"></div>
|
||||
</div>
|
||||
<div class="form-group col-lg-6">
|
||||
<input type="email" class="form-control" name="email" id="email" placeholder="Your Email" data-rule="email" data-msg="Please enter a valid email" />
|
||||
<div class="validation"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" name="subject" id="subject" placeholder="Subject" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject" />
|
||||
<div class="validation"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<textarea class="form-control" name="message" rows="5" data-rule="required" data-msg="Please write something for us" placeholder="Message"></textarea>
|
||||
<div class="validation"></div>
|
||||
</div>
|
||||
<div class="text-center"><button type="submit" title="Send Message">Send Message</button></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- #contact -->
|
||||
|
||||
</main>
|
||||
|
||||
<!--==========================
|
||||
Footer
|
||||
============================-->
|
||||
<footer id="footer">
|
||||
<div class="footer-top">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-4 col-md-6 footer-info">
|
||||
<h3>NewBiz</h3>
|
||||
<p>Introduction</p>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-2 col-md-6 footer-links">
|
||||
<h4>Useful Links</h4>
|
||||
<ul>
|
||||
<li><a href="#">Home</a></li>
|
||||
<li><a href="#">About us</a></li>
|
||||
<li><a href="#">Services</a></li>
|
||||
<li><a href="#">Terms of service</a></li>
|
||||
<li><a href="#">Privacy policy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6 footer-contact">
|
||||
<h4>Contact Us</h4>
|
||||
<p>
|
||||
6th Floor, Mitec Tower, E2 Plot <br>
|
||||
- Cau Giay New Urban,<br>
|
||||
Yen Hoa ward, Cau Giay District, Hanoi <br>
|
||||
<strong>Phone:</strong> +84 24 3554 5190<br>
|
||||
<strong>Email:</strong> contact@beetinnovators.com<br>
|
||||
</p>
|
||||
|
||||
<div class="social-links">
|
||||
<a href="#" class="twitter"><i class="fa fa-twitter"></i></a>
|
||||
<a href="#" class="facebook"><i class="fa fa-facebook"></i></a>
|
||||
<a href="#" class="instagram"><i class="fa fa-instagram"></i></a>
|
||||
<a href="#" class="google-plus"><i class="fa fa-google-plus"></i></a>
|
||||
<a href="#" class="linkedin"><i class="fa fa-linkedin"></i></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6 footer-newsletter">
|
||||
<h4>Our Newsletter</h4>
|
||||
<p>Introduction for news by email</p>
|
||||
<form action="" method="post">
|
||||
<input type="email" name="email"><input type="submit" value="Subscribe">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="copyright">
|
||||
© Copyright <strong>NewBiz</strong>. All Rights Reserved
|
||||
</div>
|
||||
<div class="credits">
|
||||
<!--
|
||||
All the links in the footer should remain intact.
|
||||
You can delete the links only if you purchased the pro version.
|
||||
Licensing information: https://bootstrapmade.com/license/
|
||||
Purchase the pro version with working PHP/AJAX contact form: https://bootstrapmade.com/buy/?theme=NewBiz
|
||||
-->
|
||||
Designed by <a href="https://bootstrapmade.com/">BootstrapMade</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer><!-- #footer -->
|
||||
|
||||
<a href="#" class="back-to-top"><i class="fa fa-chevron-up"></i></a>
|
||||
<!-- Uncomment below i you want to use a preloader -->
|
||||
<!-- <div id="preloader"></div> -->
|
||||
|
||||
<!-- JavaScript Libraries -->
|
||||
<script src="lib/jquery/jquery.min.js"></script>
|
||||
<script src="lib/jquery/jquery-migrate.min.js"></script>
|
||||
<script src="lib/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="lib/easing/easing.min.js"></script>
|
||||
<script src="lib/mobile-nav/mobile-nav.js"></script>
|
||||
<script src="lib/wow/wow.min.js"></script>
|
||||
<script src="lib/waypoints/waypoints.min.js"></script>
|
||||
<script src="lib/counterup/counterup.min.js"></script>
|
||||
<script src="lib/owlcarousel/owl.carousel.min.js"></script>
|
||||
<script src="lib/isotope/isotope.pkgd.min.js"></script>
|
||||
<script src="lib/lightbox/js/lightbox.min.js"></script>
|
||||
<!-- Contact Form JavaScript File -->
|
||||
<script src="contactform/contactform.js"></script>
|
||||
|
||||
<!-- Template Main Javascript File -->
|
||||
<script src="js/main.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
123
js/main.js
Normal file
|
@ -0,0 +1,123 @@
|
|||
(function ($) {
|
||||
"use strict";
|
||||
|
||||
// Preloader (if the #preloader div exists)
|
||||
$(window).on('load', function () {
|
||||
if ($('#preloader').length) {
|
||||
$('#preloader').delay(100).fadeOut('slow', function () {
|
||||
$(this).remove();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Back to top button
|
||||
$(window).scroll(function() {
|
||||
if ($(this).scrollTop() > 100) {
|
||||
$('.back-to-top').fadeIn('slow');
|
||||
} else {
|
||||
$('.back-to-top').fadeOut('slow');
|
||||
}
|
||||
});
|
||||
$('.back-to-top').click(function(){
|
||||
$('html, body').animate({scrollTop : 0},1500, 'easeInOutExpo');
|
||||
return false;
|
||||
});
|
||||
|
||||
// Initiate the wowjs animation library
|
||||
new WOW().init();
|
||||
|
||||
// Header scroll class
|
||||
$(window).scroll(function() {
|
||||
if ($(this).scrollTop() > 100) {
|
||||
$('#header').addClass('header-scrolled');
|
||||
} else {
|
||||
$('#header').removeClass('header-scrolled');
|
||||
}
|
||||
});
|
||||
|
||||
if ($(window).scrollTop() > 100) {
|
||||
$('#header').addClass('header-scrolled');
|
||||
}
|
||||
|
||||
// Smooth scroll for the navigation and links with .scrollto classes
|
||||
$('.main-nav a, .mobile-nav a, .scrollto').on('click', function() {
|
||||
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
|
||||
var target = $(this.hash);
|
||||
if (target.length) {
|
||||
var top_space = 0;
|
||||
|
||||
if ($('#header').length) {
|
||||
top_space = $('#header').outerHeight();
|
||||
|
||||
if (! $('#header').hasClass('header-scrolled')) {
|
||||
top_space = top_space - 20;
|
||||
}
|
||||
}
|
||||
|
||||
$('html, body').animate({
|
||||
scrollTop: target.offset().top - top_space
|
||||
}, 1500, 'easeInOutExpo');
|
||||
|
||||
if ($(this).parents('.main-nav, .mobile-nav').length) {
|
||||
$('.main-nav .active, .mobile-nav .active').removeClass('active');
|
||||
$(this).closest('li').addClass('active');
|
||||
}
|
||||
|
||||
if ($('body').hasClass('mobile-nav-active')) {
|
||||
$('body').removeClass('mobile-nav-active');
|
||||
$('.mobile-nav-toggle i').toggleClass('fa-times fa-bars');
|
||||
$('.mobile-nav-overly').fadeOut();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Navigation active state on scroll
|
||||
var nav_sections = $('section');
|
||||
var main_nav = $('.main-nav, .mobile-nav');
|
||||
var main_nav_height = $('#header').outerHeight();
|
||||
|
||||
$(window).on('scroll', function () {
|
||||
var cur_pos = $(this).scrollTop();
|
||||
|
||||
nav_sections.each(function() {
|
||||
var top = $(this).offset().top - main_nav_height,
|
||||
bottom = top + $(this).outerHeight();
|
||||
|
||||
if (cur_pos >= top && cur_pos <= bottom) {
|
||||
main_nav.find('li').removeClass('active');
|
||||
main_nav.find('a[href="#'+$(this).attr('id')+'"]').parent('li').addClass('active');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// jQuery counterUp (used in Whu Us section)
|
||||
$('[data-toggle="counter-up"]').counterUp({
|
||||
delay: 10,
|
||||
time: 1000
|
||||
});
|
||||
|
||||
// Porfolio isotope and filter
|
||||
$(window).on('load', function () {
|
||||
var portfolioIsotope = $('.portfolio-container').isotope({
|
||||
itemSelector: '.portfolio-item'
|
||||
});
|
||||
$('#portfolio-flters li').on( 'click', function() {
|
||||
$("#portfolio-flters li").removeClass('filter-active');
|
||||
$(this).addClass('filter-active');
|
||||
|
||||
portfolioIsotope.isotope({ filter: $(this).data('filter') });
|
||||
});
|
||||
});
|
||||
|
||||
// Testimonials carousel (uses the Owl Carousel library)
|
||||
$(".testimonials-carousel").owlCarousel({
|
||||
autoplay: true,
|
||||
dots: true,
|
||||
loop: true,
|
||||
items: 1
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
|
1579
lib/animate/animate.css
vendored
Normal file
11
lib/animate/animate.min.css
vendored
Normal file
9887
lib/bootstrap/css/bootstrap.css
vendored
Normal file
7
lib/bootstrap/css/bootstrap.min.css
vendored
Normal file
7
lib/bootstrap/js/bootstrap.bundle.min.js
vendored
Normal file
7
lib/bootstrap/js/bootstrap.min.js
vendored
Normal file
11
lib/counterup/counterup.min.js
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* jquery.counterup.js 2.1.0
|
||||
*
|
||||
* Copyright 2013, Benjamin Intal http://gambit.ph @bfintal
|
||||
* Released under the GPL v2 License
|
||||
*
|
||||
* Amended by Jeremy Paris, Ciro Mattia Gonano and others
|
||||
*
|
||||
* Date: Feb 24, 2017
|
||||
*/
|
||||
(function($){"use strict";$.fn.counterUp=function(options){var settings=$.extend({time:400,delay:10,offset:100,beginAt:0,formatter:false,context:"window",callback:function(){}},options),s;return this.each(function(){var $this=$(this),counter={time:$(this).data("counterup-time")||settings.time,delay:$(this).data("counterup-delay")||settings.delay,offset:$(this).data("counterup-offset")||settings.offset,beginAt:$(this).data("counterup-beginat")||settings.beginAt,context:$(this).data("counterup-context")||settings.context};var counterUpper=function(){var nums=[];var divisions=counter.time/counter.delay;var num=$(this).attr("data-num")?$(this).attr("data-num"):$this.text();var isComma=/[0-9]+,[0-9]+/.test(num);num=num.replace(/,/g,"");var decimalPlaces=(num.split(".")[1]||[]).length;if(counter.beginAt>num)counter.beginAt=num;var isTime=/[0-9]+:[0-9]+:[0-9]+/.test(num);if(isTime){var times=num.split(":"),m=1;s=0;while(times.length>0){s+=m*parseInt(times.pop(),10);m*=60}}for(var i=divisions;i>=counter.beginAt/num*divisions;i--){var newNum=parseFloat(num/divisions*i).toFixed(decimalPlaces);if(isTime){newNum=parseInt(s/divisions*i);var hours=parseInt(newNum/3600)%24;var minutes=parseInt(newNum/60)%60;var seconds=parseInt(newNum%60,10);newNum=(hours<10?"0"+hours:hours)+":"+(minutes<10?"0"+minutes:minutes)+":"+(seconds<10?"0"+seconds:seconds)}if(isComma){while(/(\d+)(\d{3})/.test(newNum.toString())){newNum=newNum.toString().replace(/(\d+)(\d{3})/,"$1"+","+"$2")}}if(settings.formatter){newNum=settings.formatter.call(this,newNum)}nums.unshift(newNum)}$this.data("counterup-nums",nums);$this.text(counter.beginAt);var f=function(){if(!$this.data("counterup-nums")){settings.callback.call(this);return}$this.html($this.data("counterup-nums").shift());if($this.data("counterup-nums").length){setTimeout($this.data("counterup-func"),counter.delay)}else{$this.data("counterup-nums",null);$this.data("counterup-func",null);settings.callback.call(this)}};$this.data("counterup-func",f);setTimeout($this.data("counterup-func"),counter.delay)};$this.waypoint(function(direction){counterUpper();this.destroy()},{offset:counter.offset+"%",context:counter.context})})}})(jQuery);
|
168
lib/easing/easing.js
Normal file
|
@ -0,0 +1,168 @@
|
|||
/*
|
||||
* jQuery Easing v1.4.1 - http://gsgd.co.uk/sandbox/jquery/easing/
|
||||
* Open source under the BSD License.
|
||||
* Copyright © 2008 George McGinley Smith
|
||||
* All rights reserved.
|
||||
* https://raw.github.com/gdsmith/jquery-easing/master/LICENSE
|
||||
*/
|
||||
|
||||
(function (factory) {
|
||||
if (typeof define === "function" && define.amd) {
|
||||
define(['jquery'], function ($) {
|
||||
return factory($);
|
||||
});
|
||||
} else if (typeof module === "object" && typeof module.exports === "object") {
|
||||
exports = factory(require('jquery'));
|
||||
} else {
|
||||
factory(jQuery);
|
||||
}
|
||||
})(function($){
|
||||
|
||||
// Preserve the original jQuery "swing" easing as "jswing"
|
||||
if (typeof $.easing !== 'undefined') {
|
||||
$.easing['jswing'] = $.easing['swing'];
|
||||
}
|
||||
|
||||
var pow = Math.pow,
|
||||
sqrt = Math.sqrt,
|
||||
sin = Math.sin,
|
||||
cos = Math.cos,
|
||||
PI = Math.PI,
|
||||
c1 = 1.70158,
|
||||
c2 = c1 * 1.525,
|
||||
c3 = c1 + 1,
|
||||
c4 = ( 2 * PI ) / 3,
|
||||
c5 = ( 2 * PI ) / 4.5;
|
||||
|
||||
// x is the fraction of animation progress, in the range 0..1
|
||||
function bounceOut(x) {
|
||||
var n1 = 7.5625,
|
||||
d1 = 2.75;
|
||||
if ( x < 1/d1 ) {
|
||||
return n1*x*x;
|
||||
} else if ( x < 2/d1 ) {
|
||||
return n1*(x-=(1.5/d1))*x + .75;
|
||||
} else if ( x < 2.5/d1 ) {
|
||||
return n1*(x-=(2.25/d1))*x + .9375;
|
||||
} else {
|
||||
return n1*(x-=(2.625/d1))*x + .984375;
|
||||
}
|
||||
}
|
||||
|
||||
$.extend( $.easing,
|
||||
{
|
||||
def: 'easeOutQuad',
|
||||
swing: function (x) {
|
||||
return $.easing[$.easing.def](x);
|
||||
},
|
||||
easeInQuad: function (x) {
|
||||
return x * x;
|
||||
},
|
||||
easeOutQuad: function (x) {
|
||||
return 1 - ( 1 - x ) * ( 1 - x );
|
||||
},
|
||||
easeInOutQuad: function (x) {
|
||||
return x < 0.5 ?
|
||||
2 * x * x :
|
||||
1 - pow( -2 * x + 2, 2 ) / 2;
|
||||
},
|
||||
easeInCubic: function (x) {
|
||||
return x * x * x;
|
||||
},
|
||||
easeOutCubic: function (x) {
|
||||
return 1 - pow( 1 - x, 3 );
|
||||
},
|
||||
easeInOutCubic: function (x) {
|
||||
return x < 0.5 ?
|
||||
4 * x * x * x :
|
||||
1 - pow( -2 * x + 2, 3 ) / 2;
|
||||
},
|
||||
easeInQuart: function (x) {
|
||||
return x * x * x * x;
|
||||
},
|
||||
easeOutQuart: function (x) {
|
||||
return 1 - pow( 1 - x, 4 );
|
||||
},
|
||||
easeInOutQuart: function (x) {
|
||||
return x < 0.5 ?
|
||||
8 * x * x * x * x :
|
||||
1 - pow( -2 * x + 2, 4 ) / 2;
|
||||
},
|
||||
easeInQuint: function (x) {
|
||||
return x * x * x * x * x;
|
||||
},
|
||||
easeOutQuint: function (x) {
|
||||
return 1 - pow( 1 - x, 5 );
|
||||
},
|
||||
easeInOutQuint: function (x) {
|
||||
return x < 0.5 ?
|
||||
16 * x * x * x * x * x :
|
||||
1 - pow( -2 * x + 2, 5 ) / 2;
|
||||
},
|
||||
easeInSine: function (x) {
|
||||
return 1 - cos( x * PI/2 );
|
||||
},
|
||||
easeOutSine: function (x) {
|
||||
return sin( x * PI/2 );
|
||||
},
|
||||
easeInOutSine: function (x) {
|
||||
return -( cos( PI * x ) - 1 ) / 2;
|
||||
},
|
||||
easeInExpo: function (x) {
|
||||
return x === 0 ? 0 : pow( 2, 10 * x - 10 );
|
||||
},
|
||||
easeOutExpo: function (x) {
|
||||
return x === 1 ? 1 : 1 - pow( 2, -10 * x );
|
||||
},
|
||||
easeInOutExpo: function (x) {
|
||||
return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ?
|
||||
pow( 2, 20 * x - 10 ) / 2 :
|
||||
( 2 - pow( 2, -20 * x + 10 ) ) / 2;
|
||||
},
|
||||
easeInCirc: function (x) {
|
||||
return 1 - sqrt( 1 - pow( x, 2 ) );
|
||||
},
|
||||
easeOutCirc: function (x) {
|
||||
return sqrt( 1 - pow( x - 1, 2 ) );
|
||||
},
|
||||
easeInOutCirc: function (x) {
|
||||
return x < 0.5 ?
|
||||
( 1 - sqrt( 1 - pow( 2 * x, 2 ) ) ) / 2 :
|
||||
( sqrt( 1 - pow( -2 * x + 2, 2 ) ) + 1 ) / 2;
|
||||
},
|
||||
easeInElastic: function (x) {
|
||||
return x === 0 ? 0 : x === 1 ? 1 :
|
||||
-pow( 2, 10 * x - 10 ) * sin( ( x * 10 - 10.75 ) * c4 );
|
||||
},
|
||||
easeOutElastic: function (x) {
|
||||
return x === 0 ? 0 : x === 1 ? 1 :
|
||||
pow( 2, -10 * x ) * sin( ( x * 10 - 0.75 ) * c4 ) + 1;
|
||||
},
|
||||
easeInOutElastic: function (x) {
|
||||
return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ?
|
||||
-( pow( 2, 20 * x - 10 ) * sin( ( 20 * x - 11.125 ) * c5 )) / 2 :
|
||||
pow( 2, -20 * x + 10 ) * sin( ( 20 * x - 11.125 ) * c5 ) / 2 + 1;
|
||||
},
|
||||
easeInBack: function (x) {
|
||||
return c3 * x * x * x - c1 * x * x;
|
||||
},
|
||||
easeOutBack: function (x) {
|
||||
return 1 + c3 * pow( x - 1, 3 ) + c1 * pow( x - 1, 2 );
|
||||
},
|
||||
easeInOutBack: function (x) {
|
||||
return x < 0.5 ?
|
||||
( pow( 2 * x, 2 ) * ( ( c2 + 1 ) * 2 * x - c2 ) ) / 2 :
|
||||
( pow( 2 * x - 2, 2 ) *( ( c2 + 1 ) * ( x * 2 - 2 ) + c2 ) + 2 ) / 2;
|
||||
},
|
||||
easeInBounce: function (x) {
|
||||
return 1 - bounceOut( 1 - x );
|
||||
},
|
||||
easeOutBounce: bounceOut,
|
||||
easeInOutBounce: function (x) {
|
||||
return x < 0.5 ?
|
||||
( 1 - bounceOut( 1 - 2 * x ) ) / 2 :
|
||||
( 1 + bounceOut( 2 * x - 1 ) ) / 2;
|
||||
}
|
||||
});
|
||||
|
||||
});
|
1
lib/easing/easing.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
!function(n){"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e)}):"object"==typeof module&&"object"==typeof module.exports?exports=n(require("jquery")):n(jQuery)}(function(n){function e(n){var e=7.5625,t=2.75;return n<1/t?e*n*n:n<2/t?e*(n-=1.5/t)*n+.75:n<2.5/t?e*(n-=2.25/t)*n+.9375:e*(n-=2.625/t)*n+.984375}void 0!==n.easing&&(n.easing.jswing=n.easing.swing);var t=Math.pow,u=Math.sqrt,r=Math.sin,i=Math.cos,a=Math.PI,c=1.70158,o=1.525*c,s=2*a/3,f=2*a/4.5;n.extend(n.easing,{def:"easeOutQuad",swing:function(e){return n.easing[n.easing.def](e)},easeInQuad:function(n){return n*n},easeOutQuad:function(n){return 1-(1-n)*(1-n)},easeInOutQuad:function(n){return n<.5?2*n*n:1-t(-2*n+2,2)/2},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return 1-t(1-n,3)},easeInOutCubic:function(n){return n<.5?4*n*n*n:1-t(-2*n+2,3)/2},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1-t(1-n,4)},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-t(-2*n+2,4)/2},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1-t(1-n,5)},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1-t(-2*n+2,5)/2},easeInSine:function(n){return 1-i(n*a/2)},easeOutSine:function(n){return r(n*a/2)},easeInOutSine:function(n){return-(i(a*n)-1)/2},easeInExpo:function(n){return 0===n?0:t(2,10*n-10)},easeOutExpo:function(n){return 1===n?1:1-t(2,-10*n)},easeInOutExpo:function(n){return 0===n?0:1===n?1:n<.5?t(2,20*n-10)/2:(2-t(2,-20*n+10))/2},easeInCirc:function(n){return 1-u(1-t(n,2))},easeOutCirc:function(n){return u(1-t(n-1,2))},easeInOutCirc:function(n){return n<.5?(1-u(1-t(2*n,2)))/2:(u(1-t(-2*n+2,2))+1)/2},easeInElastic:function(n){return 0===n?0:1===n?1:-t(2,10*n-10)*r((10*n-10.75)*s)},easeOutElastic:function(n){return 0===n?0:1===n?1:t(2,-10*n)*r((10*n-.75)*s)+1},easeInOutElastic:function(n){return 0===n?0:1===n?1:n<.5?-(t(2,20*n-10)*r((20*n-11.125)*f))/2:t(2,-20*n+10)*r((20*n-11.125)*f)/2+1},easeInBack:function(n){return(c+1)*n*n*n-c*n*n},easeOutBack:function(n){return 1+(c+1)*t(n-1,3)+c*t(n-1,2)},easeInOutBack:function(n){return n<.5?t(2*n,2)*(7.189819*n-o)/2:(t(2*n-2,2)*((o+1)*(2*n-2)+o)+2)/2},easeInBounce:function(n){return 1-e(1-n)},easeOutBounce:e,easeInOutBounce:function(n){return n<.5?(1-e(1-2*n))/2:(1+e(2*n-1))/2}})});
|
2337
lib/font-awesome/css/font-awesome.css
vendored
Normal file
4
lib/font-awesome/css/font-awesome.min.css
vendored
Normal file
BIN
lib/font-awesome/fonts/FontAwesome.otf
Normal file
BIN
lib/font-awesome/fonts/fontawesome-webfont.eot
Normal file
2671
lib/font-awesome/fonts/fontawesome-webfont.svg
Normal file
After Width: | Height: | Size: 434 KiB |
BIN
lib/font-awesome/fonts/fontawesome-webfont.ttf
Normal file
BIN
lib/font-awesome/fonts/fontawesome-webfont.woff
Normal file
BIN
lib/font-awesome/fonts/fontawesome-webfont.woff2
Normal file
1480
lib/ionicons/css/ionicons.css
Normal file
11
lib/ionicons/css/ionicons.min.css
vendored
Normal file
BIN
lib/ionicons/fonts/ionicons.eot
Normal file
2230
lib/ionicons/fonts/ionicons.svg
Normal file
After Width: | Height: | Size: 326 KiB |
BIN
lib/ionicons/fonts/ionicons.ttf
Normal file
BIN
lib/ionicons/fonts/ionicons.woff
Normal file
3561
lib/isotope/isotope.pkgd.js
Normal file
12
lib/isotope/isotope.pkgd.min.js
vendored
Normal file
2
lib/jquery/jquery-migrate.min.js
vendored
Normal file
2
lib/jquery/jquery.min.js
vendored
Normal file
207
lib/lightbox/css/lightbox.css
Normal file
|
@ -0,0 +1,207 @@
|
|||
html.lb-disable-scrolling {
|
||||
overflow: hidden;
|
||||
/* Position fixed required for iOS. Just putting overflow: hidden; on the body is not enough. */
|
||||
position: fixed;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
}
|
||||
|
||||
.lightboxOverlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9999;
|
||||
background-color: black;
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
|
||||
opacity: 0.8;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.lightbox {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 10000;
|
||||
text-align: center;
|
||||
line-height: 0;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.lightbox .lb-image {
|
||||
display: block;
|
||||
height: auto;
|
||||
max-width: inherit;
|
||||
max-height: none;
|
||||
border-radius: 3px;
|
||||
|
||||
/* Image border */
|
||||
border: 4px solid white;
|
||||
}
|
||||
|
||||
.lightbox a img {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.lb-outerContainer {
|
||||
position: relative;
|
||||
*zoom: 1;
|
||||
width: 250px;
|
||||
height: 250px;
|
||||
margin: 0 auto;
|
||||
border-radius: 4px;
|
||||
|
||||
/* Background color behind image.
|
||||
This is visible during transitions. */
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.lb-outerContainer:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.lb-loader {
|
||||
position: absolute;
|
||||
top: 43%;
|
||||
left: 0;
|
||||
height: 25%;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
.lb-cancel {
|
||||
display: block;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin: 0 auto;
|
||||
background: url(../images/loading.gif) no-repeat;
|
||||
}
|
||||
|
||||
.lb-nav {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.lb-container > .nav {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.lb-nav a {
|
||||
outline: none;
|
||||
background-image: url('data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
|
||||
}
|
||||
|
||||
.lb-prev, .lb-next {
|
||||
height: 100%;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lb-nav a.lb-prev {
|
||||
width: 34%;
|
||||
left: 0;
|
||||
float: left;
|
||||
background: url(../images/prev.png) left 48% no-repeat;
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.6s;
|
||||
-moz-transition: opacity 0.6s;
|
||||
-o-transition: opacity 0.6s;
|
||||
transition: opacity 0.6s;
|
||||
}
|
||||
|
||||
.lb-nav a.lb-prev:hover {
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.lb-nav a.lb-next {
|
||||
width: 64%;
|
||||
right: 0;
|
||||
float: right;
|
||||
background: url(../images/next.png) right 48% no-repeat;
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.6s;
|
||||
-moz-transition: opacity 0.6s;
|
||||
-o-transition: opacity 0.6s;
|
||||
transition: opacity 0.6s;
|
||||
}
|
||||
|
||||
.lb-nav a.lb-next:hover {
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.lb-dataContainer {
|
||||
margin: 0 auto;
|
||||
padding-top: 5px;
|
||||
*zoom: 1;
|
||||
width: 100%;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
|
||||
.lb-dataContainer:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.lb-data {
|
||||
padding: 0 4px;
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.lb-data .lb-details {
|
||||
width: 85%;
|
||||
float: left;
|
||||
text-align: left;
|
||||
line-height: 1.1em;
|
||||
}
|
||||
|
||||
.lb-data .lb-caption {
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
.lb-data .lb-caption a {
|
||||
color: #4ae;
|
||||
}
|
||||
|
||||
.lb-data .lb-number {
|
||||
display: block;
|
||||
clear: left;
|
||||
padding-bottom: 1em;
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.lb-data .lb-close {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
background: url(../images/close.png) top right no-repeat;
|
||||
text-align: right;
|
||||
outline: none;
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
|
||||
opacity: 0.7;
|
||||
-webkit-transition: opacity 0.2s;
|
||||
-moz-transition: opacity 0.2s;
|
||||
-o-transition: opacity 0.2s;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
|
||||
.lb-data .lb-close:hover {
|
||||
cursor: pointer;
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
|
||||
opacity: 1;
|
||||
}
|
1
lib/lightbox/css/lightbox.min.css
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.lb-loader,.lightbox{text-align:center;line-height:0}.lb-dataContainer:after,.lb-outerContainer:after{content:"";clear:both}html.lb-disable-scrolling{overflow:hidden;position:fixed;height:100vh;width:100vw}.lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:#000;filter:alpha(Opacity=80);opacity:.8;display:none}.lightbox{position:absolute;left:0;width:100%;z-index:10000;font-weight:400}.lightbox .lb-image{display:block;height:auto;max-width:inherit;max-height:none;border-radius:3px;border:4px solid #fff}.lightbox a img{border:none}.lb-outerContainer{position:relative;width:250px;height:250px;margin:0 auto;border-radius:4px;background-color:#fff}.lb-loader,.lb-nav{position:absolute;left:0}.lb-outerContainer:after{display:table}.lb-loader{top:43%;height:25%;width:100%}.lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(../images/loading.gif) no-repeat}.lb-nav{top:0;height:100%;width:100%;z-index:10}.lb-container>.nav{left:0}.lb-nav a{outline:0;background-image:url(data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)}.lb-next,.lb-prev{height:100%;cursor:pointer;display:block}.lb-nav a.lb-prev{width:34%;left:0;float:left;background:url(../images/prev.png) left 48% no-repeat;filter:alpha(Opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-prev:hover{filter:alpha(Opacity=100);opacity:1}.lb-nav a.lb-next{width:64%;right:0;float:right;background:url(../images/next.png) right 48% no-repeat;filter:alpha(Opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-next:hover{filter:alpha(Opacity=100);opacity:1}.lb-dataContainer{margin:0 auto;padding-top:5px;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.lb-dataContainer:after{display:table}.lb-data{padding:0 4px;color:#ccc}.lb-data .lb-details{width:85%;float:left;text-align:left;line-height:1.1em}.lb-data .lb-caption{font-size:13px;font-weight:700;line-height:1em}.lb-data .lb-caption a{color:#4ae}.lb-data .lb-number{display:block;clear:left;padding-bottom:1em;font-size:12px;color:#999}.lb-data .lb-close{display:block;float:right;width:30px;height:30px;background:url(../images/close.png) top right no-repeat;text-align:right;outline:0;filter:alpha(Opacity=70);opacity:.7;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.lb-data .lb-close:hover{cursor:pointer;filter:alpha(Opacity=100);opacity:1}
|
BIN
lib/lightbox/images/close.png
Normal file
After Width: | Height: | Size: 280 B |
BIN
lib/lightbox/images/loading.gif
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
lib/lightbox/images/next.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
lib/lightbox/images/prev.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
519
lib/lightbox/js/lightbox.js
Normal file
|
@ -0,0 +1,519 @@
|
|||
/*!
|
||||
* Lightbox v2.10.0
|
||||
* by Lokesh Dhakar
|
||||
*
|
||||
* More info:
|
||||
* http://lokeshdhakar.com/projects/lightbox2/
|
||||
*
|
||||
* Copyright 2007, 2018 Lokesh Dhakar
|
||||
* Released under the MIT license
|
||||
* https://github.com/lokesh/lightbox2/blob/master/LICENSE
|
||||
*
|
||||
* @preserve
|
||||
*/
|
||||
|
||||
// Uses Node, AMD or browser globals to create a module.
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof exports === 'object') {
|
||||
// Node. Does not work with strict CommonJS, but
|
||||
// only CommonJS-like environments that support module.exports,
|
||||
// like Node.
|
||||
module.exports = factory(require('jquery'));
|
||||
} else {
|
||||
// Browser globals (root is window)
|
||||
root.lightbox = factory(root.jQuery);
|
||||
}
|
||||
}(this, function ($) {
|
||||
|
||||
function Lightbox(options) {
|
||||
this.album = [];
|
||||
this.currentImageIndex = void 0;
|
||||
this.init();
|
||||
|
||||
// options
|
||||
this.options = $.extend({}, this.constructor.defaults);
|
||||
this.option(options);
|
||||
}
|
||||
|
||||
// Descriptions of all options available on the demo site:
|
||||
// http://lokeshdhakar.com/projects/lightbox2/index.html#options
|
||||
Lightbox.defaults = {
|
||||
albumLabel: 'Image %1 of %2',
|
||||
alwaysShowNavOnTouchDevices: false,
|
||||
fadeDuration: 600,
|
||||
fitImagesInViewport: true,
|
||||
imageFadeDuration: 600,
|
||||
// maxWidth: 800,
|
||||
// maxHeight: 600,
|
||||
positionFromTop: 50,
|
||||
resizeDuration: 700,
|
||||
showImageNumberLabel: true,
|
||||
wrapAround: false,
|
||||
disableScrolling: false,
|
||||
/*
|
||||
Sanitize Title
|
||||
If the caption data is trusted, for example you are hardcoding it in, then leave this to false.
|
||||
This will free you to add html tags, such as links, in the caption.
|
||||
|
||||
If the caption data is user submitted or from some other untrusted source, then set this to true
|
||||
to prevent xss and other injection attacks.
|
||||
*/
|
||||
sanitizeTitle: false
|
||||
};
|
||||
|
||||
Lightbox.prototype.option = function(options) {
|
||||
$.extend(this.options, options);
|
||||
};
|
||||
|
||||
Lightbox.prototype.imageCountLabel = function(currentImageNum, totalImages) {
|
||||
return this.options.albumLabel.replace(/%1/g, currentImageNum).replace(/%2/g, totalImages);
|
||||
};
|
||||
|
||||
Lightbox.prototype.init = function() {
|
||||
var self = this;
|
||||
// Both enable and build methods require the body tag to be in the DOM.
|
||||
$(document).ready(function() {
|
||||
self.enable();
|
||||
self.build();
|
||||
});
|
||||
};
|
||||
|
||||
// Loop through anchors and areamaps looking for either data-lightbox attributes or rel attributes
|
||||
// that contain 'lightbox'. When these are clicked, start lightbox.
|
||||
Lightbox.prototype.enable = function() {
|
||||
var self = this;
|
||||
$('body').on('click', 'a[rel^=lightbox], area[rel^=lightbox], a[data-lightbox], area[data-lightbox]', function(event) {
|
||||
self.start($(event.currentTarget));
|
||||
return false;
|
||||
});
|
||||
};
|
||||
|
||||
// Build html for the lightbox and the overlay.
|
||||
// Attach event handlers to the new DOM elements. click click click
|
||||
Lightbox.prototype.build = function() {
|
||||
if ($('#lightbox').length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
var self = this;
|
||||
$('<div id="lightboxOverlay" class="lightboxOverlay"></div><div id="lightbox" class="lightbox"><div class="lb-outerContainer"><div class="lb-container"><img class="lb-image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" /><div class="lb-nav"><a class="lb-prev" href="" ></a><a class="lb-next" href="" ></a></div><div class="lb-loader"><a class="lb-cancel"></a></div></div></div><div class="lb-dataContainer"><div class="lb-data"><div class="lb-details"><span class="lb-caption"></span><span class="lb-number"></span></div><div class="lb-closeContainer"><a class="lb-close"></a></div></div></div></div>').appendTo($('body'));
|
||||
|
||||
// Cache jQuery objects
|
||||
this.$lightbox = $('#lightbox');
|
||||
this.$overlay = $('#lightboxOverlay');
|
||||
this.$outerContainer = this.$lightbox.find('.lb-outerContainer');
|
||||
this.$container = this.$lightbox.find('.lb-container');
|
||||
this.$image = this.$lightbox.find('.lb-image');
|
||||
this.$nav = this.$lightbox.find('.lb-nav');
|
||||
|
||||
// Store css values for future lookup
|
||||
this.containerPadding = {
|
||||
top: parseInt(this.$container.css('padding-top'), 10),
|
||||
right: parseInt(this.$container.css('padding-right'), 10),
|
||||
bottom: parseInt(this.$container.css('padding-bottom'), 10),
|
||||
left: parseInt(this.$container.css('padding-left'), 10)
|
||||
};
|
||||
|
||||
this.imageBorderWidth = {
|
||||
top: parseInt(this.$image.css('border-top-width'), 10),
|
||||
right: parseInt(this.$image.css('border-right-width'), 10),
|
||||
bottom: parseInt(this.$image.css('border-bottom-width'), 10),
|
||||
left: parseInt(this.$image.css('border-left-width'), 10)
|
||||
};
|
||||
|
||||
// Attach event handlers to the newly minted DOM elements
|
||||
this.$overlay.hide().on('click', function() {
|
||||
self.end();
|
||||
return false;
|
||||
});
|
||||
|
||||
this.$lightbox.hide().on('click', function(event) {
|
||||
if ($(event.target).attr('id') === 'lightbox') {
|
||||
self.end();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
this.$outerContainer.on('click', function(event) {
|
||||
if ($(event.target).attr('id') === 'lightbox') {
|
||||
self.end();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
this.$lightbox.find('.lb-prev').on('click', function() {
|
||||
if (self.currentImageIndex === 0) {
|
||||
self.changeImage(self.album.length - 1);
|
||||
} else {
|
||||
self.changeImage(self.currentImageIndex - 1);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
this.$lightbox.find('.lb-next').on('click', function() {
|
||||
if (self.currentImageIndex === self.album.length - 1) {
|
||||
self.changeImage(0);
|
||||
} else {
|
||||
self.changeImage(self.currentImageIndex + 1);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
/*
|
||||
Show context menu for image on right-click
|
||||
|
||||
There is a div containing the navigation that spans the entire image and lives above of it. If
|
||||
you right-click, you are right clicking this div and not the image. This prevents users from
|
||||
saving the image or using other context menu actions with the image.
|
||||
|
||||
To fix this, when we detect the right mouse button is pressed down, but not yet clicked, we
|
||||
set pointer-events to none on the nav div. This is so that the upcoming right-click event on
|
||||
the next mouseup will bubble down to the image. Once the right-click/contextmenu event occurs
|
||||
we set the pointer events back to auto for the nav div so it can capture hover and left-click
|
||||
events as usual.
|
||||
*/
|
||||
this.$nav.on('mousedown', function(event) {
|
||||
if (event.which === 3) {
|
||||
self.$nav.css('pointer-events', 'none');
|
||||
|
||||
self.$lightbox.one('contextmenu', function() {
|
||||
setTimeout(function() {
|
||||
this.$nav.css('pointer-events', 'auto');
|
||||
}.bind(self), 0);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
this.$lightbox.find('.lb-loader, .lb-close').on('click', function() {
|
||||
self.end();
|
||||
return false;
|
||||
});
|
||||
};
|
||||
|
||||
// Show overlay and lightbox. If the image is part of a set, add siblings to album array.
|
||||
Lightbox.prototype.start = function($link) {
|
||||
var self = this;
|
||||
var $window = $(window);
|
||||
|
||||
$window.on('resize', $.proxy(this.sizeOverlay, this));
|
||||
|
||||
$('select, object, embed').css({
|
||||
visibility: 'hidden'
|
||||
});
|
||||
|
||||
this.sizeOverlay();
|
||||
|
||||
this.album = [];
|
||||
var imageNumber = 0;
|
||||
|
||||
function addToAlbum($link) {
|
||||
self.album.push({
|
||||
alt: $link.attr('data-alt'),
|
||||
link: $link.attr('href'),
|
||||
title: $link.attr('data-title') || $link.attr('title')
|
||||
});
|
||||
}
|
||||
|
||||
// Support both data-lightbox attribute and rel attribute implementations
|
||||
var dataLightboxValue = $link.attr('data-lightbox');
|
||||
var $links;
|
||||
|
||||
if (dataLightboxValue) {
|
||||
$links = $($link.prop('tagName') + '[data-lightbox="' + dataLightboxValue + '"]');
|
||||
for (var i = 0; i < $links.length; i = ++i) {
|
||||
addToAlbum($($links[i]));
|
||||
if ($links[i] === $link[0]) {
|
||||
imageNumber = i;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ($link.attr('rel') === 'lightbox') {
|
||||
// If image is not part of a set
|
||||
addToAlbum($link);
|
||||
} else {
|
||||
// If image is part of a set
|
||||
$links = $($link.prop('tagName') + '[rel="' + $link.attr('rel') + '"]');
|
||||
for (var j = 0; j < $links.length; j = ++j) {
|
||||
addToAlbum($($links[j]));
|
||||
if ($links[j] === $link[0]) {
|
||||
imageNumber = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Position Lightbox
|
||||
var top = $window.scrollTop() + this.options.positionFromTop;
|
||||
var left = $window.scrollLeft();
|
||||
this.$lightbox.css({
|
||||
top: top + 'px',
|
||||
left: left + 'px'
|
||||
}).fadeIn(this.options.fadeDuration);
|
||||
|
||||
// Disable scrolling of the page while open
|
||||
if (this.options.disableScrolling) {
|
||||
$('html').addClass('lb-disable-scrolling');
|
||||
}
|
||||
|
||||
this.changeImage(imageNumber);
|
||||
};
|
||||
|
||||
// Hide most UI elements in preparation for the animated resizing of the lightbox.
|
||||
Lightbox.prototype.changeImage = function(imageNumber) {
|
||||
var self = this;
|
||||
|
||||
this.disableKeyboardNav();
|
||||
var $image = this.$lightbox.find('.lb-image');
|
||||
|
||||
this.$overlay.fadeIn(this.options.fadeDuration);
|
||||
|
||||
$('.lb-loader').fadeIn('slow');
|
||||
this.$lightbox.find('.lb-image, .lb-nav, .lb-prev, .lb-next, .lb-dataContainer, .lb-numbers, .lb-caption').hide();
|
||||
|
||||
this.$outerContainer.addClass('animating');
|
||||
|
||||
// When image to show is preloaded, we send the width and height to sizeContainer()
|
||||
var preloader = new Image();
|
||||
preloader.onload = function() {
|
||||
var $preloader;
|
||||
var imageHeight;
|
||||
var imageWidth;
|
||||
var maxImageHeight;
|
||||
var maxImageWidth;
|
||||
var windowHeight;
|
||||
var windowWidth;
|
||||
|
||||
$image.attr({
|
||||
'alt': self.album[imageNumber].alt,
|
||||
'src': self.album[imageNumber].link
|
||||
});
|
||||
|
||||
$preloader = $(preloader);
|
||||
|
||||
$image.width(preloader.width);
|
||||
$image.height(preloader.height);
|
||||
|
||||
if (self.options.fitImagesInViewport) {
|
||||
// Fit image inside the viewport.
|
||||
// Take into account the border around the image and an additional 10px gutter on each side.
|
||||
|
||||
windowWidth = $(window).width();
|
||||
windowHeight = $(window).height();
|
||||
maxImageWidth = windowWidth - self.containerPadding.left - self.containerPadding.right - self.imageBorderWidth.left - self.imageBorderWidth.right - 20;
|
||||
maxImageHeight = windowHeight - self.containerPadding.top - self.containerPadding.bottom - self.imageBorderWidth.top - self.imageBorderWidth.bottom - 120;
|
||||
|
||||
// Check if image size is larger then maxWidth|maxHeight in settings
|
||||
if (self.options.maxWidth && self.options.maxWidth < maxImageWidth) {
|
||||
maxImageWidth = self.options.maxWidth;
|
||||
}
|
||||
if (self.options.maxHeight && self.options.maxHeight < maxImageWidth) {
|
||||
maxImageHeight = self.options.maxHeight;
|
||||
}
|
||||
|
||||
// Is the current image's width or height is greater than the maxImageWidth or maxImageHeight
|
||||
// option than we need to size down while maintaining the aspect ratio.
|
||||
if ((preloader.width > maxImageWidth) || (preloader.height > maxImageHeight)) {
|
||||
if ((preloader.width / maxImageWidth) > (preloader.height / maxImageHeight)) {
|
||||
imageWidth = maxImageWidth;
|
||||
imageHeight = parseInt(preloader.height / (preloader.width / imageWidth), 10);
|
||||
$image.width(imageWidth);
|
||||
$image.height(imageHeight);
|
||||
} else {
|
||||
imageHeight = maxImageHeight;
|
||||
imageWidth = parseInt(preloader.width / (preloader.height / imageHeight), 10);
|
||||
$image.width(imageWidth);
|
||||
$image.height(imageHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
self.sizeContainer($image.width(), $image.height());
|
||||
};
|
||||
|
||||
preloader.src = this.album[imageNumber].link;
|
||||
this.currentImageIndex = imageNumber;
|
||||
};
|
||||
|
||||
// Stretch overlay to fit the viewport
|
||||
Lightbox.prototype.sizeOverlay = function() {
|
||||
this.$overlay
|
||||
.width($(document).width())
|
||||
.height($(document).height());
|
||||
};
|
||||
|
||||
// Animate the size of the lightbox to fit the image we are showing
|
||||
Lightbox.prototype.sizeContainer = function(imageWidth, imageHeight) {
|
||||
var self = this;
|
||||
|
||||
var oldWidth = this.$outerContainer.outerWidth();
|
||||
var oldHeight = this.$outerContainer.outerHeight();
|
||||
var newWidth = imageWidth + this.containerPadding.left + this.containerPadding.right + this.imageBorderWidth.left + this.imageBorderWidth.right;
|
||||
var newHeight = imageHeight + this.containerPadding.top + this.containerPadding.bottom + this.imageBorderWidth.top + this.imageBorderWidth.bottom;
|
||||
|
||||
function postResize() {
|
||||
self.$lightbox.find('.lb-dataContainer').width(newWidth);
|
||||
self.$lightbox.find('.lb-prevLink').height(newHeight);
|
||||
self.$lightbox.find('.lb-nextLink').height(newHeight);
|
||||
self.showImage();
|
||||
}
|
||||
|
||||
if (oldWidth !== newWidth || oldHeight !== newHeight) {
|
||||
this.$outerContainer.animate({
|
||||
width: newWidth,
|
||||
height: newHeight
|
||||
}, this.options.resizeDuration, 'swing', function() {
|
||||
postResize();
|
||||
});
|
||||
} else {
|
||||
postResize();
|
||||
}
|
||||
};
|
||||
|
||||
// Display the image and its details and begin preload neighboring images.
|
||||
Lightbox.prototype.showImage = function() {
|
||||
this.$lightbox.find('.lb-loader').stop(true).hide();
|
||||
this.$lightbox.find('.lb-image').fadeIn(this.options.imageFadeDuration);
|
||||
|
||||
this.updateNav();
|
||||
this.updateDetails();
|
||||
this.preloadNeighboringImages();
|
||||
this.enableKeyboardNav();
|
||||
};
|
||||
|
||||
// Display previous and next navigation if appropriate.
|
||||
Lightbox.prototype.updateNav = function() {
|
||||
// Check to see if the browser supports touch events. If so, we take the conservative approach
|
||||
// and assume that mouse hover events are not supported and always show prev/next navigation
|
||||
// arrows in image sets.
|
||||
var alwaysShowNav = false;
|
||||
try {
|
||||
document.createEvent('TouchEvent');
|
||||
alwaysShowNav = (this.options.alwaysShowNavOnTouchDevices) ? true : false;
|
||||
} catch (e) {}
|
||||
|
||||
this.$lightbox.find('.lb-nav').show();
|
||||
|
||||
if (this.album.length > 1) {
|
||||
if (this.options.wrapAround) {
|
||||
if (alwaysShowNav) {
|
||||
this.$lightbox.find('.lb-prev, .lb-next').css('opacity', '1');
|
||||
}
|
||||
this.$lightbox.find('.lb-prev, .lb-next').show();
|
||||
} else {
|
||||
if (this.currentImageIndex > 0) {
|
||||
this.$lightbox.find('.lb-prev').show();
|
||||
if (alwaysShowNav) {
|
||||
this.$lightbox.find('.lb-prev').css('opacity', '1');
|
||||
}
|
||||
}
|
||||
if (this.currentImageIndex < this.album.length - 1) {
|
||||
this.$lightbox.find('.lb-next').show();
|
||||
if (alwaysShowNav) {
|
||||
this.$lightbox.find('.lb-next').css('opacity', '1');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Display caption, image number, and closing button.
|
||||
Lightbox.prototype.updateDetails = function() {
|
||||
var self = this;
|
||||
|
||||
// Enable anchor clicks in the injected caption html.
|
||||
// Thanks Nate Wright for the fix. @https://github.com/NateWr
|
||||
if (typeof this.album[this.currentImageIndex].title !== 'undefined' &&
|
||||
this.album[this.currentImageIndex].title !== '') {
|
||||
var $caption = this.$lightbox.find('.lb-caption');
|
||||
if (this.options.sanitizeTitle) {
|
||||
$caption.text(this.album[this.currentImageIndex].title);
|
||||
} else {
|
||||
$caption.html(this.album[this.currentImageIndex].title);
|
||||
}
|
||||
$caption.fadeIn('fast')
|
||||
.find('a').on('click', function(event) {
|
||||
if ($(this).attr('target') !== undefined) {
|
||||
window.open($(this).attr('href'), $(this).attr('target'));
|
||||
} else {
|
||||
location.href = $(this).attr('href');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (this.album.length > 1 && this.options.showImageNumberLabel) {
|
||||
var labelText = this.imageCountLabel(this.currentImageIndex + 1, this.album.length);
|
||||
this.$lightbox.find('.lb-number').text(labelText).fadeIn('fast');
|
||||
} else {
|
||||
this.$lightbox.find('.lb-number').hide();
|
||||
}
|
||||
|
||||
this.$outerContainer.removeClass('animating');
|
||||
|
||||
this.$lightbox.find('.lb-dataContainer').fadeIn(this.options.resizeDuration, function() {
|
||||
return self.sizeOverlay();
|
||||
});
|
||||
};
|
||||
|
||||
// Preload previous and next images in set.
|
||||
Lightbox.prototype.preloadNeighboringImages = function() {
|
||||
if (this.album.length > this.currentImageIndex + 1) {
|
||||
var preloadNext = new Image();
|
||||
preloadNext.src = this.album[this.currentImageIndex + 1].link;
|
||||
}
|
||||
if (this.currentImageIndex > 0) {
|
||||
var preloadPrev = new Image();
|
||||
preloadPrev.src = this.album[this.currentImageIndex - 1].link;
|
||||
}
|
||||
};
|
||||
|
||||
Lightbox.prototype.enableKeyboardNav = function() {
|
||||
$(document).on('keyup.keyboard', $.proxy(this.keyboardAction, this));
|
||||
};
|
||||
|
||||
Lightbox.prototype.disableKeyboardNav = function() {
|
||||
$(document).off('.keyboard');
|
||||
};
|
||||
|
||||
Lightbox.prototype.keyboardAction = function(event) {
|
||||
var KEYCODE_ESC = 27;
|
||||
var KEYCODE_LEFTARROW = 37;
|
||||
var KEYCODE_RIGHTARROW = 39;
|
||||
|
||||
var keycode = event.keyCode;
|
||||
var key = String.fromCharCode(keycode).toLowerCase();
|
||||
if (keycode === KEYCODE_ESC || key.match(/x|o|c/)) {
|
||||
this.end();
|
||||
} else if (key === 'p' || keycode === KEYCODE_LEFTARROW) {
|
||||
if (this.currentImageIndex !== 0) {
|
||||
this.changeImage(this.currentImageIndex - 1);
|
||||
} else if (this.options.wrapAround && this.album.length > 1) {
|
||||
this.changeImage(this.album.length - 1);
|
||||
}
|
||||
} else if (key === 'n' || keycode === KEYCODE_RIGHTARROW) {
|
||||
if (this.currentImageIndex !== this.album.length - 1) {
|
||||
this.changeImage(this.currentImageIndex + 1);
|
||||
} else if (this.options.wrapAround && this.album.length > 1) {
|
||||
this.changeImage(0);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Closing time. :-(
|
||||
Lightbox.prototype.end = function() {
|
||||
this.disableKeyboardNav();
|
||||
$(window).off('resize', this.sizeOverlay);
|
||||
this.$lightbox.fadeOut(this.options.fadeDuration);
|
||||
this.$overlay.fadeOut(this.options.fadeDuration);
|
||||
$('select, object, embed').css({
|
||||
visibility: 'visible'
|
||||
});
|
||||
if (this.options.disableScrolling) {
|
||||
$('html').removeClass('lb-disable-scrolling');
|
||||
}
|
||||
};
|
||||
|
||||
return new Lightbox();
|
||||
}));
|
15
lib/lightbox/js/lightbox.min.js
vendored
Normal file
39
lib/mobile-nav/mobile-nav.js
Normal file
|
@ -0,0 +1,39 @@
|
|||
(function ($) {
|
||||
"use strict";
|
||||
|
||||
// Mobile Navigation
|
||||
if ($('.main-nav').length) {
|
||||
var $mobile_nav = $('.main-nav').clone().prop({
|
||||
class: 'mobile-nav d-lg-none'
|
||||
});
|
||||
$('body').append($mobile_nav);
|
||||
$('body').prepend('<button type="button" class="mobile-nav-toggle d-lg-none"><i class="fa fa-bars"></i></button>');
|
||||
$('body').append('<div class="mobile-nav-overly"></div>');
|
||||
|
||||
$(document).on('click', '.mobile-nav-toggle', function(e) {
|
||||
$('body').toggleClass('mobile-nav-active');
|
||||
$('.mobile-nav-toggle i').toggleClass('fa-times fa-bars');
|
||||
$('.mobile-nav-overly').toggle();
|
||||
});
|
||||
|
||||
$(document).on('click', '.mobile-nav .drop-down > a', function(e) {
|
||||
e.preventDefault();
|
||||
$(this).next().slideToggle(300);
|
||||
$(this).parent().toggleClass('active');
|
||||
});
|
||||
|
||||
$(document).click(function(e) {
|
||||
var container = $(".mobile-nav, .mobile-nav-toggle");
|
||||
if (!container.is(e.target) && container.has(e.target).length === 0) {
|
||||
if ($('body').hasClass('mobile-nav-active')) {
|
||||
$('body').removeClass('mobile-nav-active');
|
||||
$('.mobile-nav-toggle i').toggleClass('fa-times fa-bars');
|
||||
$('.mobile-nav-overly').fadeOut();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if ($(".mobile-nav, .mobile-nav-toggle").length) {
|
||||
$(".mobile-nav, .mobile-nav-toggle").hide();
|
||||
}
|
||||
|
||||
})(jQuery);
|
23
lib/owlcarousel/LICENSE
Normal file
|
@ -0,0 +1,23 @@
|
|||
Copyright (c) 2014 Owl
|
||||
Modified work Copyright 2016-2018 David Deutsch
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
BIN
lib/owlcarousel/assets/ajax-loader.gif
Normal file
After Width: | Height: | Size: 3.1 KiB |
186
lib/owlcarousel/assets/owl.carousel.css
Normal file
|
@ -0,0 +1,186 @@
|
|||
/**
|
||||
* Owl Carousel v2.3.4
|
||||
* Copyright 2013-2018 David Deutsch
|
||||
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
|
||||
*/
|
||||
/*
|
||||
* Owl Carousel - Core
|
||||
*/
|
||||
.owl-carousel {
|
||||
display: none;
|
||||
width: 100%;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
/* position relative and z-index fix webkit rendering fonts issue */
|
||||
position: relative;
|
||||
z-index: 1; }
|
||||
.owl-carousel .owl-stage {
|
||||
position: relative;
|
||||
-ms-touch-action: pan-Y;
|
||||
touch-action: manipulation;
|
||||
-moz-backface-visibility: hidden;
|
||||
/* fix firefox animation glitch */ }
|
||||
.owl-carousel .owl-stage:after {
|
||||
content: ".";
|
||||
display: block;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
line-height: 0;
|
||||
height: 0; }
|
||||
.owl-carousel .owl-stage-outer {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
/* fix for flashing background */
|
||||
-webkit-transform: translate3d(0px, 0px, 0px); }
|
||||
.owl-carousel .owl-wrapper,
|
||||
.owl-carousel .owl-item {
|
||||
-webkit-backface-visibility: hidden;
|
||||
-moz-backface-visibility: hidden;
|
||||
-ms-backface-visibility: hidden;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0); }
|
||||
.owl-carousel .owl-item {
|
||||
position: relative;
|
||||
min-height: 1px;
|
||||
float: left;
|
||||
-webkit-backface-visibility: hidden;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
-webkit-touch-callout: none; }
|
||||
.owl-carousel .owl-item img {
|
||||
display: block;
|
||||
width: 100%; }
|
||||
.owl-carousel .owl-nav.disabled,
|
||||
.owl-carousel .owl-dots.disabled {
|
||||
display: none; }
|
||||
.owl-carousel .owl-nav .owl-prev,
|
||||
.owl-carousel .owl-nav .owl-next,
|
||||
.owl-carousel .owl-dot {
|
||||
cursor: pointer;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
.owl-carousel .owl-nav button.owl-prev,
|
||||
.owl-carousel .owl-nav button.owl-next,
|
||||
.owl-carousel button.owl-dot {
|
||||
background: none;
|
||||
color: inherit;
|
||||
border: none;
|
||||
padding: 0 !important;
|
||||
font: inherit; }
|
||||
.owl-carousel.owl-loaded {
|
||||
display: block; }
|
||||
.owl-carousel.owl-loading {
|
||||
opacity: 0;
|
||||
display: block; }
|
||||
.owl-carousel.owl-hidden {
|
||||
opacity: 0; }
|
||||
.owl-carousel.owl-refresh .owl-item {
|
||||
visibility: hidden; }
|
||||
.owl-carousel.owl-drag .owl-item {
|
||||
-ms-touch-action: pan-y;
|
||||
touch-action: pan-y;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
.owl-carousel.owl-grab {
|
||||
cursor: move;
|
||||
cursor: grab; }
|
||||
.owl-carousel.owl-rtl {
|
||||
direction: rtl; }
|
||||
.owl-carousel.owl-rtl .owl-item {
|
||||
float: right; }
|
||||
|
||||
/* No Js */
|
||||
.no-js .owl-carousel {
|
||||
display: block; }
|
||||
|
||||
/*
|
||||
* Owl Carousel - Animate Plugin
|
||||
*/
|
||||
.owl-carousel .animated {
|
||||
animation-duration: 1000ms;
|
||||
animation-fill-mode: both; }
|
||||
|
||||
.owl-carousel .owl-animated-in {
|
||||
z-index: 0; }
|
||||
|
||||
.owl-carousel .owl-animated-out {
|
||||
z-index: 1; }
|
||||
|
||||
.owl-carousel .fadeOut {
|
||||
animation-name: fadeOut; }
|
||||
|
||||
@keyframes fadeOut {
|
||||
0% {
|
||||
opacity: 1; }
|
||||
100% {
|
||||
opacity: 0; } }
|
||||
|
||||
/*
|
||||
* Owl Carousel - Auto Height Plugin
|
||||
*/
|
||||
.owl-height {
|
||||
transition: height 500ms ease-in-out; }
|
||||
|
||||
/*
|
||||
* Owl Carousel - Lazy Load Plugin
|
||||
*/
|
||||
.owl-carousel .owl-item {
|
||||
/**
|
||||
This is introduced due to a bug in IE11 where lazy loading combined with autoheight plugin causes a wrong
|
||||
calculation of the height of the owl-item that breaks page layouts
|
||||
*/ }
|
||||
.owl-carousel .owl-item .owl-lazy {
|
||||
opacity: 0;
|
||||
transition: opacity 400ms ease; }
|
||||
.owl-carousel .owl-item .owl-lazy[src^=""], .owl-carousel .owl-item .owl-lazy:not([src]) {
|
||||
max-height: 0; }
|
||||
.owl-carousel .owl-item img.owl-lazy {
|
||||
transform-style: preserve-3d; }
|
||||
|
||||
/*
|
||||
* Owl Carousel - Video Plugin
|
||||
*/
|
||||
.owl-carousel .owl-video-wrapper {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #000; }
|
||||
|
||||
.owl-carousel .owl-video-play-icon {
|
||||
position: absolute;
|
||||
height: 80px;
|
||||
width: 80px;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -40px;
|
||||
margin-top: -40px;
|
||||
background: url("owl.video.play.png") no-repeat;
|
||||
cursor: pointer;
|
||||
z-index: 1;
|
||||
-webkit-backface-visibility: hidden;
|
||||
transition: transform 100ms ease; }
|
||||
|
||||
.owl-carousel .owl-video-play-icon:hover {
|
||||
-ms-transform: scale(1.3, 1.3);
|
||||
transform: scale(1.3, 1.3); }
|
||||
|
||||
.owl-carousel .owl-video-playing .owl-video-tn,
|
||||
.owl-carousel .owl-video-playing .owl-video-play-icon {
|
||||
display: none; }
|
||||
|
||||
.owl-carousel .owl-video-tn {
|
||||
opacity: 0;
|
||||
height: 100%;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
transition: opacity 400ms ease; }
|
||||
|
||||
.owl-carousel .owl-video-frame {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
height: 100%;
|
||||
width: 100%; }
|
6
lib/owlcarousel/assets/owl.carousel.min.css
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
/**
|
||||
* Owl Carousel v2.3.4
|
||||
* Copyright 2013-2018 David Deutsch
|
||||
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
|
||||
*/
|
||||
.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}
|
50
lib/owlcarousel/assets/owl.theme.default.css
Normal file
|
@ -0,0 +1,50 @@
|
|||
/**
|
||||
* Owl Carousel v2.3.4
|
||||
* Copyright 2013-2018 David Deutsch
|
||||
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
|
||||
*/
|
||||
/*
|
||||
* Default theme - Owl Carousel CSS File
|
||||
*/
|
||||
.owl-theme .owl-nav {
|
||||
margin-top: 10px;
|
||||
text-align: center;
|
||||
-webkit-tap-highlight-color: transparent; }
|
||||
.owl-theme .owl-nav [class*='owl-'] {
|
||||
color: #FFF;
|
||||
font-size: 14px;
|
||||
margin: 5px;
|
||||
padding: 4px 7px;
|
||||
background: #D6D6D6;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
border-radius: 3px; }
|
||||
.owl-theme .owl-nav [class*='owl-']:hover {
|
||||
background: #869791;
|
||||
color: #FFF;
|
||||
text-decoration: none; }
|
||||
.owl-theme .owl-nav .disabled {
|
||||
opacity: 0.5;
|
||||
cursor: default; }
|
||||
|
||||
.owl-theme .owl-nav.disabled + .owl-dots {
|
||||
margin-top: 10px; }
|
||||
|
||||
.owl-theme .owl-dots {
|
||||
text-align: center;
|
||||
-webkit-tap-highlight-color: transparent; }
|
||||
.owl-theme .owl-dots .owl-dot {
|
||||
display: inline-block;
|
||||
zoom: 1;
|
||||
*display: inline; }
|
||||
.owl-theme .owl-dots .owl-dot span {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin: 5px 7px;
|
||||
background: #D6D6D6;
|
||||
display: block;
|
||||
-webkit-backface-visibility: visible;
|
||||
transition: opacity 200ms ease;
|
||||
border-radius: 30px; }
|
||||
.owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span {
|
||||
background: #869791; }
|
6
lib/owlcarousel/assets/owl.theme.default.min.css
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
/**
|
||||
* Owl Carousel v2.3.4
|
||||
* Copyright 2013-2018 David Deutsch
|
||||
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
|
||||
*/
|
||||
.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791}
|
50
lib/owlcarousel/assets/owl.theme.green.css
Normal file
|
@ -0,0 +1,50 @@
|
|||
/**
|
||||
* Owl Carousel v2.3.4
|
||||
* Copyright 2013-2018 David Deutsch
|
||||
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
|
||||
*/
|
||||
/*
|
||||
* Green theme - Owl Carousel CSS File
|
||||
*/
|
||||
.owl-theme .owl-nav {
|
||||
margin-top: 10px;
|
||||
text-align: center;
|
||||
-webkit-tap-highlight-color: transparent; }
|
||||
.owl-theme .owl-nav [class*='owl-'] {
|
||||
color: #FFF;
|
||||
font-size: 14px;
|
||||
margin: 5px;
|
||||
padding: 4px 7px;
|
||||
background: #D6D6D6;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
border-radius: 3px; }
|
||||
.owl-theme .owl-nav [class*='owl-']:hover {
|
||||
background: #4DC7A0;
|
||||
color: #FFF;
|
||||
text-decoration: none; }
|
||||
.owl-theme .owl-nav .disabled {
|
||||
opacity: 0.5;
|
||||
cursor: default; }
|
||||
|
||||
.owl-theme .owl-nav.disabled + .owl-dots {
|
||||
margin-top: 10px; }
|
||||
|
||||
.owl-theme .owl-dots {
|
||||
text-align: center;
|
||||
-webkit-tap-highlight-color: transparent; }
|
||||
.owl-theme .owl-dots .owl-dot {
|
||||
display: inline-block;
|
||||
zoom: 1;
|
||||
*display: inline; }
|
||||
.owl-theme .owl-dots .owl-dot span {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin: 5px 7px;
|
||||
background: #D6D6D6;
|
||||
display: block;
|
||||
-webkit-backface-visibility: visible;
|
||||
transition: opacity 200ms ease;
|
||||
border-radius: 30px; }
|
||||
.owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span {
|
||||
background: #4DC7A0; }
|
6
lib/owlcarousel/assets/owl.theme.green.min.css
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
/**
|
||||
* Owl Carousel v2.3.4
|
||||
* Copyright 2013-2018 David Deutsch
|
||||
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
|
||||
*/
|
||||
.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#4DC7A0;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#4DC7A0}
|
BIN
lib/owlcarousel/assets/owl.video.play.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
3448
lib/owlcarousel/owl.carousel.js
Normal file
7
lib/owlcarousel/owl.carousel.min.js
vendored
Normal file
7
lib/waypoints/waypoints.min.js
vendored
Normal file
542
lib/wow/wow.js
Normal file
|
@ -0,0 +1,542 @@
|
|||
/*
|
||||
* WOW wow.js - v1.3.0 - 2016-10-04
|
||||
* https://wowjs.uk
|
||||
* Copyright (c) 2016 Thomas Grainger; Licensed MIT
|
||||
*/
|
||||
|
||||
(function (global, factory) {
|
||||
if (typeof define === "function" && define.amd) {
|
||||
define(['module', 'exports'], factory);
|
||||
} else if (typeof exports !== "undefined") {
|
||||
factory(module, exports);
|
||||
} else {
|
||||
var mod = {
|
||||
exports: {}
|
||||
};
|
||||
factory(mod, mod.exports);
|
||||
global.WOW = mod.exports;
|
||||
}
|
||||
})(this, function (module, exports) {
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _class, _temp;
|
||||
|
||||
function _classCallCheck(instance, Constructor) {
|
||||
if (!(instance instanceof Constructor)) {
|
||||
throw new TypeError("Cannot call a class as a function");
|
||||
}
|
||||
}
|
||||
|
||||
var _createClass = function () {
|
||||
function defineProperties(target, props) {
|
||||
for (var i = 0; i < props.length; i++) {
|
||||
var descriptor = props[i];
|
||||
descriptor.enumerable = descriptor.enumerable || false;
|
||||
descriptor.configurable = true;
|
||||
if ("value" in descriptor) descriptor.writable = true;
|
||||
Object.defineProperty(target, descriptor.key, descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
return function (Constructor, protoProps, staticProps) {
|
||||
if (protoProps) defineProperties(Constructor.prototype, protoProps);
|
||||
if (staticProps) defineProperties(Constructor, staticProps);
|
||||
return Constructor;
|
||||
};
|
||||
}();
|
||||
|
||||
function isIn(needle, haystack) {
|
||||
return haystack.indexOf(needle) >= 0;
|
||||
}
|
||||
|
||||
function extend(custom, defaults) {
|
||||
for (var key in defaults) {
|
||||
if (custom[key] == null) {
|
||||
var value = defaults[key];
|
||||
custom[key] = value;
|
||||
}
|
||||
}
|
||||
return custom;
|
||||
}
|
||||
|
||||
function isMobile(agent) {
|
||||
return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent)
|
||||
);
|
||||
}
|
||||
|
||||
function createEvent(event) {
|
||||
var bubble = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
|
||||
var cancel = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];
|
||||
var detail = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
|
||||
|
||||
var customEvent = void 0;
|
||||
if (document.createEvent != null) {
|
||||
// W3C DOM
|
||||
customEvent = document.createEvent('CustomEvent');
|
||||
customEvent.initCustomEvent(event, bubble, cancel, detail);
|
||||
} else if (document.createEventObject != null) {
|
||||
// IE DOM < 9
|
||||
customEvent = document.createEventObject();
|
||||
customEvent.eventType = event;
|
||||
} else {
|
||||
customEvent.eventName = event;
|
||||
}
|
||||
|
||||
return customEvent;
|
||||
}
|
||||
|
||||
function emitEvent(elem, event) {
|
||||
if (elem.dispatchEvent != null) {
|
||||
// W3C DOM
|
||||
elem.dispatchEvent(event);
|
||||
} else if (event in (elem != null)) {
|
||||
elem[event]();
|
||||
} else if ('on' + event in (elem != null)) {
|
||||
elem['on' + event]();
|
||||
}
|
||||
}
|
||||
|
||||
function addEvent(elem, event, fn) {
|
||||
if (elem.addEventListener != null) {
|
||||
// W3C DOM
|
||||
elem.addEventListener(event, fn, false);
|
||||
} else if (elem.attachEvent != null) {
|
||||
// IE DOM
|
||||
elem.attachEvent('on' + event, fn);
|
||||
} else {
|
||||
// fallback
|
||||
elem[event] = fn;
|
||||
}
|
||||
}
|
||||
|
||||
function removeEvent(elem, event, fn) {
|
||||
if (elem.removeEventListener != null) {
|
||||
// W3C DOM
|
||||
elem.removeEventListener(event, fn, false);
|
||||
} else if (elem.detachEvent != null) {
|
||||
// IE DOM
|
||||
elem.detachEvent('on' + event, fn);
|
||||
} else {
|
||||
// fallback
|
||||
delete elem[event];
|
||||
}
|
||||
}
|
||||
|
||||
function getInnerHeight() {
|
||||
if ('innerHeight' in window) {
|
||||
return window.innerHeight;
|
||||
}
|
||||
|
||||
return document.documentElement.clientHeight;
|
||||
}
|
||||
|
||||
// Minimalistic WeakMap shim, just in case.
|
||||
var WeakMap = window.WeakMap || window.MozWeakMap || function () {
|
||||
function WeakMap() {
|
||||
_classCallCheck(this, WeakMap);
|
||||
|
||||
this.keys = [];
|
||||
this.values = [];
|
||||
}
|
||||
|
||||
_createClass(WeakMap, [{
|
||||
key: 'get',
|
||||
value: function get(key) {
|
||||
for (var i = 0; i < this.keys.length; i++) {
|
||||
var item = this.keys[i];
|
||||
if (item === key) {
|
||||
return this.values[i];
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
}, {
|
||||
key: 'set',
|
||||
value: function set(key, value) {
|
||||
for (var i = 0; i < this.keys.length; i++) {
|
||||
var item = this.keys[i];
|
||||
if (item === key) {
|
||||
this.values[i] = value;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
this.keys.push(key);
|
||||
this.values.push(value);
|
||||
return this;
|
||||
}
|
||||
}]);
|
||||
|
||||
return WeakMap;
|
||||
}();
|
||||
|
||||
// Dummy MutationObserver, to avoid raising exceptions.
|
||||
var MutationObserver = window.MutationObserver || window.WebkitMutationObserver || window.MozMutationObserver || (_temp = _class = function () {
|
||||
function MutationObserver() {
|
||||
_classCallCheck(this, MutationObserver);
|
||||
|
||||
if (typeof console !== 'undefined' && console !== null) {
|
||||
console.warn('MutationObserver is not supported by your browser.');
|
||||
console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');
|
||||
}
|
||||
}
|
||||
|
||||
_createClass(MutationObserver, [{
|
||||
key: 'observe',
|
||||
value: function observe() {}
|
||||
}]);
|
||||
|
||||
return MutationObserver;
|
||||
}(), _class.notSupported = true, _temp);
|
||||
|
||||
// getComputedStyle shim, from http://stackoverflow.com/a/21797294
|
||||
var getComputedStyle = window.getComputedStyle || function getComputedStyle(el) {
|
||||
var getComputedStyleRX = /(\-([a-z]){1})/g;
|
||||
return {
|
||||
getPropertyValue: function getPropertyValue(prop) {
|
||||
if (prop === 'float') {
|
||||
prop = 'styleFloat';
|
||||
}
|
||||
if (getComputedStyleRX.test(prop)) {
|
||||
prop.replace(getComputedStyleRX, function (_, _char) {
|
||||
return _char.toUpperCase();
|
||||
});
|
||||
}
|
||||
var currentStyle = el.currentStyle;
|
||||
|
||||
return (currentStyle != null ? currentStyle[prop] : void 0) || null;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
var WOW = function () {
|
||||
function WOW() {
|
||||
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
||||
|
||||
_classCallCheck(this, WOW);
|
||||
|
||||
this.defaults = {
|
||||
boxClass: 'wow',
|
||||
animateClass: 'animated',
|
||||
offset: 0,
|
||||
mobile: true,
|
||||
live: true,
|
||||
callback: null,
|
||||
scrollContainer: null,
|
||||
resetAnimation: true
|
||||
};
|
||||
|
||||
this.animate = function animateFactory() {
|
||||
if ('requestAnimationFrame' in window) {
|
||||
return function (callback) {
|
||||
return window.requestAnimationFrame(callback);
|
||||
};
|
||||
}
|
||||
return function (callback) {
|
||||
return callback();
|
||||
};
|
||||
}();
|
||||
|
||||
this.vendors = ['moz', 'webkit'];
|
||||
|
||||
this.start = this.start.bind(this);
|
||||
this.resetAnimation = this.resetAnimation.bind(this);
|
||||
this.scrollHandler = this.scrollHandler.bind(this);
|
||||
this.scrollCallback = this.scrollCallback.bind(this);
|
||||
this.scrolled = true;
|
||||
this.config = extend(options, this.defaults);
|
||||
if (options.scrollContainer != null) {
|
||||
this.config.scrollContainer = document.querySelector(options.scrollContainer);
|
||||
}
|
||||
// Map of elements to animation names:
|
||||
this.animationNameCache = new WeakMap();
|
||||
this.wowEvent = createEvent(this.config.boxClass);
|
||||
}
|
||||
|
||||
_createClass(WOW, [{
|
||||
key: 'init',
|
||||
value: function init() {
|
||||
this.element = window.document.documentElement;
|
||||
if (isIn(document.readyState, ['interactive', 'complete'])) {
|
||||
this.start();
|
||||
} else {
|
||||
addEvent(document, 'DOMContentLoaded', this.start);
|
||||
}
|
||||
this.finished = [];
|
||||
}
|
||||
}, {
|
||||
key: 'start',
|
||||
value: function start() {
|
||||
var _this = this;
|
||||
|
||||
this.stopped = false;
|
||||
this.boxes = [].slice.call(this.element.querySelectorAll('.' + this.config.boxClass));
|
||||
this.all = this.boxes.slice(0);
|
||||
if (this.boxes.length) {
|
||||
if (this.disabled()) {
|
||||
this.resetStyle();
|
||||
} else {
|
||||
for (var i = 0; i < this.boxes.length; i++) {
|
||||
var box = this.boxes[i];
|
||||
this.applyStyle(box, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!this.disabled()) {
|
||||
addEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);
|
||||
addEvent(window, 'resize', this.scrollHandler);
|
||||
this.interval = setInterval(this.scrollCallback, 50);
|
||||
}
|
||||
if (this.config.live) {
|
||||
var mut = new MutationObserver(function (records) {
|
||||
for (var j = 0; j < records.length; j++) {
|
||||
var record = records[j];
|
||||
for (var k = 0; k < record.addedNodes.length; k++) {
|
||||
var node = record.addedNodes[k];
|
||||
_this.doSync(node);
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
});
|
||||
mut.observe(document.body, {
|
||||
childList: true,
|
||||
subtree: true
|
||||
});
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'stop',
|
||||
value: function stop() {
|
||||
this.stopped = true;
|
||||
removeEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);
|
||||
removeEvent(window, 'resize', this.scrollHandler);
|
||||
if (this.interval != null) {
|
||||
clearInterval(this.interval);
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'sync',
|
||||
value: function sync() {
|
||||
if (MutationObserver.notSupported) {
|
||||
this.doSync(this.element);
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'doSync',
|
||||
value: function doSync(element) {
|
||||
if (typeof element === 'undefined' || element === null) {
|
||||
element = this.element;
|
||||
}
|
||||
if (element.nodeType !== 1) {
|
||||
return;
|
||||
}
|
||||
element = element.parentNode || element;
|
||||
var iterable = element.querySelectorAll('.' + this.config.boxClass);
|
||||
for (var i = 0; i < iterable.length; i++) {
|
||||
var box = iterable[i];
|
||||
if (!isIn(box, this.all)) {
|
||||
this.boxes.push(box);
|
||||
this.all.push(box);
|
||||
if (this.stopped || this.disabled()) {
|
||||
this.resetStyle();
|
||||
} else {
|
||||
this.applyStyle(box, true);
|
||||
}
|
||||
this.scrolled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'show',
|
||||
value: function show(box) {
|
||||
this.applyStyle(box);
|
||||
box.className = box.className + ' ' + this.config.animateClass;
|
||||
if (this.config.callback != null) {
|
||||
this.config.callback(box);
|
||||
}
|
||||
emitEvent(box, this.wowEvent);
|
||||
|
||||
if (this.config.resetAnimation) {
|
||||
addEvent(box, 'animationend', this.resetAnimation);
|
||||
addEvent(box, 'oanimationend', this.resetAnimation);
|
||||
addEvent(box, 'webkitAnimationEnd', this.resetAnimation);
|
||||
addEvent(box, 'MSAnimationEnd', this.resetAnimation);
|
||||
}
|
||||
|
||||
return box;
|
||||
}
|
||||
}, {
|
||||
key: 'applyStyle',
|
||||
value: function applyStyle(box, hidden) {
|
||||
var _this2 = this;
|
||||
|
||||
var duration = box.getAttribute('data-wow-duration');
|
||||
var delay = box.getAttribute('data-wow-delay');
|
||||
var iteration = box.getAttribute('data-wow-iteration');
|
||||
|
||||
return this.animate(function () {
|
||||
return _this2.customStyle(box, hidden, duration, delay, iteration);
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: 'resetStyle',
|
||||
value: function resetStyle() {
|
||||
for (var i = 0; i < this.boxes.length; i++) {
|
||||
var box = this.boxes[i];
|
||||
box.style.visibility = 'visible';
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
}, {
|
||||
key: 'resetAnimation',
|
||||
value: function resetAnimation(event) {
|
||||
if (event.type.toLowerCase().indexOf('animationend') >= 0) {
|
||||
var target = event.target || event.srcElement;
|
||||
target.className = target.className.replace(this.config.animateClass, '').trim();
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'customStyle',
|
||||
value: function customStyle(box, hidden, duration, delay, iteration) {
|
||||
if (hidden) {
|
||||
this.cacheAnimationName(box);
|
||||
}
|
||||
box.style.visibility = hidden ? 'hidden' : 'visible';
|
||||
|
||||
if (duration) {
|
||||
this.vendorSet(box.style, { animationDuration: duration });
|
||||
}
|
||||
if (delay) {
|
||||
this.vendorSet(box.style, { animationDelay: delay });
|
||||
}
|
||||
if (iteration) {
|
||||
this.vendorSet(box.style, { animationIterationCount: iteration });
|
||||
}
|
||||
this.vendorSet(box.style, { animationName: hidden ? 'none' : this.cachedAnimationName(box) });
|
||||
|
||||
return box;
|
||||
}
|
||||
}, {
|
||||
key: 'vendorSet',
|
||||
value: function vendorSet(elem, properties) {
|
||||
for (var name in properties) {
|
||||
if (properties.hasOwnProperty(name)) {
|
||||
var value = properties[name];
|
||||
elem['' + name] = value;
|
||||
for (var i = 0; i < this.vendors.length; i++) {
|
||||
var vendor = this.vendors[i];
|
||||
elem['' + vendor + name.charAt(0).toUpperCase() + name.substr(1)] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'vendorCSS',
|
||||
value: function vendorCSS(elem, property) {
|
||||
var style = getComputedStyle(elem);
|
||||
var result = style.getPropertyCSSValue(property);
|
||||
for (var i = 0; i < this.vendors.length; i++) {
|
||||
var vendor = this.vendors[i];
|
||||
result = result || style.getPropertyCSSValue('-' + vendor + '-' + property);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}, {
|
||||
key: 'animationName',
|
||||
value: function animationName(box) {
|
||||
var aName = void 0;
|
||||
try {
|
||||
aName = this.vendorCSS(box, 'animation-name').cssText;
|
||||
} catch (error) {
|
||||
// Opera, fall back to plain property value
|
||||
aName = getComputedStyle(box).getPropertyValue('animation-name');
|
||||
}
|
||||
|
||||
if (aName === 'none') {
|
||||
return ''; // SVG/Firefox, unable to get animation name?
|
||||
}
|
||||
|
||||
return aName;
|
||||
}
|
||||
}, {
|
||||
key: 'cacheAnimationName',
|
||||
value: function cacheAnimationName(box) {
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=921834
|
||||
// box.dataset is not supported for SVG elements in Firefox
|
||||
return this.animationNameCache.set(box, this.animationName(box));
|
||||
}
|
||||
}, {
|
||||
key: 'cachedAnimationName',
|
||||
value: function cachedAnimationName(box) {
|
||||
return this.animationNameCache.get(box);
|
||||
}
|
||||
}, {
|
||||
key: 'scrollHandler',
|
||||
value: function scrollHandler() {
|
||||
this.scrolled = true;
|
||||
}
|
||||
}, {
|
||||
key: 'scrollCallback',
|
||||
value: function scrollCallback() {
|
||||
if (this.scrolled) {
|
||||
this.scrolled = false;
|
||||
var results = [];
|
||||
for (var i = 0; i < this.boxes.length; i++) {
|
||||
var box = this.boxes[i];
|
||||
if (box) {
|
||||
if (this.isVisible(box)) {
|
||||
this.show(box);
|
||||
continue;
|
||||
}
|
||||
results.push(box);
|
||||
}
|
||||
}
|
||||
this.boxes = results;
|
||||
if (!this.boxes.length && !this.config.live) {
|
||||
this.stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'offsetTop',
|
||||
value: function offsetTop(element) {
|
||||
// SVG elements don't have an offsetTop in Firefox.
|
||||
// This will use their nearest parent that has an offsetTop.
|
||||
// Also, using ('offsetTop' of element) causes an exception in Firefox.
|
||||
while (element.offsetTop === undefined) {
|
||||
element = element.parentNode;
|
||||
}
|
||||
var top = element.offsetTop;
|
||||
while (element.offsetParent) {
|
||||
element = element.offsetParent;
|
||||
top += element.offsetTop;
|
||||
}
|
||||
return top;
|
||||
}
|
||||
}, {
|
||||
key: 'isVisible',
|
||||
value: function isVisible(box) {
|
||||
var offset = box.getAttribute('data-wow-offset') || this.config.offset;
|
||||
var viewTop = this.config.scrollContainer && this.config.scrollContainer.scrollTop || window.pageYOffset;
|
||||
var viewBottom = viewTop + Math.min(this.element.clientHeight, getInnerHeight()) - offset;
|
||||
var top = this.offsetTop(box);
|
||||
var bottom = top + box.clientHeight;
|
||||
|
||||
return top <= viewBottom && bottom >= viewTop;
|
||||
}
|
||||
}, {
|
||||
key: 'disabled',
|
||||
value: function disabled() {
|
||||
return !this.config.mobile && isMobile(navigator.userAgent);
|
||||
}
|
||||
}]);
|
||||
|
||||
return WOW;
|
||||
}();
|
||||
|
||||
exports.default = WOW;
|
||||
module.exports = exports['default'];
|
||||
});
|