webshims-rails 1.15.3 → 1.15.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +32 -30
  4. data/vendor/assets/javascripts/webshims/shims/canvas-blob.js +1 -7
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +2 -0
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +50 -41
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +34 -30
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +14 -2
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +14 -2
  10. data/vendor/assets/javascripts/webshims/shims/combos/15.js +31 -21
  11. data/vendor/assets/javascripts/webshims/shims/combos/16.js +31 -21
  12. data/vendor/assets/javascripts/webshims/shims/combos/17.js +34 -30
  13. data/vendor/assets/javascripts/webshims/shims/combos/18.js +387 -527
  14. data/vendor/assets/javascripts/webshims/shims/combos/2.js +18 -11
  15. data/vendor/assets/javascripts/webshims/shims/combos/21.js +39 -2
  16. data/vendor/assets/javascripts/webshims/shims/combos/22.js +14 -2
  17. data/vendor/assets/javascripts/webshims/shims/combos/25.js +53 -26
  18. data/vendor/assets/javascripts/webshims/shims/combos/27.js +12 -15
  19. data/vendor/assets/javascripts/webshims/shims/combos/28.js +13 -10
  20. data/vendor/assets/javascripts/webshims/shims/combos/3.js +18 -11
  21. data/vendor/assets/javascripts/webshims/shims/combos/30.js +18 -11
  22. data/vendor/assets/javascripts/webshims/shims/combos/31.js +18 -11
  23. data/vendor/assets/javascripts/webshims/shims/combos/34.js +30 -13
  24. data/vendor/assets/javascripts/webshims/shims/combos/4.js +16 -11
  25. data/vendor/assets/javascripts/webshims/shims/combos/5.js +34 -30
  26. data/vendor/assets/javascripts/webshims/shims/combos/6.js +34 -30
  27. data/vendor/assets/javascripts/webshims/shims/combos/7.js +18 -11
  28. data/vendor/assets/javascripts/webshims/shims/combos/8.js +18 -11
  29. data/vendor/assets/javascripts/webshims/shims/combos/9.js +50 -41
  30. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +16 -11
  31. data/vendor/assets/javascripts/webshims/shims/es5.js +507 -481
  32. data/vendor/assets/javascripts/webshims/shims/filereader-xhr.js +12 -15
  33. data/vendor/assets/javascripts/webshims/shims/form-core.js +2 -0
  34. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +34 -30
  35. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +13 -10
  36. data/vendor/assets/javascripts/webshims/shims/form-validation.js +2 -2
  37. data/vendor/assets/javascripts/webshims/shims/form-validators.js +0 -6
  38. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +3 -3
  39. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ca.js +65 -0
  40. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +8 -1
  41. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +1 -3
  42. data/vendor/assets/javascripts/webshims/shims/jpicker/images/AlphaBar.png +0 -0
  43. data/vendor/assets/javascripts/webshims/shims/jpicker/images/Bars.png +0 -0
  44. data/vendor/assets/javascripts/webshims/shims/jpicker/images/Maps.png +0 -0
  45. data/vendor/assets/javascripts/webshims/shims/jpicker/images/NoColor.png +0 -0
  46. data/vendor/assets/javascripts/webshims/shims/jpicker/images/bar-opacity.png +0 -0
  47. data/vendor/assets/javascripts/webshims/shims/jpicker/images/map-opacity.png +0 -0
  48. data/vendor/assets/javascripts/webshims/shims/jpicker/images/preview-opacity.png +0 -0
  49. data/vendor/assets/javascripts/webshims/shims/mediacapture.js +9 -3
  50. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +25 -0
  51. data/vendor/assets/javascripts/webshims/shims/picture.js +387 -527
  52. data/vendor/assets/javascripts/webshims/shims/styles/color-picker.png +0 -0
  53. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +12 -4
  54. data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +5 -5
  55. data/vendor/assets/javascripts/webshims/shims/styles/progress.png +0 -0
  56. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +37 -1
  57. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +7 -5
  58. data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +22 -11
  59. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +10 -7
  60. data/vendor/assets/javascripts/webshims/shims/styles/transparent.png +0 -0
  61. data/vendor/assets/javascripts/webshims/shims/styles/widget-font.zip +0 -0
  62. data/vendor/assets/javascripts/webshims/shims/styles/widget.eot +0 -0
  63. data/vendor/assets/javascripts/webshims/shims/styles/widget.svg +6 -2
  64. data/vendor/assets/javascripts/webshims/shims/styles/widget.ttf +0 -0
  65. data/vendor/assets/javascripts/webshims/shims/styles/widget.woff +0 -0
  66. data/vendor/assets/javascripts/webshims/shims/track.js +14 -2
  67. data/vendor/assets/javascripts/webshims/shims/url.js +18 -7
  68. metadata +9 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fd92f67902b63a8bf08574c1db7719cf6b10a990
4
- data.tar.gz: c7e14b4a1b66a6cbab72dcba292b888b3915eb7c
3
+ metadata.gz: 65d8004e557a166d39747260507c3daef84c89a8
4
+ data.tar.gz: b06f73ffb3c1692c337db399c43b91ac3b02c0de
5
5
  SHA512:
6
- metadata.gz: 1ce34c2f35776168b40e8aeb9f81b8e0e239ac926a3c2a0c3927d02680d76d7d2c832246a97f7c8af100f2170186e921fa81d04797ea8aab6ba4bedf2cd2af08
7
- data.tar.gz: 374e7c639356716a73c546fea9b296b73afd67c691043be3d52a9eb7e803df989ad59d6ada34a353db0ced17f18b8a006b3a7a2c4e17f48abfd4ec48a37bb2ee
6
+ metadata.gz: 1568d4da1cfb4ccc99e39886039de63fb0d5158d08b8a8ae11277ffba7ee9f9bdf5fd61baa386becfa608f78b8781df8019836a27cd39cd66da538fc346b1d41
7
+ data.tar.gz: fde0a6880d7b9891bdb9d930562e5667d97a791a3de1dc39f60037ef66715bd4c2dbe2714647e1971b029a85cc5069902c0bc9ca63a2cf03cd84938daaa75796
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "1.15.3"
4
- WEBSHIMS_VERSION = "1.15.3"
3
+ VERSION = "1.15.4"
4
+ WEBSHIMS_VERSION = "1.15.4"
5
5
  end
6
6
  end
@@ -119,6 +119,7 @@
119
119
  promise: 'es6',
120
120
  URL: 'url'
121
121
  };
122
+ var supportCapture = 'capture' in create('input');
122
123
 
123
124
  clearInterval(webshims.timer);
124
125
  support.advancedObjectProperties = support.objectAccessor = support.ES5 = !!('create' in Object && 'seal' in Object);
@@ -136,7 +137,7 @@
136
137
  }
137
138
 
138
139
  $.extend(webshims, {
139
- version: '1.15.3',
140
+ version: '1.15.4',
140
141
 
141
142
  cfg: {
142
143
  enhanceAuto: window.Audio && (!window.matchMedia || matchMedia('(min-device-width: 721px)').matches),
@@ -212,11 +213,13 @@
212
213
  })(),
213
214
  _polyfill: function(features){
214
215
  var toLoadFeatures = [];
215
- var hasFormsExt;
216
+ var hasFormsExt, needExtStyles;
216
217
 
217
218
  if(!firstRun.run){
218
219
  hasFormsExt = $.inArray('forms-ext', features) !== -1;
219
220
  firstRun();
221
+ needExtStyles = (hasFormsExt && !modules["form-number-date-ui"].test()) || (!supportCapture && $.inArray('mediacapture', features) !== -1);
222
+
220
223
  if(hasFormsExt && $.inArray('forms', features) == -1){
221
224
  features.push('forms');
222
225
  if(WSDEBUG){
@@ -224,7 +227,7 @@
224
227
  }
225
228
  }
226
229
  if(webCFG.loadStyles){
227
- loader.loadCSS('styles/shim'+((hasFormsExt && !modules["form-number-date-ui"].test()) ? '-ext' : '')+'.css');
230
+ loader.loadCSS('styles/shim'+(needExtStyles ? '-ext' : '')+'.css');
228
231
  }
229
232
  }
230
233
 
@@ -922,7 +925,7 @@
922
925
  //<picture
923
926
  create('picture');
924
927
  addPolyfill('picture', {
925
- test: ('picturefill' in window) || !!window.HTMLPictureElement,
928
+ test: ('picturefill' in window) || !!window.HTMLPictureElement || ('respimage' in window),
926
929
  d: ['matchMedia'],
927
930
  c: [18],
928
931
  loadInit: function(){
@@ -964,22 +967,6 @@
964
967
  });
965
968
  //>
966
969
 
967
- //<usermedia
968
- var userMediaTest = ('getUserMedia' in navigator);
969
-
970
- addPolyfill('usermedia-core', {
971
- f: 'usermedia',
972
- test: userMediaTest && window.URL,
973
- d: ['url', DOMSUPPORT]
974
- });
975
-
976
- addPolyfill('usermedia-shim', {
977
- f: 'usermedia',
978
- test: !!(userMediaTest || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia),
979
- d: ['url', 'mediaelement', DOMSUPPORT]
980
- });
981
- //>
982
-
983
970
  //<canvas
984
971
  (function(){
985
972
  addPolyfill('canvas', {
@@ -1001,6 +988,30 @@
1001
988
  //>
1002
989
 
1003
990
 
991
+ //<usermedia
992
+ var userMediaTest = ('getUserMedia' in navigator);
993
+
994
+ addPolyfill('usermedia-core', {
995
+ f: 'usermedia',
996
+ test: userMediaTest && window.URL,
997
+ d: ['url', DOMSUPPORT]
998
+ });
999
+
1000
+ addPolyfill('usermedia-shim', {
1001
+ f: 'usermedia',
1002
+ test: !!(userMediaTest || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia),
1003
+ d: ['url', 'mediaelement', DOMSUPPORT]
1004
+ });
1005
+ //>
1006
+
1007
+ //<mediacapture
1008
+ addPolyfill('mediacapture', {
1009
+ test: supportCapture,
1010
+ d: ['swfmini', 'usermedia', DOMSUPPORT, 'filereader', 'forms', 'canvas']
1011
+ });
1012
+ //>
1013
+
1014
+
1004
1015
  //<forms
1005
1016
  (function(){
1006
1017
  var formExtend, formOptions;
@@ -1086,7 +1097,7 @@
1086
1097
 
1087
1098
  webshims.validationMessages = webshims.validityMessages = {
1088
1099
  langSrc: 'i18n/formcfg-',
1089
- availableLangs: "ar cs el es fa fr he hi hu it ja lt nl pl pt pt-BR pt-PT ru sv zh-CN zh-TW".split(' ')
1100
+ availableLangs: "ar ca cs el es fa fr he hi hu it ja lt nl pl pt pt-BR pt-PT ru sv zh-CN zh-TW".split(' ')
1090
1101
  };
1091
1102
  webshims.formcfg = $.extend({}, webshims.validationMessages);
1092
1103
 
@@ -1244,15 +1255,6 @@
1244
1255
  });
1245
1256
  //>
1246
1257
 
1247
- /*
1248
- //<mediacapture
1249
- addPolyfill('mediacapture', {
1250
- test: 'capture' in create('input'),
1251
- d: ['swfmini', 'usermedia', DOMSUPPORT, 'filereader', 'forms', 'canvas']
1252
- });
1253
- //>
1254
- */
1255
-
1256
1258
  //<details
1257
1259
  addPolyfill('details', {
1258
1260
  test: ('open' in create('details')),
@@ -85,13 +85,7 @@
85
85
  };
86
86
  }
87
87
  }
88
- if (typeof define === 'function' && define.amd) {
89
- define(function () {
90
- return dataURLtoBlob;
91
- });
92
- } else {
93
- window.dataURLtoBlob = dataURLtoBlob;
94
- }
88
+ window.dataURLtoBlob = dataURLtoBlob;
95
89
  }(this));
96
90
 
97
91
  webshim.isReady('canvas-blob', true);
@@ -479,6 +479,8 @@ webshims.isReady('swfmini', true);
479
479
  }
480
480
  return message || '';
481
481
  };
482
+
483
+ webshims.refreshCustomValidityRules = $.noop;
482
484
 
483
485
  $.fn.getErrorMessage = function(key){
484
486
  var message = '';
@@ -102,20 +102,25 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
102
102
  };
103
103
 
104
104
  //jquery mobile and jquery ui
105
- if(!$.widget){
105
+ if(!$.widget && (!$.pluginFactory || !$.pluginFactory.mixin)){
106
106
  (function(){
107
107
  var _cleanData = $.cleanData;
108
- $.cleanData = function( elems ) {
109
- if(!$.widget){
110
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
108
+ $.cleanData = (function( orig ) {
109
+ return function( elems ) {
110
+ var events, elem, i;
111
+ for ( i = 0; (elem = elems[i]) != null; i++ ) {
111
112
  try {
112
- $( elem ).triggerHandler( "remove" );
113
- // http://bugs.jquery.com/ticket/8235
114
- } catch( e ) {}
113
+ // Only trigger remove when necessary to save time
114
+ events = $._data( elem, "events" );
115
+ if ( events && events.remove ) {
116
+ $( elem ).triggerHandler( "remove" );
117
+ }
118
+ // http://bugs.jquery.com/ticket/8235
119
+ } catch ( e ) {}
115
120
  }
116
- }
117
- _cleanData( elems );
118
- };
121
+ orig( elems );
122
+ };
123
+ })( $.cleanData );
119
124
  })();
120
125
  }
121
126
 
@@ -536,7 +541,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
536
541
  return id;
537
542
  };
538
543
  })(),
539
- domPrefixes: ["ws", "webkit", "moz", "ms", "o"],
544
+ domPrefixes: ["webkit", "moz", "ms", "o", "ws"],
540
545
 
541
546
  prefixed: function (prop, obj){
542
547
  var i, testProp;
@@ -2275,9 +2280,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2275
2280
  },
2276
2281
  time: function(val, o, noCorrect){
2277
2282
  var fVal, i;
2283
+
2278
2284
  if(val){
2279
2285
 
2280
2286
  val = val.split(':');
2287
+ if(val.length != 2 || isNaN(parseInt(val[0] || '', 10)) || isNaN(parseInt(val[1] || '', 10))){
2288
+ return val.join(':');
2289
+ }
2281
2290
  if(curCfg.meridian){
2282
2291
  fVal = (val[0] * 1);
2283
2292
  if(fVal && fVal >= 12){
@@ -2432,6 +2441,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2432
2441
  createFormat('d');
2433
2442
  var tmp, obj;
2434
2443
  var ret = '';
2444
+
2435
2445
  if(opts.splitInput){
2436
2446
  obj = {yy: 0, mm: 1, dd: 2};
2437
2447
  } else {
@@ -2453,8 +2463,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2453
2463
  }
2454
2464
  ret = ([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-');
2455
2465
  }
2456
- return ret
2457
- ;
2466
+ return ret;
2458
2467
  },
2459
2468
  color: function(val, opts){
2460
2469
  var ret = '#000000';
@@ -2756,9 +2765,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2756
2765
  };
2757
2766
 
2758
2767
  ['defaultValue', 'value'].forEach(function(name){
2768
+ var formatName = 'format'+name;
2759
2769
  wsWidgetProto[name] = function(val, force){
2760
- if(!this._init || force || val !== this.options[name]){
2761
- this.element.prop(name, this.formatValue(val));
2770
+ if(!this._init || force || val !== this.options[name] || this.options[formatName] != this.element.prop(name)){
2771
+ this.options[formatName] = this.formatValue(val);
2772
+ this.element.prop(name, this.options[formatName]);
2762
2773
  this.options[name] = val;
2763
2774
  this._propertyChange(name);
2764
2775
  this.mirrorValidity();
@@ -2882,36 +2893,34 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2882
2893
  var isValue = name == 'value';
2883
2894
  spinBtnProto[name] = function(val, force, isLive){
2884
2895
  var selectionEnd;
2885
- if(!this._init || force || this.options[name] !== val){
2886
- if(isValue){
2887
- this._beforeValue(val);
2888
- } else {
2889
- this.elemHelper.prop(name, val);
2890
- }
2896
+ if(isValue){
2897
+ this._beforeValue(val);
2898
+ } else {
2899
+ this.elemHelper.prop(name, val);
2900
+ }
2891
2901
 
2892
- val = formatVal[this.type](val, this.options);
2893
- if(this.options.splitInput){
2894
- $.each(this.splits, function(i, elem){
2895
- var setOption;
2896
- if(!(name in elem) && !isValue && $.nodeName(elem, 'select')){
2897
- $('option[value="'+ val[i] +'"]', elem).prop('defaultSelected', true);
2898
- } else {
2899
- $.prop(elem, name, val[i]);
2900
- }
2901
- });
2902
- } else {
2903
- val = this.toFixed(val);
2904
- if(isLive && this._getSelectionEnd){
2905
- selectionEnd = this._getSelectionEnd(val);
2906
- }
2907
- this.element.prop(name, val);
2908
- if(selectionEnd != null){
2909
- this.element.prop('selectionEnd', selectionEnd);
2902
+ val = formatVal[this.type](val, this.options);
2903
+ if(this.options.splitInput){
2904
+ $.each(this.splits, function(i, elem){
2905
+ var setOption;
2906
+ if(!(name in elem) && !isValue && $.nodeName(elem, 'select')){
2907
+ $('option[value="'+ val[i] +'"]', elem).prop('defaultSelected', true);
2908
+ } else {
2909
+ $.prop(elem, name, val[i]);
2910
2910
  }
2911
+ });
2912
+ } else {
2913
+ val = this.toFixed(val);
2914
+ if(isLive && this._getSelectionEnd){
2915
+ selectionEnd = this._getSelectionEnd(val);
2916
+ }
2917
+ this.element.prop(name, val);
2918
+ if(selectionEnd != null){
2919
+ this.element.prop('selectionEnd', selectionEnd);
2911
2920
  }
2912
- this._propertyChange(name);
2913
- this.mirrorValidity();
2914
2921
  }
2922
+ this._propertyChange(name);
2923
+ this.mirrorValidity();
2915
2924
  };
2916
2925
  });
2917
2926
 
@@ -1044,9 +1044,13 @@
1044
1044
  },
1045
1045
  time: function(val, o, noCorrect){
1046
1046
  var fVal, i;
1047
+
1047
1048
  if(val){
1048
1049
 
1049
1050
  val = val.split(':');
1051
+ if(val.length != 2 || isNaN(parseInt(val[0] || '', 10)) || isNaN(parseInt(val[1] || '', 10))){
1052
+ return val.join(':');
1053
+ }
1050
1054
  if(curCfg.meridian){
1051
1055
  fVal = (val[0] * 1);
1052
1056
  if(fVal && fVal >= 12){
@@ -1201,6 +1205,7 @@
1201
1205
  createFormat('d');
1202
1206
  var tmp, obj;
1203
1207
  var ret = '';
1208
+
1204
1209
  if(opts.splitInput){
1205
1210
  obj = {yy: 0, mm: 1, dd: 2};
1206
1211
  } else {
@@ -1222,8 +1227,7 @@
1222
1227
  }
1223
1228
  ret = ([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-');
1224
1229
  }
1225
- return ret
1226
- ;
1230
+ return ret;
1227
1231
  },
1228
1232
  color: function(val, opts){
1229
1233
  var ret = '#000000';
@@ -1525,9 +1529,11 @@
1525
1529
  };
1526
1530
 
1527
1531
  ['defaultValue', 'value'].forEach(function(name){
1532
+ var formatName = 'format'+name;
1528
1533
  wsWidgetProto[name] = function(val, force){
1529
- if(!this._init || force || val !== this.options[name]){
1530
- this.element.prop(name, this.formatValue(val));
1534
+ if(!this._init || force || val !== this.options[name] || this.options[formatName] != this.element.prop(name)){
1535
+ this.options[formatName] = this.formatValue(val);
1536
+ this.element.prop(name, this.options[formatName]);
1531
1537
  this.options[name] = val;
1532
1538
  this._propertyChange(name);
1533
1539
  this.mirrorValidity();
@@ -1651,36 +1657,34 @@
1651
1657
  var isValue = name == 'value';
1652
1658
  spinBtnProto[name] = function(val, force, isLive){
1653
1659
  var selectionEnd;
1654
- if(!this._init || force || this.options[name] !== val){
1655
- if(isValue){
1656
- this._beforeValue(val);
1657
- } else {
1658
- this.elemHelper.prop(name, val);
1659
- }
1660
+ if(isValue){
1661
+ this._beforeValue(val);
1662
+ } else {
1663
+ this.elemHelper.prop(name, val);
1664
+ }
1660
1665
 
1661
- val = formatVal[this.type](val, this.options);
1662
- if(this.options.splitInput){
1663
- $.each(this.splits, function(i, elem){
1664
- var setOption;
1665
- if(!(name in elem) && !isValue && $.nodeName(elem, 'select')){
1666
- $('option[value="'+ val[i] +'"]', elem).prop('defaultSelected', true);
1667
- } else {
1668
- $.prop(elem, name, val[i]);
1669
- }
1670
- });
1671
- } else {
1672
- val = this.toFixed(val);
1673
- if(isLive && this._getSelectionEnd){
1674
- selectionEnd = this._getSelectionEnd(val);
1675
- }
1676
- this.element.prop(name, val);
1677
- if(selectionEnd != null){
1678
- this.element.prop('selectionEnd', selectionEnd);
1666
+ val = formatVal[this.type](val, this.options);
1667
+ if(this.options.splitInput){
1668
+ $.each(this.splits, function(i, elem){
1669
+ var setOption;
1670
+ if(!(name in elem) && !isValue && $.nodeName(elem, 'select')){
1671
+ $('option[value="'+ val[i] +'"]', elem).prop('defaultSelected', true);
1672
+ } else {
1673
+ $.prop(elem, name, val[i]);
1679
1674
  }
1675
+ });
1676
+ } else {
1677
+ val = this.toFixed(val);
1678
+ if(isLive && this._getSelectionEnd){
1679
+ selectionEnd = this._getSelectionEnd(val);
1680
+ }
1681
+ this.element.prop(name, val);
1682
+ if(selectionEnd != null){
1683
+ this.element.prop('selectionEnd', selectionEnd);
1680
1684
  }
1681
- this._propertyChange(name);
1682
- this.mirrorValidity();
1683
1685
  }
1686
+ this._propertyChange(name);
1687
+ this.mirrorValidity();
1684
1688
  };
1685
1689
  });
1686
1690
 
@@ -893,10 +893,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
893
893
  var copyName = {srclang: 'language'};
894
894
 
895
895
  var updateMediaTrackList = function(baseData, trackList){
896
+ var i, len;
897
+ var callChange = false;
896
898
  var removed = [];
897
899
  var added = [];
898
900
  var newTracks = [];
899
- var i, len;
900
901
  if(!baseData){
901
902
  baseData = webshims.data(this, 'mediaelementBase') || webshims.data(this, 'mediaelementBase', {});
902
903
  }
@@ -931,12 +932,13 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
931
932
  removed.push(trackList[i]);
932
933
  }
933
934
  }
934
-
935
+
935
936
  if(removed.length || added.length){
936
937
  trackList.splice(0);
937
938
 
938
939
  for(i = 0, len = newTracks.length; i < len; i++){
939
940
  trackList.push(newTracks[i]);
941
+
940
942
  }
941
943
  for(i = 0, len = removed.length; i < len; i++){
942
944
  $([trackList]).triggerHandler($.Event({type: 'removetrack', track: removed[i]}));
@@ -949,6 +951,16 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
949
951
  $(this).triggerHandler('updatetrackdisplay');
950
952
  }
951
953
  }
954
+
955
+ for(i = 0, len = trackList.length; i < len; i++){
956
+ if(trackList[i].__wsmode != trackList[i].mode){
957
+ trackList[i].__wsmode = trackList[i].mode;
958
+ callChange = true;
959
+ }
960
+ }
961
+ if(callChange){
962
+ $([trackList]).triggerHandler('change');
963
+ }
952
964
  };
953
965
 
954
966
  var refreshTrack = function(track, trackData){