less-rails-semantic_ui 1.12.3.0 → 2.0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,662 @@
1
+ /*!
2
+ * # Semantic UI - Video
3
+ * http://github.com/semantic-org/semantic-ui/
4
+ *
5
+ *
6
+ * Copyright 2015 Contributors
7
+ * Released under the MIT license
8
+ * http://opensource.org/licenses/MIT
9
+ *
10
+ */
11
+
12
+ ;(function ($, window, document, undefined) {
13
+
14
+ "use strict";
15
+
16
+ $.fn.embed = function(parameters) {
17
+
18
+ var
19
+ $allModules = $(this),
20
+
21
+ moduleSelector = $allModules.selector || '',
22
+
23
+ time = new Date().getTime(),
24
+ performance = [],
25
+
26
+ query = arguments[0],
27
+ methodInvoked = (typeof query == 'string'),
28
+ queryArguments = [].slice.call(arguments, 1),
29
+
30
+ returnedValue
31
+ ;
32
+
33
+ $allModules
34
+ .each(function() {
35
+ var
36
+ settings = ( $.isPlainObject(parameters) )
37
+ ? $.extend(true, {}, $.fn.embed.settings, parameters)
38
+ : $.extend({}, $.fn.embed.settings),
39
+
40
+ selector = settings.selector,
41
+ className = settings.className,
42
+ sources = settings.sources,
43
+ error = settings.error,
44
+ metadata = settings.metadata,
45
+ namespace = settings.namespace,
46
+ templates = settings.templates,
47
+
48
+ eventNamespace = '.' + namespace,
49
+ moduleNamespace = 'module-' + namespace,
50
+
51
+ $window = $(window),
52
+ $module = $(this),
53
+ $placeholder = $module.find(selector.placeholder),
54
+ $icon = $module.find(selector.icon),
55
+ $embed = $module.find(selector.embed),
56
+
57
+ element = this,
58
+ instance = $module.data(moduleNamespace),
59
+ module
60
+ ;
61
+
62
+ module = {
63
+
64
+ initialize: function() {
65
+ module.debug('Initializing embed');
66
+ module.determine.autoplay();
67
+ module.create();
68
+ module.bind.events();
69
+ module.instantiate();
70
+ },
71
+
72
+ instantiate: function() {
73
+ module.verbose('Storing instance of module', module);
74
+ instance = module;
75
+ $module
76
+ .data(moduleNamespace, module)
77
+ ;
78
+ },
79
+
80
+ destroy: function() {
81
+ module.verbose('Destroying previous instance of embed');
82
+ module.reset();
83
+ $module
84
+ .removeData(moduleNamespace)
85
+ .off(eventNamespace)
86
+ ;
87
+ },
88
+
89
+ refresh: function() {
90
+ module.verbose('Refreshing selector cache');
91
+ $placeholder = $module.find(selector.placeholder);
92
+ $icon = $module.find(selector.icon);
93
+ $embed = $module.find(selector.embed);
94
+ },
95
+
96
+ bind: {
97
+ events: function() {
98
+ if( module.has.placeholder() ) {
99
+ module.debug('Adding placeholder events');
100
+ console.log($module, selector.placeholder);
101
+ $module
102
+ .on('click' + eventNamespace, selector.placeholder, module.createAndShow)
103
+ .on('click' + eventNamespace, selector.icon, module.createAndShow)
104
+ ;
105
+ }
106
+ }
107
+ },
108
+
109
+ create: function() {
110
+ var
111
+ placeholder = module.get.placeholder()
112
+ ;
113
+ if(placeholder) {
114
+ module.createPlaceholder();
115
+ }
116
+ else {
117
+ module.createAndShow();
118
+ }
119
+ },
120
+
121
+ createPlaceholder: function(placeholder) {
122
+ var
123
+ icon = module.get.icon(),
124
+ url = module.get.url(),
125
+ embed = module.generate.embed(url)
126
+ ;
127
+ placeholder = placeholder || module.get.placeholder();
128
+ $module.html( templates.placeholder(placeholder, icon) );
129
+ module.debug('Creating placeholder for embed', placeholder, icon);
130
+ },
131
+
132
+ createEmbed: function(url) {
133
+ module.refresh();
134
+ url = url || module.get.url();
135
+ console.log(url);
136
+ $embed = $('<div/>')
137
+ .addClass(className.embed)
138
+ .html( module.generate.embed(url) )
139
+ .appendTo($module)
140
+ ;
141
+ settings.onCreate.call(element, url);
142
+ module.debug('Creating embed object', $embed);
143
+ },
144
+
145
+ createAndShow: function() {
146
+ console.log('cands');
147
+ module.createEmbed();
148
+ module.show();
149
+ },
150
+
151
+ // sets new embed
152
+ change: function(source, id, url) {
153
+ module.debug('Changing video to ', source, id, url);
154
+ $module
155
+ .data(metadata.source, source)
156
+ .data(metadata.id, id)
157
+ .data(metadata.url, url)
158
+ ;
159
+ module.create();
160
+ },
161
+
162
+ // clears embed
163
+ reset: function() {
164
+ module.debug('Clearing embed and showing placeholder');
165
+ module.remove.active();
166
+ module.remove.embed();
167
+ module.showPlaceholder();
168
+ settings.onReset.call(element);
169
+ },
170
+
171
+ // shows current embed
172
+ show: function() {
173
+ module.debug('Showing embed');
174
+ module.set.active();
175
+ settings.onDisplay.call(element);
176
+ },
177
+
178
+ hide: function() {
179
+ module.debug('Hiding embed');
180
+ module.showPlaceholder();
181
+ },
182
+
183
+ showPlaceholder: function() {
184
+ module.debug('Showing placeholder image');
185
+ module.remove.active();
186
+ settings.onPlaceholderDisplay.call(element);
187
+ },
188
+
189
+ get: {
190
+ id: function() {
191
+ return settings.id || $module.data(metadata.id);
192
+ },
193
+ placeholder: function() {
194
+ return settings.placeholder || $module.data(metadata.placeholder);
195
+ },
196
+ icon: function() {
197
+ return (settings.icon)
198
+ ? settings.icon
199
+ : ($module.data(metadata.icon) !== undefined)
200
+ ? $module.data(metadata.icon)
201
+ : module.determine.icon()
202
+ ;
203
+ },
204
+ source: function(url) {
205
+ return (settings.source)
206
+ ? settings.source
207
+ : ($module.data(metadata.source) !== undefined)
208
+ ? $module.data(metadata.source)
209
+ : module.determine.source()
210
+ ;
211
+ },
212
+ type: function() {
213
+ var source = module.get.source();
214
+ return (sources[source] !== undefined)
215
+ ? sources[source].type
216
+ : false
217
+ ;
218
+ },
219
+ url: function() {
220
+ return (settings.url)
221
+ ? settings.url
222
+ : ($module.data(metadata.url) !== undefined)
223
+ ? $module.data(metadata.url)
224
+ : module.determine.url()
225
+ ;
226
+ }
227
+ },
228
+
229
+ determine: {
230
+ autoplay: function() {
231
+ if(module.should.autoplay()) {
232
+ settings.autoplay = true;
233
+ }
234
+ },
235
+ source: function(url) {
236
+ var
237
+ matchedSource = false
238
+ ;
239
+ url = url || module.get.url();
240
+ if(url) {
241
+ $.each(sources, function(name, source) {
242
+ if(url.search(source.domain) !== -1) {
243
+ matchedSource = name;
244
+ return false;
245
+ }
246
+ });
247
+ }
248
+ return matchedSource;
249
+ },
250
+ icon: function() {
251
+ var
252
+ source = module.get.source()
253
+ ;
254
+ return (sources[source] !== undefined)
255
+ ? sources[source].icon
256
+ : false
257
+ ;
258
+ },
259
+ url: function() {
260
+ var
261
+ id = settings.id || $module.data(metadata.id),
262
+ source = settings.source || $module.data(metadata.source),
263
+ url
264
+ ;
265
+ url = (sources[source] !== undefined)
266
+ ? sources[source].url.replace('{id}', id)
267
+ : false
268
+ ;
269
+ if(url) {
270
+ $module.data(metadata.url, url);
271
+ }
272
+ return url;
273
+ }
274
+ },
275
+
276
+
277
+ set: {
278
+ active: function() {
279
+ $module.addClass(className.active);
280
+ }
281
+ },
282
+
283
+ remove: {
284
+ active: function() {
285
+ $module.removeClass(className.active);
286
+ },
287
+ embed: function() {
288
+ $embed.empty();
289
+ }
290
+ },
291
+
292
+ encode: {
293
+ parameters: function(parameters) {
294
+ var
295
+ urlString = [],
296
+ index
297
+ ;
298
+ for (index in parameters) {
299
+ urlString.push( encodeURIComponent(index) + '=' + encodeURIComponent( parameters[index] ) );
300
+ }
301
+ return urlString.join('&amp;');
302
+ }
303
+ },
304
+
305
+ generate: {
306
+ embed: function(url) {
307
+ module.debug('Generating embed html');
308
+ var
309
+ source = module.get.source(),
310
+ html,
311
+ parameters
312
+ ;
313
+ url = module.get.url(url);
314
+ if(url) {
315
+ parameters = module.generate.parameters(source);
316
+ html = templates.iframe(url, parameters);
317
+ }
318
+ else {
319
+ module.error(error.noURL, $module);
320
+ }
321
+ return html;
322
+ },
323
+ parameters: function(source, extraParameters) {
324
+ var
325
+ parameters = (sources[source] && sources[source].parameters !== undefined)
326
+ ? sources[source].parameters(settings)
327
+ : {}
328
+ ;
329
+ extraParameters = extraParameters || settings.parameters;
330
+ if(extraParameters) {
331
+ parameters = $.extend({}, parameters, extraParameters);
332
+ }
333
+ parameters = settings.onEmbed(parameters);
334
+ return module.encode.parameters(parameters);
335
+ }
336
+ },
337
+
338
+ has: {
339
+ placeholder: function() {
340
+ return settings.placeholder || $module.data(metadata.placeholder);
341
+ }
342
+ },
343
+
344
+ should: {
345
+ autoplay: function() {
346
+ return (settings.autoplay === 'auto')
347
+ ? (settings.placeholder || $module.data(metadata.placeholder) !== undefined)
348
+ : settings.autoplay
349
+ ;
350
+ }
351
+ },
352
+
353
+ is: {
354
+ video: function() {
355
+ return module.get.type() == 'video';
356
+ }
357
+ },
358
+
359
+ setting: function(name, value) {
360
+ module.debug('Changing setting', name, value);
361
+ if( $.isPlainObject(name) ) {
362
+ $.extend(true, settings, name);
363
+ }
364
+ else if(value !== undefined) {
365
+ settings[name] = value;
366
+ }
367
+ else {
368
+ return settings[name];
369
+ }
370
+ },
371
+ internal: function(name, value) {
372
+ if( $.isPlainObject(name) ) {
373
+ $.extend(true, module, name);
374
+ }
375
+ else if(value !== undefined) {
376
+ module[name] = value;
377
+ }
378
+ else {
379
+ return module[name];
380
+ }
381
+ },
382
+ debug: function() {
383
+ if(settings.debug) {
384
+ if(settings.performance) {
385
+ module.performance.log(arguments);
386
+ }
387
+ else {
388
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
389
+ module.debug.apply(console, arguments);
390
+ }
391
+ }
392
+ },
393
+ verbose: function() {
394
+ if(settings.verbose && settings.debug) {
395
+ if(settings.performance) {
396
+ module.performance.log(arguments);
397
+ }
398
+ else {
399
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
400
+ module.verbose.apply(console, arguments);
401
+ }
402
+ }
403
+ },
404
+ error: function() {
405
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
406
+ module.error.apply(console, arguments);
407
+ },
408
+ performance: {
409
+ log: function(message) {
410
+ var
411
+ currentTime,
412
+ executionTime,
413
+ previousTime
414
+ ;
415
+ if(settings.performance) {
416
+ currentTime = new Date().getTime();
417
+ previousTime = time || currentTime;
418
+ executionTime = currentTime - previousTime;
419
+ time = currentTime;
420
+ performance.push({
421
+ 'Name' : message[0],
422
+ 'Arguments' : [].slice.call(message, 1) || '',
423
+ 'Element' : element,
424
+ 'Execution Time' : executionTime
425
+ });
426
+ }
427
+ clearTimeout(module.performance.timer);
428
+ module.performance.timer = setTimeout(module.performance.display, 500);
429
+ },
430
+ display: function() {
431
+ var
432
+ title = settings.name + ':',
433
+ totalTime = 0
434
+ ;
435
+ time = false;
436
+ clearTimeout(module.performance.timer);
437
+ $.each(performance, function(index, data) {
438
+ totalTime += data['Execution Time'];
439
+ });
440
+ title += ' ' + totalTime + 'ms';
441
+ if(moduleSelector) {
442
+ title += ' \'' + moduleSelector + '\'';
443
+ }
444
+ if($allModules.length > 1) {
445
+ title += ' ' + '(' + $allModules.length + ')';
446
+ }
447
+ if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
448
+ console.groupCollapsed(title);
449
+ if(console.table) {
450
+ console.table(performance);
451
+ }
452
+ else {
453
+ $.each(performance, function(index, data) {
454
+ console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
455
+ });
456
+ }
457
+ console.groupEnd();
458
+ }
459
+ performance = [];
460
+ }
461
+ },
462
+ invoke: function(query, passedArguments, context) {
463
+ var
464
+ object = instance,
465
+ maxDepth,
466
+ found,
467
+ response
468
+ ;
469
+ passedArguments = passedArguments || queryArguments;
470
+ context = element || context;
471
+ if(typeof query == 'string' && object !== undefined) {
472
+ query = query.split(/[\. ]/);
473
+ maxDepth = query.length - 1;
474
+ $.each(query, function(depth, value) {
475
+ var camelCaseValue = (depth != maxDepth)
476
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
477
+ : query
478
+ ;
479
+ if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
480
+ object = object[camelCaseValue];
481
+ }
482
+ else if( object[camelCaseValue] !== undefined ) {
483
+ found = object[camelCaseValue];
484
+ return false;
485
+ }
486
+ else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
487
+ object = object[value];
488
+ }
489
+ else if( object[value] !== undefined ) {
490
+ found = object[value];
491
+ return false;
492
+ }
493
+ else {
494
+ module.error(error.method, query);
495
+ return false;
496
+ }
497
+ });
498
+ }
499
+ if ( $.isFunction( found ) ) {
500
+ response = found.apply(context, passedArguments);
501
+ }
502
+ else if(found !== undefined) {
503
+ response = found;
504
+ }
505
+ if($.isArray(returnedValue)) {
506
+ returnedValue.push(response);
507
+ }
508
+ else if(returnedValue !== undefined) {
509
+ returnedValue = [returnedValue, response];
510
+ }
511
+ else if(response !== undefined) {
512
+ returnedValue = response;
513
+ }
514
+ return found;
515
+ }
516
+ };
517
+
518
+ if(methodInvoked) {
519
+ if(instance === undefined) {
520
+ module.initialize();
521
+ }
522
+ module.invoke(query);
523
+ }
524
+ else {
525
+ if(instance !== undefined) {
526
+ instance.invoke('destroy');
527
+ }
528
+ module.initialize();
529
+ }
530
+ })
531
+ ;
532
+ return (returnedValue !== undefined)
533
+ ? returnedValue
534
+ : this
535
+ ;
536
+ };
537
+
538
+ $.fn.embed.settings = {
539
+
540
+ name : 'Embed',
541
+ namespace : 'embed',
542
+
543
+ debug : false,
544
+ verbose : false,
545
+ performance : true,
546
+
547
+ icon : false,
548
+ source : false,
549
+ url : false,
550
+ id : false,
551
+
552
+ // standard video settings
553
+ autoplay : 'auto',
554
+ color : '#444444',
555
+ hd : true,
556
+ brandedUI : false,
557
+
558
+ // additional parameters to include with the embed
559
+ parameters: false,
560
+
561
+ onDisplay : function() {},
562
+ onPlaceholderDisplay : function() {},
563
+ onReset : function() {},
564
+ onCreate : function(url) {},
565
+ onEmbed : function(parameters) {
566
+ return parameters;
567
+ },
568
+
569
+ metadata : {
570
+ id : 'id',
571
+ icon : 'icon',
572
+ placeholder : 'placeholder',
573
+ source : 'source',
574
+ url : 'url'
575
+ },
576
+
577
+ error : {
578
+ noURL : 'No URL specified',
579
+ method : 'The method you called is not defined'
580
+ },
581
+
582
+ className : {
583
+ active : 'active',
584
+ embed : 'embed'
585
+ },
586
+
587
+ selector : {
588
+ embed : '.embed',
589
+ placeholder : '.placeholder',
590
+ icon : '.icon'
591
+ },
592
+
593
+ sources: {
594
+ youtube: {
595
+ name : 'youtube',
596
+ type : 'video',
597
+ icon : 'video play',
598
+ domain : 'youtube.com',
599
+ url : '//www.youtube.com/embed/{id}',
600
+ parameters: function(settings) {
601
+ return {
602
+ autohide : !settings.brandedUI,
603
+ autoplay : settings.autoplay,
604
+ color : settings.colors || undefined,
605
+ hq : settings.hd,
606
+ jsapi : settings.api,
607
+ modestbranding : !settings.brandedUI
608
+ };
609
+ }
610
+ },
611
+ vimeo: {
612
+ name : 'vimeo',
613
+ type : 'video',
614
+ icon : 'video play',
615
+ domain : 'vimeo.com',
616
+ url : '//player.vimeo.com/video/{id}',
617
+ parameters: function(settings) {
618
+ return {
619
+ api : settings.api,
620
+ autoplay : settings.autoplay,
621
+ byline : settings.brandedUI,
622
+ color : settings.colors || undefined,
623
+ portrait : settings.brandedUI,
624
+ title : settings.brandedUI
625
+ };
626
+ }
627
+ }
628
+ },
629
+
630
+ templates: {
631
+ iframe : function(url, parameters) {
632
+ return ''
633
+ + '<iframe src="' + url + '?=' + parameters + '"'
634
+ + ' width="100%" height="100%"'
635
+ + ' frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'
636
+ ;
637
+ },
638
+ placeholder : function(image, icon) {
639
+ var
640
+ html = ''
641
+ ;
642
+ if(icon) {
643
+ html += '<i class="' + icon + ' icon"></i>';
644
+ }
645
+ if(image) {
646
+ html += '<img class="placeholder" src="' + image + '">';
647
+ }
648
+ return html;
649
+ }
650
+ },
651
+
652
+ // NOT YET IMPLEMENTED
653
+ api : true,
654
+ onPause : function() {},
655
+ onPlay : function() {},
656
+ onStop : function() {}
657
+
658
+ };
659
+
660
+
661
+
662
+ })( jQuery, window , document );