├── CNAME ├── img ├── logo.png ├── about-us.png ├── pexel1.jpg ├── footer-bg.png ├── banner │ └── deep.png ├── portfolio │ ├── p1.png │ ├── p2.png │ ├── p3.png │ ├── p4.png │ ├── p5.png │ ├── p6.png │ ├── p2_1.png │ └── p5_1.png ├── services │ ├── s1.png │ ├── s2.png │ └── s4.png └── testimonials │ ├── t1.jpg │ ├── t2.jpg │ ├── t3.jpg │ ├── t4.jpg │ └── t5.jpg ├── icons ├── fa-brands-400.eot ├── fa-brands-400.ttf ├── fa-solid-900.eot ├── fa-solid-900.ttf ├── fa-solid-900.woff ├── fa-brands-400.woff ├── fa-brands-400.woff2 ├── fa-regular-400.eot ├── fa-regular-400.ttf ├── fa-regular-400.woff ├── fa-regular-400.woff2 └── fa-solid-900.woff2 ├── fonts └── Roboto │ ├── Roboto-Bold.ttf │ ├── Roboto-Thin.ttf │ ├── Roboto-Black.ttf │ ├── Roboto-Italic.ttf │ ├── Roboto-Light.ttf │ ├── Roboto-Medium.ttf │ ├── Roboto-Regular.ttf │ ├── Roboto-BlackItalic.ttf │ ├── Roboto-BoldItalic.ttf │ ├── Roboto-LightItalic.ttf │ ├── Roboto-MediumItalic.ttf │ ├── Roboto-ThinItalic.ttf │ └── LICENSE.txt ├── css ├── fonts.css ├── responsive.css └── style.css ├── vendor ├── Magnific-Popup │ ├── .travis.yml │ ├── composer.json │ ├── bower.json │ ├── .gitignore │ ├── .jshintrc │ ├── website │ │ └── _includes │ │ │ ├── wordpress.html │ │ │ ├── site-assets │ │ │ ├── ajax │ │ │ │ ├── test-ajax-2.html │ │ │ │ └── test-ajax.html │ │ │ └── site.css │ │ │ ├── analytics.html │ │ │ ├── logo.html │ │ │ ├── _layouts │ │ │ └── default.html │ │ │ ├── signup.html │ │ │ ├── index.html │ │ │ └── build-tool.html │ ├── libs │ │ ├── jquery-loader.js │ │ └── qunit │ │ │ └── qunit.css │ ├── src │ │ ├── js │ │ │ ├── retina.js │ │ │ ├── ajax.js │ │ │ ├── inline.js │ │ │ ├── iframe.js │ │ │ ├── gallery.js │ │ │ ├── zoom.js │ │ │ ├── image.js │ │ │ └── core.js │ │ └── css │ │ │ ├── _settings.scss │ │ │ └── main.scss │ ├── LICENSE │ ├── magnific-popup.jquery.json │ ├── package.json │ ├── README.md │ ├── Gruntfile.js │ └── dist │ │ ├── magnific-popup.css │ │ └── jquery.magnific-popup.min.js └── owl-carousel │ └── css │ ├── owl.theme.default.min.css │ └── owl.carousel.min.css ├── LICENSE ├── README.md └── js └── main.js /CNAME: -------------------------------------------------------------------------------- 1 | www.deeptwist.work.gd -------------------------------------------------------------------------------- /img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/logo.png -------------------------------------------------------------------------------- /img/about-us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/about-us.png -------------------------------------------------------------------------------- /img/pexel1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/pexel1.jpg -------------------------------------------------------------------------------- /img/footer-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/footer-bg.png -------------------------------------------------------------------------------- /img/banner/deep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/banner/deep.png -------------------------------------------------------------------------------- /img/portfolio/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/portfolio/p1.png -------------------------------------------------------------------------------- /img/portfolio/p2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/portfolio/p2.png -------------------------------------------------------------------------------- /img/portfolio/p3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/portfolio/p3.png -------------------------------------------------------------------------------- /img/portfolio/p4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/portfolio/p4.png -------------------------------------------------------------------------------- /img/portfolio/p5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/portfolio/p5.png -------------------------------------------------------------------------------- /img/portfolio/p6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/portfolio/p6.png -------------------------------------------------------------------------------- /img/services/s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/services/s1.png -------------------------------------------------------------------------------- /img/services/s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/services/s2.png -------------------------------------------------------------------------------- /img/services/s4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/services/s4.png -------------------------------------------------------------------------------- /icons/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-brands-400.eot -------------------------------------------------------------------------------- /icons/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-brands-400.ttf -------------------------------------------------------------------------------- /icons/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-solid-900.eot -------------------------------------------------------------------------------- /icons/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-solid-900.ttf -------------------------------------------------------------------------------- /icons/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-solid-900.woff -------------------------------------------------------------------------------- /img/portfolio/p2_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/portfolio/p2_1.png -------------------------------------------------------------------------------- /img/portfolio/p5_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/portfolio/p5_1.png -------------------------------------------------------------------------------- /img/testimonials/t1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/testimonials/t1.jpg -------------------------------------------------------------------------------- /img/testimonials/t2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/testimonials/t2.jpg -------------------------------------------------------------------------------- /img/testimonials/t3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/testimonials/t3.jpg -------------------------------------------------------------------------------- /img/testimonials/t4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/testimonials/t4.jpg -------------------------------------------------------------------------------- /img/testimonials/t5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/img/testimonials/t5.jpg -------------------------------------------------------------------------------- /icons/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-brands-400.woff -------------------------------------------------------------------------------- /icons/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-brands-400.woff2 -------------------------------------------------------------------------------- /icons/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-regular-400.eot -------------------------------------------------------------------------------- /icons/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-regular-400.ttf -------------------------------------------------------------------------------- /icons/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-regular-400.woff -------------------------------------------------------------------------------- /icons/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-regular-400.woff2 -------------------------------------------------------------------------------- /icons/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/icons/fa-solid-900.woff2 -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-Bold.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-Thin.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-Black.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-Italic.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-Light.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-Medium.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-Regular.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-BlackItalic.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-BoldItalic.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-LightItalic.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-MediumItalic.ttf -------------------------------------------------------------------------------- /fonts/Roboto/Roboto-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dipeshtwis/portfolio/HEAD/fonts/Roboto/Roboto-ThinItalic.ttf -------------------------------------------------------------------------------- /css/fonts.css: -------------------------------------------------------------------------------- 1 | /* @font-face*/ 2 | 3 | @font-face { 4 | font-family: "Roboto"; 5 | src: url("../fonts/Roboto/Roboto-Regular.ttf"); 6 | } -------------------------------------------------------------------------------- /vendor/Magnific-Popup/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | node_js: 4 | - "0.10" 5 | 6 | before_install: 7 | - npm install grunt-cli -g 8 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dimsemenov/magnific-popup", 3 | "description": "Light and responsive lightbox script with focus on performance.", 4 | "homepage": "http://dimsemenov.com/plugins/magnific-popup/" 5 | } 6 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "magnific-popup", 3 | "main": [ 4 | "dist/jquery.magnific-popup.js", 5 | "dist/magnific-popup.css" 6 | ], 7 | "dependencies": { 8 | "jquery": ">=1.8.0" 9 | }, 10 | "ignore": [ 11 | "node_modules/", 12 | "components/", 13 | "website/", 14 | "libs/" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/.gitignore: -------------------------------------------------------------------------------- 1 | Gemfile.lock 2 | test/dest 3 | *.gem 4 | pkg/ 5 | *.swp 6 | *~ 7 | _site/ 8 | .bundle/ 9 | .DS_Store 10 | bbin/ 11 | sftp-config* 12 | _site 13 | .htaccess 14 | private-* 15 | __article/ 16 | node_modules 17 | _production 18 | all.min.css 19 | *.sublime-* 20 | website/dist/ 21 | *.idea 22 | /.idea 23 | .node-version 24 | .sass-cache/ -------------------------------------------------------------------------------- /vendor/Magnific-Popup/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "curly": false, 3 | "eqeqeq": true, 4 | "immed": true, 5 | "latedef": true, 6 | "newcap": true, 7 | "noarg": true, 8 | "sub": true, 9 | "undef": false, 10 | "unused": true, 11 | "boss": true, 12 | "eqnull": true, 13 | "browser": true, 14 | 15 | "predef": [ 16 | "define", 17 | "module", 18 | "mfp" 19 | ], 20 | "jquery": true 21 | } -------------------------------------------------------------------------------- /vendor/Magnific-Popup/website/_includes/wordpress.html: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | layout: default 4 | 5 | title: Magnific WordPress Plugin 6 | 7 | description: The complete guide on how to use Magnific Popup - the open source responsive lightbox plugin. 8 | 9 | addjs: false 10 | 11 | canonical_url: http://dimsemenov.com/plugins/magnific-popup/wordpress.html 12 | 13 | buildtool: false 14 | 15 | --- 16 | 17 | 24 | {% include signup.html %} 25 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/libs/jquery-loader.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | // Default to the local version. 3 | var path = '../libs/jquery/jquery.js'; 4 | // Get any jquery=___ param from the query string. 5 | var jqversion = location.search.match(/[?&]jquery=(.*?)(?=&|$)/); 6 | // If a version was specified, use that version from code.jquery.com. 7 | if (jqversion) { 8 | path = 'http://code.jquery.com/jquery-' + jqversion[1] + '.js'; 9 | } 10 | // This is the only time I'll ever use document.write, I promise! 11 | document.write(''); 12 | }()); 13 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/src/js/retina.js: -------------------------------------------------------------------------------- 1 | 2 | var RETINA_NS = 'retina'; 3 | 4 | $.magnificPopup.registerModule(RETINA_NS, { 5 | options: { 6 | replaceSrc: function(item) { 7 | return item.src.replace(/\.\w+$/, function(m) { return '@2x' + m; }); 8 | }, 9 | ratio: 1 // Function or number. Set to 1 to disable. 10 | }, 11 | proto: { 12 | initRetina: function() { 13 | if(window.devicePixelRatio > 1) { 14 | 15 | var st = mfp.st.retina, 16 | ratio = st.ratio; 17 | 18 | ratio = !isNaN(ratio) ? ratio : ratio(); 19 | 20 | if(ratio > 1) { 21 | _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) { 22 | item.img.css({ 23 | 'max-width': item.img[0].naturalWidth / ratio, 24 | 'width': '100%' 25 | }); 26 | }); 27 | _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) { 28 | item.src = st.replaceSrc(item, ratio); 29 | }); 30 | } 31 | } 32 | 33 | } 34 | } 35 | }); -------------------------------------------------------------------------------- /vendor/Magnific-Popup/website/_includes/site-assets/ajax/test-ajax-2.html: -------------------------------------------------------------------------------- 1 |
2 | 19 |
20 | 21 |
22 |
23 |
24 |

This is just block of HTML, loaded via ajax

25 |

You can put absolutely any HTML here and resize it dynamically just with help of CSS.

26 |
27 |
28 |
29 |
-------------------------------------------------------------------------------- /vendor/owl-carousel/css/owl.theme.default.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.3.4 3 | * Copyright 2013-2018 David Deutsch 4 | * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 | */ 6 | .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} -------------------------------------------------------------------------------- /vendor/Magnific-Popup/website/_includes/site-assets/ajax/test-ajax.html: -------------------------------------------------------------------------------- 1 |
2 |

HTML content, loaded via ajax

3 | 6 |

This is dummy copy. It is not meant to be read. It has been placed here solely to demonstrate the look and feel of finished, typeset text. Only for show. He who searches for meaning here will be sorely disappointed. These words are here to provide the reader with a basic impression of how actual text will appear in its final presentation.

7 |

This is dummy copy. It's Greek to you. Unless, of course, you're Greek, in which case, it really makes no sense. Why, you can't even read it! It is strictly for mock-ups. You may mock it up as strictly as you wish.

8 | 9 | 10 |
-------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Dipesh Kumar 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014-2016 Dmitry Semenov, http://dimsemenov.com 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/magnific-popup.jquery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "magnific-popup", 3 | "title": "Magnific Popup", 4 | "description": "Fast, light, mobile-friendly and responsive lightbox and modal dialog plugin. Open inline HTML, ajax loaded content, image, form, iframe (YouTube video, Vimeo, Google Maps), photo gallery. Animation effects added with CSS3 transitions. For jQuery or Zepto.", 5 | "version": "1.1.0", 6 | "homepage": "http://dimsemenov.com/plugins/magnific-popup/", 7 | "demo": "http://dimsemenov.com/plugins/magnific-popup/", 8 | "docs": "http://dimsemenov.com/plugins/magnific-popup/documentation.html", 9 | "author": { 10 | "name": "Dmitry Semenov", 11 | "email": "diiiimaaaa@gmail.com", 12 | "url": "http://dimsemenov.com" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/dimsemenov/Magnific-Popup.git" 17 | }, 18 | "bugs": "https://github.com/dimsemenov/Magnific-Popup/issues", 19 | "dependencies": { 20 | "jquery": ">=1.8.0" 21 | }, 22 | "keywords": ["lightbox","popup","modal","window","dialog","ui","gallery","slideshow","video","image","ajax","html5","animation","jquery","photo","responsive","mobile"], 23 | "licenses": [ 24 | { 25 | "type": "MIT", 26 | "url": "http://www.opensource.org/licenses/mit-license.php" 27 | } 28 | ] 29 | } -------------------------------------------------------------------------------- /vendor/Magnific-Popup/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "magnific-popup", 3 | "version": "1.1.0", 4 | "title": "Magnific Popup", 5 | "description": "Lightbox and modal dialog plugin. Can display inline HTML, iframes (YouTube video, Vimeo, Google Maps), or an image gallery. Animation effects are added with CSS3 transitions. For jQuery or Zepto.", 6 | "keywords": [ 7 | "ecosystem:jquery", 8 | "jquery-plugin", 9 | "zepto", 10 | "lightbox", 11 | "popup", 12 | "modal", 13 | "window", 14 | "dialog", 15 | "gallery", 16 | "jquery", 17 | "photo", 18 | "responsive", 19 | "mobile" 20 | ], 21 | "author": { 22 | "name": "Dmitry Semenov", 23 | "email": "diiiimaaaa@gmail.com", 24 | "web": "http://dimsemenov.com" 25 | }, 26 | "license": "MIT", 27 | "bugs": { 28 | "url": "https://github.com/dimsemenov/Magnific-Popup/issues" 29 | }, 30 | "main": "dist/jquery.magnific-popup.js", 31 | "style": "dist/magnific-popup.css", 32 | "homepage": "http://dimsemenov.com/plugins/magnific-popup/", 33 | "engines": { 34 | "node": ">= 0.8.0" 35 | }, 36 | "scripts": { 37 | "test": "grunt jshint" 38 | }, 39 | "devDependencies": { 40 | "grunt": "~0.4.5", 41 | "grunt-contrib-clean": "~0.6.0", 42 | "grunt-contrib-concat": "^0.5.1", 43 | "grunt-contrib-copy": "~0.8.1", 44 | "grunt-contrib-cssmin": "^0.14.0", 45 | "grunt-contrib-jshint": "~0.11.3", 46 | "grunt-contrib-uglify": "~0.9.2", 47 | "grunt-contrib-watch": "~0.6.1", 48 | "grunt-jekyll": "~0.4.2", 49 | "grunt-sass": "~1.0.0" 50 | }, 51 | "repository": { 52 | "type": "git", 53 | "url": "https://github.com/dimsemenov/Magnific-Popup.git" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/website/_includes/analytics.html: -------------------------------------------------------------------------------- 1 | {% if site.url == 'local' %} 2 | 3 | {% else %} 4 | 5 | 21 | 22 | 23 | 24 | {% endif %} -------------------------------------------------------------------------------- /vendor/Magnific-Popup/src/js/ajax.js: -------------------------------------------------------------------------------- 1 | var AJAX_NS = 'ajax', 2 | _ajaxCur, 3 | _removeAjaxCursor = function() { 4 | if(_ajaxCur) { 5 | $(document.body).removeClass(_ajaxCur); 6 | } 7 | }, 8 | _destroyAjaxRequest = function() { 9 | _removeAjaxCursor(); 10 | if(mfp.req) { 11 | mfp.req.abort(); 12 | } 13 | }; 14 | 15 | $.magnificPopup.registerModule(AJAX_NS, { 16 | 17 | options: { 18 | settings: null, 19 | cursor: 'mfp-ajax-cur', 20 | tError: 'The content could not be loaded.' 21 | }, 22 | 23 | proto: { 24 | initAjax: function() { 25 | mfp.types.push(AJAX_NS); 26 | _ajaxCur = mfp.st.ajax.cursor; 27 | 28 | _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest); 29 | _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest); 30 | }, 31 | getAjax: function(item) { 32 | 33 | if(_ajaxCur) { 34 | $(document.body).addClass(_ajaxCur); 35 | } 36 | 37 | mfp.updateStatus('loading'); 38 | 39 | var opts = $.extend({ 40 | url: item.src, 41 | success: function(data, textStatus, jqXHR) { 42 | var temp = { 43 | data:data, 44 | xhr:jqXHR 45 | }; 46 | 47 | _mfpTrigger('ParseAjax', temp); 48 | 49 | mfp.appendContent( $(temp.data), AJAX_NS ); 50 | 51 | item.finished = true; 52 | 53 | _removeAjaxCursor(); 54 | 55 | mfp._setFocus(); 56 | 57 | setTimeout(function() { 58 | mfp.wrap.addClass(READY_CLASS); 59 | }, 16); 60 | 61 | mfp.updateStatus('ready'); 62 | 63 | _mfpTrigger('AjaxContentAdded'); 64 | }, 65 | error: function() { 66 | _removeAjaxCursor(); 67 | item.finished = item.loadError = true; 68 | mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src)); 69 | } 70 | }, mfp.st.ajax.settings); 71 | 72 | mfp.req = $.ajax(opts); 73 | 74 | return ''; 75 | } 76 | } 77 | }); -------------------------------------------------------------------------------- /vendor/Magnific-Popup/src/js/inline.js: -------------------------------------------------------------------------------- 1 | 2 | var INLINE_NS = 'inline', 3 | _hiddenClass, 4 | _inlinePlaceholder, 5 | _lastInlineElement, 6 | _putInlineElementsBack = function() { 7 | if(_lastInlineElement) { 8 | _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach(); 9 | _lastInlineElement = null; 10 | } 11 | }; 12 | 13 | $.magnificPopup.registerModule(INLINE_NS, { 14 | options: { 15 | hiddenClass: 'hide', // will be appended with `mfp-` prefix 16 | markup: '', 17 | tNotFound: 'Content not found' 18 | }, 19 | proto: { 20 | 21 | initInline: function() { 22 | mfp.types.push(INLINE_NS); 23 | 24 | _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() { 25 | _putInlineElementsBack(); 26 | }); 27 | }, 28 | 29 | getInline: function(item, template) { 30 | 31 | _putInlineElementsBack(); 32 | 33 | if(item.src) { 34 | var inlineSt = mfp.st.inline, 35 | el = $(item.src); 36 | 37 | if(el.length) { 38 | 39 | // If target element has parent - we replace it with placeholder and put it back after popup is closed 40 | var parent = el[0].parentNode; 41 | if(parent && parent.tagName) { 42 | if(!_inlinePlaceholder) { 43 | _hiddenClass = inlineSt.hiddenClass; 44 | _inlinePlaceholder = _getEl(_hiddenClass); 45 | _hiddenClass = 'mfp-'+_hiddenClass; 46 | } 47 | // replace target inline element with placeholder 48 | _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass); 49 | } 50 | 51 | mfp.updateStatus('ready'); 52 | } else { 53 | mfp.updateStatus('error', inlineSt.tNotFound); 54 | el = $('
'); 55 | } 56 | 57 | item.inlineElement = el; 58 | return el; 59 | } 60 | 61 | mfp.updateStatus('ready'); 62 | mfp._parseMarkup(template, {}, item); 63 | return template; 64 | } 65 | } 66 | }); -------------------------------------------------------------------------------- /vendor/Magnific-Popup/website/_includes/logo.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Portfolio 2 | 3 | The objective to assemble my personal portfolio is to provide the reviewer with as much relevant information as possible. 4 | 5 | 6 |
7 | 8 | [![View Code](https://img.shields.io/badge/View%20-Code-green)](https://github.com/Dipeshtwis/portfolio) 9 | [![Github Issues](https://img.shields.io/badge/GitHub-Issues-orange)](https://github.com/Dipeshtwis/portfolio/issues) 10 | [![GitHub Pull Requests](https://img.shields.io/badge/GitHub-Pull%20Requests-blue)](https://github.com/Dipeshtwis/portfolio/pulls) 11 | 12 |
13 | 14 | ## 📝 Contents 15 | 16 |

17 | Built with   |    18 | Website Link   |    19 | Getting started   |    20 | Author 21 |

22 | 23 | ## 🔧 Built with 24 | 25 | - HTML5 26 | - CSS3 27 | - BOOTSTRAP 28 | - Javascript 29 | - Formspree integration 30 | 31 | 32 | ## Website Link 33 | 34 | [Website](https://deeptwist.tk/) 35 | 36 | 37 | ## Getting Started 38 | 39 | To get a local copy of the repository please run the following commands on your terminal: 40 | 41 | ``` 42 | $ cd 43 | ``` 44 | 45 | ~~~bash 46 | $ git clone https://github.com/Dipeshtwis/portfolio.git 47 | $ cd portfolio 48 | ~~~ 49 | 50 | ~~~ 51 | 52 | ## To run Website 53 | 54 | - Run the index.html 55 | 56 | ~~~ 57 | 58 | 59 | ## ✒️ Authors 60 | 61 | 62 | 👤 **Dipesh Kumar** 63 | 64 | - Github: [@Dipeshtwis](https://github.com/Dipeshtwis) 65 | - Twitter: [@97deepeshkumar](https://twitter.com/97deepeshkumar) 66 | - Linkedin: [dipeshtwis](https://www.linkedin.com/in/dipeshtwis/) 67 | 68 | 69 | 70 | ## 🤝 Contributing 71 | 72 | Contributions, issues and feature requests are welcome! 73 | 74 | Feel free to check the [issues page](https://github.com/Dipeshtwis/portfolio/issues). 75 | 76 | 77 | ## 👍 Show your support 78 | 79 | Give a ⭐️ if you like this project! 80 | -------------------------------------------------------------------------------- /js/main.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | 3 | 4 | let $btns = $('.project-area .button-group button'); 5 | 6 | 7 | $btns.click(function (e) { 8 | 9 | $('.project-area .button-group button').removeClass('active'); 10 | e.target.classList.add('active'); 11 | 12 | let selector = $(e.target).attr('data-filter'); 13 | $('.project-area .grid').isotope({ 14 | filter: selector 15 | }); 16 | 17 | return false; 18 | }) 19 | 20 | $('.project-area .button-group #btn1').trigger('click'); 21 | 22 | $('.project-area .grid .test-popup-link').magnificPopup({ 23 | type: 'image', 24 | gallery: { enabled: true } 25 | }); 26 | 27 | // Owl-carousel 28 | 29 | $('.site-main .about-area .owl-carousel').owlCarousel({ 30 | loop: true, 31 | autoplay: true, 32 | dots: true, 33 | responsive: { 34 | 0: { 35 | items: 1 36 | }, 37 | 560: { 38 | items: 2 39 | } 40 | } 41 | }) 42 | 43 | // sticky navigation menu 44 | 45 | let nav_offset_top = $('.header_area').height() + 50; 46 | 47 | function navbarFixed() { 48 | if ($('.header_area').length) { 49 | $(window).scroll(function () { 50 | let scroll = $(window).scrollTop(); 51 | if (scroll >= nav_offset_top) { 52 | $('.header_area .main-menu').addClass('navbar_fixed'); 53 | } else { 54 | $('.header_area .main-menu').removeClass('navbar_fixed'); 55 | } 56 | }) 57 | } 58 | } 59 | 60 | navbarFixed(); 61 | 62 | }); 63 | 64 | // progress bar 65 | 66 | window.onscroll = function() {myFunction()}; 67 | 68 | function myFunction() { 69 | var winScroll = document.body.scrollTop || document.documentElement.scrollTop; 70 | var height = document.documentElement.scrollHeight - document.documentElement.clientHeight; 71 | var scrolled = (winScroll / height) * 100; 72 | document.getElementById("myBar").style.width = scrolled + "%"; 73 | } -------------------------------------------------------------------------------- /vendor/Magnific-Popup/website/_includes/_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{ page.title }} 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | {% if site.url == 'local' %} 22 | 23 | 24 | {% else %} 25 | 26 | {% endif %} 27 | 28 | 29 | {% if page.title == 'Magnific Popup Documentation' %} 30 | 31 | {% endif %} 32 | 33 | 34 | 35 | 36 | 37 |
38 | 39 | {{ content | markdown }} 40 | 41 | 44 | 45 |
46 | 47 | {{page.footer}} 48 | 49 | {% if page.addjs %} 50 | {% if site.url == 'local' %} 51 | 56 | 57 | {% else %} 58 | 63 | 64 | {% endif %} 65 | {% endif %} 66 | 67 | {% include analytics.html %} 68 | 69 | {% if page.buildtool %} 70 | {% include build-tool.html %} 71 | {% endif %} 72 | 73 | {% if site.url == 'local' %} 74 | This page is just for tests and should not be used for production! 75 | {% endif %} 76 | 77 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/src/js/iframe.js: -------------------------------------------------------------------------------- 1 | 2 | var IFRAME_NS = 'iframe', 3 | _emptyPage = '//about:blank', 4 | 5 | _fixIframeBugs = function(isShowing) { 6 | if(mfp.currTemplate[IFRAME_NS]) { 7 | var el = mfp.currTemplate[IFRAME_NS].find('iframe'); 8 | if(el.length) { 9 | // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug 10 | if(!isShowing) { 11 | el[0].src = _emptyPage; 12 | } 13 | 14 | // IE8 black screen bug fix 15 | if(mfp.isIE8) { 16 | el.css('display', isShowing ? 'block' : 'none'); 17 | } 18 | } 19 | } 20 | }; 21 | 22 | $.magnificPopup.registerModule(IFRAME_NS, { 23 | 24 | options: { 25 | markup: '
'+ 26 | '
'+ 27 | ''+ 28 | '
', 29 | 30 | srcAction: 'iframe_src', 31 | 32 | // we don't care and support only one default type of URL by default 33 | patterns: { 34 | youtube: { 35 | index: 'youtube.com', 36 | id: 'v=', 37 | src: '//www.youtube.com/embed/%id%?autoplay=1' 38 | }, 39 | vimeo: { 40 | index: 'vimeo.com/', 41 | id: '/', 42 | src: '//player.vimeo.com/video/%id%?autoplay=1' 43 | }, 44 | gmaps: { 45 | index: '//maps.google.', 46 | src: '%id%&output=embed' 47 | } 48 | } 49 | }, 50 | 51 | proto: { 52 | initIframe: function() { 53 | mfp.types.push(IFRAME_NS); 54 | 55 | _mfpOn('BeforeChange', function(e, prevType, newType) { 56 | if(prevType !== newType) { 57 | if(prevType === IFRAME_NS) { 58 | _fixIframeBugs(); // iframe if removed 59 | } else if(newType === IFRAME_NS) { 60 | _fixIframeBugs(true); // iframe is showing 61 | } 62 | }// else { 63 | // iframe source is switched, don't do anything 64 | //} 65 | }); 66 | 67 | _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() { 68 | _fixIframeBugs(); 69 | }); 70 | }, 71 | 72 | getIframe: function(item, template) { 73 | var embedSrc = item.src; 74 | var iframeSt = mfp.st.iframe; 75 | 76 | $.each(iframeSt.patterns, function() { 77 | if(embedSrc.indexOf( this.index ) > -1) { 78 | if(this.id) { 79 | if(typeof this.id === 'string') { 80 | embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length); 81 | } else { 82 | embedSrc = this.id.call( this, embedSrc ); 83 | } 84 | } 85 | embedSrc = this.src.replace('%id%', embedSrc ); 86 | return false; // break; 87 | } 88 | }); 89 | 90 | var dataObj = {}; 91 | if(iframeSt.srcAction) { 92 | dataObj[iframeSt.srcAction] = embedSrc; 93 | } 94 | mfp._parseMarkup(template, dataObj, item); 95 | 96 | mfp.updateStatus('ready'); 97 | 98 | return template; 99 | } 100 | } 101 | }); 102 | 103 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/src/css/_settings.scss: -------------------------------------------------------------------------------- 1 | //////////////////////// 2 | // Settings // 3 | //////////////////////// 4 | 5 | // overlay 6 | $mfp-overlay-color: #0b0b0b !default; // Color of overlay screen 7 | $mfp-overlay-opacity: 0.8 !default; // Opacity of overlay screen 8 | $mfp-shadow: 0 0 8px rgba(0, 0, 0, 0.6) !default; // Shadow on image or iframe 9 | 10 | // spacing 11 | $mfp-popup-padding-left: 8px !default; // Padding from left and from right side 12 | $mfp-popup-padding-left-mobile: 6px !default; // Same as above, but is applied when width of window is less than 800px 13 | 14 | $mfp-z-index-base: 1040 !default; // Base z-index of popup 15 | 16 | // controls 17 | $mfp-include-arrows: true !default; // Include styles for nav arrows 18 | $mfp-controls-opacity: 0.65 !default; // Opacity of controls 19 | $mfp-controls-color: #FFF !default; // Color of controls 20 | $mfp-controls-border-color: #3F3F3F !default; // Border color of controls 21 | $mfp-inner-close-icon-color: #333 !default; // Color of close button when inside 22 | $mfp-controls-text-color: #CCC !default; // Color of preloader and "1 of X" indicator 23 | $mfp-controls-text-color-hover: #FFF !default; // Hover color of preloader and "1 of X" indicator 24 | 25 | // Iframe-type options 26 | $mfp-include-iframe-type: true !default; // Enable Iframe-type popups 27 | $mfp-iframe-padding-top: 40px !default; // Iframe padding top 28 | $mfp-iframe-background: #000 !default; // Background color of iframes 29 | $mfp-iframe-max-width: 900px !default; // Maximum width of iframes 30 | $mfp-iframe-ratio: 9/16 !default; // Ratio of iframe (9/16 = widescreen, 3/4 = standard, etc.) 31 | 32 | // Image-type options 33 | $mfp-include-image-type: true !default; // Enable Image-type popups 34 | $mfp-image-background: #444 !default; 35 | $mfp-image-padding-top: 40px !default; // Image padding top 36 | $mfp-image-padding-bottom: 40px !default; // Image padding bottom 37 | $mfp-include-mobile-layout-for-image: true !default; // Removes paddings from top and bottom 38 | 39 | // Image caption options 40 | $mfp-caption-title-color: #F3F3F3 !default; // Caption title color 41 | $mfp-caption-subtitle-color: #BDBDBD !default; // Caption subtitle color 42 | 43 | // A11y 44 | $mfp-use-visuallyhidden: false !default; // Hide content from browsers, but make it available for screen readers 45 | -------------------------------------------------------------------------------- /css/responsive.css: -------------------------------------------------------------------------------- 1 | 2 | /* if the viewport is equal to 340px or less than that */ 3 | @media only screen and (max-width: 340px){ 4 | .header_area .main-menu .navbar, 5 | .header_area .main-menu .navbar .navbar-brand, h4, 6 | .site-main .services-area, 7 | { 8 | padding: 2%; 9 | margin: 0%; 10 | } 11 | 12 | .site-main .site-banner .site-title h1{ 13 | font-size: 41px; 14 | } 15 | 16 | .site-main .project-area .button-group button + button{ 17 | padding-left: 0.5rem; 18 | } 19 | 20 | .site-main > .services-area .services{ 21 | width: 13rem; 22 | } 23 | 24 | .stack{ 25 | font: normal 18px/ 30px var(--roboto); 26 | } 27 | 28 | } 29 | 30 | @media only screen and (max-width: 432px){ 31 | .stack-style { 32 | font-size: 0.8rem; 33 | padding: .2rem; 34 | } 35 | } 36 | 37 | 38 | /* if the viewport is equal to 340px or less than that */ 39 | @media only screen and (max-width: 792px){ 40 | .site-main .about-area .about-title h2 > span{ 41 | font-size: 31px; 42 | letter-spacing: 10px; 43 | } 44 | 45 | .site-main > .services-area .services { 46 | padding: 3rem 1rem; 47 | width: auto; 48 | margin-bottom: 2rem; 49 | } 50 | 51 | .flip-card { 52 | height: 318px; 53 | } 54 | 55 | .stack{ 56 | font: normal bold 20px/ 30px var(--roboto); 57 | margin-top: 1.5rem; 58 | } 59 | 60 | .header_area .main-menu .navbar .navbar-brand{ 61 | padding: 0; 62 | } 63 | 64 | .site-main .brand-area .experience-area .years-area{ 65 | padding-left: 1%; 66 | width: 49%; 67 | } 68 | 69 | .site-main .brand-area .experience-area .bg-panel{ 70 | margin-left: 30%; 71 | width: 80%; 72 | } 73 | 74 | .site-main .brand-area .experience-area .call-area{ 75 | padding-left: 3%; 76 | } 77 | 78 | .site-main .project-area .button-group button{ 79 | font: normal 500 18px/40px var(--roboto); 80 | } 81 | 82 | .site-main .project-area .button-group button + button{ 83 | padding-left: 1rem; 84 | } 85 | 86 | .site-main .about-area .about-title p{ 87 | padding: 0%; 88 | } 89 | 90 | form { 91 | padding-left: 2rem; 92 | padding-right: 2rem; 93 | } 94 | 95 | footer.footer-area { 96 | padding: 4rem 0; 97 | } 98 | 99 | .site-main .services-area{ 100 | padding:2%; 101 | margin: 0; 102 | } 103 | 104 | .site-main .site-banner .site-title h4{ 105 | font-size: 1.2rem !important; 106 | } 107 | } 108 | 109 | 110 | 111 | /* if the viewport is equal to 1910px or less than that */ 112 | @media only screen and (max-width: 1910px){ 113 | .header_area .main-menu .navbar{ 114 | padding: 1rem; 115 | } 116 | 117 | .site-main .site-banner .site-title h4{ 118 | font-size: 1.5rem; 119 | } 120 | .container{ 121 | max-width: 90%; 122 | } 123 | 124 | .site-main .brand-area, 125 | .site-main .services-area .services-title, 126 | .site-main .about-area{ 127 | padding: 3% 4%; 128 | } 129 | 130 | 131 | } -------------------------------------------------------------------------------- /vendor/owl-carousel/css/owl.carousel.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.3.4 3 | * Copyright 2013-2018 David Deutsch 4 | * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 | */ 6 | .owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%} -------------------------------------------------------------------------------- /vendor/Magnific-Popup/website/_includes/signup.html: -------------------------------------------------------------------------------- 1 |
2 | 65 | 85 |
86 |

Magnific WordPress Plugin is under development!

87 |

To get notified about the release, subscribe to my Mailchimp list that I send 3-4 times a year. Any feature requests are welcome.

88 |
89 | 90 | 91 | 92 |
93 | 94 |
95 | 96 | 97 |
98 |
99 |
100 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/README.md: -------------------------------------------------------------------------------- 1 | # Magnific Popup Repository 2 | 3 | [![Build Status](https://travis-ci.org/dimsemenov/Magnific-Popup.png)](https://travis-ci.org/dimsemenov/Magnific-Popup) 4 | [![Flattr](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/thing/1310305/Magnific-Popup-by-dimsemenov) 5 | 6 | Fast, light and responsive lightbox plugin, for jQuery and Zepto.js. 7 | 8 | - [Documentation and getting started guide](http://dimsemenov.com/plugins/magnific-popup/documentation.html). 9 | - [Examples and plugin home page](http://dimsemenov.com/plugins/magnific-popup/). 10 | - More examples in [CodePen collection](http://codepen.io/collection/nLcqo). 11 | 12 | Optionally, install via Bower `bower install magnific-popup` or npm: `npm install magnific-popup`. 13 | [Ruby gem](https://rubygems.org/gems/magnific-popup-rails): `gem install magnific-popup-rails`. 14 | 15 | ## Extensions 16 | 17 | - WordPress plugin - [under development](http://dimsemenov.com/plugins/magnific-popup/wordpress.html). 18 | - [Drupal module](https://drupal.org/project/magnific_popup). 19 | - [Concrete5 add-on](https://github.com/cdowdy/concrete5-Magnific-Popup). 20 | - [Redaxo add-on](http://www.redaxo.org/de/download/addons/?addon_id=1131). 21 | - [Contao extension](https://github.com/fritzmg/contao-magnific-popup). 22 | 23 | If you created an extension for some CMS, email me and I'll add it to this list. 24 | 25 | ## Location of stuff 26 | 27 | - Generated popup JS and CSS files are in folder [dist/](https://github.com/dimsemenov/Magnific-Popup/tree/master/dist). (Online build tool is on [documentation page](http://dimsemenov.com/plugins/magnific-popup/documentation.html)). 28 | - Source files are in folder [src/](https://github.com/dimsemenov/Magnific-Popup/tree/master/src). They include [Sass CSS file](https://github.com/dimsemenov/Magnific-Popup/blob/master/src/css/main.scss) and js parts (edit them if you wish to submit commit). 29 | - Website (examples & documentation) is in folder [website/](https://github.com/dimsemenov/Magnific-Popup/tree/master/website). 30 | - Documentation page itself is in [website/documentation.md](https://github.com/dimsemenov/Magnific-Popup/blob/master/website/documentation.md) (contributions to it are very welcome). 31 | 32 | 33 | 34 | ## Using Magnific Popup? 35 | 36 | If you used Magnific Popup in some interesting way, or on site of popular brand, I'd be very grateful if you email me a link to it. 37 | 38 | 39 | ## Build 40 | 41 | To compile Magnific Popup by yourself, first of make sure that you have [Node.js](http://nodejs.org/), [Grunt.js](https://github.com/cowboy/grunt), [Ruby](http://www.ruby-lang.org/) and [Jekyll](https://github.com/mojombo/jekyll/) installed, then: 42 | 43 | 1) Copy repository 44 | 45 | git clone https://github.com/dimsemenov/Magnific-Popup.git 46 | 47 | 2) Go inside Magnific Popup folder that you fetched and install Node dependencies 48 | 49 | cd Magnific-Popup && npm install 50 | 51 | 3) Now simply run `grunt` to generate JS and CSS in folder `dist` and site in folder `_site/`. 52 | 53 | grunt 54 | 55 | Optionally: 56 | 57 | - Run `grunt watch` to automatically rebuild script when you change files in `src/` or in `website/`. 58 | - If you don't have and don't want to install Jekyll, run `grunt nosite` to just build JS and CSS files related to popup in `dist/`. 59 | 60 | 61 | 62 | ## [Changelog](https://github.com/dimsemenov/Magnific-Popup/releases) 63 | 64 | ## License 65 | 66 | Script is MIT licensed and free and will always be kept this way. But has a small restriction from me - please do not create public WordPress plugin based on it(or at least contact me before creating it), because I will make it and it'll be open source too ([want to get notified?](http://dimsemenov.com/subscribe.html)). 67 | 68 | Created by [@dimsemenov](http://twitter.com/dimsemenov) & [contributors](https://github.com/dimsemenov/Magnific-Popup/contributors). 69 | 70 | [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/dimsemenov/magnific-popup/trend.png)](https://bitdeli.com/free "Bitdeli Badge") 71 | 72 | ## Bugs & contributing 73 | 74 | Please report bugs via GitHub and ask general questions through [Stack Overflow](http://stackoverflow.com/questions/tagged/magnific-popup). Feel free to submit commit [pull-request](https://github.com/dimsemenov/Magnific-Popup/pulls), even the tiniest contributions to the script or to the documentation are very welcome. 75 | 76 | 77 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/src/js/gallery.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Get looped index depending on number of slides 3 | */ 4 | var _getLoopedId = function(index) { 5 | var numSlides = mfp.items.length; 6 | if(index > numSlides - 1) { 7 | return index - numSlides; 8 | } else if(index < 0) { 9 | return numSlides + index; 10 | } 11 | return index; 12 | }, 13 | _replaceCurrTotal = function(text, curr, total) { 14 | return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total); 15 | }; 16 | 17 | $.magnificPopup.registerModule('gallery', { 18 | 19 | options: { 20 | enabled: false, 21 | arrowMarkup: '', 22 | preload: [0,2], 23 | navigateByImgClick: true, 24 | arrows: true, 25 | 26 | tPrev: 'Previous (Left arrow key)', 27 | tNext: 'Next (Right arrow key)', 28 | tCounter: '%curr% of %total%' 29 | }, 30 | 31 | proto: { 32 | initGallery: function() { 33 | 34 | var gSt = mfp.st.gallery, 35 | ns = '.mfp-gallery'; 36 | 37 | mfp.direction = true; // true - next, false - prev 38 | 39 | if(!gSt || !gSt.enabled ) return false; 40 | 41 | _wrapClasses += ' mfp-gallery'; 42 | 43 | _mfpOn(OPEN_EVENT+ns, function() { 44 | 45 | if(gSt.navigateByImgClick) { 46 | mfp.wrap.on('click'+ns, '.mfp-img', function() { 47 | if(mfp.items.length > 1) { 48 | mfp.next(); 49 | return false; 50 | } 51 | }); 52 | } 53 | 54 | _document.on('keydown'+ns, function(e) { 55 | if (e.keyCode === 37) { 56 | mfp.prev(); 57 | } else if (e.keyCode === 39) { 58 | mfp.next(); 59 | } 60 | }); 61 | }); 62 | 63 | _mfpOn('UpdateStatus'+ns, function(e, data) { 64 | if(data.text) { 65 | data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length); 66 | } 67 | }); 68 | 69 | _mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) { 70 | var l = mfp.items.length; 71 | values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : ''; 72 | }); 73 | 74 | _mfpOn('BuildControls' + ns, function() { 75 | if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) { 76 | var markup = gSt.arrowMarkup, 77 | arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS), 78 | arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS); 79 | 80 | arrowLeft.click(function() { 81 | mfp.prev(); 82 | }); 83 | arrowRight.click(function() { 84 | mfp.next(); 85 | }); 86 | 87 | mfp.container.append(arrowLeft.add(arrowRight)); 88 | } 89 | }); 90 | 91 | _mfpOn(CHANGE_EVENT+ns, function() { 92 | if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout); 93 | 94 | mfp._preloadTimeout = setTimeout(function() { 95 | mfp.preloadNearbyImages(); 96 | mfp._preloadTimeout = null; 97 | }, 16); 98 | }); 99 | 100 | 101 | _mfpOn(CLOSE_EVENT+ns, function() { 102 | _document.off(ns); 103 | mfp.wrap.off('click'+ns); 104 | mfp.arrowRight = mfp.arrowLeft = null; 105 | }); 106 | 107 | }, 108 | next: function() { 109 | mfp.direction = true; 110 | mfp.index = _getLoopedId(mfp.index + 1); 111 | mfp.updateItemHTML(); 112 | }, 113 | prev: function() { 114 | mfp.direction = false; 115 | mfp.index = _getLoopedId(mfp.index - 1); 116 | mfp.updateItemHTML(); 117 | }, 118 | goTo: function(newIndex) { 119 | mfp.direction = (newIndex >= mfp.index); 120 | mfp.index = newIndex; 121 | mfp.updateItemHTML(); 122 | }, 123 | preloadNearbyImages: function() { 124 | var p = mfp.st.gallery.preload, 125 | preloadBefore = Math.min(p[0], mfp.items.length), 126 | preloadAfter = Math.min(p[1], mfp.items.length), 127 | i; 128 | 129 | for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) { 130 | mfp._preloadItem(mfp.index+i); 131 | } 132 | for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) { 133 | mfp._preloadItem(mfp.index-i); 134 | } 135 | }, 136 | _preloadItem: function(index) { 137 | index = _getLoopedId(index); 138 | 139 | if(mfp.items[index].preloaded) { 140 | return; 141 | } 142 | 143 | var item = mfp.items[index]; 144 | if(!item.parsed) { 145 | item = mfp.parseEl( index ); 146 | } 147 | 148 | _mfpTrigger('LazyLoad', item); 149 | 150 | if(item.type === 'image') { 151 | item.img = $('').on('load.mfploader', function() { 152 | item.hasSize = true; 153 | }).on('error.mfploader', function() { 154 | item.hasSize = true; 155 | item.loadError = true; 156 | _mfpTrigger('LazyLoadError', item); 157 | }).attr('src', item.src); 158 | } 159 | 160 | 161 | item.preloaded = true; 162 | } 163 | } 164 | }); -------------------------------------------------------------------------------- /vendor/Magnific-Popup/src/js/zoom.js: -------------------------------------------------------------------------------- 1 | var hasMozTransform, 2 | getHasMozTransform = function() { 3 | if(hasMozTransform === undefined) { 4 | hasMozTransform = document.createElement('p').style.MozTransform !== undefined; 5 | } 6 | return hasMozTransform; 7 | }; 8 | 9 | $.magnificPopup.registerModule('zoom', { 10 | 11 | options: { 12 | enabled: false, 13 | easing: 'ease-in-out', 14 | duration: 300, 15 | opener: function(element) { 16 | return element.is('img') ? element : element.find('img'); 17 | } 18 | }, 19 | 20 | proto: { 21 | 22 | initZoom: function() { 23 | var zoomSt = mfp.st.zoom, 24 | ns = '.zoom', 25 | image; 26 | 27 | if(!zoomSt.enabled || !mfp.supportsTransition) { 28 | return; 29 | } 30 | 31 | var duration = zoomSt.duration, 32 | getElToAnimate = function(image) { 33 | var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'), 34 | transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing, 35 | cssObj = { 36 | position: 'fixed', 37 | zIndex: 9999, 38 | left: 0, 39 | top: 0, 40 | '-webkit-backface-visibility': 'hidden' 41 | }, 42 | t = 'transition'; 43 | 44 | cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition; 45 | 46 | newImg.css(cssObj); 47 | return newImg; 48 | }, 49 | showMainContent = function() { 50 | mfp.content.css('visibility', 'visible'); 51 | }, 52 | openTimeout, 53 | animatedImg; 54 | 55 | _mfpOn('BuildControls'+ns, function() { 56 | if(mfp._allowZoom()) { 57 | 58 | clearTimeout(openTimeout); 59 | mfp.content.css('visibility', 'hidden'); 60 | 61 | // Basically, all code below does is clones existing image, puts in on top of the current one and animated it 62 | 63 | image = mfp._getItemToZoom(); 64 | 65 | if(!image) { 66 | showMainContent(); 67 | return; 68 | } 69 | 70 | animatedImg = getElToAnimate(image); 71 | 72 | animatedImg.css( mfp._getOffset() ); 73 | 74 | mfp.wrap.append(animatedImg); 75 | 76 | openTimeout = setTimeout(function() { 77 | animatedImg.css( mfp._getOffset( true ) ); 78 | openTimeout = setTimeout(function() { 79 | 80 | showMainContent(); 81 | 82 | setTimeout(function() { 83 | animatedImg.remove(); 84 | image = animatedImg = null; 85 | _mfpTrigger('ZoomAnimationEnded'); 86 | }, 16); // avoid blink when switching images 87 | 88 | }, duration); // this timeout equals animation duration 89 | 90 | }, 16); // by adding this timeout we avoid short glitch at the beginning of animation 91 | 92 | 93 | // Lots of timeouts... 94 | } 95 | }); 96 | _mfpOn(BEFORE_CLOSE_EVENT+ns, function() { 97 | if(mfp._allowZoom()) { 98 | 99 | clearTimeout(openTimeout); 100 | 101 | mfp.st.removalDelay = duration; 102 | 103 | if(!image) { 104 | image = mfp._getItemToZoom(); 105 | if(!image) { 106 | return; 107 | } 108 | animatedImg = getElToAnimate(image); 109 | } 110 | 111 | animatedImg.css( mfp._getOffset(true) ); 112 | mfp.wrap.append(animatedImg); 113 | mfp.content.css('visibility', 'hidden'); 114 | 115 | setTimeout(function() { 116 | animatedImg.css( mfp._getOffset() ); 117 | }, 16); 118 | } 119 | 120 | }); 121 | 122 | _mfpOn(CLOSE_EVENT+ns, function() { 123 | if(mfp._allowZoom()) { 124 | showMainContent(); 125 | if(animatedImg) { 126 | animatedImg.remove(); 127 | } 128 | image = null; 129 | } 130 | }); 131 | }, 132 | 133 | _allowZoom: function() { 134 | return mfp.currItem.type === 'image'; 135 | }, 136 | 137 | _getItemToZoom: function() { 138 | if(mfp.currItem.hasSize) { 139 | return mfp.currItem.img; 140 | } else { 141 | return false; 142 | } 143 | }, 144 | 145 | // Get element postion relative to viewport 146 | _getOffset: function(isLarge) { 147 | var el; 148 | if(isLarge) { 149 | el = mfp.currItem.img; 150 | } else { 151 | el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem); 152 | } 153 | 154 | var offset = el.offset(); 155 | var paddingTop = parseInt(el.css('padding-top'),10); 156 | var paddingBottom = parseInt(el.css('padding-bottom'),10); 157 | offset.top -= ( $(window).scrollTop() - paddingTop ); 158 | 159 | 160 | /* 161 | 162 | Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa. 163 | 164 | */ 165 | var obj = { 166 | width: el.width(), 167 | // fix Zepto height+padding issue 168 | height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop 169 | }; 170 | 171 | // I hate to do this, but there is no another option 172 | if( getHasMozTransform() ) { 173 | obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)'; 174 | } else { 175 | obj.left = offset.left; 176 | obj.top = offset.top; 177 | } 178 | return obj; 179 | } 180 | 181 | } 182 | }); 183 | 184 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/libs/qunit/qunit.css: -------------------------------------------------------------------------------- 1 | /** 2 | * QUnit v1.11.0 - A JavaScript Unit Testing Framework 3 | * 4 | * http://qunitjs.com 5 | * 6 | * Copyright 2012 jQuery Foundation and other contributors 7 | * Released under the MIT license. 8 | * http://jquery.org/license 9 | */ 10 | 11 | /** Font Family and Sizes */ 12 | 13 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { 14 | font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; 15 | } 16 | 17 | #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } 18 | #qunit-tests { font-size: smaller; } 19 | 20 | 21 | /** Resets */ 22 | 23 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { 24 | margin: 0; 25 | padding: 0; 26 | } 27 | 28 | 29 | /** Header */ 30 | 31 | #qunit-header { 32 | padding: 0.5em 0 0.5em 1em; 33 | 34 | color: #8699a4; 35 | background-color: #0d3349; 36 | 37 | font-size: 1.5em; 38 | line-height: 1em; 39 | font-weight: normal; 40 | 41 | border-radius: 5px 5px 0 0; 42 | -moz-border-radius: 5px 5px 0 0; 43 | -webkit-border-top-right-radius: 5px; 44 | -webkit-border-top-left-radius: 5px; 45 | } 46 | 47 | #qunit-header a { 48 | text-decoration: none; 49 | color: #c2ccd1; 50 | } 51 | 52 | #qunit-header a:hover, 53 | #qunit-header a:focus { 54 | color: #fff; 55 | } 56 | 57 | #qunit-testrunner-toolbar label { 58 | display: inline-block; 59 | padding: 0 .5em 0 .1em; 60 | } 61 | 62 | #qunit-banner { 63 | height: 5px; 64 | } 65 | 66 | #qunit-testrunner-toolbar { 67 | padding: 0.5em 0 0.5em 2em; 68 | color: #5E740B; 69 | background-color: #eee; 70 | overflow: hidden; 71 | } 72 | 73 | #qunit-userAgent { 74 | padding: 0.5em 0 0.5em 2.5em; 75 | background-color: #2b81af; 76 | color: #fff; 77 | text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; 78 | } 79 | 80 | #qunit-modulefilter-container { 81 | float: right; 82 | } 83 | 84 | /** Tests: Pass/Fail */ 85 | 86 | #qunit-tests { 87 | list-style-position: inside; 88 | } 89 | 90 | #qunit-tests li { 91 | padding: 0.4em 0.5em 0.4em 2.5em; 92 | border-bottom: 1px solid #fff; 93 | list-style-position: inside; 94 | } 95 | 96 | #qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { 97 | display: none; 98 | } 99 | 100 | #qunit-tests li strong { 101 | cursor: pointer; 102 | } 103 | 104 | #qunit-tests li a { 105 | padding: 0.5em; 106 | color: #c2ccd1; 107 | text-decoration: none; 108 | } 109 | #qunit-tests li a:hover, 110 | #qunit-tests li a:focus { 111 | color: #000; 112 | } 113 | 114 | #qunit-tests li .runtime { 115 | float: right; 116 | font-size: smaller; 117 | } 118 | 119 | .qunit-assert-list { 120 | margin-top: 0.5em; 121 | padding: 0.5em; 122 | 123 | background-color: #fff; 124 | 125 | border-radius: 5px; 126 | -moz-border-radius: 5px; 127 | -webkit-border-radius: 5px; 128 | } 129 | 130 | .qunit-collapsed { 131 | display: none; 132 | } 133 | 134 | #qunit-tests table { 135 | border-collapse: collapse; 136 | margin-top: .2em; 137 | } 138 | 139 | #qunit-tests th { 140 | text-align: right; 141 | vertical-align: top; 142 | padding: 0 .5em 0 0; 143 | } 144 | 145 | #qunit-tests td { 146 | vertical-align: top; 147 | } 148 | 149 | #qunit-tests pre { 150 | margin: 0; 151 | white-space: pre-wrap; 152 | word-wrap: break-word; 153 | } 154 | 155 | #qunit-tests del { 156 | background-color: #e0f2be; 157 | color: #374e0c; 158 | text-decoration: none; 159 | } 160 | 161 | #qunit-tests ins { 162 | background-color: #ffcaca; 163 | color: #500; 164 | text-decoration: none; 165 | } 166 | 167 | /*** Test Counts */ 168 | 169 | #qunit-tests b.counts { color: black; } 170 | #qunit-tests b.passed { color: #5E740B; } 171 | #qunit-tests b.failed { color: #710909; } 172 | 173 | #qunit-tests li li { 174 | padding: 5px; 175 | background-color: #fff; 176 | border-bottom: none; 177 | list-style-position: inside; 178 | } 179 | 180 | /*** Passing Styles */ 181 | 182 | #qunit-tests li li.pass { 183 | color: #3c510c; 184 | background-color: #fff; 185 | border-left: 10px solid #C6E746; 186 | } 187 | 188 | #qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } 189 | #qunit-tests .pass .test-name { color: #366097; } 190 | 191 | #qunit-tests .pass .test-actual, 192 | #qunit-tests .pass .test-expected { color: #999999; } 193 | 194 | #qunit-banner.qunit-pass { background-color: #C6E746; } 195 | 196 | /*** Failing Styles */ 197 | 198 | #qunit-tests li li.fail { 199 | color: #710909; 200 | background-color: #fff; 201 | border-left: 10px solid #EE5757; 202 | white-space: pre; 203 | } 204 | 205 | #qunit-tests > li:last-child { 206 | border-radius: 0 0 5px 5px; 207 | -moz-border-radius: 0 0 5px 5px; 208 | -webkit-border-bottom-right-radius: 5px; 209 | -webkit-border-bottom-left-radius: 5px; 210 | } 211 | 212 | #qunit-tests .fail { color: #000000; background-color: #EE5757; } 213 | #qunit-tests .fail .test-name, 214 | #qunit-tests .fail .module-name { color: #000000; } 215 | 216 | #qunit-tests .fail .test-actual { color: #EE5757; } 217 | #qunit-tests .fail .test-expected { color: green; } 218 | 219 | #qunit-banner.qunit-fail { background-color: #EE5757; } 220 | 221 | 222 | /** Result */ 223 | 224 | #qunit-testresult { 225 | padding: 0.5em 0.5em 0.5em 2.5em; 226 | 227 | color: #2b81af; 228 | background-color: #D2E0E6; 229 | 230 | border-bottom: 1px solid white; 231 | } 232 | #qunit-testresult .module-name { 233 | font-weight: bold; 234 | } 235 | 236 | /** Fixture */ 237 | 238 | #qunit-fixture { 239 | position: absolute; 240 | top: -10000px; 241 | left: -10000px; 242 | width: 1000px; 243 | height: 1000px; 244 | } 245 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/src/js/image.js: -------------------------------------------------------------------------------- 1 | var _imgInterval, 2 | _getTitle = function(item) { 3 | if(item.data && item.data.title !== undefined) 4 | return item.data.title; 5 | 6 | var src = mfp.st.image.titleSrc; 7 | 8 | if(src) { 9 | if($.isFunction(src)) { 10 | return src.call(mfp, item); 11 | } else if(item.el) { 12 | return item.el.attr(src) || ''; 13 | } 14 | } 15 | return ''; 16 | }; 17 | 18 | $.magnificPopup.registerModule('image', { 19 | 20 | options: { 21 | markup: '
'+ 22 | '
'+ 23 | '
'+ 24 | '
'+ 25 | '
'+ 26 | '
'+ 27 | '
'+ 28 | '
'+ 29 | '
'+ 30 | '
'+ 31 | '
'+ 32 | '
', 33 | cursor: 'mfp-zoom-out-cur', 34 | titleSrc: 'title', 35 | verticalFit: true, 36 | tError: 'The image could not be loaded.' 37 | }, 38 | 39 | proto: { 40 | initImage: function() { 41 | var imgSt = mfp.st.image, 42 | ns = '.image'; 43 | 44 | mfp.types.push('image'); 45 | 46 | _mfpOn(OPEN_EVENT+ns, function() { 47 | if(mfp.currItem.type === 'image' && imgSt.cursor) { 48 | $(document.body).addClass(imgSt.cursor); 49 | } 50 | }); 51 | 52 | _mfpOn(CLOSE_EVENT+ns, function() { 53 | if(imgSt.cursor) { 54 | $(document.body).removeClass(imgSt.cursor); 55 | } 56 | _window.off('resize' + EVENT_NS); 57 | }); 58 | 59 | _mfpOn('Resize'+ns, mfp.resizeImage); 60 | if(mfp.isLowIE) { 61 | _mfpOn('AfterChange', mfp.resizeImage); 62 | } 63 | }, 64 | resizeImage: function() { 65 | var item = mfp.currItem; 66 | if(!item || !item.img) return; 67 | 68 | if(mfp.st.image.verticalFit) { 69 | var decr = 0; 70 | // fix box-sizing in ie7/8 71 | if(mfp.isLowIE) { 72 | decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10); 73 | } 74 | item.img.css('max-height', mfp.wH-decr); 75 | } 76 | }, 77 | _onImageHasSize: function(item) { 78 | if(item.img) { 79 | 80 | item.hasSize = true; 81 | 82 | if(_imgInterval) { 83 | clearInterval(_imgInterval); 84 | } 85 | 86 | item.isCheckingImgSize = false; 87 | 88 | _mfpTrigger('ImageHasSize', item); 89 | 90 | if(item.imgHidden) { 91 | if(mfp.content) 92 | mfp.content.removeClass('mfp-loading'); 93 | 94 | item.imgHidden = false; 95 | } 96 | 97 | } 98 | }, 99 | 100 | /** 101 | * Function that loops until the image has size to display elements that rely on it asap 102 | */ 103 | findImageSize: function(item) { 104 | 105 | var counter = 0, 106 | img = item.img[0], 107 | mfpSetInterval = function(delay) { 108 | 109 | if(_imgInterval) { 110 | clearInterval(_imgInterval); 111 | } 112 | // decelerating interval that checks for size of an image 113 | _imgInterval = setInterval(function() { 114 | if(img.naturalWidth > 0) { 115 | mfp._onImageHasSize(item); 116 | return; 117 | } 118 | 119 | if(counter > 200) { 120 | clearInterval(_imgInterval); 121 | } 122 | 123 | counter++; 124 | if(counter === 3) { 125 | mfpSetInterval(10); 126 | } else if(counter === 40) { 127 | mfpSetInterval(50); 128 | } else if(counter === 100) { 129 | mfpSetInterval(500); 130 | } 131 | }, delay); 132 | }; 133 | 134 | mfpSetInterval(1); 135 | }, 136 | 137 | getImage: function(item, template) { 138 | 139 | var guard = 0, 140 | 141 | // image load complete handler 142 | onLoadComplete = function() { 143 | if(item) { 144 | if (item.img[0].complete) { 145 | item.img.off('.mfploader'); 146 | 147 | if(item === mfp.currItem){ 148 | mfp._onImageHasSize(item); 149 | 150 | mfp.updateStatus('ready'); 151 | } 152 | 153 | item.hasSize = true; 154 | item.loaded = true; 155 | 156 | _mfpTrigger('ImageLoadComplete'); 157 | 158 | } 159 | else { 160 | // if image complete check fails 200 times (20 sec), we assume that there was an error. 161 | guard++; 162 | if(guard < 200) { 163 | setTimeout(onLoadComplete,100); 164 | } else { 165 | onLoadError(); 166 | } 167 | } 168 | } 169 | }, 170 | 171 | // image error handler 172 | onLoadError = function() { 173 | if(item) { 174 | item.img.off('.mfploader'); 175 | if(item === mfp.currItem){ 176 | mfp._onImageHasSize(item); 177 | mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); 178 | } 179 | 180 | item.hasSize = true; 181 | item.loaded = true; 182 | item.loadError = true; 183 | } 184 | }, 185 | imgSt = mfp.st.image; 186 | 187 | 188 | var el = template.find('.mfp-img'); 189 | if(el.length) { 190 | var img = document.createElement('img'); 191 | img.className = 'mfp-img'; 192 | if(item.el && item.el.find('img').length) { 193 | img.alt = item.el.find('img').attr('alt'); 194 | } 195 | item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError); 196 | img.src = item.src; 197 | 198 | // without clone() "error" event is not firing when IMG is replaced by new IMG 199 | // TODO: find a way to avoid such cloning 200 | if(el.is('img')) { 201 | item.img = item.img.clone(); 202 | } 203 | 204 | img = item.img[0]; 205 | if(img.naturalWidth > 0) { 206 | item.hasSize = true; 207 | } else if(!img.width) { 208 | item.hasSize = false; 209 | } 210 | } 211 | 212 | mfp._parseMarkup(template, { 213 | title: _getTitle(item), 214 | img_replaceWith: item.img 215 | }, item); 216 | 217 | mfp.resizeImage(); 218 | 219 | if(item.hasSize) { 220 | if(_imgInterval) clearInterval(_imgInterval); 221 | 222 | if(item.loadError) { 223 | template.addClass('mfp-loading'); 224 | mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); 225 | } else { 226 | template.removeClass('mfp-loading'); 227 | mfp.updateStatus('ready'); 228 | } 229 | return template; 230 | } 231 | 232 | mfp.updateStatus('loading'); 233 | item.loading = true; 234 | 235 | if(!item.hasSize) { 236 | item.imgHidden = true; 237 | template.addClass('mfp-loading'); 238 | mfp.findImageSize(item); 239 | } 240 | 241 | return template; 242 | } 243 | } 244 | }); -------------------------------------------------------------------------------- /vendor/Magnific-Popup/Gruntfile.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Run 'grunt' to generate JS and CSS in folder 'dist' and site in folder '_site' 4 | * * 5 | * Run 'grunt watch' to automatically regenerate '_site' when you change files in 'src' or in 'website' 6 | * 7 | */ 8 | 9 | module.exports = function(grunt) { 10 | 11 | 'use strict'; 12 | 13 | var jekyllConfig = "isLocal : false \r\n"+ 14 | "permalink: /:title/ \r\n"+ 15 | "exclude: ['.json', '.rvmrc', '.rbenv-version', 'README.md', 'Rakefile', 'changelog.md', 'compiler.jar', 'private', 'magnific-popup.sublime-project', 'magnific-popup.sublime-workspace', '.htaccess'] \r\n"+ 16 | "auto: true \r\n"+ 17 | "mfpversion: <%= pkg.version %> \r\n"+ 18 | "pygments: true \r\n"; 19 | 20 | // Project configuration. 21 | grunt.initConfig({ 22 | // Metadata. 23 | pkg: grunt.file.readJSON('magnific-popup.jquery.json'), 24 | 25 | banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' + 26 | '<%= grunt.template.today("yyyy-mm-dd") %>\n' + 27 | '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' + 28 | '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>; */\n', 29 | 30 | // Task configuration. 31 | clean: { 32 | files: ['dist'] 33 | }, 34 | 35 | sass: { 36 | dist: { 37 | files: { 38 | 'dist/magnific-popup.css': 'src/css/main.scss' 39 | } 40 | } 41 | }, 42 | 43 | jshint: { 44 | all: [ 45 | 'Gruntfile.js', 46 | 'src/js/*.js' 47 | ], 48 | options: { 49 | jshintrc: '.jshintrc' 50 | } 51 | }, 52 | 53 | mfpbuild: { 54 | all: { 55 | src: [ 56 | 'inline', 57 | 'ajax', 58 | 'image', 59 | 'zoom', 60 | 'iframe', 61 | 'gallery', 62 | 'retina', 63 | ], 64 | basePath: 'src/js/', 65 | dest: 'dist/jquery.magnific-popup.js', 66 | banner: '<%= banner %>' 67 | } 68 | }, 69 | jekyll: { 70 | dev: { 71 | options: { 72 | src: 'website', 73 | dest: '_site', 74 | url: 'local', 75 | raw: jekyllConfig + "url: local" 76 | } 77 | }, 78 | production: { 79 | options: { 80 | src: 'website', 81 | dest: '_production', 82 | url: 'production', 83 | raw: jekyllConfig + "url: production" 84 | } 85 | 86 | } 87 | }, 88 | 89 | copy: { 90 | main: { 91 | files: [ 92 | {expand:true, src: ['dist/**'], dest: 'website/'} 93 | ] 94 | }, 95 | dev: { 96 | files: [ 97 | {expand:true, src: ['dist/**'], dest: '_site/'} 98 | ] 99 | } 100 | }, 101 | 102 | uglify: { 103 | my_target: { 104 | files: { 105 | 'dist/jquery.magnific-popup.min.js': ['dist/jquery.magnific-popup.js'] 106 | }, 107 | preserveComments: 'some' 108 | }, 109 | options: { 110 | preserveComments: 'some' 111 | } 112 | }, 113 | 114 | watch: { // for development run 'grunt watch' 115 | jekyll: { 116 | files: ['website/**'], 117 | tasks: ['jekyll:dev', 'copy:dev'] 118 | }, 119 | files: ['src/**'], 120 | tasks: [ 'sass', 'mfpbuild', 'copy:dev', 'uglify'] 121 | }, 122 | 123 | cssmin: { 124 | compress: { 125 | files: { 126 | "website/site-assets/all.min.css": ["website/site-assets/site.css", "website/dist/magnific-popup.css"] 127 | } 128 | } 129 | } 130 | 131 | }); 132 | 133 | 134 | // Makes Magnific Popup JS file. 135 | // grunt mfpbuild --mfp-exclude=ajax,image 136 | grunt.task.registerMultiTask('mfpbuild', 'Makes Magnific Popup JS file.', function() { 137 | 138 | var files = this.data.src, 139 | includes = grunt.option('mfp-exclude'), 140 | basePath = this.data.basePath, 141 | newContents = this.data.banner + ";(function (factory) { \n" + 142 | "if (typeof define === 'function' && define.amd) { \n" + 143 | " // AMD. Register as an anonymous module. \n" + 144 | " define(['jquery'], factory); \n" + 145 | " } else if (typeof exports === 'object') { \n" + 146 | " // Node/CommonJS \n" + 147 | " factory(require('jquery')); \n" + 148 | " } else { \n" + 149 | " // Browser globals \n" + 150 | " factory(window.jQuery || window.Zepto); \n" + 151 | " } \n" + 152 | " }(function($) { \n"; 153 | 154 | if(includes) { 155 | includes = includes.split(/[\s,]+/); // 'a,b,c' => ['a','b','c'] 156 | var removeA = function (arr) { 157 | var what, a = arguments, L = a.length, ax; 158 | while (L > 1 && arr.length) { 159 | what = a[--L]; 160 | while ((ax= arr.indexOf(what)) !== -1) { 161 | arr.splice(ax, 1); 162 | } 163 | } 164 | return arr; 165 | }; 166 | 167 | includes.forEach(function( name ) { 168 | if(name) { 169 | 170 | grunt.log.writeln( 'removed "'+name +'"' ); 171 | files = removeA(files, name); 172 | } 173 | }); 174 | } 175 | 176 | files.unshift('core'); 177 | 178 | grunt.log.writeln( 'Your build is made of:'+files ); 179 | 180 | files.forEach(function( name ) { 181 | // Wrap each module with a pience of code to be able to exlude it, stolen for modernizr.com 182 | newContents += "\n/*>>"+name+"*/\n"; 183 | newContents += grunt.file.read( basePath + name + '.js' ) + '\n'; 184 | newContents += "\n/*>>"+name+"*/\n"; 185 | }); 186 | newContents+= " _checkInstance(); }));"; 187 | 188 | grunt.file.write( this.data.dest, newContents ); 189 | }); 190 | 191 | 192 | 193 | 194 | 195 | // These plugins provide necessary tasks. 196 | grunt.loadNpmTasks('grunt-contrib-clean'); 197 | grunt.loadNpmTasks('grunt-contrib-concat'); 198 | grunt.loadNpmTasks('grunt-contrib-uglify'); 199 | grunt.loadNpmTasks('grunt-contrib-jshint'); 200 | grunt.loadNpmTasks('grunt-contrib-watch'); 201 | grunt.loadNpmTasks('grunt-sass'); 202 | grunt.loadNpmTasks('grunt-contrib-copy'); 203 | grunt.loadNpmTasks('grunt-jekyll'); 204 | grunt.loadNpmTasks('grunt-contrib-cssmin'); 205 | 206 | // Default task. 207 | grunt.registerTask('default', ['sass', 'mfpbuild', 'uglify', 'copy', 'jekyll:dev']); 208 | 209 | grunt.registerTask('production', ['sass', 'mfpbuild', 'uglify', 'copy', 'cssmin', 'jekyll:production']); 210 | grunt.registerTask('nosite', ['sass', 'mfpbuild', 'uglify']); 211 | grunt.registerTask('hint', ['jshint']); 212 | 213 | }; 214 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/website/_includes/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Magnific Popup: Responsive jQuery Lightbox Plugin 4 | description: Light and open source responsive lightbox plugin with focus on performance, for jQuery and Zepto.js. High-DPI (retina) display support, fast tap for touch devices. 5 | canonical_url: http://dimsemenov.com/plugins/magnific-popup/ 6 | include_credit: true 7 | buildtool: true 8 | --- 9 | 10 | 14 | {% include logo.html %} 15 |
16 |

Magnific Popup is a responsive lightbox & dialog script with focus on performance and providing best experience for user with any device
(for jQuery or Zepto.js).

17 | 20 |
21 | 22 | {% include examples.html %} 23 | 24 |

Don't forget to check out my new article about this plugin on the Smashing Magazine.

25 | 26 | 27 |

What makes this plugin different?

28 |
29 | 30 |
31 |

Light and modular

32 |

You can choose to include only the features that you need using the online build tool or by compiling it yourself with Grunt.js. Size of core JS file is about 3KB + each module weighs about 0.5KB (gzipped). Sass CSS preprocessor is used for easier skinning, but you're not obligated to use it.

33 |
34 |
35 |

Content is resized with CSS

36 |

The majority of lightbox plugins require you to define size of it via JS option. Magnific Popup does not - feel free to use relative units like EM's or resize lightbox with help of CSS media queries. Update content inside lightbox without worrying about how it'll resize and center.

37 |
38 |
39 |

Fast

40 |

Magnific Popup displays images before they're completely loaded to take full advantage of progressive loading. For in and out transitions CSS3 is used instead of slow JavaScript animation.

41 |
42 |
43 |

High-DPI (Retina) display support

44 |

Default controls are made with pure CSS, without external graphics. For the main image there is a built in way to provide appropriate source for different pixel density displays.

45 |
46 |
47 |

Conditional lightbox

48 |

Plugin has an option to automatically switch to alternative mobile-friendly source on small screen size. Brad Frost has a terrific article about this technique.

49 |
50 |
51 |

Memory management

52 |

Popup has an extendable micro templating engine that reuses existing DOM elements (example), which is especially useful when your popups same pattern.

53 |
54 |

55 | 56 | {% include signup.html %} 57 | 58 | 59 |

Browser support

60 |

Tested on desktop: Chrome, Safari, FF, Opera, IE8+, partial support of IE7 (works, but some visual layout features, like vertical centering, are missing). Mobile: default browser in Android 2.3+, iOS5+, Blackberry 61 | 10+, WP7+, mobile Opera and Chrome on Android. If you noticed any bug, please open an issue on GitHub

62 | 63 |

License

64 |

Script is available under MIT license and will always be kept this way.
But please do me a favor and do not create a public WordPress plugin based on it, because I will make it soon and it will be open souce too. (Want to get notified?). 65 |

66 | 67 |

Bugs & contributing

68 |

Please report bugs via GitHub and ask general questions through StackOverflow. Feel free to submit commit, even the tiniest contributions to the script or to the documentation are very welcome.

69 |

Special thanks to:

70 | 75 | 76 |

Updates

77 |

If you wish to get notified about important plugin updates, you may star and watch the repository on GitHub, follow me on Twitter, or join my tiny Mailchimp email newsletter that I send 3-4 times a year.

78 | 79 | 80 | 89 | 102 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/dist/magnific-popup.css: -------------------------------------------------------------------------------- 1 | /* Magnific Popup CSS */ 2 | .mfp-bg { 3 | top: 0; 4 | left: 0; 5 | width: 100%; 6 | height: 100%; 7 | z-index: 1042; 8 | overflow: hidden; 9 | position: fixed; 10 | background: #0b0b0b; 11 | opacity: 0.8; } 12 | 13 | .mfp-wrap { 14 | top: 0; 15 | left: 0; 16 | width: 100%; 17 | height: 100%; 18 | z-index: 1043; 19 | position: fixed; 20 | outline: none !important; 21 | -webkit-backface-visibility: hidden; } 22 | 23 | .mfp-container { 24 | text-align: center; 25 | position: absolute; 26 | width: 100%; 27 | height: 100%; 28 | left: 0; 29 | top: 0; 30 | padding: 0 8px; 31 | box-sizing: border-box; } 32 | 33 | .mfp-container:before { 34 | content: ''; 35 | display: inline-block; 36 | height: 100%; 37 | vertical-align: middle; } 38 | 39 | .mfp-align-top .mfp-container:before { 40 | display: none; } 41 | 42 | .mfp-content { 43 | position: relative; 44 | display: inline-block; 45 | vertical-align: middle; 46 | margin: 0 auto; 47 | text-align: left; 48 | z-index: 1045; } 49 | 50 | .mfp-inline-holder .mfp-content, 51 | .mfp-ajax-holder .mfp-content { 52 | width: 100%; 53 | cursor: auto; } 54 | 55 | .mfp-ajax-cur { 56 | cursor: progress; } 57 | 58 | .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close { 59 | cursor: -moz-zoom-out; 60 | cursor: -webkit-zoom-out; 61 | cursor: zoom-out; } 62 | 63 | .mfp-zoom { 64 | cursor: pointer; 65 | cursor: -webkit-zoom-in; 66 | cursor: -moz-zoom-in; 67 | cursor: zoom-in; } 68 | 69 | .mfp-auto-cursor .mfp-content { 70 | cursor: auto; } 71 | 72 | .mfp-close, 73 | .mfp-arrow, 74 | .mfp-preloader, 75 | .mfp-counter { 76 | -webkit-user-select: none; 77 | -moz-user-select: none; 78 | user-select: none; } 79 | 80 | .mfp-loading.mfp-figure { 81 | display: none; } 82 | 83 | .mfp-hide { 84 | display: none !important; } 85 | 86 | .mfp-preloader { 87 | color: #CCC; 88 | position: absolute; 89 | top: 50%; 90 | width: auto; 91 | text-align: center; 92 | margin-top: -0.8em; 93 | left: 8px; 94 | right: 8px; 95 | z-index: 1044; } 96 | .mfp-preloader a { 97 | color: #CCC; } 98 | .mfp-preloader a:hover { 99 | color: #FFF; } 100 | 101 | .mfp-s-ready .mfp-preloader { 102 | display: none; } 103 | 104 | .mfp-s-error .mfp-content { 105 | display: none; } 106 | 107 | button.mfp-close, 108 | button.mfp-arrow { 109 | overflow: visible; 110 | cursor: pointer; 111 | background: transparent; 112 | border: 0; 113 | -webkit-appearance: none; 114 | display: block; 115 | outline: none; 116 | padding: 0; 117 | z-index: 1046; 118 | box-shadow: none; 119 | touch-action: manipulation; } 120 | 121 | button::-moz-focus-inner { 122 | padding: 0; 123 | border: 0; } 124 | 125 | .mfp-close { 126 | width: 44px; 127 | height: 44px; 128 | line-height: 44px; 129 | position: absolute; 130 | right: 0; 131 | top: 0; 132 | text-decoration: none; 133 | text-align: center; 134 | opacity: 0.65; 135 | padding: 0 0 18px 10px; 136 | color: #FFF; 137 | font-style: normal; 138 | font-size: 28px; 139 | font-family: Arial, Baskerville, monospace; } 140 | .mfp-close:hover, 141 | .mfp-close:focus { 142 | opacity: 1; } 143 | .mfp-close:active { 144 | top: 1px; } 145 | 146 | .mfp-close-btn-in .mfp-close { 147 | color: #333; } 148 | 149 | .mfp-image-holder .mfp-close, 150 | .mfp-iframe-holder .mfp-close { 151 | color: #FFF; 152 | right: -6px; 153 | text-align: right; 154 | padding-right: 6px; 155 | width: 100%; } 156 | 157 | .mfp-counter { 158 | position: absolute; 159 | top: 0; 160 | right: 0; 161 | color: #CCC; 162 | font-size: 12px; 163 | line-height: 18px; 164 | white-space: nowrap; } 165 | 166 | .mfp-arrow { 167 | position: absolute; 168 | opacity: 0.65; 169 | margin: 0; 170 | top: 50%; 171 | margin-top: -55px; 172 | padding: 0; 173 | width: 90px; 174 | height: 110px; 175 | -webkit-tap-highlight-color: transparent; } 176 | .mfp-arrow:active { 177 | margin-top: -54px; } 178 | .mfp-arrow:hover, 179 | .mfp-arrow:focus { 180 | opacity: 1; } 181 | .mfp-arrow:before, 182 | .mfp-arrow:after { 183 | content: ''; 184 | display: block; 185 | width: 0; 186 | height: 0; 187 | position: absolute; 188 | left: 0; 189 | top: 0; 190 | margin-top: 35px; 191 | margin-left: 35px; 192 | border: medium inset transparent; } 193 | .mfp-arrow:after { 194 | border-top-width: 13px; 195 | border-bottom-width: 13px; 196 | top: 8px; } 197 | .mfp-arrow:before { 198 | border-top-width: 21px; 199 | border-bottom-width: 21px; 200 | opacity: 0.7; } 201 | 202 | .mfp-arrow-left { 203 | left: 0; } 204 | .mfp-arrow-left:after { 205 | border-right: 17px solid #FFF; 206 | margin-left: 31px; } 207 | .mfp-arrow-left:before { 208 | margin-left: 25px; 209 | border-right: 27px solid #3F3F3F; } 210 | 211 | .mfp-arrow-right { 212 | right: 0; } 213 | .mfp-arrow-right:after { 214 | border-left: 17px solid #FFF; 215 | margin-left: 39px; } 216 | .mfp-arrow-right:before { 217 | border-left: 27px solid #3F3F3F; } 218 | 219 | .mfp-iframe-holder { 220 | padding-top: 40px; 221 | padding-bottom: 40px; } 222 | .mfp-iframe-holder .mfp-content { 223 | line-height: 0; 224 | width: 100%; 225 | max-width: 900px; } 226 | .mfp-iframe-holder .mfp-close { 227 | top: -40px; } 228 | 229 | .mfp-iframe-scaler { 230 | width: 100%; 231 | height: 0; 232 | overflow: hidden; 233 | padding-top: 56.25%; } 234 | .mfp-iframe-scaler iframe { 235 | position: absolute; 236 | display: block; 237 | top: 0; 238 | left: 0; 239 | width: 100%; 240 | height: 100%; 241 | box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); 242 | background: #000; } 243 | 244 | /* Main image in popup */ 245 | img.mfp-img { 246 | width: auto; 247 | max-width: 100%; 248 | height: auto; 249 | display: block; 250 | line-height: 0; 251 | box-sizing: border-box; 252 | padding: 40px 0 40px; 253 | margin: 0 auto; } 254 | 255 | /* The shadow behind the image */ 256 | .mfp-figure { 257 | line-height: 0; } 258 | .mfp-figure:after { 259 | content: ''; 260 | position: absolute; 261 | left: 0; 262 | top: 40px; 263 | bottom: 40px; 264 | display: block; 265 | right: 0; 266 | width: auto; 267 | height: auto; 268 | z-index: -1; 269 | box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); 270 | background: #444; } 271 | .mfp-figure small { 272 | color: #BDBDBD; 273 | display: block; 274 | font-size: 12px; 275 | line-height: 14px; } 276 | .mfp-figure figure { 277 | margin: 0; } 278 | 279 | .mfp-bottom-bar { 280 | margin-top: -36px; 281 | position: absolute; 282 | top: 100%; 283 | left: 0; 284 | width: 100%; 285 | cursor: auto; } 286 | 287 | .mfp-title { 288 | text-align: left; 289 | line-height: 18px; 290 | color: #F3F3F3; 291 | word-wrap: break-word; 292 | padding-right: 36px; } 293 | 294 | .mfp-image-holder .mfp-content { 295 | max-width: 100%; } 296 | 297 | .mfp-gallery .mfp-image-holder .mfp-figure { 298 | cursor: pointer; } 299 | 300 | @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { 301 | /** 302 | * Remove all paddings around the image on small screen 303 | */ 304 | .mfp-img-mobile .mfp-image-holder { 305 | padding-left: 0; 306 | padding-right: 0; } 307 | .mfp-img-mobile img.mfp-img { 308 | padding: 0; } 309 | .mfp-img-mobile .mfp-figure:after { 310 | top: 0; 311 | bottom: 0; } 312 | .mfp-img-mobile .mfp-figure small { 313 | display: inline; 314 | margin-left: 5px; } 315 | .mfp-img-mobile .mfp-bottom-bar { 316 | background: rgba(0, 0, 0, 0.6); 317 | bottom: 0; 318 | margin: 0; 319 | top: auto; 320 | padding: 3px 5px; 321 | position: fixed; 322 | box-sizing: border-box; } 323 | .mfp-img-mobile .mfp-bottom-bar:empty { 324 | padding: 0; } 325 | .mfp-img-mobile .mfp-counter { 326 | right: 5px; 327 | top: 3px; } 328 | .mfp-img-mobile .mfp-close { 329 | top: 0; 330 | right: 0; 331 | width: 35px; 332 | height: 35px; 333 | line-height: 35px; 334 | background: rgba(0, 0, 0, 0.6); 335 | position: fixed; 336 | text-align: center; 337 | padding: 0; } } 338 | 339 | @media all and (max-width: 900px) { 340 | .mfp-arrow { 341 | -webkit-transform: scale(0.75); 342 | transform: scale(0.75); } 343 | .mfp-arrow-left { 344 | -webkit-transform-origin: 0; 345 | transform-origin: 0; } 346 | .mfp-arrow-right { 347 | -webkit-transform-origin: 100%; 348 | transform-origin: 100%; } 349 | .mfp-container { 350 | padding-left: 6px; 351 | padding-right: 6px; } } 352 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/website/_includes/build-tool.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |

Magnific Popup v{{site.mfpversion}} Build Tool

4 |
5 |

Here you can generate optimized version of main JS file. Please note that CSS you should download directly: Sass version or CSS version.

6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 |
28 | 29 |
30 |
31 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 43 | 44 | 274 | -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | /* import fonts from fonts.css file */ 2 | @import url(./fonts.css); 3 | 4 | html, body{ 5 | margin: 0%; 6 | box-sizing: border-box; 7 | width: 100%; 8 | height: 100%; 9 | } 10 | 11 | 12 | /* CSS Variables */ 13 | 14 | :root{ 15 | --primary-color: #4458dc; 16 | --primary-color2: #854fee; 17 | --title-color: #141313; 18 | --text-color: #777777; 19 | --border-color: #201f1f17; 20 | --gradient-color: linear-gradient(90deg, #4458dc 0%, #854fee 100%); 21 | --shadow-color: 0px 10px 30px rgba(118, 85, 225, 0.3); 22 | --box-shadow: 0px 10px 30px rgba(57, 56, 61, 0.205); 23 | 24 | 25 | /* font family variables. */ 26 | --roboto: 'Roboto', cursive; 27 | } 28 | 29 | /* Scroll bar */ 30 | 31 | .header { 32 | position: fixed; 33 | top: 0; 34 | z-index: 9999; 35 | width: 100%; 36 | } 37 | 38 | .progress-container { 39 | height: .3rem; 40 | background: white; 41 | } 42 | 43 | .progress-bar { 44 | height: .3rem; 45 | background: var(--gradient-color); 46 | width: 0%; 47 | } 48 | 49 | /* start navigation */ 50 | 51 | 52 | .header_area .main-menu .navbar .navbar-brand { 53 | padding: 0 2rem 0 5rem; 54 | } 55 | 56 | .header_area .main-menu .navbar{ 57 | padding: 1rem 20rem ; 58 | } 59 | 60 | .logo { 61 | height: 50px; 62 | } 63 | 64 | .header_area .main-menu .nav-item .nav-link, 65 | .site-main .skill-area .nav-item .nav-link { 66 | font: normal 500 15px/2px var(--roboto); 67 | text-transform: uppercase; 68 | padding: 1rem; 69 | color: var(--title-color); 70 | } 71 | 72 | .header_area .main-menu .navbar-nav .active a, 73 | .site-main .skill-area .nav-pills .active { 74 | background: var(--gradient-color); 75 | -webkit-background-clip: text; 76 | -webkit-text-fill-color: transparent; 77 | background-clip: text; 78 | } 79 | 80 | .header_area .main-menu .navbar-nav a:hover, 81 | .site-main .skill-area .nav-pills a:hover { 82 | background: var(--gradient-color); 83 | -webkit-background-clip: text; 84 | -webkit-text-fill-color: transparent; 85 | background-clip: text; 86 | } 87 | 88 | /* Banner Area */ 89 | 90 | .anim { 91 | margin: 0; 92 | font-size: 4em; 93 | padding: 0; 94 | color: white; 95 | text-shadow: 0 0.1em 20px rgba(0, 0, 0, 1), 0.05em -0.03em 0 rgba(0, 0, 0, 1), 96 | 0.05em 0.005em 0 rgba(0, 0, 0, 1), 0em 0.08em 0 rgba(0, 0, 0, 1), 97 | 0.05em 0.08em 0 rgba(0, 0, 0, 1), 0px -0.03em 0 rgba(0, 0, 0, 1), 98 | -0.03em -0.03em 0 rgba(0, 0, 0, 1), -0.03em 0.08em 0 rgba(0, 0, 0, 1), -0.03em 0 0 rgba(0, 0, 0, 1); 99 | } 100 | 101 | .anim span { 102 | transform: scale(0.9); 103 | display: inline-block; 104 | } 105 | 106 | .anim span:first-child { 107 | animation: bop 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards infinite 108 | alternate; 109 | } 110 | .anim span:last-child { 111 | animation: bopB 1s 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards 112 | infinite alternate; 113 | } 114 | 115 | @keyframes bop { 116 | 0% { 117 | transform: scale(0.9); 118 | } 119 | 50%, 120 | 100% { 121 | transform: scale(1); 122 | } 123 | } 124 | 125 | @keyframes bopB { 126 | 0% { 127 | transform: scale(0.9); 128 | } 129 | 80%, 130 | 100% { 131 | transform: scale(1) rotateZ(-3deg); 132 | } 133 | } 134 | 135 | .site-main .site-banner .site-title h3 { 136 | padding-top: 25%; 137 | font-weight: 500; 138 | } 139 | 140 | .site-main .site-banner .site-title h3::after{ 141 | content: " "; 142 | height: 2px; 143 | width: 18vw; 144 | background: black; 145 | display: inline-block; 146 | margin-left: 5%; 147 | transform: translateY(-10px); 148 | } 149 | 150 | .site-main .site-banner .site-title h1{ 151 | font-size: 5rem; 152 | } 153 | 154 | .site-main .site-banner .banner-image > img{ 155 | padding: 7rem 0; 156 | width: 90rem; 157 | } 158 | 159 | /* Start About Area */ 160 | 161 | .site-main .about-area{ 162 | padding: 8rem 5rem; 163 | } 164 | 165 | .site-main .about-area .about-title h2 > span{ 166 | display: block; 167 | font: normal bold 49px/ 60px var(--roboto); 168 | letter-spacing: 21px; 169 | } 170 | 171 | .site-main .about-area .about-title .paragraph > p{ 172 | padding: .4rem 0; 173 | } 174 | 175 | 176 | /* skill Area */ 177 | 178 | .site-main .skill-area .tab-content .tab-pane { 179 | padding: 1rem; 180 | text-align: center; 181 | } 182 | 183 | /* Project Area */ 184 | 185 | .site-main .project-area{ 186 | padding: 4rem 0; 187 | } 188 | 189 | .site-main .project-area .button-group button{ 190 | background: transparent; 191 | border: none; 192 | font: normal 500 16px/130px var(--roboto); 193 | text-transform: uppercase; 194 | } 195 | 196 | .site-main .project-area .button-group button + button{ 197 | padding-left: 3rem; 198 | } 199 | 200 | .site-main .project-area .grid .our-project > .title h4{ 201 | font: normal 700 25px/12px var(--roboto); 202 | } 203 | 204 | .site-main .project-area .grid .our-project > .title span a { 205 | color: var(--text-color); 206 | } 207 | 208 | .site-main .project-area .grid .our-project > .title span a:hover { 209 | transition: all .7s ease-in-out; 210 | color: var(--title-color); 211 | } 212 | 213 | .site-main .project-area .grid .our-project .img a:hover img { 214 | filter: brightness(1.1) drop-shadow(1px 8px 30px #b1afaf); 215 | } 216 | 217 | /* Services Area */ 218 | 219 | .site-main .services-area { 220 | padding: 0 2rem 2rem 2rem; 221 | } 222 | 223 | .site-main .services-area .services-title { 224 | padding: 0 14rem; 225 | } 226 | 227 | .site-main .services-area .services-title h1 { 228 | font-size: 35px; 229 | } 230 | 231 | .site-main > .services-area .services { 232 | background: rgba(248, 252, 253, 0.973); 233 | padding: 2rem 0; 234 | width: 16rem; 235 | transition: box-shadow .7s ease; 236 | } 237 | 238 | .site-main > .services-area .services:hover { 239 | box-shadow: var(--box-shadow); 240 | } 241 | 242 | /* About Me */ 243 | 244 | .site-main .about-area .client { 245 | background: #ffffff10; 246 | box-shadow: var(--box-shadow); 247 | margin: 3rem 0rem; 248 | } 249 | 250 | .site-main .about-area .client .client-img { 251 | padding: 2rem; 252 | } 253 | 254 | .site-main .about-area .client .about-client { 255 | padding-top: 2rem; 256 | } 257 | 258 | .site-main .about-area .client .about-client h4 { 259 | font: normal 500 21px/ 20px var(--roboto); 260 | } 261 | 262 | .site-main .about-area .client .about-client p { 263 | font-size: 14px; 264 | } 265 | 266 | .site-main .about-area .owl-carousel .owl-item { 267 | display: flex; 268 | justify-content: center; 269 | padding: 0 1.5rem; 270 | } 271 | 272 | .site-main .about-area .owl-carousel .owl-dots .owl-dot.active span { 273 | background: var(--primary-color); 274 | width: 12px; 275 | height: 12px; 276 | } 277 | 278 | /* Contact me */ 279 | 280 | /* Footer Area */ 281 | 282 | footer.footer-area { 283 | padding: 5rem 0; 284 | background: url(../img/footer-bg.png) no-repeat; 285 | } 286 | 287 | footer.footer-area .social h5 { 288 | font: normal 500 23px/ 30px var(--roboto); 289 | } 290 | 291 | footer.footer-area .social a > i { 292 | font-size:22px; 293 | padding: 2rem; 294 | color: var(--text-color); 295 | } 296 | 297 | footer.footer-area .social a:hover > i { 298 | color: var(--primary-color); 299 | } 300 | 301 | 302 | 303 | /* Global Classes */ 304 | 305 | .title-text{ 306 | font: normal bold 50px/ 72px var(--roboto); 307 | } 308 | 309 | .text-uppercase{ 310 | text-transform: uppercase; 311 | } 312 | 313 | /* Buttons */ 314 | 315 | .button, 316 | .soco{ 317 | font: normal 500 16px/20px var(--roboto); 318 | position: relative; 319 | border: 3px solid transparent; 320 | } 321 | 322 | .button { 323 | padding: .8rem 2.2rem; 324 | border-radius: 4px; 325 | width: 11rem; 326 | } 327 | 328 | .button.primary-button, 329 | .soco.primary-soco{ 330 | background: var(--gradient-color); 331 | background-clip: padding-box; 332 | color: whitesmoke; 333 | transition: background .6s ease; 334 | box-shadow: var(--box-shadow); 335 | } 336 | 337 | .button.primary-button:hover, 338 | .soco.primary-soco:hover{ 339 | background: whitesmoke; 340 | background-clip: padding-box; 341 | color: black; 342 | } 343 | 344 | .button.primary-button::after, .button.secondary-button::after{ 345 | position: absolute; 346 | top: -2px; left: -2px; 347 | bottom: -2px; right: -2px; 348 | background: var(--gradient-color); 349 | content: ' '; 350 | z-index: -1; 351 | border-radius: 4px; 352 | } 353 | 354 | .button.secondary-button, 355 | .soco.secondary-soco{ 356 | background: white; 357 | background-clip: padding-box; 358 | transition: background .6s ease; 359 | } 360 | 361 | .button.secondary-button:hover, 362 | .soco.secondary-soco:hover{ 363 | background: var(--gradient-color); 364 | color: whitesmoke; 365 | box-shadow: var(--box-shadow); 366 | } 367 | 368 | p.para{ 369 | color: var(--text-color); 370 | font: normal 500 16px/ 25px var(--roboto); 371 | } 372 | 373 | .font-roboto{ 374 | font-family: var(--roboto); 375 | } 376 | 377 | button:focus, 378 | button:active 379 | button:hover 380 | .btn:active, 381 | .btn.active{ 382 | outline: 0px !important; 383 | box-shadow: none !important; 384 | } 385 | 386 | .title-h1{ 387 | font: normal bold 39px/ 40px var(--roboto); 388 | } 389 | 390 | .navbar_fixed{ 391 | position: fixed; 392 | width: 100%; 393 | top: -1px; 394 | left: 0; right: 0; 395 | background: #ffffff; 396 | box-shadow: var(--box-shadow); 397 | z-index: 999; 398 | transition: background 1s ease; 399 | } 400 | 401 | .soco{ 402 | padding: .6rem; 403 | margin-right: .5rem; 404 | border-radius: 50%; 405 | } 406 | 407 | .soco.primary-soco::after, .soco.secondary-soco::after{ 408 | position: absolute; 409 | top: -2px; left: -2px; 410 | bottom: -2px; right: -2px; 411 | background: var(--gradient-color); 412 | content: ' '; 413 | z-index: -1; 414 | border-radius: 10px; 415 | } 416 | 417 | 418 | /* project flip card */ 419 | 420 | .flip-card { 421 | background-color: transparent; 422 | height: 300px; 423 | perspective: 1000px; 424 | } 425 | 426 | .flip-card-inner { 427 | position: relative; 428 | width: 100%; 429 | height: 100%; 430 | text-align: center; 431 | transition: transform 0.6s; 432 | transform-style: preserve-3d; 433 | box-shadow: var(--box-shadow); 434 | } 435 | 436 | .flip-card:hover .flip-card-inner { 437 | transform: rotateY(180deg); 438 | } 439 | 440 | .flip-card-front, .flip-card-back { 441 | position: absolute; 442 | width: 100%; 443 | height: 100%; 444 | -webkit-backface-visibility: hidden; 445 | backface-visibility: hidden; 446 | } 447 | 448 | .flip-card-front { 449 | background-color: white; 450 | color: black; 451 | } 452 | 453 | .flip-card-back { 454 | background-color: white; 455 | color: white; 456 | transform: rotateY(180deg); 457 | } 458 | 459 | .fo { 460 | font-size: 2rem; 461 | } 462 | 463 | .stack-style { 464 | padding: .5rem; 465 | background-color: #b5b5b3; 466 | border-radius: 2rem; 467 | } -------------------------------------------------------------------------------- /fonts/Roboto/LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/src/css/main.scss: -------------------------------------------------------------------------------- 1 | /* Magnific Popup CSS */ 2 | 3 | @import "settings"; 4 | 5 | //////////////////////// 6 | // 7 | // Contents: 8 | // 9 | // 1. General styles 10 | // - Transluscent overlay 11 | // - Containers, wrappers 12 | // - Cursors 13 | // - Helper classes 14 | // 2. Appearance 15 | // - Preloader & text that displays error messages 16 | // - CSS reset for buttons 17 | // - Close icon 18 | // - "1 of X" counter 19 | // - Navigation (left/right) arrows 20 | // - Iframe content type styles 21 | // - Image content type styles 22 | // - Media query where size of arrows is reduced 23 | // - IE7 support 24 | // 25 | //////////////////////// 26 | 27 | 28 | 29 | //////////////////////// 30 | // 1. General styles 31 | //////////////////////// 32 | 33 | // Transluscent overlay 34 | .mfp-bg { 35 | top: 0; 36 | left: 0; 37 | width: 100%; 38 | height: 100%; 39 | z-index: $mfp-z-index-base + 2; 40 | overflow: hidden; 41 | position: fixed; 42 | 43 | background: $mfp-overlay-color; 44 | opacity: $mfp-overlay-opacity; 45 | } 46 | 47 | // Wrapper for popup 48 | .mfp-wrap { 49 | top: 0; 50 | left: 0; 51 | width: 100%; 52 | height: 100%; 53 | z-index: $mfp-z-index-base + 3; 54 | position: fixed; 55 | outline: none !important; 56 | -webkit-backface-visibility: hidden; // fixes webkit bug that can cause "false" scrollbar 57 | } 58 | 59 | // Root container 60 | .mfp-container { 61 | text-align: center; 62 | position: absolute; 63 | width: 100%; 64 | height: 100%; 65 | left: 0; 66 | top: 0; 67 | padding: 0 $mfp-popup-padding-left; 68 | box-sizing: border-box; 69 | } 70 | 71 | // Vertical centerer helper 72 | .mfp-container { 73 | &:before { 74 | content: ''; 75 | display: inline-block; 76 | height: 100%; 77 | vertical-align: middle; 78 | } 79 | } 80 | 81 | // Remove vertical centering when popup has class `mfp-align-top` 82 | .mfp-align-top { 83 | .mfp-container { 84 | &:before { 85 | display: none; 86 | } 87 | } 88 | } 89 | 90 | // Popup content holder 91 | .mfp-content { 92 | position: relative; 93 | display: inline-block; 94 | vertical-align: middle; 95 | margin: 0 auto; 96 | text-align: left; 97 | z-index: $mfp-z-index-base + 5; 98 | } 99 | .mfp-inline-holder, 100 | .mfp-ajax-holder { 101 | .mfp-content { 102 | width: 100%; 103 | cursor: auto; 104 | } 105 | } 106 | 107 | // Cursors 108 | .mfp-ajax-cur { 109 | cursor: progress; 110 | } 111 | .mfp-zoom-out-cur { 112 | &, .mfp-image-holder .mfp-close { 113 | cursor: -moz-zoom-out; 114 | cursor: -webkit-zoom-out; 115 | cursor: zoom-out; 116 | } 117 | } 118 | .mfp-zoom { 119 | cursor: pointer; 120 | cursor: -webkit-zoom-in; 121 | cursor: -moz-zoom-in; 122 | cursor: zoom-in; 123 | } 124 | .mfp-auto-cursor { 125 | .mfp-content { 126 | cursor: auto; 127 | } 128 | } 129 | 130 | .mfp-close, 131 | .mfp-arrow, 132 | .mfp-preloader, 133 | .mfp-counter { 134 | -webkit-user-select:none; 135 | -moz-user-select: none; 136 | user-select: none; 137 | } 138 | 139 | // Hide the image during the loading 140 | .mfp-loading { 141 | &.mfp-figure { 142 | display: none; 143 | } 144 | } 145 | 146 | // Helper class that hides stuff 147 | @if $mfp-use-visuallyhidden { 148 | // From HTML5 Boilerplate https://github.com/h5bp/html5-boilerplate/blob/v4.2.0/doc/css.md#visuallyhidden 149 | .mfp-hide { 150 | border: 0 !important; 151 | clip: rect(0 0 0 0) !important; 152 | height: 1px !important; 153 | margin: -1px !important; 154 | overflow: hidden !important; 155 | padding: 0 !important; 156 | position: absolute !important; 157 | width: 1px !important; 158 | } 159 | } @else { 160 | .mfp-hide { 161 | display: none !important; 162 | } 163 | } 164 | 165 | 166 | //////////////////////// 167 | // 2. Appearance 168 | //////////////////////// 169 | 170 | // Preloader and text that displays error messages 171 | .mfp-preloader { 172 | color: $mfp-controls-text-color; 173 | position: absolute; 174 | top: 50%; 175 | width: auto; 176 | text-align: center; 177 | margin-top: -0.8em; 178 | left: 8px; 179 | right: 8px; 180 | z-index: $mfp-z-index-base + 4; 181 | a { 182 | color: $mfp-controls-text-color; 183 | &:hover { 184 | color: $mfp-controls-text-color-hover; 185 | } 186 | } 187 | } 188 | 189 | // Hide preloader when content successfully loaded 190 | .mfp-s-ready { 191 | .mfp-preloader { 192 | display: none; 193 | } 194 | } 195 | 196 | // Hide content when it was not loaded 197 | .mfp-s-error { 198 | .mfp-content { 199 | display: none; 200 | } 201 | } 202 | 203 | // CSS-reset for buttons 204 | button { 205 | &.mfp-close, 206 | &.mfp-arrow { 207 | overflow: visible; 208 | cursor: pointer; 209 | background: transparent; 210 | border: 0; 211 | -webkit-appearance: none; 212 | display: block; 213 | outline: none; 214 | padding: 0; 215 | z-index: $mfp-z-index-base + 6; 216 | box-shadow: none; 217 | touch-action: manipulation; 218 | } 219 | &::-moz-focus-inner { 220 | padding: 0; 221 | border: 0 222 | } 223 | } 224 | 225 | 226 | // Close icon 227 | .mfp-close { 228 | width: 44px; 229 | height: 44px; 230 | line-height: 44px; 231 | 232 | position: absolute; 233 | right: 0; 234 | top: 0; 235 | text-decoration: none; 236 | text-align: center; 237 | opacity: $mfp-controls-opacity; 238 | padding: 0 0 18px 10px; 239 | color: $mfp-controls-color; 240 | 241 | font-style: normal; 242 | font-size: 28px; 243 | font-family: Arial, Baskerville, monospace; 244 | 245 | &:hover, 246 | &:focus { 247 | opacity: 1; 248 | } 249 | 250 | &:active { 251 | top: 1px; 252 | } 253 | } 254 | .mfp-close-btn-in { 255 | .mfp-close { 256 | color: $mfp-inner-close-icon-color; 257 | } 258 | } 259 | .mfp-image-holder, 260 | .mfp-iframe-holder { 261 | .mfp-close { 262 | color: $mfp-controls-color; 263 | right: -6px; 264 | text-align: right; 265 | padding-right: 6px; 266 | width: 100%; 267 | } 268 | } 269 | 270 | // "1 of X" counter 271 | .mfp-counter { 272 | position: absolute; 273 | top: 0; 274 | right: 0; 275 | color: $mfp-controls-text-color; 276 | font-size: 12px; 277 | line-height: 18px; 278 | white-space: nowrap; 279 | } 280 | 281 | // Navigation arrows 282 | @if $mfp-include-arrows { 283 | .mfp-arrow { 284 | position: absolute; 285 | opacity: $mfp-controls-opacity; 286 | margin: 0; 287 | top: 50%; 288 | margin-top: -55px; 289 | padding: 0; 290 | width: 90px; 291 | height: 110px; 292 | -webkit-tap-highlight-color: rgba(0,0,0,0); 293 | &:active { 294 | margin-top: -54px; 295 | } 296 | &:hover, 297 | &:focus { 298 | opacity: 1; 299 | } 300 | &:before, 301 | &:after { 302 | content: ''; 303 | display: block; 304 | width: 0; 305 | height: 0; 306 | position: absolute; 307 | left: 0; 308 | top: 0; 309 | margin-top: 35px; 310 | margin-left: 35px; 311 | border: medium inset transparent; 312 | } 313 | 314 | &:after { 315 | 316 | border-top-width: 13px; 317 | border-bottom-width: 13px; 318 | top:8px; 319 | } 320 | 321 | &:before { 322 | border-top-width: 21px; 323 | border-bottom-width: 21px; 324 | opacity: 0.7; 325 | } 326 | 327 | } 328 | 329 | .mfp-arrow-left { 330 | left: 0; 331 | &:after { 332 | border-right: 17px solid $mfp-controls-color; 333 | margin-left: 31px; 334 | } 335 | &:before { 336 | margin-left: 25px; 337 | border-right: 27px solid $mfp-controls-border-color; 338 | } 339 | } 340 | 341 | .mfp-arrow-right { 342 | right: 0; 343 | &:after { 344 | border-left: 17px solid $mfp-controls-color; 345 | margin-left: 39px 346 | } 347 | &:before { 348 | border-left: 27px solid $mfp-controls-border-color; 349 | } 350 | } 351 | } 352 | 353 | 354 | 355 | // Iframe content type 356 | @if $mfp-include-iframe-type { 357 | .mfp-iframe-holder { 358 | padding-top: $mfp-iframe-padding-top; 359 | padding-bottom: $mfp-iframe-padding-top; 360 | .mfp-content { 361 | line-height: 0; 362 | width: 100%; 363 | max-width: $mfp-iframe-max-width; 364 | } 365 | .mfp-close { 366 | top: -40px; 367 | } 368 | } 369 | .mfp-iframe-scaler { 370 | width: 100%; 371 | height: 0; 372 | overflow: hidden; 373 | padding-top: $mfp-iframe-ratio * 100%; 374 | iframe { 375 | position: absolute; 376 | display: block; 377 | top: 0; 378 | left: 0; 379 | width: 100%; 380 | height: 100%; 381 | box-shadow: $mfp-shadow; 382 | background: $mfp-iframe-background; 383 | } 384 | } 385 | } 386 | 387 | 388 | 389 | // Image content type 390 | @if $mfp-include-image-type { 391 | 392 | /* Main image in popup */ 393 | img { 394 | &.mfp-img { 395 | width: auto; 396 | max-width: 100%; 397 | height: auto; 398 | display: block; 399 | line-height: 0; 400 | box-sizing: border-box; 401 | padding: $mfp-image-padding-top 0 $mfp-image-padding-bottom; 402 | margin: 0 auto; 403 | } 404 | } 405 | 406 | /* The shadow behind the image */ 407 | .mfp-figure { 408 | line-height: 0; 409 | &:after { 410 | content: ''; 411 | position: absolute; 412 | left: 0; 413 | top: $mfp-image-padding-top; 414 | bottom: $mfp-image-padding-bottom; 415 | display: block; 416 | right: 0; 417 | width: auto; 418 | height: auto; 419 | z-index: -1; 420 | box-shadow: $mfp-shadow; 421 | background: $mfp-image-background; 422 | } 423 | small { 424 | color: $mfp-caption-subtitle-color; 425 | display: block; 426 | font-size: 12px; 427 | line-height: 14px; 428 | } 429 | figure { 430 | margin: 0; 431 | } 432 | } 433 | .mfp-bottom-bar { 434 | margin-top: -$mfp-image-padding-bottom + 4; 435 | position: absolute; 436 | top: 100%; 437 | left: 0; 438 | width: 100%; 439 | cursor: auto; 440 | } 441 | .mfp-title { 442 | text-align: left; 443 | line-height: 18px; 444 | color: $mfp-caption-title-color; 445 | word-wrap: break-word; 446 | padding-right: 36px; // leave some space for counter at right side 447 | } 448 | 449 | .mfp-image-holder { 450 | .mfp-content { 451 | max-width: 100%; 452 | } 453 | } 454 | 455 | .mfp-gallery { 456 | .mfp-image-holder { 457 | .mfp-figure { 458 | cursor: pointer; 459 | } 460 | } 461 | } 462 | 463 | 464 | @if $mfp-include-mobile-layout-for-image { 465 | @media screen and (max-width: 800px) and (orientation:landscape), screen and (max-height: 300px) { 466 | /** 467 | * Remove all paddings around the image on small screen 468 | */ 469 | .mfp-img-mobile { 470 | .mfp-image-holder { 471 | padding-left: 0; 472 | padding-right: 0; 473 | } 474 | img { 475 | &.mfp-img { 476 | padding: 0; 477 | } 478 | } 479 | .mfp-figure { 480 | // The shadow behind the image 481 | &:after { 482 | top: 0; 483 | bottom: 0; 484 | } 485 | small { 486 | display: inline; 487 | margin-left: 5px; 488 | } 489 | } 490 | .mfp-bottom-bar { 491 | background: rgba(0,0,0,0.6); 492 | bottom: 0; 493 | margin: 0; 494 | top: auto; 495 | padding: 3px 5px; 496 | position: fixed; 497 | box-sizing: border-box; 498 | &:empty { 499 | padding: 0; 500 | } 501 | } 502 | .mfp-counter { 503 | right: 5px; 504 | top: 3px; 505 | } 506 | .mfp-close { 507 | top: 0; 508 | right: 0; 509 | width: 35px; 510 | height: 35px; 511 | line-height: 35px; 512 | background: rgba(0, 0, 0, 0.6); 513 | position: fixed; 514 | text-align: center; 515 | padding: 0; 516 | } 517 | } 518 | } 519 | } 520 | } 521 | 522 | 523 | 524 | // Scale navigation arrows and reduce padding from sides 525 | @media all and (max-width: 900px) { 526 | .mfp-arrow { 527 | -webkit-transform: scale(0.75); 528 | transform: scale(0.75); 529 | } 530 | .mfp-arrow-left { 531 | -webkit-transform-origin: 0; 532 | transform-origin: 0; 533 | } 534 | .mfp-arrow-right { 535 | -webkit-transform-origin: 100%; 536 | transform-origin: 100%; 537 | } 538 | .mfp-container { 539 | padding-left: $mfp-popup-padding-left-mobile; 540 | padding-right: $mfp-popup-padding-left-mobile; 541 | } 542 | } 543 | 544 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/website/_includes/site-assets/site.css: -------------------------------------------------------------------------------- 1 | /* Demo site CSS. Not mobile first, not semantic, not optimized, made for 20 minutes, mess */ 2 | html, body, div, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, ol, ul, li, form, fieldset, legend, label, table, header, footer, nav, section, figure { 3 | margin: 0; 4 | padding: 0; 5 | } 6 | html { 7 | overflow-y: scroll; 8 | } 9 | body { 10 | font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; 11 | font-size: 14px; 12 | line-height: 1.6; 13 | color: #5A6064; 14 | } 15 | pre,code{ 16 | tab-size: 4; 17 | } 18 | p { 19 | margin: 0 0 11px; 20 | } 21 | ul { 22 | list-style: disc; 23 | } 24 | ul, ol { 25 | padding: 0; 26 | margin: 0 0 11px 25px; 27 | } 28 | li { 29 | line-height: 22px; 30 | margin: 0 0 .5em 0; 31 | } 32 | h1, h2, h3, h4, h5, h6 { 33 | margin: 0; 34 | font-weight: normal; 35 | text-rendering: optimizelegibility; 36 | 37 | color: #282B30; 38 | font-family:Calibri, "PT Sans", "Trebuchet MS", 'Helvetica Neue', Arial 39 | } 40 | .mfp-preloader { 41 | font-size: 13px; 42 | } 43 | img { 44 | border: 0; 45 | } 46 | h1 { 47 | margin-bottom: 5px; 48 | } 49 | .get-code-window { 50 | position: relative; 51 | background: #FFF; 52 | padding: 2em 3em; 53 | width: auto; 54 | margin: 20px auto; 55 | max-width: 600px; 56 | } 57 | #magnific_popup_documentation { 58 | font-size: 3em; 59 | margin-bottom: 1em; 60 | font-weight: bold; 61 | text-align: center; 62 | } 63 | 64 | 65 | h2 { 66 | font-weight: bold; 67 | margin-top: 2em; 68 | margin-bottom: .3em; 69 | border-bottom: 1px solid #DDD; 70 | padding-bottom: 0.2em; 71 | font-size: 1.8em; 72 | } 73 | h3 { 74 | font-size: 22px; 75 | line-height: 24px; 76 | margin-bottom: 12px; 77 | margin-top: 20px; 78 | } 79 | h4 { 80 | margin-bottom: 5px; 81 | } 82 | a { 83 | color: #3169B3; 84 | text-decoration: underline; 85 | } 86 | a:hover { 87 | color: #C00; 88 | text-decoration: underline; 89 | } 90 | 91 | 92 | 93 | body { 94 | background: #fafafa; 95 | } 96 | 97 | 98 | .grid-c h3 { 99 | margin-top: 0; 100 | } 101 | .grid-c { 102 | clear: both; 103 | } 104 | .grid-c p { 105 | margin-bottom: .5em; 106 | } 107 | .grid-c { 108 | overflow: hidden; 109 | margin: 0 -1em; 110 | } 111 | .gc3 { 112 | -moz-box-sizing: border-box; 113 | -webkit-box-sizing: border-box; 114 | box-sizing: border-box; 115 | width: 50%; 116 | float: left; 117 | padding: 1em; 118 | overflow: hidden; 119 | } 120 | .grid-c .gc3:nth-of-type(2n+1) { 121 | clear: left; 122 | } 123 | 124 | h1#magnific-popup-docs { 125 | display: none; 126 | } 127 | 128 | #logo { 129 | height: 150px; 130 | text-align: center; 131 | position: relative; 132 | width: 100%; 133 | -webkit-user-select: none; 134 | -moz-user-select: none; 135 | padding: 0 3em; 136 | margin-left: -3em; 137 | cursor: pointer; 138 | margin-top: 50px; 139 | margin-bottom: 50px; 140 | } 141 | #broken-glass { 142 | height: 100%; 143 | -webkit-tap-highlight-color: transparent; 144 | position: absolute; 145 | left: 0; 146 | top: 0; 147 | width: 100%; 148 | } 149 | #logo:active h1 { 150 | top: 1px; 151 | } 152 | 153 | #logo h1 { 154 | margin-top: 27px; 155 | font-size: 63px; 156 | line-height: 1.4; 157 | top: 0; 158 | } 159 | 160 | #logo h1 { 161 | text-align: center; 162 | font-weight: bold; 163 | width: 100%; 164 | color: #000; 165 | position: absolute; 166 | left: 0; 167 | -webkit-user-select: none; 168 | -moz-user-select: none; 169 | cursor: pointer; 170 | } 171 | 172 | 173 | h2.intro { 174 | font-size: 22px; 175 | line-height: 1.2; 176 | font-weight: normal; 177 | border: 0; 178 | margin-top: 0; 179 | } 180 | #header-links { 181 | font-size: 16px; 182 | } 183 | /*#header-links a { 184 | color: #A5CCFF; 185 | } 186 | #header-links a:hover { 187 | opacity: 0.8; 188 | }*/ 189 | 190 | 191 | #markdown-toc { 192 | position: fixed; 193 | left: 0; 194 | top: 50px; 195 | padding: 20px 20px; 196 | background: rgba(255, 255, 255, 0.71); 197 | -webkit-backface-visibility:hidden; 198 | list-style: none; 199 | } 200 | #markdown-toc a[href="#magnific-popup-docs"] { 201 | display: none; 202 | } 203 | #markdown-toc ul { 204 | list-style: none; 205 | } 206 | #markdown-toc ul ul { 207 | display: none; 208 | } 209 | #markdown-toc:before { 210 | content: 'Table of contents'; 211 | font-weight: bold; 212 | display: block; 213 | margin-bottom: 10px; 214 | } 215 | @media all and (max-width: 75em) { 216 | #markdown-toc { 217 | position: static; 218 | padding: 0; 219 | background: none; 220 | } 221 | } 222 | #markdown-toc a { 223 | text-decoration: none; 224 | border-bottom: 1px dotted; 225 | } 226 | #markdown-toc ul { 227 | margin: 0; 228 | padding: 0; 229 | } 230 | #markdown-toc .active a{ 231 | text-decoration: none; 232 | color: #666; 233 | } 234 | /*h2:target { 235 | font-weight: bold; 236 | margin-top: 0; 237 | border-top: 1.8em solid transparent; 238 | margin-bottom: .3em; 239 | border-bottom: 0; 240 | 241 | -webkit-background-clip: padding-box; 242 | -moz-background-clip: padding; 243 | background-clip: padding-box; 244 | background-color: #FFF6BF; 245 | padding-top: .2em; 246 | padding-left: .5em; 247 | }*/ 248 | code,pre { 249 | font-family: Consolas, "Liberation Mono", Courier, monospace; 250 | } 251 | code { 252 | background: #F8F8F8; 253 | padding: .1em .4em; 254 | color: #c82829; 255 | font-size: 13px; 256 | } 257 | 258 | pre { 259 | background: none; 260 | line-height: 18px; 261 | overflow: auto; 262 | padding: 20px 25px; 263 | 264 | border-radius: 2px; 265 | } 266 | pre code { 267 | border: 0; 268 | padding: 0; 269 | background: none; 270 | color: #000; 271 | font-size: 13px; 272 | } 273 | .highlight { 274 | position: relative; 275 | margin-bottom: 0.5em; 276 | margin-left: -1.5em; 277 | width: 100%; 278 | padding: 0 1.5em; 279 | background-color: #F5FAFC; 280 | 281 | } 282 | pre code:before { 283 | display: block; 284 | position: absolute; 285 | right: 3px; 286 | top: 6px; 287 | padding: 3px 7px 0; 288 | color: #889499; 289 | font-size: 12px; 290 | line-height: 13px; 291 | } 292 | 293 | 294 | code.html:before { 295 | content: 'HTML'; 296 | } 297 | code.javascript:before { 298 | content: 'JS'; 299 | } 300 | code.css:before { 301 | content: 'CSS'; 302 | } 303 | 304 | 305 | #mc_embed_signup { 306 | max-width: 350px; 307 | padding: 32px; 308 | background: #EEE; 309 | } 310 | #mc_embed_signup input[type="email"] { 311 | border: 1px solid #CCC; 312 | border-top: 1px solid #999; 313 | padding: 5px; 314 | font-size: 18px; 315 | width: 200px; 316 | margin-right: 10px; 317 | height: 25px; 318 | transition: all 0.3s ease; 319 | -moz-transition: all 0.3s ease; 320 | -webkit-transition: all 0.3s ease; 321 | border-radius: 2px; 322 | -moz-border-radius: 2px; 323 | -webkit-border-radius: 2px; 324 | } 325 | #mc_embed_signup input[type="email"]:focus { 326 | background-color: #FFF; 327 | border: 1px solid #3169B3; 328 | box-shadow: #3169B3 0px 0px 5px; 329 | -moz-box-shadow: #3169B3 0px 0px 5px; 330 | -webkit-box-shadow: #3169B3 0px 0px 5px; 331 | outline: none; 332 | } 333 | #mc_embed_signup input[type="submit"] { 334 | border: 1px solid #3169B3; 335 | font-size: 13px; 336 | font-weight: bold; 337 | color: #FFF; 338 | height: auto; 339 | padding: 8px 13px; 340 | cursor: pointer; 341 | background-color: #3169B3; 342 | display: inline-block; 343 | width: auto; 344 | -webkit-appearance: none; 345 | border-radius: 2px; 346 | -moz-border-radius: 2px; 347 | -webkit-border-radius: 2px; 348 | vertical-align: top; 349 | } 350 | .embed-form { 351 | position: relative; 352 | } 353 | #mc_embed_signup p { 354 | font-size: 15px; 355 | color: #4F4F4F; 356 | } 357 | 358 | 359 | 360 | #main-wrapper { 361 | 362 | background: none; 363 | max-width: 800px; 364 | width: 100%; 365 | margin: 2em auto 4em; 366 | padding: 3em; 367 | padding-top: 0; 368 | -moz-box-sizing: border-box; 369 | -webkit-box-sizing: border-box; 370 | box-sizing: border-box; 371 | position: relative; 372 | } 373 | 374 | 375 | .white-popup-block { 376 | background: #FFF; 377 | padding: 20px 30px; 378 | text-align: left; 379 | max-width: 650px; 380 | margin: 40px auto; 381 | position: relative; 382 | } 383 | 384 | #examples:after { 385 | content: 'to view source click on the title of example'; 386 | opacity: 0.4; 387 | font-weight: normal; 388 | font-size: 14px; 389 | margin-top: 13px; 390 | float: right; 391 | } 392 | .example { 393 | margin-bottom: 20px; 394 | position: relative; 395 | } 396 | .example h3 { 397 | display: inline-block; 398 | cursor: pointer; 399 | border-bottom: 1px dotted #949494; 400 | } 401 | .example h3:hover { 402 | color: #C00; 403 | } 404 | .example h3:hover:after { 405 | content: 'view source'; 406 | padding-left: 8px; 407 | color: #999; 408 | position: absolute; 409 | top: 16px; 410 | font-family: Consolas, "Liberation Mono", Courier, monospace; 411 | font-size: 12px; 412 | } 413 | 414 | /*button.get-code-btn { 415 | cursor: pointer; 416 | background: transparent; 417 | border: 0; 418 | -webkit-appearance: none; 419 | display: block; 420 | z-index: 1; 421 | padding: 0; 422 | outline: none; 423 | background: red; 424 | position: absolute; 425 | right: 0; 426 | top: 0; 427 | }*/ 428 | 429 | .square-tmb { 430 | margin: 0 10px 0 0; 431 | cursor: pointer; 432 | } 433 | .zoom-cursor { 434 | cursor: -webkit-zoom-in; 435 | cursor: -moz-zoom-in; 436 | cursor: zoom-in; 437 | } 438 | .example a, 439 | a.popup-link { 440 | text-decoration: none; 441 | border-bottom: 1px dotted; 442 | } 443 | .example a:hover, 444 | a.popup-link:hover { 445 | text-decoration: none; 446 | } 447 | 448 | .example a { 449 | line-height: 26px; 450 | } 451 | .example p a { 452 | text-decoration: underline; 453 | border: 0; 454 | line-height: 1.6; 455 | } 456 | 457 | #image-gallery a, 458 | #single-image { 459 | border-bottom: none; 460 | } 461 | .not-ready-yet-notice { 462 | padding: 20px 20px; 463 | background: #EEE; 464 | } 465 | 466 | #footer { 467 | border-top: 1px solid #DDD; 468 | padding-top: 3em; 469 | margin: 5em 0 0; 470 | width: 100%; 471 | text-align: center; 472 | opacity: 0.9; 473 | } 474 | 475 | #conditional-lightbox-notice { 476 | display: none; 477 | } 478 | 479 | #logo-status { 480 | opacity: 0; 481 | -webkit-transition: opacity 0.5s; 482 | -moz-transition: opacity 0.5s; 483 | transition: opacity 0.5s; 484 | width: 100%; 485 | text-align: center; 486 | } 487 | #logo-status.down { 488 | opacity: 1; 489 | } 490 | 491 | .grid-of-images a { 492 | cursor: -webkit-zoom-in; 493 | cursor: -moz-zoom-in; 494 | cursor: zoom-in; 495 | border-bottom: 0; 496 | height: 75px; 497 | display: block; 498 | float: left; 499 | margin: 0 5px 5px 0; 500 | width: 75px; 501 | } 502 | .grid-of-images a:hover { 503 | opacity: 0.9; 504 | } 505 | 506 | h3 em { 507 | opacity: 0.3; 508 | } 509 | 510 | code.def { 511 | padding: 0; 512 | background: #FFF; 513 | border: 0; 514 | display: block; 515 | margin-bottom: 8px; 516 | margin-top: -10px; 517 | color: #A3A3A3; 518 | } 519 | 520 | @media all and (max-width: 50em) { 521 | #logo h1 { 522 | font-size: 52px; 523 | margin-top: 36px; 524 | } 525 | } 526 | 527 | @media all and (max-width: 30em) { 528 | #examples:after { 529 | display: none; 530 | } 531 | .gc3 { 532 | width: 100%; 533 | } 534 | .grid-c .gc3:nth-of-type(2n+1) { 535 | clear: none; 536 | } 537 | #main-wrapper { 538 | padding: 1em; 539 | margin-top: 0; 540 | } 541 | .highlight { 542 | padding: 0.2em 1em; 543 | margin: 1em -1em; 544 | } 545 | #logo { 546 | height: 95px; 547 | width: 100%; 548 | padding: 0; 549 | margin: 0 auto; 550 | margin-top: 0; 551 | margin-bottom: 2em; 552 | } 553 | #logo h1 { 554 | font-size: 32px; 555 | margin-top: 23px; 556 | } 557 | h2.intro { 558 | font-size: 20px; 559 | } 560 | } 561 | 562 | @media all and (max-width: 700px) { 563 | .zoom-cursor { 564 | cursor: pointer; 565 | } 566 | #conditional-lightbox-notice { 567 | display: block; 568 | padding: 10px; 569 | background: #FFEAEA; 570 | } 571 | } 572 | 573 | 574 | 575 | #logo-overlay { 576 | width: 100%; 577 | height: 75px; 578 | 579 | } 580 | #logo-overlay { 581 | opacity: 1; 582 | background: red; 583 | position: absolute; 584 | left: 0; 585 | top: 0; 586 | opacity: 0; 587 | } 588 | #mfp-build-tool { 589 | background: #FFF; 590 | padding: 30px 40px 40px 40px; 591 | max-width: 500px; 592 | text-align: left; 593 | margin: 10px auto; 594 | position: relative; 595 | } 596 | 597 | #mfp-build-tool h2 { 598 | margin-top: 0; 599 | margin-bottom: 0.7em; 600 | } 601 | #mfp-build-form label { 602 | display: block; 603 | margin-bottom: 5px; 604 | min-height: 18px; 605 | padding-left: 18px; 606 | } 607 | #mfp-build-form input[type="checkbox"] { 608 | margin: 3px 0; 609 | line-height: normal; 610 | cursor: pointer; 611 | width: auto; 612 | margin-right: 5px; 613 | float: left; 614 | margin-left: -18px; 615 | } 616 | #mfp-build-status { 617 | min-height: 40px; 618 | } 619 | #mfp-build-status .error { 620 | color: #830C0C; 621 | } 622 | #mfp-build-status .success { 623 | color: #014B04; 624 | } 625 | #mfp-build-status .progress { 626 | color: #000; 627 | } 628 | 629 | 630 | #smashing { 631 | text-align: center; 632 | font-weight: bold; 633 | } 634 | #smashing a { 635 | color: #EF4A35; 636 | } 637 | #smashing a:hover { 638 | color: #FF9369; 639 | } 640 | #smashing strong { 641 | color: #EF4A35; 642 | } 643 | .smashing-link { 644 | margin-left: 29px; 645 | position: relative; 646 | } 647 | .smashing-link:before { 648 | content: ''; 649 | display: inline-block; 650 | width: 24px; 651 | height: 24px; 652 | background: url("http://dimsemenov.com/images/sm-logo-24x24.png"); 653 | position: absolute; 654 | top: -4px; 655 | left: -28px; 656 | } 657 | #hackernews { 658 | margin-left: 24px; 659 | } 660 | #hackernews:before { 661 | background: url("http://dimsemenov.com/images/hn-logo-18x18.gif"); 662 | width: 18px; 663 | height: 18px; 664 | top: -1px; 665 | left: -22px; 666 | } 667 | 668 | 669 | .share-buttons { 670 | text-align: center; 671 | } 672 | .share-buttons h2 { 673 | text-align: center; 674 | border: 0; 675 | 676 | } 677 | .share-buttons { 678 | position: relative; 679 | margin: 70px 0; 680 | } 681 | .share-buttons a { 682 | -moz-border-radius: 2px; 683 | border-radius: 2px; 684 | display: inline-block; 685 | padding: 10px 20px; 686 | margin: 10px; 687 | color: #FFF; 688 | text-decoration: none; 689 | background: #5AAF63; 690 | font-size: 16px; 691 | line-height: 22px; 692 | cursor: pointer; 693 | } 694 | .share-buttons a:hover { 695 | opacity: 0.7; 696 | } 697 | #tweet { 698 | background: #0096c4; 699 | } 700 | #like { 701 | background: #3b5998; 702 | } 703 | #gplus { 704 | background: #d34836; 705 | } 706 | #vkcom { 707 | background: #6e8fb1; 708 | } 709 | 710 | 711 | 712 | pre .comment, 713 | pre .template_comment, 714 | pre .diff .header, 715 | pre .javadoc { 716 | color: #998; 717 | font-style: italic 718 | } 719 | 720 | pre .keyword, 721 | pre .css .rule .keyword, 722 | pre .winutils, 723 | pre .javascript .title, 724 | pre .nginx .title, 725 | pre .subst, 726 | pre .request, 727 | pre .status { 728 | color: #333; 729 | font-weight: bold 730 | } 731 | 732 | pre .number, 733 | pre .hexcolor, 734 | pre .ruby .constant { 735 | color: #099; 736 | } 737 | 738 | pre .string, 739 | pre .tag .value, 740 | pre .phpdoc, 741 | pre .tex .formula { 742 | color: #D01040; 743 | } 744 | 745 | pre .title, 746 | pre .id { 747 | color: #900; 748 | font-weight: bold 749 | } 750 | 751 | pre .javascript .title, 752 | pre .lisp .title, 753 | pre .clojure .title, 754 | pre .subst { 755 | font-weight: normal 756 | } 757 | 758 | pre .class .title, 759 | pre .haskell .type, 760 | pre .vhdl .literal, 761 | pre .tex .command { 762 | color: #458; 763 | font-weight: bold 764 | } 765 | 766 | pre .tag, 767 | pre .tag .title, 768 | pre .rules .property, 769 | pre .django .tag .keyword { 770 | color: #000080; 771 | font-weight: normal 772 | } 773 | 774 | pre .attribute, 775 | pre .variable, 776 | pre .lisp .body { 777 | color: teal; 778 | } 779 | 780 | pre .regexp { 781 | color: #009926 782 | } 783 | 784 | pre .class { 785 | color: #458; 786 | font-weight: bold 787 | } 788 | 789 | pre .symbol, 790 | pre .ruby .symbol .string, 791 | pre .lisp .keyword, 792 | pre .tex .special, 793 | pre .prompt { 794 | 795 | 796 | } 797 | 798 | pre .built_in, 799 | pre .lisp .title, 800 | pre .clojure .built_in { 801 | color: #0086b3 802 | } 803 | 804 | pre .preprocessor, 805 | pre .pi, 806 | pre .doctype, 807 | pre .shebang, 808 | pre .cdata { 809 | color: #999; 810 | font-weight: bold 811 | } 812 | 813 | pre .deletion { 814 | background: #fdd 815 | } 816 | 817 | pre .addition { 818 | background: #dfd 819 | } 820 | 821 | pre .diff .change { 822 | background: #0086b3 823 | } 824 | 825 | pre .chunk { 826 | color: #aaa 827 | } 828 | 829 | #documentation-intro { 830 | background: #2b2b2b; 831 | text-align: center; 832 | padding: 3em; 833 | width: 100%; 834 | margin-left: -3em; 835 | margin-bottom: 3em; 836 | } 837 | #documentation-intro h1 { 838 | color: #FFF; 839 | width: 100%; 840 | text-align: center; 841 | font-size: 44px; 842 | line-height: 1.1em; 843 | } 844 | #id1 { 845 | display: none; 846 | } 847 | #documentation-intro h1 a { 848 | text-decoration: none; 849 | color: #FFF; 850 | } 851 | #documentation-intro p a { 852 | font-size: 15px; 853 | color: #7CB5FF; 854 | } 855 | #documentation-intro a:hover { 856 | opacity: 0.75; 857 | text-decoration: underline; 858 | } 859 | 860 | /* Syntax highlighter */ 861 | .hll{background-color:#ffc}.c{color:#998;font-style:italic}.err{color:#a61717;background-color:#e3d2d2}.k{color:#000;font-weight:bold}.o{color:#000;font-weight:bold}.cm{color:#998;font-style:italic}.cp{color:#999;font-weight:bold;font-style:italic}.c1{color:#998;font-style:italic}.cs{color:#999;font-weight:bold;font-style:italic}.gd{color:#000;background-color:#fdd}.ge{color:#000;font-style:italic}.gr{color:#a00}.gh{color:#999}.gi{color:#000;background-color:#dfd}.go{color:#888}.gp{color:#555}.gs{font-weight:bold}.gu{color:#aaa}.gt{color:#a00}.kc{color:#000;font-weight:bold}.kd{color:#000;font-weight:bold}.kn{color:#000;font-weight:bold}.kp{color:#000;font-weight:bold}.kr{color:#000;font-weight:bold}.kt{color:#458;font-weight:bold}.m{color:#099}.s{color:#d01040}.na{color:#008080}.nb{color:#0086b3}.nc{color:#458;font-weight:bold}.no{color:#008080}.nd{color:#3c5d5d;font-weight:bold}.ni{color:#800080}.ne{color:#900;font-weight:bold}.nf{color:#900;font-weight:bold}.nl{color:#900;font-weight:bold}.nn{color:#555}.nt{color:#000080}.nv{color:#008080}.ow{color:#000;font-weight:bold}.w{color:#bbb}.mf{color:#099}.mh{color:#099}.mi{color:#099}.mo{color:#099}.sb{color:#d01040}.sc{color:#d01040}.sd{color:#d01040}.s2{color:#d01040}.se{color:#d01040}.sh{color:#d01040}.si{color:#d01040}.sx{color:#d01040}.sr{color:#009926}.s1{color:#d01040}.ss{color:#990073}.bp{color:#999}.vc{color:#008080}.vg{color:#008080}.vi{color:#008080}.il{color:#099} 862 | -------------------------------------------------------------------------------- /vendor/Magnific-Popup/dist/jquery.magnific-popup.min.js: -------------------------------------------------------------------------------- 1 | /*! Magnific Popup - v1.1.0 - 2016-02-20 2 | * http://dimsemenov.com/plugins/magnific-popup/ 3 | * Copyright (c) 2016 Dmitry Semenov; */ 4 | !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("
");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'
',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'
',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()}); -------------------------------------------------------------------------------- /vendor/Magnific-Popup/src/js/core.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Magnific Popup Core JS file 4 | * 5 | */ 6 | 7 | 8 | /** 9 | * Private static constants 10 | */ 11 | var CLOSE_EVENT = 'Close', 12 | BEFORE_CLOSE_EVENT = 'BeforeClose', 13 | AFTER_CLOSE_EVENT = 'AfterClose', 14 | BEFORE_APPEND_EVENT = 'BeforeAppend', 15 | MARKUP_PARSE_EVENT = 'MarkupParse', 16 | OPEN_EVENT = 'Open', 17 | CHANGE_EVENT = 'Change', 18 | NS = 'mfp', 19 | EVENT_NS = '.' + NS, 20 | READY_CLASS = 'mfp-ready', 21 | REMOVING_CLASS = 'mfp-removing', 22 | PREVENT_CLOSE_CLASS = 'mfp-prevent-close'; 23 | 24 | 25 | /** 26 | * Private vars 27 | */ 28 | /*jshint -W079 */ 29 | var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this' 30 | MagnificPopup = function(){}, 31 | _isJQ = !!(window.jQuery), 32 | _prevStatus, 33 | _window = $(window), 34 | _document, 35 | _prevContentType, 36 | _wrapClasses, 37 | _currPopupType; 38 | 39 | 40 | /** 41 | * Private functions 42 | */ 43 | var _mfpOn = function(name, f) { 44 | mfp.ev.on(NS + name + EVENT_NS, f); 45 | }, 46 | _getEl = function(className, appendTo, html, raw) { 47 | var el = document.createElement('div'); 48 | el.className = 'mfp-'+className; 49 | if(html) { 50 | el.innerHTML = html; 51 | } 52 | if(!raw) { 53 | el = $(el); 54 | if(appendTo) { 55 | el.appendTo(appendTo); 56 | } 57 | } else if(appendTo) { 58 | appendTo.appendChild(el); 59 | } 60 | return el; 61 | }, 62 | _mfpTrigger = function(e, data) { 63 | mfp.ev.triggerHandler(NS + e, data); 64 | 65 | if(mfp.st.callbacks) { 66 | // converts "mfpEventName" to "eventName" callback and triggers it if it's present 67 | e = e.charAt(0).toLowerCase() + e.slice(1); 68 | if(mfp.st.callbacks[e]) { 69 | mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]); 70 | } 71 | } 72 | }, 73 | _getCloseBtn = function(type) { 74 | if(type !== _currPopupType || !mfp.currTemplate.closeBtn) { 75 | mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) ); 76 | _currPopupType = type; 77 | } 78 | return mfp.currTemplate.closeBtn; 79 | }, 80 | // Initialize Magnific Popup only when called at least once 81 | _checkInstance = function() { 82 | if(!$.magnificPopup.instance) { 83 | /*jshint -W020 */ 84 | mfp = new MagnificPopup(); 85 | mfp.init(); 86 | $.magnificPopup.instance = mfp; 87 | } 88 | }, 89 | // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr 90 | supportsTransitions = function() { 91 | var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist 92 | v = ['ms','O','Moz','Webkit']; // 'v' for vendor 93 | 94 | if( s['transition'] !== undefined ) { 95 | return true; 96 | } 97 | 98 | while( v.length ) { 99 | if( v.pop() + 'Transition' in s ) { 100 | return true; 101 | } 102 | } 103 | 104 | return false; 105 | }; 106 | 107 | 108 | 109 | /** 110 | * Public functions 111 | */ 112 | MagnificPopup.prototype = { 113 | 114 | constructor: MagnificPopup, 115 | 116 | /** 117 | * Initializes Magnific Popup plugin. 118 | * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed 119 | */ 120 | init: function() { 121 | var appVersion = navigator.appVersion; 122 | mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener; 123 | mfp.isAndroid = (/android/gi).test(appVersion); 124 | mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion); 125 | mfp.supportsTransition = supportsTransitions(); 126 | 127 | // We disable fixed positioned lightbox on devices that don't handle it nicely. 128 | // If you know a better way of detecting this - let me know. 129 | mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) ); 130 | _document = $(document); 131 | 132 | mfp.popupsCache = {}; 133 | }, 134 | 135 | /** 136 | * Opens popup 137 | * @param data [description] 138 | */ 139 | open: function(data) { 140 | 141 | var i; 142 | 143 | if(data.isObj === false) { 144 | // convert jQuery collection to array to avoid conflicts later 145 | mfp.items = data.items.toArray(); 146 | 147 | mfp.index = 0; 148 | var items = data.items, 149 | item; 150 | for(i = 0; i < items.length; i++) { 151 | item = items[i]; 152 | if(item.parsed) { 153 | item = item.el[0]; 154 | } 155 | if(item === data.el[0]) { 156 | mfp.index = i; 157 | break; 158 | } 159 | } 160 | } else { 161 | mfp.items = $.isArray(data.items) ? data.items : [data.items]; 162 | mfp.index = data.index || 0; 163 | } 164 | 165 | // if popup is already opened - we just update the content 166 | if(mfp.isOpen) { 167 | mfp.updateItemHTML(); 168 | return; 169 | } 170 | 171 | mfp.types = []; 172 | _wrapClasses = ''; 173 | if(data.mainEl && data.mainEl.length) { 174 | mfp.ev = data.mainEl.eq(0); 175 | } else { 176 | mfp.ev = _document; 177 | } 178 | 179 | if(data.key) { 180 | if(!mfp.popupsCache[data.key]) { 181 | mfp.popupsCache[data.key] = {}; 182 | } 183 | mfp.currTemplate = mfp.popupsCache[data.key]; 184 | } else { 185 | mfp.currTemplate = {}; 186 | } 187 | 188 | 189 | 190 | mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data ); 191 | mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos; 192 | 193 | if(mfp.st.modal) { 194 | mfp.st.closeOnContentClick = false; 195 | mfp.st.closeOnBgClick = false; 196 | mfp.st.showCloseBtn = false; 197 | mfp.st.enableEscapeKey = false; 198 | } 199 | 200 | 201 | // Building markup 202 | // main containers are created only once 203 | if(!mfp.bgOverlay) { 204 | 205 | // Dark overlay 206 | mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() { 207 | mfp.close(); 208 | }); 209 | 210 | mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) { 211 | if(mfp._checkIfClose(e.target)) { 212 | mfp.close(); 213 | } 214 | }); 215 | 216 | mfp.container = _getEl('container', mfp.wrap); 217 | } 218 | 219 | mfp.contentContainer = _getEl('content'); 220 | if(mfp.st.preloader) { 221 | mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading); 222 | } 223 | 224 | 225 | // Initializing modules 226 | var modules = $.magnificPopup.modules; 227 | for(i = 0; i < modules.length; i++) { 228 | var n = modules[i]; 229 | n = n.charAt(0).toUpperCase() + n.slice(1); 230 | mfp['init'+n].call(mfp); 231 | } 232 | _mfpTrigger('BeforeOpen'); 233 | 234 | 235 | if(mfp.st.showCloseBtn) { 236 | // Close button 237 | if(!mfp.st.closeBtnInside) { 238 | mfp.wrap.append( _getCloseBtn() ); 239 | } else { 240 | _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) { 241 | values.close_replaceWith = _getCloseBtn(item.type); 242 | }); 243 | _wrapClasses += ' mfp-close-btn-in'; 244 | } 245 | } 246 | 247 | if(mfp.st.alignTop) { 248 | _wrapClasses += ' mfp-align-top'; 249 | } 250 | 251 | 252 | 253 | if(mfp.fixedContentPos) { 254 | mfp.wrap.css({ 255 | overflow: mfp.st.overflowY, 256 | overflowX: 'hidden', 257 | overflowY: mfp.st.overflowY 258 | }); 259 | } else { 260 | mfp.wrap.css({ 261 | top: _window.scrollTop(), 262 | position: 'absolute' 263 | }); 264 | } 265 | if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) { 266 | mfp.bgOverlay.css({ 267 | height: _document.height(), 268 | position: 'absolute' 269 | }); 270 | } 271 | 272 | 273 | 274 | if(mfp.st.enableEscapeKey) { 275 | // Close on ESC key 276 | _document.on('keyup' + EVENT_NS, function(e) { 277 | if(e.keyCode === 27) { 278 | mfp.close(); 279 | } 280 | }); 281 | } 282 | 283 | _window.on('resize' + EVENT_NS, function() { 284 | mfp.updateSize(); 285 | }); 286 | 287 | 288 | if(!mfp.st.closeOnContentClick) { 289 | _wrapClasses += ' mfp-auto-cursor'; 290 | } 291 | 292 | if(_wrapClasses) 293 | mfp.wrap.addClass(_wrapClasses); 294 | 295 | 296 | // this triggers recalculation of layout, so we get it once to not to trigger twice 297 | var windowHeight = mfp.wH = _window.height(); 298 | 299 | 300 | var windowStyles = {}; 301 | 302 | if( mfp.fixedContentPos ) { 303 | if(mfp._hasScrollBar(windowHeight)){ 304 | var s = mfp._getScrollbarSize(); 305 | if(s) { 306 | windowStyles.marginRight = s; 307 | } 308 | } 309 | } 310 | 311 | if(mfp.fixedContentPos) { 312 | if(!mfp.isIE7) { 313 | windowStyles.overflow = 'hidden'; 314 | } else { 315 | // ie7 double-scroll bug 316 | $('body, html').css('overflow', 'hidden'); 317 | } 318 | } 319 | 320 | 321 | 322 | var classesToadd = mfp.st.mainClass; 323 | if(mfp.isIE7) { 324 | classesToadd += ' mfp-ie7'; 325 | } 326 | if(classesToadd) { 327 | mfp._addClassToMFP( classesToadd ); 328 | } 329 | 330 | // add content 331 | mfp.updateItemHTML(); 332 | 333 | _mfpTrigger('BuildControls'); 334 | 335 | // remove scrollbar, add margin e.t.c 336 | $('html').css(windowStyles); 337 | 338 | // add everything to DOM 339 | mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) ); 340 | 341 | // Save last focused element 342 | mfp._lastFocusedEl = document.activeElement; 343 | 344 | // Wait for next cycle to allow CSS transition 345 | setTimeout(function() { 346 | 347 | if(mfp.content) { 348 | mfp._addClassToMFP(READY_CLASS); 349 | mfp._setFocus(); 350 | } else { 351 | // if content is not defined (not loaded e.t.c) we add class only for BG 352 | mfp.bgOverlay.addClass(READY_CLASS); 353 | } 354 | 355 | // Trap the focus in popup 356 | _document.on('focusin' + EVENT_NS, mfp._onFocusIn); 357 | 358 | }, 16); 359 | 360 | mfp.isOpen = true; 361 | mfp.updateSize(windowHeight); 362 | _mfpTrigger(OPEN_EVENT); 363 | 364 | return data; 365 | }, 366 | 367 | /** 368 | * Closes the popup 369 | */ 370 | close: function() { 371 | if(!mfp.isOpen) return; 372 | _mfpTrigger(BEFORE_CLOSE_EVENT); 373 | 374 | mfp.isOpen = false; 375 | // for CSS3 animation 376 | if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) { 377 | mfp._addClassToMFP(REMOVING_CLASS); 378 | setTimeout(function() { 379 | mfp._close(); 380 | }, mfp.st.removalDelay); 381 | } else { 382 | mfp._close(); 383 | } 384 | }, 385 | 386 | /** 387 | * Helper for close() function 388 | */ 389 | _close: function() { 390 | _mfpTrigger(CLOSE_EVENT); 391 | 392 | var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' '; 393 | 394 | mfp.bgOverlay.detach(); 395 | mfp.wrap.detach(); 396 | mfp.container.empty(); 397 | 398 | if(mfp.st.mainClass) { 399 | classesToRemove += mfp.st.mainClass + ' '; 400 | } 401 | 402 | mfp._removeClassFromMFP(classesToRemove); 403 | 404 | if(mfp.fixedContentPos) { 405 | var windowStyles = {marginRight: ''}; 406 | if(mfp.isIE7) { 407 | $('body, html').css('overflow', ''); 408 | } else { 409 | windowStyles.overflow = ''; 410 | } 411 | $('html').css(windowStyles); 412 | } 413 | 414 | _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS); 415 | mfp.ev.off(EVENT_NS); 416 | 417 | // clean up DOM elements that aren't removed 418 | mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style'); 419 | mfp.bgOverlay.attr('class', 'mfp-bg'); 420 | mfp.container.attr('class', 'mfp-container'); 421 | 422 | // remove close button from target element 423 | if(mfp.st.showCloseBtn && 424 | (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) { 425 | if(mfp.currTemplate.closeBtn) 426 | mfp.currTemplate.closeBtn.detach(); 427 | } 428 | 429 | 430 | if(mfp.st.autoFocusLast && mfp._lastFocusedEl) { 431 | $(mfp._lastFocusedEl).focus(); // put tab focus back 432 | } 433 | mfp.currItem = null; 434 | mfp.content = null; 435 | mfp.currTemplate = null; 436 | mfp.prevHeight = 0; 437 | 438 | _mfpTrigger(AFTER_CLOSE_EVENT); 439 | }, 440 | 441 | updateSize: function(winHeight) { 442 | 443 | if(mfp.isIOS) { 444 | // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2 445 | var zoomLevel = document.documentElement.clientWidth / window.innerWidth; 446 | var height = window.innerHeight * zoomLevel; 447 | mfp.wrap.css('height', height); 448 | mfp.wH = height; 449 | } else { 450 | mfp.wH = winHeight || _window.height(); 451 | } 452 | // Fixes #84: popup incorrectly positioned with position:relative on body 453 | if(!mfp.fixedContentPos) { 454 | mfp.wrap.css('height', mfp.wH); 455 | } 456 | 457 | _mfpTrigger('Resize'); 458 | 459 | }, 460 | 461 | /** 462 | * Set content of popup based on current index 463 | */ 464 | updateItemHTML: function() { 465 | var item = mfp.items[mfp.index]; 466 | 467 | // Detach and perform modifications 468 | mfp.contentContainer.detach(); 469 | 470 | if(mfp.content) 471 | mfp.content.detach(); 472 | 473 | if(!item.parsed) { 474 | item = mfp.parseEl( mfp.index ); 475 | } 476 | 477 | var type = item.type; 478 | 479 | _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]); 480 | // BeforeChange event works like so: 481 | // _mfpOn('BeforeChange', function(e, prevType, newType) { }); 482 | 483 | mfp.currItem = item; 484 | 485 | if(!mfp.currTemplate[type]) { 486 | var markup = mfp.st[type] ? mfp.st[type].markup : false; 487 | 488 | // allows to modify markup 489 | _mfpTrigger('FirstMarkupParse', markup); 490 | 491 | if(markup) { 492 | mfp.currTemplate[type] = $(markup); 493 | } else { 494 | // if there is no markup found we just define that template is parsed 495 | mfp.currTemplate[type] = true; 496 | } 497 | } 498 | 499 | if(_prevContentType && _prevContentType !== item.type) { 500 | mfp.container.removeClass('mfp-'+_prevContentType+'-holder'); 501 | } 502 | 503 | var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]); 504 | mfp.appendContent(newContent, type); 505 | 506 | item.preloaded = true; 507 | 508 | _mfpTrigger(CHANGE_EVENT, item); 509 | _prevContentType = item.type; 510 | 511 | // Append container back after its content changed 512 | mfp.container.prepend(mfp.contentContainer); 513 | 514 | _mfpTrigger('AfterChange'); 515 | }, 516 | 517 | 518 | /** 519 | * Set HTML content of popup 520 | */ 521 | appendContent: function(newContent, type) { 522 | mfp.content = newContent; 523 | 524 | if(newContent) { 525 | if(mfp.st.showCloseBtn && mfp.st.closeBtnInside && 526 | mfp.currTemplate[type] === true) { 527 | // if there is no markup, we just append close button element inside 528 | if(!mfp.content.find('.mfp-close').length) { 529 | mfp.content.append(_getCloseBtn()); 530 | } 531 | } else { 532 | mfp.content = newContent; 533 | } 534 | } else { 535 | mfp.content = ''; 536 | } 537 | 538 | _mfpTrigger(BEFORE_APPEND_EVENT); 539 | mfp.container.addClass('mfp-'+type+'-holder'); 540 | 541 | mfp.contentContainer.append(mfp.content); 542 | }, 543 | 544 | 545 | /** 546 | * Creates Magnific Popup data object based on given data 547 | * @param {int} index Index of item to parse 548 | */ 549 | parseEl: function(index) { 550 | var item = mfp.items[index], 551 | type; 552 | 553 | if(item.tagName) { 554 | item = { el: $(item) }; 555 | } else { 556 | type = item.type; 557 | item = { data: item, src: item.src }; 558 | } 559 | 560 | if(item.el) { 561 | var types = mfp.types; 562 | 563 | // check for 'mfp-TYPE' class 564 | for(var i = 0; i < types.length; i++) { 565 | if( item.el.hasClass('mfp-'+types[i]) ) { 566 | type = types[i]; 567 | break; 568 | } 569 | } 570 | 571 | item.src = item.el.attr('data-mfp-src'); 572 | if(!item.src) { 573 | item.src = item.el.attr('href'); 574 | } 575 | } 576 | 577 | item.type = type || mfp.st.type || 'inline'; 578 | item.index = index; 579 | item.parsed = true; 580 | mfp.items[index] = item; 581 | _mfpTrigger('ElementParse', item); 582 | 583 | return mfp.items[index]; 584 | }, 585 | 586 | 587 | /** 588 | * Initializes single popup or a group of popups 589 | */ 590 | addGroup: function(el, options) { 591 | var eHandler = function(e) { 592 | e.mfpEl = this; 593 | mfp._openClick(e, el, options); 594 | }; 595 | 596 | if(!options) { 597 | options = {}; 598 | } 599 | 600 | var eName = 'click.magnificPopup'; 601 | options.mainEl = el; 602 | 603 | if(options.items) { 604 | options.isObj = true; 605 | el.off(eName).on(eName, eHandler); 606 | } else { 607 | options.isObj = false; 608 | if(options.delegate) { 609 | el.off(eName).on(eName, options.delegate , eHandler); 610 | } else { 611 | options.items = el; 612 | el.off(eName).on(eName, eHandler); 613 | } 614 | } 615 | }, 616 | _openClick: function(e, el, options) { 617 | var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick; 618 | 619 | 620 | if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) { 621 | return; 622 | } 623 | 624 | var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn; 625 | 626 | if(disableOn) { 627 | if($.isFunction(disableOn)) { 628 | if( !disableOn.call(mfp) ) { 629 | return true; 630 | } 631 | } else { // else it's number 632 | if( _window.width() < disableOn ) { 633 | return true; 634 | } 635 | } 636 | } 637 | 638 | if(e.type) { 639 | e.preventDefault(); 640 | 641 | // This will prevent popup from closing if element is inside and popup is already opened 642 | if(mfp.isOpen) { 643 | e.stopPropagation(); 644 | } 645 | } 646 | 647 | options.el = $(e.mfpEl); 648 | if(options.delegate) { 649 | options.items = el.find(options.delegate); 650 | } 651 | mfp.open(options); 652 | }, 653 | 654 | 655 | /** 656 | * Updates text on preloader 657 | */ 658 | updateStatus: function(status, text) { 659 | 660 | if(mfp.preloader) { 661 | if(_prevStatus !== status) { 662 | mfp.container.removeClass('mfp-s-'+_prevStatus); 663 | } 664 | 665 | if(!text && status === 'loading') { 666 | text = mfp.st.tLoading; 667 | } 668 | 669 | var data = { 670 | status: status, 671 | text: text 672 | }; 673 | // allows to modify status 674 | _mfpTrigger('UpdateStatus', data); 675 | 676 | status = data.status; 677 | text = data.text; 678 | 679 | mfp.preloader.html(text); 680 | 681 | mfp.preloader.find('a').on('click', function(e) { 682 | e.stopImmediatePropagation(); 683 | }); 684 | 685 | mfp.container.addClass('mfp-s-'+status); 686 | _prevStatus = status; 687 | } 688 | }, 689 | 690 | 691 | /* 692 | "Private" helpers that aren't private at all 693 | */ 694 | // Check to close popup or not 695 | // "target" is an element that was clicked 696 | _checkIfClose: function(target) { 697 | 698 | if($(target).closest('.' + PREVENT_CLOSE_CLASS).length) { 699 | return; 700 | } 701 | 702 | var closeOnContent = mfp.st.closeOnContentClick; 703 | var closeOnBg = mfp.st.closeOnBgClick; 704 | 705 | if(closeOnContent && closeOnBg) { 706 | return true; 707 | } else { 708 | 709 | // We close the popup if click is on close button or on preloader. Or if there is no content. 710 | if(!mfp.content || $(target).closest('.mfp-close').length || (mfp.preloader && target === mfp.preloader[0]) ) { 711 | return true; 712 | } 713 | 714 | // if click is outside the content 715 | if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) { 716 | if(closeOnBg) { 717 | // last check, if the clicked element is in DOM, (in case it's removed onclick) 718 | if( $.contains(document, target) ) { 719 | return true; 720 | } 721 | } 722 | } else if(closeOnContent) { 723 | return true; 724 | } 725 | 726 | } 727 | return false; 728 | }, 729 | _addClassToMFP: function(cName) { 730 | mfp.bgOverlay.addClass(cName); 731 | mfp.wrap.addClass(cName); 732 | }, 733 | _removeClassFromMFP: function(cName) { 734 | this.bgOverlay.removeClass(cName); 735 | mfp.wrap.removeClass(cName); 736 | }, 737 | _hasScrollBar: function(winHeight) { 738 | return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) ); 739 | }, 740 | _setFocus: function() { 741 | (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus(); 742 | }, 743 | _onFocusIn: function(e) { 744 | if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) { 745 | mfp._setFocus(); 746 | return false; 747 | } 748 | }, 749 | _parseMarkup: function(template, values, item) { 750 | var arr; 751 | if(item.data) { 752 | values = $.extend(item.data, values); 753 | } 754 | _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] ); 755 | 756 | $.each(values, function(key, value) { 757 | if(value === undefined || value === false) { 758 | return true; 759 | } 760 | arr = key.split('_'); 761 | if(arr.length > 1) { 762 | var el = template.find(EVENT_NS + '-'+arr[0]); 763 | 764 | if(el.length > 0) { 765 | var attr = arr[1]; 766 | if(attr === 'replaceWith') { 767 | if(el[0] !== value[0]) { 768 | el.replaceWith(value); 769 | } 770 | } else if(attr === 'img') { 771 | if(el.is('img')) { 772 | el.attr('src', value); 773 | } else { 774 | el.replaceWith( $('').attr('src', value).attr('class', el.attr('class')) ); 775 | } 776 | } else { 777 | el.attr(arr[1], value); 778 | } 779 | } 780 | 781 | } else { 782 | template.find(EVENT_NS + '-'+key).html(value); 783 | } 784 | }); 785 | }, 786 | 787 | _getScrollbarSize: function() { 788 | // thx David 789 | if(mfp.scrollbarSize === undefined) { 790 | var scrollDiv = document.createElement("div"); 791 | scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;'; 792 | document.body.appendChild(scrollDiv); 793 | mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth; 794 | document.body.removeChild(scrollDiv); 795 | } 796 | return mfp.scrollbarSize; 797 | } 798 | 799 | }; /* MagnificPopup core prototype end */ 800 | 801 | 802 | 803 | 804 | /** 805 | * Public static functions 806 | */ 807 | $.magnificPopup = { 808 | instance: null, 809 | proto: MagnificPopup.prototype, 810 | modules: [], 811 | 812 | open: function(options, index) { 813 | _checkInstance(); 814 | 815 | if(!options) { 816 | options = {}; 817 | } else { 818 | options = $.extend(true, {}, options); 819 | } 820 | 821 | options.isObj = true; 822 | options.index = index || 0; 823 | return this.instance.open(options); 824 | }, 825 | 826 | close: function() { 827 | return $.magnificPopup.instance && $.magnificPopup.instance.close(); 828 | }, 829 | 830 | registerModule: function(name, module) { 831 | if(module.options) { 832 | $.magnificPopup.defaults[name] = module.options; 833 | } 834 | $.extend(this.proto, module.proto); 835 | this.modules.push(name); 836 | }, 837 | 838 | defaults: { 839 | 840 | // Info about options is in docs: 841 | // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options 842 | 843 | disableOn: 0, 844 | 845 | key: null, 846 | 847 | midClick: false, 848 | 849 | mainClass: '', 850 | 851 | preloader: true, 852 | 853 | focus: '', // CSS selector of input to focus after popup is opened 854 | 855 | closeOnContentClick: false, 856 | 857 | closeOnBgClick: true, 858 | 859 | closeBtnInside: true, 860 | 861 | showCloseBtn: true, 862 | 863 | enableEscapeKey: true, 864 | 865 | modal: false, 866 | 867 | alignTop: false, 868 | 869 | removalDelay: 0, 870 | 871 | prependTo: null, 872 | 873 | fixedContentPos: 'auto', 874 | 875 | fixedBgPos: 'auto', 876 | 877 | overflowY: 'auto', 878 | 879 | closeMarkup: '', 880 | 881 | tClose: 'Close (Esc)', 882 | 883 | tLoading: 'Loading...', 884 | 885 | autoFocusLast: true 886 | 887 | } 888 | }; 889 | 890 | 891 | 892 | $.fn.magnificPopup = function(options) { 893 | _checkInstance(); 894 | 895 | var jqEl = $(this); 896 | 897 | // We call some API method of first param is a string 898 | if (typeof options === "string" ) { 899 | 900 | if(options === 'open') { 901 | var items, 902 | itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup, 903 | index = parseInt(arguments[1], 10) || 0; 904 | 905 | if(itemOpts.items) { 906 | items = itemOpts.items[index]; 907 | } else { 908 | items = jqEl; 909 | if(itemOpts.delegate) { 910 | items = items.find(itemOpts.delegate); 911 | } 912 | items = items.eq( index ); 913 | } 914 | mfp._openClick({mfpEl:items}, jqEl, itemOpts); 915 | } else { 916 | if(mfp.isOpen) 917 | mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1)); 918 | } 919 | 920 | } else { 921 | // clone options obj 922 | options = $.extend(true, {}, options); 923 | 924 | /* 925 | * As Zepto doesn't support .data() method for objects 926 | * and it works only in normal browsers 927 | * we assign "options" object directly to the DOM element. FTW! 928 | */ 929 | if(_isJQ) { 930 | jqEl.data('magnificPopup', options); 931 | } else { 932 | jqEl[0].magnificPopup = options; 933 | } 934 | 935 | mfp.addGroup(jqEl, options); 936 | 937 | } 938 | return jqEl; 939 | }; --------------------------------------------------------------------------------