foundation-rails 5.5.3.2 → 6.1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +2 -8
  4. data/Rakefile +23 -0
  5. data/app/views/foundation/rails/styleguide/show.html.erb +2 -5
  6. data/bower.json +2 -2
  7. data/lib/foundation/rails/version.rb +1 -1
  8. data/lib/generators/foundation/install_generator.rb +6 -3
  9. data/lib/generators/foundation/templates/_settings.scss +546 -0
  10. data/lib/generators/foundation/templates/application.html.erb +0 -1
  11. data/lib/generators/foundation/templates/application.html.haml +0 -2
  12. data/lib/generators/foundation/templates/application.html.slim +0 -2
  13. data/lib/generators/foundation/templates/foundation_and_overrides.scss +51 -0
  14. data/vendor/assets/js/foundation.abide.js +418 -0
  15. data/vendor/assets/js/foundation.accordion.js +229 -0
  16. data/vendor/assets/js/foundation.accordionMenu.js +262 -0
  17. data/vendor/assets/js/foundation.core.js +378 -0
  18. data/vendor/assets/js/foundation.drilldown.js +321 -0
  19. data/vendor/assets/js/foundation.dropdown.js +390 -0
  20. data/vendor/assets/js/foundation.dropdownMenu.js +391 -0
  21. data/vendor/assets/js/foundation.equalizer.js +274 -0
  22. data/vendor/assets/js/foundation.interchange.js +184 -0
  23. data/vendor/assets/js/foundation.js +28 -0
  24. data/vendor/assets/js/foundation.magellan.js +212 -0
  25. data/vendor/assets/js/foundation.offcanvas.js +371 -0
  26. data/vendor/assets/js/foundation.orbit.js +419 -0
  27. data/vendor/assets/js/foundation.responsiveMenu.js +145 -0
  28. data/vendor/assets/js/foundation.responsiveToggle.js +106 -0
  29. data/vendor/assets/js/foundation.reveal.js +478 -0
  30. data/vendor/assets/js/foundation.slider.js +484 -0
  31. data/vendor/assets/js/foundation.sticky.js +436 -0
  32. data/vendor/assets/js/foundation.tabs.js +306 -0
  33. data/vendor/assets/js/foundation.toggler.js +147 -0
  34. data/vendor/assets/js/foundation.tooltip.js +429 -0
  35. data/vendor/assets/js/foundation.util.box.js +169 -0
  36. data/vendor/assets/js/foundation.util.keyboard.js +115 -0
  37. data/vendor/assets/js/foundation.util.mediaQuery.js +210 -0
  38. data/vendor/assets/js/foundation.util.motion.js +89 -0
  39. data/vendor/assets/js/foundation.util.nest.js +64 -0
  40. data/vendor/assets/js/foundation.util.timerAndImageLoader.js +78 -0
  41. data/vendor/assets/js/foundation.util.touch.js +339 -0
  42. data/vendor/assets/js/foundation.util.triggers.js +222 -0
  43. data/vendor/assets/scss/_global.scss +626 -0
  44. data/vendor/assets/scss/components/_accordion-menu.scss +32 -0
  45. data/vendor/assets/scss/components/_accordion.scss +113 -0
  46. data/vendor/assets/scss/components/_badge.scss +55 -0
  47. data/vendor/assets/scss/components/_breadcrumbs.scss +94 -0
  48. data/vendor/assets/scss/components/_button-group.scss +130 -0
  49. data/vendor/assets/scss/components/_button.scss +265 -0
  50. data/vendor/assets/scss/components/_callout.scss +105 -0
  51. data/vendor/assets/scss/components/_close-button.scss +61 -0
  52. data/vendor/assets/scss/components/_drilldown.scss +75 -0
  53. data/vendor/assets/scss/components/_dropdown-menu.scss +148 -0
  54. data/vendor/assets/scss/components/_dropdown.scss +64 -0
  55. data/vendor/assets/scss/components/_flex-video.scss +63 -0
  56. data/vendor/assets/scss/components/_float.scss +27 -0
  57. data/vendor/assets/scss/components/_label.scss +56 -0
  58. data/vendor/assets/scss/components/_media-object.scss +74 -0
  59. data/vendor/assets/scss/components/_menu.scss +209 -0
  60. data/vendor/assets/scss/components/_off-canvas.scss +180 -0
  61. data/vendor/assets/scss/components/_orbit.scss +193 -0
  62. data/vendor/assets/scss/components/_pagination.scss +158 -0
  63. data/vendor/assets/scss/components/_progress-bar.scss +83 -0
  64. data/vendor/assets/scss/components/_reveal.scss +156 -0
  65. data/vendor/assets/scss/components/_slider.scss +158 -0
  66. data/vendor/assets/scss/components/_sticky.scss +38 -0
  67. data/vendor/assets/scss/components/_switch.scss +232 -0
  68. data/vendor/assets/scss/components/_table.scss +213 -0
  69. data/vendor/assets/scss/components/_tabs.scss +170 -0
  70. data/vendor/assets/scss/components/_thumbnail.scss +54 -0
  71. data/vendor/assets/scss/components/_title-bar.scss +68 -0
  72. data/vendor/assets/scss/components/_tooltip.scss +100 -0
  73. data/vendor/assets/scss/components/_top-bar.scss +89 -0
  74. data/vendor/assets/scss/components/_visibility.scss +131 -0
  75. data/vendor/assets/scss/forms/_checkbox.scss +36 -0
  76. data/vendor/assets/scss/forms/_error.scss +82 -0
  77. data/vendor/assets/scss/forms/_fieldset.scss +53 -0
  78. data/vendor/assets/scss/forms/_forms.scss +32 -0
  79. data/vendor/assets/scss/forms/_help-text.scss +30 -0
  80. data/vendor/assets/scss/forms/_input-group.scss +91 -0
  81. data/vendor/assets/scss/forms/_label.scss +48 -0
  82. data/vendor/assets/scss/forms/_select.scss +63 -0
  83. data/vendor/assets/scss/forms/_text.scss +154 -0
  84. data/vendor/assets/scss/foundation.scss +91 -0
  85. data/vendor/assets/scss/grid/_classes.scss +153 -0
  86. data/vendor/assets/scss/grid/_column.scss +124 -0
  87. data/vendor/assets/scss/grid/_flex-grid.scss +281 -0
  88. data/vendor/assets/scss/grid/_grid.scss +48 -0
  89. data/vendor/assets/scss/grid/_gutter.scss +34 -0
  90. data/vendor/assets/scss/grid/_layout.scss +33 -0
  91. data/vendor/assets/scss/grid/_position.scss +72 -0
  92. data/vendor/assets/scss/grid/_row.scss +97 -0
  93. data/vendor/assets/scss/grid/_size.scss +24 -0
  94. data/vendor/assets/scss/settings/_settings.scss +547 -0
  95. data/vendor/assets/scss/typography/_alignment.scss +22 -0
  96. data/vendor/assets/scss/typography/_base.scss +439 -0
  97. data/vendor/assets/scss/typography/_helpers.scss +77 -0
  98. data/vendor/assets/scss/typography/_print.scss +73 -0
  99. data/vendor/assets/scss/typography/_typography.scss +28 -0
  100. data/vendor/assets/scss/util/_breakpoint.scss +266 -0
  101. data/vendor/assets/scss/util/_color.scss +41 -0
  102. data/vendor/assets/scss/util/_mixins.scss +223 -0
  103. data/vendor/assets/scss/util/_selector.scss +40 -0
  104. data/vendor/assets/scss/util/_unit.scss +90 -0
  105. data/vendor/assets/scss/util/_util.scss +15 -0
  106. data/vendor/assets/scss/util/_value.scss +126 -0
  107. metadata +97 -64
  108. data/update-gem.sh +0 -20
  109. data/vendor/assets/javascripts/foundation.js +0 -17
  110. data/vendor/assets/javascripts/foundation/foundation.abide.js +0 -426
  111. data/vendor/assets/javascripts/foundation/foundation.accordion.js +0 -125
  112. data/vendor/assets/javascripts/foundation/foundation.alert.js +0 -43
  113. data/vendor/assets/javascripts/foundation/foundation.clearing.js +0 -586
  114. data/vendor/assets/javascripts/foundation/foundation.dropdown.js +0 -468
  115. data/vendor/assets/javascripts/foundation/foundation.equalizer.js +0 -104
  116. data/vendor/assets/javascripts/foundation/foundation.interchange.js +0 -360
  117. data/vendor/assets/javascripts/foundation/foundation.joyride.js +0 -935
  118. data/vendor/assets/javascripts/foundation/foundation.js +0 -732
  119. data/vendor/assets/javascripts/foundation/foundation.magellan.js +0 -214
  120. data/vendor/assets/javascripts/foundation/foundation.offcanvas.js +0 -225
  121. data/vendor/assets/javascripts/foundation/foundation.orbit.js +0 -476
  122. data/vendor/assets/javascripts/foundation/foundation.reveal.js +0 -522
  123. data/vendor/assets/javascripts/foundation/foundation.slider.js +0 -296
  124. data/vendor/assets/javascripts/foundation/foundation.tab.js +0 -247
  125. data/vendor/assets/javascripts/foundation/foundation.tooltip.js +0 -348
  126. data/vendor/assets/javascripts/foundation/foundation.topbar.js +0 -458
  127. data/vendor/assets/javascripts/vendor/modernizr.js +0 -1406
  128. data/vendor/assets/stylesheets/foundation.scss +0 -42
  129. data/vendor/assets/stylesheets/foundation/_functions.scss +0 -156
  130. data/vendor/assets/stylesheets/foundation/_settings.scss +0 -1489
  131. data/vendor/assets/stylesheets/foundation/components/_accordion.scss +0 -161
  132. data/vendor/assets/stylesheets/foundation/components/_alert-boxes.scss +0 -128
  133. data/vendor/assets/stylesheets/foundation/components/_block-grid.scss +0 -133
  134. data/vendor/assets/stylesheets/foundation/components/_breadcrumbs.scss +0 -132
  135. data/vendor/assets/stylesheets/foundation/components/_button-groups.scss +0 -208
  136. data/vendor/assets/stylesheets/foundation/components/_buttons.scss +0 -261
  137. data/vendor/assets/stylesheets/foundation/components/_clearing.scss +0 -260
  138. data/vendor/assets/stylesheets/foundation/components/_dropdown-buttons.scss +0 -130
  139. data/vendor/assets/stylesheets/foundation/components/_dropdown.scss +0 -269
  140. data/vendor/assets/stylesheets/foundation/components/_flex-video.scss +0 -51
  141. data/vendor/assets/stylesheets/foundation/components/_forms.scss +0 -607
  142. data/vendor/assets/stylesheets/foundation/components/_global.scss +0 -566
  143. data/vendor/assets/stylesheets/foundation/components/_grid.scss +0 -292
  144. data/vendor/assets/stylesheets/foundation/components/_icon-bar.scss +0 -460
  145. data/vendor/assets/stylesheets/foundation/components/_inline-lists.scss +0 -58
  146. data/vendor/assets/stylesheets/foundation/components/_joyride.scss +0 -220
  147. data/vendor/assets/stylesheets/foundation/components/_keystrokes.scss +0 -60
  148. data/vendor/assets/stylesheets/foundation/components/_labels.scss +0 -106
  149. data/vendor/assets/stylesheets/foundation/components/_magellan.scss +0 -34
  150. data/vendor/assets/stylesheets/foundation/components/_offcanvas.scss +0 -606
  151. data/vendor/assets/stylesheets/foundation/components/_orbit.scss +0 -388
  152. data/vendor/assets/stylesheets/foundation/components/_pagination.scss +0 -163
  153. data/vendor/assets/stylesheets/foundation/components/_panels.scss +0 -107
  154. data/vendor/assets/stylesheets/foundation/components/_pricing-tables.scss +0 -150
  155. data/vendor/assets/stylesheets/foundation/components/_progress-bars.scss +0 -85
  156. data/vendor/assets/stylesheets/foundation/components/_range-slider.scss +0 -177
  157. data/vendor/assets/stylesheets/foundation/components/_reveal.scss +0 -212
  158. data/vendor/assets/stylesheets/foundation/components/_side-nav.scss +0 -120
  159. data/vendor/assets/stylesheets/foundation/components/_split-buttons.scss +0 -203
  160. data/vendor/assets/stylesheets/foundation/components/_sub-nav.scss +0 -125
  161. data/vendor/assets/stylesheets/foundation/components/_switches.scss +0 -241
  162. data/vendor/assets/stylesheets/foundation/components/_tables.scss +0 -135
  163. data/vendor/assets/stylesheets/foundation/components/_tabs.scss +0 -142
  164. data/vendor/assets/stylesheets/foundation/components/_thumbs.scss +0 -66
  165. data/vendor/assets/stylesheets/foundation/components/_tooltips.scss +0 -142
  166. data/vendor/assets/stylesheets/foundation/components/_top-bar.scss +0 -745
  167. data/vendor/assets/stylesheets/foundation/components/_type.scss +0 -525
  168. data/vendor/assets/stylesheets/foundation/components/_visibility.scss +0 -425
  169. data/vendor/assets/stylesheets/normalize.scss +0 -424
@@ -1,104 +0,0 @@
1
- ;(function ($, window, document, undefined) {
2
- 'use strict';
3
-
4
- Foundation.libs.equalizer = {
5
- name : 'equalizer',
6
-
7
- version : '5.5.3',
8
-
9
- settings : {
10
- use_tallest : true,
11
- before_height_change : $.noop,
12
- after_height_change : $.noop,
13
- equalize_on_stack : false,
14
- act_on_hidden_el: false
15
- },
16
-
17
- init : function (scope, method, options) {
18
- Foundation.inherit(this, 'image_loaded');
19
- this.bindings(method, options);
20
- this.reflow();
21
- },
22
-
23
- events : function () {
24
- this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
25
- this.reflow();
26
- }.bind(this));
27
- },
28
-
29
- equalize : function (equalizer) {
30
- var isStacked = false,
31
- group = equalizer.data('equalizer'),
32
- settings = equalizer.data(this.attr_name(true)+'-init') || this.settings,
33
- vals,
34
- firstTopOffset;
35
-
36
- if (settings.act_on_hidden_el) {
37
- vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]');
38
- }
39
- else {
40
- vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible');
41
- }
42
-
43
- if (vals.length === 0) {
44
- return;
45
- }
46
-
47
- settings.before_height_change();
48
- equalizer.trigger('before-height-change.fndth.equalizer');
49
- vals.height('inherit');
50
-
51
- if (settings.equalize_on_stack === false) {
52
- firstTopOffset = vals.first().offset().top;
53
- vals.each(function () {
54
- if ($(this).offset().top !== firstTopOffset) {
55
- isStacked = true;
56
- return false;
57
- }
58
- });
59
- if (isStacked) {
60
- return;
61
- }
62
- }
63
-
64
- var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
65
-
66
- if (settings.use_tallest) {
67
- var max = Math.max.apply(null, heights);
68
- vals.css('height', max);
69
- } else {
70
- var min = Math.min.apply(null, heights);
71
- vals.css('height', min);
72
- }
73
-
74
- settings.after_height_change();
75
- equalizer.trigger('after-height-change.fndtn.equalizer');
76
- },
77
-
78
- reflow : function () {
79
- var self = this;
80
-
81
- this.S('[' + this.attr_name() + ']', this.scope).each(function () {
82
- var $eq_target = $(this),
83
- media_query = $eq_target.data('equalizer-mq'),
84
- ignore_media_query = true;
85
-
86
- if (media_query) {
87
- media_query = 'is_' + media_query.replace(/-/g, '_');
88
- if (Foundation.utils.hasOwnProperty(media_query)) {
89
- ignore_media_query = false;
90
- }
91
- }
92
-
93
- self.image_loaded(self.S('img', this), function () {
94
- if (ignore_media_query || Foundation.utils[media_query]()) {
95
- self.equalize($eq_target)
96
- } else {
97
- var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible');
98
- vals.css('height', 'auto');
99
- }
100
- });
101
- });
102
- }
103
- };
104
- })(jQuery, window, window.document);
@@ -1,360 +0,0 @@
1
- ;(function ($, window, document, undefined) {
2
- 'use strict';
3
-
4
- Foundation.libs.interchange = {
5
- name : 'interchange',
6
-
7
- version : '5.5.3',
8
-
9
- cache : {},
10
-
11
- images_loaded : false,
12
- nodes_loaded : false,
13
-
14
- settings : {
15
- load_attr : 'interchange',
16
-
17
- named_queries : {
18
- 'default' : 'only screen',
19
- 'small' : Foundation.media_queries['small'],
20
- 'small-only' : Foundation.media_queries['small-only'],
21
- 'medium' : Foundation.media_queries['medium'],
22
- 'medium-only' : Foundation.media_queries['medium-only'],
23
- 'large' : Foundation.media_queries['large'],
24
- 'large-only' : Foundation.media_queries['large-only'],
25
- 'xlarge' : Foundation.media_queries['xlarge'],
26
- 'xlarge-only' : Foundation.media_queries['xlarge-only'],
27
- 'xxlarge' : Foundation.media_queries['xxlarge'],
28
- 'landscape' : 'only screen and (orientation: landscape)',
29
- 'portrait' : 'only screen and (orientation: portrait)',
30
- 'retina' : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +
31
- 'only screen and (min--moz-device-pixel-ratio: 2),' +
32
- 'only screen and (-o-min-device-pixel-ratio: 2/1),' +
33
- 'only screen and (min-device-pixel-ratio: 2),' +
34
- 'only screen and (min-resolution: 192dpi),' +
35
- 'only screen and (min-resolution: 2dppx)'
36
- },
37
-
38
- directives : {
39
- replace : function (el, path, trigger) {
40
- // The trigger argument, if called within the directive, fires
41
- // an event named after the directive on the element, passing
42
- // any parameters along to the event that you pass to trigger.
43
- //
44
- // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)
45
- //
46
- // This allows you to bind a callback like so:
47
- // $('#interchangeContainer').on('replace', function (e, a, b, c) {
48
- // console.log($(this).html(), a, b, c);
49
- // });
50
-
51
- if (el !== null && /IMG/.test(el[0].nodeName)) {
52
- var orig_path = $.each(el, function(){this.src = path;});
53
- // var orig_path = el[0].src;
54
-
55
- if (new RegExp(path, 'i').test(orig_path)) {
56
- return;
57
- }
58
-
59
- el.attr("src", path);
60
-
61
- return trigger(el[0].src);
62
- }
63
- var last_path = el.data(this.data_attr + '-last-path'),
64
- self = this;
65
-
66
- if (last_path == path) {
67
- return;
68
- }
69
-
70
- if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
71
- $(el).css('background-image', 'url(' + path + ')');
72
- el.data('interchange-last-path', path);
73
- return trigger(path);
74
- }
75
-
76
- return $.get(path, function (response) {
77
- el.html(response);
78
- el.data(self.data_attr + '-last-path', path);
79
- trigger();
80
- });
81
-
82
- }
83
- }
84
- },
85
-
86
- init : function (scope, method, options) {
87
- Foundation.inherit(this, 'throttle random_str');
88
-
89
- this.data_attr = this.set_data_attr();
90
- $.extend(true, this.settings, method, options);
91
- this.bindings(method, options);
92
- this.reflow();
93
- },
94
-
95
- get_media_hash : function () {
96
- var mediaHash = '';
97
- for (var queryName in this.settings.named_queries ) {
98
- mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();
99
- }
100
- return mediaHash;
101
- },
102
-
103
- events : function () {
104
- var self = this, prevMediaHash;
105
-
106
- $(window)
107
- .off('.interchange')
108
- .on('resize.fndtn.interchange', self.throttle(function () {
109
- var currMediaHash = self.get_media_hash();
110
- if (currMediaHash !== prevMediaHash) {
111
- self.resize();
112
- }
113
- prevMediaHash = currMediaHash;
114
- }, 50));
115
-
116
- return this;
117
- },
118
-
119
- resize : function () {
120
- var cache = this.cache;
121
-
122
- if (!this.images_loaded || !this.nodes_loaded) {
123
- setTimeout($.proxy(this.resize, this), 50);
124
- return;
125
- }
126
-
127
- for (var uuid in cache) {
128
- if (cache.hasOwnProperty(uuid)) {
129
- var passed = this.results(uuid, cache[uuid]);
130
- if (passed) {
131
- this.settings.directives[passed
132
- .scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) {
133
- if (arguments[0] instanceof Array) {
134
- var args = arguments[0];
135
- } else {
136
- var args = Array.prototype.slice.call(arguments, 0);
137
- }
138
-
139
- return function() {
140
- passed.el.trigger(passed.scenario[1], args);
141
- }
142
- }(passed)));
143
- }
144
- }
145
- }
146
-
147
- },
148
-
149
- results : function (uuid, scenarios) {
150
- var count = scenarios.length;
151
-
152
- if (count > 0) {
153
- var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]');
154
-
155
- while (count--) {
156
- var mq, rule = scenarios[count][2];
157
- if (this.settings.named_queries.hasOwnProperty(rule)) {
158
- mq = matchMedia(this.settings.named_queries[rule]);
159
- } else {
160
- mq = matchMedia(rule);
161
- }
162
- if (mq.matches) {
163
- return {el : el, scenario : scenarios[count]};
164
- }
165
- }
166
- }
167
-
168
- return false;
169
- },
170
-
171
- load : function (type, force_update) {
172
- if (typeof this['cached_' + type] === 'undefined' || force_update) {
173
- this['update_' + type]();
174
- }
175
-
176
- return this['cached_' + type];
177
- },
178
-
179
- update_images : function () {
180
- var images = this.S('img[' + this.data_attr + ']'),
181
- count = images.length,
182
- i = count,
183
- loaded_count = 0,
184
- data_attr = this.data_attr;
185
-
186
- this.cache = {};
187
- this.cached_images = [];
188
- this.images_loaded = (count === 0);
189
-
190
- while (i--) {
191
- loaded_count++;
192
- if (images[i]) {
193
- var str = images[i].getAttribute(data_attr) || '';
194
-
195
- if (str.length > 0) {
196
- this.cached_images.push(images[i]);
197
- }
198
- }
199
-
200
- if (loaded_count === count) {
201
- this.images_loaded = true;
202
- this.enhance('images');
203
- }
204
- }
205
-
206
- return this;
207
- },
208
-
209
- update_nodes : function () {
210
- var nodes = this.S('[' + this.data_attr + ']').not('img'),
211
- count = nodes.length,
212
- i = count,
213
- loaded_count = 0,
214
- data_attr = this.data_attr;
215
-
216
- this.cached_nodes = [];
217
- this.nodes_loaded = (count === 0);
218
-
219
- while (i--) {
220
- loaded_count++;
221
- var str = nodes[i].getAttribute(data_attr) || '';
222
-
223
- if (str.length > 0) {
224
- this.cached_nodes.push(nodes[i]);
225
- }
226
-
227
- if (loaded_count === count) {
228
- this.nodes_loaded = true;
229
- this.enhance('nodes');
230
- }
231
- }
232
-
233
- return this;
234
- },
235
-
236
- enhance : function (type) {
237
- var i = this['cached_' + type].length;
238
-
239
- while (i--) {
240
- this.object($(this['cached_' + type][i]));
241
- }
242
-
243
- return $(window).trigger('resize.fndtn.interchange');
244
- },
245
-
246
- convert_directive : function (directive) {
247
-
248
- var trimmed = this.trim(directive);
249
-
250
- if (trimmed.length > 0) {
251
- return trimmed;
252
- }
253
-
254
- return 'replace';
255
- },
256
-
257
- parse_scenario : function (scenario) {
258
- // This logic had to be made more complex since some users were using commas in the url path
259
- // So we cannot simply just split on a comma
260
-
261
- var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/),
262
- // getting the mq has gotten a bit complicated since we started accounting for several use cases
263
- // of URLs. For now we'll continue to match these scenarios, but we may consider having these scenarios
264
- // as nested objects or arrays in F6.
265
- // regex: match everything before close parenthesis for mq
266
- media_query = scenario[1].match(/(.*)\)/);
267
-
268
- if (directive_match) {
269
- var path = directive_match[1],
270
- directive = directive_match[2];
271
-
272
- } else {
273
- var cached_split = scenario[0].split(/,\s*$/),
274
- path = cached_split[0],
275
- directive = '';
276
- }
277
-
278
- return [this.trim(path), this.convert_directive(directive), this.trim(media_query[1])];
279
- },
280
-
281
- object : function (el) {
282
- var raw_arr = this.parse_data_attr(el),
283
- scenarios = [],
284
- i = raw_arr.length;
285
-
286
- if (i > 0) {
287
- while (i--) {
288
- // split array between comma delimited content and mq
289
- // regex: comma, optional space, open parenthesis
290
- var scenario = raw_arr[i].split(/,\s?\(/);
291
-
292
- if (scenario.length > 1) {
293
- var params = this.parse_scenario(scenario);
294
- scenarios.push(params);
295
- }
296
- }
297
- }
298
-
299
- return this.store(el, scenarios);
300
- },
301
-
302
- store : function (el, scenarios) {
303
- var uuid = this.random_str(),
304
- current_uuid = el.data(this.add_namespace('uuid', true));
305
-
306
- if (this.cache[current_uuid]) {
307
- return this.cache[current_uuid];
308
- }
309
-
310
- el.attr(this.add_namespace('data-uuid'), uuid);
311
- return this.cache[uuid] = scenarios;
312
- },
313
-
314
- trim : function (str) {
315
-
316
- if (typeof str === 'string') {
317
- return $.trim(str);
318
- }
319
-
320
- return str;
321
- },
322
-
323
- set_data_attr : function (init) {
324
- if (init) {
325
- if (this.namespace.length > 0) {
326
- return this.namespace + '-' + this.settings.load_attr;
327
- }
328
-
329
- return this.settings.load_attr;
330
- }
331
-
332
- if (this.namespace.length > 0) {
333
- return 'data-' + this.namespace + '-' + this.settings.load_attr;
334
- }
335
-
336
- return 'data-' + this.settings.load_attr;
337
- },
338
-
339
- parse_data_attr : function (el) {
340
- var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/),
341
- i = raw.length,
342
- output = [];
343
-
344
- while (i--) {
345
- if (raw[i].replace(/[\W\d]+/, '').length > 4) {
346
- output.push(raw[i]);
347
- }
348
- }
349
-
350
- return output;
351
- },
352
-
353
- reflow : function () {
354
- this.load('images', true);
355
- this.load('nodes', true);
356
- }
357
-
358
- };
359
-
360
- }(jQuery, window, window.document));