webshims-rails 1.15.3 → 1.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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){