@vue/runtime-core 3.6.0-beta.14 → 3.6.0-beta.15

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/runtime-core v3.6.0-beta.14
2
+ * @vue/runtime-core v3.6.0-beta.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -2040,11 +2040,16 @@ function defineAsyncComponent(source) {
2040
2040
  onError(err);
2041
2041
  return () => errorComponent ? createVNode(errorComponent, { error: err }) : null;
2042
2042
  });
2043
- const { loaded, error, delayed } = useAsyncComponentState(delay, timeout, onError);
2043
+ const { loaded, error, delayed } = useAsyncComponentState(delay, timeout, onError, instance);
2044
2044
  load().then(() => {
2045
+ if (instance.isUnmounted) return;
2045
2046
  loaded.value = true;
2046
2047
  if (instance.parent && instance.parent.vnode && isKeepAlive(instance.parent.vnode)) instance.parent.update();
2047
2048
  }).catch((err) => {
2049
+ if (instance.isUnmounted) {
2050
+ setPendingRequest(null);
2051
+ return;
2052
+ }
2048
2053
  onError(err);
2049
2054
  error.value = err;
2050
2055
  });
@@ -2102,14 +2107,22 @@ function createAsyncComponentContext(source) {
2102
2107
  setPendingRequest: (request) => pendingRequest = request
2103
2108
  };
2104
2109
  }
2105
- const useAsyncComponentState = (delay, timeout, onError) => {
2110
+ const useAsyncComponentState = (delay, timeout, onError, instance = currentInstance) => {
2106
2111
  const loaded = (0, _vue_reactivity.ref)(false);
2107
2112
  const error = (0, _vue_reactivity.ref)();
2108
2113
  const delayed = (0, _vue_reactivity.ref)(!!delay);
2109
- if (delay) setTimeout(() => {
2114
+ let timeoutTimer;
2115
+ let delayTimer;
2116
+ if (instance) onUnmounted(() => {
2117
+ if (timeoutTimer != null) clearTimeout(timeoutTimer);
2118
+ if (delayTimer != null) clearTimeout(delayTimer);
2119
+ }, instance);
2120
+ if (delay) delayTimer = setTimeout(() => {
2121
+ if (instance && instance.isUnmounted) return;
2110
2122
  delayed.value = false;
2111
2123
  }, delay);
2112
- if (timeout != null) setTimeout(() => {
2124
+ if (timeout != null) timeoutTimer = setTimeout(() => {
2125
+ if (instance && instance.isUnmounted) return;
2113
2126
  if (!loaded.value && !error.value) {
2114
2127
  const err = /* @__PURE__ */ new Error(`Async component timed out after ${timeout}ms.`);
2115
2128
  onError(err);
@@ -3371,12 +3384,13 @@ function useModel(props, name, options = _vue_shared.EMPTY_OBJ) {
3371
3384
  for (const key of rawPropKeys) if (key === name || key === camelizedName || key === hyphenatedName) parentPassedModelValue = true;
3372
3385
  else if (key === `onUpdate:${name}` || key === `onUpdate:${camelizedName}` || key === `onUpdate:${hyphenatedName}`) parentPassedModelUpdater = true;
3373
3386
  }
3374
- if (!parentPassedModelValue || !parentPassedModelUpdater) {
3387
+ const hasVModel = parentPassedModelValue && parentPassedModelUpdater;
3388
+ if (!hasVModel) {
3375
3389
  localValue = value;
3376
3390
  trigger();
3377
3391
  }
3378
3392
  i.emit(`update:${name}`, emittedValue);
3379
- if ((0, _vue_shared.hasChanged)(value, emittedValue) && (0, _vue_shared.hasChanged)(value, prevSetValue) && !(0, _vue_shared.hasChanged)(emittedValue, prevEmittedValue)) trigger();
3393
+ if ((0, _vue_shared.hasChanged)(value, prevSetValue) && ((0, _vue_shared.hasChanged)(value, emittedValue) && !(0, _vue_shared.hasChanged)(emittedValue, prevEmittedValue) || hasVModel && prevSetValue !== _vue_shared.EMPTY_OBJ && !(0, _vue_shared.hasChanged)(emittedValue, localValue))) trigger();
3380
3394
  prevSetValue = value;
3381
3395
  prevEmittedValue = emittedValue;
3382
3396
  }
@@ -6232,7 +6246,7 @@ function isMemoSame(cached, memo) {
6232
6246
  }
6233
6247
  //#endregion
6234
6248
  //#region packages/runtime-core/src/index.ts
6235
- const version = "3.6.0-beta.14";
6249
+ const version = "3.6.0-beta.15";
6236
6250
  const warn = warn$1;
6237
6251
  /**
6238
6252
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-core v3.6.0-beta.14
2
+ * @vue/runtime-core v3.6.0-beta.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1512,11 +1512,16 @@ function defineAsyncComponent(source) {
1512
1512
  onError(err);
1513
1513
  return () => errorComponent ? createVNode(errorComponent, { error: err }) : null;
1514
1514
  });
1515
- const { loaded, error, delayed } = useAsyncComponentState(delay, timeout, onError);
1515
+ const { loaded, error, delayed } = useAsyncComponentState(delay, timeout, onError, instance);
1516
1516
  load().then(() => {
1517
+ if (instance.isUnmounted) return;
1517
1518
  loaded.value = true;
1518
1519
  if (instance.parent && instance.parent.vnode && isKeepAlive(instance.parent.vnode)) instance.parent.update();
1519
1520
  }).catch((err) => {
1521
+ if (instance.isUnmounted) {
1522
+ setPendingRequest(null);
1523
+ return;
1524
+ }
1520
1525
  onError(err);
1521
1526
  error.value = err;
1522
1527
  });
@@ -1572,14 +1577,22 @@ function createAsyncComponentContext(source) {
1572
1577
  setPendingRequest: (request) => pendingRequest = request
1573
1578
  };
1574
1579
  }
1575
- const useAsyncComponentState = (delay, timeout, onError) => {
1580
+ const useAsyncComponentState = (delay, timeout, onError, instance = currentInstance) => {
1576
1581
  const loaded = (0, _vue_reactivity.ref)(false);
1577
1582
  const error = (0, _vue_reactivity.ref)();
1578
1583
  const delayed = (0, _vue_reactivity.ref)(!!delay);
1579
- if (delay) setTimeout(() => {
1584
+ let timeoutTimer;
1585
+ let delayTimer;
1586
+ if (instance) onUnmounted(() => {
1587
+ if (timeoutTimer != null) clearTimeout(timeoutTimer);
1588
+ if (delayTimer != null) clearTimeout(delayTimer);
1589
+ }, instance);
1590
+ if (delay) delayTimer = setTimeout(() => {
1591
+ if (instance && instance.isUnmounted) return;
1580
1592
  delayed.value = false;
1581
1593
  }, delay);
1582
- if (timeout != null) setTimeout(() => {
1594
+ if (timeout != null) timeoutTimer = setTimeout(() => {
1595
+ if (instance && instance.isUnmounted) return;
1583
1596
  if (!loaded.value && !error.value) {
1584
1597
  const err = /* @__PURE__ */ new Error(`Async component timed out after ${timeout}ms.`);
1585
1598
  onError(err);
@@ -2658,12 +2671,13 @@ function useModel(props, name, options = _vue_shared.EMPTY_OBJ) {
2658
2671
  for (const key of rawPropKeys) if (key === name || key === camelizedName || key === hyphenatedName) parentPassedModelValue = true;
2659
2672
  else if (key === `onUpdate:${name}` || key === `onUpdate:${camelizedName}` || key === `onUpdate:${hyphenatedName}`) parentPassedModelUpdater = true;
2660
2673
  }
2661
- if (!parentPassedModelValue || !parentPassedModelUpdater) {
2674
+ const hasVModel = parentPassedModelValue && parentPassedModelUpdater;
2675
+ if (!hasVModel) {
2662
2676
  localValue = value;
2663
2677
  trigger();
2664
2678
  }
2665
2679
  i.emit(`update:${name}`, emittedValue);
2666
- if ((0, _vue_shared.hasChanged)(value, emittedValue) && (0, _vue_shared.hasChanged)(value, prevSetValue) && !(0, _vue_shared.hasChanged)(emittedValue, prevEmittedValue)) trigger();
2680
+ if ((0, _vue_shared.hasChanged)(value, prevSetValue) && ((0, _vue_shared.hasChanged)(value, emittedValue) && !(0, _vue_shared.hasChanged)(emittedValue, prevEmittedValue) || hasVModel && prevSetValue !== _vue_shared.EMPTY_OBJ && !(0, _vue_shared.hasChanged)(emittedValue, localValue))) trigger();
2667
2681
  prevSetValue = value;
2668
2682
  prevEmittedValue = emittedValue;
2669
2683
  }
@@ -4893,7 +4907,7 @@ function isMemoSame(cached, memo) {
4893
4907
  }
4894
4908
  //#endregion
4895
4909
  //#region packages/runtime-core/src/index.ts
4896
- const version = "3.6.0-beta.14";
4910
+ const version = "3.6.0-beta.15";
4897
4911
  const warn = _vue_shared.NOOP;
4898
4912
  /**
4899
4913
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-core v3.6.0-beta.14
2
+ * @vue/runtime-core v3.6.0-beta.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -2077,11 +2077,16 @@ function defineAsyncComponent(source) {
2077
2077
  onError(err);
2078
2078
  return () => errorComponent ? createVNode(errorComponent, { error: err }) : null;
2079
2079
  });
2080
- const { loaded, error, delayed } = useAsyncComponentState(delay, timeout, onError);
2080
+ const { loaded, error, delayed } = useAsyncComponentState(delay, timeout, onError, instance);
2081
2081
  load().then(() => {
2082
+ if (instance.isUnmounted) return;
2082
2083
  loaded.value = true;
2083
2084
  if (instance.parent && instance.parent.vnode && isKeepAlive(instance.parent.vnode)) instance.parent.update();
2084
2085
  }).catch((err) => {
2086
+ if (instance.isUnmounted) {
2087
+ setPendingRequest(null);
2088
+ return;
2089
+ }
2085
2090
  onError(err);
2086
2091
  error.value = err;
2087
2092
  });
@@ -2139,14 +2144,22 @@ function createAsyncComponentContext(source) {
2139
2144
  setPendingRequest: (request) => pendingRequest = request
2140
2145
  };
2141
2146
  }
2142
- const useAsyncComponentState = (delay, timeout, onError) => {
2147
+ const useAsyncComponentState = (delay, timeout, onError, instance = currentInstance) => {
2143
2148
  const loaded = ref$1(false);
2144
2149
  const error = ref$1();
2145
2150
  const delayed = ref$1(!!delay);
2146
- if (delay) setTimeout(() => {
2151
+ let timeoutTimer;
2152
+ let delayTimer;
2153
+ if (instance) onUnmounted(() => {
2154
+ if (timeoutTimer != null) clearTimeout(timeoutTimer);
2155
+ if (delayTimer != null) clearTimeout(delayTimer);
2156
+ }, instance);
2157
+ if (delay) delayTimer = setTimeout(() => {
2158
+ if (instance && instance.isUnmounted) return;
2147
2159
  delayed.value = false;
2148
2160
  }, delay);
2149
- if (timeout != null) setTimeout(() => {
2161
+ if (timeout != null) timeoutTimer = setTimeout(() => {
2162
+ if (instance && instance.isUnmounted) return;
2150
2163
  if (!loaded.value && !error.value) {
2151
2164
  const err = /* @__PURE__ */ new Error(`Async component timed out after ${timeout}ms.`);
2152
2165
  onError(err);
@@ -3415,12 +3428,13 @@ function useModel(props, name, options = EMPTY_OBJ) {
3415
3428
  for (const key of rawPropKeys) if (key === name || key === camelizedName || key === hyphenatedName) parentPassedModelValue = true;
3416
3429
  else if (key === `onUpdate:${name}` || key === `onUpdate:${camelizedName}` || key === `onUpdate:${hyphenatedName}`) parentPassedModelUpdater = true;
3417
3430
  }
3418
- if (!parentPassedModelValue || !parentPassedModelUpdater) {
3431
+ const hasVModel = parentPassedModelValue && parentPassedModelUpdater;
3432
+ if (!hasVModel) {
3419
3433
  localValue = value;
3420
3434
  trigger();
3421
3435
  }
3422
3436
  i.emit(`update:${name}`, emittedValue);
3423
- if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) trigger();
3437
+ if (hasChanged(value, prevSetValue) && (hasChanged(value, emittedValue) && !hasChanged(emittedValue, prevEmittedValue) || hasVModel && prevSetValue !== EMPTY_OBJ && !hasChanged(emittedValue, localValue))) trigger();
3424
3438
  prevSetValue = value;
3425
3439
  prevEmittedValue = emittedValue;
3426
3440
  }
@@ -6340,7 +6354,7 @@ function isMemoSame(cached, memo) {
6340
6354
  }
6341
6355
  //#endregion
6342
6356
  //#region packages/runtime-core/src/index.ts
6343
- const version = "3.6.0-beta.14";
6357
+ const version = "3.6.0-beta.15";
6344
6358
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
6345
6359
  /**
6346
6360
  * Runtime error messages. Only exposed in dev or esm builds.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/runtime-core",
3
- "version": "3.6.0-beta.14",
3
+ "version": "3.6.0-beta.15",
4
4
  "description": "@vue/runtime-core",
5
5
  "main": "index.js",
6
6
  "module": "dist/runtime-core.esm-bundler.js",
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-core#readme",
48
48
  "dependencies": {
49
- "@vue/shared": "3.6.0-beta.14",
50
- "@vue/reactivity": "3.6.0-beta.14"
49
+ "@vue/shared": "3.6.0-beta.15",
50
+ "@vue/reactivity": "3.6.0-beta.15"
51
51
  }
52
52
  }