less-rails-semantic_ui 1.12.3.0 → 2.0.0.0

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.
Files changed (197) hide show
  1. checksums.yaml +4 -4
  2. data/assets/javascripts/semantic_ui/definitions/behaviors/api.js +394 -188
  3. data/assets/javascripts/semantic_ui/definitions/behaviors/colorize.js +4 -2
  4. data/assets/javascripts/semantic_ui/definitions/behaviors/form.js +263 -125
  5. data/assets/javascripts/semantic_ui/definitions/behaviors/state.js +3 -3
  6. data/assets/javascripts/semantic_ui/definitions/behaviors/visibility.js +213 -96
  7. data/assets/javascripts/semantic_ui/definitions/behaviors/visit.js +6 -4
  8. data/assets/javascripts/semantic_ui/definitions/globals/site.js +4 -4
  9. data/assets/javascripts/semantic_ui/definitions/modules/accordion.js +66 -52
  10. data/assets/javascripts/semantic_ui/definitions/modules/checkbox.js +309 -112
  11. data/assets/javascripts/semantic_ui/definitions/modules/dimmer.js +24 -26
  12. data/assets/javascripts/semantic_ui/definitions/modules/dropdown.js +2005 -590
  13. data/assets/javascripts/semantic_ui/definitions/modules/embed.js +662 -0
  14. data/assets/javascripts/semantic_ui/definitions/modules/modal.js +106 -79
  15. data/assets/javascripts/semantic_ui/definitions/modules/nag.js +7 -8
  16. data/assets/javascripts/semantic_ui/definitions/modules/popup.js +323 -194
  17. data/assets/javascripts/semantic_ui/definitions/modules/progress.js +111 -103
  18. data/assets/javascripts/semantic_ui/definitions/modules/rating.js +78 -54
  19. data/assets/javascripts/semantic_ui/definitions/modules/search.js +304 -122
  20. data/assets/javascripts/semantic_ui/definitions/modules/shape.js +93 -47
  21. data/assets/javascripts/semantic_ui/definitions/modules/sidebar.js +83 -149
  22. data/assets/javascripts/semantic_ui/definitions/modules/sticky.js +99 -29
  23. data/assets/javascripts/semantic_ui/definitions/modules/tab.js +219 -124
  24. data/assets/javascripts/semantic_ui/definitions/modules/transition.js +202 -171
  25. data/assets/stylesheets/semantic_ui/definitions/collections/breadcrumb.less +2 -1
  26. data/assets/stylesheets/semantic_ui/definitions/collections/form.less +135 -58
  27. data/assets/stylesheets/semantic_ui/definitions/collections/grid.less +366 -383
  28. data/assets/stylesheets/semantic_ui/definitions/collections/menu.less +838 -631
  29. data/assets/stylesheets/semantic_ui/definitions/collections/message.less +89 -71
  30. data/assets/stylesheets/semantic_ui/definitions/collections/table.less +183 -131
  31. data/assets/stylesheets/semantic_ui/definitions/elements/button.less +1097 -300
  32. data/assets/stylesheets/semantic_ui/definitions/elements/container.less +135 -0
  33. data/assets/stylesheets/semantic_ui/definitions/elements/divider.less +31 -30
  34. data/assets/stylesheets/semantic_ui/definitions/elements/flag.less +1 -1
  35. data/assets/stylesheets/semantic_ui/definitions/elements/header.less +209 -121
  36. data/assets/stylesheets/semantic_ui/definitions/elements/icon.less +201 -96
  37. data/assets/stylesheets/semantic_ui/definitions/elements/image.less +26 -11
  38. data/assets/stylesheets/semantic_ui/definitions/elements/input.less +49 -14
  39. data/assets/stylesheets/semantic_ui/definitions/elements/label.less +391 -221
  40. data/assets/stylesheets/semantic_ui/definitions/elements/list.less +107 -68
  41. data/assets/stylesheets/semantic_ui/definitions/elements/loader.less +3 -1
  42. data/assets/stylesheets/semantic_ui/definitions/elements/rail.less +34 -25
  43. data/assets/stylesheets/semantic_ui/definitions/elements/reveal.less +25 -10
  44. data/assets/stylesheets/semantic_ui/definitions/elements/segment.less +261 -173
  45. data/assets/stylesheets/semantic_ui/definitions/elements/step.less +169 -70
  46. data/assets/stylesheets/semantic_ui/definitions/globals/reset.less +1 -1
  47. data/assets/stylesheets/semantic_ui/definitions/globals/site.less +3 -1
  48. data/assets/stylesheets/semantic_ui/definitions/modules/accordion.less +1 -2
  49. data/assets/stylesheets/semantic_ui/definitions/modules/checkbox.less +175 -103
  50. data/assets/stylesheets/semantic_ui/definitions/modules/dimmer.less +26 -15
  51. data/assets/stylesheets/semantic_ui/definitions/modules/dropdown.less +349 -80
  52. data/assets/stylesheets/semantic_ui/definitions/modules/embed.less +174 -0
  53. data/assets/stylesheets/semantic_ui/definitions/modules/modal.less +83 -36
  54. data/assets/stylesheets/semantic_ui/definitions/modules/nag.less +1 -1
  55. data/assets/stylesheets/semantic_ui/definitions/modules/popup.less +48 -7
  56. data/assets/stylesheets/semantic_ui/definitions/modules/progress.less +160 -107
  57. data/assets/stylesheets/semantic_ui/definitions/modules/rating.less +57 -54
  58. data/assets/stylesheets/semantic_ui/definitions/modules/search.less +55 -10
  59. data/assets/stylesheets/semantic_ui/definitions/modules/shape.less +5 -6
  60. data/assets/stylesheets/semantic_ui/definitions/modules/sidebar.less +9 -5
  61. data/assets/stylesheets/semantic_ui/definitions/modules/sticky.less +1 -1
  62. data/assets/stylesheets/semantic_ui/definitions/modules/tab.less +1 -1
  63. data/assets/stylesheets/semantic_ui/definitions/modules/transition.less +3 -4
  64. data/assets/stylesheets/semantic_ui/definitions/views/card.less +240 -130
  65. data/assets/stylesheets/semantic_ui/definitions/views/comment.less +1 -1
  66. data/assets/stylesheets/semantic_ui/definitions/views/feed.less +15 -8
  67. data/assets/stylesheets/semantic_ui/definitions/views/item.less +13 -13
  68. data/assets/stylesheets/semantic_ui/definitions/views/statistic.less +230 -86
  69. data/assets/stylesheets/semantic_ui/theme.less +22 -15
  70. data/assets/stylesheets/semantic_ui/themes/amazon/elements/button.overrides +5 -5
  71. data/assets/stylesheets/semantic_ui/themes/amazon/elements/button.variables +5 -4
  72. data/assets/stylesheets/semantic_ui/themes/basic/collections/table.variables +1 -0
  73. data/assets/stylesheets/semantic_ui/themes/basic/views/card.variables +6 -4
  74. data/assets/stylesheets/semantic_ui/themes/bookish/elements/header.variables +4 -4
  75. data/assets/stylesheets/semantic_ui/themes/bootstrap3/elements/button.variables +1 -1
  76. data/assets/stylesheets/semantic_ui/themes/chubby/collections/form.overrides +8 -0
  77. data/assets/stylesheets/semantic_ui/themes/chubby/collections/menu.overrides +0 -0
  78. data/assets/stylesheets/semantic_ui/themes/chubby/collections/menu.variables +40 -0
  79. data/assets/stylesheets/semantic_ui/themes/classic/modules/progress.variables +1 -0
  80. data/assets/stylesheets/semantic_ui/themes/classic/views/card.overrides +1 -1
  81. data/assets/stylesheets/semantic_ui/themes/colored/modules/checkbox.overrides +0 -0
  82. data/assets/stylesheets/semantic_ui/themes/colored/modules/checkbox.variables +17 -0
  83. data/assets/stylesheets/semantic_ui/themes/default/collections/breadcrumb.overrides +0 -0
  84. data/assets/stylesheets/semantic_ui/themes/default/collections/breadcrumb.variables +5 -15
  85. data/assets/stylesheets/semantic_ui/themes/default/collections/form.overrides +0 -0
  86. data/assets/stylesheets/semantic_ui/themes/default/collections/form.variables +31 -35
  87. data/assets/stylesheets/semantic_ui/themes/default/collections/grid.overrides +0 -0
  88. data/assets/stylesheets/semantic_ui/themes/default/collections/grid.variables +34 -28
  89. data/assets/stylesheets/semantic_ui/themes/default/collections/menu.overrides +0 -0
  90. data/assets/stylesheets/semantic_ui/themes/default/collections/menu.variables +259 -163
  91. data/assets/stylesheets/semantic_ui/themes/default/collections/message.overrides +0 -0
  92. data/assets/stylesheets/semantic_ui/themes/default/collections/message.variables +42 -19
  93. data/assets/stylesheets/semantic_ui/themes/default/collections/table.overrides +0 -3
  94. data/assets/stylesheets/semantic_ui/themes/default/collections/table.variables +63 -59
  95. data/assets/stylesheets/semantic_ui/themes/default/elements/button.overrides +0 -0
  96. data/assets/stylesheets/semantic_ui/themes/default/elements/button.variables +90 -50
  97. data/assets/stylesheets/semantic_ui/themes/default/elements/container.overrides +3 -0
  98. data/assets/stylesheets/semantic_ui/themes/default/elements/container.variables +45 -0
  99. data/assets/stylesheets/semantic_ui/themes/default/elements/divider.overrides +15 -0
  100. data/assets/stylesheets/semantic_ui/themes/default/elements/divider.variables +3 -4
  101. data/assets/stylesheets/semantic_ui/themes/default/elements/flag.overrides +0 -0
  102. data/assets/stylesheets/semantic_ui/themes/default/elements/header.overrides +0 -0
  103. data/assets/stylesheets/semantic_ui/themes/default/elements/header.variables +40 -36
  104. data/assets/stylesheets/semantic_ui/themes/default/elements/icon.overrides +4 -3
  105. data/assets/stylesheets/semantic_ui/themes/default/elements/icon.variables +29 -12
  106. data/assets/stylesheets/semantic_ui/themes/default/elements/image.overrides +0 -0
  107. data/assets/stylesheets/semantic_ui/themes/default/elements/image.variables +5 -3
  108. data/assets/stylesheets/semantic_ui/themes/default/elements/input.overrides +0 -0
  109. data/assets/stylesheets/semantic_ui/themes/default/elements/input.variables +10 -24
  110. data/assets/stylesheets/semantic_ui/themes/default/elements/label.overrides +0 -0
  111. data/assets/stylesheets/semantic_ui/themes/default/elements/label.variables +88 -35
  112. data/assets/stylesheets/semantic_ui/themes/default/elements/list.overrides +0 -0
  113. data/assets/stylesheets/semantic_ui/themes/default/elements/list.variables +53 -34
  114. data/assets/stylesheets/semantic_ui/themes/default/elements/loader.overrides +0 -0
  115. data/assets/stylesheets/semantic_ui/themes/default/elements/loader.variables +9 -10
  116. data/assets/stylesheets/semantic_ui/themes/default/elements/rail.overrides +0 -0
  117. data/assets/stylesheets/semantic_ui/themes/default/elements/rail.variables +13 -5
  118. data/assets/stylesheets/semantic_ui/themes/default/elements/reveal.overrides +0 -0
  119. data/assets/stylesheets/semantic_ui/themes/default/elements/reveal.variables +6 -4
  120. data/assets/stylesheets/semantic_ui/themes/default/elements/segment.overrides +0 -0
  121. data/assets/stylesheets/semantic_ui/themes/default/elements/segment.variables +66 -28
  122. data/assets/stylesheets/semantic_ui/themes/default/elements/step.overrides +0 -0
  123. data/assets/stylesheets/semantic_ui/themes/default/elements/step.variables +60 -31
  124. data/assets/stylesheets/semantic_ui/themes/default/globals/reset.overrides +0 -0
  125. data/assets/stylesheets/semantic_ui/themes/default/globals/site.variables +477 -303
  126. data/assets/stylesheets/semantic_ui/themes/default/modules/accordion.overrides +0 -0
  127. data/assets/stylesheets/semantic_ui/themes/default/modules/accordion.variables +6 -7
  128. data/assets/stylesheets/semantic_ui/themes/default/modules/chatroom.overrides +0 -0
  129. data/assets/stylesheets/semantic_ui/themes/default/modules/checkbox.overrides +19 -16
  130. data/assets/stylesheets/semantic_ui/themes/default/modules/checkbox.variables +71 -43
  131. data/assets/stylesheets/semantic_ui/themes/default/modules/dimmer.overrides +0 -0
  132. data/assets/stylesheets/semantic_ui/themes/default/modules/dimmer.variables +12 -9
  133. data/assets/stylesheets/semantic_ui/themes/default/modules/dropdown.overrides +0 -5
  134. data/assets/stylesheets/semantic_ui/themes/default/modules/dropdown.variables +146 -64
  135. data/assets/stylesheets/semantic_ui/themes/default/modules/{video.overrides → embed.overrides} +0 -0
  136. data/assets/stylesheets/semantic_ui/themes/default/modules/embed.variables +53 -0
  137. data/assets/stylesheets/semantic_ui/themes/default/modules/modal.overrides +0 -0
  138. data/assets/stylesheets/semantic_ui/themes/default/modules/modal.variables +24 -18
  139. data/assets/stylesheets/semantic_ui/themes/default/modules/nag.overrides +0 -0
  140. data/assets/stylesheets/semantic_ui/themes/default/modules/popup.overrides +0 -0
  141. data/assets/stylesheets/semantic_ui/themes/default/modules/popup.variables +3 -9
  142. data/assets/stylesheets/semantic_ui/themes/default/modules/progress.variables +13 -7
  143. data/assets/stylesheets/semantic_ui/themes/default/modules/rating.overrides +0 -0
  144. data/assets/stylesheets/semantic_ui/themes/default/modules/rating.variables +71 -33
  145. data/assets/stylesheets/semantic_ui/themes/default/modules/search.overrides +0 -0
  146. data/assets/stylesheets/semantic_ui/themes/default/modules/search.variables +36 -34
  147. data/assets/stylesheets/semantic_ui/themes/default/modules/shape.overrides +0 -0
  148. data/assets/stylesheets/semantic_ui/themes/default/modules/shape.variables +7 -2
  149. data/assets/stylesheets/semantic_ui/themes/default/modules/sidebar.overrides +0 -0
  150. data/assets/stylesheets/semantic_ui/themes/default/modules/sidebar.variables +2 -5
  151. data/assets/stylesheets/semantic_ui/themes/default/modules/sticky.overrides +0 -0
  152. data/assets/stylesheets/semantic_ui/themes/default/modules/sticky.variables +2 -7
  153. data/assets/stylesheets/semantic_ui/themes/default/modules/tab.variables +1 -3
  154. data/assets/stylesheets/semantic_ui/themes/default/modules/transition.overrides +8 -9
  155. data/assets/stylesheets/semantic_ui/themes/default/views/ad.variables +2 -2
  156. data/assets/stylesheets/semantic_ui/themes/default/views/card.variables +33 -23
  157. data/assets/stylesheets/semantic_ui/themes/default/views/comment.overrides +0 -0
  158. data/assets/stylesheets/semantic_ui/themes/default/views/feed.overrides +0 -0
  159. data/assets/stylesheets/semantic_ui/themes/default/views/feed.variables +15 -23
  160. data/assets/stylesheets/semantic_ui/themes/default/views/item.overrides +0 -0
  161. data/assets/stylesheets/semantic_ui/themes/default/views/item.variables +12 -11
  162. data/assets/stylesheets/semantic_ui/themes/default/views/statistic.overrides +0 -0
  163. data/assets/stylesheets/semantic_ui/themes/default/views/statistic.variables +25 -24
  164. data/assets/stylesheets/semantic_ui/themes/flat/collections/form.overrides +4 -0
  165. data/assets/stylesheets/semantic_ui/themes/flat/collections/form.variables +1 -2
  166. data/assets/stylesheets/semantic_ui/themes/flat/globals/site.variables +1 -0
  167. data/assets/stylesheets/semantic_ui/themes/github/collections/form.variables +1 -1
  168. data/assets/stylesheets/semantic_ui/themes/github/collections/menu.variables +10 -15
  169. data/assets/stylesheets/semantic_ui/themes/github/elements/button.variables +2 -2
  170. data/assets/stylesheets/semantic_ui/themes/github/elements/step.variables +2 -2
  171. data/assets/stylesheets/semantic_ui/themes/instagram/views/card.overrides +12 -0
  172. data/assets/stylesheets/semantic_ui/themes/instagram/views/card.variables +23 -0
  173. data/assets/stylesheets/semantic_ui/themes/material/collections/menu.overrides +1 -0
  174. data/assets/stylesheets/semantic_ui/themes/material/collections/menu.variables +10 -0
  175. data/assets/stylesheets/semantic_ui/themes/material/elements/button.overrides +1 -0
  176. data/assets/stylesheets/semantic_ui/themes/material/elements/button.variables +14 -6
  177. data/assets/stylesheets/semantic_ui/themes/material/globals/site.variables +3 -2
  178. data/assets/stylesheets/semantic_ui/themes/material/modules/dropdown.overrides +5 -0
  179. data/assets/stylesheets/semantic_ui/themes/material/modules/dropdown.variables +20 -0
  180. data/assets/stylesheets/semantic_ui/themes/raised/elements/button.variables +5 -5
  181. data/assets/stylesheets/semantic_ui/themes/round/elements/button.variables +1 -1
  182. data/assets/stylesheets/semantic_ui/themes/timeline/views/feed.overrides +4 -12
  183. data/assets/stylesheets/semantic_ui/themes/timeline/views/feed.variables +3 -7
  184. data/lib/generators/semantic_ui/install/templates/config/elements/container.overrides +3 -0
  185. data/lib/generators/semantic_ui/install/templates/config/elements/container.variables +3 -0
  186. data/lib/generators/semantic_ui/install/templates/config/modules/embed.overrides +3 -0
  187. data/lib/generators/semantic_ui/install/templates/config/modules/embed.variables +0 -0
  188. data/lib/generators/semantic_ui/install/templates/semantic_ui.css +2 -1
  189. data/lib/generators/semantic_ui/install/templates/semantic_ui.js +1 -1
  190. data/lib/generators/semantic_ui/install/templates/theme.config +5 -3
  191. data/lib/less/rails/semantic_ui/version.rb +1 -1
  192. data/tasks/update.rake +21 -6
  193. metadata +23 -7
  194. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.otf +0 -0
  195. data/assets/javascripts/semantic_ui/definitions/modules/video.js +0 -540
  196. data/assets/stylesheets/semantic_ui/definitions/modules/video.less +0 -135
  197. data/assets/stylesheets/semantic_ui/themes/default/modules/video.variables +0 -16
@@ -3,7 +3,7 @@
3
3
  * http://github.com/semantic-org/semantic-ui/
4
4
  *
5
5
  *
6
- * Copyright 2014 Contributors
6
+ * Copyright 2015 Contributors
7
7
  * Released under the MIT license
8
8
  * http://opensource.org/licenses/MIT
9
9
  *
@@ -472,7 +472,7 @@ $.fn.state = function(parameters) {
472
472
  });
473
473
  }
474
474
  clearTimeout(module.performance.timer);
475
- module.performance.timer = setTimeout(module.performance.display, 100);
475
+ module.performance.timer = setTimeout(module.performance.display, 500);
476
476
  },
477
477
  display: function() {
478
478
  var
@@ -589,7 +589,7 @@ $.fn.state.settings = {
589
589
  debug : false,
590
590
 
591
591
  // verbose debug output
592
- verbose : true,
592
+ verbose : false,
593
593
 
594
594
  // namespace for events
595
595
  namespace : 'state',
@@ -3,7 +3,7 @@
3
3
  * http://github.com/semantic-org/semantic-ui/
4
4
  *
5
5
  *
6
- * Copyright 2014 Contributors
6
+ * Copyright 2015 Contributors
7
7
  * Released under the MIT license
8
8
  * http://opensource.org/licenses/MIT
9
9
  *
@@ -37,6 +37,7 @@ $.fn.visibility = function(parameters) {
37
37
  className = settings.className,
38
38
  namespace = settings.namespace,
39
39
  error = settings.error,
40
+ metadata = settings.metadata,
40
41
 
41
42
  eventNamespace = '.' + namespace,
42
43
  moduleNamespace = 'module-' + namespace,
@@ -45,8 +46,10 @@ $.fn.visibility = function(parameters) {
45
46
 
46
47
  $module = $(this),
47
48
  $context = $(settings.context),
48
- selector = $module.selector || '',
49
49
 
50
+ $placeholder,
51
+
52
+ selector = $module.selector || '',
50
53
  instance = $module.data(moduleNamespace),
51
54
 
52
55
  requestAnimationFrame = window.requestAnimationFrame
@@ -56,6 +59,8 @@ $.fn.visibility = function(parameters) {
56
59
  || function(callback) { setTimeout(callback, 0); },
57
60
 
58
61
  element = this,
62
+ disabled = false,
63
+
59
64
  observer,
60
65
  module
61
66
  ;
@@ -66,23 +71,27 @@ $.fn.visibility = function(parameters) {
66
71
  module.debug('Initializing', settings);
67
72
 
68
73
  module.setup.cache();
69
- module.save.position();
70
74
 
71
75
  if( module.should.trackChanges() ) {
72
- module.bind.events();
76
+
73
77
  if(settings.type == 'image') {
74
78
  module.setup.image();
75
79
  }
76
80
  if(settings.type == 'fixed') {
77
81
  module.setup.fixed();
78
82
  }
83
+
79
84
  if(settings.observeChanges) {
80
85
  module.observeChanges();
81
86
  }
82
- if( !module.is.visible() ) {
83
- module.error(error.visible, $module);
84
- }
87
+ module.bind.events();
85
88
  }
89
+
90
+ module.save.position();
91
+ if( !module.is.visible() ) {
92
+ module.error(error.visible, $module);
93
+ }
94
+
86
95
  if(settings.initialCheck) {
87
96
  module.checkVisibility();
88
97
  }
@@ -103,10 +112,12 @@ $.fn.visibility = function(parameters) {
103
112
  observer.disconnect();
104
113
  }
105
114
  $window
106
- .off('load' + eventNamespace, module.event.load)
115
+ .off('load' + eventNamespace, module.event.load)
107
116
  .off('resize' + eventNamespace, module.event.resize)
108
117
  ;
109
- $context.off('scrollchange' + eventNamespace, module.event.scrollchange);
118
+ $context
119
+ .off('scrollchange' + eventNamespace, module.event.scrollchange)
120
+ ;
110
121
  $module
111
122
  .off(eventNamespace)
112
123
  .removeData(moduleNamespace)
@@ -114,9 +125,6 @@ $.fn.visibility = function(parameters) {
114
125
  },
115
126
 
116
127
  observeChanges: function() {
117
- var
118
- context = $context[0]
119
- ;
120
128
  if('MutationObserver' in window) {
121
129
  observer = new MutationObserver(function(mutations) {
122
130
  module.verbose('DOM tree modified, updating visibility calculations');
@@ -136,55 +144,29 @@ $.fn.visibility = function(parameters) {
136
144
  bind: {
137
145
  events: function() {
138
146
  module.verbose('Binding visibility events to scroll and resize');
147
+ if(settings.refreshOnLoad) {
148
+ $window
149
+ .on('load' + eventNamespace, module.event.load)
150
+ ;
151
+ }
139
152
  $window
140
- .on('load' + eventNamespace, module.event.load)
141
153
  .on('resize' + eventNamespace, module.event.resize)
142
154
  ;
143
155
  // pub/sub pattern
144
156
  $context
145
- .off('scroll' + eventNamespace)
146
- .on('scroll' + eventNamespace, module.event.scroll)
157
+ .off('scroll' + eventNamespace)
158
+ .on('scroll' + eventNamespace, module.event.scroll)
147
159
  .on('scrollchange' + eventNamespace, module.event.scrollchange)
148
160
  ;
149
- },
150
- imageLoad: function() {
151
- var
152
- $images = $module.find('img'),
153
- imageCount = $images.length,
154
- index = imageCount,
155
- loadedCount = 0,
156
- images = [],
157
- cache = [],
158
- cacheImage = document.createElement('img'),
159
- handleLoad = function() {
160
- loadedCount++;
161
- if(loadedCount >= imageCount) {
162
- module.debug('Images finished loading inside element, refreshing position');
163
- module.refresh();
164
- }
165
- }
166
- ;
167
- if(imageCount > 0) {
168
- $images
169
- .each(function() {
170
- images.push( $(this).attr('src') );
171
- })
172
- ;
173
- while(index--) {
174
- cacheImage = document.createElement('img');
175
- cacheImage.onload = handleLoad;
176
- cacheImage.onerror = handleLoad;
177
- cacheImage.src = images[index];
178
- cache.push(cacheImage);
179
- }
180
- }
181
161
  }
182
162
  },
183
163
 
184
164
  event: {
185
165
  resize: function() {
186
166
  module.debug('Window resized');
187
- requestAnimationFrame(module.refresh);
167
+ if(settings.refreshOnResize) {
168
+ requestAnimationFrame(module.refresh);
169
+ }
188
170
  },
189
171
  load: function() {
190
172
  module.debug('Page finished loading');
@@ -195,12 +177,12 @@ $.fn.visibility = function(parameters) {
195
177
  if(settings.throttle) {
196
178
  clearTimeout(module.timer);
197
179
  module.timer = setTimeout(function() {
198
- $context.trigger('scrollchange' + eventNamespace, [ $context.scrollTop() ]);
180
+ $context.triggerHandler('scrollchange' + eventNamespace, [ $context.scrollTop() ]);
199
181
  }, settings.throttle);
200
182
  }
201
183
  else {
202
184
  requestAnimationFrame(function() {
203
- $context.trigger('scrollchange' + eventNamespace, [ $context.scrollTop() ]);
185
+ $context.triggerHandler('scrollchange' + eventNamespace, [ $context.scrollTop() ]);
204
186
  });
205
187
  }
206
188
  },
@@ -237,6 +219,16 @@ $.fn.visibility = function(parameters) {
237
219
  }
238
220
  },
239
221
 
222
+ enableCallbacks: function() {
223
+ module.debug('Allowing callbacks to occur');
224
+ disabled = false;
225
+ },
226
+
227
+ disableCallbacks: function() {
228
+ module.debug('Disabling all callbacks temporarily');
229
+ disabled = true;
230
+ },
231
+
240
232
  should: {
241
233
  trackChanges: function() {
242
234
  if(methodInvoked) {
@@ -258,31 +250,37 @@ $.fn.visibility = function(parameters) {
258
250
  },
259
251
  image: function() {
260
252
  var
261
- src = $module.data('src')
253
+ src = $module.data(metadata.src)
262
254
  ;
263
255
  if(src) {
264
256
  module.verbose('Lazy loading image', src);
257
+ settings.once = true;
265
258
  settings.observeChanges = false;
259
+
266
260
  // show when top visible
267
- module.topVisible(function() {
268
- module.debug('Image top visible', element);
261
+ settings.onOnScreen = function() {
262
+ module.debug('Image on screen', element);
269
263
  module.precache(src, function() {
270
264
  module.set.image(src);
271
- settings.onTopVisible = false;
272
265
  });
273
- });
266
+ };
274
267
  }
275
268
  },
276
269
  fixed: function() {
277
- module.verbose('Setting up fixed on element pass');
278
- settings.once = false;
270
+ module.debug('Setting up fixed');
271
+ settings.once = false;
272
+ settings.observeChanges = false;
273
+ settings.initialCheck = true;
274
+ settings.refreshOnLoad = true;
275
+ if(!parameters.transition) {
276
+ settings.transition = false;
277
+ }
278
+ module.create.placeholder();
279
+ module.debug('Added placeholder', $placeholder);
279
280
  settings.onTopPassed = function() {
280
- $module
281
- .addClass(className.fixed)
282
- .css({
283
- top: settings.offset + 'px'
284
- })
285
- ;
281
+ module.debug('Element passed, adding fixed position', $module);
282
+ module.show.placeholder();
283
+ module.set.fixed();
286
284
  if(settings.transition) {
287
285
  if($.fn.transition !== undefined) {
288
286
  $module.transition(settings.transition, settings.duration);
@@ -290,49 +288,91 @@ $.fn.visibility = function(parameters) {
290
288
  }
291
289
  };
292
290
  settings.onTopPassedReverse = function() {
293
- $module
294
- .removeClass(className.fixed)
295
- .css({
296
- position: '',
297
- top: ''
298
- })
299
- ;
291
+ module.debug('Element returned to position, removing fixed', $module);
292
+ module.hide.placeholder();
293
+ module.remove.fixed();
300
294
  };
301
295
  }
302
296
  },
303
297
 
298
+ create: {
299
+ placeholder: function() {
300
+ module.verbose('Creating fixed position placeholder');
301
+ $placeholder = $module
302
+ .clone(false)
303
+ .css('display', 'none')
304
+ .addClass(className.placeholder)
305
+ .insertAfter($module)
306
+ ;
307
+ }
308
+ },
309
+
310
+ show: {
311
+ placeholder: function() {
312
+ module.verbose('Showing placeholder');
313
+ $placeholder
314
+ .css('display', 'block')
315
+ .css('visibility', 'hidden')
316
+ ;
317
+ }
318
+ },
319
+ hide: {
320
+ placeholder: function() {
321
+ module.verbose('Hiding placeholder');
322
+ $placeholder
323
+ .css('display', 'none')
324
+ .css('visibility', '')
325
+ ;
326
+ }
327
+ },
328
+
304
329
  set: {
305
- image: function(src) {
306
- var
307
- offScreen = (module.cache.screen.bottom < module.cache.element.top)
330
+ fixed: function() {
331
+ module.verbose('Setting element to fixed position');
332
+ $module
333
+ .addClass(className.fixed)
334
+ .css({
335
+ position : 'fixed',
336
+ top : settings.offset + 'px',
337
+ left : 'auto',
338
+ zIndex : '1'
339
+ })
308
340
  ;
341
+ },
342
+ image: function(src) {
309
343
  $module
310
344
  .attr('src', src)
311
345
  ;
312
- if(offScreen) {
313
- module.verbose('Image outside browser, no show animation');
314
- $module.show();
315
- }
316
- else {
317
- if(settings.transition) {
318
- if( $.fn.transition !== undefined ) {
319
- $module.transition(settings.transition, settings.duration);
320
- }
321
- else {
322
- $module.fadeIn(settings.duration);
323
- }
346
+ if(settings.transition) {
347
+ if( $.fn.transition !== undefined ) {
348
+ $module.transition(settings.transition, settings.duration);
324
349
  }
325
350
  else {
326
- $module.show();
351
+ $module.fadeIn(settings.duration);
327
352
  }
328
353
  }
354
+ else {
355
+ $module.show();
356
+ }
329
357
  }
330
358
  },
331
359
 
332
360
  is: {
361
+ onScreen: function() {
362
+ var
363
+ calculations = module.get.elementCalculations()
364
+ ;
365
+ return calculations.onScreen;
366
+ },
367
+ offScreen: function() {
368
+ var
369
+ calculations = module.get.elementCalculations()
370
+ ;
371
+ return calculations.offScreen;
372
+ },
333
373
  visible: function() {
334
374
  if(module.cache && module.cache.element) {
335
- return (module.cache.element.width > 0);
375
+ return !(module.cache.element.width === 0 && module.cache.element.offset.top === 0);
336
376
  }
337
377
  return false;
338
378
  }
@@ -340,9 +380,15 @@ $.fn.visibility = function(parameters) {
340
380
 
341
381
  refresh: function() {
342
382
  module.debug('Refreshing constants (width/height)');
383
+ if(settings.type == 'fixed') {
384
+ module.remove.fixed();
385
+ module.remove.occurred();
386
+ }
343
387
  module.reset();
344
388
  module.save.position();
345
- module.checkVisibility();
389
+ if(settings.checkOnRefresh) {
390
+ module.checkVisibility();
391
+ }
346
392
  settings.onRefresh.call(element);
347
393
  },
348
394
 
@@ -357,7 +403,7 @@ $.fn.visibility = function(parameters) {
357
403
  checkVisibility: function(scroll) {
358
404
  module.verbose('Checking visibility of element', module.cache.element);
359
405
 
360
- if( module.is.visible() ) {
406
+ if( !disabled && module.is.visible() ) {
361
407
 
362
408
  // save scroll position
363
409
  module.save.scroll(scroll);
@@ -376,6 +422,8 @@ $.fn.visibility = function(parameters) {
376
422
  module.bottomPassedReverse();
377
423
 
378
424
  // one time
425
+ module.onScreen();
426
+ module.offScreen();
379
427
  module.passing();
380
428
  module.topVisible();
381
429
  module.bottomVisible();
@@ -395,7 +443,7 @@ $.fn.visibility = function(parameters) {
395
443
  amountInPixels
396
444
  ;
397
445
  // assign callback
398
- if(amount !== undefined && newCallback !== undefined) {
446
+ if(amount && newCallback) {
399
447
  settings.onPassed[amount] = newCallback;
400
448
  }
401
449
  else if(amount !== undefined) {
@@ -413,6 +461,48 @@ $.fn.visibility = function(parameters) {
413
461
  }
414
462
  },
415
463
 
464
+ onScreen: function(newCallback) {
465
+ var
466
+ calculations = module.get.elementCalculations(),
467
+ callback = newCallback || settings.onOnScreen,
468
+ callbackName = 'onScreen'
469
+ ;
470
+ if(newCallback) {
471
+ module.debug('Adding callback for onScreen', newCallback);
472
+ settings.onOnScreen = newCallback;
473
+ }
474
+ if(calculations.onScreen) {
475
+ module.execute(callback, callbackName);
476
+ }
477
+ else if(!settings.once) {
478
+ module.remove.occurred(callbackName);
479
+ }
480
+ if(newCallback !== undefined) {
481
+ return calculations.onOnScreen;
482
+ }
483
+ },
484
+
485
+ offScreen: function(newCallback) {
486
+ var
487
+ calculations = module.get.elementCalculations(),
488
+ callback = newCallback || settings.onOffScreen,
489
+ callbackName = 'offScreen'
490
+ ;
491
+ if(newCallback) {
492
+ module.debug('Adding callback for offScreen', newCallback);
493
+ settings.onOffScreen = newCallback;
494
+ }
495
+ if(calculations.offScreen) {
496
+ module.execute(callback, callbackName);
497
+ }
498
+ else if(!settings.once) {
499
+ module.remove.occurred(callbackName);
500
+ }
501
+ if(newCallback !== undefined) {
502
+ return calculations.onOffScreen;
503
+ }
504
+ },
505
+
416
506
  passing: function(newCallback) {
417
507
  var
418
508
  calculations = module.get.elementCalculations(),
@@ -655,9 +745,24 @@ $.fn.visibility = function(parameters) {
655
745
  },
656
746
 
657
747
  remove: {
748
+ fixed: function() {
749
+ module.debug('Removing fixed position');
750
+ $module
751
+ .removeClass(className.fixed)
752
+ .css({
753
+ position : '',
754
+ top : '',
755
+ left : '',
756
+ zIndex : ''
757
+ })
758
+ ;
759
+ },
658
760
  occurred: function(callback) {
659
761
  if(callback) {
660
- if(module.cache.occurred[callback] !== undefined && module.cache.occurred[callback] === true) {
762
+ var
763
+ occurred = module.cache.occurred
764
+ ;
765
+ if(occurred[callback] !== undefined && occurred[callback] === true) {
661
766
  module.debug('Callback can now be called again', callback);
662
767
  module.cache.occurred[callback] = false;
663
768
  }
@@ -747,9 +852,9 @@ $.fn.visibility = function(parameters) {
747
852
  element.percentagePassed = 0;
748
853
 
749
854
  // meta calculations
750
- element.visible = (element.topVisible || element.bottomVisible);
751
- element.passing = (element.topPassed && !element.bottomPassed);
752
- element.hidden = (!element.topVisible && !element.bottomVisible);
855
+ element.onScreen = (element.topVisible && !element.bottomPassed);
856
+ element.passing = (element.topPassed && !element.bottomPassed);
857
+ element.offScreen = (!element.onScreen);
753
858
 
754
859
  // passing calculations
755
860
  if(element.passing) {
@@ -1001,6 +1106,8 @@ $.fn.visibility = function(parameters) {
1001
1106
  if(instance === undefined) {
1002
1107
  module.initialize();
1003
1108
  }
1109
+ instance.save.scroll();
1110
+ instance.save.calculations();
1004
1111
  module.invoke(query);
1005
1112
  }
1006
1113
  else {
@@ -1058,13 +1165,18 @@ $.fn.visibility.settings = {
1058
1165
  type : false,
1059
1166
 
1060
1167
  // image only animation settings
1061
- transition : false,
1168
+ transition : 'fade in',
1062
1169
  duration : 1000,
1063
1170
 
1064
1171
  // array of callbacks for percentage
1065
1172
  onPassed : {},
1066
1173
 
1174
+ // should call callbacks on refresh event (resize, etc)
1175
+ checkOnRefresh : true,
1176
+
1067
1177
  // standard callbacks
1178
+ onOnScreen : false,
1179
+ onOffScreen : false,
1068
1180
  onPassing : false,
1069
1181
  onTopVisible : false,
1070
1182
  onBottomVisible : false,
@@ -1082,8 +1194,13 @@ $.fn.visibility.settings = {
1082
1194
  onUpdate : false, // disabled by default for performance
1083
1195
  onRefresh : function(){},
1084
1196
 
1197
+ metadata : {
1198
+ src: 'src'
1199
+ },
1200
+
1085
1201
  className: {
1086
- fixed: 'fixed'
1202
+ fixed : 'fixed',
1203
+ placeholder : 'placeholder'
1087
1204
  },
1088
1205
 
1089
1206
  error : {