diff options
| author | 8cy <[email protected]> | 2020-05-06 12:05:56 -0700 |
|---|---|---|
| committer | 8cy <[email protected]> | 2020-05-06 12:05:56 -0700 |
| commit | 1fd3e91928bf41ac72cd56b260fb6a6f42d47143 (patch) | |
| tree | cb921eb41eaf359c2551fb4f303831c56db80cab /public/js/plugins/presentation-page | |
| download | slog-1fd3e91928bf41ac72cd56b260fb6a6f42d47143.tar.xz slog-1fd3e91928bf41ac72cd56b260fb6a6f42d47143.zip | |
A New Beginning
Diffstat (limited to 'public/js/plugins/presentation-page')
| -rw-r--r-- | public/js/plugins/presentation-page/jquery.sharrre.js | 619 | ||||
| -rw-r--r-- | public/js/plugins/presentation-page/rellax.min.js | 5 |
2 files changed, 624 insertions, 0 deletions
diff --git a/public/js/plugins/presentation-page/jquery.sharrre.js b/public/js/plugins/presentation-page/jquery.sharrre.js new file mode 100644 index 0000000..6a2f8a5 --- /dev/null +++ b/public/js/plugins/presentation-page/jquery.sharrre.js @@ -0,0 +1,619 @@ +/*! + * Sharrre.com - Make your sharing widget! + * Version: beta 1.3.5 + * Author: Julien Hany + * License: MIT http://en.wikipedia.org/wiki/MIT_License or GPLv2 http://en.wikipedia.org/wiki/GNU_General_Public_License + */ + +; +(function($, window, document, undefined) { + + /* Defaults + ================================================== */ + var pluginName = 'sharrre', + defaults = { + className: 'sharrre', + share: { + googlePlus: false, + facebook: false, + twitter: false, + digg: false, + delicious: false, + stumbleupon: false, + linkedin: false, + pinterest: false + }, + shareTotal: 0, + template: '', + title: '', + url: document.location.href, + text: document.title, + urlCurl: 'sharrre.php', //PHP script for google plus... + count: {}, //counter by social network + total: 0, //total of sharing + shorterTotal: true, //show total by k or M when number is to big + enableHover: true, //disable if you want to personalize hover event with callback + enableCounter: true, //disable if you just want use buttons + enableTracking: false, //tracking with google analitycs + hover: function() {}, //personalize hover event with this callback function + hide: function() {}, //personalize hide event with this callback function + click: function() {}, //personalize click event with this callback function + render: function() {}, //personalize render event with this callback function + buttons: { //settings for buttons + googlePlus: { //http://www.google.com/webmasters/+1/button/ + url: '', //if you need to personnalize button url + urlCount: false, //if you want to use personnalize button url on global counter + size: 'medium', + lang: 'en-US', + annotation: '' + }, + facebook: { //http://developers.facebook.com/docs/reference/plugins/like/ + url: '', //if you need to personalize url button + urlCount: false, //if you want to use personnalize button url on global counter + action: 'like', + layout: 'button_count', + width: '', + send: 'false', + faces: 'false', + colorscheme: '', + font: '', + lang: 'en_US' + }, + twitter: { //http://twitter.com/about/resources/tweetbutton + url: '', //if you need to personalize url button + urlCount: false, //if you want to use personnalize button url on global counter + count: 'horizontal', + hashtags: '', + via: '', + related: '', + lang: 'en' + }, + digg: { //http://about.digg.com/downloads/button/smart + url: '', //if you need to personalize url button + urlCount: false, //if you want to use personnalize button url on global counter + type: 'DiggCompact' + }, + delicious: { + url: '', //if you need to personalize url button + urlCount: false, //if you want to use personnalize button url on global counter + size: 'medium' //medium or tall + }, + stumbleupon: { //http://www.stumbleupon.com/badges/ + url: '', //if you need to personalize url button + urlCount: false, //if you want to use personnalize button url on global counter + layout: '1' + }, + linkedin: { //http://developer.linkedin.com/plugins/share-button + url: '', //if you need to personalize url button + urlCount: false, //if you want to use personnalize button url on global counter + counter: '' + }, + pinterest: { //http://pinterest.com/about/goodies/ + url: '', //if you need to personalize url button + media: '', + description: '', + layout: 'horizontal' + } + } + }, + /* Json URL to get count number + ================================================== */ + urlJson = { + googlePlus: "", + + //new FQL method by Sire + facebook: "https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,%20share_count,%20like_count,%20comment_count,%20total_count,commentsbox_count,%20comments_fbid,%20click_count%20FROM%20link_stat%20WHERE%20url=%27{url}%27&callback=?", + //old method facebook: "http://graph.facebook.com/?id={url}&callback=?", + //facebook : "http://api.ak.facebook.com/restserver.php?v=1.0&method=links.getStats&urls={url}&format=json" + + twitter: "http://cdn.api.twitter.com/1/urls/count.json?url={url}&callback=?", + digg: "http://services.digg.com/2.0/story.getInfo?links={url}&type=javascript&callback=?", + delicious: 'http://feeds.delicious.com/v2/json/urlinfo/data?url={url}&callback=?', + //stumbleupon: "http://www.stumbleupon.com/services/1.01/badge.getinfo?url={url}&format=jsonp&callback=?", + stumbleupon: "", + linkedin: "http://www.linkedin.com/countserv/count/share?format=jsonp&url={url}&callback=?", + pinterest: "http://api.pinterest.com/v1/urls/count.json?url={url}&callback=?" + }, + /* Load share buttons asynchronously + ================================================== */ + loadButton = { + googlePlus: function(self) { + var sett = self.options.buttons.googlePlus; + //$(self.element).find('.buttons').append('<div class="button googleplus"><g:plusone size="'+self.options.buttons.googlePlus.size+'" href="'+self.options.url+'"></g:plusone></div>'); + $(self.element).find('.buttons').append('<div class="button googleplus"><div class="g-plusone" data-size="' + sett.size + '" data-href="' + (sett.url !== '' ? sett.url : self.options.url) + '" data-annotation="' + sett.annotation + '"></div></div>'); + window.___gcfg = { + lang: self.options.buttons.googlePlus.lang + }; + var loading = 0; + if (typeof gapi === 'undefined' && loading == 0) { + loading = 1; + (function() { + var po = document.createElement('script'); + po.type = 'text/javascript'; + po.async = true; + po.src = '//apis.google.com/js/plusone.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(po, s); + })(); + } else { + gapi.plusone.go(); + } + }, + facebook: function(self) { + var sett = self.options.buttons.facebook; + $(self.element).find('.buttons').append('<div class="button facebook"><div id="fb-root"></div><div class="fb-like" data-href="' + (sett.url !== '' ? sett.url : self.options.url) + '" data-send="' + sett.send + '" data-layout="' + sett.layout + '" data-width="' + sett.width + '" data-show-faces="' + sett.faces + '" data-action="' + sett.action + '" data-colorscheme="' + sett.colorscheme + '" data-font="' + sett.font + '" data-via="' + sett.via + '"></div></div>'); + var loading = 0; + if (typeof FB === 'undefined' && loading == 0) { + loading = 1; + (function(d, s, id) { + var js, fjs = d.getElementsByTagName(s)[0]; + if (d.getElementById(id)) { + return; + } + js = d.createElement(s); + js.id = id; + js.src = '//connect.facebook.net/' + sett.lang + '/all.js#xfbml=1'; + fjs.parentNode.insertBefore(js, fjs); + }(document, 'script', 'facebook-jssdk')); + } else { + FB.XFBML.parse(); + } + }, + twitter: function(self) { + var sett = self.options.buttons.twitter; + $(self.element).find('.buttons').append('<div class="button twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="' + (sett.url !== '' ? sett.url : self.options.url) + '" data-count="' + sett.count + '" data-text="' + self.options.text + '" data-via="' + sett.via + '" data-hashtags="' + sett.hashtags + '" data-related="' + sett.related + '" data-lang="' + sett.lang + '">Tweet</a></div>'); + var loading = 0; + if (typeof twttr === 'undefined' && loading == 0) { + loading = 1; + (function() { + var twitterScriptTag = document.createElement('script'); + twitterScriptTag.type = 'text/javascript'; + twitterScriptTag.async = true; + twitterScriptTag.src = '//platform.twitter.com/widgets.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(twitterScriptTag, s); + })(); + } else { + $.ajax({ + url: '//platform.twitter.com/widgets.js', + dataType: 'script', + cache: true + }); //http://stackoverflow.com/q/6536108 + } + }, + digg: function(self) { + var sett = self.options.buttons.digg; + $(self.element).find('.buttons').append('<div class="button digg"><a class="DiggThisButton ' + sett.type + '" rel="nofollow external" href="http://digg.com/submit?url=' + encodeURIComponent((sett.url !== '' ? sett.url : self.options.url)) + '"></a></div>'); + var loading = 0; + if (typeof __DBW === 'undefined' && loading == 0) { + loading = 1; + (function() { + var s = document.createElement('SCRIPT'), + s1 = document.getElementsByTagName('SCRIPT')[0]; + s.type = 'text/javascript'; + s.async = true; + s.src = '//widgets.digg.com/buttons.js'; + s1.parentNode.insertBefore(s, s1); + })(); + } + }, + delicious: function(self) { + if (self.options.buttons.delicious.size == 'tall') { //tall + var css = 'width:50px;', + cssCount = 'height:35px;width:50px;font-size:15px;line-height:35px;', + cssShare = 'height:18px;line-height:18px;margin-top:3px;'; + } else { //medium + var css = 'width:93px;', + cssCount = 'float:right;padding:0 3px;height:20px;width:26px;line-height:20px;', + cssShare = 'float:left;height:20px;line-height:20px;'; + } + var count = self.shorterTotal(self.options.count.delicious); + if (typeof count === "undefined") { + count = 0; + } + $(self.element).find('.buttons').append( + '<div class="button delicious"><div style="' + css + 'font:12px Arial,Helvetica,sans-serif;cursor:pointer;color:#666666;display:inline-block;float:none;height:20px;line-height:normal;margin:0;padding:0;text-indent:0;vertical-align:baseline;">' + + '<div style="' + cssCount + 'background-color:#fff;margin-bottom:5px;overflow:hidden;text-align:center;border:1px solid #ccc;border-radius:3px;">' + count + '</div>' + + '<div style="' + cssShare + 'display:block;padding:0;text-align:center;text-decoration:none;width:50px;background-color:#7EACEE;border:1px solid #40679C;border-radius:3px;color:#fff;">' + + '<img src="http://www.delicious.com/static/img/delicious.small.gif" height="10" width="10" alt="Delicious" /> Add</div></div></div>'); + + $(self.element).find('.delicious').on('click', function() { + self.openPopup('delicious'); + }); + }, + stumbleupon: function(self) { + var sett = self.options.buttons.stumbleupon; + $(self.element).find('.buttons').append('<div class="button stumbleupon"><su:badge layout="' + sett.layout + '" location="' + (sett.url !== '' ? sett.url : self.options.url) + '"></su:badge></div>'); + var loading = 0; + if (typeof STMBLPN === 'undefined' && loading == 0) { + loading = 1; + (function() { + var li = document.createElement('script'); + li.type = 'text/javascript'; + li.async = true; + li.src = '//platform.stumbleupon.com/1/widgets.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(li, s); + })(); + s = window.setTimeout(function() { + if (typeof STMBLPN !== 'undefined') { + STMBLPN.processWidgets(); + clearInterval(s); + } + }, 500); + } else { + STMBLPN.processWidgets(); + } + }, + linkedin: function(self) { + var sett = self.options.buttons.linkedin; + $(self.element).find('.buttons').append('<div class="button linkedin"><script type="in/share" data-url="' + (sett.url !== '' ? sett.url : self.options.url) + '" data-counter="' + sett.counter + '"></script></div>'); + var loading = 0; + if (typeof window.IN === 'undefined' && loading == 0) { + loading = 1; + (function() { + var li = document.createElement('script'); + li.type = 'text/javascript'; + li.async = true; + li.src = '//platform.linkedin.com/in.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(li, s); + })(); + } else { + window.IN.init(); + } + }, + pinterest: function(self) { + var sett = self.options.buttons.pinterest; + $(self.element).find('.buttons').append('<div class="button pinterest"><a href="http://pinterest.com/pin/create/button/?url=' + (sett.url !== '' ? sett.url : self.options.url) + '&media=' + sett.media + '&description=' + sett.description + '" class="pin-it-button" count-layout="' + sett.layout + '">Pin It</a></div>'); + + (function() { + var li = document.createElement('script'); + li.type = 'text/javascript'; + li.async = true; + li.src = '//assets.pinterest.com/js/pinit.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(li, s); + })(); + } + }, + /* Tracking for Google Analytics + ================================================== */ + tracking = { + googlePlus: function() {}, + facebook: function() { + //console.log('facebook'); + fb = window.setInterval(function() { + if (typeof FB !== 'undefined') { + FB.Event.subscribe('edge.create', function(targetUrl) { + _gaq.push(['_trackSocial', 'facebook', 'like', targetUrl]); + }); + FB.Event.subscribe('edge.remove', function(targetUrl) { + _gaq.push(['_trackSocial', 'facebook', 'unlike', targetUrl]); + }); + FB.Event.subscribe('message.send', function(targetUrl) { + _gaq.push(['_trackSocial', 'facebook', 'send', targetUrl]); + }); + //console.log('ok'); + clearInterval(fb); + } + }, 1000); + }, + twitter: function() { + //console.log('twitter'); + tw = window.setInterval(function() { + if (typeof twttr !== 'undefined') { + twttr.events.bind('tweet', function(event) { + if (event) { + _gaq.push(['_trackSocial', 'twitter', 'tweet']); + } + }); + //console.log('ok'); + clearInterval(tw); + } + }, 1000); + }, + digg: function() { + //if somenone find a solution, mail me ! + /*$(this.element).find('.digg').on('click', function(){ + _gaq.push(['_trackSocial', 'digg', 'add']); + });*/ + }, + delicious: function() {}, + stumbleupon: function() {}, + linkedin: function() { + function LinkedInShare() { + _gaq.push(['_trackSocial', 'linkedin', 'share']); + } + }, + pinterest: function() { + //if somenone find a solution, mail me ! + } + }, + /* Popup for each social network + ================================================== */ + popup = { + googlePlus: function(opt) { + window.open("https://plus.google.com/share?hl=" + opt.buttons.googlePlus.lang + "&url=" + encodeURIComponent((opt.buttons.googlePlus.url !== '' ? opt.buttons.googlePlus.url : opt.url)), "", "toolbar=0, status=0, width=900, height=500"); + }, + facebook: function(opt) { + window.open("http://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent((opt.buttons.facebook.url !== '' ? opt.buttons.facebook.url : opt.url)) + "&t=" + opt.text + "", "", "toolbar=0, status=0, width=900, height=500"); + }, + twitter: function(opt) { + window.open("https://twitter.com/intent/tweet?text=" + encodeURIComponent(opt.text) + "&url=" + encodeURIComponent((opt.buttons.twitter.url !== '' ? opt.buttons.twitter.url : opt.url)) + (opt.buttons.twitter.via !== '' ? '&via=' + opt.buttons.twitter.via : ''), "", "toolbar=0, status=0, width=650, height=360"); + }, + digg: function(opt) { + window.open("http://digg.com/tools/diggthis/submit?url=" + encodeURIComponent((opt.buttons.digg.url !== '' ? opt.buttons.digg.url : opt.url)) + "&title=" + opt.text + "&related=true&style=true", "", "toolbar=0, status=0, width=650, height=360"); + }, + delicious: function(opt) { + window.open('http://www.delicious.com/save?v=5&noui&jump=close&url=' + encodeURIComponent((opt.buttons.delicious.url !== '' ? opt.buttons.delicious.url : opt.url)) + '&title=' + opt.text, 'delicious', 'toolbar=no,width=550,height=550'); + }, + stumbleupon: function(opt) { + window.open('http://www.stumbleupon.com/badge/?url=' + encodeURIComponent((opt.buttons.stumbleupon.url !== '' ? opt.buttons.stumbleupon.url : opt.url)), 'stumbleupon', 'toolbar=no,width=550,height=550'); + }, + linkedin: function(opt) { + window.open('https://www.linkedin.com/cws/share?url=' + encodeURIComponent((opt.buttons.linkedin.url !== '' ? opt.buttons.linkedin.url : opt.url)) + '&token=&isFramed=true', 'linkedin', 'toolbar=no,width=550,height=550'); + }, + pinterest: function(opt) { + window.open('http://pinterest.com/pin/create/button/?url=' + encodeURIComponent((opt.buttons.pinterest.url !== '' ? opt.buttons.pinterest.url : opt.url)) + '&media=' + encodeURIComponent(opt.buttons.pinterest.media) + '&description=' + opt.buttons.pinterest.description, 'pinterest', 'toolbar=no,width=700,height=300'); + } + }; + + /* Plugin constructor + ================================================== */ + function Plugin(element, options) { + this.element = element; + + this.options = $.extend(true, {}, defaults, options); + this.options.share = options.share; //simple solution to allow order of buttons + + this._defaults = defaults; + this._name = pluginName; + + this.init(); + }; + + /* Initialization method + ================================================== */ + Plugin.prototype.init = function() { + var self = this; + if (this.options.urlCurl !== '') { + urlJson.googlePlus = this.options.urlCurl + '?url={url}&type=googlePlus'; // PHP script for GooglePlus... + urlJson.stumbleupon = this.options.urlCurl + '?url={url}&type=stumbleupon'; // PHP script for Stumbleupon... + } + $(this.element).addClass(this.options.className); //add class + + //HTML5 Custom data + if (typeof $(this.element).data('title') !== 'undefined') { + this.options.title = $(this.element).attr('data-title'); + } + if (typeof $(this.element).data('url') !== 'undefined') { + this.options.url = $(this.element).data('url'); + } + if (typeof $(this.element).data('text') !== 'undefined') { + this.options.text = $(this.element).data('text'); + } + + //how many social website have been selected + $.each(this.options.share, function(name, val) { + if (val === true) { + self.options.shareTotal++; + } + }); + + if (self.options.enableCounter === true) { //if for some reason you don't need counter + //get count of social share that have been selected + $.each(this.options.share, function(name, val) { + if (val === true) { + //self.getSocialJson(name); + try { + self.getSocialJson(name); + } catch (e) {} + } + }); + } else if (self.options.template !== '') { //for personalized button (with template) + this.options.render(this, this.options); + } else { // if you want to use official button like example 3 or 5 + this.loadButtons(); + } + + //add hover event + $(this.element).hover(function() { + //load social button if enable and 1 time + if ($(this).find('.buttons').length === 0 && self.options.enableHover === true) { + self.loadButtons(); + } + self.options.hover(self, self.options); + }, function() { + self.options.hide(self, self.options); + }); + + //click event + $(this.element).click(function() { + self.options.click(self, self.options); + return false; + }); + }; + + /* loadButtons methode + ================================================== */ + Plugin.prototype.loadButtons = function() { + var self = this; + $(this.element).append('<div class="buttons"></div>'); + $.each(self.options.share, function(name, val) { + if (val == true) { + loadButton[name](self); + if (self.options.enableTracking === true) { //add tracking + tracking[name](); + } + } + }); + }; + + /* getSocialJson methode + ================================================== */ + Plugin.prototype.getSocialJson = function(name) { + var self = this, + count = 0, + url = urlJson[name].replace('{url}', encodeURIComponent(this.options.url)); + if (this.options.buttons[name].urlCount === true && this.options.buttons[name].url !== '') { + url = urlJson[name].replace('{url}', this.options.buttons[name].url); + } + //console.log('name : ' + name + ' - url : '+url); //debug + if (url != '' && self.options.urlCurl !== '') { //urlCurl = '' if you don't want to used PHP script but used social button + $.getJSON(url, function(json) { + if (typeof json.count !== "undefined") { //GooglePlus, Stumbleupon, Twitter, Pinterest and Digg + var temp = json.count + ''; + temp = temp.replace('\u00c2\u00a0', ''); //remove google plus special chars + count += parseInt(temp, 10); + } + //get the FB total count (shares, likes and more) + else if (json.data && json.data.length > 0 && typeof json.data[0].total_count !== "undefined") { //Facebook total count + count += parseInt(json.data[0].total_count, 10); + } else if (typeof json[0] !== "undefined") { //Delicious + count += parseInt(json[0].total_posts, 10); + } else if (typeof json[0] !== "undefined") { //Stumbleupon + } + self.options.count[name] = count; + self.options.total += count; + self.renderer(); + self.rendererPerso(); + //console.log(json); //debug + }) + .error(function() { + self.options.count[name] = 0; + self.rendererPerso(); + }); + } else { + self.renderer(); + self.options.count[name] = 0; + self.rendererPerso(); + } + }; + + /* launch render methode + ================================================== */ + Plugin.prototype.rendererPerso = function() { + //check if this is the last social website to launch render + var shareCount = 0; + for (e in this.options.count) { + shareCount++; + } + if (shareCount === this.options.shareTotal) { + this.options.render(this, this.options); + } + }; + + /* render methode + ================================================== */ + Plugin.prototype.renderer = function() { + var total = this.options.total, + template = this.options.template; + if (this.options.shorterTotal === true) { //format number like 1.2k or 5M + total = this.shorterTotal(total); + } + + if (template !== '') { //if there is a template + template = template.replace('{total}', total); + $(this.element).html(template); + } else { //template by defaults + $(this.element).html( + '<div class="box"><a class="count" href="#">' + total + '</a>' + + (this.options.title !== '' ? '<a class="share" href="#">' + this.options.title + '</a>' : '') + + '</div>' + ); + } + }; + + /* format total numbers like 1.2k or 5M + ================================================== */ + Plugin.prototype.shorterTotal = function(num) { + if (num >= 1e6) { + num = (num / 1e6).toFixed(2) + "M" + } else if (num >= 1e3) { + num = (num / 1e3).toFixed(1) + "k" + } + return num; + }; + + /* Methode for open popup + ================================================== */ + Plugin.prototype.openPopup = function(site) { + popup[site](this.options); //open + if (this.options.enableTracking === true) { //tracking! + var tracking = { + googlePlus: { + site: 'Google', + action: '+1' + }, + facebook: { + site: 'facebook', + action: 'like' + }, + twitter: { + site: 'twitter', + action: 'tweet' + }, + digg: { + site: 'digg', + action: 'add' + }, + delicious: { + site: 'delicious', + action: 'add' + }, + stumbleupon: { + site: 'stumbleupon', + action: 'add' + }, + linkedin: { + site: 'linkedin', + action: 'share' + }, + pinterest: { + site: 'pinterest', + action: 'pin' + } + }; + _gaq.push(['_trackSocial', tracking[site].site, tracking[site].action]); + } + }; + + /* Methode for add +1 to a counter + ================================================== */ + Plugin.prototype.simulateClick = function() { + var html = $(this.element).html(); + $(this.element).html(html.replace(this.options.total, this.options.total + 1)); + }; + + /* Methode for add +1 to a counter + ================================================== */ + Plugin.prototype.update = function(url, text) { + if (url !== '') { + this.options.url = url; + } + if (text !== '') { + this.options.text = text; + } + }; + + /* A really lightweight plugin wrapper around the constructor, preventing against multiple instantiations + ================================================== */ + $.fn[pluginName] = function(options) { + var args = arguments; + if (options === undefined || typeof options === 'object') { + return this.each(function() { + if (!$.data(this, 'plugin_' + pluginName)) { + $.data(this, 'plugin_' + pluginName, new Plugin(this, options)); + } + }); + } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') { + return this.each(function() { + var instance = $.data(this, 'plugin_' + pluginName); + if (instance instanceof Plugin && typeof instance[options] === 'function') { + instance[options].apply(instance, Array.prototype.slice.call(args, 1)); + } + }); + } + }; +})(jQuery, window, document);
\ No newline at end of file diff --git a/public/js/plugins/presentation-page/rellax.min.js b/public/js/plugins/presentation-page/rellax.min.js new file mode 100644 index 0000000..8991198 --- /dev/null +++ b/public/js/plugins/presentation-page/rellax.min.js @@ -0,0 +1,5 @@ +(function(h,f){"function"===typeof define&&define.amd?define([],f):"object"===typeof module&&module.exports?module.exports=f():h.Rellax=f()})(this,function(){var h=function(f,l){var b=Object.create(h.prototype),g=0,k=0,c=[],p=!1,u=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||function(a){setTimeout(a,1E3/60)},m=function(a,b,d){return a<=b?b:a>=d?d:a};b.options={speed:-2,center:!1};l&& +Object.keys(l).forEach(function(a){b.options[a]=l[a]});b.options.speed=m(b.options.speed,-10,10);f||(f=".rellax");var q=document.querySelectorAll(f);if(0<q.length)b.elems=q;else throw Error("The elements you're trying to select don't exist.");var v=function(a){var e=a.getAttribute("data-rellax-percentage"),d=a.getAttribute("data-rellax-speed"),c=e||b.options.center?window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop:0,f=c+a.getBoundingClientRect().top,h=a.clientHeight|| +a.offsetHeight||a.scrollHeight,g=e?e:(c-f+k)/(h+k);b.options.center&&(g=.5);c=d?m(d,-10,10):b.options.speed;if(e||b.options.center)c=m(d||b.options.speed,-5,5);e=Math.round(100*c*(1-g));a=a.style.cssText;d="";0<=a.indexOf("transform")&&(d=a.indexOf("transform"),d=a.slice(d),d=(g=d.indexOf(";"))?" "+d.slice(11,g).replace(/\s/g,""):" "+d.slice(11).replace(/\s/g,""));return{base:e,top:f,height:h,speed:c,style:a,transform:d}},r=function(){var a=g;g=void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement|| +document.body.parentNode||document.body).scrollTop;return a!=g?!0:!1},t=function(){r()&&!1===p&&n();u(t)},n=function(){for(var a=0;a<b.elems.length;a++){var e=" translate3d(0,"+(Math.round(100*c[a].speed*(1-(g-c[a].top+k)/(c[a].height+k)))-c[a].base)+"px,0)"+c[a].transform;b.elems[a].style.cssText=c[a].style+"-webkit-transform:"+e+";-moz-transform:"+e+";transform:"+e+";"}};b.destroy=function(){for(var a=0;a<b.elems.length;a++)b.elems[a].style.cssText=c[a].style;p=!0};(function(){k=window.innerHeight; +r();for(var a=0;a<b.elems.length;a++){var e=v(b.elems[a]);c.push(e)}window.addEventListener("resize",function(){n()});t();n()})();return b};return h}); |