Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Generated by CoffeeScript 1.6.2
- /*
- jQuery Waypoints - v2.0.3
- Copyright (c) 2011-2013 Caleb Troughton
- Dual licensed under the MIT license and GPL license.
- https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt
- */
- (function() {
- var t = [].indexOf || function(t) {
- for (var e = 0, n = this.length; e < n; e++) {
- if (e in this && this[e] === t) return e
- }
- return -1
- },
- e = [].slice;
- (function(t, e) {
- if (typeof define === "function" && define.amd) {
- return define("waypoints", ["jquery"], function(n) {
- return e(n, t)
- })
- } else {
- return e(t.jQuery, t)
- }
- })(this, function(n, r) {
- var i, o, l, s, f, u, a, c, h, d, p, y, v, w, g, m;
- i = n(r);
- c = t.call(r, "ontouchstart") >= 0;
- s = {
- horizontal: {},
- vertical: {}
- };
- f = 1;
- a = {};
- u = "waypoints-context-id";
- p = "resize.waypoints";
- y = "scroll.waypoints";
- v = 1;
- w = "waypoints-waypoint-ids";
- g = "waypoint";
- m = "waypoints";
- o = function() {
- function t(t) {
- var e = this;
- this.$element = t;
- this.element = t[0];
- this.didResize = false;
- this.didScroll = false;
- this.id = "context" + f++;
- this.oldScroll = {
- x: t.scrollLeft(),
- y: t.scrollTop()
- };
- this.waypoints = {
- horizontal: {},
- vertical: {}
- };
- t.data(u, this.id);
- a[this.id] = this;
- t.bind(y, function() {
- var t;
- if (!(e.didScroll || c)) {
- e.didScroll = true;
- t = function() {
- e.doScroll();
- return e.didScroll = false
- };
- return r.setTimeout(t, n[m].settings.scrollThrottle)
- }
- });
- t.bind(p, function() {
- var t;
- if (!e.didResize) {
- e.didResize = true;
- t = function() {
- n[m]("refresh");
- return e.didResize = false
- };
- return r.setTimeout(t, n[m].settings.resizeThrottle)
- }
- })
- }
- t.prototype.doScroll = function() {
- var t, e = this;
- t = {
- horizontal: {
- newScroll: this.$element.scrollLeft(),
- oldScroll: this.oldScroll.x,
- forward: "right",
- backward: "left"
- },
- vertical: {
- newScroll: this.$element.scrollTop(),
- oldScroll: this.oldScroll.y,
- forward: "down",
- backward: "up"
- }
- };
- if (c && (!t.vertical.oldScroll || !t.vertical.newScroll)) {
- n[m]("refresh")
- }
- n.each(t, function(t, r) {
- var i, o, l;
- l = [];
- o = r.newScroll > r.oldScroll;
- i = o ? r.forward : r.backward;
- n.each(e.waypoints[t], function(t, e) {
- var n, i;
- if (r.oldScroll < (n = e.offset) && n <= r.newScroll) {
- return l.push(e)
- } else if (r.newScroll < (i = e.offset) && i <= r.oldScroll) {
- return l.push(e)
- }
- });
- l.sort(function(t, e) {
- return t.offset - e.offset
- });
- if (!o) {
- l.reverse()
- }
- return n.each(l, function(t, e) {
- if (e.options.continuous || t === l.length - 1) {
- return e.trigger([i])
- }
- })
- });
- return this.oldScroll = {
- x: t.horizontal.newScroll,
- y: t.vertical.newScroll
- }
- };
- t.prototype.refresh = function() {
- var t, e, r, i = this;
- r = n.isWindow(this.element);
- e = this.$element.offset();
- this.doScroll();
- t = {
- horizontal: {
- contextOffset: r ? 0 : e.left,
- contextScroll: r ? 0 : this.oldScroll.x,
- contextDimension: this.$element.width(),
- oldScroll: this.oldScroll.x,
- forward: "right",
- backward: "left",
- offsetProp: "left"
- },
- vertical: {
- contextOffset: r ? 0 : e.top,
- contextScroll: r ? 0 : this.oldScroll.y,
- contextDimension: r ? n[m]("viewportHeight") : this.$element.height(),
- oldScroll: this.oldScroll.y,
- forward: "down",
- backward: "up",
- offsetProp: "top"
- }
- };
- return n.each(t, function(t, e) {
- return n.each(i.waypoints[t], function(t, r) {
- var i, o, l, s, f;
- i = r.options.offset;
- l = r.offset;
- o = n.isWindow(r.element) ? 0 : r.$element.offset()[e.offsetProp];
- if (n.isFunction(i)) {
- i = i.apply(r.element)
- } else if (typeof i === "string") {
- i = parseFloat(i);
- if (r.options.offset.indexOf("%") > -1) {
- i = Math.ceil(e.contextDimension * i / 100)
- }
- }
- r.offset = o - e.contextOffset + e.contextScroll - i;
- if (r.options.onlyOnScroll && l != null || !r.enabled) {
- return
- }
- if (l !== null && l < (s = e.oldScroll) && s <= r.offset) {
- return r.trigger([e.backward])
- } else if (l !== null && l > (f = e.oldScroll) && f >= r.offset) {
- return r.trigger([e.forward])
- } else if (l === null && e.oldScroll >= r.offset) {
- return r.trigger([e.forward])
- }
- })
- })
- };
- t.prototype.checkEmpty = function() {
- if (n.isEmptyObject(this.waypoints.horizontal) && n.isEmptyObject(this.waypoints.vertical)) {
- this.$element.unbind([p, y].join(" "));
- return delete a[this.id]
- }
- };
- return t
- }();
- l = function() {
- function t(t, e, r) {
- var i, o;
- r = n.extend({}, n.fn[g].defaults, r);
- if (r.offset === "bottom-in-view") {
- r.offset = function() {
- var t;
- t = n[m]("viewportHeight");
- if (!n.isWindow(e.element)) {
- t = e.$element.height()
- }
- return t - n(this).outerHeight()
- }
- }
- this.$element = t;
- this.element = t[0];
- this.axis = r.horizontal ? "horizontal" : "vertical";
- this.callback = r.handler;
- this.context = e;
- this.enabled = r.enabled;
- this.id = "waypoints" + v++;
- this.offset = null;
- this.options = r;
- e.waypoints[this.axis][this.id] = this;
- s[this.axis][this.id] = this;
- i = (o = t.data(w)) != null ? o : [];
- i.push(this.id);
- t.data(w, i)
- }
- t.prototype.trigger = function(t) {
- if (!this.enabled) {
- return
- }
- if (this.callback != null) {
- this.callback.apply(this.element, t)
- }
- if (this.options.triggerOnce) {
- return this.destroy()
- }
- };
- t.prototype.disable = function() {
- return this.enabled = false
- };
- t.prototype.enable = function() {
- this.context.refresh();
- return this.enabled = true
- };
- t.prototype.destroy = function() {
- delete s[this.axis][this.id];
- delete this.context.waypoints[this.axis][this.id];
- return this.context.checkEmpty()
- };
- t.getWaypointsByElement = function(t) {
- var e, r;
- r = n(t).data(w);
- if (!r) {
- return []
- }
- e = n.extend({}, s.horizontal, s.vertical);
- return n.map(r, function(t) {
- return e[t]
- })
- };
- return t
- }();
- d = {
- init: function(t, e) {
- var r;
- if (e == null) {
- e = {}
- }
- if ((r = e.handler) == null) {
- e.handler = t
- }
- this.each(function() {
- var t, r, i, s;
- t = n(this);
- i = (s = e.context) != null ? s : n.fn[g].defaults.context;
- if (!n.isWindow(i)) {
- i = t.closest(i)
- }
- i = n(i);
- r = a[i.data(u)];
- if (!r) {
- r = new o(i)
- }
- return new l(t, r, e)
- });
- n[m]("refresh");
- return this
- },
- disable: function() {
- return d._invoke(this, "disable")
- },
- enable: function() {
- return d._invoke(this, "enable")
- },
- destroy: function() {
- return d._invoke(this, "destroy")
- },
- prev: function(t, e) {
- return d._traverse.call(this, t, e, function(t, e, n) {
- if (e > 0) {
- return t.push(n[e - 1])
- }
- })
- },
- next: function(t, e) {
- return d._traverse.call(this, t, e, function(t, e, n) {
- if (e < n.length - 1) {
- return t.push(n[e + 1])
- }
- })
- },
- _traverse: function(t, e, i) {
- var o, l;
- if (t == null) {
- t = "vertical"
- }
- if (e == null) {
- e = r
- }
- l = h.aggregate(e);
- o = [];
- this.each(function() {
- var e;
- e = n.inArray(this, l[t]);
- return i(o, e, l[t])
- });
- return this.pushStack(o)
- },
- _invoke: function(t, e) {
- t.each(function() {
- var t;
- t = l.getWaypointsByElement(this);
- return n.each(t, function(t, n) {
- n[e]();
- return true
- })
- });
- return this
- }
- };
- n.fn[g] = function() {
- var t, r;
- r = arguments[0], t = 2 <= arguments.length ? e.call(arguments, 1) : [];
- if (d[r]) {
- return d[r].apply(this, t)
- } else if (n.isFunction(r)) {
- return d.init.apply(this, arguments)
- } else if (n.isPlainObject(r)) {
- return d.init.apply(this, [null, r])
- } else if (!r) {
- return n.error("jQuery Waypoints needs a callback function or handler option.")
- } else {
- return n.error("The " + r + " method does not exist in jQuery Waypoints.")
- }
- };
- n.fn[g].defaults = {
- context: r,
- continuous: true,
- enabled: true,
- horizontal: false,
- offset: 0,
- triggerOnce: false
- };
- h = {
- refresh: function() {
- return n.each(a, function(t, e) {
- return e.refresh()
- })
- },
- viewportHeight: function() {
- var t;
- return (t = r.innerHeight) != null ? t : i.height()
- },
- aggregate: function(t) {
- var e, r, i;
- e = s;
- if (t) {
- e = (i = a[n(t).data(u)]) != null ? i.waypoints : void 0
- }
- if (!e) {
- return []
- }
- r = {
- horizontal: [],
- vertical: []
- };
- n.each(r, function(t, i) {
- n.each(e[t], function(t, e) {
- return i.push(e)
- });
- i.sort(function(t, e) {
- return t.offset - e.offset
- });
- r[t] = n.map(i, function(t) {
- return t.element
- });
- return r[t] = n.unique(r[t])
- });
- return r
- },
- above: function(t) {
- if (t == null) {
- t = r
- }
- return h._filter(t, "vertical", function(t, e) {
- return e.offset <= t.oldScroll.y
- })
- },
- below: function(t) {
- if (t == null) {
- t = r
- }
- return h._filter(t, "vertical", function(t, e) {
- return e.offset > t.oldScroll.y
- })
- },
- left: function(t) {
- if (t == null) {
- t = r
- }
- return h._filter(t, "horizontal", function(t, e) {
- return e.offset <= t.oldScroll.x
- })
- },
- right: function(t) {
- if (t == null) {
- t = r
- }
- return h._filter(t, "horizontal", function(t, e) {
- return e.offset > t.oldScroll.x
- })
- },
- enable: function() {
- return h._invoke("enable")
- },
- disable: function() {
- return h._invoke("disable")
- },
- destroy: function() {
- return h._invoke("destroy")
- },
- extendFn: function(t, e) {
- return d[t] = e
- },
- _invoke: function(t) {
- var e;
- e = n.extend({}, s.vertical, s.horizontal);
- return n.each(e, function(e, n) {
- n[t]();
- return true
- })
- },
- _filter: function(t, e, r) {
- var i, o;
- i = a[n(t).data(u)];
- if (!i) {
- return []
- }
- o = [];
- n.each(i.waypoints[e], function(t, e) {
- if (r(i, e)) {
- return o.push(e)
- }
- });
- o.sort(function(t, e) {
- return t.offset - e.offset
- });
- return n.map(o, function(t) {
- return t.element
- })
- }
- };
- n[m] = function() {
- var t, n;
- n = arguments[0], t = 2 <= arguments.length ? e.call(arguments, 1) : [];
- if (h[n]) {
- return h[n].apply(null, t)
- } else {
- return h.aggregate.call(null, n)
- }
- };
- n[m].settings = {
- resizeThrottle: 100,
- scrollThrottle: 30
- };
- return i.load(function() {
- return n[m]("refresh")
- })
- })
- }).call(this);
Add Comment
Please, Sign In to add comment