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 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
+ ;