waypoints_rails 3.0.0 → 4.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 269b2cbdff9e1a753afd49eea624b53434c70d6f
4
- data.tar.gz: 37a6f99cdbc15dba424c9e5ddebb2f86e8be3c50
3
+ metadata.gz: 494dabfab5565881a064da82241a803a1b1d9b19
4
+ data.tar.gz: fe4713cc23ae444d7bafa0261c9cd0a0aaace27f
5
5
  SHA512:
6
- metadata.gz: 47714d99aea2585e8866339e8923954e677caf57ea0b8f2f7ca18d757496d26b009b889b834ee28e8a261e0eddf119257fc4f6df05882b35e00a7962405715ea
7
- data.tar.gz: d738309cd3e19103e361055534577074ed604417e72d8d5802064f19527bb81e26101bfc448cb1c7f3ad8a902082e947b94ace8617bec3c3170a8ff319688d95
6
+ metadata.gz: 3810e7be7e07b41c9db9417b6f55f83a3901b9298b99d215f63979697914e8eb338498a59ff57df39e6c578bec53dfb84afc77fc8dc751d15d27f26a40243b99
7
+ data.tar.gz: 9be86a0648f9f79767bca8043df8f848e7122568700d04536386146ff68e47ada6481e0cbfa1e908e782021507491cfaaf9f7d2a10fd2f55f7a1f7e85bca8d55
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
+ .DS_Store
data/README.md CHANGED
@@ -20,16 +20,25 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- In your application.js:
23
+ In your application.js, include one of the following:
24
24
  ``` ruby
25
- //= require jquery.waypoints
25
+ //= require waypoints/jquery.waypoints.js
26
+ //= require waypoints/jquery.waypoints.min.js
27
+ //= require waypoints/noframework.waypoints.js
28
+ //= require waypoints/noframework.waypoints.min.js
29
+ //= require waypoints/waypoints.debug.js
30
+ //= require waypoints/zepto.waypoints.js
31
+ //= require waypoints/zepto.waypoints.min.js
26
32
  ```
27
33
 
28
- And then, for optional waypoints shortcuts, require the following:
34
+ And then, for optional waypoints shortcuts, require any of the following:
29
35
  ``` ruby
30
- //= require infinite
31
- //= require inview
32
- //= require sticky
36
+ //= require waypoints/shortcuts/infinite.js
37
+ //= require waypoints/shortcuts/infinite.min.js
38
+ //= require waypoints/shortcuts/inview.js
39
+ //= require waypoints/shortcuts/inview.min.js
40
+ //= require waypoints/shortcuts/sticky.js
41
+ //= require waypoints/shortcuts/sticky.min.js
33
42
  ```
34
43
 
35
44
  ## Contributing
@@ -1,3 +1,3 @@
1
1
  module WaypointsRails
2
- VERSION = "3.0.0"
2
+ VERSION = "4.0.1"
3
3
  end
@@ -1,8 +1,8 @@
1
1
  /*!
2
- Waypoints - 3.0.0
3
- Copyright © 2011-2014 Caleb Troughton
2
+ Waypoints - 4.0.1
3
+ Copyright © 2011-2016 Caleb Troughton
4
4
  Licensed under the MIT license.
5
- https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
5
+ https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
6
6
  */
7
7
  (function() {
8
8
  'use strict'
@@ -95,18 +95,39 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
95
95
  return this.group.previous(this)
96
96
  }
97
97
 
98
- /* Public */
99
- /* http://imakewebthings.com/waypoints/api/destroy-all */
100
- Waypoint.destroyAll = function() {
98
+ /* Private */
99
+ Waypoint.invokeAll = function(method) {
101
100
  var allWaypointsArray = []
102
101
  for (var waypointKey in allWaypoints) {
103
102
  allWaypointsArray.push(allWaypoints[waypointKey])
104
103
  }
105
104
  for (var i = 0, end = allWaypointsArray.length; i < end; i++) {
106
- allWaypointsArray[i].destroy()
105
+ allWaypointsArray[i][method]()
107
106
  }
108
107
  }
109
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
+
110
131
  /* Public */
111
132
  /* http://imakewebthings.com/waypoints/api/refresh-all */
112
133
  Waypoint.refreshAll = function() {
@@ -157,10 +178,6 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
157
178
  var keyCounter = 0
158
179
  var contexts = {}
159
180
  var Waypoint = window.Waypoint
160
- var requestAnimationFrame = window.requestAnimationFrame ||
161
- window.mozRequestAnimationFrame ||
162
- window.webkitRequestAnimationFrame ||
163
- requestAnimationFrameShim
164
181
  var oldWindowLoad = window.onload
165
182
 
166
183
  /* http://imakewebthings.com/waypoints/api/context */
@@ -183,6 +200,10 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
183
200
  element.waypointContextKey = this.key
184
201
  contexts[element.waypointContextKey] = this
185
202
  keyCounter += 1
203
+ if (!Waypoint.windowContext) {
204
+ Waypoint.windowContext = true
205
+ Waypoint.windowContext = new Context(window)
206
+ }
186
207
 
187
208
  this.createThrottledScrollHandler()
188
209
  this.createThrottledResizeHandler()
@@ -199,7 +220,8 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
199
220
  Context.prototype.checkEmpty = function() {
200
221
  var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)
201
222
  var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)
202
- if (horizontalEmpty && verticalEmpty) {
223
+ var isWindow = this.element == this.element.window
224
+ if (horizontalEmpty && verticalEmpty && !isWindow) {
203
225
  this.adapter.off('.waypoints')
204
226
  delete contexts[this.key]
205
227
  }
@@ -217,7 +239,7 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
217
239
  this.adapter.on('resize.waypoints', function() {
218
240
  if (!self.didResize) {
219
241
  self.didResize = true
220
- requestAnimationFrame(resizeHandler)
242
+ Waypoint.requestAnimationFrame(resizeHandler)
221
243
  }
222
244
  })
223
245
  }
@@ -233,7 +255,7 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
233
255
  this.adapter.on('scroll.waypoints', function() {
234
256
  if (!self.didScroll || Waypoint.isTouch) {
235
257
  self.didScroll = true
236
- requestAnimationFrame(scrollHandler)
258
+ Waypoint.requestAnimationFrame(scrollHandler)
237
259
  }
238
260
  })
239
261
  }
@@ -268,6 +290,9 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
268
290
 
269
291
  for (var waypointKey in this.waypoints[axisKey]) {
270
292
  var waypoint = this.waypoints[axisKey][waypointKey]
293
+ if (waypoint.triggerPoint === null) {
294
+ continue
295
+ }
271
296
  var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint
272
297
  var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint
273
298
  var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint
@@ -291,9 +316,11 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
291
316
 
292
317
  /* Private */
293
318
  Context.prototype.innerHeight = function() {
294
- if (this.element === this.element.window) {
319
+ /*eslint-disable eqeqeq */
320
+ if (this.element == this.element.window) {
295
321
  return Waypoint.viewportHeight()
296
322
  }
323
+ /*eslint-enable eqeqeq */
297
324
  return this.adapter.innerHeight()
298
325
  }
299
326
 
@@ -305,9 +332,11 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
305
332
 
306
333
  /* Private */
307
334
  Context.prototype.innerWidth = function() {
308
- if (this.element === this.element.window) {
335
+ /*eslint-disable eqeqeq */
336
+ if (this.element == this.element.window) {
309
337
  return Waypoint.viewportWidth()
310
338
  }
339
+ /*eslint-enable eqeqeq */
311
340
  return this.adapter.innerWidth()
312
341
  }
313
342
 
@@ -328,8 +357,10 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
328
357
  /* Public */
329
358
  /* http://imakewebthings.com/waypoints/api/context-refresh */
330
359
  Context.prototype.refresh = function() {
331
- var isWindow = this.element === this.element.window
332
- var contextOffset = this.adapter.offset()
360
+ /*eslint-disable eqeqeq */
361
+ var isWindow = this.element == this.element.window
362
+ /*eslint-enable eqeqeq */
363
+ var contextOffset = isWindow ? undefined : this.adapter.offset()
333
364
  var triggeredGroups = {}
334
365
  var axes
335
366
 
@@ -381,7 +412,7 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
381
412
  }
382
413
 
383
414
  contextModifier = axis.contextScroll - axis.contextOffset
384
- waypoint.triggerPoint = elementOffset + contextModifier - adjustment
415
+ waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)
385
416
  wasBeforeScroll = oldTriggerPoint < axis.oldScroll
386
417
  nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll
387
418
  triggeredBackward = wasBeforeScroll && nowAfterScroll
@@ -402,9 +433,11 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
402
433
  }
403
434
  }
404
435
 
405
- for (var groupKey in triggeredGroups) {
406
- triggeredGroups[groupKey].flushTriggers()
407
- }
436
+ Waypoint.requestAnimationFrame(function() {
437
+ for (var groupKey in triggeredGroups) {
438
+ triggeredGroups[groupKey].flushTriggers()
439
+ }
440
+ })
408
441
 
409
442
  return this
410
443
  }
@@ -433,6 +466,15 @@ https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
433
466
  }
434
467
  Context.refreshAll()
435
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
+ }
436
478
  Waypoint.Context = Context
437
479
  }())
438
480
  ;(function() {
@@ -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(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.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 o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][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=n.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,o[t.waypointContextKey]=this,i+=1,n.windowContext||(n.windowContext=!0,n.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=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 o[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,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.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 o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s];if(null!==a.triggerPoint){var l=o.oldScroll<a.triggerPoint,h=o.newScroll>=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.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?n.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 o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),o={};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 a in this.waypoints[r]){var l,h,p,u,c,d=this.waypoints[r][a],f=d.options.offset,w=d.triggerPoint,y=0,g=null==w;d.element!==d.element.window&&(y=d.adapter.offset()[s.offsetProp]),"function"==typeof f?f=f.apply(d):"string"==typeof f&&(f=parseFloat(f),d.options.offset.indexOf("%")>-1&&(f=Math.ceil(s.contextDimension*f/100))),l=s.contextScroll-s.contextOffset,d.triggerPoint=Math.floor(y+l-f),h=w<s.oldScroll,p=d.triggerPoint>=s.oldScroll,u=h&&p,c=!h&&!p,!g&&u?(d.queueTrigger(s.backward),o[d.group.id]=d.group):!g&&c?(d.queueTrigger(s.forward),o[d.group.id]=d.group):g&&s.oldScroll>=d.triggerPoint&&(d.queueTrigger(s.forward),o[d.group.id]=d.group)}}return n.requestAnimationFrame(function(){for(var t in o)o[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.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(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=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 o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.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=n.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 o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}();
@@ -0,0 +1,758 @@
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 Waypoint = window.Waypoint
589
+
590
+ function isWindow(element) {
591
+ return element === element.window
592
+ }
593
+
594
+ function getWindow(element) {
595
+ if (isWindow(element)) {
596
+ return element
597
+ }
598
+ return element.defaultView
599
+ }
600
+
601
+ function NoFrameworkAdapter(element) {
602
+ this.element = element
603
+ this.handlers = {}
604
+ }
605
+
606
+ NoFrameworkAdapter.prototype.innerHeight = function() {
607
+ var isWin = isWindow(this.element)
608
+ return isWin ? this.element.innerHeight : this.element.clientHeight
609
+ }
610
+
611
+ NoFrameworkAdapter.prototype.innerWidth = function() {
612
+ var isWin = isWindow(this.element)
613
+ return isWin ? this.element.innerWidth : this.element.clientWidth
614
+ }
615
+
616
+ NoFrameworkAdapter.prototype.off = function(event, handler) {
617
+ function removeListeners(element, listeners, handler) {
618
+ for (var i = 0, end = listeners.length - 1; i < end; i++) {
619
+ var listener = listeners[i]
620
+ if (!handler || handler === listener) {
621
+ element.removeEventListener(listener)
622
+ }
623
+ }
624
+ }
625
+
626
+ var eventParts = event.split('.')
627
+ var eventType = eventParts[0]
628
+ var namespace = eventParts[1]
629
+ var element = this.element
630
+
631
+ if (namespace && this.handlers[namespace] && eventType) {
632
+ removeListeners(element, this.handlers[namespace][eventType], handler)
633
+ this.handlers[namespace][eventType] = []
634
+ }
635
+ else if (eventType) {
636
+ for (var ns in this.handlers) {
637
+ removeListeners(element, this.handlers[ns][eventType] || [], handler)
638
+ this.handlers[ns][eventType] = []
639
+ }
640
+ }
641
+ else if (namespace && this.handlers[namespace]) {
642
+ for (var type in this.handlers[namespace]) {
643
+ removeListeners(element, this.handlers[namespace][type], handler)
644
+ }
645
+ this.handlers[namespace] = {}
646
+ }
647
+ }
648
+
649
+ /* Adapted from jQuery 1.x offset() */
650
+ NoFrameworkAdapter.prototype.offset = function() {
651
+ if (!this.element.ownerDocument) {
652
+ return null
653
+ }
654
+
655
+ var documentElement = this.element.ownerDocument.documentElement
656
+ var win = getWindow(this.element.ownerDocument)
657
+ var rect = {
658
+ top: 0,
659
+ left: 0
660
+ }
661
+
662
+ if (this.element.getBoundingClientRect) {
663
+ rect = this.element.getBoundingClientRect()
664
+ }
665
+
666
+ return {
667
+ top: rect.top + win.pageYOffset - documentElement.clientTop,
668
+ left: rect.left + win.pageXOffset - documentElement.clientLeft
669
+ }
670
+ }
671
+
672
+ NoFrameworkAdapter.prototype.on = function(event, handler) {
673
+ var eventParts = event.split('.')
674
+ var eventType = eventParts[0]
675
+ var namespace = eventParts[1] || '__default'
676
+ var nsHandlers = this.handlers[namespace] = this.handlers[namespace] || {}
677
+ var nsTypeList = nsHandlers[eventType] = nsHandlers[eventType] || []
678
+
679
+ nsTypeList.push(handler)
680
+ this.element.addEventListener(eventType, handler)
681
+ }
682
+
683
+ NoFrameworkAdapter.prototype.outerHeight = function(includeMargin) {
684
+ var height = this.innerHeight()
685
+ var computedStyle
686
+
687
+ if (includeMargin && !isWindow(this.element)) {
688
+ computedStyle = window.getComputedStyle(this.element)
689
+ height += parseInt(computedStyle.marginTop, 10)
690
+ height += parseInt(computedStyle.marginBottom, 10)
691
+ }
692
+
693
+ return height
694
+ }
695
+
696
+ NoFrameworkAdapter.prototype.outerWidth = function(includeMargin) {
697
+ var width = this.innerWidth()
698
+ var computedStyle
699
+
700
+ if (includeMargin && !isWindow(this.element)) {
701
+ computedStyle = window.getComputedStyle(this.element)
702
+ width += parseInt(computedStyle.marginLeft, 10)
703
+ width += parseInt(computedStyle.marginRight, 10)
704
+ }
705
+
706
+ return width
707
+ }
708
+
709
+ NoFrameworkAdapter.prototype.scrollLeft = function() {
710
+ var win = getWindow(this.element)
711
+ return win ? win.pageXOffset : this.element.scrollLeft
712
+ }
713
+
714
+ NoFrameworkAdapter.prototype.scrollTop = function() {
715
+ var win = getWindow(this.element)
716
+ return win ? win.pageYOffset : this.element.scrollTop
717
+ }
718
+
719
+ NoFrameworkAdapter.extend = function() {
720
+ var args = Array.prototype.slice.call(arguments)
721
+
722
+ function merge(target, obj) {
723
+ if (typeof target === 'object' && typeof obj === 'object') {
724
+ for (var key in obj) {
725
+ if (obj.hasOwnProperty(key)) {
726
+ target[key] = obj[key]
727
+ }
728
+ }
729
+ }
730
+
731
+ return target
732
+ }
733
+
734
+ for (var i = 1, end = args.length; i < end; i++) {
735
+ merge(args[0], args[i])
736
+ }
737
+ return args[0]
738
+ }
739
+
740
+ NoFrameworkAdapter.inArray = function(element, array, i) {
741
+ return array == null ? -1 : array.indexOf(element, i)
742
+ }
743
+
744
+ NoFrameworkAdapter.isEmptyObject = function(obj) {
745
+ /* eslint no-unused-vars: 0 */
746
+ for (var name in obj) {
747
+ return false
748
+ }
749
+ return true
750
+ }
751
+
752
+ Waypoint.adapters.push({
753
+ name: 'noframework',
754
+ Adapter: NoFrameworkAdapter
755
+ })
756
+ Waypoint.Adapter = NoFrameworkAdapter
757
+ }())
758
+ ;