growbot-web 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. checksums.yaml +7 -0
  2. data/.bowerrc +3 -0
  3. data/.gitignore +22 -0
  4. data/Gemfile +11 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +35 -0
  7. data/Rakefile +39 -0
  8. data/arduino_data.txt +6137 -0
  9. data/bower.json +19 -0
  10. data/config.ru +13 -0
  11. data/growbot-web.gemspec +35 -0
  12. data/lib/growbot/web.rb +6 -0
  13. data/lib/growbot/web/app.rb +49 -0
  14. data/lib/growbot/web/data.rb +42 -0
  15. data/lib/growbot/web/env.rb +9 -0
  16. data/lib/growbot/web/version.rb +5 -0
  17. data/lib/growbot/web/views/coffee/app.coffee +131 -0
  18. data/lib/growbot/web/views/index.haml +10 -0
  19. data/lib/growbot/web/views/layout.haml +20 -0
  20. data/lib/growbot/web/views/sass/app.scss +59 -0
  21. data/lib/growbot/web/views/sass/bitters/_bitters.scss +16 -0
  22. data/lib/growbot/web/views/sass/bitters/_flashes.scss +11 -0
  23. data/lib/growbot/web/views/sass/bitters/_forms.scss +95 -0
  24. data/lib/growbot/web/views/sass/bitters/_grid-settings.scss +14 -0
  25. data/lib/growbot/web/views/sass/bitters/_lists.scss +31 -0
  26. data/lib/growbot/web/views/sass/bitters/_tables.scss +22 -0
  27. data/lib/growbot/web/views/sass/bitters/_typography.scss +104 -0
  28. data/lib/growbot/web/views/sass/bitters/_variables.scss +43 -0
  29. data/lib/growbot/web/views/sass/bitters/extends/_base.scss +1 -0
  30. data/lib/growbot/web/views/sass/bitters/extends/_button.scss +7 -0
  31. data/lib/growbot/web/views/sass/bitters/mixins/_base.scss +1 -0
  32. data/lib/growbot/web/views/sass/bitters/mixins/_flash.scss +15 -0
  33. data/lib/growbot/web/views/sass/bourbon/_bourbon-deprecated-upcoming.scss +8 -0
  34. data/lib/growbot/web/views/sass/bourbon/_bourbon.scss +78 -0
  35. data/lib/growbot/web/views/sass/bourbon/addons/_button.scss +374 -0
  36. data/lib/growbot/web/views/sass/bourbon/addons/_clearfix.scss +23 -0
  37. data/lib/growbot/web/views/sass/bourbon/addons/_directional-values.scss +111 -0
  38. data/lib/growbot/web/views/sass/bourbon/addons/_ellipsis.scss +7 -0
  39. data/lib/growbot/web/views/sass/bourbon/addons/_font-family.scss +5 -0
  40. data/lib/growbot/web/views/sass/bourbon/addons/_hide-text.scss +10 -0
  41. data/lib/growbot/web/views/sass/bourbon/addons/_html5-input-types.scss +86 -0
  42. data/lib/growbot/web/views/sass/bourbon/addons/_position.scss +32 -0
  43. data/lib/growbot/web/views/sass/bourbon/addons/_prefixer.scss +45 -0
  44. data/lib/growbot/web/views/sass/bourbon/addons/_retina-image.scss +31 -0
  45. data/lib/growbot/web/views/sass/bourbon/addons/_size.scss +16 -0
  46. data/lib/growbot/web/views/sass/bourbon/addons/_timing-functions.scss +32 -0
  47. data/lib/growbot/web/views/sass/bourbon/addons/_triangle.scss +83 -0
  48. data/lib/growbot/web/views/sass/bourbon/addons/_word-wrap.scss +8 -0
  49. data/lib/growbot/web/views/sass/bourbon/css3/_animation.scss +52 -0
  50. data/lib/growbot/web/views/sass/bourbon/css3/_appearance.scss +3 -0
  51. data/lib/growbot/web/views/sass/bourbon/css3/_backface-visibility.scss +6 -0
  52. data/lib/growbot/web/views/sass/bourbon/css3/_background-image.scss +42 -0
  53. data/lib/growbot/web/views/sass/bourbon/css3/_background.scss +55 -0
  54. data/lib/growbot/web/views/sass/bourbon/css3/_border-image.scss +59 -0
  55. data/lib/growbot/web/views/sass/bourbon/css3/_border-radius.scss +22 -0
  56. data/lib/growbot/web/views/sass/bourbon/css3/_box-sizing.scss +4 -0
  57. data/lib/growbot/web/views/sass/bourbon/css3/_calc.scss +4 -0
  58. data/lib/growbot/web/views/sass/bourbon/css3/_columns.scss +47 -0
  59. data/lib/growbot/web/views/sass/bourbon/css3/_filter.scss +5 -0
  60. data/lib/growbot/web/views/sass/bourbon/css3/_flex-box.scss +321 -0
  61. data/lib/growbot/web/views/sass/bourbon/css3/_font-face.scss +23 -0
  62. data/lib/growbot/web/views/sass/bourbon/css3/_font-feature-settings.scss +10 -0
  63. data/lib/growbot/web/views/sass/bourbon/css3/_hidpi-media-query.scss +10 -0
  64. data/lib/growbot/web/views/sass/bourbon/css3/_hyphens.scss +4 -0
  65. data/lib/growbot/web/views/sass/bourbon/css3/_image-rendering.scss +14 -0
  66. data/lib/growbot/web/views/sass/bourbon/css3/_keyframes.scss +35 -0
  67. data/lib/growbot/web/views/sass/bourbon/css3/_linear-gradient.scss +38 -0
  68. data/lib/growbot/web/views/sass/bourbon/css3/_perspective.scss +8 -0
  69. data/lib/growbot/web/views/sass/bourbon/css3/_placeholder.scss +8 -0
  70. data/lib/growbot/web/views/sass/bourbon/css3/_radial-gradient.scss +39 -0
  71. data/lib/growbot/web/views/sass/bourbon/css3/_transform.scss +15 -0
  72. data/lib/growbot/web/views/sass/bourbon/css3/_transition.scss +77 -0
  73. data/lib/growbot/web/views/sass/bourbon/css3/_user-select.scss +3 -0
  74. data/lib/growbot/web/views/sass/bourbon/functions/_assign.scss +11 -0
  75. data/lib/growbot/web/views/sass/bourbon/functions/_color-lightness.scss +13 -0
  76. data/lib/growbot/web/views/sass/bourbon/functions/_flex-grid.scss +39 -0
  77. data/lib/growbot/web/views/sass/bourbon/functions/_golden-ratio.scss +3 -0
  78. data/lib/growbot/web/views/sass/bourbon/functions/_grid-width.scss +13 -0
  79. data/lib/growbot/web/views/sass/bourbon/functions/_modular-scale.scss +66 -0
  80. data/lib/growbot/web/views/sass/bourbon/functions/_px-to-em.scss +13 -0
  81. data/lib/growbot/web/views/sass/bourbon/functions/_px-to-rem.scss +15 -0
  82. data/lib/growbot/web/views/sass/bourbon/functions/_strip-units.scss +5 -0
  83. data/lib/growbot/web/views/sass/bourbon/functions/_tint-shade.scss +9 -0
  84. data/lib/growbot/web/views/sass/bourbon/functions/_transition-property-name.scss +22 -0
  85. data/lib/growbot/web/views/sass/bourbon/functions/_unpack.scss +17 -0
  86. data/lib/growbot/web/views/sass/bourbon/helpers/_convert-units.scss +15 -0
  87. data/lib/growbot/web/views/sass/bourbon/helpers/_gradient-positions-parser.scss +13 -0
  88. data/lib/growbot/web/views/sass/bourbon/helpers/_is-num.scss +8 -0
  89. data/lib/growbot/web/views/sass/bourbon/helpers/_linear-angle-parser.scss +25 -0
  90. data/lib/growbot/web/views/sass/bourbon/helpers/_linear-gradient-parser.scss +41 -0
  91. data/lib/growbot/web/views/sass/bourbon/helpers/_linear-positions-parser.scss +61 -0
  92. data/lib/growbot/web/views/sass/bourbon/helpers/_linear-side-corner-parser.scss +31 -0
  93. data/lib/growbot/web/views/sass/bourbon/helpers/_radial-arg-parser.scss +69 -0
  94. data/lib/growbot/web/views/sass/bourbon/helpers/_radial-gradient-parser.scss +50 -0
  95. data/lib/growbot/web/views/sass/bourbon/helpers/_radial-positions-parser.scss +18 -0
  96. data/lib/growbot/web/views/sass/bourbon/helpers/_render-gradients.scss +26 -0
  97. data/lib/growbot/web/views/sass/bourbon/helpers/_shape-size-stripper.scss +10 -0
  98. data/lib/growbot/web/views/sass/bourbon/helpers/_str-to-num.scss +50 -0
  99. data/lib/growbot/web/views/sass/bourbon/settings/_prefixer.scss +6 -0
  100. data/lib/growbot/web/views/sass/bourbon/settings/_px-to-em.scss +1 -0
  101. data/lib/growbot/web/views/sass/neat/_neat-helpers.scss +7 -0
  102. data/lib/growbot/web/views/sass/neat/_neat.scss +21 -0
  103. data/lib/growbot/web/views/sass/neat/functions/_new-breakpoint.scss +16 -0
  104. data/lib/growbot/web/views/sass/neat/functions/_private.scss +125 -0
  105. data/lib/growbot/web/views/sass/neat/grid/_fill-parent.scss +7 -0
  106. data/lib/growbot/web/views/sass/neat/grid/_grid.scss +5 -0
  107. data/lib/growbot/web/views/sass/neat/grid/_media.scss +38 -0
  108. data/lib/growbot/web/views/sass/neat/grid/_omega.scss +61 -0
  109. data/lib/growbot/web/views/sass/neat/grid/_outer-container.scss +8 -0
  110. data/lib/growbot/web/views/sass/neat/grid/_pad.scss +8 -0
  111. data/lib/growbot/web/views/sass/neat/grid/_private.scss +43 -0
  112. data/lib/growbot/web/views/sass/neat/grid/_reset.scss +12 -0
  113. data/lib/growbot/web/views/sass/neat/grid/_row.scss +17 -0
  114. data/lib/growbot/web/views/sass/neat/grid/_shift.scss +16 -0
  115. data/lib/growbot/web/views/sass/neat/grid/_span-columns.scss +43 -0
  116. data/lib/growbot/web/views/sass/neat/grid/_to-deprecate.scss +57 -0
  117. data/lib/growbot/web/views/sass/neat/grid/_visual-grid.scss +41 -0
  118. data/lib/growbot/web/views/sass/neat/settings/_grid.scss +7 -0
  119. data/lib/growbot/web/views/sass/neat/settings/_visual-grid.scss +5 -0
  120. data/lib/growbot/web/views/sass/refills/_navigation.scss +190 -0
  121. data/lib/growbot/web/views/sass/refills/_refills.scss +1 -0
  122. data/lib/growbot/web/views/sass/widgets/_big-number.scss +21 -0
  123. data/lib/growbot/web/views/sass/widgets/_widgets.scss +1 -0
  124. data/public/javascripts/app.js +150 -0
  125. data/public/stylesheets/app.css +1 -0
  126. data/public/vendor/colorbrewer/.bower.json +35 -0
  127. data/public/vendor/colorbrewer/LICENSE +38 -0
  128. data/public/vendor/colorbrewer/README.md +7 -0
  129. data/public/vendor/colorbrewer/bower.json +23 -0
  130. data/public/vendor/colorbrewer/colorbrewer.css +1690 -0
  131. data/public/vendor/colorbrewer/colorbrewer.js +302 -0
  132. data/public/vendor/d3/.bower.json +35 -0
  133. data/public/vendor/d3/CONTRIBUTING.md +25 -0
  134. data/public/vendor/d3/LICENSE +26 -0
  135. data/public/vendor/d3/README.md +9 -0
  136. data/public/vendor/d3/bower.json +24 -0
  137. data/public/vendor/d3/composer.json +19 -0
  138. data/public/vendor/d3/d3.js +9263 -0
  139. data/public/vendor/d3/d3.min.js +5 -0
  140. data/public/vendor/jquery/.bower.json +38 -0
  141. data/public/vendor/jquery/MIT-LICENSE.txt +21 -0
  142. data/public/vendor/jquery/bower.json +27 -0
  143. data/public/vendor/jquery/dist/jquery.js +9190 -0
  144. data/public/vendor/jquery/dist/jquery.min.js +5 -0
  145. data/public/vendor/jquery/dist/jquery.min.map +1 -0
  146. data/public/vendor/jquery/src/ajax.js +806 -0
  147. data/public/vendor/jquery/src/ajax/jsonp.js +89 -0
  148. data/public/vendor/jquery/src/ajax/load.js +75 -0
  149. data/public/vendor/jquery/src/ajax/parseJSON.js +13 -0
  150. data/public/vendor/jquery/src/ajax/parseXML.js +28 -0
  151. data/public/vendor/jquery/src/ajax/script.js +64 -0
  152. data/public/vendor/jquery/src/ajax/var/nonce.js +5 -0
  153. data/public/vendor/jquery/src/ajax/var/rquery.js +3 -0
  154. data/public/vendor/jquery/src/ajax/xhr.js +135 -0
  155. data/public/vendor/jquery/src/attributes.js +11 -0
  156. data/public/vendor/jquery/src/attributes/attr.js +143 -0
  157. data/public/vendor/jquery/src/attributes/classes.js +158 -0
  158. data/public/vendor/jquery/src/attributes/prop.js +96 -0
  159. data/public/vendor/jquery/src/attributes/support.js +35 -0
  160. data/public/vendor/jquery/src/attributes/val.js +163 -0
  161. data/public/vendor/jquery/src/callbacks.js +205 -0
  162. data/public/vendor/jquery/src/core.js +498 -0
  163. data/public/vendor/jquery/src/core/access.js +60 -0
  164. data/public/vendor/jquery/src/core/init.js +123 -0
  165. data/public/vendor/jquery/src/core/parseHTML.js +39 -0
  166. data/public/vendor/jquery/src/core/ready.js +97 -0
  167. data/public/vendor/jquery/src/core/var/rsingleTag.js +4 -0
  168. data/public/vendor/jquery/src/css.js +451 -0
  169. data/public/vendor/jquery/src/css/addGetHookIf.js +24 -0
  170. data/public/vendor/jquery/src/css/curCSS.js +57 -0
  171. data/public/vendor/jquery/src/css/defaultDisplay.js +70 -0
  172. data/public/vendor/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  173. data/public/vendor/jquery/src/css/support.js +91 -0
  174. data/public/vendor/jquery/src/css/swap.js +28 -0
  175. data/public/vendor/jquery/src/css/var/cssExpand.js +3 -0
  176. data/public/vendor/jquery/src/css/var/getStyles.js +5 -0
  177. data/public/vendor/jquery/src/css/var/isHidden.js +13 -0
  178. data/public/vendor/jquery/src/css/var/rmargin.js +3 -0
  179. data/public/vendor/jquery/src/css/var/rnumnonpx.js +5 -0
  180. data/public/vendor/jquery/src/data.js +179 -0
  181. data/public/vendor/jquery/src/data/Data.js +181 -0
  182. data/public/vendor/jquery/src/data/accepts.js +20 -0
  183. data/public/vendor/jquery/src/data/var/data_priv.js +5 -0
  184. data/public/vendor/jquery/src/data/var/data_user.js +5 -0
  185. data/public/vendor/jquery/src/deferred.js +149 -0
  186. data/public/vendor/jquery/src/deprecated.js +13 -0
  187. data/public/vendor/jquery/src/dimensions.js +50 -0
  188. data/public/vendor/jquery/src/effects.js +649 -0
  189. data/public/vendor/jquery/src/effects/Tween.js +114 -0
  190. data/public/vendor/jquery/src/effects/animatedSelector.js +13 -0
  191. data/public/vendor/jquery/src/event.js +868 -0
  192. data/public/vendor/jquery/src/event/alias.js +39 -0
  193. data/public/vendor/jquery/src/event/support.js +9 -0
  194. data/public/vendor/jquery/src/exports/amd.js +24 -0
  195. data/public/vendor/jquery/src/exports/global.js +32 -0
  196. data/public/vendor/jquery/src/intro.js +44 -0
  197. data/public/vendor/jquery/src/jquery.js +36 -0
  198. data/public/vendor/jquery/src/manipulation.js +582 -0
  199. data/public/vendor/jquery/src/manipulation/_evalUrl.js +18 -0
  200. data/public/vendor/jquery/src/manipulation/support.js +31 -0
  201. data/public/vendor/jquery/src/manipulation/var/rcheckableType.js +3 -0
  202. data/public/vendor/jquery/src/offset.js +204 -0
  203. data/public/vendor/jquery/src/outro.js +1 -0
  204. data/public/vendor/jquery/src/queue.js +142 -0
  205. data/public/vendor/jquery/src/queue/delay.js +22 -0
  206. data/public/vendor/jquery/src/selector-native.js +172 -0
  207. data/public/vendor/jquery/src/selector-sizzle.js +14 -0
  208. data/public/vendor/jquery/src/selector.js +1 -0
  209. data/public/vendor/jquery/src/serialize.js +111 -0
  210. data/public/vendor/jquery/src/sizzle/dist/sizzle.js +2044 -0
  211. data/public/vendor/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  212. data/public/vendor/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  213. data/public/vendor/jquery/src/traversing.js +200 -0
  214. data/public/vendor/jquery/src/traversing/findFilter.js +100 -0
  215. data/public/vendor/jquery/src/traversing/var/rneedsContext.js +6 -0
  216. data/public/vendor/jquery/src/var/arr.js +3 -0
  217. data/public/vendor/jquery/src/var/class2type.js +4 -0
  218. data/public/vendor/jquery/src/var/concat.js +5 -0
  219. data/public/vendor/jquery/src/var/hasOwn.js +5 -0
  220. data/public/vendor/jquery/src/var/indexOf.js +5 -0
  221. data/public/vendor/jquery/src/var/pnum.js +3 -0
  222. data/public/vendor/jquery/src/var/push.js +5 -0
  223. data/public/vendor/jquery/src/var/rnotwhite.js +3 -0
  224. data/public/vendor/jquery/src/var/slice.js +5 -0
  225. data/public/vendor/jquery/src/var/strundefined.js +3 -0
  226. data/public/vendor/jquery/src/var/support.js +4 -0
  227. data/public/vendor/jquery/src/var/toString.js +5 -0
  228. data/public/vendor/jquery/src/wrap.js +78 -0
  229. metadata +468 -0
@@ -0,0 +1,205 @@
1
+ define([
2
+ "./core",
3
+ "./var/rnotwhite"
4
+ ], function( jQuery, rnotwhite ) {
5
+
6
+ // String to Object options format cache
7
+ var optionsCache = {};
8
+
9
+ // Convert String-formatted options into Object-formatted ones and store in cache
10
+ function createOptions( options ) {
11
+ var object = optionsCache[ options ] = {};
12
+ jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
13
+ object[ flag ] = true;
14
+ });
15
+ return object;
16
+ }
17
+
18
+ /*
19
+ * Create a callback list using the following parameters:
20
+ *
21
+ * options: an optional list of space-separated options that will change how
22
+ * the callback list behaves or a more traditional option object
23
+ *
24
+ * By default a callback list will act like an event callback list and can be
25
+ * "fired" multiple times.
26
+ *
27
+ * Possible options:
28
+ *
29
+ * once: will ensure the callback list can only be fired once (like a Deferred)
30
+ *
31
+ * memory: will keep track of previous values and will call any callback added
32
+ * after the list has been fired right away with the latest "memorized"
33
+ * values (like a Deferred)
34
+ *
35
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
36
+ *
37
+ * stopOnFalse: interrupt callings when a callback returns false
38
+ *
39
+ */
40
+ jQuery.Callbacks = function( options ) {
41
+
42
+ // Convert options from String-formatted to Object-formatted if needed
43
+ // (we check in cache first)
44
+ options = typeof options === "string" ?
45
+ ( optionsCache[ options ] || createOptions( options ) ) :
46
+ jQuery.extend( {}, options );
47
+
48
+ var // Last fire value (for non-forgettable lists)
49
+ memory,
50
+ // Flag to know if list was already fired
51
+ fired,
52
+ // Flag to know if list is currently firing
53
+ firing,
54
+ // First callback to fire (used internally by add and fireWith)
55
+ firingStart,
56
+ // End of the loop when firing
57
+ firingLength,
58
+ // Index of currently firing callback (modified by remove if needed)
59
+ firingIndex,
60
+ // Actual callback list
61
+ list = [],
62
+ // Stack of fire calls for repeatable lists
63
+ stack = !options.once && [],
64
+ // Fire callbacks
65
+ fire = function( data ) {
66
+ memory = options.memory && data;
67
+ fired = true;
68
+ firingIndex = firingStart || 0;
69
+ firingStart = 0;
70
+ firingLength = list.length;
71
+ firing = true;
72
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
73
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
74
+ memory = false; // To prevent further calls using add
75
+ break;
76
+ }
77
+ }
78
+ firing = false;
79
+ if ( list ) {
80
+ if ( stack ) {
81
+ if ( stack.length ) {
82
+ fire( stack.shift() );
83
+ }
84
+ } else if ( memory ) {
85
+ list = [];
86
+ } else {
87
+ self.disable();
88
+ }
89
+ }
90
+ },
91
+ // Actual Callbacks object
92
+ self = {
93
+ // Add a callback or a collection of callbacks to the list
94
+ add: function() {
95
+ if ( list ) {
96
+ // First, we save the current length
97
+ var start = list.length;
98
+ (function add( args ) {
99
+ jQuery.each( args, function( _, arg ) {
100
+ var type = jQuery.type( arg );
101
+ if ( type === "function" ) {
102
+ if ( !options.unique || !self.has( arg ) ) {
103
+ list.push( arg );
104
+ }
105
+ } else if ( arg && arg.length && type !== "string" ) {
106
+ // Inspect recursively
107
+ add( arg );
108
+ }
109
+ });
110
+ })( arguments );
111
+ // Do we need to add the callbacks to the
112
+ // current firing batch?
113
+ if ( firing ) {
114
+ firingLength = list.length;
115
+ // With memory, if we're not firing then
116
+ // we should call right away
117
+ } else if ( memory ) {
118
+ firingStart = start;
119
+ fire( memory );
120
+ }
121
+ }
122
+ return this;
123
+ },
124
+ // Remove a callback from the list
125
+ remove: function() {
126
+ if ( list ) {
127
+ jQuery.each( arguments, function( _, arg ) {
128
+ var index;
129
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
130
+ list.splice( index, 1 );
131
+ // Handle firing indexes
132
+ if ( firing ) {
133
+ if ( index <= firingLength ) {
134
+ firingLength--;
135
+ }
136
+ if ( index <= firingIndex ) {
137
+ firingIndex--;
138
+ }
139
+ }
140
+ }
141
+ });
142
+ }
143
+ return this;
144
+ },
145
+ // Check if a given callback is in the list.
146
+ // If no argument is given, return whether or not list has callbacks attached.
147
+ has: function( fn ) {
148
+ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
149
+ },
150
+ // Remove all callbacks from the list
151
+ empty: function() {
152
+ list = [];
153
+ firingLength = 0;
154
+ return this;
155
+ },
156
+ // Have the list do nothing anymore
157
+ disable: function() {
158
+ list = stack = memory = undefined;
159
+ return this;
160
+ },
161
+ // Is it disabled?
162
+ disabled: function() {
163
+ return !list;
164
+ },
165
+ // Lock the list in its current state
166
+ lock: function() {
167
+ stack = undefined;
168
+ if ( !memory ) {
169
+ self.disable();
170
+ }
171
+ return this;
172
+ },
173
+ // Is it locked?
174
+ locked: function() {
175
+ return !stack;
176
+ },
177
+ // Call all callbacks with the given context and arguments
178
+ fireWith: function( context, args ) {
179
+ if ( list && ( !fired || stack ) ) {
180
+ args = args || [];
181
+ args = [ context, args.slice ? args.slice() : args ];
182
+ if ( firing ) {
183
+ stack.push( args );
184
+ } else {
185
+ fire( args );
186
+ }
187
+ }
188
+ return this;
189
+ },
190
+ // Call all the callbacks with the given arguments
191
+ fire: function() {
192
+ self.fireWith( this, arguments );
193
+ return this;
194
+ },
195
+ // To know if the callbacks have already been called at least once
196
+ fired: function() {
197
+ return !!fired;
198
+ }
199
+ };
200
+
201
+ return self;
202
+ };
203
+
204
+ return jQuery;
205
+ });
@@ -0,0 +1,498 @@
1
+ define([
2
+ "./var/arr",
3
+ "./var/slice",
4
+ "./var/concat",
5
+ "./var/push",
6
+ "./var/indexOf",
7
+ "./var/class2type",
8
+ "./var/toString",
9
+ "./var/hasOwn",
10
+ "./var/support"
11
+ ], function( arr, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) {
12
+
13
+ var
14
+ // Use the correct document accordingly with window argument (sandbox)
15
+ document = window.document,
16
+
17
+ version = "@VERSION",
18
+
19
+ // Define a local copy of jQuery
20
+ jQuery = function( selector, context ) {
21
+ // The jQuery object is actually just the init constructor 'enhanced'
22
+ // Need init if jQuery is called (just allow error to be thrown if not included)
23
+ return new jQuery.fn.init( selector, context );
24
+ },
25
+
26
+ // Support: Android<4.1
27
+ // Make sure we trim BOM and NBSP
28
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
29
+
30
+ // Matches dashed string for camelizing
31
+ rmsPrefix = /^-ms-/,
32
+ rdashAlpha = /-([\da-z])/gi,
33
+
34
+ // Used by jQuery.camelCase as callback to replace()
35
+ fcamelCase = function( all, letter ) {
36
+ return letter.toUpperCase();
37
+ };
38
+
39
+ jQuery.fn = jQuery.prototype = {
40
+ // The current version of jQuery being used
41
+ jquery: version,
42
+
43
+ constructor: jQuery,
44
+
45
+ // Start with an empty selector
46
+ selector: "",
47
+
48
+ // The default length of a jQuery object is 0
49
+ length: 0,
50
+
51
+ toArray: function() {
52
+ return slice.call( this );
53
+ },
54
+
55
+ // Get the Nth element in the matched element set OR
56
+ // Get the whole matched element set as a clean array
57
+ get: function( num ) {
58
+ return num != null ?
59
+
60
+ // Return just the one element from the set
61
+ ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
62
+
63
+ // Return all the elements in a clean array
64
+ slice.call( this );
65
+ },
66
+
67
+ // Take an array of elements and push it onto the stack
68
+ // (returning the new matched element set)
69
+ pushStack: function( elems ) {
70
+
71
+ // Build a new jQuery matched element set
72
+ var ret = jQuery.merge( this.constructor(), elems );
73
+
74
+ // Add the old object onto the stack (as a reference)
75
+ ret.prevObject = this;
76
+ ret.context = this.context;
77
+
78
+ // Return the newly-formed element set
79
+ return ret;
80
+ },
81
+
82
+ // Execute a callback for every element in the matched set.
83
+ // (You can seed the arguments with an array of args, but this is
84
+ // only used internally.)
85
+ each: function( callback, args ) {
86
+ return jQuery.each( this, callback, args );
87
+ },
88
+
89
+ map: function( callback ) {
90
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
91
+ return callback.call( elem, i, elem );
92
+ }));
93
+ },
94
+
95
+ slice: function() {
96
+ return this.pushStack( slice.apply( this, arguments ) );
97
+ },
98
+
99
+ first: function() {
100
+ return this.eq( 0 );
101
+ },
102
+
103
+ last: function() {
104
+ return this.eq( -1 );
105
+ },
106
+
107
+ eq: function( i ) {
108
+ var len = this.length,
109
+ j = +i + ( i < 0 ? len : 0 );
110
+ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
111
+ },
112
+
113
+ end: function() {
114
+ return this.prevObject || this.constructor(null);
115
+ },
116
+
117
+ // For internal use only.
118
+ // Behaves like an Array's method, not like a jQuery method.
119
+ push: push,
120
+ sort: arr.sort,
121
+ splice: arr.splice
122
+ };
123
+
124
+ jQuery.extend = jQuery.fn.extend = function() {
125
+ var options, name, src, copy, copyIsArray, clone,
126
+ target = arguments[0] || {},
127
+ i = 1,
128
+ length = arguments.length,
129
+ deep = false;
130
+
131
+ // Handle a deep copy situation
132
+ if ( typeof target === "boolean" ) {
133
+ deep = target;
134
+
135
+ // skip the boolean and the target
136
+ target = arguments[ i ] || {};
137
+ i++;
138
+ }
139
+
140
+ // Handle case when target is a string or something (possible in deep copy)
141
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
142
+ target = {};
143
+ }
144
+
145
+ // extend jQuery itself if only one argument is passed
146
+ if ( i === length ) {
147
+ target = this;
148
+ i--;
149
+ }
150
+
151
+ for ( ; i < length; i++ ) {
152
+ // Only deal with non-null/undefined values
153
+ if ( (options = arguments[ i ]) != null ) {
154
+ // Extend the base object
155
+ for ( name in options ) {
156
+ src = target[ name ];
157
+ copy = options[ name ];
158
+
159
+ // Prevent never-ending loop
160
+ if ( target === copy ) {
161
+ continue;
162
+ }
163
+
164
+ // Recurse if we're merging plain objects or arrays
165
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
166
+ if ( copyIsArray ) {
167
+ copyIsArray = false;
168
+ clone = src && jQuery.isArray(src) ? src : [];
169
+
170
+ } else {
171
+ clone = src && jQuery.isPlainObject(src) ? src : {};
172
+ }
173
+
174
+ // Never move original objects, clone them
175
+ target[ name ] = jQuery.extend( deep, clone, copy );
176
+
177
+ // Don't bring in undefined values
178
+ } else if ( copy !== undefined ) {
179
+ target[ name ] = copy;
180
+ }
181
+ }
182
+ }
183
+ }
184
+
185
+ // Return the modified object
186
+ return target;
187
+ };
188
+
189
+ jQuery.extend({
190
+ // Unique for each copy of jQuery on the page
191
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
192
+
193
+ // Assume jQuery is ready without the ready module
194
+ isReady: true,
195
+
196
+ error: function( msg ) {
197
+ throw new Error( msg );
198
+ },
199
+
200
+ noop: function() {},
201
+
202
+ // See test/unit/core.js for details concerning isFunction.
203
+ // Since version 1.3, DOM methods and functions like alert
204
+ // aren't supported. They return false on IE (#2968).
205
+ isFunction: function( obj ) {
206
+ return jQuery.type(obj) === "function";
207
+ },
208
+
209
+ isArray: Array.isArray,
210
+
211
+ isWindow: function( obj ) {
212
+ return obj != null && obj === obj.window;
213
+ },
214
+
215
+ isNumeric: function( obj ) {
216
+ // parseFloat NaNs numeric-cast false positives (null|true|false|"")
217
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
218
+ // subtraction forces infinities to NaN
219
+ return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
220
+ },
221
+
222
+ isPlainObject: function( obj ) {
223
+ // Not plain objects:
224
+ // - Any object or value whose internal [[Class]] property is not "[object Object]"
225
+ // - DOM nodes
226
+ // - window
227
+ if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
228
+ return false;
229
+ }
230
+
231
+ if ( obj.constructor &&
232
+ !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
233
+ return false;
234
+ }
235
+
236
+ // If the function hasn't returned already, we're confident that
237
+ // |obj| is a plain object, created by {} or constructed with new Object
238
+ return true;
239
+ },
240
+
241
+ isEmptyObject: function( obj ) {
242
+ var name;
243
+ for ( name in obj ) {
244
+ return false;
245
+ }
246
+ return true;
247
+ },
248
+
249
+ type: function( obj ) {
250
+ if ( obj == null ) {
251
+ return obj + "";
252
+ }
253
+ // Support: Android < 4.0, iOS < 6 (functionish RegExp)
254
+ return typeof obj === "object" || typeof obj === "function" ?
255
+ class2type[ toString.call(obj) ] || "object" :
256
+ typeof obj;
257
+ },
258
+
259
+ // Evaluates a script in a global context
260
+ globalEval: function( code ) {
261
+ var script,
262
+ indirect = eval;
263
+
264
+ code = jQuery.trim( code );
265
+
266
+ if ( code ) {
267
+ // If the code includes a valid, prologue position
268
+ // strict mode pragma, execute code by injecting a
269
+ // script tag into the document.
270
+ if ( code.indexOf("use strict") === 1 ) {
271
+ script = document.createElement("script");
272
+ script.text = code;
273
+ document.head.appendChild( script ).parentNode.removeChild( script );
274
+ } else {
275
+ // Otherwise, avoid the DOM node creation, insertion
276
+ // and removal by using an indirect global eval
277
+ indirect( code );
278
+ }
279
+ }
280
+ },
281
+
282
+ // Convert dashed to camelCase; used by the css and data modules
283
+ // Microsoft forgot to hump their vendor prefix (#9572)
284
+ camelCase: function( string ) {
285
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
286
+ },
287
+
288
+ nodeName: function( elem, name ) {
289
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
290
+ },
291
+
292
+ // args is for internal usage only
293
+ each: function( obj, callback, args ) {
294
+ var value,
295
+ i = 0,
296
+ length = obj.length,
297
+ isArray = isArraylike( obj );
298
+
299
+ if ( args ) {
300
+ if ( isArray ) {
301
+ for ( ; i < length; i++ ) {
302
+ value = callback.apply( obj[ i ], args );
303
+
304
+ if ( value === false ) {
305
+ break;
306
+ }
307
+ }
308
+ } else {
309
+ for ( i in obj ) {
310
+ value = callback.apply( obj[ i ], args );
311
+
312
+ if ( value === false ) {
313
+ break;
314
+ }
315
+ }
316
+ }
317
+
318
+ // A special, fast, case for the most common use of each
319
+ } else {
320
+ if ( isArray ) {
321
+ for ( ; i < length; i++ ) {
322
+ value = callback.call( obj[ i ], i, obj[ i ] );
323
+
324
+ if ( value === false ) {
325
+ break;
326
+ }
327
+ }
328
+ } else {
329
+ for ( i in obj ) {
330
+ value = callback.call( obj[ i ], i, obj[ i ] );
331
+
332
+ if ( value === false ) {
333
+ break;
334
+ }
335
+ }
336
+ }
337
+ }
338
+
339
+ return obj;
340
+ },
341
+
342
+ // Support: Android<4.1
343
+ trim: function( text ) {
344
+ return text == null ?
345
+ "" :
346
+ ( text + "" ).replace( rtrim, "" );
347
+ },
348
+
349
+ // results is for internal usage only
350
+ makeArray: function( arr, results ) {
351
+ var ret = results || [];
352
+
353
+ if ( arr != null ) {
354
+ if ( isArraylike( Object(arr) ) ) {
355
+ jQuery.merge( ret,
356
+ typeof arr === "string" ?
357
+ [ arr ] : arr
358
+ );
359
+ } else {
360
+ push.call( ret, arr );
361
+ }
362
+ }
363
+
364
+ return ret;
365
+ },
366
+
367
+ inArray: function( elem, arr, i ) {
368
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
369
+ },
370
+
371
+ merge: function( first, second ) {
372
+ var len = +second.length,
373
+ j = 0,
374
+ i = first.length;
375
+
376
+ for ( ; j < len; j++ ) {
377
+ first[ i++ ] = second[ j ];
378
+ }
379
+
380
+ first.length = i;
381
+
382
+ return first;
383
+ },
384
+
385
+ grep: function( elems, callback, invert ) {
386
+ var callbackInverse,
387
+ matches = [],
388
+ i = 0,
389
+ length = elems.length,
390
+ callbackExpect = !invert;
391
+
392
+ // Go through the array, only saving the items
393
+ // that pass the validator function
394
+ for ( ; i < length; i++ ) {
395
+ callbackInverse = !callback( elems[ i ], i );
396
+ if ( callbackInverse !== callbackExpect ) {
397
+ matches.push( elems[ i ] );
398
+ }
399
+ }
400
+
401
+ return matches;
402
+ },
403
+
404
+ // arg is for internal usage only
405
+ map: function( elems, callback, arg ) {
406
+ var value,
407
+ i = 0,
408
+ length = elems.length,
409
+ isArray = isArraylike( elems ),
410
+ ret = [];
411
+
412
+ // Go through the array, translating each of the items to their new values
413
+ if ( isArray ) {
414
+ for ( ; i < length; i++ ) {
415
+ value = callback( elems[ i ], i, arg );
416
+
417
+ if ( value != null ) {
418
+ ret.push( value );
419
+ }
420
+ }
421
+
422
+ // Go through every key on the object,
423
+ } else {
424
+ for ( i in elems ) {
425
+ value = callback( elems[ i ], i, arg );
426
+
427
+ if ( value != null ) {
428
+ ret.push( value );
429
+ }
430
+ }
431
+ }
432
+
433
+ // Flatten any nested arrays
434
+ return concat.apply( [], ret );
435
+ },
436
+
437
+ // A global GUID counter for objects
438
+ guid: 1,
439
+
440
+ // Bind a function to a context, optionally partially applying any
441
+ // arguments.
442
+ proxy: function( fn, context ) {
443
+ var tmp, args, proxy;
444
+
445
+ if ( typeof context === "string" ) {
446
+ tmp = fn[ context ];
447
+ context = fn;
448
+ fn = tmp;
449
+ }
450
+
451
+ // Quick check to determine if target is callable, in the spec
452
+ // this throws a TypeError, but we will just return undefined.
453
+ if ( !jQuery.isFunction( fn ) ) {
454
+ return undefined;
455
+ }
456
+
457
+ // Simulated bind
458
+ args = slice.call( arguments, 2 );
459
+ proxy = function() {
460
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
461
+ };
462
+
463
+ // Set the guid of unique handler to the same of original handler, so it can be removed
464
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
465
+
466
+ return proxy;
467
+ },
468
+
469
+ now: Date.now,
470
+
471
+ // jQuery.support is not used in Core but other projects attach their
472
+ // properties to it so it needs to exist.
473
+ support: support
474
+ });
475
+
476
+ // Populate the class2type map
477
+ jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
478
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
479
+ });
480
+
481
+ function isArraylike( obj ) {
482
+ var length = obj.length,
483
+ type = jQuery.type( obj );
484
+
485
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
486
+ return false;
487
+ }
488
+
489
+ if ( obj.nodeType === 1 && length ) {
490
+ return true;
491
+ }
492
+
493
+ return type === "array" || length === 0 ||
494
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
495
+ }
496
+
497
+ return jQuery;
498
+ });