vue 2.6.4 → 2.6.8

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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vue.js v2.6.4
2
+ * Vue.js v2.6.8
3
3
  * (c) 2014-2019 Evan You
4
4
  * Released under the MIT License.
5
5
  */
@@ -466,7 +466,7 @@ var config = ({
466
466
  * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
467
467
  * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
468
468
  */
469
- var unicodeLetters = 'a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD';
469
+ var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
470
470
 
471
471
  /**
472
472
  * Check if a string starts with $ or _
@@ -491,7 +491,7 @@ function def (obj, key, val, enumerable) {
491
491
  /**
492
492
  * Parse simple path.
493
493
  */
494
- var bailRE = new RegExp(("[^" + unicodeLetters + ".$_\\d]"));
494
+ var bailRE = new RegExp(("[^" + (unicodeRegExp.source) + ".$_\\d]"));
495
495
  function parsePath (path) {
496
496
  if (bailRE.test(path)) {
497
497
  return
@@ -1397,7 +1397,7 @@ function checkComponents (options) {
1397
1397
  }
1398
1398
 
1399
1399
  function validateComponentName (name) {
1400
- if (!new RegExp(("^[a-zA-Z][\\-\\.0-9_" + unicodeLetters + "]*$")).test(name)) {
1400
+ if (!new RegExp(("^[a-zA-Z][\\-\\.0-9_" + (unicodeRegExp.source) + "]*$")).test(name)) {
1401
1401
  warn(
1402
1402
  'Invalid component name: "' + name + '". Component names ' +
1403
1403
  'should conform to valid custom element name in html5 specification.'
@@ -1816,23 +1816,30 @@ function isBoolean () {
1816
1816
  /* */
1817
1817
 
1818
1818
  function handleError (err, vm, info) {
1819
- if (vm) {
1820
- var cur = vm;
1821
- while ((cur = cur.$parent)) {
1822
- var hooks = cur.$options.errorCaptured;
1823
- if (hooks) {
1824
- for (var i = 0; i < hooks.length; i++) {
1825
- try {
1826
- var capture = hooks[i].call(cur, err, vm, info) === false;
1827
- if (capture) { return }
1828
- } catch (e) {
1829
- globalHandleError(e, cur, 'errorCaptured hook');
1819
+ // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
1820
+ // See: https://github.com/vuejs/vuex/issues/1505
1821
+ pushTarget();
1822
+ try {
1823
+ if (vm) {
1824
+ var cur = vm;
1825
+ while ((cur = cur.$parent)) {
1826
+ var hooks = cur.$options.errorCaptured;
1827
+ if (hooks) {
1828
+ for (var i = 0; i < hooks.length; i++) {
1829
+ try {
1830
+ var capture = hooks[i].call(cur, err, vm, info) === false;
1831
+ if (capture) { return }
1832
+ } catch (e) {
1833
+ globalHandleError(e, cur, 'errorCaptured hook');
1834
+ }
1830
1835
  }
1831
1836
  }
1832
1837
  }
1833
1838
  }
1839
+ globalHandleError(err, vm, info);
1840
+ } finally {
1841
+ popTarget();
1834
1842
  }
1835
- globalHandleError(err, vm, info);
1836
1843
  }
1837
1844
 
1838
1845
  function invokeWithErrorHandling (
@@ -1846,7 +1853,9 @@ function invokeWithErrorHandling (
1846
1853
  try {
1847
1854
  res = args ? handler.apply(context, args) : handler.call(context);
1848
1855
  if (res && !res._isVue && isPromise(res)) {
1849
- res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
1856
+ // issue #9511
1857
+ // reassign to res to avoid catch triggering multiple times when nested calls
1858
+ res = res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
1850
1859
  }
1851
1860
  } catch (e) {
1852
1861
  handleError(e, vm, info);
@@ -2531,26 +2540,35 @@ function normalizeScopedSlots (
2531
2540
  prevSlots
2532
2541
  ) {
2533
2542
  var res;
2543
+ var isStable = slots ? !!slots.$stable : true;
2544
+ var key = slots && slots.$key;
2534
2545
  if (!slots) {
2535
2546
  res = {};
2536
2547
  } else if (slots._normalized) {
2537
2548
  // fast path 1: child component re-render only, parent did not change
2538
2549
  return slots._normalized
2539
- } else if (slots.$stable && prevSlots && prevSlots !== emptyObject) {
2540
- // fast path 2: stable scoped slots, only need to normalize once
2550
+ } else if (
2551
+ isStable &&
2552
+ prevSlots &&
2553
+ prevSlots !== emptyObject &&
2554
+ key === prevSlots.$key &&
2555
+ Object.keys(normalSlots).length === 0
2556
+ ) {
2557
+ // fast path 2: stable scoped slots w/ no normal slots to proxy,
2558
+ // only need to normalize once
2541
2559
  return prevSlots
2542
2560
  } else {
2543
2561
  res = {};
2544
- for (var key in slots) {
2545
- if (slots[key] && key[0] !== '$') {
2546
- res[key] = normalizeScopedSlot(normalSlots, key, slots[key]);
2562
+ for (var key$1 in slots) {
2563
+ if (slots[key$1] && key$1[0] !== '$') {
2564
+ res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);
2547
2565
  }
2548
2566
  }
2549
2567
  }
2550
2568
  // expose normal slots on scopedSlots
2551
- for (var key$1 in normalSlots) {
2552
- if (!(key$1 in res)) {
2553
- res[key$1] = proxyNormalSlot(normalSlots, key$1);
2569
+ for (var key$2 in normalSlots) {
2570
+ if (!(key$2 in res)) {
2571
+ res[key$2] = proxyNormalSlot(normalSlots, key$2);
2554
2572
  }
2555
2573
  }
2556
2574
  // avoriaz seems to mock a non-extensible $scopedSlots object
@@ -2558,13 +2576,14 @@ function normalizeScopedSlots (
2558
2576
  if (slots && Object.isExtensible(slots)) {
2559
2577
  (slots)._normalized = res;
2560
2578
  }
2561
- def(res, '$stable', slots ? !!slots.$stable : true);
2579
+ def(res, '$stable', isStable);
2580
+ def(res, '$key', key);
2562
2581
  return res
2563
2582
  }
2564
2583
 
2565
2584
  function normalizeScopedSlot(normalSlots, key, fn) {
2566
- var normalized = function (scope) {
2567
- var res = fn(scope || {});
2585
+ var normalized = function () {
2586
+ var res = arguments.length ? fn.apply(null, arguments) : fn({});
2568
2587
  res = res && typeof res === 'object' && !Array.isArray(res)
2569
2588
  ? [res] // single vnode
2570
2589
  : normalizeChildren(res);
@@ -2853,14 +2872,16 @@ function bindObjectListeners (data, value) {
2853
2872
 
2854
2873
  function resolveScopedSlots (
2855
2874
  fns, // see flow/vnode
2875
+ res,
2876
+ // the following are added in 2.6
2856
2877
  hasDynamicKeys,
2857
- res
2878
+ contentHashKey
2858
2879
  ) {
2859
2880
  res = res || { $stable: !hasDynamicKeys };
2860
2881
  for (var i = 0; i < fns.length; i++) {
2861
2882
  var slot = fns[i];
2862
2883
  if (Array.isArray(slot)) {
2863
- resolveScopedSlots(slot, hasDynamicKeys, res);
2884
+ resolveScopedSlots(slot, res, hasDynamicKeys);
2864
2885
  } else if (slot) {
2865
2886
  // marker for reverse proxying v-slot without scope on this.$slots
2866
2887
  if (slot.proxy) {
@@ -2869,6 +2890,9 @@ function resolveScopedSlots (
2869
2890
  res[slot.key] = slot.fn;
2870
2891
  }
2871
2892
  }
2893
+ if (contentHashKey) {
2894
+ (res).$key = contentHashKey;
2895
+ }
2872
2896
  return res
2873
2897
  }
2874
2898
 
@@ -3587,17 +3611,21 @@ function resolveAsyncComponent (
3587
3611
  return factory.resolved
3588
3612
  }
3589
3613
 
3614
+ var owner = currentRenderingInstance;
3615
+ if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
3616
+ // already pending
3617
+ factory.owners.push(owner);
3618
+ }
3619
+
3590
3620
  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
3591
3621
  return factory.loadingComp
3592
3622
  }
3593
3623
 
3594
- var owner = currentRenderingInstance;
3595
- if (isDef(factory.owners)) {
3596
- // already pending
3597
- factory.owners.push(owner);
3598
- } else {
3624
+ if (!isDef(factory.owners)) {
3599
3625
  var owners = factory.owners = [owner];
3600
- var sync = true;
3626
+ var sync = true
3627
+
3628
+ ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });
3601
3629
 
3602
3630
  var forceRender = function (renderCompleted) {
3603
3631
  for (var i = 0, l = owners.length; i < l; i++) {
@@ -4052,9 +4080,12 @@ function updateChildComponent (
4052
4080
  // check if there are dynamic scopedSlots (hand-written or compiled but with
4053
4081
  // dynamic slot names). Static scoped slots compiled from template has the
4054
4082
  // "$stable" marker.
4083
+ var newScopedSlots = parentVnode.data.scopedSlots;
4084
+ var oldScopedSlots = vm.$scopedSlots;
4055
4085
  var hasDynamicScopedSlot = !!(
4056
- (parentVnode.data.scopedSlots && !parentVnode.data.scopedSlots.$stable) ||
4057
- (vm.$scopedSlots !== emptyObject && !vm.$scopedSlots.$stable)
4086
+ (newScopedSlots && !newScopedSlots.$stable) ||
4087
+ (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||
4088
+ (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)
4058
4089
  );
4059
4090
 
4060
4091
  // Any static slot children from the parent may have changed during parent's
@@ -5384,7 +5415,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
5384
5415
  value: FunctionalRenderContext
5385
5416
  });
5386
5417
 
5387
- Vue.version = '2.6.4';
5418
+ Vue.version = '2.6.8';
5388
5419
 
5389
5420
  /* */
5390
5421
 
@@ -6833,9 +6864,17 @@ function add$1 (
6833
6864
  var original = handler;
6834
6865
  handler = original._wrapper = function (e) {
6835
6866
  if (
6867
+ // no bubbling, should always fire.
6868
+ // this is just a safety net in case event.timeStamp is unreliable in
6869
+ // certain weird environments...
6870
+ e.target === e.currentTarget ||
6871
+ // event is fired after handler attachment
6836
6872
  e.timeStamp >= attachedTimestamp ||
6873
+ // #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState
6874
+ e.timeStamp === 0 ||
6837
6875
  // #9448 bail if event is fired in another document in a multi-page
6838
- // electron/nw.js app
6876
+ // electron/nw.js app, since event.timeStamp will be using a different
6877
+ // starting reference
6839
6878
  e.target.ownerDocument !== document
6840
6879
  ) {
6841
6880
  return original.apply(this, arguments)
@@ -6918,15 +6957,7 @@ function updateDOMProps (oldVnode, vnode) {
6918
6957
  }
6919
6958
  }
6920
6959
 
6921
- // skip the update if old and new VDOM state is the same.
6922
- // the only exception is `value` where the DOM value may be temporarily
6923
- // out of sync with VDOM state due to focus, composition and modifiers.
6924
- // This also covers #4521 by skipping the unnecesarry `checked` update.
6925
- if (key !== 'value' && cur === oldProps[key]) {
6926
- continue
6927
- }
6928
-
6929
- if (key === 'value') {
6960
+ if (key === 'value' && elm.tagName !== 'PROGRESS') {
6930
6961
  // store value as _value as well since
6931
6962
  // non-string values will be stringified
6932
6963
  elm._value = cur;
@@ -6946,8 +6977,18 @@ function updateDOMProps (oldVnode, vnode) {
6946
6977
  while (svg.firstChild) {
6947
6978
  elm.appendChild(svg.firstChild);
6948
6979
  }
6949
- } else {
6950
- elm[key] = cur;
6980
+ } else if (
6981
+ // skip the update if old and new VDOM state is the same.
6982
+ // `value` is handled separately because the DOM value may be temporarily
6983
+ // out of sync with VDOM state due to focus, composition and modifiers.
6984
+ // This #4521 by skipping the unnecesarry `checked` update.
6985
+ cur !== oldProps[key]
6986
+ ) {
6987
+ // some property updates can throw
6988
+ // e.g. `value` on <progress> w/ non-finite value
6989
+ try {
6990
+ elm[key] = cur;
6991
+ } catch (e) {}
6951
6992
  }
6952
6993
  }
6953
6994
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vue.js v2.6.4
2
+ * Vue.js v2.6.8
3
3
  * (c) 2014-2019 Evan You
4
4
  * Released under the MIT License.
5
5
  */
@@ -472,7 +472,7 @@
472
472
  * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
473
473
  * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
474
474
  */
475
- var unicodeLetters = 'a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD';
475
+ var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
476
476
 
477
477
  /**
478
478
  * Check if a string starts with $ or _
@@ -497,7 +497,7 @@
497
497
  /**
498
498
  * Parse simple path.
499
499
  */
500
- var bailRE = new RegExp(("[^" + unicodeLetters + ".$_\\d]"));
500
+ var bailRE = new RegExp(("[^" + (unicodeRegExp.source) + ".$_\\d]"));
501
501
  function parsePath (path) {
502
502
  if (bailRE.test(path)) {
503
503
  return
@@ -1401,7 +1401,7 @@
1401
1401
  }
1402
1402
 
1403
1403
  function validateComponentName (name) {
1404
- if (!new RegExp(("^[a-zA-Z][\\-\\.0-9_" + unicodeLetters + "]*$")).test(name)) {
1404
+ if (!new RegExp(("^[a-zA-Z][\\-\\.0-9_" + (unicodeRegExp.source) + "]*$")).test(name)) {
1405
1405
  warn(
1406
1406
  'Invalid component name: "' + name + '". Component names ' +
1407
1407
  'should conform to valid custom element name in html5 specification.'
@@ -1816,23 +1816,30 @@
1816
1816
  /* */
1817
1817
 
1818
1818
  function handleError (err, vm, info) {
1819
- if (vm) {
1820
- var cur = vm;
1821
- while ((cur = cur.$parent)) {
1822
- var hooks = cur.$options.errorCaptured;
1823
- if (hooks) {
1824
- for (var i = 0; i < hooks.length; i++) {
1825
- try {
1826
- var capture = hooks[i].call(cur, err, vm, info) === false;
1827
- if (capture) { return }
1828
- } catch (e) {
1829
- globalHandleError(e, cur, 'errorCaptured hook');
1819
+ // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
1820
+ // See: https://github.com/vuejs/vuex/issues/1505
1821
+ pushTarget();
1822
+ try {
1823
+ if (vm) {
1824
+ var cur = vm;
1825
+ while ((cur = cur.$parent)) {
1826
+ var hooks = cur.$options.errorCaptured;
1827
+ if (hooks) {
1828
+ for (var i = 0; i < hooks.length; i++) {
1829
+ try {
1830
+ var capture = hooks[i].call(cur, err, vm, info) === false;
1831
+ if (capture) { return }
1832
+ } catch (e) {
1833
+ globalHandleError(e, cur, 'errorCaptured hook');
1834
+ }
1830
1835
  }
1831
1836
  }
1832
1837
  }
1833
1838
  }
1839
+ globalHandleError(err, vm, info);
1840
+ } finally {
1841
+ popTarget();
1834
1842
  }
1835
- globalHandleError(err, vm, info);
1836
1843
  }
1837
1844
 
1838
1845
  function invokeWithErrorHandling (
@@ -1846,7 +1853,9 @@
1846
1853
  try {
1847
1854
  res = args ? handler.apply(context, args) : handler.call(context);
1848
1855
  if (res && !res._isVue && isPromise(res)) {
1849
- res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
1856
+ // issue #9511
1857
+ // reassign to res to avoid catch triggering multiple times when nested calls
1858
+ res = res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
1850
1859
  }
1851
1860
  } catch (e) {
1852
1861
  handleError(e, vm, info);
@@ -2529,26 +2538,35 @@
2529
2538
  prevSlots
2530
2539
  ) {
2531
2540
  var res;
2541
+ var isStable = slots ? !!slots.$stable : true;
2542
+ var key = slots && slots.$key;
2532
2543
  if (!slots) {
2533
2544
  res = {};
2534
2545
  } else if (slots._normalized) {
2535
2546
  // fast path 1: child component re-render only, parent did not change
2536
2547
  return slots._normalized
2537
- } else if (slots.$stable && prevSlots && prevSlots !== emptyObject) {
2538
- // fast path 2: stable scoped slots, only need to normalize once
2548
+ } else if (
2549
+ isStable &&
2550
+ prevSlots &&
2551
+ prevSlots !== emptyObject &&
2552
+ key === prevSlots.$key &&
2553
+ Object.keys(normalSlots).length === 0
2554
+ ) {
2555
+ // fast path 2: stable scoped slots w/ no normal slots to proxy,
2556
+ // only need to normalize once
2539
2557
  return prevSlots
2540
2558
  } else {
2541
2559
  res = {};
2542
- for (var key in slots) {
2543
- if (slots[key] && key[0] !== '$') {
2544
- res[key] = normalizeScopedSlot(normalSlots, key, slots[key]);
2560
+ for (var key$1 in slots) {
2561
+ if (slots[key$1] && key$1[0] !== '$') {
2562
+ res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);
2545
2563
  }
2546
2564
  }
2547
2565
  }
2548
2566
  // expose normal slots on scopedSlots
2549
- for (var key$1 in normalSlots) {
2550
- if (!(key$1 in res)) {
2551
- res[key$1] = proxyNormalSlot(normalSlots, key$1);
2567
+ for (var key$2 in normalSlots) {
2568
+ if (!(key$2 in res)) {
2569
+ res[key$2] = proxyNormalSlot(normalSlots, key$2);
2552
2570
  }
2553
2571
  }
2554
2572
  // avoriaz seems to mock a non-extensible $scopedSlots object
@@ -2556,13 +2574,14 @@
2556
2574
  if (slots && Object.isExtensible(slots)) {
2557
2575
  (slots)._normalized = res;
2558
2576
  }
2559
- def(res, '$stable', slots ? !!slots.$stable : true);
2577
+ def(res, '$stable', isStable);
2578
+ def(res, '$key', key);
2560
2579
  return res
2561
2580
  }
2562
2581
 
2563
2582
  function normalizeScopedSlot(normalSlots, key, fn) {
2564
- var normalized = function (scope) {
2565
- var res = fn(scope || {});
2583
+ var normalized = function () {
2584
+ var res = arguments.length ? fn.apply(null, arguments) : fn({});
2566
2585
  res = res && typeof res === 'object' && !Array.isArray(res)
2567
2586
  ? [res] // single vnode
2568
2587
  : normalizeChildren(res);
@@ -2851,14 +2870,16 @@
2851
2870
 
2852
2871
  function resolveScopedSlots (
2853
2872
  fns, // see flow/vnode
2873
+ res,
2874
+ // the following are added in 2.6
2854
2875
  hasDynamicKeys,
2855
- res
2876
+ contentHashKey
2856
2877
  ) {
2857
2878
  res = res || { $stable: !hasDynamicKeys };
2858
2879
  for (var i = 0; i < fns.length; i++) {
2859
2880
  var slot = fns[i];
2860
2881
  if (Array.isArray(slot)) {
2861
- resolveScopedSlots(slot, hasDynamicKeys, res);
2882
+ resolveScopedSlots(slot, res, hasDynamicKeys);
2862
2883
  } else if (slot) {
2863
2884
  // marker for reverse proxying v-slot without scope on this.$slots
2864
2885
  if (slot.proxy) {
@@ -2867,6 +2888,9 @@
2867
2888
  res[slot.key] = slot.fn;
2868
2889
  }
2869
2890
  }
2891
+ if (contentHashKey) {
2892
+ (res).$key = contentHashKey;
2893
+ }
2870
2894
  return res
2871
2895
  }
2872
2896
 
@@ -3581,17 +3605,21 @@
3581
3605
  return factory.resolved
3582
3606
  }
3583
3607
 
3608
+ var owner = currentRenderingInstance;
3609
+ if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
3610
+ // already pending
3611
+ factory.owners.push(owner);
3612
+ }
3613
+
3584
3614
  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
3585
3615
  return factory.loadingComp
3586
3616
  }
3587
3617
 
3588
- var owner = currentRenderingInstance;
3589
- if (isDef(factory.owners)) {
3590
- // already pending
3591
- factory.owners.push(owner);
3592
- } else {
3618
+ if (!isDef(factory.owners)) {
3593
3619
  var owners = factory.owners = [owner];
3594
- var sync = true;
3620
+ var sync = true
3621
+
3622
+ ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });
3595
3623
 
3596
3624
  var forceRender = function (renderCompleted) {
3597
3625
  for (var i = 0, l = owners.length; i < l; i++) {
@@ -4044,9 +4072,12 @@
4044
4072
  // check if there are dynamic scopedSlots (hand-written or compiled but with
4045
4073
  // dynamic slot names). Static scoped slots compiled from template has the
4046
4074
  // "$stable" marker.
4075
+ var newScopedSlots = parentVnode.data.scopedSlots;
4076
+ var oldScopedSlots = vm.$scopedSlots;
4047
4077
  var hasDynamicScopedSlot = !!(
4048
- (parentVnode.data.scopedSlots && !parentVnode.data.scopedSlots.$stable) ||
4049
- (vm.$scopedSlots !== emptyObject && !vm.$scopedSlots.$stable)
4078
+ (newScopedSlots && !newScopedSlots.$stable) ||
4079
+ (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||
4080
+ (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)
4050
4081
  );
4051
4082
 
4052
4083
  // Any static slot children from the parent may have changed during parent's
@@ -5368,7 +5399,7 @@
5368
5399
  value: FunctionalRenderContext
5369
5400
  });
5370
5401
 
5371
- Vue.version = '2.6.4';
5402
+ Vue.version = '2.6.8';
5372
5403
 
5373
5404
  /* */
5374
5405
 
@@ -6815,9 +6846,17 @@
6815
6846
  var original = handler;
6816
6847
  handler = original._wrapper = function (e) {
6817
6848
  if (
6849
+ // no bubbling, should always fire.
6850
+ // this is just a safety net in case event.timeStamp is unreliable in
6851
+ // certain weird environments...
6852
+ e.target === e.currentTarget ||
6853
+ // event is fired after handler attachment
6818
6854
  e.timeStamp >= attachedTimestamp ||
6855
+ // #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState
6856
+ e.timeStamp === 0 ||
6819
6857
  // #9448 bail if event is fired in another document in a multi-page
6820
- // electron/nw.js app
6858
+ // electron/nw.js app, since event.timeStamp will be using a different
6859
+ // starting reference
6821
6860
  e.target.ownerDocument !== document
6822
6861
  ) {
6823
6862
  return original.apply(this, arguments)
@@ -6900,15 +6939,7 @@
6900
6939
  }
6901
6940
  }
6902
6941
 
6903
- // skip the update if old and new VDOM state is the same.
6904
- // the only exception is `value` where the DOM value may be temporarily
6905
- // out of sync with VDOM state due to focus, composition and modifiers.
6906
- // This also covers #4521 by skipping the unnecesarry `checked` update.
6907
- if (key !== 'value' && cur === oldProps[key]) {
6908
- continue
6909
- }
6910
-
6911
- if (key === 'value') {
6942
+ if (key === 'value' && elm.tagName !== 'PROGRESS') {
6912
6943
  // store value as _value as well since
6913
6944
  // non-string values will be stringified
6914
6945
  elm._value = cur;
@@ -6928,8 +6959,18 @@
6928
6959
  while (svg.firstChild) {
6929
6960
  elm.appendChild(svg.firstChild);
6930
6961
  }
6931
- } else {
6932
- elm[key] = cur;
6962
+ } else if (
6963
+ // skip the update if old and new VDOM state is the same.
6964
+ // `value` is handled separately because the DOM value may be temporarily
6965
+ // out of sync with VDOM state due to focus, composition and modifiers.
6966
+ // This #4521 by skipping the unnecesarry `checked` update.
6967
+ cur !== oldProps[key]
6968
+ ) {
6969
+ // some property updates can throw
6970
+ // e.g. `value` on <progress> w/ non-finite value
6971
+ try {
6972
+ elm[key] = cur;
6973
+ } catch (e) {}
6933
6974
  }
6934
6975
  }
6935
6976
  }