Website templates
6
reveal/Readme.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Thanks for downloading this theme!
|
||||
|
||||
Theme Name: Reveal
|
||||
Theme URL: https://bootstrapmade.com/reveal-bootstrap-corporate-template/
|
||||
Author: BootstrapMade.com
|
||||
Author URL: https://bootstrapmade.com
|
||||
2
reveal/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/buy/?theme=Reveal
|
||||
114
reveal/contactform/contactform.js
Normal file
@@ -0,0 +1,114 @@
|
||||
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.attr('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();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "contactform/contactform.php",
|
||||
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
reveal/css/scss-files.txt
Normal file
@@ -0,0 +1 @@
|
||||
The scss source files are available in the pro version.
|
||||
1083
reveal/css/style.css
Normal file
BIN
reveal/img/about-img.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
reveal/img/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
reveal/img/clients/client-1.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
reveal/img/clients/client-2.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
reveal/img/clients/client-3.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
reveal/img/clients/client-4.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
reveal/img/clients/client-5.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
reveal/img/clients/client-6.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
reveal/img/clients/client-7.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
reveal/img/clients/client-8.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
reveal/img/favicon.png
Normal file
|
After Width: | Height: | Size: 491 B |
BIN
reveal/img/intro-carousel/1.jpg
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
reveal/img/intro-carousel/2.jpg
Normal file
|
After Width: | Height: | Size: 258 KiB |
BIN
reveal/img/intro-carousel/3.jpg
Normal file
|
After Width: | Height: | Size: 205 KiB |
BIN
reveal/img/intro-carousel/4.jpg
Normal file
|
After Width: | Height: | Size: 179 KiB |
BIN
reveal/img/intro-carousel/5.jpg
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
reveal/img/portfolio/1.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
reveal/img/portfolio/2.jpg
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
reveal/img/portfolio/3.jpg
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
reveal/img/portfolio/4.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
reveal/img/portfolio/5.jpg
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
reveal/img/portfolio/6.jpg
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
reveal/img/portfolio/7.jpg
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
reveal/img/portfolio/8.jpg
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
reveal/img/preloader.gif
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
reveal/img/quote-sign-left.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
reveal/img/quote-sign-right.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
reveal/img/team-1.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
reveal/img/team-2.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
reveal/img/team-3.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
reveal/img/team-4.jpg
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
reveal/img/testimonial-1.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
reveal/img/testimonial-2.jpg
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
reveal/img/testimonial-3.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
reveal/img/testimonial-4.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
reveal/img/testimonial-5.jpg
Normal file
|
After Width: | Height: | Size: 26 KiB |
604
reveal/index.html
Normal file
@@ -0,0 +1,604 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Reveal Bootstrap Template</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.png" 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|Raleway:300,400,500,700,800|Montserrat:300,400,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/magnific-popup/magnific-popup.css" rel="stylesheet">
|
||||
<link href="lib/ionicons/css/ionicons.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Main Stylesheet File -->
|
||||
<link href="css/style.css" rel="stylesheet">
|
||||
|
||||
<!-- =======================================================
|
||||
Theme Name: Reveal
|
||||
Theme URL: https://bootstrapmade.com/reveal-bootstrap-corporate-template/
|
||||
Author: BootstrapMade.com
|
||||
License: https://bootstrapmade.com/license/
|
||||
======================================================= -->
|
||||
</head>
|
||||
|
||||
<body id="body">
|
||||
|
||||
<!--==========================
|
||||
Top Bar
|
||||
============================-->
|
||||
<section id="topbar" class="d-none d-lg-block">
|
||||
<div class="container clearfix">
|
||||
<div class="contact-info float-left">
|
||||
<i class="fa fa-envelope-o"></i> <a href="mailto:contact@example.com">contact@example.com</a>
|
||||
<i class="fa fa-phone"></i> +1 5589 55488 55
|
||||
</div>
|
||||
<div class="social-links float-right">
|
||||
<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>
|
||||
</section>
|
||||
|
||||
<!--==========================
|
||||
Header
|
||||
============================-->
|
||||
<header id="header">
|
||||
<div class="container">
|
||||
|
||||
<div id="logo" class="pull-left">
|
||||
<h1><a href="#body" class="scrollto">Reve<span>al</span></a></h1>
|
||||
<!-- Uncomment below if you prefer to use an image logo -->
|
||||
<!-- <a href="#body"><img src="img/logo.png" alt="" title="" /></a>-->
|
||||
</div>
|
||||
|
||||
<nav id="nav-menu-container">
|
||||
<ul class="nav-menu">
|
||||
<li class="menu-active"><a href="#body">Home</a></li>
|
||||
<li><a href="#about">About Us</a></li>
|
||||
<li><a href="#services">Services</a></li>
|
||||
<li><a href="#portfolio">Portfolio</a></li>
|
||||
<li><a href="#team">Team</a></li>
|
||||
<li class="menu-has-children"><a href="">Drop Down</a>
|
||||
<ul>
|
||||
<li><a href="#">Drop Down 1</a></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</a></li>
|
||||
</ul>
|
||||
</nav><!-- #nav-menu-container -->
|
||||
</div>
|
||||
</header><!-- #header -->
|
||||
|
||||
<!--==========================
|
||||
Intro Section
|
||||
============================-->
|
||||
<section id="intro">
|
||||
|
||||
<div class="intro-content">
|
||||
<h2>Making <span>your ideas</span><br>happen!</h2>
|
||||
<div>
|
||||
<a href="#about" class="btn-get-started scrollto">Get Started</a>
|
||||
<a href="#portfolio" class="btn-projects scrollto">Our Projects</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="intro-carousel" class="owl-carousel" >
|
||||
<div class="item" style="background-image: url('img/intro-carousel/1.jpg');"></div>
|
||||
<div class="item" style="background-image: url('img/intro-carousel/2.jpg');"></div>
|
||||
<div class="item" style="background-image: url('img/intro-carousel/3.jpg');"></div>
|
||||
<div class="item" style="background-image: url('img/intro-carousel/4.jpg');"></div>
|
||||
<div class="item" style="background-image: url('img/intro-carousel/5.jpg');"></div>
|
||||
</div>
|
||||
|
||||
</section><!-- #intro -->
|
||||
|
||||
<main id="main">
|
||||
|
||||
<!--==========================
|
||||
About Section
|
||||
============================-->
|
||||
<section id="about" class="wow fadeInUp">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 about-img">
|
||||
<img src="img/about-img.jpg" alt="">
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 content">
|
||||
<h2>Lorem ipsum dolor sit amet, consectetur adipiscing</h2>
|
||||
<h3>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</h3>
|
||||
|
||||
<ul>
|
||||
<li><i class="ion-android-checkmark-circle"></i> Ullamco laboris nisi ut aliquip ex ea commodo consequat.</li>
|
||||
<li><i class="ion-android-checkmark-circle"></i> Duis aute irure dolor in reprehenderit in voluptate velit.</li>
|
||||
<li><i class="ion-android-checkmark-circle"></i> Ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate trideta storacalaperda mastiro dolore eu fugiat nulla pariatur.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- #about -->
|
||||
|
||||
<!--==========================
|
||||
Services Section
|
||||
============================-->
|
||||
<section id="services">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>Services</h2>
|
||||
<p>Sed tamen tempor magna labore dolore dolor sint tempor duis magna elit veniam aliqua esse amet veniam enim export quid quid veniam aliqua eram noster malis nulla duis fugiat culpa esse aute nulla ipsum velit export irure minim illum fore</p>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="box wow fadeInLeft">
|
||||
<div class="icon"><i class="fa fa-bar-chart"></i></div>
|
||||
<h4 class="title"><a href="">Lorem Ipsum</a></h4>
|
||||
<p class="description">Voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident etiro rabeta lingo.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="box wow fadeInRight">
|
||||
<div class="icon"><i class="fa fa-picture-o"></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 nodera clas.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="box wow fadeInLeft" data-wow-delay="0.2s">
|
||||
<div class="icon"><i class="fa fa-shopping-bag"></i></div>
|
||||
<h4 class="title"><a href="">Sed ut perspiciatis</a></h4>
|
||||
<p class="description">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur trinige zareta lobur trade.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="box wow fadeInRight" data-wow-delay="0.2s">
|
||||
<div class="icon"><i class="fa fa-map"></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 rideta zanox satirente madera</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- #services -->
|
||||
|
||||
<!--==========================
|
||||
Clients Section
|
||||
============================-->
|
||||
<section id="clients" class="wow fadeInUp">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>Clients</h2>
|
||||
<p>Sed tamen tempor magna labore dolore dolor sint tempor duis magna elit veniam aliqua esse amet veniam enim export quid quid veniam aliqua eram noster malis nulla duis fugiat culpa esse aute nulla ipsum velit export irure minim illum fore</p>
|
||||
</div>
|
||||
|
||||
<div class="owl-carousel clients-carousel">
|
||||
<img src="img/clients/client-1.png" alt="">
|
||||
<img src="img/clients/client-2.png" alt="">
|
||||
<img src="img/clients/client-3.png" alt="">
|
||||
<img src="img/clients/client-4.png" alt="">
|
||||
<img src="img/clients/client-5.png" alt="">
|
||||
<img src="img/clients/client-6.png" alt="">
|
||||
<img src="img/clients/client-7.png" alt="">
|
||||
<img src="img/clients/client-8.png" alt="">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- #clients -->
|
||||
|
||||
<!--==========================
|
||||
Our Portfolio Section
|
||||
============================-->
|
||||
<section id="portfolio" class="wow fadeInUp">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>Our Portfolio</h2>
|
||||
<p>Sed tamen tempor magna labore dolore dolor sint tempor duis magna elit veniam aliqua esse amet veniam enim export quid quid veniam aliqua eram noster malis nulla duis fugiat culpa esse aute nulla ipsum velit export irure minim illum fore</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row no-gutters">
|
||||
|
||||
<div class="col-lg-3 col-md-4">
|
||||
<div class="portfolio-item wow fadeInUp">
|
||||
<a href="img/portfolio/1.jpg" class="portfolio-popup">
|
||||
<img src="img/portfolio/1.jpg" alt="">
|
||||
<div class="portfolio-overlay">
|
||||
<div class="portfolio-info"><h2 class="wow fadeInUp">Portfolio Item 1</h2></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4">
|
||||
<div class="portfolio-item wow fadeInUp">
|
||||
<a href="img/portfolio/2.jpg" class="portfolio-popup">
|
||||
<img src="img/portfolio/2.jpg" alt="">
|
||||
<div class="portfolio-overlay">
|
||||
<div class="portfolio-info"><h2 class="wow fadeInUp">Portfolio Item 2</h2></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4">
|
||||
<div class="portfolio-item wow fadeInUp">
|
||||
<a href="img/portfolio/3.jpg" class="portfolio-popup">
|
||||
<img src="img/portfolio/3.jpg" alt="">
|
||||
<div class="portfolio-overlay">
|
||||
<div class="portfolio-info"><h2 class="wow fadeInUp">Portfolio Item 3</h2></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4">
|
||||
<div class="portfolio-item wow fadeInUp">
|
||||
<a href="img/portfolio/4.jpg" class="portfolio-popup">
|
||||
<img src="img/portfolio/4.jpg" alt="">
|
||||
<div class="portfolio-overlay">
|
||||
<div class="portfolio-info"><h2 class="wow fadeInUp">Portfolio Item 4</h2></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4">
|
||||
<div class="portfolio-item wow fadeInUp">
|
||||
<a href="img/portfolio/5.jpg" class="portfolio-popup">
|
||||
<img src="img/portfolio/5.jpg" alt="">
|
||||
<div class="portfolio-overlay">
|
||||
<div class="portfolio-info"><h2 class="wow fadeInUp">Portfolio Item 5</h2></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4">
|
||||
<div class="portfolio-item wow fadeInUp">
|
||||
<a href="img/portfolio/6.jpg" class="portfolio-popup">
|
||||
<img src="img/portfolio/6.jpg" alt="">
|
||||
<div class="portfolio-overlay">
|
||||
<div class="portfolio-info"><h2 class="wow fadeInUp">Portfolio Item 6</h2></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4">
|
||||
<div class="portfolio-item wow fadeInUp">
|
||||
<a href="img/portfolio/7.jpg" class="portfolio-popup">
|
||||
<img src="img/portfolio/7.jpg" alt="">
|
||||
<div class="portfolio-overlay">
|
||||
<div class="portfolio-info"><h2 class="wow fadeInUp">Portfolio Item 7</h2></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-4">
|
||||
<div class="portfolio-item wow fadeInUp">
|
||||
<a href="img/portfolio/8.jpg" class="portfolio-popup">
|
||||
<img src="img/portfolio/8.jpg" alt="">
|
||||
<div class="portfolio-overlay">
|
||||
<div class="portfolio-info"><h2 class="wow fadeInUp">Portfolio Item 8</h2></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- #portfolio -->
|
||||
|
||||
<!--==========================
|
||||
Testimonials Section
|
||||
============================-->
|
||||
<section id="testimonials" class="wow fadeInUp">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>Testimonials</h2>
|
||||
<p>Sed tamen tempor magna labore dolore dolor sint tempor duis magna elit veniam aliqua esse amet veniam enim export quid quid veniam aliqua eram noster malis nulla duis fugiat culpa esse aute nulla ipsum velit export irure minim illum fore</p>
|
||||
</div>
|
||||
<div class="owl-carousel testimonials-carousel">
|
||||
|
||||
<div class="testimonial-item">
|
||||
<p>
|
||||
<img src="img/quote-sign-left.png" class="quote-sign-left" alt="">
|
||||
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.
|
||||
<img src="img/quote-sign-right.png" class="quote-sign-right" alt="">
|
||||
</p>
|
||||
<img src="img/testimonial-1.jpg" class="testimonial-img" alt="">
|
||||
<h3>Saul Goodman</h3>
|
||||
<h4>Ceo & Founder</h4>
|
||||
</div>
|
||||
|
||||
<div class="testimonial-item">
|
||||
<p>
|
||||
<img src="img/quote-sign-left.png" class="quote-sign-left" alt="">
|
||||
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.
|
||||
<img src="img/quote-sign-right.png" class="quote-sign-right" alt="">
|
||||
</p>
|
||||
<img src="img/testimonial-2.jpg" class="testimonial-img" alt="">
|
||||
<h3>Sara Wilsson</h3>
|
||||
<h4>Designer</h4>
|
||||
</div>
|
||||
|
||||
<div class="testimonial-item">
|
||||
<p>
|
||||
<img src="img/quote-sign-left.png" class="quote-sign-left" alt="">
|
||||
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.
|
||||
<img src="img/quote-sign-right.png" class="quote-sign-right" alt="">
|
||||
</p>
|
||||
<img src="img/testimonial-3.jpg" class="testimonial-img" alt="">
|
||||
<h3>Jena Karlis</h3>
|
||||
<h4>Store Owner</h4>
|
||||
</div>
|
||||
|
||||
<div class="testimonial-item">
|
||||
<p>
|
||||
<img src="img/quote-sign-left.png" class="quote-sign-left" alt="">
|
||||
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.
|
||||
<img src="img/quote-sign-right.png" class="quote-sign-right" alt="">
|
||||
</p>
|
||||
<img src="img/testimonial-4.jpg" class="testimonial-img" alt="">
|
||||
<h3>Matt Brandon</h3>
|
||||
<h4>Freelancer</h4>
|
||||
</div>
|
||||
|
||||
<div class="testimonial-item">
|
||||
<p>
|
||||
<img src="img/quote-sign-left.png" class="quote-sign-left" alt="">
|
||||
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.
|
||||
<img src="img/quote-sign-right.png" class="quote-sign-right" alt="">
|
||||
</p>
|
||||
<img src="img/testimonial-5.jpg" class="testimonial-img" alt="">
|
||||
<h3>John Larson</h3>
|
||||
<h4>Entrepreneur</h4>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- #testimonials -->
|
||||
|
||||
<!--==========================
|
||||
Call To Action Section
|
||||
============================-->
|
||||
<section id="call-to-action" class="wow fadeInUp">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-9 text-center text-lg-left">
|
||||
<h3 class="cta-title">Call To Action</h3>
|
||||
<p class="cta-text"> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
||||
</div>
|
||||
<div class="col-lg-3 cta-btn-container text-center">
|
||||
<a class="cta-btn align-middle" href="#">Call To Action</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- #call-to-action -->
|
||||
|
||||
<!--==========================
|
||||
Our Team Section
|
||||
============================-->
|
||||
<section id="team" class="wow fadeInUp">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>Our Team</h2>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<div class="member">
|
||||
<div class="pic"><img src="img/team-1.jpg" alt=""></div>
|
||||
<div class="details">
|
||||
<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 class="col-lg-3 col-md-6">
|
||||
<div class="member">
|
||||
<div class="pic"><img src="img/team-2.jpg" alt=""></div>
|
||||
<div class="details">
|
||||
<h4>Sarah Jhinson</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 class="col-lg-3 col-md-6">
|
||||
<div class="member">
|
||||
<div class="pic"><img src="img/team-3.jpg" alt=""></div>
|
||||
<div class="details">
|
||||
<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 class="col-lg-3 col-md-6">
|
||||
<div class="member">
|
||||
<div class="pic"><img src="img/team-4.jpg" alt=""></div>
|
||||
<div class="details">
|
||||
<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>
|
||||
</section><!-- #team -->
|
||||
|
||||
<!--==========================
|
||||
Contact Section
|
||||
============================-->
|
||||
<section id="contact" class="wow fadeInUp">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>Contact Us</h2>
|
||||
<p>Sed tamen tempor magna labore dolore dolor sint tempor duis magna elit veniam aliqua esse amet veniam enim export quid quid veniam aliqua eram noster malis nulla duis fugiat culpa esse aute nulla ipsum velit export irure minim illum fore</p>
|
||||
</div>
|
||||
|
||||
<div class="row contact-info">
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="contact-address">
|
||||
<i class="ion-ios-location-outline"></i>
|
||||
<h3>Address</h3>
|
||||
<address>A108 Adam Street, NY 535022, USA</address>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="contact-phone">
|
||||
<i class="ion-ios-telephone-outline"></i>
|
||||
<h3>Phone Number</h3>
|
||||
<p><a href="tel:+155895548855">+1 5589 55488 55</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="contact-email">
|
||||
<i class="ion-ios-email-outline"></i>
|
||||
<h3>Email</h3>
|
||||
<p><a href="mailto:info@example.com">info@example.com</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="google-map" data-latitude="40.713732" data-longitude="-74.0092704"></div>
|
||||
|
||||
<div class="container">
|
||||
<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-md-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-md-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">Send Message</button></div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section><!-- #contact -->
|
||||
|
||||
</main>
|
||||
|
||||
<!--==========================
|
||||
Footer
|
||||
============================-->
|
||||
<footer id="footer">
|
||||
<div class="container">
|
||||
<div class="copyright">
|
||||
© Copyright <strong>Reveal</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=Reveal
|
||||
-->
|
||||
<a href="https://bootstrapmade.com/">Free Bootstrap Templates</a> by BootstrapMade
|
||||
</div>
|
||||
</div>
|
||||
</footer><!-- #footer -->
|
||||
|
||||
<a href="#" class="back-to-top"><i class="fa fa-chevron-up"></i></a>
|
||||
|
||||
<!-- 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/superfish/hoverIntent.js"></script>
|
||||
<script src="lib/superfish/superfish.min.js"></script>
|
||||
<script src="lib/wow/wow.min.js"></script>
|
||||
<script src="lib/owlcarousel/owl.carousel.min.js"></script>
|
||||
<script src="lib/magnific-popup/magnific-popup.min.js"></script>
|
||||
<script src="lib/sticky/sticky.js"></script>
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyD8HeI8o-c1NppZA-92oYlXakhDPYR7XMY"></script>
|
||||
<!-- Contact Form JavaScript File -->
|
||||
<script src="contactform/contactform.js"></script>
|
||||
|
||||
<!-- Template Main Javascript File -->
|
||||
<script src="js/main.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
168
reveal/js/main.js
Normal file
@@ -0,0 +1,168 @@
|
||||
jQuery(document).ready(function( $ ) {
|
||||
|
||||
// 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;
|
||||
});
|
||||
|
||||
// Stick the header at top on scroll
|
||||
$("#header").sticky({topSpacing:0, zIndex: '50'});
|
||||
|
||||
// Intro background carousel
|
||||
$("#intro-carousel").owlCarousel({
|
||||
autoplay: true,
|
||||
dots: false,
|
||||
loop: true,
|
||||
animateOut: 'fadeOut',
|
||||
items: 1
|
||||
});
|
||||
|
||||
// Initiate the wowjs animation library
|
||||
new WOW().init();
|
||||
|
||||
// Initiate superfish on nav menu
|
||||
$('.nav-menu').superfish({
|
||||
animation: {
|
||||
opacity: 'show'
|
||||
},
|
||||
speed: 400
|
||||
});
|
||||
|
||||
// Mobile Navigation
|
||||
if ($('#nav-menu-container').length) {
|
||||
var $mobile_nav = $('#nav-menu-container').clone().prop({
|
||||
id: 'mobile-nav'
|
||||
});
|
||||
$mobile_nav.find('> ul').attr({
|
||||
'class': '',
|
||||
'id': ''
|
||||
});
|
||||
$('body').append($mobile_nav);
|
||||
$('body').prepend('<button type="button" id="mobile-nav-toggle"><i class="fa fa-bars"></i></button>');
|
||||
$('body').append('<div id="mobile-body-overly"></div>');
|
||||
$('#mobile-nav').find('.menu-has-children').prepend('<i class="fa fa-chevron-down"></i>');
|
||||
|
||||
$(document).on('click', '.menu-has-children i', function(e) {
|
||||
$(this).next().toggleClass('menu-item-active');
|
||||
$(this).nextAll('ul').eq(0).slideToggle();
|
||||
$(this).toggleClass("fa-chevron-up fa-chevron-down");
|
||||
});
|
||||
|
||||
$(document).on('click', '#mobile-nav-toggle', function(e) {
|
||||
$('body').toggleClass('mobile-nav-active');
|
||||
$('#mobile-nav-toggle i').toggleClass('fa-times fa-bars');
|
||||
$('#mobile-body-overly').toggle();
|
||||
});
|
||||
|
||||
$(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-body-overly').fadeOut();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if ($("#mobile-nav, #mobile-nav-toggle").length) {
|
||||
$("#mobile-nav, #mobile-nav-toggle").hide();
|
||||
}
|
||||
|
||||
// Smooth scroll for the menu and links with .scrollto classes
|
||||
$('.nav-menu 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-fixed') ) {
|
||||
top_space = top_space - 20;
|
||||
}
|
||||
}
|
||||
|
||||
$('html, body').animate({
|
||||
scrollTop: target.offset().top - top_space
|
||||
}, 1500, 'easeInOutExpo');
|
||||
|
||||
if ($(this).parents('.nav-menu').length) {
|
||||
$('.nav-menu .menu-active').removeClass('menu-active');
|
||||
$(this).closest('li').addClass('menu-active');
|
||||
}
|
||||
|
||||
if ($('body').hasClass('mobile-nav-active')) {
|
||||
$('body').removeClass('mobile-nav-active');
|
||||
$('#mobile-nav-toggle i').toggleClass('fa-times fa-bars');
|
||||
$('#mobile-body-overly').fadeOut();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Porfolio - uses the magnific popup jQuery plugin
|
||||
$('.portfolio-popup').magnificPopup({
|
||||
type: 'image',
|
||||
removalDelay: 300,
|
||||
mainClass: 'mfp-fade',
|
||||
gallery: {
|
||||
enabled: true
|
||||
},
|
||||
zoom: {
|
||||
enabled: true,
|
||||
duration: 300,
|
||||
easing: 'ease-in-out',
|
||||
opener: function(openerElement) {
|
||||
return openerElement.is('img') ? openerElement : openerElement.find('img');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Testimonials carousel (uses the Owl Carousel library)
|
||||
$(".testimonials-carousel").owlCarousel({
|
||||
autoplay: true,
|
||||
dots: true,
|
||||
loop: true,
|
||||
responsive: { 0: { items: 1 }, 768: { items: 2 }, 900: { items: 3 } }
|
||||
});
|
||||
|
||||
// Clients carousel (uses the Owl Carousel library)
|
||||
$(".clients-carousel").owlCarousel({
|
||||
autoplay: true,
|
||||
dots: true,
|
||||
loop: true,
|
||||
responsive: { 0: { items: 2 }, 768: { items: 4 }, 900: { items: 6 }
|
||||
}
|
||||
});
|
||||
|
||||
//Google Map
|
||||
var get_latitude = $('#google-map').data('latitude');
|
||||
var get_longitude = $('#google-map').data('longitude');
|
||||
|
||||
function initialize_google_map() {
|
||||
var myLatlng = new google.maps.LatLng(get_latitude, get_longitude);
|
||||
var mapOptions = {
|
||||
zoom: 14,
|
||||
scrollwheel: false,
|
||||
center: myLatlng
|
||||
};
|
||||
var map = new google.maps.Map(document.getElementById('google-map'), mapOptions);
|
||||
var marker = new google.maps.Marker({
|
||||
position: myLatlng,
|
||||
map: map
|
||||
});
|
||||
}
|
||||
google.maps.event.addDomListener(window, 'load', initialize_google_map);
|
||||
|
||||
});
|
||||
1579
reveal/lib/animate/animate.css
vendored
Normal file
11
reveal/lib/animate/animate.min.css
vendored
Normal file
8975
reveal/lib/bootstrap/css/bootstrap.css
vendored
Normal file
7
reveal/lib/bootstrap/css/bootstrap.min.css
vendored
Normal file
7
reveal/lib/bootstrap/js/bootstrap.bundle.min.js
vendored
Normal file
7
reveal/lib/bootstrap/js/bootstrap.min.js
vendored
Normal file
168
reveal/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
reveal/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
reveal/lib/font-awesome/css/font-awesome.css
vendored
Normal file
4
reveal/lib/font-awesome/css/font-awesome.min.css
vendored
Normal file
BIN
reveal/lib/font-awesome/fonts/FontAwesome.otf
Normal file
BIN
reveal/lib/font-awesome/fonts/fontawesome-webfont.eot
Normal file
2671
reveal/lib/font-awesome/fonts/fontawesome-webfont.svg
Normal file
|
After Width: | Height: | Size: 434 KiB |
BIN
reveal/lib/font-awesome/fonts/fontawesome-webfont.ttf
Normal file
BIN
reveal/lib/font-awesome/fonts/fontawesome-webfont.woff
Normal file
BIN
reveal/lib/font-awesome/fonts/fontawesome-webfont.woff2
Normal file
1480
reveal/lib/ionicons/css/ionicons.css
Normal file
11
reveal/lib/ionicons/css/ionicons.min.css
vendored
Normal file
BIN
reveal/lib/ionicons/fonts/ionicons.eot
Normal file
2230
reveal/lib/ionicons/fonts/ionicons.svg
Normal file
|
After Width: | Height: | Size: 326 KiB |
BIN
reveal/lib/ionicons/fonts/ionicons.ttf
Normal file
BIN
reveal/lib/ionicons/fonts/ionicons.woff
Normal file
2
reveal/lib/jquery/jquery-migrate.min.js
vendored
Normal file
4
reveal/lib/jquery/jquery.min.js
vendored
Normal file
351
reveal/lib/magnific-popup/magnific-popup.css
Normal file
@@ -0,0 +1,351 @@
|
||||
/* Magnific Popup CSS */
|
||||
.mfp-bg {
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1042;
|
||||
overflow: hidden;
|
||||
position: fixed;
|
||||
background: #0b0b0b;
|
||||
opacity: 0.8; }
|
||||
|
||||
.mfp-wrap {
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1043;
|
||||
position: fixed;
|
||||
outline: none !important;
|
||||
-webkit-backface-visibility: hidden; }
|
||||
|
||||
.mfp-container {
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
padding: 0 8px;
|
||||
box-sizing: border-box; }
|
||||
|
||||
.mfp-container:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
height: 100%;
|
||||
vertical-align: middle; }
|
||||
|
||||
.mfp-align-top .mfp-container:before {
|
||||
display: none; }
|
||||
|
||||
.mfp-content {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: 0 auto;
|
||||
text-align: left;
|
||||
z-index: 1045; }
|
||||
|
||||
.mfp-inline-holder .mfp-content,
|
||||
.mfp-ajax-holder .mfp-content {
|
||||
width: 100%;
|
||||
cursor: auto; }
|
||||
|
||||
.mfp-ajax-cur {
|
||||
cursor: progress; }
|
||||
|
||||
.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
|
||||
cursor: -moz-zoom-out;
|
||||
cursor: -webkit-zoom-out;
|
||||
cursor: zoom-out; }
|
||||
|
||||
.mfp-zoom {
|
||||
cursor: pointer;
|
||||
cursor: -webkit-zoom-in;
|
||||
cursor: -moz-zoom-in;
|
||||
cursor: zoom-in; }
|
||||
|
||||
.mfp-auto-cursor .mfp-content {
|
||||
cursor: auto; }
|
||||
|
||||
.mfp-close,
|
||||
.mfp-arrow,
|
||||
.mfp-preloader,
|
||||
.mfp-counter {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none; }
|
||||
|
||||
.mfp-loading.mfp-figure {
|
||||
display: none; }
|
||||
|
||||
.mfp-hide {
|
||||
display: none !important; }
|
||||
|
||||
.mfp-preloader {
|
||||
color: #CCC;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: auto;
|
||||
text-align: center;
|
||||
margin-top: -0.8em;
|
||||
left: 8px;
|
||||
right: 8px;
|
||||
z-index: 1044; }
|
||||
.mfp-preloader a {
|
||||
color: #CCC; }
|
||||
.mfp-preloader a:hover {
|
||||
color: #FFF; }
|
||||
|
||||
.mfp-s-ready .mfp-preloader {
|
||||
display: none; }
|
||||
|
||||
.mfp-s-error .mfp-content {
|
||||
display: none; }
|
||||
|
||||
button.mfp-close,
|
||||
button.mfp-arrow {
|
||||
overflow: visible;
|
||||
cursor: pointer;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
-webkit-appearance: none;
|
||||
display: block;
|
||||
outline: none;
|
||||
padding: 0;
|
||||
z-index: 1046;
|
||||
box-shadow: none;
|
||||
touch-action: manipulation; }
|
||||
|
||||
button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0; }
|
||||
|
||||
.mfp-close {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
line-height: 44px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
opacity: 0.65;
|
||||
padding: 0 0 18px 10px;
|
||||
color: #FFF;
|
||||
font-style: normal;
|
||||
font-size: 28px;
|
||||
font-family: Arial, Baskerville, monospace; }
|
||||
.mfp-close:hover,
|
||||
.mfp-close:focus {
|
||||
opacity: 1; }
|
||||
.mfp-close:active {
|
||||
top: 1px; }
|
||||
|
||||
.mfp-close-btn-in .mfp-close {
|
||||
color: #333; }
|
||||
|
||||
.mfp-image-holder .mfp-close,
|
||||
.mfp-iframe-holder .mfp-close {
|
||||
color: #FFF;
|
||||
right: -6px;
|
||||
text-align: right;
|
||||
padding-right: 6px;
|
||||
width: 100%; }
|
||||
|
||||
.mfp-counter {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
color: #CCC;
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
white-space: nowrap; }
|
||||
|
||||
.mfp-arrow {
|
||||
position: absolute;
|
||||
opacity: 0.65;
|
||||
margin: 0;
|
||||
top: 50%;
|
||||
margin-top: -55px;
|
||||
padding: 0;
|
||||
width: 90px;
|
||||
height: 110px;
|
||||
-webkit-tap-highlight-color: transparent; }
|
||||
.mfp-arrow:active {
|
||||
margin-top: -54px; }
|
||||
.mfp-arrow:hover,
|
||||
.mfp-arrow:focus {
|
||||
opacity: 1; }
|
||||
.mfp-arrow:before,
|
||||
.mfp-arrow:after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
margin-top: 35px;
|
||||
margin-left: 35px;
|
||||
border: medium inset transparent; }
|
||||
.mfp-arrow:after {
|
||||
border-top-width: 13px;
|
||||
border-bottom-width: 13px;
|
||||
top: 8px; }
|
||||
.mfp-arrow:before {
|
||||
border-top-width: 21px;
|
||||
border-bottom-width: 21px;
|
||||
opacity: 0.7; }
|
||||
|
||||
.mfp-arrow-left {
|
||||
left: 0; }
|
||||
.mfp-arrow-left:after {
|
||||
border-right: 17px solid #FFF;
|
||||
margin-left: 31px; }
|
||||
.mfp-arrow-left:before {
|
||||
margin-left: 25px;
|
||||
border-right: 27px solid #3F3F3F; }
|
||||
|
||||
.mfp-arrow-right {
|
||||
right: 0; }
|
||||
.mfp-arrow-right:after {
|
||||
border-left: 17px solid #FFF;
|
||||
margin-left: 39px; }
|
||||
.mfp-arrow-right:before {
|
||||
border-left: 27px solid #3F3F3F; }
|
||||
|
||||
.mfp-iframe-holder {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px; }
|
||||
.mfp-iframe-holder .mfp-content {
|
||||
line-height: 0;
|
||||
width: 100%;
|
||||
max-width: 900px; }
|
||||
.mfp-iframe-holder .mfp-close {
|
||||
top: -40px; }
|
||||
|
||||
.mfp-iframe-scaler {
|
||||
width: 100%;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
padding-top: 56.25%; }
|
||||
.mfp-iframe-scaler iframe {
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
|
||||
background: #000; }
|
||||
|
||||
/* Main image in popup */
|
||||
img.mfp-img {
|
||||
width: auto;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
line-height: 0;
|
||||
box-sizing: border-box;
|
||||
padding: 40px 0 40px;
|
||||
margin: 0 auto; }
|
||||
|
||||
/* The shadow behind the image */
|
||||
.mfp-figure {
|
||||
line-height: 0; }
|
||||
.mfp-figure:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 40px;
|
||||
bottom: 40px;
|
||||
display: block;
|
||||
right: 0;
|
||||
width: auto;
|
||||
height: auto;
|
||||
z-index: -1;
|
||||
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
|
||||
background: #444; }
|
||||
.mfp-figure small {
|
||||
color: #BDBDBD;
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
line-height: 14px; }
|
||||
.mfp-figure figure {
|
||||
margin: 0; }
|
||||
|
||||
.mfp-bottom-bar {
|
||||
margin-top: -36px;
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
cursor: auto; }
|
||||
|
||||
.mfp-title {
|
||||
text-align: left;
|
||||
line-height: 18px;
|
||||
color: #F3F3F3;
|
||||
word-wrap: break-word;
|
||||
padding-right: 36px; }
|
||||
|
||||
.mfp-image-holder .mfp-content {
|
||||
max-width: 100%; }
|
||||
|
||||
.mfp-gallery .mfp-image-holder .mfp-figure {
|
||||
cursor: pointer; }
|
||||
|
||||
@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
|
||||
/**
|
||||
* Remove all paddings around the image on small screen
|
||||
*/
|
||||
.mfp-img-mobile .mfp-image-holder {
|
||||
padding-left: 0;
|
||||
padding-right: 0; }
|
||||
.mfp-img-mobile img.mfp-img {
|
||||
padding: 0; }
|
||||
.mfp-img-mobile .mfp-figure:after {
|
||||
top: 0;
|
||||
bottom: 0; }
|
||||
.mfp-img-mobile .mfp-figure small {
|
||||
display: inline;
|
||||
margin-left: 5px; }
|
||||
.mfp-img-mobile .mfp-bottom-bar {
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
bottom: 0;
|
||||
margin: 0;
|
||||
top: auto;
|
||||
padding: 3px 5px;
|
||||
position: fixed;
|
||||
box-sizing: border-box; }
|
||||
.mfp-img-mobile .mfp-bottom-bar:empty {
|
||||
padding: 0; }
|
||||
.mfp-img-mobile .mfp-counter {
|
||||
right: 5px;
|
||||
top: 3px; }
|
||||
.mfp-img-mobile .mfp-close {
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
position: fixed;
|
||||
text-align: center;
|
||||
padding: 0; } }
|
||||
|
||||
@media all and (max-width: 900px) {
|
||||
.mfp-arrow {
|
||||
-webkit-transform: scale(0.75);
|
||||
transform: scale(0.75); }
|
||||
.mfp-arrow-left {
|
||||
-webkit-transform-origin: 0;
|
||||
transform-origin: 0; }
|
||||
.mfp-arrow-right {
|
||||
-webkit-transform-origin: 100%;
|
||||
transform-origin: 100%; }
|
||||
.mfp-container {
|
||||
padding-left: 6px;
|
||||
padding-right: 6px; } }
|
||||
1860
reveal/lib/magnific-popup/magnific-popup.js
Normal file
4
reveal/lib/magnific-popup/magnific-popup.min.js
vendored
Normal file
23
reveal/lib/owlcarousel/LICENSE
Normal file
@@ -0,0 +1,23 @@
|
||||
Copyright (c) 2014 Owl
|
||||
Modified work Copyright 2016 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
reveal/lib/owlcarousel/assets/ajax-loader.gif
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
170
reveal/lib/owlcarousel/assets/owl.carousel.css
Normal file
@@ -0,0 +1,170 @@
|
||||
/**
|
||||
* Owl Carousel v2.2.1
|
||||
* Copyright 2013-2017 David Deutsch
|
||||
* Licensed under ()
|
||||
*/
|
||||
/*
|
||||
* 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;
|
||||
-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;
|
||||
cursor: hand;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
.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 {
|
||||
-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 .owl-lazy {
|
||||
opacity: 0;
|
||||
transition: opacity 400ms ease; }
|
||||
|
||||
.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
reveal/lib/owlcarousel/assets/owl.carousel.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Owl Carousel v2.2.1
|
||||
* Copyright 2013-2017 David Deutsch
|
||||
* Licensed under ()
|
||||
*/
|
||||
.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;-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;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.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{-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 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
reveal/lib/owlcarousel/assets/owl.theme.default.css
Normal file
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Owl Carousel v2.2.1
|
||||
* Copyright 2013-2017 David Deutsch
|
||||
* Licensed under ()
|
||||
*/
|
||||
/*
|
||||
* 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
reveal/lib/owlcarousel/assets/owl.theme.default.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Owl Carousel v2.2.1
|
||||
* Copyright 2013-2017 David Deutsch
|
||||
* Licensed under ()
|
||||
*/
|
||||
.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
reveal/lib/owlcarousel/assets/owl.theme.green.css
Normal file
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Owl Carousel v2.2.1
|
||||
* Copyright 2013-2017 David Deutsch
|
||||
* Licensed under ()
|
||||
*/
|
||||
/*
|
||||
* 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
reveal/lib/owlcarousel/assets/owl.theme.green.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Owl Carousel v2.2.1
|
||||
* Copyright 2013-2017 David Deutsch
|
||||
* Licensed under ()
|
||||
*/
|
||||
.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
reveal/lib/owlcarousel/assets/owl.video.play.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
6
reveal/lib/owlcarousel/links.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
$links = array(
|
||||
'css' => 'lib/owlcarousel/assets/owl.carousel.min.css',
|
||||
'js' => 'lib/owlcarousel/owl.carousel.min.js'
|
||||
);
|
||||
?>
|
||||
3275
reveal/lib/owlcarousel/owl.carousel.js
Normal file
7
reveal/lib/owlcarousel/owl.carousel.min.js
vendored
Normal file
287
reveal/lib/sticky/sticky.js
Normal file
@@ -0,0 +1,287 @@
|
||||
// Sticky Plugin v1.0.4 for jQuery
|
||||
// =============
|
||||
// Author: Anthony Garand
|
||||
// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk)
|
||||
// Improvements by Leonardo C. Daronco (daronco)
|
||||
// Created: 02/14/2011
|
||||
// Date: 07/20/2015
|
||||
// Website: http://stickyjs.com/
|
||||
// Description: Makes an element on the page stick on the screen as you scroll
|
||||
// It will only set the 'top' and 'position' of your element, you
|
||||
// might need to adjust the width in some cases.
|
||||
|
||||
(function (factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// Node/CommonJS
|
||||
module.exports = factory(require('jquery'));
|
||||
} else {
|
||||
// Browser globals
|
||||
factory(jQuery);
|
||||
}
|
||||
}(function ($) {
|
||||
var slice = Array.prototype.slice; // save ref to original slice()
|
||||
var splice = Array.prototype.splice; // save ref to original slice()
|
||||
|
||||
var defaults = {
|
||||
topSpacing: 0,
|
||||
bottomSpacing: 0,
|
||||
className: 'is-sticky',
|
||||
wrapperClassName: 'sticky-wrapper',
|
||||
center: false,
|
||||
getWidthFrom: '',
|
||||
widthFromWrapper: true, // works only when .getWidthFrom is empty
|
||||
responsiveWidth: false,
|
||||
zIndex: 'auto'
|
||||
},
|
||||
$window = $(window),
|
||||
$document = $(document),
|
||||
sticked = [],
|
||||
windowHeight = $window.height(),
|
||||
scroller = function() {
|
||||
var scrollTop = $window.scrollTop(),
|
||||
documentHeight = $document.height(),
|
||||
dwh = documentHeight - windowHeight,
|
||||
extra = (scrollTop > dwh) ? dwh - scrollTop : 0;
|
||||
|
||||
for (var i = 0, l = sticked.length; i < l; i++) {
|
||||
var s = sticked[i],
|
||||
elementTop = s.stickyWrapper.offset().top,
|
||||
etse = elementTop - s.topSpacing - extra;
|
||||
|
||||
//update height in case of dynamic content
|
||||
s.stickyWrapper.css('height', s.stickyElement.outerHeight());
|
||||
|
||||
if (scrollTop <= etse) {
|
||||
if (s.currentTop !== null) {
|
||||
s.stickyElement
|
||||
.css({
|
||||
'width': '',
|
||||
'position': '',
|
||||
'top': '',
|
||||
'z-index': ''
|
||||
});
|
||||
s.stickyElement.parent().removeClass(s.className);
|
||||
s.stickyElement.trigger('sticky-end', [s]);
|
||||
s.currentTop = null;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var newTop = documentHeight - s.stickyElement.outerHeight()
|
||||
- s.topSpacing - s.bottomSpacing - scrollTop - extra;
|
||||
if (newTop < 0) {
|
||||
newTop = newTop + s.topSpacing;
|
||||
} else {
|
||||
newTop = s.topSpacing;
|
||||
}
|
||||
if (s.currentTop !== newTop) {
|
||||
var newWidth;
|
||||
if (s.getWidthFrom) {
|
||||
newWidth = $(s.getWidthFrom).width() || null;
|
||||
} else if (s.widthFromWrapper) {
|
||||
newWidth = s.stickyWrapper.width();
|
||||
}
|
||||
if (newWidth == null) {
|
||||
newWidth = s.stickyElement.width();
|
||||
}
|
||||
s.stickyElement
|
||||
.css('width', newWidth)
|
||||
.css('position', 'fixed')
|
||||
.css('top', newTop)
|
||||
.css('z-index', s.zIndex);
|
||||
|
||||
s.stickyElement.parent().addClass(s.className);
|
||||
|
||||
if (s.currentTop === null) {
|
||||
s.stickyElement.trigger('sticky-start', [s]);
|
||||
} else {
|
||||
// sticky is started but it have to be repositioned
|
||||
s.stickyElement.trigger('sticky-update', [s]);
|
||||
}
|
||||
|
||||
if (s.currentTop === s.topSpacing && s.currentTop > newTop || s.currentTop === null && newTop < s.topSpacing) {
|
||||
// just reached bottom || just started to stick but bottom is already reached
|
||||
s.stickyElement.trigger('sticky-bottom-reached', [s]);
|
||||
} else if(s.currentTop !== null && newTop === s.topSpacing && s.currentTop < newTop) {
|
||||
// sticky is started && sticked at topSpacing && overflowing from top just finished
|
||||
s.stickyElement.trigger('sticky-bottom-unreached', [s]);
|
||||
}
|
||||
|
||||
s.currentTop = newTop;
|
||||
}
|
||||
|
||||
// Check if sticky has reached end of container and stop sticking
|
||||
var stickyWrapperContainer = s.stickyWrapper.parent();
|
||||
var unstick = (s.stickyElement.offset().top + s.stickyElement.outerHeight() >= stickyWrapperContainer.offset().top + stickyWrapperContainer.outerHeight()) && (s.stickyElement.offset().top <= s.topSpacing);
|
||||
|
||||
if( unstick ) {
|
||||
s.stickyElement
|
||||
.css('position', 'absolute')
|
||||
.css('top', '')
|
||||
.css('bottom', 0)
|
||||
.css('z-index', '');
|
||||
} else {
|
||||
s.stickyElement
|
||||
.css('position', 'fixed')
|
||||
.css('top', newTop)
|
||||
.css('bottom', '')
|
||||
.css('z-index', s.zIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
resizer = function() {
|
||||
windowHeight = $window.height();
|
||||
|
||||
for (var i = 0, l = sticked.length; i < l; i++) {
|
||||
var s = sticked[i];
|
||||
var newWidth = null;
|
||||
if (s.getWidthFrom) {
|
||||
if (s.responsiveWidth) {
|
||||
newWidth = $(s.getWidthFrom).width();
|
||||
}
|
||||
} else if(s.widthFromWrapper) {
|
||||
newWidth = s.stickyWrapper.width();
|
||||
}
|
||||
if (newWidth != null) {
|
||||
s.stickyElement.css('width', newWidth);
|
||||
}
|
||||
}
|
||||
},
|
||||
methods = {
|
||||
init: function(options) {
|
||||
return this.each(function() {
|
||||
var o = $.extend({}, defaults, options);
|
||||
var stickyElement = $(this);
|
||||
|
||||
var stickyId = stickyElement.attr('id');
|
||||
var wrapperId = stickyId ? stickyId + '-' + defaults.wrapperClassName : defaults.wrapperClassName;
|
||||
var wrapper = $('<div></div>')
|
||||
.attr('id', wrapperId)
|
||||
.addClass(o.wrapperClassName);
|
||||
|
||||
stickyElement.wrapAll(function() {
|
||||
if ($(this).parent("#" + wrapperId).length == 0) {
|
||||
return wrapper;
|
||||
}
|
||||
});
|
||||
|
||||
var stickyWrapper = stickyElement.parent();
|
||||
|
||||
if (o.center) {
|
||||
stickyWrapper.css({width:stickyElement.outerWidth(),marginLeft:"auto",marginRight:"auto"});
|
||||
}
|
||||
|
||||
if (stickyElement.css("float") === "right") {
|
||||
stickyElement.css({"float":"none"}).parent().css({"float":"right"});
|
||||
}
|
||||
|
||||
o.stickyElement = stickyElement;
|
||||
o.stickyWrapper = stickyWrapper;
|
||||
o.currentTop = null;
|
||||
|
||||
sticked.push(o);
|
||||
|
||||
methods.setWrapperHeight(this);
|
||||
methods.setupChangeListeners(this);
|
||||
});
|
||||
},
|
||||
|
||||
setWrapperHeight: function(stickyElement) {
|
||||
var element = $(stickyElement);
|
||||
var stickyWrapper = element.parent();
|
||||
if (stickyWrapper) {
|
||||
stickyWrapper.css('height', element.outerHeight());
|
||||
}
|
||||
},
|
||||
|
||||
setupChangeListeners: function(stickyElement) {
|
||||
if (window.MutationObserver) {
|
||||
var mutationObserver = new window.MutationObserver(function(mutations) {
|
||||
if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {
|
||||
methods.setWrapperHeight(stickyElement);
|
||||
}
|
||||
});
|
||||
mutationObserver.observe(stickyElement, {subtree: true, childList: true});
|
||||
} else {
|
||||
if (window.addEventListener) {
|
||||
stickyElement.addEventListener('DOMNodeInserted', function() {
|
||||
methods.setWrapperHeight(stickyElement);
|
||||
}, false);
|
||||
stickyElement.addEventListener('DOMNodeRemoved', function() {
|
||||
methods.setWrapperHeight(stickyElement);
|
||||
}, false);
|
||||
} else if (window.attachEvent) {
|
||||
stickyElement.attachEvent('onDOMNodeInserted', function() {
|
||||
methods.setWrapperHeight(stickyElement);
|
||||
});
|
||||
stickyElement.attachEvent('onDOMNodeRemoved', function() {
|
||||
methods.setWrapperHeight(stickyElement);
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
update: scroller,
|
||||
unstick: function(options) {
|
||||
return this.each(function() {
|
||||
var that = this;
|
||||
var unstickyElement = $(that);
|
||||
|
||||
var removeIdx = -1;
|
||||
var i = sticked.length;
|
||||
while (i-- > 0) {
|
||||
if (sticked[i].stickyElement.get(0) === that) {
|
||||
splice.call(sticked,i,1);
|
||||
removeIdx = i;
|
||||
}
|
||||
}
|
||||
if(removeIdx !== -1) {
|
||||
unstickyElement.unwrap();
|
||||
unstickyElement
|
||||
.css({
|
||||
'width': '',
|
||||
'position': '',
|
||||
'top': '',
|
||||
'float': '',
|
||||
'z-index': ''
|
||||
})
|
||||
;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):
|
||||
if (window.addEventListener) {
|
||||
window.addEventListener('scroll', scroller, false);
|
||||
window.addEventListener('resize', resizer, false);
|
||||
} else if (window.attachEvent) {
|
||||
window.attachEvent('onscroll', scroller);
|
||||
window.attachEvent('onresize', resizer);
|
||||
}
|
||||
|
||||
$.fn.sticky = function(method) {
|
||||
if (methods[method]) {
|
||||
return methods[method].apply(this, slice.call(arguments, 1));
|
||||
} else if (typeof method === 'object' || !method ) {
|
||||
return methods.init.apply( this, arguments );
|
||||
} else {
|
||||
$.error('Method ' + method + ' does not exist on jQuery.sticky');
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.unstick = function(method) {
|
||||
if (methods[method]) {
|
||||
return methods[method].apply(this, slice.call(arguments, 1));
|
||||
} else if (typeof method === 'object' || !method ) {
|
||||
return methods.unstick.apply( this, arguments );
|
||||
} else {
|
||||
$.error('Method ' + method + ' does not exist on jQuery.sticky');
|
||||
}
|
||||
};
|
||||
$(function() {
|
||||
setTimeout(scroller, 0);
|
||||
});
|
||||
}));
|
||||
158
reveal/lib/superfish/hoverIntent.js
Normal file
@@ -0,0 +1,158 @@
|
||||
/*!
|
||||
* hoverIntent v1.8.1 // 2014.08.11 // jQuery v1.9.1+
|
||||
* http://briancherne.github.io/jquery-hoverIntent/
|
||||
*
|
||||
* You may use hoverIntent under the terms of the MIT license. Basically that
|
||||
* means you are free to use hoverIntent as long as this header is left intact.
|
||||
* Copyright 2007, 2014 Brian Cherne
|
||||
*/
|
||||
|
||||
/* hoverIntent is similar to jQuery's built-in "hover" method except that
|
||||
* instead of firing the handlerIn function immediately, hoverIntent checks
|
||||
* to see if the user's mouse has slowed down (beneath the sensitivity
|
||||
* threshold) before firing the event. The handlerOut function is only
|
||||
* called after a matching handlerIn.
|
||||
*
|
||||
* // basic usage ... just like .hover()
|
||||
* .hoverIntent( handlerIn, handlerOut )
|
||||
* .hoverIntent( handlerInOut )
|
||||
*
|
||||
* // basic usage ... with event delegation!
|
||||
* .hoverIntent( handlerIn, handlerOut, selector )
|
||||
* .hoverIntent( handlerInOut, selector )
|
||||
*
|
||||
* // using a basic configuration object
|
||||
* .hoverIntent( config )
|
||||
*
|
||||
* @param handlerIn function OR configuration object
|
||||
* @param handlerOut function OR selector for delegation OR undefined
|
||||
* @param selector selector OR undefined
|
||||
* @author Brian Cherne <brian(at)cherne(dot)net>
|
||||
*/
|
||||
|
||||
;(function(factory) {
|
||||
'use strict';
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define(['jquery'], factory);
|
||||
} else if (jQuery && !jQuery.fn.hoverIntent) {
|
||||
factory(jQuery);
|
||||
}
|
||||
})(function($) {
|
||||
'use strict';
|
||||
|
||||
// default configuration values
|
||||
var _cfg = {
|
||||
interval: 100,
|
||||
sensitivity: 6,
|
||||
timeout: 0
|
||||
};
|
||||
|
||||
// counter used to generate an ID for each instance
|
||||
var INSTANCE_COUNT = 0;
|
||||
|
||||
// current X and Y position of mouse, updated during mousemove tracking (shared across instances)
|
||||
var cX, cY;
|
||||
|
||||
// saves the current pointer position coordinates based on the given mousemove event
|
||||
var track = function(ev) {
|
||||
cX = ev.pageX;
|
||||
cY = ev.pageY;
|
||||
};
|
||||
|
||||
// compares current and previous mouse positions
|
||||
var compare = function(ev,$el,s,cfg) {
|
||||
// compare mouse positions to see if pointer has slowed enough to trigger `over` function
|
||||
if ( Math.sqrt( (s.pX-cX)*(s.pX-cX) + (s.pY-cY)*(s.pY-cY) ) < cfg.sensitivity ) {
|
||||
$el.off(s.event,track);
|
||||
delete s.timeoutId;
|
||||
// set hoverIntent state as active for this element (permits `out` handler to trigger)
|
||||
s.isActive = true;
|
||||
// overwrite old mouseenter event coordinates with most recent pointer position
|
||||
ev.pageX = cX; ev.pageY = cY;
|
||||
// clear coordinate data from state object
|
||||
delete s.pX; delete s.pY;
|
||||
return cfg.over.apply($el[0],[ev]);
|
||||
} else {
|
||||
// set previous coordinates for next comparison
|
||||
s.pX = cX; s.pY = cY;
|
||||
// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
|
||||
s.timeoutId = setTimeout( function(){compare(ev, $el, s, cfg);} , cfg.interval );
|
||||
}
|
||||
};
|
||||
|
||||
// triggers given `out` function at configured `timeout` after a mouseleave and clears state
|
||||
var delay = function(ev,$el,s,out) {
|
||||
delete $el.data('hoverIntent')[s.id];
|
||||
return out.apply($el[0],[ev]);
|
||||
};
|
||||
|
||||
$.fn.hoverIntent = function(handlerIn,handlerOut,selector) {
|
||||
// instance ID, used as a key to store and retrieve state information on an element
|
||||
var instanceId = INSTANCE_COUNT++;
|
||||
|
||||
// extend the default configuration and parse parameters
|
||||
var cfg = $.extend({}, _cfg);
|
||||
if ( $.isPlainObject(handlerIn) ) {
|
||||
cfg = $.extend(cfg, handlerIn);
|
||||
if ( !$.isFunction(cfg.out) ) {
|
||||
cfg.out = cfg.over;
|
||||
}
|
||||
} else if ( $.isFunction(handlerOut) ) {
|
||||
cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } );
|
||||
} else {
|
||||
cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } );
|
||||
}
|
||||
|
||||
// A private function for handling mouse 'hovering'
|
||||
var handleHover = function(e) {
|
||||
// cloned event to pass to handlers (copy required for event object to be passed in IE)
|
||||
var ev = $.extend({},e);
|
||||
|
||||
// the current target of the mouse event, wrapped in a jQuery object
|
||||
var $el = $(this);
|
||||
|
||||
// read hoverIntent data from element (or initialize if not present)
|
||||
var hoverIntentData = $el.data('hoverIntent');
|
||||
if (!hoverIntentData) { $el.data('hoverIntent', (hoverIntentData = {})); }
|
||||
|
||||
// read per-instance state from element (or initialize if not present)
|
||||
var state = hoverIntentData[instanceId];
|
||||
if (!state) { hoverIntentData[instanceId] = state = { id: instanceId }; }
|
||||
|
||||
// state properties:
|
||||
// id = instance ID, used to clean up data
|
||||
// timeoutId = timeout ID, reused for tracking mouse position and delaying "out" handler
|
||||
// isActive = plugin state, true after `over` is called just until `out` is called
|
||||
// pX, pY = previously-measured pointer coordinates, updated at each polling interval
|
||||
// event = string representing the namespaced event used for mouse tracking
|
||||
|
||||
// clear any existing timeout
|
||||
if (state.timeoutId) { state.timeoutId = clearTimeout(state.timeoutId); }
|
||||
|
||||
// namespaced event used to register and unregister mousemove tracking
|
||||
var mousemove = state.event = 'mousemove.hoverIntent.hoverIntent'+instanceId;
|
||||
|
||||
// handle the event, based on its type
|
||||
if (e.type === 'mouseenter') {
|
||||
// do nothing if already active
|
||||
if (state.isActive) { return; }
|
||||
// set "previous" X and Y position based on initial entry point
|
||||
state.pX = ev.pageX; state.pY = ev.pageY;
|
||||
// update "current" X and Y position based on mousemove
|
||||
$el.off(mousemove,track).on(mousemove,track);
|
||||
// start polling interval (self-calling timeout) to compare mouse coordinates over time
|
||||
state.timeoutId = setTimeout( function(){compare(ev,$el,state,cfg);} , cfg.interval );
|
||||
} else { // "mouseleave"
|
||||
// do nothing if not already active
|
||||
if (!state.isActive) { return; }
|
||||
// unbind expensive mousemove event
|
||||
$el.off(mousemove,track);
|
||||
// if hoverIntent state is true, then call the mouseOut function after the specified delay
|
||||
state.timeoutId = setTimeout( function(){delay(ev,$el,state,cfg.out);} , cfg.timeout );
|
||||
}
|
||||
};
|
||||
|
||||
// listen for mouseenter and mouseleave
|
||||
return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);
|
||||
};
|
||||
});
|
||||
276
reveal/lib/superfish/superfish.js
Normal file
@@ -0,0 +1,276 @@
|
||||
/*
|
||||
* jQuery Superfish Menu Plugin - v1.7.9
|
||||
* Copyright (c) 2016 Joel Birch
|
||||
*
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/
|
||||
|
||||
;(function ($, w) {
|
||||
"use strict";
|
||||
|
||||
var methods = (function () {
|
||||
// private properties and methods go here
|
||||
var c = {
|
||||
bcClass: 'sf-breadcrumb',
|
||||
menuClass: 'sf-js-enabled',
|
||||
anchorClass: 'sf-with-ul',
|
||||
menuArrowClass: 'sf-arrows'
|
||||
},
|
||||
ios = (function () {
|
||||
var ios = /^(?![\w\W]*Windows Phone)[\w\W]*(iPhone|iPad|iPod)/i.test(navigator.userAgent);
|
||||
if (ios) {
|
||||
// tap anywhere on iOS to unfocus a submenu
|
||||
$('html').css('cursor', 'pointer').on('click', $.noop);
|
||||
}
|
||||
return ios;
|
||||
})(),
|
||||
wp7 = (function () {
|
||||
var style = document.documentElement.style;
|
||||
return ('behavior' in style && 'fill' in style && /iemobile/i.test(navigator.userAgent));
|
||||
})(),
|
||||
unprefixedPointerEvents = (function () {
|
||||
return (!!w.PointerEvent);
|
||||
})(),
|
||||
toggleMenuClasses = function ($menu, o, add) {
|
||||
var classes = c.menuClass,
|
||||
method;
|
||||
if (o.cssArrows) {
|
||||
classes += ' ' + c.menuArrowClass;
|
||||
}
|
||||
method = (add) ? 'addClass' : 'removeClass';
|
||||
$menu[method](classes);
|
||||
},
|
||||
setPathToCurrent = function ($menu, o) {
|
||||
return $menu.find('li.' + o.pathClass).slice(0, o.pathLevels)
|
||||
.addClass(o.hoverClass + ' ' + c.bcClass)
|
||||
.filter(function () {
|
||||
return ($(this).children(o.popUpSelector).hide().show().length);
|
||||
}).removeClass(o.pathClass);
|
||||
},
|
||||
toggleAnchorClass = function ($li, add) {
|
||||
var method = (add) ? 'addClass' : 'removeClass';
|
||||
$li.children('a')[method](c.anchorClass);
|
||||
},
|
||||
toggleTouchAction = function ($menu) {
|
||||
var msTouchAction = $menu.css('ms-touch-action');
|
||||
var touchAction = $menu.css('touch-action');
|
||||
touchAction = touchAction || msTouchAction;
|
||||
touchAction = (touchAction === 'pan-y') ? 'auto' : 'pan-y';
|
||||
$menu.css({
|
||||
'ms-touch-action': touchAction,
|
||||
'touch-action': touchAction
|
||||
});
|
||||
},
|
||||
getMenu = function ($el) {
|
||||
return $el.closest('.' + c.menuClass);
|
||||
},
|
||||
getOptions = function ($el) {
|
||||
return getMenu($el).data('sfOptions');
|
||||
},
|
||||
over = function () {
|
||||
var $this = $(this),
|
||||
o = getOptions($this);
|
||||
clearTimeout(o.sfTimer);
|
||||
$this.siblings().superfish('hide').end().superfish('show');
|
||||
},
|
||||
close = function (o) {
|
||||
o.retainPath = ($.inArray(this[0], o.$path) > -1);
|
||||
this.superfish('hide');
|
||||
|
||||
if (!this.parents('.' + o.hoverClass).length) {
|
||||
o.onIdle.call(getMenu(this));
|
||||
if (o.$path.length) {
|
||||
$.proxy(over, o.$path)();
|
||||
}
|
||||
}
|
||||
},
|
||||
out = function () {
|
||||
var $this = $(this),
|
||||
o = getOptions($this);
|
||||
if (ios) {
|
||||
$.proxy(close, $this, o)();
|
||||
}
|
||||
else {
|
||||
clearTimeout(o.sfTimer);
|
||||
o.sfTimer = setTimeout($.proxy(close, $this, o), o.delay);
|
||||
}
|
||||
},
|
||||
touchHandler = function (e) {
|
||||
var $this = $(this),
|
||||
o = getOptions($this),
|
||||
$ul = $this.siblings(e.data.popUpSelector);
|
||||
|
||||
if (o.onHandleTouch.call($ul) === false) {
|
||||
return this;
|
||||
}
|
||||
|
||||
if ($ul.length > 0 && $ul.is(':hidden')) {
|
||||
$this.one('click.superfish', false);
|
||||
if (e.type === 'MSPointerDown' || e.type === 'pointerdown') {
|
||||
$this.trigger('focus');
|
||||
} else {
|
||||
$.proxy(over, $this.parent('li'))();
|
||||
}
|
||||
}
|
||||
},
|
||||
applyHandlers = function ($menu, o) {
|
||||
var targets = 'li:has(' + o.popUpSelector + ')';
|
||||
if ($.fn.hoverIntent && !o.disableHI) {
|
||||
$menu.hoverIntent(over, out, targets);
|
||||
}
|
||||
else {
|
||||
$menu
|
||||
.on('mouseenter.superfish', targets, over)
|
||||
.on('mouseleave.superfish', targets, out);
|
||||
}
|
||||
var touchevent = 'MSPointerDown.superfish';
|
||||
if (unprefixedPointerEvents) {
|
||||
touchevent = 'pointerdown.superfish';
|
||||
}
|
||||
if (!ios) {
|
||||
touchevent += ' touchend.superfish';
|
||||
}
|
||||
if (wp7) {
|
||||
touchevent += ' mousedown.superfish';
|
||||
}
|
||||
$menu
|
||||
.on('focusin.superfish', 'li', over)
|
||||
.on('focusout.superfish', 'li', out)
|
||||
.on(touchevent, 'a', o, touchHandler);
|
||||
};
|
||||
|
||||
return {
|
||||
// public methods
|
||||
hide: function (instant) {
|
||||
if (this.length) {
|
||||
var $this = this,
|
||||
o = getOptions($this);
|
||||
if (!o) {
|
||||
return this;
|
||||
}
|
||||
var not = (o.retainPath === true) ? o.$path : '',
|
||||
$ul = $this.find('li.' + o.hoverClass).add(this).not(not).removeClass(o.hoverClass).children(o.popUpSelector),
|
||||
speed = o.speedOut;
|
||||
|
||||
if (instant) {
|
||||
$ul.show();
|
||||
speed = 0;
|
||||
}
|
||||
o.retainPath = false;
|
||||
|
||||
if (o.onBeforeHide.call($ul) === false) {
|
||||
return this;
|
||||
}
|
||||
|
||||
$ul.stop(true, true).animate(o.animationOut, speed, function () {
|
||||
var $this = $(this);
|
||||
o.onHide.call($this);
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
show: function () {
|
||||
var o = getOptions(this);
|
||||
if (!o) {
|
||||
return this;
|
||||
}
|
||||
var $this = this.addClass(o.hoverClass),
|
||||
$ul = $this.children(o.popUpSelector);
|
||||
|
||||
if (o.onBeforeShow.call($ul) === false) {
|
||||
return this;
|
||||
}
|
||||
|
||||
$ul.stop(true, true).animate(o.animation, o.speed, function () {
|
||||
o.onShow.call($ul);
|
||||
});
|
||||
return this;
|
||||
},
|
||||
destroy: function () {
|
||||
return this.each(function () {
|
||||
var $this = $(this),
|
||||
o = $this.data('sfOptions'),
|
||||
$hasPopUp;
|
||||
if (!o) {
|
||||
return false;
|
||||
}
|
||||
$hasPopUp = $this.find(o.popUpSelector).parent('li');
|
||||
clearTimeout(o.sfTimer);
|
||||
toggleMenuClasses($this, o);
|
||||
toggleAnchorClass($hasPopUp);
|
||||
toggleTouchAction($this);
|
||||
// remove event handlers
|
||||
$this.off('.superfish').off('.hoverIntent');
|
||||
// clear animation's inline display style
|
||||
$hasPopUp.children(o.popUpSelector).attr('style', function (i, style) {
|
||||
return style.replace(/display[^;]+;?/g, '');
|
||||
});
|
||||
// reset 'current' path classes
|
||||
o.$path.removeClass(o.hoverClass + ' ' + c.bcClass).addClass(o.pathClass);
|
||||
$this.find('.' + o.hoverClass).removeClass(o.hoverClass);
|
||||
o.onDestroy.call($this);
|
||||
$this.removeData('sfOptions');
|
||||
});
|
||||
},
|
||||
init: function (op) {
|
||||
return this.each(function () {
|
||||
var $this = $(this);
|
||||
if ($this.data('sfOptions')) {
|
||||
return false;
|
||||
}
|
||||
var o = $.extend({}, $.fn.superfish.defaults, op),
|
||||
$hasPopUp = $this.find(o.popUpSelector).parent('li');
|
||||
o.$path = setPathToCurrent($this, o);
|
||||
|
||||
$this.data('sfOptions', o);
|
||||
|
||||
toggleMenuClasses($this, o, true);
|
||||
toggleAnchorClass($hasPopUp, true);
|
||||
toggleTouchAction($this);
|
||||
applyHandlers($this, o);
|
||||
|
||||
$hasPopUp.not('.' + c.bcClass).superfish('hide', true);
|
||||
|
||||
o.onInit.call(this);
|
||||
});
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
$.fn.superfish = function (method, args) {
|
||||
if (methods[method]) {
|
||||
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
||||
}
|
||||
else if (typeof method === 'object' || ! method) {
|
||||
return methods.init.apply(this, arguments);
|
||||
}
|
||||
else {
|
||||
return $.error('Method ' + method + ' does not exist on jQuery.fn.superfish');
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.superfish.defaults = {
|
||||
popUpSelector: 'ul,.sf-mega', // within menu context
|
||||
hoverClass: 'sfHover',
|
||||
pathClass: 'overrideThisToUse',
|
||||
pathLevels: 1,
|
||||
delay: 800,
|
||||
animation: {opacity: 'show'},
|
||||
animationOut: {opacity: 'hide'},
|
||||
speed: 'normal',
|
||||
speedOut: 'fast',
|
||||
cssArrows: true,
|
||||
disableHI: false,
|
||||
onInit: $.noop,
|
||||
onBeforeShow: $.noop,
|
||||
onShow: $.noop,
|
||||
onBeforeHide: $.noop,
|
||||
onHide: $.noop,
|
||||
onIdle: $.noop,
|
||||
onDestroy: $.noop,
|
||||
onHandleTouch: $.noop
|
||||
};
|
||||
|
||||
})(jQuery, window);
|
||||
10
reveal/lib/superfish/superfish.min.js
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* jQuery Superfish Menu Plugin - v1.7.9
|
||||
* Copyright (c) 2016 Joel Birch
|
||||
*
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/
|
||||
|
||||
;!function(a,b){"use strict";var c=function(){var c={bcClass:"sf-breadcrumb",menuClass:"sf-js-enabled",anchorClass:"sf-with-ul",menuArrowClass:"sf-arrows"},d=function(){var b=/^(?![\w\W]*Windows Phone)[\w\W]*(iPhone|iPad|iPod)/i.test(navigator.userAgent);return b&&a("html").css("cursor","pointer").on("click",a.noop),b}(),e=function(){var a=document.documentElement.style;return"behavior"in a&&"fill"in a&&/iemobile/i.test(navigator.userAgent)}(),f=function(){return!!b.PointerEvent}(),g=function(a,b,d){var e,f=c.menuClass;b.cssArrows&&(f+=" "+c.menuArrowClass),e=d?"addClass":"removeClass",a[e](f)},h=function(b,d){return b.find("li."+d.pathClass).slice(0,d.pathLevels).addClass(d.hoverClass+" "+c.bcClass).filter(function(){return a(this).children(d.popUpSelector).hide().show().length}).removeClass(d.pathClass)},i=function(a,b){var d=b?"addClass":"removeClass";a.children("a")[d](c.anchorClass)},j=function(a){var b=a.css("ms-touch-action"),c=a.css("touch-action");c=c||b,c="pan-y"===c?"auto":"pan-y",a.css({"ms-touch-action":c,"touch-action":c})},k=function(a){return a.closest("."+c.menuClass)},l=function(a){return k(a).data("sfOptions")},m=function(){var b=a(this),c=l(b);clearTimeout(c.sfTimer),b.siblings().superfish("hide").end().superfish("show")},n=function(b){b.retainPath=a.inArray(this[0],b.$path)>-1,this.superfish("hide"),this.parents("."+b.hoverClass).length||(b.onIdle.call(k(this)),b.$path.length&&a.proxy(m,b.$path)())},o=function(){var b=a(this),c=l(b);d?a.proxy(n,b,c)():(clearTimeout(c.sfTimer),c.sfTimer=setTimeout(a.proxy(n,b,c),c.delay))},p=function(b){var c=a(this),d=l(c),e=c.siblings(b.data.popUpSelector);return d.onHandleTouch.call(e)===!1?this:void(e.length>0&&e.is(":hidden")&&(c.one("click.superfish",!1),"MSPointerDown"===b.type||"pointerdown"===b.type?c.trigger("focus"):a.proxy(m,c.parent("li"))()))},q=function(b,c){var g="li:has("+c.popUpSelector+")";a.fn.hoverIntent&&!c.disableHI?b.hoverIntent(m,o,g):b.on("mouseenter.superfish",g,m).on("mouseleave.superfish",g,o);var h="MSPointerDown.superfish";f&&(h="pointerdown.superfish"),d||(h+=" touchend.superfish"),e&&(h+=" mousedown.superfish"),b.on("focusin.superfish","li",m).on("focusout.superfish","li",o).on(h,"a",c,p)};return{hide:function(b){if(this.length){var c=this,d=l(c);if(!d)return this;var e=d.retainPath===!0?d.$path:"",f=c.find("li."+d.hoverClass).add(this).not(e).removeClass(d.hoverClass).children(d.popUpSelector),g=d.speedOut;if(b&&(f.show(),g=0),d.retainPath=!1,d.onBeforeHide.call(f)===!1)return this;f.stop(!0,!0).animate(d.animationOut,g,function(){var b=a(this);d.onHide.call(b)})}return this},show:function(){var a=l(this);if(!a)return this;var b=this.addClass(a.hoverClass),c=b.children(a.popUpSelector);return a.onBeforeShow.call(c)===!1?this:(c.stop(!0,!0).animate(a.animation,a.speed,function(){a.onShow.call(c)}),this)},destroy:function(){return this.each(function(){var b,d=a(this),e=d.data("sfOptions");return e?(b=d.find(e.popUpSelector).parent("li"),clearTimeout(e.sfTimer),g(d,e),i(b),j(d),d.off(".superfish").off(".hoverIntent"),b.children(e.popUpSelector).attr("style",function(a,b){return b.replace(/display[^;]+;?/g,"")}),e.$path.removeClass(e.hoverClass+" "+c.bcClass).addClass(e.pathClass),d.find("."+e.hoverClass).removeClass(e.hoverClass),e.onDestroy.call(d),void d.removeData("sfOptions")):!1})},init:function(b){return this.each(function(){var d=a(this);if(d.data("sfOptions"))return!1;var e=a.extend({},a.fn.superfish.defaults,b),f=d.find(e.popUpSelector).parent("li");e.$path=h(d,e),d.data("sfOptions",e),g(d,e,!0),i(f,!0),j(d),q(d,e),f.not("."+c.bcClass).superfish("hide",!0),e.onInit.call(this)})}}}();a.fn.superfish=function(b,d){return c[b]?c[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?a.error("Method "+b+" does not exist on jQuery.fn.superfish"):c.init.apply(this,arguments)},a.fn.superfish.defaults={popUpSelector:"ul,.sf-mega",hoverClass:"sfHover",pathClass:"overrideThisToUse",pathLevels:1,delay:800,animation:{opacity:"show"},animationOut:{opacity:"hide"},speed:"normal",speedOut:"fast",cssArrows:!0,disableHI:!1,onInit:a.noop,onBeforeShow:a.noop,onShow:a.noop,onBeforeHide:a.noop,onHide:a.noop,onIdle:a.noop,onDestroy:a.noop,onHandleTouch:a.noop}}(jQuery,window);
|
||||
542
reveal/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'];
|
||||
});
|
||||