webshims-rails 1.12.3 → 1.12.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +75 -31
  4. data/vendor/assets/javascripts/webshims/shims/color-picker.js +14 -14
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +83 -459
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +92 -69
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +90 -54
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +104 -494
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +66 -228
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +2 -0
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +42 -40
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +105 -494
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +90 -54
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +90 -54
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +123 -471
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +85 -474
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +85 -205
  18. data/vendor/assets/javascripts/webshims/shims/combos/21.js +103 -45
  19. data/vendor/assets/javascripts/webshims/shims/combos/22.js +41 -40
  20. data/vendor/assets/javascripts/webshims/shims/combos/23.js +63 -454
  21. data/vendor/assets/javascripts/webshims/shims/combos/24.js +52 -36
  22. data/vendor/assets/javascripts/webshims/shims/combos/25.js +123 -471
  23. data/vendor/assets/javascripts/webshims/shims/combos/26.js +2 -15
  24. data/vendor/assets/javascripts/webshims/shims/combos/27.js +38 -266
  25. data/vendor/assets/javascripts/webshims/shims/combos/28.js +20 -20
  26. data/vendor/assets/javascripts/webshims/shims/combos/3.js +24 -20
  27. data/vendor/assets/javascripts/webshims/shims/combos/30.js +24 -20
  28. data/vendor/assets/javascripts/webshims/shims/combos/31.js +22 -20
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +4 -15
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +90 -54
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +90 -54
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +87 -474
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +87 -474
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +92 -69
  35. data/vendor/assets/javascripts/webshims/shims/combos/99.js +1724 -0
  36. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +2 -15
  37. data/vendor/assets/javascripts/webshims/shims/form-core.js +19 -4
  38. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +39 -5
  39. data/vendor/assets/javascripts/webshims/shims/form-message.js +2 -0
  40. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +69 -37
  41. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +18 -20
  42. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +34 -16
  43. data/vendor/assets/javascripts/webshims/shims/form-validation.js +12 -9
  44. data/vendor/assets/javascripts/webshims/shims/form-validators.js +21 -5
  45. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +16 -13
  46. data/vendor/assets/javascripts/webshims/shims/geolocation.js +3 -3
  47. data/vendor/assets/javascripts/webshims/shims/jajax.js +1262 -0
  48. data/vendor/assets/javascripts/webshims/shims/jme/b.js +576 -0
  49. data/vendor/assets/javascripts/webshims/shims/jme/c.js +1148 -0
  50. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +373 -0
  51. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +711 -0
  52. data/vendor/assets/javascripts/webshims/shims/jme/jme.eot +0 -0
  53. data/vendor/assets/javascripts/webshims/shims/jme/jme.svg +36 -0
  54. data/vendor/assets/javascripts/webshims/shims/jme/jme.ttf +0 -0
  55. data/vendor/assets/javascripts/webshims/shims/jme/jme.woff +0 -0
  56. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +16 -18
  57. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +25 -188
  58. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +58 -2
  59. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +130 -66
  60. data/vendor/assets/javascripts/webshims/shims/range-ui.js +21 -17
  61. data/vendor/assets/javascripts/webshims/shims/sizzle.js +1634 -1613
  62. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +5 -5
  63. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +5 -1
  64. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +13 -9
  65. data/vendor/assets/javascripts/webshims/shims/swfmini-embed.js +136 -0
  66. data/vendor/assets/javascripts/webshims/shims/swfmini.js +38 -266
  67. data/vendor/assets/javascripts/webshims/shims/track-ui.js +1 -3
  68. data/vendor/assets/javascripts/webshims/shims/track.js +41 -40
  69. metadata +13 -2
@@ -0,0 +1,576 @@
1
+ webshims.register('jme', function($, webshims, window, doc, undefined, options){
2
+ "use strict";
3
+ var props = {};
4
+
5
+ var fns = {};
6
+ var allowPreload = false;
7
+ $(window).on('load', function(){
8
+ allowPreload = true;
9
+ var scrollTimer;
10
+ var allow = function(){
11
+ allowPreload = true;
12
+ };
13
+ $(window).on('scroll', function(){
14
+ allowPreload = false;
15
+ clearTimeout(scrollTimer);
16
+ scrollTimer = setTimeout(allow, 999);
17
+ });
18
+ });
19
+
20
+
21
+
22
+ $.jme = {
23
+ version: '2.0.9',
24
+ classNS: '',
25
+ options: {},
26
+ plugins: {},
27
+ data: function(elem, name, value){
28
+ var data = $(elem).data(ns+'jme') || $.data(elem, ns+'jme', {});
29
+ if(value === undefined){
30
+ return (name) ? data[name] : data;
31
+ } else {
32
+ data[name] = value;
33
+ }
34
+ },
35
+ registerPlugin: function(name, plugin){
36
+ this.plugins[name] = plugin;
37
+ if(!plugin.nodeName){
38
+ plugin.nodeName = '';
39
+ }
40
+ if(!plugin.className){
41
+ plugin.className = name;
42
+ }
43
+ },
44
+ defineMethod: function(name, fn){
45
+ fns[name] = fn;
46
+ },
47
+ defineProp: function(name, desc){
48
+ if(!desc){
49
+ desc = {};
50
+ }
51
+ if(!desc.set){
52
+ if(desc.readonly){
53
+ desc.set = function(){
54
+ throw(name +' is readonly');
55
+ };
56
+ } else {
57
+ desc.set = $.noop;
58
+ }
59
+ }
60
+ if(!desc.get){
61
+ desc.get = function(elem){
62
+ return $.jme.data(elem, name);
63
+ };
64
+ }
65
+ props[name] = desc;
66
+ },
67
+ prop: function(elem, name, value){
68
+ if(!props[name]){
69
+ return $.prop(elem, name, value);
70
+ }
71
+ if(value === undefined){
72
+ return props[name].get( elem );
73
+ } else {
74
+ var setValue = props[name].set(elem, value);
75
+ if(setValue === undefined){
76
+ setValue = value;
77
+ }
78
+ if(setValue != 'noDataSet'){
79
+ $.jme.data(elem, name, setValue);
80
+ }
81
+ }
82
+ },
83
+ setText: function(name, text){
84
+ var obj = name;
85
+ if(name && text){
86
+ obj = {};
87
+ obj[name] = text;
88
+ }
89
+ $.each(obj, function(name, text){
90
+ if($.jme.plugins[name]){
91
+ $.jme.plugins[name].text = text;
92
+ }
93
+ });
94
+ }
95
+ };
96
+
97
+ $.fn.jmeProp = function(name, value){
98
+ return $.access( this, $.jme.prop, name, value, arguments.length > 1 );
99
+ };
100
+
101
+ $.fn.jmeFn = function(fn){
102
+ var args = Array.prototype.slice.call( arguments, 1 );
103
+ var ret;
104
+ this.each(function(){
105
+ ret = (fns[fn] || $.prop(this, fn)).apply(this, args);
106
+ if(ret !== undefined){
107
+ return false;
108
+ }
109
+ });
110
+ return (ret !== undefined) ? ret : this;
111
+ };
112
+
113
+
114
+ options = $.extend({selector: '.mediaplayer'}, webshims.cfg.mediaelement.jme);
115
+ webshims.cfg.mediaelement.jme = options;
116
+ var baseSelector = options.selector;
117
+ var pluginSelectors = [];
118
+ var ns = '';
119
+
120
+
121
+ $.jme.initJME = function(context, insertedElement){
122
+ $(baseSelector, context).add(insertedElement.filter(baseSelector)).jmePlayer();
123
+ };
124
+
125
+ var idlStates = {
126
+ emptied: 1,
127
+ pause: 1
128
+ };
129
+
130
+ $.jme.getDOMList = function(attr){
131
+ var list = [];
132
+ if(!attr){
133
+ attr = [];
134
+ }
135
+ if(typeof attr == 'string'){
136
+ attr = attr.split(' ');
137
+ }
138
+ $.each(attr, function(i, id){
139
+ if(id){
140
+ id = document.getElementById(id);
141
+ if(id){
142
+ list.push(id);
143
+ }
144
+ }
145
+ });
146
+ return list;
147
+ };
148
+
149
+ webshims.ready('dom-support', function(){
150
+ if($('<input />').prop('labels')){return;}
151
+ webshims.defineNodeNamesProperty('button, input, keygen, meter, output, progress, select, textarea', 'labels', {
152
+ prop: {
153
+ get: function(){
154
+ var labels = [];
155
+ var id = this.id;
156
+ if(id){
157
+ labels = $('label[for="'+ id +'"]');
158
+ }
159
+ if(!labels[0]) {
160
+ labels = $(this).closest('label', this.form);
161
+ }
162
+ return labels.get();
163
+ },
164
+ writeable: false
165
+ }
166
+ });
167
+ });
168
+
169
+
170
+ $.jme.getButtonText = function(button, classes){
171
+
172
+ var btnTextElem = $('span.jme-text, +label span.jme-text', button);
173
+ var btnLabelElem = button.prop('labels');
174
+
175
+ btnLabelElem = (btnLabelElem && btnLabelElem[0]) ? $(btnLabelElem).eq(0) : false;
176
+
177
+ if(!btnTextElem[0]){
178
+ btnTextElem = btnLabelElem || button;
179
+ }
180
+
181
+ var txt = btnTextElem.text().split('/');
182
+ var title = button.prop('title').split('/');
183
+
184
+ var isCheckbox;
185
+ var doText;
186
+ var doTitle;
187
+ var lastState;
188
+ var txtChangeFn = function(state){
189
+ if(lastState === state){return;}
190
+ lastState = state;
191
+ if(doText){
192
+ btnTextElem.text(txt[state || 0]);
193
+ }
194
+ if(doTitle){
195
+ button.prop('title', txt[state || 0]);
196
+ if (btnLabelElem) {
197
+ btnLabelElem.prop('title', txt[state || 0]);
198
+ }
199
+ }
200
+
201
+ if(classes){
202
+ button
203
+ .removeClass(classes[(state) ? 0 : 1])
204
+ .addClass(classes[state])
205
+ ;
206
+ }
207
+ if(isCheckbox){
208
+ button.prop('checked', !!state);
209
+ (button.data('checkboxradio') || {refresh: $.noop}).refresh();
210
+ }
211
+ };
212
+
213
+ if(txt.length == 2){
214
+ txt[0] = txt[0].trim();
215
+ txt[1] = txt[1].trim();
216
+ doText = true;
217
+ }
218
+ if(title.length == 2){
219
+ title[0] = title[0].trim();
220
+ title[1] = title[1].trim();
221
+ doTitle = true;
222
+ }
223
+
224
+ if (button.is('[type="checkbox"], [type="radio"]')){
225
+ button.prop('checked', function(){
226
+ return this.defaultChecked;
227
+ });
228
+ isCheckbox = true;
229
+ } else if(button.is('a')){
230
+ button.on('click', function(e){
231
+ e.preventDefault();
232
+ });
233
+ }
234
+
235
+ return txtChangeFn;
236
+ };
237
+
238
+ $.fn.jmePlayer = function(opts){
239
+
240
+ return this.each(function(){
241
+ if(opts){
242
+ $.jme.data(this, $.extend(true, {}, opts));
243
+ }
244
+
245
+ var mediaUpdateFn, init, canPlay, removeCanPlay, canplayTimer, needPreload, playerSize;
246
+ var media = $('audio, video', this).filter(':first');
247
+ var base = $(this);
248
+
249
+ var jmeData = $.jme.data(this);
250
+ var mediaData = $.jme.data(media[0]);
251
+
252
+
253
+ base.addClass(media.prop('nodeName').toLowerCase()+'player');
254
+ mediaData.player = base;
255
+ mediaData.media = media;
256
+ if(!jmeData.media){
257
+ init = true;
258
+ needPreload = !media.prop('autoplay');
259
+
260
+ removeCanPlay = function(){
261
+ media.off('canplay', canPlay);
262
+ clearTimeout(canplayTimer);
263
+ };
264
+ canPlay = function(){
265
+ var state = ($.prop(this, 'paused')) ? 'idle' : 'playing';
266
+ base.attr('data-state', state);
267
+ };
268
+ mediaUpdateFn = function(e){
269
+ var state = e.type;
270
+ var readyState;
271
+ var paused;
272
+
273
+ removeCanPlay();
274
+
275
+ if(state == 'ended' || $.prop(this, 'ended')){
276
+ state = 'ended';
277
+ } else if(state == 'waiting'){
278
+
279
+ if($.prop(this, 'readyState') > 2){
280
+ state = '';
281
+ } else {
282
+ canplayTimer = setTimeout(function(){
283
+ if(media.prop('readyState') > 2){
284
+ canPlay();
285
+ }
286
+ }, 9);
287
+ media.on('canPlay', canPlay);
288
+ }
289
+
290
+ } else if(idlStates[state]){
291
+ state = 'idle';
292
+ } else {
293
+ readyState = $.prop(this, 'readyState');
294
+ paused = $.prop(this, 'paused');
295
+ if(!paused && readyState < 3){
296
+ state = 'waiting';
297
+ } else if(!paused && readyState > 2){
298
+ state = 'playing';
299
+ } else {
300
+ state = 'idle';
301
+ }
302
+ }
303
+
304
+ if(state == 'idle' && base._seekpause){
305
+ state = false;
306
+ }
307
+ if(state){
308
+ base.attr('data-state', state);
309
+ }
310
+ };
311
+
312
+ playerSize = (function(){
313
+ var lastSize;
314
+ var sizes = [
315
+ {size: 380, name: 'x-small'},
316
+ {size: 490, name: 'small'},
317
+ {size: 756, name: 'medium'},
318
+ {size: 1024, name: 'large'}
319
+ ];
320
+
321
+ var len = sizes.length;
322
+ return function(){
323
+ var size = 'x-large';
324
+ var i = 0;
325
+ var width = base.outerWidth();
326
+ for(; i < len; i++){
327
+ if(sizes[i].size >= width){
328
+ size = sizes[i].name;
329
+ break;
330
+ }
331
+ }
332
+ if(lastSize != size){
333
+ lastSize = size;
334
+ base.attr('data-playersize', size);
335
+ }
336
+ };
337
+ })();
338
+ jmeData.media = media;
339
+ jmeData.player = base;
340
+ media
341
+ .on('ended', function(){
342
+ removeCanPlay();
343
+ media.jmeFn('pause');
344
+ if(!media.prop('autoplay') && !media.prop('loop') && !media.hasClass('no-reload')){
345
+ media.jmeFn('load');
346
+ }
347
+ })
348
+ .on('emptied waiting canplay canplaythrough playing ended pause mediaerror', mediaUpdateFn)
349
+ .on('volumechange updateJMEState', function(){
350
+ var volume = $.prop(this, 'volume');
351
+ base[!volume || $.prop(this, 'muted') ? 'addClass' : 'removeClass'](ns +'state-muted');
352
+
353
+ if(volume < 0.01){
354
+ volume = 'no';
355
+ } else if(volume < 0.36){
356
+ volume = 'low';
357
+ } else if(volume < 0.7){
358
+ volume = 'medium';
359
+ } else {
360
+ volume = 'high';
361
+ }
362
+ base.attr('data-volume', volume);
363
+ })
364
+ .on('emptied', function(e){
365
+ if(e.type == 'emptied'){
366
+ needPreload = !media.prop('autoplay');
367
+ }
368
+ })
369
+ ;
370
+
371
+ base
372
+ .on({
373
+ useractive: function(){
374
+ base.attr('data-useractivity', 'true');
375
+ }
376
+ })
377
+ .on('userinactive', {idletime: 3500}, function(){
378
+ base.attr('data-useractivity', 'false');
379
+ })
380
+ .triggerHandler('userinactive')
381
+ ;
382
+
383
+ playerSize();
384
+ webshims.ready('dom-support', function(){
385
+ base.onWSOff('updateshadowdom', playerSize);
386
+ webshims.addShadowDom();
387
+ });
388
+ if(mediaUpdateFn){
389
+ media.on('updateJMEState', mediaUpdateFn).triggerHandler('updateJMEState');
390
+ }
391
+ }
392
+ });
393
+ };
394
+
395
+
396
+ $.jme.defineProp('isPlaying', {
397
+ get: function(elem){
398
+ return (!$.prop(elem, 'ended') && !$.prop(elem, 'paused') && $.prop(elem, 'readyState') > 1 && !$.data(elem, 'mediaerror'));
399
+ },
400
+ readonly: true
401
+ });
402
+
403
+ $.jme.defineProp('player', {
404
+ readonly: true
405
+ });
406
+
407
+ $.jme.defineProp('media', {
408
+ readonly: true
409
+ });
410
+
411
+ $.jme.defineProp('srces', {
412
+ get: function(elem){
413
+ var srces;
414
+ var data = $.jme.data(elem);
415
+ var src = data.media.prop('src');
416
+ if(src){
417
+ return [{src: src}];
418
+ }
419
+ srces = $.map($('source', data.media).get(), function(source){
420
+ var src = {
421
+ src: $.prop(source, 'src')
422
+ };
423
+ var tmp = $.attr(source, 'media');
424
+ if(tmp){
425
+ src.media = tmp;
426
+ }
427
+ tmp = $.attr(source, 'type');
428
+ if(tmp){
429
+ src.type = tmp;
430
+ }
431
+ return src;
432
+ });
433
+ return srces;
434
+ },
435
+ set: function(elem, srces){
436
+ var data = $.jme.data(elem);
437
+
438
+ var setSrc = function(i, src){
439
+ if(typeof src == 'string'){
440
+ src = {src: src};
441
+ }
442
+ $(document.createElement('source')).attr(src).appendTo(data.media);
443
+ };
444
+ data.media.removeAttr('src').find('source').remove();
445
+ if($.isArray(srces)){
446
+ $.each(srces, setSrc);
447
+ } else {
448
+ setSrc(0, srces);
449
+ }
450
+ data.media.jmeFn('load');
451
+ return 'noDataSet';
452
+ }
453
+ });
454
+
455
+ $.jme.defineMethod('togglePlay', function(){
456
+ $(this).jmeFn( ( props.isPlaying.get(this) ) ? 'pause' : 'play' );
457
+ });
458
+
459
+
460
+ $.jme.defineMethod('addControls', function(controls){
461
+ var data = $.jme.data(this) || {};
462
+
463
+ if(!data.media){return;}
464
+ var oldControls = $.jme.data(data.player[0], 'controlElements') || $([]);
465
+ controls = $(controls);
466
+ $.each($.jme.plugins, function(name, plugin){
467
+ controls
468
+ .filter('.'+plugin.className)
469
+ .add(controls.find('.'+plugin.className))
470
+ .each(function(){
471
+ var control = $(this);
472
+ var options = $.jme.data(this);
473
+ options.player = data.player;
474
+ options.media = data.media;
475
+ if(options.rendered){return;}
476
+ options.rendered = true;
477
+ if(plugin.options){
478
+ $.each(plugin.options, function(option, value){
479
+ if(!(option in options)){
480
+ options[option] = value;
481
+ }
482
+ });
483
+ }
484
+ plugin._create(control, data.media, data.player, options);
485
+ control = null;
486
+ })
487
+ ;
488
+ });
489
+
490
+ $.jme.data(data.player[0], 'controlElements', oldControls.add(controls));
491
+
492
+ data.player.triggerHandler('controlsadded');
493
+ });
494
+
495
+
496
+
497
+
498
+ (function(){
499
+ var activity = {
500
+ add: function(elem, cfg, name){
501
+ var data = $.data(elem, 'jmeuseractivity') || $.data(elem, 'jmeuseractivity', {idletime: 2500, idle: true, trigger: {}}),
502
+ jElm = $(elem),
503
+ setInactive = function(){
504
+ if(!data.idle){
505
+ data.idle = true;
506
+ if ( data.trigger.userinactive ) {
507
+ jElm.trigger('userinactive');
508
+ }
509
+ }
510
+ },
511
+ x, y,
512
+ setActive = function(e){
513
+ if(!e || (e.type === 'mousemove' && e.pageX === x && e.pageY === y)){return;}
514
+ if(e.type === 'mousemove'){
515
+ x = e.pageX;
516
+ y = e.pageY;
517
+ }
518
+ if(data.idleTimer){
519
+ clearTimeout(data.idleTimer);
520
+ }
521
+ data.idleTimer = setTimeout(setInactive, data.idletime);
522
+ if(data.idle){
523
+ data.idle = false;
524
+ if( data.trigger.useractive ){
525
+ jElm.trigger('useractive');
526
+ }
527
+ }
528
+ }
529
+ ;
530
+
531
+ data.idletime = (cfg || {}).idletime || data.idletime;
532
+ if(cfg && 'idle' in cfg){
533
+ data.idle = cfg.idle;
534
+ }
535
+ data.trigger[name] = true;
536
+
537
+ if(!data.bound){
538
+ jElm
539
+ .on('mouseleave.jmeuseractivity', setInactive)
540
+ .on('mousemove.jmeuseractivity focusin.jmeuseractivity mouseenter.jmeuseractivity keydown.jmeuseractivity keyup.jmeuseractivity mousedown.jmeuseractivity', setActive)
541
+ ;
542
+ data.bound = true;
543
+ }
544
+ if(!data.idle){
545
+ setActive({type: 'initunidled'});
546
+ }
547
+ },
548
+ remove: function(elem, name){
549
+ var data = $.data(elem, 'jmeuseractivity') || $.data(elem, 'jmeuseractivity', {idletime: 2500, idle: true, trigger: {}});
550
+ data.trigger[name] = false;
551
+ if(!data.trigger.useractive && !data.trigger.userinactive){
552
+ $(elem).off('.jmeuseractivity');
553
+ data.bound = false;
554
+ }
555
+ }
556
+ };
557
+ $.each(['useractive', 'userinactive'], function(i, name){
558
+ $.event.special[name] = {
559
+ setup: function(cfg){
560
+ activity.add(this, cfg, name);
561
+ },
562
+ teardown: function(){
563
+ activity.remove(this, name);
564
+ }
565
+ };
566
+ });
567
+ })();
568
+
569
+
570
+ webshims.ready('mediaelement', function(){
571
+ webshims.addReady($.jme.initJME);
572
+ });
573
+ });
574
+
575
+
576
+