waypoints_rails 3.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +15 -6
- data/lib/waypoints_rails/version.rb +1 -1
- data/vendor/assets/javascripts/{jquery.waypoints.js → waypoints/jquery.waypoints.js} +64 -22
- data/vendor/assets/javascripts/waypoints/jquery.waypoints.min.js +7 -0
- data/vendor/assets/javascripts/waypoints/noframework.waypoints.js +758 -0
- data/vendor/assets/javascripts/waypoints/noframework.waypoints.min.js +7 -0
- data/vendor/assets/javascripts/{infinite.js → waypoints/shortcuts/infinite.js} +28 -25
- data/vendor/assets/javascripts/waypoints/shortcuts/infinite.min.js +7 -0
- data/vendor/assets/javascripts/{inview.js → waypoints/shortcuts/inview.js} +21 -4
- data/vendor/assets/javascripts/waypoints/shortcuts/inview.min.js +7 -0
- data/vendor/assets/javascripts/{sticky.js → waypoints/shortcuts/sticky.js} +11 -6
- data/vendor/assets/javascripts/waypoints/shortcuts/sticky.min.js +7 -0
- data/vendor/assets/javascripts/waypoints/waypoints.debug.js +46 -0
- data/vendor/assets/javascripts/waypoints/zepto.waypoints.js +705 -0
- data/vendor/assets/javascripts/waypoints/zepto.waypoints.min.js +7 -0
- metadata +23 -14
@@ -0,0 +1,7 @@
|
|
1
|
+
/*!
|
2
|
+
Waypoints - 4.0.1
|
3
|
+
Copyright © 2011-2016 Caleb Troughton
|
4
|
+
Licensed under the MIT license.
|
5
|
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
6
|
+
*/
|
7
|
+
!function(){"use strict";function t(n){if(!n)throw new Error("No options passed to Waypoint constructor");if(!n.element)throw new Error("No element option passed to Waypoint constructor");if(!n.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,n),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=n.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var n in i)e.push(i[n]);for(var o=0,r=e.length;r>o;o++)e[o][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.Context.refreshAll();for(var e in i)i[e].enabled=!0;return this},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=o.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,n[t.waypointContextKey]=this,i+=1,o.windowContext||(o.windowContext=!0,o.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,n={},o=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete n[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,o.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||o.isTouch)&&(e.didScroll=!0,o.requestAnimationFrame(t))})},e.prototype.handleResize=function(){o.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var n=e[i],o=n.newScroll>n.oldScroll,r=o?n.forward:n.backward;for(var s in this.waypoints[i]){var l=this.waypoints[i][s];if(null!==l.triggerPoint){var a=n.oldScroll<l.triggerPoint,h=n.newScroll>=l.triggerPoint,p=a&&h,u=!a&&!h;(p||u)&&(l.queueTrigger(r),t[l.group.id]=l.group)}}}for(var d in t)t[d].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?o.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?o.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var n=0,o=t.length;o>n;n++)t[n].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),n={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var l in this.waypoints[r]){var a,h,p,u,d,f=this.waypoints[r][l],c=f.options.offset,w=f.triggerPoint,y=0,g=null==w;f.element!==f.element.window&&(y=f.adapter.offset()[s.offsetProp]),"function"==typeof c?c=c.apply(f):"string"==typeof c&&(c=parseFloat(c),f.options.offset.indexOf("%")>-1&&(c=Math.ceil(s.contextDimension*c/100))),a=s.contextScroll-s.contextOffset,f.triggerPoint=Math.floor(y+a-c),h=w<s.oldScroll,p=f.triggerPoint>=s.oldScroll,u=h&&p,d=!h&&!p,!g&&u?(f.queueTrigger(s.backward),n[f.group.id]=f.group):!g&&d?(f.queueTrigger(s.forward),n[f.group.id]=f.group):g&&s.oldScroll>=f.triggerPoint&&(f.queueTrigger(s.forward),n[f.group.id]=f.group)}}return o.requestAnimationFrame(function(){for(var t in n)n[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in n)n[t].refresh()},e.findByElement=function(t){return n[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},o.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},o.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),n[this.axis][this.name]=this}var n={vertical:{},horizontal:{}},o=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var n=this.triggerQueues[i],o="up"===i||"left"===i;n.sort(o?e:t);for(var r=0,s=n.length;s>r;r+=1){var l=n[r];(l.options.continuous||r===n.length-1)&&l.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=o.Adapter.inArray(e,this.waypoints),n=i===this.waypoints.length-1;return n?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=o.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=o.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return n[t.axis][t.name]||new i(t)},o.Group=i}(),function(){"use strict";function t(t){return t===t.window}function e(e){return t(e)?e:e.defaultView}function i(t){this.element=t,this.handlers={}}var n=window.Waypoint;i.prototype.innerHeight=function(){var e=t(this.element);return e?this.element.innerHeight:this.element.clientHeight},i.prototype.innerWidth=function(){var e=t(this.element);return e?this.element.innerWidth:this.element.clientWidth},i.prototype.off=function(t,e){function i(t,e,i){for(var n=0,o=e.length-1;o>n;n++){var r=e[n];i&&i!==r||t.removeEventListener(r)}}var n=t.split("."),o=n[0],r=n[1],s=this.element;if(r&&this.handlers[r]&&o)i(s,this.handlers[r][o],e),this.handlers[r][o]=[];else if(o)for(var l in this.handlers)i(s,this.handlers[l][o]||[],e),this.handlers[l][o]=[];else if(r&&this.handlers[r]){for(var a in this.handlers[r])i(s,this.handlers[r][a],e);this.handlers[r]={}}},i.prototype.offset=function(){if(!this.element.ownerDocument)return null;var t=this.element.ownerDocument.documentElement,i=e(this.element.ownerDocument),n={top:0,left:0};return this.element.getBoundingClientRect&&(n=this.element.getBoundingClientRect()),{top:n.top+i.pageYOffset-t.clientTop,left:n.left+i.pageXOffset-t.clientLeft}},i.prototype.on=function(t,e){var i=t.split("."),n=i[0],o=i[1]||"__default",r=this.handlers[o]=this.handlers[o]||{},s=r[n]=r[n]||[];s.push(e),this.element.addEventListener(n,e)},i.prototype.outerHeight=function(e){var i,n=this.innerHeight();return e&&!t(this.element)&&(i=window.getComputedStyle(this.element),n+=parseInt(i.marginTop,10),n+=parseInt(i.marginBottom,10)),n},i.prototype.outerWidth=function(e){var i,n=this.innerWidth();return e&&!t(this.element)&&(i=window.getComputedStyle(this.element),n+=parseInt(i.marginLeft,10),n+=parseInt(i.marginRight,10)),n},i.prototype.scrollLeft=function(){var t=e(this.element);return t?t.pageXOffset:this.element.scrollLeft},i.prototype.scrollTop=function(){var t=e(this.element);return t?t.pageYOffset:this.element.scrollTop},i.extend=function(){function t(t,e){if("object"==typeof t&&"object"==typeof e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}for(var e=Array.prototype.slice.call(arguments),i=1,n=e.length;n>i;i++)t(e[0],e[i]);return e[0]},i.inArray=function(t,e,i){return null==e?-1:e.indexOf(t,i)},i.isEmptyObject=function(t){for(var e in t)return!1;return!0},n.adapters.push({name:"noframework",Adapter:i}),n.Adapter=i}();
|
@@ -1,8 +1,8 @@
|
|
1
1
|
/*!
|
2
|
-
Waypoints Infinite Scroll Shortcut -
|
3
|
-
Copyright © 2011-
|
2
|
+
Waypoints Infinite Scroll Shortcut - 4.0.1
|
3
|
+
Copyright © 2011-2016 Caleb Troughton
|
4
4
|
Licensed under the MIT license.
|
5
|
-
https://github.com/imakewebthings/waypoints/
|
5
|
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
6
6
|
*/
|
7
7
|
(function() {
|
8
8
|
'use strict'
|
@@ -29,32 +29,35 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
|
|
29
29
|
/* Private */
|
30
30
|
Infinite.prototype.setupHandler = function() {
|
31
31
|
this.options.handler = $.proxy(function() {
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
this.$container.addClass(this.options.loadingClass)
|
32
|
+
this.options.onBeforePageLoad()
|
33
|
+
this.destroy()
|
34
|
+
this.$container.addClass(this.options.loadingClass)
|
36
35
|
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
$.get($(this.options.more).attr('href'), $.proxy(function(data) {
|
37
|
+
var $data = $($.parseHTML(data))
|
38
|
+
var $newMore = $data.find(this.options.more)
|
40
39
|
|
41
|
-
|
42
|
-
|
40
|
+
var $items = $data.find(this.options.items)
|
41
|
+
if (!$items.length) {
|
42
|
+
$items = $data.filter(this.options.items)
|
43
|
+
}
|
43
44
|
|
44
|
-
|
45
|
-
|
46
|
-
}
|
47
|
-
if ($newMore.length) {
|
48
|
-
this.$more.replaceWith($newMore)
|
49
|
-
this.$more = $newMore
|
50
|
-
this.waypoint = new Waypoint(this.options)
|
51
|
-
}
|
52
|
-
else {
|
53
|
-
this.$more.remove()
|
54
|
-
}
|
45
|
+
this.$container.append($items)
|
46
|
+
this.$container.removeClass(this.options.loadingClass)
|
55
47
|
|
56
|
-
|
57
|
-
|
48
|
+
if (!$newMore.length) {
|
49
|
+
$newMore = $data.filter(this.options.more)
|
50
|
+
}
|
51
|
+
if ($newMore.length) {
|
52
|
+
this.$more.replaceWith($newMore)
|
53
|
+
this.$more = $newMore
|
54
|
+
this.waypoint = new Waypoint(this.options)
|
55
|
+
}
|
56
|
+
else {
|
57
|
+
this.$more.remove()
|
58
|
+
}
|
59
|
+
|
60
|
+
this.options.onAfterPageLoad($items)
|
58
61
|
}, this))
|
59
62
|
}, this)
|
60
63
|
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/*!
|
2
|
+
Waypoints Infinite Scroll Shortcut - 4.0.1
|
3
|
+
Copyright © 2011-2016 Caleb Troughton
|
4
|
+
Licensed under the MIT license.
|
5
|
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
6
|
+
*/
|
7
|
+
!function(){"use strict";function t(n){this.options=i.extend({},t.defaults,n),this.container=this.options.element,"auto"!==this.options.container&&(this.container=this.options.container),this.$container=i(this.container),this.$more=i(this.options.more),this.$more.length&&(this.setupHandler(),this.waypoint=new o(this.options))}var i=window.jQuery,o=window.Waypoint;t.prototype.setupHandler=function(){this.options.handler=i.proxy(function(){this.options.onBeforePageLoad(),this.destroy(),this.$container.addClass(this.options.loadingClass),i.get(i(this.options.more).attr("href"),i.proxy(function(t){var n=i(i.parseHTML(t)),e=n.find(this.options.more),s=n.find(this.options.items);s.length||(s=n.filter(this.options.items)),this.$container.append(s),this.$container.removeClass(this.options.loadingClass),e.length||(e=n.filter(this.options.more)),e.length?(this.$more.replaceWith(e),this.$more=e,this.waypoint=new o(this.options)):this.$more.remove(),this.options.onAfterPageLoad(s)},this))},this)},t.prototype.destroy=function(){this.waypoint&&this.waypoint.destroy()},t.defaults={container:"auto",items:".infinite-item",more:".infinite-more-link",offset:"bottom-in-view",loadingClass:"infinite-loading",onBeforePageLoad:i.noop,onAfterPageLoad:i.noop},o.Infinite=t}();
|
@@ -1,8 +1,8 @@
|
|
1
1
|
/*!
|
2
|
-
Waypoints Inview Shortcut -
|
3
|
-
Copyright © 2011-
|
2
|
+
Waypoints Inview Shortcut - 4.0.1
|
3
|
+
Copyright © 2011-2016 Caleb Troughton
|
4
4
|
Licensed under the MIT license.
|
5
|
-
https://github.com/imakewebthings/waypoints/
|
5
|
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
6
6
|
*/
|
7
7
|
(function() {
|
8
8
|
'use strict'
|
@@ -16,6 +16,7 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
|
|
16
16
|
this.options = Waypoint.Adapter.extend({}, Inview.defaults, options)
|
17
17
|
this.axis = this.options.horizontal ? 'horizontal' : 'vertical'
|
18
18
|
this.waypoints = []
|
19
|
+
this.element = this.options.element
|
19
20
|
this.createWaypoints()
|
20
21
|
}
|
21
22
|
|
@@ -72,10 +73,12 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
|
|
72
73
|
Inview.prototype.createWaypoint = function(config) {
|
73
74
|
var self = this
|
74
75
|
this.waypoints.push(new Waypoint({
|
76
|
+
context: this.options.context,
|
75
77
|
element: this.options.element,
|
78
|
+
enabled: this.options.enabled,
|
76
79
|
handler: (function(config) {
|
77
80
|
return function(direction) {
|
78
|
-
self.options[config[direction]].call(
|
81
|
+
self.options[config[direction]].call(self, direction)
|
79
82
|
}
|
80
83
|
}(config)),
|
81
84
|
offset: config.offset,
|
@@ -91,7 +94,21 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
|
|
91
94
|
this.waypoints = []
|
92
95
|
}
|
93
96
|
|
97
|
+
Inview.prototype.disable = function() {
|
98
|
+
for (var i = 0, end = this.waypoints.length; i < end; i++) {
|
99
|
+
this.waypoints[i].disable()
|
100
|
+
}
|
101
|
+
}
|
102
|
+
|
103
|
+
Inview.prototype.enable = function() {
|
104
|
+
for (var i = 0, end = this.waypoints.length; i < end; i++) {
|
105
|
+
this.waypoints[i].enable()
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
94
109
|
Inview.defaults = {
|
110
|
+
context: window,
|
111
|
+
enabled: true,
|
95
112
|
enter: noop,
|
96
113
|
entered: noop,
|
97
114
|
exit: noop,
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/*!
|
2
|
+
Waypoints Inview Shortcut - 4.0.1
|
3
|
+
Copyright © 2011-2016 Caleb Troughton
|
4
|
+
Licensed under the MIT license.
|
5
|
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
6
|
+
*/
|
7
|
+
!function(){"use strict";function t(){}function e(t){this.options=i.Adapter.extend({},e.defaults,t),this.axis=this.options.horizontal?"horizontal":"vertical",this.waypoints=[],this.element=this.options.element,this.createWaypoints()}var i=window.Waypoint;e.prototype.createWaypoints=function(){for(var t={vertical:[{down:"enter",up:"exited",offset:"100%"},{down:"entered",up:"exit",offset:"bottom-in-view"},{down:"exit",up:"entered",offset:0},{down:"exited",up:"enter",offset:function(){return-this.adapter.outerHeight()}}],horizontal:[{right:"enter",left:"exited",offset:"100%"},{right:"entered",left:"exit",offset:"right-in-view"},{right:"exit",left:"entered",offset:0},{right:"exited",left:"enter",offset:function(){return-this.adapter.outerWidth()}}]},e=0,i=t[this.axis].length;i>e;e++){var n=t[this.axis][e];this.createWaypoint(n)}},e.prototype.createWaypoint=function(t){var e=this;this.waypoints.push(new i({context:this.options.context,element:this.options.element,enabled:this.options.enabled,handler:function(t){return function(i){e.options[t[i]].call(e,i)}}(t),offset:t.offset,horizontal:this.options.horizontal}))},e.prototype.destroy=function(){for(var t=0,e=this.waypoints.length;e>t;t++)this.waypoints[t].destroy();this.waypoints=[]},e.prototype.disable=function(){for(var t=0,e=this.waypoints.length;e>t;t++)this.waypoints[t].disable()},e.prototype.enable=function(){for(var t=0,e=this.waypoints.length;e>t;t++)this.waypoints[t].enable()},e.defaults={context:window,enabled:!0,enter:t,entered:t,exit:t,exited:t},i.Inview=e}();
|
@@ -1,8 +1,8 @@
|
|
1
1
|
/*!
|
2
|
-
Waypoints Sticky Element Shortcut -
|
3
|
-
Copyright © 2011-
|
2
|
+
Waypoints Sticky Element Shortcut - 4.0.1
|
3
|
+
Copyright © 2011-2016 Caleb Troughton
|
4
4
|
Licensed under the MIT license.
|
5
|
-
https://github.com/imakewebthings/waypoints/
|
5
|
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
6
6
|
*/
|
7
7
|
(function() {
|
8
8
|
'use strict'
|
@@ -41,7 +41,9 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
|
|
41
41
|
|
42
42
|
/* Private */
|
43
43
|
Sticky.prototype.createWrapper = function() {
|
44
|
-
|
44
|
+
if (this.options.wrapper) {
|
45
|
+
this.$element.wrap(this.options.wrapper)
|
46
|
+
}
|
45
47
|
this.$wrapper = this.$element.parent()
|
46
48
|
this.wrapper = this.$wrapper[0]
|
47
49
|
}
|
@@ -50,7 +52,10 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
|
|
50
52
|
Sticky.prototype.destroy = function() {
|
51
53
|
if (this.$element.parent()[0] === this.wrapper) {
|
52
54
|
this.waypoint.destroy()
|
53
|
-
this.$element.removeClass(this.options.stuckClass)
|
55
|
+
this.$element.removeClass(this.options.stuckClass)
|
56
|
+
if (this.options.wrapper) {
|
57
|
+
this.$element.unwrap()
|
58
|
+
}
|
54
59
|
}
|
55
60
|
}
|
56
61
|
|
@@ -62,4 +67,4 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
|
|
62
67
|
|
63
68
|
Waypoint.Sticky = Sticky
|
64
69
|
}())
|
65
|
-
;
|
70
|
+
;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/*!
|
2
|
+
Waypoints Sticky Element Shortcut - 4.0.1
|
3
|
+
Copyright © 2011-2016 Caleb Troughton
|
4
|
+
Licensed under the MIT license.
|
5
|
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
6
|
+
*/
|
7
|
+
!function(){"use strict";function t(s){this.options=e.extend({},i.defaults,t.defaults,s),this.element=this.options.element,this.$element=e(this.element),this.createWrapper(),this.createWaypoint()}var e=window.jQuery,i=window.Waypoint;t.prototype.createWaypoint=function(){var t=this.options.handler;this.waypoint=new i(e.extend({},this.options,{element:this.wrapper,handler:e.proxy(function(e){var i=this.options.direction.indexOf(e)>-1,s=i?this.$element.outerHeight(!0):"";this.$wrapper.height(s),this.$element.toggleClass(this.options.stuckClass,i),t&&t.call(this,e)},this)}))},t.prototype.createWrapper=function(){this.options.wrapper&&this.$element.wrap(this.options.wrapper),this.$wrapper=this.$element.parent(),this.wrapper=this.$wrapper[0]},t.prototype.destroy=function(){this.$element.parent()[0]===this.wrapper&&(this.waypoint.destroy(),this.$element.removeClass(this.options.stuckClass),this.options.wrapper&&this.$element.unwrap())},t.defaults={wrapper:'<div class="sticky-wrapper" />',stuckClass:"stuck",direction:"down right"},i.Sticky=t}();
|
@@ -0,0 +1,46 @@
|
|
1
|
+
/*!
|
2
|
+
Waypoints Debug - 4.0.1
|
3
|
+
Copyright © 2011-2016 Caleb Troughton
|
4
|
+
Licensed under the MIT license.
|
5
|
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
6
|
+
*/
|
7
|
+
(function() {
|
8
|
+
'use strict'
|
9
|
+
|
10
|
+
var displayNoneMessage = [
|
11
|
+
'You have a Waypoint element with display none. For more information on ',
|
12
|
+
'why this is a bad idea read ',
|
13
|
+
'http://imakewebthings.com/waypoints/guides/debugging/#display-none'
|
14
|
+
].join('')
|
15
|
+
var fixedMessage = [
|
16
|
+
'You have a Waypoint element with fixed positioning. For more ',
|
17
|
+
'information on why this is a bad idea read ',
|
18
|
+
'http://imakewebthings.com/waypoints/guides/debugging/#fixed-position'
|
19
|
+
].join('')
|
20
|
+
|
21
|
+
function checkWaypointStyles() {
|
22
|
+
var originalRefresh = window.Waypoint.Context.prototype.refresh
|
23
|
+
|
24
|
+
window.Waypoint.Context.prototype.refresh = function() {
|
25
|
+
for (var axis in this.waypoints) {
|
26
|
+
for (var key in this.waypoints[axis]) {
|
27
|
+
var waypoint = this.waypoints[axis][key]
|
28
|
+
var style = window.getComputedStyle(waypoint.element)
|
29
|
+
if (!waypoint.enabled) {
|
30
|
+
continue
|
31
|
+
}
|
32
|
+
if (style && style.display === 'none') {
|
33
|
+
console.error(displayNoneMessage)
|
34
|
+
}
|
35
|
+
if (style && style.position === 'fixed') {
|
36
|
+
console.error(fixedMessage)
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
return originalRefresh.call(this)
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
checkWaypointStyles()
|
45
|
+
}())
|
46
|
+
;
|
@@ -0,0 +1,705 @@
|
|
1
|
+
/*!
|
2
|
+
Waypoints - 4.0.1
|
3
|
+
Copyright © 2011-2016 Caleb Troughton
|
4
|
+
Licensed under the MIT license.
|
5
|
+
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
6
|
+
*/
|
7
|
+
(function() {
|
8
|
+
'use strict'
|
9
|
+
|
10
|
+
var keyCounter = 0
|
11
|
+
var allWaypoints = {}
|
12
|
+
|
13
|
+
/* http://imakewebthings.com/waypoints/api/waypoint */
|
14
|
+
function Waypoint(options) {
|
15
|
+
if (!options) {
|
16
|
+
throw new Error('No options passed to Waypoint constructor')
|
17
|
+
}
|
18
|
+
if (!options.element) {
|
19
|
+
throw new Error('No element option passed to Waypoint constructor')
|
20
|
+
}
|
21
|
+
if (!options.handler) {
|
22
|
+
throw new Error('No handler option passed to Waypoint constructor')
|
23
|
+
}
|
24
|
+
|
25
|
+
this.key = 'waypoint-' + keyCounter
|
26
|
+
this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)
|
27
|
+
this.element = this.options.element
|
28
|
+
this.adapter = new Waypoint.Adapter(this.element)
|
29
|
+
this.callback = options.handler
|
30
|
+
this.axis = this.options.horizontal ? 'horizontal' : 'vertical'
|
31
|
+
this.enabled = this.options.enabled
|
32
|
+
this.triggerPoint = null
|
33
|
+
this.group = Waypoint.Group.findOrCreate({
|
34
|
+
name: this.options.group,
|
35
|
+
axis: this.axis
|
36
|
+
})
|
37
|
+
this.context = Waypoint.Context.findOrCreateByElement(this.options.context)
|
38
|
+
|
39
|
+
if (Waypoint.offsetAliases[this.options.offset]) {
|
40
|
+
this.options.offset = Waypoint.offsetAliases[this.options.offset]
|
41
|
+
}
|
42
|
+
this.group.add(this)
|
43
|
+
this.context.add(this)
|
44
|
+
allWaypoints[this.key] = this
|
45
|
+
keyCounter += 1
|
46
|
+
}
|
47
|
+
|
48
|
+
/* Private */
|
49
|
+
Waypoint.prototype.queueTrigger = function(direction) {
|
50
|
+
this.group.queueTrigger(this, direction)
|
51
|
+
}
|
52
|
+
|
53
|
+
/* Private */
|
54
|
+
Waypoint.prototype.trigger = function(args) {
|
55
|
+
if (!this.enabled) {
|
56
|
+
return
|
57
|
+
}
|
58
|
+
if (this.callback) {
|
59
|
+
this.callback.apply(this, args)
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
/* Public */
|
64
|
+
/* http://imakewebthings.com/waypoints/api/destroy */
|
65
|
+
Waypoint.prototype.destroy = function() {
|
66
|
+
this.context.remove(this)
|
67
|
+
this.group.remove(this)
|
68
|
+
delete allWaypoints[this.key]
|
69
|
+
}
|
70
|
+
|
71
|
+
/* Public */
|
72
|
+
/* http://imakewebthings.com/waypoints/api/disable */
|
73
|
+
Waypoint.prototype.disable = function() {
|
74
|
+
this.enabled = false
|
75
|
+
return this
|
76
|
+
}
|
77
|
+
|
78
|
+
/* Public */
|
79
|
+
/* http://imakewebthings.com/waypoints/api/enable */
|
80
|
+
Waypoint.prototype.enable = function() {
|
81
|
+
this.context.refresh()
|
82
|
+
this.enabled = true
|
83
|
+
return this
|
84
|
+
}
|
85
|
+
|
86
|
+
/* Public */
|
87
|
+
/* http://imakewebthings.com/waypoints/api/next */
|
88
|
+
Waypoint.prototype.next = function() {
|
89
|
+
return this.group.next(this)
|
90
|
+
}
|
91
|
+
|
92
|
+
/* Public */
|
93
|
+
/* http://imakewebthings.com/waypoints/api/previous */
|
94
|
+
Waypoint.prototype.previous = function() {
|
95
|
+
return this.group.previous(this)
|
96
|
+
}
|
97
|
+
|
98
|
+
/* Private */
|
99
|
+
Waypoint.invokeAll = function(method) {
|
100
|
+
var allWaypointsArray = []
|
101
|
+
for (var waypointKey in allWaypoints) {
|
102
|
+
allWaypointsArray.push(allWaypoints[waypointKey])
|
103
|
+
}
|
104
|
+
for (var i = 0, end = allWaypointsArray.length; i < end; i++) {
|
105
|
+
allWaypointsArray[i][method]()
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
/* Public */
|
110
|
+
/* http://imakewebthings.com/waypoints/api/destroy-all */
|
111
|
+
Waypoint.destroyAll = function() {
|
112
|
+
Waypoint.invokeAll('destroy')
|
113
|
+
}
|
114
|
+
|
115
|
+
/* Public */
|
116
|
+
/* http://imakewebthings.com/waypoints/api/disable-all */
|
117
|
+
Waypoint.disableAll = function() {
|
118
|
+
Waypoint.invokeAll('disable')
|
119
|
+
}
|
120
|
+
|
121
|
+
/* Public */
|
122
|
+
/* http://imakewebthings.com/waypoints/api/enable-all */
|
123
|
+
Waypoint.enableAll = function() {
|
124
|
+
Waypoint.Context.refreshAll()
|
125
|
+
for (var waypointKey in allWaypoints) {
|
126
|
+
allWaypoints[waypointKey].enabled = true
|
127
|
+
}
|
128
|
+
return this
|
129
|
+
}
|
130
|
+
|
131
|
+
/* Public */
|
132
|
+
/* http://imakewebthings.com/waypoints/api/refresh-all */
|
133
|
+
Waypoint.refreshAll = function() {
|
134
|
+
Waypoint.Context.refreshAll()
|
135
|
+
}
|
136
|
+
|
137
|
+
/* Public */
|
138
|
+
/* http://imakewebthings.com/waypoints/api/viewport-height */
|
139
|
+
Waypoint.viewportHeight = function() {
|
140
|
+
return window.innerHeight || document.documentElement.clientHeight
|
141
|
+
}
|
142
|
+
|
143
|
+
/* Public */
|
144
|
+
/* http://imakewebthings.com/waypoints/api/viewport-width */
|
145
|
+
Waypoint.viewportWidth = function() {
|
146
|
+
return document.documentElement.clientWidth
|
147
|
+
}
|
148
|
+
|
149
|
+
Waypoint.adapters = []
|
150
|
+
|
151
|
+
Waypoint.defaults = {
|
152
|
+
context: window,
|
153
|
+
continuous: true,
|
154
|
+
enabled: true,
|
155
|
+
group: 'default',
|
156
|
+
horizontal: false,
|
157
|
+
offset: 0
|
158
|
+
}
|
159
|
+
|
160
|
+
Waypoint.offsetAliases = {
|
161
|
+
'bottom-in-view': function() {
|
162
|
+
return this.context.innerHeight() - this.adapter.outerHeight()
|
163
|
+
},
|
164
|
+
'right-in-view': function() {
|
165
|
+
return this.context.innerWidth() - this.adapter.outerWidth()
|
166
|
+
}
|
167
|
+
}
|
168
|
+
|
169
|
+
window.Waypoint = Waypoint
|
170
|
+
}())
|
171
|
+
;(function() {
|
172
|
+
'use strict'
|
173
|
+
|
174
|
+
function requestAnimationFrameShim(callback) {
|
175
|
+
window.setTimeout(callback, 1000 / 60)
|
176
|
+
}
|
177
|
+
|
178
|
+
var keyCounter = 0
|
179
|
+
var contexts = {}
|
180
|
+
var Waypoint = window.Waypoint
|
181
|
+
var oldWindowLoad = window.onload
|
182
|
+
|
183
|
+
/* http://imakewebthings.com/waypoints/api/context */
|
184
|
+
function Context(element) {
|
185
|
+
this.element = element
|
186
|
+
this.Adapter = Waypoint.Adapter
|
187
|
+
this.adapter = new this.Adapter(element)
|
188
|
+
this.key = 'waypoint-context-' + keyCounter
|
189
|
+
this.didScroll = false
|
190
|
+
this.didResize = false
|
191
|
+
this.oldScroll = {
|
192
|
+
x: this.adapter.scrollLeft(),
|
193
|
+
y: this.adapter.scrollTop()
|
194
|
+
}
|
195
|
+
this.waypoints = {
|
196
|
+
vertical: {},
|
197
|
+
horizontal: {}
|
198
|
+
}
|
199
|
+
|
200
|
+
element.waypointContextKey = this.key
|
201
|
+
contexts[element.waypointContextKey] = this
|
202
|
+
keyCounter += 1
|
203
|
+
if (!Waypoint.windowContext) {
|
204
|
+
Waypoint.windowContext = true
|
205
|
+
Waypoint.windowContext = new Context(window)
|
206
|
+
}
|
207
|
+
|
208
|
+
this.createThrottledScrollHandler()
|
209
|
+
this.createThrottledResizeHandler()
|
210
|
+
}
|
211
|
+
|
212
|
+
/* Private */
|
213
|
+
Context.prototype.add = function(waypoint) {
|
214
|
+
var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'
|
215
|
+
this.waypoints[axis][waypoint.key] = waypoint
|
216
|
+
this.refresh()
|
217
|
+
}
|
218
|
+
|
219
|
+
/* Private */
|
220
|
+
Context.prototype.checkEmpty = function() {
|
221
|
+
var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)
|
222
|
+
var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)
|
223
|
+
var isWindow = this.element == this.element.window
|
224
|
+
if (horizontalEmpty && verticalEmpty && !isWindow) {
|
225
|
+
this.adapter.off('.waypoints')
|
226
|
+
delete contexts[this.key]
|
227
|
+
}
|
228
|
+
}
|
229
|
+
|
230
|
+
/* Private */
|
231
|
+
Context.prototype.createThrottledResizeHandler = function() {
|
232
|
+
var self = this
|
233
|
+
|
234
|
+
function resizeHandler() {
|
235
|
+
self.handleResize()
|
236
|
+
self.didResize = false
|
237
|
+
}
|
238
|
+
|
239
|
+
this.adapter.on('resize.waypoints', function() {
|
240
|
+
if (!self.didResize) {
|
241
|
+
self.didResize = true
|
242
|
+
Waypoint.requestAnimationFrame(resizeHandler)
|
243
|
+
}
|
244
|
+
})
|
245
|
+
}
|
246
|
+
|
247
|
+
/* Private */
|
248
|
+
Context.prototype.createThrottledScrollHandler = function() {
|
249
|
+
var self = this
|
250
|
+
function scrollHandler() {
|
251
|
+
self.handleScroll()
|
252
|
+
self.didScroll = false
|
253
|
+
}
|
254
|
+
|
255
|
+
this.adapter.on('scroll.waypoints', function() {
|
256
|
+
if (!self.didScroll || Waypoint.isTouch) {
|
257
|
+
self.didScroll = true
|
258
|
+
Waypoint.requestAnimationFrame(scrollHandler)
|
259
|
+
}
|
260
|
+
})
|
261
|
+
}
|
262
|
+
|
263
|
+
/* Private */
|
264
|
+
Context.prototype.handleResize = function() {
|
265
|
+
Waypoint.Context.refreshAll()
|
266
|
+
}
|
267
|
+
|
268
|
+
/* Private */
|
269
|
+
Context.prototype.handleScroll = function() {
|
270
|
+
var triggeredGroups = {}
|
271
|
+
var axes = {
|
272
|
+
horizontal: {
|
273
|
+
newScroll: this.adapter.scrollLeft(),
|
274
|
+
oldScroll: this.oldScroll.x,
|
275
|
+
forward: 'right',
|
276
|
+
backward: 'left'
|
277
|
+
},
|
278
|
+
vertical: {
|
279
|
+
newScroll: this.adapter.scrollTop(),
|
280
|
+
oldScroll: this.oldScroll.y,
|
281
|
+
forward: 'down',
|
282
|
+
backward: 'up'
|
283
|
+
}
|
284
|
+
}
|
285
|
+
|
286
|
+
for (var axisKey in axes) {
|
287
|
+
var axis = axes[axisKey]
|
288
|
+
var isForward = axis.newScroll > axis.oldScroll
|
289
|
+
var direction = isForward ? axis.forward : axis.backward
|
290
|
+
|
291
|
+
for (var waypointKey in this.waypoints[axisKey]) {
|
292
|
+
var waypoint = this.waypoints[axisKey][waypointKey]
|
293
|
+
if (waypoint.triggerPoint === null) {
|
294
|
+
continue
|
295
|
+
}
|
296
|
+
var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint
|
297
|
+
var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint
|
298
|
+
var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint
|
299
|
+
var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint
|
300
|
+
if (crossedForward || crossedBackward) {
|
301
|
+
waypoint.queueTrigger(direction)
|
302
|
+
triggeredGroups[waypoint.group.id] = waypoint.group
|
303
|
+
}
|
304
|
+
}
|
305
|
+
}
|
306
|
+
|
307
|
+
for (var groupKey in triggeredGroups) {
|
308
|
+
triggeredGroups[groupKey].flushTriggers()
|
309
|
+
}
|
310
|
+
|
311
|
+
this.oldScroll = {
|
312
|
+
x: axes.horizontal.newScroll,
|
313
|
+
y: axes.vertical.newScroll
|
314
|
+
}
|
315
|
+
}
|
316
|
+
|
317
|
+
/* Private */
|
318
|
+
Context.prototype.innerHeight = function() {
|
319
|
+
/*eslint-disable eqeqeq */
|
320
|
+
if (this.element == this.element.window) {
|
321
|
+
return Waypoint.viewportHeight()
|
322
|
+
}
|
323
|
+
/*eslint-enable eqeqeq */
|
324
|
+
return this.adapter.innerHeight()
|
325
|
+
}
|
326
|
+
|
327
|
+
/* Private */
|
328
|
+
Context.prototype.remove = function(waypoint) {
|
329
|
+
delete this.waypoints[waypoint.axis][waypoint.key]
|
330
|
+
this.checkEmpty()
|
331
|
+
}
|
332
|
+
|
333
|
+
/* Private */
|
334
|
+
Context.prototype.innerWidth = function() {
|
335
|
+
/*eslint-disable eqeqeq */
|
336
|
+
if (this.element == this.element.window) {
|
337
|
+
return Waypoint.viewportWidth()
|
338
|
+
}
|
339
|
+
/*eslint-enable eqeqeq */
|
340
|
+
return this.adapter.innerWidth()
|
341
|
+
}
|
342
|
+
|
343
|
+
/* Public */
|
344
|
+
/* http://imakewebthings.com/waypoints/api/context-destroy */
|
345
|
+
Context.prototype.destroy = function() {
|
346
|
+
var allWaypoints = []
|
347
|
+
for (var axis in this.waypoints) {
|
348
|
+
for (var waypointKey in this.waypoints[axis]) {
|
349
|
+
allWaypoints.push(this.waypoints[axis][waypointKey])
|
350
|
+
}
|
351
|
+
}
|
352
|
+
for (var i = 0, end = allWaypoints.length; i < end; i++) {
|
353
|
+
allWaypoints[i].destroy()
|
354
|
+
}
|
355
|
+
}
|
356
|
+
|
357
|
+
/* Public */
|
358
|
+
/* http://imakewebthings.com/waypoints/api/context-refresh */
|
359
|
+
Context.prototype.refresh = function() {
|
360
|
+
/*eslint-disable eqeqeq */
|
361
|
+
var isWindow = this.element == this.element.window
|
362
|
+
/*eslint-enable eqeqeq */
|
363
|
+
var contextOffset = isWindow ? undefined : this.adapter.offset()
|
364
|
+
var triggeredGroups = {}
|
365
|
+
var axes
|
366
|
+
|
367
|
+
this.handleScroll()
|
368
|
+
axes = {
|
369
|
+
horizontal: {
|
370
|
+
contextOffset: isWindow ? 0 : contextOffset.left,
|
371
|
+
contextScroll: isWindow ? 0 : this.oldScroll.x,
|
372
|
+
contextDimension: this.innerWidth(),
|
373
|
+
oldScroll: this.oldScroll.x,
|
374
|
+
forward: 'right',
|
375
|
+
backward: 'left',
|
376
|
+
offsetProp: 'left'
|
377
|
+
},
|
378
|
+
vertical: {
|
379
|
+
contextOffset: isWindow ? 0 : contextOffset.top,
|
380
|
+
contextScroll: isWindow ? 0 : this.oldScroll.y,
|
381
|
+
contextDimension: this.innerHeight(),
|
382
|
+
oldScroll: this.oldScroll.y,
|
383
|
+
forward: 'down',
|
384
|
+
backward: 'up',
|
385
|
+
offsetProp: 'top'
|
386
|
+
}
|
387
|
+
}
|
388
|
+
|
389
|
+
for (var axisKey in axes) {
|
390
|
+
var axis = axes[axisKey]
|
391
|
+
for (var waypointKey in this.waypoints[axisKey]) {
|
392
|
+
var waypoint = this.waypoints[axisKey][waypointKey]
|
393
|
+
var adjustment = waypoint.options.offset
|
394
|
+
var oldTriggerPoint = waypoint.triggerPoint
|
395
|
+
var elementOffset = 0
|
396
|
+
var freshWaypoint = oldTriggerPoint == null
|
397
|
+
var contextModifier, wasBeforeScroll, nowAfterScroll
|
398
|
+
var triggeredBackward, triggeredForward
|
399
|
+
|
400
|
+
if (waypoint.element !== waypoint.element.window) {
|
401
|
+
elementOffset = waypoint.adapter.offset()[axis.offsetProp]
|
402
|
+
}
|
403
|
+
|
404
|
+
if (typeof adjustment === 'function') {
|
405
|
+
adjustment = adjustment.apply(waypoint)
|
406
|
+
}
|
407
|
+
else if (typeof adjustment === 'string') {
|
408
|
+
adjustment = parseFloat(adjustment)
|
409
|
+
if (waypoint.options.offset.indexOf('%') > - 1) {
|
410
|
+
adjustment = Math.ceil(axis.contextDimension * adjustment / 100)
|
411
|
+
}
|
412
|
+
}
|
413
|
+
|
414
|
+
contextModifier = axis.contextScroll - axis.contextOffset
|
415
|
+
waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)
|
416
|
+
wasBeforeScroll = oldTriggerPoint < axis.oldScroll
|
417
|
+
nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll
|
418
|
+
triggeredBackward = wasBeforeScroll && nowAfterScroll
|
419
|
+
triggeredForward = !wasBeforeScroll && !nowAfterScroll
|
420
|
+
|
421
|
+
if (!freshWaypoint && triggeredBackward) {
|
422
|
+
waypoint.queueTrigger(axis.backward)
|
423
|
+
triggeredGroups[waypoint.group.id] = waypoint.group
|
424
|
+
}
|
425
|
+
else if (!freshWaypoint && triggeredForward) {
|
426
|
+
waypoint.queueTrigger(axis.forward)
|
427
|
+
triggeredGroups[waypoint.group.id] = waypoint.group
|
428
|
+
}
|
429
|
+
else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {
|
430
|
+
waypoint.queueTrigger(axis.forward)
|
431
|
+
triggeredGroups[waypoint.group.id] = waypoint.group
|
432
|
+
}
|
433
|
+
}
|
434
|
+
}
|
435
|
+
|
436
|
+
Waypoint.requestAnimationFrame(function() {
|
437
|
+
for (var groupKey in triggeredGroups) {
|
438
|
+
triggeredGroups[groupKey].flushTriggers()
|
439
|
+
}
|
440
|
+
})
|
441
|
+
|
442
|
+
return this
|
443
|
+
}
|
444
|
+
|
445
|
+
/* Private */
|
446
|
+
Context.findOrCreateByElement = function(element) {
|
447
|
+
return Context.findByElement(element) || new Context(element)
|
448
|
+
}
|
449
|
+
|
450
|
+
/* Private */
|
451
|
+
Context.refreshAll = function() {
|
452
|
+
for (var contextId in contexts) {
|
453
|
+
contexts[contextId].refresh()
|
454
|
+
}
|
455
|
+
}
|
456
|
+
|
457
|
+
/* Public */
|
458
|
+
/* http://imakewebthings.com/waypoints/api/context-find-by-element */
|
459
|
+
Context.findByElement = function(element) {
|
460
|
+
return contexts[element.waypointContextKey]
|
461
|
+
}
|
462
|
+
|
463
|
+
window.onload = function() {
|
464
|
+
if (oldWindowLoad) {
|
465
|
+
oldWindowLoad()
|
466
|
+
}
|
467
|
+
Context.refreshAll()
|
468
|
+
}
|
469
|
+
|
470
|
+
|
471
|
+
Waypoint.requestAnimationFrame = function(callback) {
|
472
|
+
var requestFn = window.requestAnimationFrame ||
|
473
|
+
window.mozRequestAnimationFrame ||
|
474
|
+
window.webkitRequestAnimationFrame ||
|
475
|
+
requestAnimationFrameShim
|
476
|
+
requestFn.call(window, callback)
|
477
|
+
}
|
478
|
+
Waypoint.Context = Context
|
479
|
+
}())
|
480
|
+
;(function() {
|
481
|
+
'use strict'
|
482
|
+
|
483
|
+
function byTriggerPoint(a, b) {
|
484
|
+
return a.triggerPoint - b.triggerPoint
|
485
|
+
}
|
486
|
+
|
487
|
+
function byReverseTriggerPoint(a, b) {
|
488
|
+
return b.triggerPoint - a.triggerPoint
|
489
|
+
}
|
490
|
+
|
491
|
+
var groups = {
|
492
|
+
vertical: {},
|
493
|
+
horizontal: {}
|
494
|
+
}
|
495
|
+
var Waypoint = window.Waypoint
|
496
|
+
|
497
|
+
/* http://imakewebthings.com/waypoints/api/group */
|
498
|
+
function Group(options) {
|
499
|
+
this.name = options.name
|
500
|
+
this.axis = options.axis
|
501
|
+
this.id = this.name + '-' + this.axis
|
502
|
+
this.waypoints = []
|
503
|
+
this.clearTriggerQueues()
|
504
|
+
groups[this.axis][this.name] = this
|
505
|
+
}
|
506
|
+
|
507
|
+
/* Private */
|
508
|
+
Group.prototype.add = function(waypoint) {
|
509
|
+
this.waypoints.push(waypoint)
|
510
|
+
}
|
511
|
+
|
512
|
+
/* Private */
|
513
|
+
Group.prototype.clearTriggerQueues = function() {
|
514
|
+
this.triggerQueues = {
|
515
|
+
up: [],
|
516
|
+
down: [],
|
517
|
+
left: [],
|
518
|
+
right: []
|
519
|
+
}
|
520
|
+
}
|
521
|
+
|
522
|
+
/* Private */
|
523
|
+
Group.prototype.flushTriggers = function() {
|
524
|
+
for (var direction in this.triggerQueues) {
|
525
|
+
var waypoints = this.triggerQueues[direction]
|
526
|
+
var reverse = direction === 'up' || direction === 'left'
|
527
|
+
waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)
|
528
|
+
for (var i = 0, end = waypoints.length; i < end; i += 1) {
|
529
|
+
var waypoint = waypoints[i]
|
530
|
+
if (waypoint.options.continuous || i === waypoints.length - 1) {
|
531
|
+
waypoint.trigger([direction])
|
532
|
+
}
|
533
|
+
}
|
534
|
+
}
|
535
|
+
this.clearTriggerQueues()
|
536
|
+
}
|
537
|
+
|
538
|
+
/* Private */
|
539
|
+
Group.prototype.next = function(waypoint) {
|
540
|
+
this.waypoints.sort(byTriggerPoint)
|
541
|
+
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
|
542
|
+
var isLast = index === this.waypoints.length - 1
|
543
|
+
return isLast ? null : this.waypoints[index + 1]
|
544
|
+
}
|
545
|
+
|
546
|
+
/* Private */
|
547
|
+
Group.prototype.previous = function(waypoint) {
|
548
|
+
this.waypoints.sort(byTriggerPoint)
|
549
|
+
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
|
550
|
+
return index ? this.waypoints[index - 1] : null
|
551
|
+
}
|
552
|
+
|
553
|
+
/* Private */
|
554
|
+
Group.prototype.queueTrigger = function(waypoint, direction) {
|
555
|
+
this.triggerQueues[direction].push(waypoint)
|
556
|
+
}
|
557
|
+
|
558
|
+
/* Private */
|
559
|
+
Group.prototype.remove = function(waypoint) {
|
560
|
+
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
|
561
|
+
if (index > -1) {
|
562
|
+
this.waypoints.splice(index, 1)
|
563
|
+
}
|
564
|
+
}
|
565
|
+
|
566
|
+
/* Public */
|
567
|
+
/* http://imakewebthings.com/waypoints/api/first */
|
568
|
+
Group.prototype.first = function() {
|
569
|
+
return this.waypoints[0]
|
570
|
+
}
|
571
|
+
|
572
|
+
/* Public */
|
573
|
+
/* http://imakewebthings.com/waypoints/api/last */
|
574
|
+
Group.prototype.last = function() {
|
575
|
+
return this.waypoints[this.waypoints.length - 1]
|
576
|
+
}
|
577
|
+
|
578
|
+
/* Private */
|
579
|
+
Group.findOrCreate = function(options) {
|
580
|
+
return groups[options.axis][options.name] || new Group(options)
|
581
|
+
}
|
582
|
+
|
583
|
+
Waypoint.Group = Group
|
584
|
+
}())
|
585
|
+
;(function() {
|
586
|
+
'use strict'
|
587
|
+
|
588
|
+
var $ = window.Zepto
|
589
|
+
var Waypoint = window.Waypoint
|
590
|
+
|
591
|
+
function ZeptoAdapter(element) {
|
592
|
+
this.element = element
|
593
|
+
this.$element = $(element)
|
594
|
+
}
|
595
|
+
|
596
|
+
$.each([
|
597
|
+
'off',
|
598
|
+
'on',
|
599
|
+
'scrollLeft',
|
600
|
+
'scrollTop'
|
601
|
+
], function(i, method) {
|
602
|
+
ZeptoAdapter.prototype[method] = function() {
|
603
|
+
var args = Array.prototype.slice.call(arguments)
|
604
|
+
return this.$element[method].apply(this.$element, args)
|
605
|
+
}
|
606
|
+
})
|
607
|
+
|
608
|
+
ZeptoAdapter.prototype.offset = function() {
|
609
|
+
if (this.element !== this.element.window) {
|
610
|
+
return this.$element.offset()
|
611
|
+
}
|
612
|
+
}
|
613
|
+
|
614
|
+
// Adapted from https://gist.github.com/wheresrhys/5823198
|
615
|
+
$.each([
|
616
|
+
'width',
|
617
|
+
'height'
|
618
|
+
], function(i, dimension) {
|
619
|
+
function createDimensionMethod($element, includeBorder) {
|
620
|
+
return function(includeMargin) {
|
621
|
+
var $element = this.$element
|
622
|
+
var size = $element[dimension]()
|
623
|
+
var sides = {
|
624
|
+
width: ['left', 'right'],
|
625
|
+
height: ['top', 'bottom']
|
626
|
+
}
|
627
|
+
|
628
|
+
$.each(sides[dimension], function(i, side) {
|
629
|
+
size += parseInt($element.css('padding-' + side), 10)
|
630
|
+
if (includeBorder) {
|
631
|
+
size += parseInt($element.css('border-' + side + '-width'), 10)
|
632
|
+
}
|
633
|
+
if (includeMargin) {
|
634
|
+
size += parseInt($element.css('margin-' + side), 10)
|
635
|
+
}
|
636
|
+
})
|
637
|
+
return size
|
638
|
+
}
|
639
|
+
}
|
640
|
+
|
641
|
+
var innerMethod = $.camelCase('inner-' + dimension)
|
642
|
+
var outerMethod = $.camelCase('outer-' + dimension)
|
643
|
+
|
644
|
+
ZeptoAdapter.prototype[innerMethod] = createDimensionMethod(false)
|
645
|
+
ZeptoAdapter.prototype[outerMethod] = createDimensionMethod(true)
|
646
|
+
})
|
647
|
+
|
648
|
+
$.each([
|
649
|
+
'extend',
|
650
|
+
'inArray'
|
651
|
+
], function(i, method) {
|
652
|
+
ZeptoAdapter[method] = $[method]
|
653
|
+
})
|
654
|
+
|
655
|
+
ZeptoAdapter.isEmptyObject = function(obj) {
|
656
|
+
/* eslint no-unused-vars: 0 */
|
657
|
+
for (var name in obj) {
|
658
|
+
return false
|
659
|
+
}
|
660
|
+
return true
|
661
|
+
}
|
662
|
+
|
663
|
+
Waypoint.adapters.push({
|
664
|
+
name: 'zepto',
|
665
|
+
Adapter: ZeptoAdapter
|
666
|
+
})
|
667
|
+
Waypoint.Adapter = ZeptoAdapter
|
668
|
+
}())
|
669
|
+
;(function() {
|
670
|
+
'use strict'
|
671
|
+
|
672
|
+
var Waypoint = window.Waypoint
|
673
|
+
|
674
|
+
function createExtension(framework) {
|
675
|
+
return function() {
|
676
|
+
var waypoints = []
|
677
|
+
var overrides = arguments[0]
|
678
|
+
|
679
|
+
if (framework.isFunction(arguments[0])) {
|
680
|
+
overrides = framework.extend({}, arguments[1])
|
681
|
+
overrides.handler = arguments[0]
|
682
|
+
}
|
683
|
+
|
684
|
+
this.each(function() {
|
685
|
+
var options = framework.extend({}, overrides, {
|
686
|
+
element: this
|
687
|
+
})
|
688
|
+
if (typeof options.context === 'string') {
|
689
|
+
options.context = framework(this).closest(options.context)[0]
|
690
|
+
}
|
691
|
+
waypoints.push(new Waypoint(options))
|
692
|
+
})
|
693
|
+
|
694
|
+
return waypoints
|
695
|
+
}
|
696
|
+
}
|
697
|
+
|
698
|
+
if (window.jQuery) {
|
699
|
+
window.jQuery.fn.waypoint = createExtension(window.jQuery)
|
700
|
+
}
|
701
|
+
if (window.Zepto) {
|
702
|
+
window.Zepto.fn.waypoint = createExtension(window.Zepto)
|
703
|
+
}
|
704
|
+
}())
|
705
|
+
;
|