diff --git a/packages/playground/ssr/package.json b/packages/playground/ssr/package.json index 18ae936d47d3ac8fc1540f402def9a7d41700a1d..a748ebb4daa7a2952cb2dc5a154da5986e40b087 100644 --- a/packages/playground/ssr/package.json +++ b/packages/playground/ssr/package.json @@ -16,8 +16,8 @@ "@dcloudio/uni-h5-vue": "../../uni-h5-vue", "@dcloudio/uni-i18n": "../../uni-i18n", "@dcloudio/uni-shared": "../../uni-shared", - "@vue/shared": "^3.1.2", - "vue": "^3.1.2", + "@vue/shared": "^3.1.3", + "vue": "^3.1.3", "vue-router": "^4.0.10", "vuex": "^4.0.2" }, @@ -26,8 +26,8 @@ "@dcloudio/uni-h5-vite": "../../uni-h5-vite", "@dcloudio/vite-plugin-uni": "../../vite-plugin-uni", "@vitejs/plugin-vue": "^1.2.4", - "@vue/compiler-sfc": "^3.1.2", - "@vue/server-renderer": "^3.1.2", + "@vue/compiler-sfc": "^3.1.3", + "@vue/server-renderer": "^3.1.3", "compression": "^1.7.4", "cypress": "^7.3.0", "serve-static": "^1.14.1", diff --git a/packages/playground/ssr/yarn.lock b/packages/playground/ssr/yarn.lock index a787039a33d3c9f276e2f0dcc15009ba8d067447..7483e5be6cfd9f9cb7918cbd96824c1facaeeaa6 100644 --- a/packages/playground/ssr/yarn.lock +++ b/packages/playground/ssr/yarn.lock @@ -168,9 +168,9 @@ integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== "@types/node@*": - version "15.12.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.5.tgz#9a78318a45d75c9523d2396131bd3cca54b2d185" - integrity sha512-se3yX7UHv5Bscf8f1ERKvQOD6sTyycH3hdaoozvaLxgUiY5lIGEeH37AD0G0Qi9kPqihPn0HOfd2yaIEN9VwEg== + version "15.14.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.0.tgz#74dbf254fb375551a9d2a71faf6b9dbc2178dc53" + integrity sha512-um/+/ip3QZmwLfIkWZSNtQIJNVAqrJ92OkLMeuZrjZMTAJniI7fh8N8OICyDhAJ2mzgk/fmYFo72jRr5HyZ1EQ== "@types/node@^14.14.31": version "14.17.4" @@ -199,37 +199,37 @@ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.2.4.tgz#a7aa6e6a31c556a8b781de730316deeecf7f56f2" integrity sha512-D/3H9plevPQGgQGwmV6eecvOnooLTecPR63HPffVVWPEhbfvmtYLWgznzs456NBb2DItiRTCIa1yWxvGqC+I8A== -"@vue/compiler-core@3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.1.2.tgz#31ab1d88e1706a5c7a545faeeb64c31bd0101db0" - integrity sha512-nHmq7vLjq/XM2IMbZUcKWoH5sPXa2uR/nIKZtjbK5F3TcbnYE/zKsrSUR9WZJ03unlwotNBX1OyxVt9HbWD7/Q== +"@vue/compiler-core@3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.1.3.tgz#cd9587aa1fda533b1bdf752689e281efccfb7062" + integrity sha512-I58MDtVa8AYEIa3waLO6/89JdmgpkDAEcL3Vrmlsbnt07KZ5sIGLqaXjzGrOT57j9s8ty0WTYlLQq2rWUVYGCg== dependencies: "@babel/parser" "^7.12.0" "@babel/types" "^7.12.0" - "@vue/shared" "3.1.2" + "@vue/shared" "3.1.3" estree-walker "^2.0.1" source-map "^0.6.1" -"@vue/compiler-dom@3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.1.2.tgz#75a7731bcc5d9718183a3c56c18e992f7c13e7b1" - integrity sha512-k2+SWcWH0jL6WQAX7Or2ONqu5MbtTgTO0dJrvebQYzgqaKMXNI90RNeWeCxS4BnNFMDONpHBeFgbwbnDWIkmRg== +"@vue/compiler-dom@3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.1.3.tgz#ade4ff7db4b0a197c543dd67b5bd467d737ac344" + integrity sha512-BunLXKP+UvY1XJ0L6M7KD/De0XP+kOlIxFg3OfXtVQZcLLgnLcTgSK3t/ylvIpYJOadGaHhb+BfCK/hdqOVAyw== dependencies: - "@vue/compiler-core" "3.1.2" - "@vue/shared" "3.1.2" + "@vue/compiler-core" "3.1.3" + "@vue/shared" "3.1.3" -"@vue/compiler-sfc@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.1.2.tgz#23ff1e366d887b964899568bffcb11e3d0511fc4" - integrity sha512-SeG/2+DvwejQ7oAiSx8BrDh5qOdqCYHGClPiTvVIHTfSIHiS2JjMbCANdDCjHkTOh/O7WZzo2JhdKm98bRBxTw== +"@vue/compiler-sfc@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.1.3.tgz#f8aba30e5254a2b7be9516159630c8f75b412216" + integrity sha512-WpQ0oHMT5Aeb92UBnYCOxfHwdOGFZJ+BUyFiu2rG6TTDuw+aPNHCsFxvi55eG+2P7uiqRFK03lc0mGh3v8OVmw== dependencies: "@babel/parser" "^7.13.9" "@babel/types" "^7.13.0" "@types/estree" "^0.0.48" - "@vue/compiler-core" "3.1.2" - "@vue/compiler-dom" "3.1.2" - "@vue/compiler-ssr" "3.1.2" - "@vue/shared" "3.1.2" + "@vue/compiler-core" "3.1.3" + "@vue/compiler-dom" "3.1.3" + "@vue/compiler-ssr" "3.1.3" + "@vue/shared" "3.1.3" consolidate "^0.16.0" estree-walker "^2.0.1" hash-sum "^2.0.0" @@ -241,55 +241,55 @@ postcss-selector-parser "^6.0.4" source-map "^0.6.1" -"@vue/compiler-ssr@3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.1.2.tgz#e33ad0876d9b96f0950e22b0e174b94c1b049d2d" - integrity sha512-BwXo9LFk5OSWdMyZQ4bX1ELHX0Z/9F+ld/OaVnpUPzAZCHslBYLvyKUVDwv2C/lpLjRffpC2DOUEdl1+RP1aGg== +"@vue/compiler-ssr@3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.1.3.tgz#e74394b031f6956710f1881e21fa9fe1fa5a030e" + integrity sha512-dAktYBae3h9QWJoSKsrfrcZEjh4hwphDMWwj+ZwIkHBhEpyjdFLJks8MpxRjGMZzqz5vNyteVXkbOAaoiWPwwA== dependencies: - "@vue/compiler-dom" "3.1.2" - "@vue/shared" "3.1.2" + "@vue/compiler-dom" "3.1.3" + "@vue/shared" "3.1.3" "@vue/devtools-api@^6.0.0-beta.11", "@vue/devtools-api@^6.0.0-beta.14": version "6.0.0-beta.15" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.0-beta.15.tgz#ad7cb384e062f165bcf9c83732125bffbc2ad83d" integrity sha512-quBx4Jjpexo6KDiNUGFr/zF/2A4srKM9S9v2uHgMXSU//hjgq1eGzqkIFql8T9gfX5ZaVOUzYBP3jIdIR3PKIA== -"@vue/reactivity@3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.1.2.tgz#66fa530dd726d2fef285ae55d02106a727db463b" - integrity sha512-glJzJoN2xE7I2lRvwKM5u1BHRPTd1yc8iaf//Lai/78/uYAvE5DXp5HzWRFOwMlbRvMGJHIQjOqoxj87cDAaag== +"@vue/reactivity@3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.1.3.tgz#0aa4dfbac33f1fa296b9436042e5cbd3d84eeb46" + integrity sha512-495ymt2nUp9yPQxp+iH+Ya+o2xFpprJY8tLbAdJO0TOkBfN3dErheNhvrq6i1a33/v6qGTFhnUkemU7Xar0NSQ== dependencies: - "@vue/shared" "3.1.2" + "@vue/shared" "3.1.3" -"@vue/runtime-core@3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.1.2.tgz#f4dbc503cfc9a02ab5f1ebe002c3322512064a54" - integrity sha512-gsPZG4dRIkixuuKmoj4P9IHgfT0yaFLcqWOM5F/bCk0nxQn1XtxH8oUehWuET726KhbukvDoJfe9G2CKviy80w== +"@vue/runtime-core@3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.1.3.tgz#8524f6e965aba3a94ae30ded715f13ec6be59c46" + integrity sha512-Bt6Dx7f91R0qDpHJ8VAlEYgKTXngka+el7Xw9xcNsFC9hv4K5QAJiL4UsxP4TjYPo6sZvj5gi06vvdQ3ODf7FQ== dependencies: - "@vue/reactivity" "3.1.2" - "@vue/shared" "3.1.2" + "@vue/reactivity" "3.1.3" + "@vue/shared" "3.1.3" -"@vue/runtime-dom@3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.1.2.tgz#0fd8724f14bc7ba64b6c954d874a8d8a4fcb5fe9" - integrity sha512-QvINxjLucEZFzp5f0NVu7JqWYCv5TKQfkH2FDs/N6QNE4iKcYtKrWdT0HKfABnVXG28Znqv6rIH0dH4ZAOwxpA== +"@vue/runtime-dom@3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.1.3.tgz#cb1c218564892db0705ce9576b39e50f820b27b8" + integrity sha512-BN04WyV2vmoeOLPm+N7xqUTa+3U51cR8GCLe0hQbK0xbA8a81vAEXTMnLNGdUYQT5sU8kBzwtowhmZb9vTvnRg== dependencies: - "@vue/runtime-core" "3.1.2" - "@vue/shared" "3.1.2" + "@vue/runtime-core" "3.1.3" + "@vue/shared" "3.1.3" csstype "^2.6.8" -"@vue/server-renderer@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.1.2.tgz#fd5c4ac433cbcea4f44b9ef971ff612786e1d04f" - integrity sha512-XDw8KTrz/siiU5p6Zlicvf2KIjSZrqaxATBPM/9FYNnyv4LTS14JC5daTL13rk50d3UPBurRR/3wJupVvtQJ4w== +"@vue/server-renderer@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.1.3.tgz#ec56936d1e9f7392bc541afeab18d2a263b88d54" + integrity sha512-ygPCxPP6lEniXLV9EXUsPS5B2VaaL5f1CWwbdynoug/d5odAwCS7M85RjQP9S+LNVBcX7sogoXSzI8/NxjWCgQ== dependencies: - "@vue/compiler-ssr" "3.1.2" - "@vue/shared" "3.1.2" + "@vue/compiler-ssr" "3.1.3" + "@vue/shared" "3.1.3" -"@vue/shared@3.1.2", "@vue/shared@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.2.tgz#1069c0bc7d6f4bd15ccf3a5f3be29450aca368f9" - integrity sha512-EmH/poaDWBPJaPILXNI/1fvUbArJQmmTyVCwvvyDYDFnkPoTclAbHRAtyIvqfez7jybTDn077HTNILpxlsoWhg== +"@vue/shared@3.1.3", "@vue/shared@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.3.tgz#3f6f5e7226d8d2d965ef39780ae3f89dc906b5fc" + integrity sha512-uGBX4bZVFvgranxzpH3q1gGmICUjEUnNrMIBFeZRw8hBfCPhT+VnuY8+mG2l/yEyY73J9e6d36CtbFUqDXa12w== accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" @@ -807,9 +807,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.723: - version "1.3.763" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.763.tgz#93f6f02506d099941f557b9db9ba50b30215bf15" - integrity sha512-UyvEPae0wvzsyNJhVfGeFSOlUkHEze8xSIiExO5tZQ8QTr7obFiJWGk3U4e7afFOJMQJDszqU/3Pk5jtKiaSEg== + version "1.3.765" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.765.tgz#36fa0ef7a81048bb487bfe3d297100967e2b8db2" + integrity sha512-4NhcsfZYlr1x4FehYkK+R9CNNTOZ8vLcIu8Y1uWehxYp5r/jlCGAfBqChIubEfdtX+rBQpXx4yJuX/dzILH/nw== emoji-regex@^8.0.0: version "8.0.0" @@ -841,9 +841,9 @@ enquirer@^2.3.6: ansi-colors "^4.1.1" esbuild@^0.12.8: - version "0.12.13" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.13.tgz#666e1e6c50dbde40c02824cc60296574ebd588c5" - integrity sha512-fnKinmXcW1DMYnf1Ol3ZO0yU7dBDCuPcE4XDwceIy2zqTvB4G0NfonqgdvPMJi/IXRoVi/w9r9O5xxg/SqiAxA== + version "0.12.14" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.14.tgz#43157dbd0b36d939247d4eb4909a4886ac40f82e" + integrity sha512-z8p+6FGiplR7a3pPonXREbm+8IeXjBGvDpVidZmGB/AJMsJSfGCU+n7KOMCazA9AwvagadRWBhiKorC0w9WJvw== escalade@^3.1.1: version "3.1.1" @@ -1920,9 +1920,9 @@ rollup-plugin-copy@^3.4.0: is-plain-object "^3.0.0" rollup@^2.38.5: - version "2.52.6" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.52.6.tgz#7c7546d170dead0e7db0b6c709f7f34398498a8e" - integrity sha512-H+Xudmwf8KO+xji8njQNoIQRp8l+iQge/NdUR20JngTxVYdEEnlpkMvQ71YGLl3+xZcPecmdj4q2lrClKaPdRA== + version "2.52.7" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.52.7.tgz#e15a8bf734f6e4c204b7cdf33521151310250cb2" + integrity sha512-55cSH4CCU6MaPr9TAOyrIC+7qFCHscL7tkNsm1MBfIJRRqRbCEY0mmeFn4Wg8FKsHtEH8r389Fz38r/o+kgXLg== optionalDependencies: fsevents "~2.3.2" @@ -2251,9 +2251,9 @@ verror@1.10.0: extsprintf "^1.2.0" vite@^2.4.0-beta.2: - version "2.4.0-beta.2" - resolved "https://registry.yarnpkg.com/vite/-/vite-2.4.0-beta.2.tgz#ac1e0fcf5bb3a16f0a9ca9ee9ac18e209eee1880" - integrity sha512-PpK8Zl8sBaO6FbDc/Lb+lfADwBpiBurZyT4g16etqTLmhK2YYIf/jTGyq7qNlU0TqfFcGhmtvlhfnAPr9GqDsQ== + version "2.4.0-beta.3" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.4.0-beta.3.tgz#81da5e6cbfb4cb710610e5757567cbe58b667c44" + integrity sha512-sSUbH0mPMbqqOVZ1/LD/Wiu347yvn4BXjS/94mn5Q7E/zd50hxEnKU1NC4x59TBKq5OeboPhyXwibyCEpyAQKQ== dependencies: esbuild "^0.12.8" postcss "^8.3.5" @@ -2269,14 +2269,14 @@ vue-router@^4.0.10: dependencies: "@vue/devtools-api" "^6.0.0-beta.14" -vue@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.1.2.tgz#647f8e3949a3d600771dca25d50225dc3e594c64" - integrity sha512-q/rbKpb7aofax4ugqu2k/uj7BYuNPcd6Z5/qJtfkJQsE0NkwVoCyeSh7IZGH61hChwYn3CEkh4bHolvUPxlQ+w== +vue@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.1.3.tgz#8659cdcd18bae0fc0aa79ddde6594c1e0b2facae" + integrity sha512-CC7HIDNh9AoGUu9XkFc7Mvz03VVwp+JZ1toXsNbxXvuznSOoWP2k4htXaAu3nClYhNPRVkWBh+jWoFEmZq3lsA== dependencies: - "@vue/compiler-dom" "3.1.2" - "@vue/runtime-dom" "3.1.2" - "@vue/shared" "3.1.2" + "@vue/compiler-dom" "3.1.3" + "@vue/runtime-dom" "3.1.3" + "@vue/shared" "3.1.3" vuex@^4.0.2: version "4.0.2" diff --git a/packages/uni-app-plus/package.json b/packages/uni-app-plus/package.json index 9cb448350d8ff305df18dcd562d4ccb4a5ad3fb1..1c6bad25e435190ed2224aa804c9bc9cada46548 100644 --- a/packages/uni-app-plus/package.json +++ b/packages/uni-app-plus/package.json @@ -19,7 +19,7 @@ "dependencies": { "@webcomponents/custom-elements": "^1.4.3", "vue3-webcomponent-wrapper": "^0.1.4", - "vue": "^3.1.2" + "vue": "^3.1.3" }, "gitHead": "56deaeb47d42e924d10282d7af418ccee6b139bf" } \ No newline at end of file diff --git a/packages/uni-app-vue/dist/service.runtime.esm.js b/packages/uni-app-vue/dist/service.runtime.esm.js index 6c882cdf00108dd8dc1ec1aaa9b6fa57065f2c57..bbab6c2e34c92684cf69d6079014b3789c1fe5b1 100644 --- a/packages/uni-app-vue/dist/service.runtime.esm.js +++ b/packages/uni-app-vue/dist/service.runtime.esm.js @@ -1,12384 +1,9746 @@ -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - -function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } - -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } - -function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } - -function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -export default function vueFactory(exports) { - /** - * Make a map and return a function for checking if a key - * is in that map. - * IMPORTANT: all calls of this function must be prefixed with - * \/\*#\_\_PURE\_\_\*\/ - * So that rollup can tree-shake them if necessary. - */ - process.env.NODE_ENV !== 'production' ? Object.freeze({}) : {}; - process.env.NODE_ENV !== 'production' ? Object.freeze([]) : []; - var extend$1 = Object.assign; - - var cacheStringFunction$1 = function cacheStringFunction$1(fn) { - var cache = Object.create(null); - return function (str) { - var hit = cache[str]; - return hit || (cache[str] = fn(str)); - }; - }; - - var camelizeRE$1 = /-(\w)/g; - /** - * @private - */ - - var camelize$1 = cacheStringFunction$1(function (str) { - return str.replace(camelizeRE$1, function (_, c) { - return c ? c.toUpperCase() : ''; - }); - }); - /** - * @private - */ - - var capitalize$1 = cacheStringFunction$1(function (str) { - return str.charAt(0).toUpperCase() + str.slice(1); - }); - - var DOMException = /*#__PURE__*/function (_Error) { - _inherits(DOMException, _Error); - - var _super = _createSuper(DOMException); - - function DOMException(message) { - var _this; - - _classCallCheck(this, DOMException); - - _this = _super.call(this, message); - _this.name = 'DOMException'; - return _this; - } - - return DOMException; - }( /*#__PURE__*/_wrapNativeSuper(Error)); - - function normalizeEventType(type) { - return "on".concat(capitalize$1(camelize$1(type))); - } - - var UniEventTarget = /*#__PURE__*/function () { - function UniEventTarget() { - _classCallCheck(this, UniEventTarget); - - this._listeners = {}; - } - - _createClass(UniEventTarget, [{ - key: "dispatchEvent", - value: function dispatchEvent(evt) { - var listeners = this._listeners[evt.type]; - - if (!listeners) { - return false; - } - - var len = listeners.length; - - for (var i = 0; i < len; i++) { - listeners[i].call(this, evt); - - if (evt._end) { - break; - } - } - - return evt.cancelable && evt.defaultPrevented; - } - }, { - key: "addEventListener", - value: function addEventListener(type, listener, options) { - var isOnce = options && options.once; - - if (isOnce) { - var wrapper = function wrapper(evt) { - listener.apply(this, [evt]); - this.removeEventListener(type, wrapper, options); - }; - - return this.addEventListener(type, wrapper, extend$1(options, { - once: false - })); - } - - (this._listeners[type] || (this._listeners[type] = [])).push(listener); - } - }, { - key: "removeEventListener", - value: function removeEventListener(type, callback, options) { - var listeners = this._listeners[type.toLowerCase()]; - - if (!listeners) { - return; - } - - var index = listeners.indexOf(callback); - - if (index > -1) { - listeners.splice(index, 1); - } - } - }]); - - return UniEventTarget; - }(); - - var UniCSSStyleDeclaration = /*#__PURE__*/function () { - function UniCSSStyleDeclaration() { - _classCallCheck(this, UniCSSStyleDeclaration); - - this._cssText = null; - this._value = null; - } - - _createClass(UniCSSStyleDeclaration, [{ - key: "setProperty", - value: function setProperty(property, value) { - if (value === null || value === '') { - this.removeProperty(property); - } else { - if (!this._value) { - this._value = {}; - } - - this._value[property] = value; - } - } - }, { - key: "getPropertyValue", - value: function getPropertyValue(property) { - if (!this._value) { - return ''; - } - - return this._value[property] || ''; - } - }, { - key: "removeProperty", - value: function removeProperty(property) { - if (!this._value) { - return ''; - } - - var value = this._value[property]; - delete this._value[property]; - return value; - } - }, { - key: "cssText", - get: function get() { - return this._cssText || ''; - }, - set: function set(cssText) { - this._cssText = cssText; - } - }, { - key: "toJSON", - value: function toJSON() { - var _cssText = this._cssText, - _value = this._value; - var hasCssText = _cssText !== null; - var hasValue = _value !== null; - - if (hasCssText && hasValue) { - return [_cssText, _value]; - } - - if (hasCssText) { - return _cssText; - } - - if (hasValue) { - return _value; - } - } - }]); - - return UniCSSStyleDeclaration; - }(); - - var STYLE_PROPS = ['_value', '_cssText', 'cssText', 'getPropertyValue', 'setProperty', 'removeProperty', 'toJSON']; - - function proxyStyle(uniCssStyle) { - return new Proxy(uniCssStyle, { - get(target, key, receiver) { - if (STYLE_PROPS.indexOf(key) === -1) { - return target.getPropertyValue(key); - } - - return Reflect.get(target, key, receiver); - }, - - set(target, key, value, receiver) { - if (STYLE_PROPS.indexOf(key) === -1) { - target.setProperty(key, value); - return true; - } - - return Reflect.set(target, key, value, receiver); - } - - }); - } - - var ATTR_MAP = { - class: '.c', - style: '.s', - onClick: '.e0', - onChange: '.e1', - onInput: '.e2', - onLoad: '.e3', - onError: '.e4', - onTouchstart: '.e5', - onTouchmove: '.e6', - onTouchcancel: '.e7', - onTouchend: '.e8', - onLongpress: '.e9', - onTransitionend: '.ea', - onAnimationstart: '.eb', - onAnimationiteration: '.ec', - onAnimationend: '.ed', - onTouchforcechange: '.ee' - }; - - function encodeAttr(name) { - return ATTR_MAP[name] || name; - } - - var COMPONENT_MAP = { - VIEW: 1, - IMAGE: 2, - TEXT: 3, - '#text': 4, - '#comment': 5, - NAVIGATOR: 6, - FORM: 7, - BUTTON: 8, - INPUT: 9, - LABEL: 10, - RADIO: 11, - CHECKBOX: 12, - 'CHECKBOX-GROUP': 13, - AD: 14, - AUDIO: 15, - CAMERA: 16, - CANVAS: 17, - 'COVER-IMAGE': 18, - 'COVER-VIEW': 19, - EDITOR: 20, - 'FUNCTIONAL-PAGE-NAVIGATOR': 21, - ICON: 22, - 'RADIO-GROUP': 23, - 'LIVE-PLAYER': 24, - 'LIVE-PUSHER': 25, - MAP: 26, - 'MOVABLE-AREA': 27, - 'MOVABLE-VIEW': 28, - 'OFFICIAL-ACCOUNT': 29, - 'OPEN-DATA': 30, - PICKER: 31, - 'PICKER-VIEW': 32, - 'PICKER-VIEW-COLUMN': 33, - PROGRESS: 34, - 'RICH-TEXT': 35, - 'SCROLL-VIEW': 36, - SLIDER: 37, - SWIPER: 38, - 'SWIPER-ITEM': 39, - SWITCH: 40, - TEXTAREA: 41, - VIDEO: 42, - 'WEB-VIEW': 43 - }; - - function encodeTag(tag) { - return COMPONENT_MAP[tag] || tag; - } - - var NODE_TYPE_ELEMENT = 1; - var NODE_TYPE_TEXT = 3; - var NODE_TYPE_COMMENT = 8; - - function sibling(node, type) { - var parentNode = node.parentNode; - - if (!parentNode) { - return null; - } - - var childNodes = parentNode.childNodes; - return childNodes[childNodes.indexOf(node) + (type === 'n' ? 1 : -1)] || null; - } - - function removeNode(node) { - var parentNode = node.parentNode; - - if (parentNode) { - parentNode.removeChild(node); - } - } - - function checkNodeId(node) { - if (!node.nodeId && node.pageNode) { - node.nodeId = node.pageNode.genId(); - } - } // 为优化性能,各平台不使用proxy来实现node的操作拦截,而是直接通过pageNode定制 - - - var UniNode = /*#__PURE__*/function (_UniEventTarget) { - _inherits(UniNode, _UniEventTarget); - - var _super2 = _createSuper(UniNode); - - function UniNode(nodeType, nodeName, container) { - var _this2; - - _classCallCheck(this, UniNode); - - _this2 = _super2.call(this); - _this2.pageNode = null; - _this2.parentNode = null; - _this2._text = null; - - if (container) { - var pageNode = container.pageNode; - - if (pageNode) { - _this2.pageNode = pageNode; - _this2.nodeId = pageNode.genId(); - pageNode.onCreate(_assertThisInitialized(_this2), encodeTag(nodeName)); - } - } - - _this2.nodeType = nodeType; - _this2.nodeName = nodeName; - _this2.childNodes = []; - return _this2; - } - - _createClass(UniNode, [{ - key: "firstChild", - get: function get() { - return this.childNodes[0] || null; - } - }, { - key: "lastChild", - get: function get() { - var childNodes = this.childNodes; - var length = childNodes.length; - return length ? childNodes[length - 1] : null; - } - }, { - key: "nextSibling", - get: function get() { - return sibling(this, 'n'); - } - }, { - key: "nodeValue", - get: function get() { - return null; - }, - set: function set(_val) {} - }, { - key: "textContent", - get: function get() { - return this._text || ''; - }, - set: function set(text) { - this._text = text; - - if (this.pageNode) { - this.pageNode.onTextContent(this, text); - } - } - }, { - key: "parentElement", - get: function get() { - var parentNode = this.parentNode; - - if (parentNode && parentNode.nodeType === NODE_TYPE_ELEMENT) { - return parentNode; - } - - return null; - } - }, { - key: "previousSibling", - get: function get() { - return sibling(this, 'p'); - } - }, { - key: "appendChild", - value: function appendChild(newChild) { - return this.insertBefore(newChild, null); - } - }, { - key: "cloneNode", - value: function cloneNode(deep) { - var cloned = extend$1(Object.create(Object.getPrototypeOf(this)), this); - var attributes = cloned.attributes; - - if (attributes) { - cloned.attributes = extend$1({}, attributes); - } - - if (deep) { - cloned.childNodes = cloned.childNodes.map(function (childNode) { - return childNode.cloneNode(true); - }); - } - - return cloned; - } - }, { - key: "insertBefore", - value: function insertBefore(newChild, refChild) { - removeNode(newChild); - newChild.pageNode = this.pageNode; - newChild.parentNode = this; - checkNodeId(newChild); - var childNodes = this.childNodes; - var index; - - if (refChild) { - index = childNodes.indexOf(refChild); - - if (index === -1) { - throw new DOMException("Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node."); - } - - childNodes.splice(index, 0, newChild); - } else { - index = childNodes.length; - childNodes.push(newChild); - } - - return this.pageNode ? this.pageNode.onInsertBefore(this, newChild, index) : newChild; - } - }, { - key: "removeChild", - value: function removeChild(oldChild) { - var childNodes = this.childNodes; - var index = childNodes.indexOf(oldChild); - - if (index === -1) { - throw new DOMException("Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node."); - } - - oldChild.parentNode = null; - childNodes.splice(index, 1); - return this.pageNode ? this.pageNode.onRemoveChild(this, oldChild) : oldChild; - } - }]); - - return UniNode; - }(UniEventTarget); - - var UniBaseNode = /*#__PURE__*/function (_UniNode) { - _inherits(UniBaseNode, _UniNode); - - var _super3 = _createSuper(UniBaseNode); - - function UniBaseNode(nodeType, nodeName, container) { - var _this3; - - _classCallCheck(this, UniBaseNode); - - _this3 = _super3.call(this, nodeType, nodeName, container); - _this3.attributes = Object.create(null); - _this3._html = null; - _this3.style = proxyStyle(new UniCSSStyleDeclaration()); - return _this3; - } - - _createClass(UniBaseNode, [{ - key: "className", - get: function get() { - return this.attributes['class'] || ''; - }, - set: function set(val) { - this.setAttribute('class', val); - } - }, { - key: "innerHTML", - get: function get() { - return ''; - }, - set: function set(html) { - this._html = html; - } - }, { - key: "addEventListener", - value: function addEventListener(type, listener, options) { - _get(_getPrototypeOf(UniBaseNode.prototype), "addEventListener", this).call(this, type, listener, options); - - var normalized = normalizeEventType(type); - - if (!this.attributes[normalized]) { - this.setAttribute(normalized, 1); - } - } - }, { - key: "removeEventListener", - value: function removeEventListener(type, callback, options) { - _get(_getPrototypeOf(UniBaseNode.prototype), "removeEventListener", this).call(this, type, callback, options); - - var normalized = normalizeEventType(type); - - if (this.attributes[encodeAttr(normalized)]) { - this.removeAttribute(normalized); - } - } - }, { - key: "getAttribute", - value: function getAttribute(qualifiedName) { - return this.attributes[encodeAttr(qualifiedName)]; - } - }, { - key: "removeAttribute", - value: function removeAttribute(qualifiedName) { - qualifiedName = encodeAttr(qualifiedName); - delete this.attributes[qualifiedName]; - - if (this.pageNode) { - this.pageNode.onRemoveAttribute(this, qualifiedName); - } - } - }, { - key: "setAttribute", - value: function setAttribute(qualifiedName, value) { - qualifiedName = encodeAttr(qualifiedName); - this.attributes[qualifiedName] = value; - - if (this.pageNode) { - this.pageNode.onSetAttribute(this, qualifiedName, value); - } - } - }, { - key: "toJSON", - value: function toJSON() { - var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var res = { - a: this.attributes, - s: this.style.toJSON() - }; - - if (!opts.attr) { - res.i = this.nodeId; - res.n = encodeTag(this.nodeName); - } - - if (this._text !== null) { - res.t = this._text; - } - - return res; - } - }]); - - return UniBaseNode; - }(UniNode); - - var UniCommentNode = /*#__PURE__*/function (_UniNode2) { - _inherits(UniCommentNode, _UniNode2); - - var _super4 = _createSuper(UniCommentNode); - - function UniCommentNode(text, container) { - var _this4; - - _classCallCheck(this, UniCommentNode); - - _this4 = _super4.call(this, NODE_TYPE_COMMENT, '#comment', container); - _this4._text = text; - return _this4; - } - - _createClass(UniCommentNode, [{ - key: "toJSON", - value: function toJSON() { - var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - return opts.attr ? { - t: this._text - } : { - i: this.nodeId, - t: this._text - }; - } - }]); - - return UniCommentNode; - }(UniNode); - - var UniElement = /*#__PURE__*/function (_UniBaseNode) { - _inherits(UniElement, _UniBaseNode); - - var _super5 = _createSuper(UniElement); - - function UniElement(nodeName, container) { - var _this5; - - _classCallCheck(this, UniElement); - - _this5 = _super5.call(this, NODE_TYPE_ELEMENT, nodeName.toUpperCase(), container); - _this5.tagName = _this5.nodeName; - return _this5; - } - - return UniElement; - }(UniBaseNode); - - var UniTextNode = /*#__PURE__*/function (_UniBaseNode2) { - _inherits(UniTextNode, _UniBaseNode2); - - var _super6 = _createSuper(UniTextNode); - - function UniTextNode(text, container) { - var _this6; - - _classCallCheck(this, UniTextNode); - - _this6 = _super6.call(this, NODE_TYPE_TEXT, '#text', container); - _this6._text = text; - return _this6; - } - - _createClass(UniTextNode, [{ - key: "nodeValue", - get: function get() { - return this._text || ''; - }, - set: function set(text) { - this._text = text; - - if (this.pageNode) { - this.pageNode.onNodeValue(this, text); - } - } - }]); - - return UniTextNode; - }(UniBaseNode); - /** - * Make a map and return a function for checking if a key - * is in that map. - * IMPORTANT: all calls of this function must be prefixed with - * \/\*#\_\_PURE\_\_\*\/ - * So that rollup can tree-shake them if necessary. - */ - - - function makeMap(str, expectsLowerCase) { - var map = Object.create(null); - var list = str.split(','); - - for (var i = 0; i < list.length; i++) { - map[list[i]] = true; - } - - return expectsLowerCase ? function (val) { - return !!map[val.toLowerCase()]; - } : function (val) { - return !!map[val]; - }; - } - - var GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' + 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' + 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt'; - var isGloballyWhitelisted = /*#__PURE__*/makeMap(GLOBALS_WHITE_LISTED); - - function normalizeStyle(value) { - if (isArray(value)) { - var res = {}; - - for (var i = 0; i < value.length; i++) { - var item = value[i]; - var normalized = normalizeStyle(isString(item) ? parseStringStyle(item) : item); - - if (normalized) { - for (var key in normalized) { - res[key] = normalized[key]; - } - } - } - - return res; - } else if (isObject(value)) { - return value; - } - } - - var listDelimiterRE = /;(?![^(]*\))/g; - var propertyDelimiterRE = /:(.+)/; - - function parseStringStyle(cssText) { - var ret = {}; - cssText.split(listDelimiterRE).forEach(function (item) { - if (item) { - var tmp = item.split(propertyDelimiterRE); - tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); - } - }); - return ret; - } - - function normalizeClass(value) { - var res = ''; - - if (isString(value)) { - res = value; - } else if (isArray(value)) { - for (var i = 0; i < value.length; i++) { - var normalized = normalizeClass(value[i]); - - if (normalized) { - res += normalized + ' '; - } - } - } else if (isObject(value)) { - for (var name in value) { - if (value[name]) { - res += name + ' '; - } - } - } - - return res.trim(); - } // These tag configs are shared between compiler-dom and runtime-dom, so they - // https://developer.mozilla.org/en-US/docs/Web/HTML/Element - - - var HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' + 'header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,' + 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' + 'data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,' + 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' + 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' + 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' + 'option,output,progress,select,textarea,details,dialog,menu,' + 'summary,template,blockquote,iframe,tfoot'; // https://developer.mozilla.org/en-US/docs/Web/SVG/Element - - var SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' + 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' + 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' + 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' + 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' + 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' + 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' + 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' + 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' + 'text,textPath,title,tspan,unknown,use,view'; - var isHTMLTag = /*#__PURE__*/makeMap(HTML_TAGS); - var isSVGTag = /*#__PURE__*/makeMap(SVG_TAGS); - /** - * For converting {{ interpolation }} values to displayed strings. - * @private - */ - - var toDisplayString = function toDisplayString(val) { - return val == null ? '' : isObject(val) ? JSON.stringify(val, replacer, 2) : String(val); - }; - - var replacer = function replacer(_key, val) { - if (isMap(val)) { - return { - ["Map(".concat(val.size, ")")]: _toConsumableArray(val.entries()).reduce(function (entries, _ref) { - var _ref2 = _slicedToArray(_ref, 2), - key = _ref2[0], - val = _ref2[1]; - - entries["".concat(key, " =>")] = val; - return entries; - }, {}) - }; - } else if (isSet(val)) { - return { - ["Set(".concat(val.size, ")")]: _toConsumableArray(val.values()) - }; - } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { - return String(val); - } - - return val; - }; - - var EMPTY_OBJ = process.env.NODE_ENV !== 'production' ? Object.freeze({}) : {}; - var EMPTY_ARR = process.env.NODE_ENV !== 'production' ? Object.freeze([]) : []; - - var NOOP = function NOOP() {}; - /** - * Always return false. - */ - - - var NO = function NO() { - return false; - }; - - var onRE = /^on[^a-z]/; - - var isOn = function isOn(key) { - return onRE.test(key); - }; - - var isModelListener = function isModelListener(key) { - return key.startsWith('onUpdate:'); - }; - - var extend = Object.assign; - - var remove = function remove(arr, el) { - var i = arr.indexOf(el); - - if (i > -1) { - arr.splice(i, 1); - } - }; - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - var hasOwn = function hasOwn(val, key) { - return hasOwnProperty.call(val, key); - }; - - var isArray = Array.isArray; - - var isMap = function isMap(val) { - return toTypeString(val) === '[object Map]'; - }; - - var isSet = function isSet(val) { - return toTypeString(val) === '[object Set]'; - }; - - var isFunction = function isFunction(val) { - return typeof val === 'function'; - }; - - var isString = function isString(val) { - return typeof val === 'string'; - }; - - var isSymbol = function isSymbol(val) { - return typeof val === 'symbol'; - }; - - var isObject = function isObject(val) { - return val !== null && typeof val === 'object'; - }; - - var isPromise = function isPromise(val) { - return isObject(val) && isFunction(val.then) && isFunction(val.catch); - }; - - var objectToString = Object.prototype.toString; - - var toTypeString = function toTypeString(value) { - return objectToString.call(value); - }; - - var toRawType = function toRawType(value) { - // extract "RawType" from strings like "[object RawType]" - return toTypeString(value).slice(8, -1); - }; - - var isPlainObject = function isPlainObject(val) { - return toTypeString(val) === '[object Object]'; - }; - - var isIntegerKey = function isIntegerKey(key) { - return isString(key) && key !== 'NaN' && key[0] !== '-' && '' + parseInt(key, 10) === key; - }; - - var isReservedProp = /*#__PURE__*/makeMap( // the leading comma is intentional so empty string "" is also included - ',key,ref,' + 'onVnodeBeforeMount,onVnodeMounted,' + 'onVnodeBeforeUpdate,onVnodeUpdated,' + 'onVnodeBeforeUnmount,onVnodeUnmounted'); - - var cacheStringFunction = function cacheStringFunction(fn) { - var cache = Object.create(null); - return function (str) { - var hit = cache[str]; - return hit || (cache[str] = fn(str)); - }; - }; - - var camelizeRE = /-(\w)/g; - /** - * @private - */ - - var camelize = cacheStringFunction(function (str) { - return str.replace(camelizeRE, function (_, c) { - return c ? c.toUpperCase() : ''; - }); - }); - var hyphenateRE = /\B([A-Z])/g; - /** - * @private - */ - - var hyphenate = cacheStringFunction(function (str) { - return str.replace(hyphenateRE, '-$1').toLowerCase(); - }); - /** - * @private - */ - - var capitalize = cacheStringFunction(function (str) { - return str.charAt(0).toUpperCase() + str.slice(1); - }); - /** - * @private - */ - - var toHandlerKey = cacheStringFunction(function (str) { - return str ? "on".concat(capitalize(str)) : ""; - }); // compare whether a value has changed, accounting for NaN. - - var hasChanged = function hasChanged(value, oldValue) { - return value !== oldValue && (value === value || oldValue === oldValue); - }; - - var invokeArrayFns = function invokeArrayFns(fns, arg) { - for (var i = 0; i < fns.length; i++) { - fns[i](arg); - } - }; - - var def = function def(obj, key, value) { - Object.defineProperty(obj, key, { - configurable: true, - enumerable: false, - value - }); - }; - - var toNumber = function toNumber(val) { - var n = parseFloat(val); - return isNaN(n) ? val : n; - }; - - var _globalThis; - - var getGlobalThis = function getGlobalThis() { - return _globalThis || (_globalThis = typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof window !== 'undefined' ? window : {}); - }; - - var targetMap = new WeakMap(); - var effectStack = []; - var activeEffect; - var ITERATE_KEY = Symbol(process.env.NODE_ENV !== 'production' ? 'iterate' : ''); - var MAP_KEY_ITERATE_KEY = Symbol(process.env.NODE_ENV !== 'production' ? 'Map key iterate' : ''); - - function isEffect(fn) { - return fn && fn._isEffect === true; - } - - function effect(fn) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : EMPTY_OBJ; - - if (isEffect(fn)) { - fn = fn.raw; - } - - var effect = createReactiveEffect(fn, options); - - if (!options.lazy) { - effect(); - } - - return effect; - } - - function stop(effect) { - if (effect.active) { - cleanup(effect); - - if (effect.options.onStop) { - effect.options.onStop(); - } - - effect.active = false; - } - } - - var uid = 0; - - function createReactiveEffect(fn, options) { - var effect = function reactiveEffect() { - if (!effect.active) { - return fn(); - } - - if (!effectStack.includes(effect)) { - cleanup(effect); - - try { - enableTracking(); - effectStack.push(effect); - activeEffect = effect; - return fn(); - } finally { - effectStack.pop(); - resetTracking(); - activeEffect = effectStack[effectStack.length - 1]; - } - } - }; - - effect.id = uid++; - effect.allowRecurse = !!options.allowRecurse; - effect._isEffect = true; - effect.active = true; - effect.raw = fn; - effect.deps = []; - effect.options = options; - return effect; - } - - function cleanup(effect) { - var deps = effect.deps; - - if (deps.length) { - for (var i = 0; i < deps.length; i++) { - deps[i].delete(effect); - } - - deps.length = 0; - } - } - - var shouldTrack = true; - var trackStack = []; - - function pauseTracking() { - trackStack.push(shouldTrack); - shouldTrack = false; - } - - function enableTracking() { - trackStack.push(shouldTrack); - shouldTrack = true; - } - - function resetTracking() { - var last = trackStack.pop(); - shouldTrack = last === undefined ? true : last; - } - - function track(target, type, key) { - if (!shouldTrack || activeEffect === undefined) { - return; - } - - var depsMap = targetMap.get(target); - - if (!depsMap) { - targetMap.set(target, depsMap = new Map()); - } - - var dep = depsMap.get(key); - - if (!dep) { - depsMap.set(key, dep = new Set()); - } - - if (!dep.has(activeEffect)) { - dep.add(activeEffect); - activeEffect.deps.push(dep); - - if (process.env.NODE_ENV !== 'production' && activeEffect.options.onTrack) { - activeEffect.options.onTrack({ - effect: activeEffect, - target, - type, - key - }); - } - } - } - - function trigger(target, type, key, newValue, oldValue, oldTarget) { - var depsMap = targetMap.get(target); - - if (!depsMap) { - // never been tracked - return; - } - - var effects = new Set(); - - var add = function add(effectsToAdd) { - if (effectsToAdd) { - effectsToAdd.forEach(function (effect) { - if (effect !== activeEffect || effect.allowRecurse) { - effects.add(effect); - } - }); - } - }; - - if (type === 'clear' - /* CLEAR */ - ) { - // collection being cleared - // trigger all effects for target - depsMap.forEach(add); - } else if (key === 'length' && isArray(target)) { - depsMap.forEach(function (dep, key) { - if (key === 'length' || key >= newValue) { - add(dep); - } - }); - } else { - // schedule runs for SET | ADD | DELETE - if (key !== void 0) { - add(depsMap.get(key)); - } // also run for iteration key on ADD | DELETE | Map.SET - - - switch (type) { - case 'add' - /* ADD */ - : - if (!isArray(target)) { - add(depsMap.get(ITERATE_KEY)); - - if (isMap(target)) { - add(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } else if (isIntegerKey(key)) { - // new index added to array -> length changes - add(depsMap.get('length')); - } - - break; - - case 'delete' - /* DELETE */ - : - if (!isArray(target)) { - add(depsMap.get(ITERATE_KEY)); - - if (isMap(target)) { - add(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } - - break; - - case 'set' - /* SET */ - : - if (isMap(target)) { - add(depsMap.get(ITERATE_KEY)); - } - - break; - } - } - - var run = function run(effect) { - if (process.env.NODE_ENV !== 'production' && effect.options.onTrigger) { - effect.options.onTrigger({ - effect, - target, - key, - type, - newValue, - oldValue, - oldTarget - }); - } - - if (effect.options.scheduler) { - effect.options.scheduler(effect); - } else { - effect(); - } - }; - - effects.forEach(run); - } - - var isNonTrackableKeys = /*#__PURE__*/makeMap("__proto__,__v_isRef,__isVue"); - var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map(function (key) { - return Symbol[key]; - }).filter(isSymbol)); - var get = /*#__PURE__*/createGetter(); - var shallowGet = /*#__PURE__*/createGetter(false, true); - var readonlyGet = /*#__PURE__*/createGetter(true); - var shallowReadonlyGet = /*#__PURE__*/createGetter(true, true); - var arrayInstrumentations = {}; - ['includes', 'indexOf', 'lastIndexOf'].forEach(function (key) { - var method = Array.prototype[key]; - - arrayInstrumentations[key] = function () { - var arr = toRaw(this); - - for (var i = 0, l = this.length; i < l; i++) { - track(arr, 'get' - /* GET */ - , i + ''); - } // we run the method using the original args first (which may be reactive) - - - for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) { - args[_key2] = arguments[_key2]; - } - - var res = method.apply(arr, args); - - if (res === -1 || res === false) { - // if that didn't work, run it again using raw values. - return method.apply(arr, args.map(toRaw)); - } else { - return res; - } - }; - }); - ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(function (key) { - var method = Array.prototype[key]; - - arrayInstrumentations[key] = function () { - pauseTracking(); - - for (var _len2 = arguments.length, args = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) { - args[_key3] = arguments[_key3]; - } - - var res = method.apply(this, args); - resetTracking(); - return res; - }; - }); - - function createGetter() { - var isReadonly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var shallow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - return function get(target, key, receiver) { - if (key === '__v_isReactive' - /* IS_REACTIVE */ - ) { - return !isReadonly; - } else if (key === '__v_isReadonly' - /* IS_READONLY */ - ) { - return isReadonly; - } else if (key === '__v_raw' - /* RAW */ - && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { - return target; - } - - var targetIsArray = isArray(target); - - if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) { - return Reflect.get(arrayInstrumentations, key, receiver); - } - - var res = Reflect.get(target, key, receiver); - - if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { - return res; - } - - if (!isReadonly) { - track(target, 'get' - /* GET */ - , key); - } - - if (shallow) { - return res; - } - - if (isRef(res)) { - // ref unwrapping - does not apply for Array + integer key. - var shouldUnwrap = !targetIsArray || !isIntegerKey(key); - return shouldUnwrap ? res.value : res; - } - - if (isObject(res)) { - // Convert returned value into a proxy as well. we do the isObject check - // here to avoid invalid value warning. Also need to lazy access readonly - // and reactive here to avoid circular dependency. - return isReadonly ? readonly(res) : reactive(res); - } - - return res; - }; - } - - var set = /*#__PURE__*/createSetter(); - var shallowSet = /*#__PURE__*/createSetter(true); - - function createSetter() { - var shallow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return function set(target, key, value, receiver) { - var oldValue = target[key]; - - if (!shallow) { - value = toRaw(value); - oldValue = toRaw(oldValue); - - if (!isArray(target) && isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } - } - - var hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); - var result = Reflect.set(target, key, value, receiver); // don't trigger if target is something up in the prototype chain of original - - if (target === toRaw(receiver)) { - if (!hadKey) { - trigger(target, 'add' - /* ADD */ - , key, value); - } else if (hasChanged(value, oldValue)) { - trigger(target, 'set' - /* SET */ - , key, value, oldValue); - } - } - - return result; - }; - } - - function deleteProperty(target, key) { - var hadKey = hasOwn(target, key); - var oldValue = target[key]; - var result = Reflect.deleteProperty(target, key); - - if (result && hadKey) { - trigger(target, 'delete' - /* DELETE */ - , key, undefined, oldValue); - } - - return result; - } - - function has(target, key) { - var result = Reflect.has(target, key); - - if (!isSymbol(key) || !builtInSymbols.has(key)) { - track(target, 'has' - /* HAS */ - , key); - } - - return result; - } - - function ownKeys(target) { - track(target, 'iterate' - /* ITERATE */ - , isArray(target) ? 'length' : ITERATE_KEY); - return Reflect.ownKeys(target); - } - - var mutableHandlers = { - get, - set, - deleteProperty, - has, - ownKeys - }; - var readonlyHandlers = { - get: readonlyGet, - - set(target, key) { - if (process.env.NODE_ENV !== 'production') { - console.warn("Set operation on key \"".concat(String(key), "\" failed: target is readonly."), target); - } - - return true; - }, - - deleteProperty(target, key) { - if (process.env.NODE_ENV !== 'production') { - console.warn("Delete operation on key \"".concat(String(key), "\" failed: target is readonly."), target); - } - - return true; - } - - }; - var shallowReactiveHandlers = extend({}, mutableHandlers, { - get: shallowGet, - set: shallowSet - }); // Props handlers are special in the sense that it should not unwrap top-level - // refs (in order to allow refs to be explicitly passed down), but should - // retain the reactivity of the normal readonly object. - - var shallowReadonlyHandlers = extend({}, readonlyHandlers, { - get: shallowReadonlyGet - }); - - var toReactive = function toReactive(value) { - return isObject(value) ? reactive(value) : value; - }; - - var toReadonly = function toReadonly(value) { - return isObject(value) ? readonly(value) : value; - }; - - var toShallow = function toShallow(value) { - return value; - }; - - var getProto = function getProto(v) { - return Reflect.getPrototypeOf(v); - }; - - function get$1(target, key) { - var isReadonly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var isShallow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - // #1772: readonly(reactive(Map)) should return readonly + reactive version - // of the value - target = target['__v_raw' - /* RAW */ - ]; - var rawTarget = toRaw(target); - var rawKey = toRaw(key); - - if (key !== rawKey) { - !isReadonly && track(rawTarget, 'get' - /* GET */ - , key); - } - - !isReadonly && track(rawTarget, 'get' - /* GET */ - , rawKey); - - var _getProto = getProto(rawTarget), - has = _getProto.has; - - var wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - - if (has.call(rawTarget, key)) { - return wrap(target.get(key)); - } else if (has.call(rawTarget, rawKey)) { - return wrap(target.get(rawKey)); - } else if (target !== rawTarget) { - // #3602 readonly(reactive(Map)) - // ensure that the nested reactive `Map` can do tracking for itself - target.get(key); - } - } - - function has$1(key) { - var isReadonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var target = this['__v_raw' - /* RAW */ - ]; - var rawTarget = toRaw(target); - var rawKey = toRaw(key); - - if (key !== rawKey) { - !isReadonly && track(rawTarget, 'has' - /* HAS */ - , key); - } - - !isReadonly && track(rawTarget, 'has' - /* HAS */ - , rawKey); - return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); - } - - function size(target) { - var isReadonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - target = target['__v_raw' - /* RAW */ - ]; - !isReadonly && track(toRaw(target), 'iterate' - /* ITERATE */ - , ITERATE_KEY); - return Reflect.get(target, 'size', target); - } - - function add(value) { - value = toRaw(value); - var target = toRaw(this); - var proto = getProto(target); - var hadKey = proto.has.call(target, value); - - if (!hadKey) { - target.add(value); - trigger(target, 'add' - /* ADD */ - , value, value); - } - - return this; - } - - function set$1(key, value) { - value = toRaw(value); - var target = toRaw(this); - - var _getProto2 = getProto(target), - has = _getProto2.has, - get = _getProto2.get; - - var hadKey = has.call(target, key); - - if (!hadKey) { - key = toRaw(key); - hadKey = has.call(target, key); - } else if (process.env.NODE_ENV !== 'production') { - checkIdentityKeys(target, has, key); - } - - var oldValue = get.call(target, key); - target.set(key, value); - - if (!hadKey) { - trigger(target, 'add' - /* ADD */ - , key, value); - } else if (hasChanged(value, oldValue)) { - trigger(target, 'set' - /* SET */ - , key, value, oldValue); - } - - return this; - } - - function deleteEntry(key) { - var target = toRaw(this); - - var _getProto3 = getProto(target), - has = _getProto3.has, - get = _getProto3.get; - - var hadKey = has.call(target, key); - - if (!hadKey) { - key = toRaw(key); - hadKey = has.call(target, key); - } else if (process.env.NODE_ENV !== 'production') { - checkIdentityKeys(target, has, key); - } - - var oldValue = get ? get.call(target, key) : undefined; // forward the operation before queueing reactions - - var result = target.delete(key); - - if (hadKey) { - trigger(target, 'delete' - /* DELETE */ - , key, undefined, oldValue); - } - - return result; - } - - function clear() { - var target = toRaw(this); - var hadItems = target.size !== 0; - var oldTarget = process.env.NODE_ENV !== 'production' ? isMap(target) ? new Map(target) : new Set(target) : undefined; // forward the operation before queueing reactions - - var result = target.clear(); - - if (hadItems) { - trigger(target, 'clear' - /* CLEAR */ - , undefined, undefined, oldTarget); - } - - return result; - } - - function createForEach(isReadonly, isShallow) { - return function forEach(callback, thisArg) { - var observed = this; - var target = observed['__v_raw' - /* RAW */ - ]; - var rawTarget = toRaw(target); - var wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - !isReadonly && track(rawTarget, 'iterate' - /* ITERATE */ - , ITERATE_KEY); - return target.forEach(function (value, key) { - // important: make sure the callback is - // 1. invoked with the reactive map as `this` and 3rd arg - // 2. the value received should be a corresponding reactive/readonly. - return callback.call(thisArg, wrap(value), wrap(key), observed); - }); - }; - } - - function createIterableMethod(method, isReadonly, isShallow) { - return function () { - var target = this['__v_raw' - /* RAW */ - ]; - var rawTarget = toRaw(target); - var targetIsMap = isMap(rawTarget); - var isPair = method === 'entries' || method === Symbol.iterator && targetIsMap; - var isKeyOnly = method === 'keys' && targetIsMap; - var innerIterator = target[method].apply(target, arguments); - var wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - !isReadonly && track(rawTarget, 'iterate' - /* ITERATE */ - , isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); // return a wrapped iterator which returns observed versions of the - // values emitted from the real iterator - - return { - // iterator protocol - next() { - var _innerIterator$next = innerIterator.next(), - value = _innerIterator$next.value, - done = _innerIterator$next.done; - - return done ? { - value, - done - } : { - value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), - done - }; - }, - - // iterable protocol - [Symbol.iterator]() { - return this; - } - - }; - }; - } - - function createReadonlyMethod(type) { - return function () { - if (process.env.NODE_ENV !== 'production') { - var key = (arguments.length <= 0 ? undefined : arguments[0]) ? "on key \"".concat(arguments.length <= 0 ? undefined : arguments[0], "\" ") : ""; - console.warn("".concat(capitalize(type), " operation ").concat(key, "failed: target is readonly."), toRaw(this)); - } - - return type === 'delete' - /* DELETE */ - ? false : this; - }; - } - - var mutableInstrumentations = { - get(key) { - return get$1(this, key); - }, - - get size() { - return size(this); - }, - - has: has$1, - add, - set: set$1, - delete: deleteEntry, - clear, - forEach: createForEach(false, false) - }; - var shallowInstrumentations = { - get(key) { - return get$1(this, key, false, true); - }, - - get size() { - return size(this); - }, - - has: has$1, - add, - set: set$1, - delete: deleteEntry, - clear, - forEach: createForEach(false, true) - }; - var readonlyInstrumentations = { - get(key) { - return get$1(this, key, true); - }, - - get size() { - return size(this, true); - }, - - has(key) { - return has$1.call(this, key, true); - }, - - add: createReadonlyMethod('add' - /* ADD */ - ), - set: createReadonlyMethod('set' - /* SET */ - ), - delete: createReadonlyMethod('delete' - /* DELETE */ - ), - clear: createReadonlyMethod('clear' - /* CLEAR */ - ), - forEach: createForEach(true, false) - }; - var shallowReadonlyInstrumentations = { - get(key) { - return get$1(this, key, true, true); - }, - - get size() { - return size(this, true); - }, - - has(key) { - return has$1.call(this, key, true); - }, - - add: createReadonlyMethod('add' - /* ADD */ - ), - set: createReadonlyMethod('set' - /* SET */ - ), - delete: createReadonlyMethod('delete' - /* DELETE */ - ), - clear: createReadonlyMethod('clear' - /* CLEAR */ - ), - forEach: createForEach(true, true) - }; - var iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator]; - iteratorMethods.forEach(function (method) { - mutableInstrumentations[method] = createIterableMethod(method, false, false); - readonlyInstrumentations[method] = createIterableMethod(method, true, false); - shallowInstrumentations[method] = createIterableMethod(method, false, true); - shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true); - }); - - function createInstrumentationGetter(isReadonly, shallow) { - var instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; - return function (target, key, receiver) { - if (key === '__v_isReactive' - /* IS_REACTIVE */ - ) { - return !isReadonly; - } else if (key === '__v_isReadonly' - /* IS_READONLY */ - ) { - return isReadonly; - } else if (key === '__v_raw' - /* RAW */ - ) { - return target; - } - - return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver); - }; - } - - var mutableCollectionHandlers = { - get: createInstrumentationGetter(false, false) - }; - var shallowCollectionHandlers = { - get: createInstrumentationGetter(false, true) - }; - var readonlyCollectionHandlers = { - get: createInstrumentationGetter(true, false) - }; - var shallowReadonlyCollectionHandlers = { - get: createInstrumentationGetter(true, true) - }; - - function checkIdentityKeys(target, has, key) { - var rawKey = toRaw(key); - - if (rawKey !== key && has.call(target, rawKey)) { - var type = toRawType(target); - console.warn("Reactive ".concat(type, " contains both the raw and reactive ") + "versions of the same object".concat(type === "Map" ? " as keys" : "", ", ") + "which can lead to inconsistencies. " + "Avoid differentiating between the raw and reactive versions " + "of an object and only use the reactive version if possible."); - } - } - - var reactiveMap = new WeakMap(); - var shallowReactiveMap = new WeakMap(); - var readonlyMap = new WeakMap(); - var shallowReadonlyMap = new WeakMap(); - - function targetTypeMap(rawType) { - switch (rawType) { - case 'Object': - case 'Array': - return 1; - - /* COMMON */ - - case 'Map': - case 'Set': - case 'WeakMap': - case 'WeakSet': - return 2; - - /* COLLECTION */ - - default: - return 0; - - /* INVALID */ - } - } - - function getTargetType(value) { - return value['__v_skip' - /* SKIP */ - ] || !Object.isExtensible(value) ? 0 - /* INVALID */ - : targetTypeMap(toRawType(value)); - } - - function reactive(target) { - // if trying to observe a readonly proxy, return the readonly version. - if (target && target['__v_isReadonly' - /* IS_READONLY */ - ]) { - return target; - } - - return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap); - } - /** - * Return a shallowly-reactive copy of the original object, where only the root - * level properties are reactive. It also does not auto-unwrap refs (even at the - * root level). - */ - - - function shallowReactive(target) { - return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap); - } - /** - * Creates a readonly copy of the original object. Note the returned copy is not - * made reactive, but `readonly` can be called on an already reactive object. - */ - - - function readonly(target) { - return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap); - } - /** - * Returns a reactive-copy of the original object, where only the root level - * properties are readonly, and does NOT unwrap refs nor recursively convert - * returned properties. - * This is used for creating the props proxy object for stateful components. - */ - - - function shallowReadonly(target) { - return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap); - } - - function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) { - if (!isObject(target)) { - if (process.env.NODE_ENV !== 'production') { - console.warn("value cannot be made reactive: ".concat(String(target))); - } - - return target; - } // target is already a Proxy, return it. - // exception: calling readonly() on a reactive object - - - if (target['__v_raw' - /* RAW */ - ] && !(isReadonly && target['__v_isReactive' - /* IS_REACTIVE */ - ])) { - return target; - } // target already has corresponding Proxy - - - var existingProxy = proxyMap.get(target); - - if (existingProxy) { - return existingProxy; - } // only a whitelist of value types can be observed. - - - var targetType = getTargetType(target); - - if (targetType === 0 - /* INVALID */ - ) { - return target; - } - - var proxy = new Proxy(target, targetType === 2 - /* COLLECTION */ - ? collectionHandlers : baseHandlers); - proxyMap.set(target, proxy); - return proxy; - } - - function isReactive(value) { - if (isReadonly(value)) { - return isReactive(value['__v_raw' - /* RAW */ - ]); - } - - return !!(value && value['__v_isReactive' - /* IS_REACTIVE */ - ]); - } - - function isReadonly(value) { - return !!(value && value['__v_isReadonly' - /* IS_READONLY */ - ]); - } - - function isProxy(value) { - return isReactive(value) || isReadonly(value); - } - - function toRaw(observed) { - return observed && toRaw(observed['__v_raw' - /* RAW */ - ]) || observed; - } - - function markRaw(value) { - def(value, '__v_skip' - /* SKIP */ - , true); - return value; - } - - var convert = function convert(val) { - return isObject(val) ? reactive(val) : val; - }; - - function isRef(r) { - return Boolean(r && r.__v_isRef === true); - } - - function ref(value) { - return createRef(value); - } - - function shallowRef(value) { - return createRef(value, true); - } - - var RefImpl = /*#__PURE__*/function () { - function RefImpl(_rawValue, _shallow) { - _classCallCheck(this, RefImpl); - - this._rawValue = _rawValue; - this._shallow = _shallow; - this.__v_isRef = true; - this._value = _shallow ? _rawValue : convert(_rawValue); - } - - _createClass(RefImpl, [{ - key: "value", - get: function get() { - track(toRaw(this), 'get' - /* GET */ - , 'value'); - return this._value; - }, - set: function set(newVal) { - if (hasChanged(toRaw(newVal), this._rawValue)) { - this._rawValue = newVal; - this._value = this._shallow ? newVal : convert(newVal); - trigger(toRaw(this), 'set' - /* SET */ - , 'value', newVal); - } - } - }]); - - return RefImpl; - }(); - - function createRef(rawValue) { - var shallow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (isRef(rawValue)) { - return rawValue; - } - - return new RefImpl(rawValue, shallow); - } - - function triggerRef(ref) { - trigger(toRaw(ref), 'set' - /* SET */ - , 'value', process.env.NODE_ENV !== 'production' ? ref.value : void 0); - } - - function unref(ref) { - return isRef(ref) ? ref.value : ref; - } - - var shallowUnwrapHandlers = { - get: function get(target, key, receiver) { - return unref(Reflect.get(target, key, receiver)); - }, - set: function set(target, key, value, receiver) { - var oldValue = target[key]; - - if (isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } else { - return Reflect.set(target, key, value, receiver); - } - } - }; - - function proxyRefs(objectWithRefs) { - return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); - } - - var CustomRefImpl = /*#__PURE__*/function () { - function CustomRefImpl(factory) { - var _this7 = this; - - _classCallCheck(this, CustomRefImpl); - - this.__v_isRef = true; - - var _factory = factory(function () { - return track(_this7, 'get' - /* GET */ - , - /* GET */ - 'value'); - }, function () { - return trigger(_this7, 'set' - /* SET */ - , - /* SET */ - 'value'); - }), - get = _factory.get, - set = _factory.set; - - this._get = get; - this._set = set; - } - - _createClass(CustomRefImpl, [{ - key: "value", - get: function get() { - return this._get(); - }, - set: function set(newVal) { - this._set(newVal); - } - }]); - - return CustomRefImpl; - }(); - - function customRef(factory) { - return new CustomRefImpl(factory); - } - - function toRefs(object) { - if (process.env.NODE_ENV !== 'production' && !isProxy(object)) { - console.warn("toRefs() expects a reactive object but received a plain one."); - } - - var ret = isArray(object) ? new Array(object.length) : {}; - - for (var key in object) { - ret[key] = toRef(object, key); - } - - return ret; - } - - var ObjectRefImpl = /*#__PURE__*/function () { - function ObjectRefImpl(_object, _key) { - _classCallCheck(this, ObjectRefImpl); - - this._object = _object; - this._key = _key; - this.__v_isRef = true; - } - - _createClass(ObjectRefImpl, [{ - key: "value", - get: function get() { - return this._object[this._key]; - }, - set: function set(newVal) { - this._object[this._key] = newVal; - } - }]); - - return ObjectRefImpl; - }(); - - function toRef(object, key) { - return isRef(object[key]) ? object[key] : new ObjectRefImpl(object, key); - } - - var ComputedRefImpl = /*#__PURE__*/function () { - function ComputedRefImpl(getter, _setter, isReadonly) { - var _this8 = this; - - _classCallCheck(this, ComputedRefImpl); - - this._setter = _setter; - this._dirty = true; - this.__v_isRef = true; - this.effect = effect(getter, { - lazy: true, - scheduler: function scheduler() { - if (!_this8._dirty) { - _this8._dirty = true; - trigger(toRaw(_this8), 'set' - /* SET */ - , 'value'); - } - } - }); - this['__v_isReadonly' - /* IS_READONLY */ - ] = isReadonly; - } - - _createClass(ComputedRefImpl, [{ - key: "value", - get: function get() { - // the computed ref may get wrapped by other proxies e.g. readonly() #3376 - var self = toRaw(this); - - if (self._dirty) { - self._value = this.effect(); - self._dirty = false; - } - - track(self, 'get' - /* GET */ - , 'value'); - return self._value; - }, - set: function set(newValue) { - this._setter(newValue); - } - }]); - - return ComputedRefImpl; - }(); - - function computed(getterOrOptions) { - var getter; - var setter; - - if (isFunction(getterOrOptions)) { - getter = getterOrOptions; - setter = process.env.NODE_ENV !== 'production' ? function () { - console.warn('Write operation failed: computed value is readonly'); - } : NOOP; - } else { - getter = getterOrOptions.get; - setter = getterOrOptions.set; - } - - return new ComputedRefImpl(getter, setter, isFunction(getterOrOptions) || !getterOrOptions.set); - } - - var stack = []; - - function pushWarningContext(vnode) { - stack.push(vnode); - } - - function popWarningContext() { - stack.pop(); - } - - function warn(msg) { - // avoid props formatting or warn handler tracking deps that might be mutated - // during patch, leading to infinite recursion. - pauseTracking(); - var instance = stack.length ? stack[stack.length - 1].component : null; - var appWarnHandler = instance && instance.appContext.config.warnHandler; - var trace = getComponentTrace(); - - for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key4 = 1; _key4 < _len3; _key4++) { - args[_key4 - 1] = arguments[_key4]; - } - - if (appWarnHandler) { - callWithErrorHandling(appWarnHandler, instance, 11 - /* APP_WARN_HANDLER */ - , [msg + args.join(''), instance && instance.proxy, trace.map(function (_ref3) { - var vnode = _ref3.vnode; - return "at <".concat(formatComponentName(instance, vnode.type), ">"); - }).join('\n'), trace]); - } else { - var _console; - - var warnArgs = ["[Vue warn]: ".concat(msg)].concat(args); - /* istanbul ignore if */ - - if (trace.length && // avoid spamming console during tests - !false) { - warnArgs.push.apply(warnArgs, ["\n"].concat(_toConsumableArray(formatTrace(trace)))); - } - - (_console = console).warn.apply(_console, _toConsumableArray(warnArgs)); - } - - resetTracking(); - } - - function getComponentTrace() { - var currentVNode = stack[stack.length - 1]; - - if (!currentVNode) { - return []; - } // we can't just use the stack because it will be incomplete during updates - // that did not start from the root. Re-construct the parent chain using - // instance parent pointers. - - - var normalizedStack = []; - - while (currentVNode) { - var last = normalizedStack[0]; - - if (last && last.vnode === currentVNode) { - last.recurseCount++; - } else { - normalizedStack.push({ - vnode: currentVNode, - recurseCount: 0 - }); - } - - var parentInstance = currentVNode.component && currentVNode.component.parent; - currentVNode = parentInstance && parentInstance.vnode; - } - - return normalizedStack; - } - /* istanbul ignore next */ - - - function formatTrace(trace) { - var logs = []; - trace.forEach(function (entry, i) { - logs.push.apply(logs, _toConsumableArray(i === 0 ? [] : ["\n"]).concat(_toConsumableArray(formatTraceEntry(entry)))); - }); - return logs; - } - - function formatTraceEntry(_ref4) { - var vnode = _ref4.vnode, - recurseCount = _ref4.recurseCount; - var postfix = recurseCount > 0 ? "... (".concat(recurseCount, " recursive calls)") : ""; - var isRoot = vnode.component ? vnode.component.parent == null : false; - var open = " at <".concat(formatComponentName(vnode.component, vnode.type, isRoot)); - var close = ">" + postfix; - return vnode.props ? [open].concat(_toConsumableArray(formatProps(vnode.props)), [close]) : [open + close]; - } - /* istanbul ignore next */ - - - function formatProps(props) { - var res = []; - var keys = Object.keys(props); - keys.slice(0, 3).forEach(function (key) { - res.push.apply(res, _toConsumableArray(formatProp(key, props[key]))); - }); - - if (keys.length > 3) { - res.push(" ..."); - } - - return res; - } - /* istanbul ignore next */ - - - function formatProp(key, value, raw) { - if (isString(value)) { - value = JSON.stringify(value); - return raw ? value : ["".concat(key, "=").concat(value)]; - } else if (typeof value === 'number' || typeof value === 'boolean' || value == null) { - return raw ? value : ["".concat(key, "=").concat(value)]; - } else if (isRef(value)) { - value = formatProp(key, toRaw(value.value), true); - return raw ? value : ["".concat(key, "=Ref<"), value, ">"]; - } else if (isFunction(value)) { - return ["".concat(key, "=fn").concat(value.name ? "<".concat(value.name, ">") : "")]; - } else { - value = toRaw(value); - return raw ? value : ["".concat(key, "="), value]; - } - } - - var ErrorTypeStrings = { - ['bc' - /* BEFORE_CREATE */ - ]: 'beforeCreate hook', - ['c' - /* CREATED */ - ]: 'created hook', - ['bm' - /* BEFORE_MOUNT */ - ]: 'beforeMount hook', - ['m' - /* MOUNTED */ - ]: 'mounted hook', - ['bu' - /* BEFORE_UPDATE */ - ]: 'beforeUpdate hook', - ['u' - /* UPDATED */ - ]: 'updated', - ['bum' - /* BEFORE_UNMOUNT */ - ]: 'beforeUnmount hook', - ['um' - /* UNMOUNTED */ - ]: 'unmounted hook', - ['a' - /* ACTIVATED */ - ]: 'activated hook', - ['da' - /* DEACTIVATED */ - ]: 'deactivated hook', - ['ec' - /* ERROR_CAPTURED */ - ]: 'errorCaptured hook', - ['rtc' - /* RENDER_TRACKED */ - ]: 'renderTracked hook', - ['rtg' - /* RENDER_TRIGGERED */ - ]: 'renderTriggered hook', - [0 - /* SETUP_FUNCTION */ - ]: 'setup function', - [1 - /* RENDER_FUNCTION */ - ]: 'render function', - [2 - /* WATCH_GETTER */ - ]: 'watcher getter', - [3 - /* WATCH_CALLBACK */ - ]: 'watcher callback', - [4 - /* WATCH_CLEANUP */ - ]: 'watcher cleanup function', - [5 - /* NATIVE_EVENT_HANDLER */ - ]: 'native event handler', - [6 - /* COMPONENT_EVENT_HANDLER */ - ]: 'component event handler', - [7 - /* VNODE_HOOK */ - ]: 'vnode hook', - [8 - /* DIRECTIVE_HOOK */ - ]: 'directive hook', - [9 - /* TRANSITION_HOOK */ - ]: 'transition hook', - [10 - /* APP_ERROR_HANDLER */ - ]: 'app errorHandler', - [11 - /* APP_WARN_HANDLER */ - ]: 'app warnHandler', - [12 - /* FUNCTION_REF */ - ]: 'ref function', - [13 - /* ASYNC_COMPONENT_LOADER */ - ]: 'async component loader', - [14 - /* SCHEDULER */ - ]: 'scheduler flush. This is likely a Vue internals bug. ' + 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/vue-next' - }; - - function callWithErrorHandling(fn, instance, type, args) { - var res; - - try { - res = args ? fn.apply(void 0, _toConsumableArray(args)) : fn(); - } catch (err) { - handleError(err, instance, type); - } - - return res; - } - - function callWithAsyncErrorHandling(fn, instance, type, args) { - if (isFunction(fn)) { - var res = callWithErrorHandling(fn, instance, type, args); - - if (res && isPromise(res)) { - res.catch(function (err) { - handleError(err, instance, type); - }); - } - - return res; - } - - var values = []; - - for (var i = 0; i < fn.length; i++) { - values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); - } - - return values; - } - - function handleError(err, instance, type) { - var throwInDev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var contextVNode = instance ? instance.vnode : null; - - if (instance) { - var cur = instance.parent; // the exposed instance is the render proxy to keep it consistent with 2.x - - var exposedInstance = instance.proxy; // in production the hook receives only the error code - - var errorInfo = process.env.NODE_ENV !== 'production' ? ErrorTypeStrings[type] : type; - - while (cur) { - var errorCapturedHooks = cur.ec; - - if (errorCapturedHooks) { - for (var i = 0; i < errorCapturedHooks.length; i++) { - if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { - return; - } - } - } - - cur = cur.parent; - } // app-level handling - - - var appErrorHandler = instance.appContext.config.errorHandler; - - if (appErrorHandler) { - callWithErrorHandling(appErrorHandler, null, 10 - /* APP_ERROR_HANDLER */ - , [err, exposedInstance, errorInfo]); - return; - } - } - - logError(err, type, contextVNode, throwInDev); - } - - function logError(err, type, contextVNode) { - var throwInDev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - - if (process.env.NODE_ENV !== 'production') { - var info = ErrorTypeStrings[type]; - - if (contextVNode) { - pushWarningContext(contextVNode); - } - - warn("Unhandled error".concat(info ? " during execution of ".concat(info) : "")); - - if (contextVNode) { - popWarningContext(); - } // crash in dev by default so it's more noticeable - - - if (throwInDev) { - throw err; - } else { - console.error(err); - } - } else { - // recover in prod to reduce the impact on end-user - console.error(err); - } - } - - var isFlushing = false; - var isFlushPending = false; - var queue = []; - var flushIndex = 0; - var pendingPreFlushCbs = []; - var activePreFlushCbs = null; - var preFlushIndex = 0; - var pendingPostFlushCbs = []; - var activePostFlushCbs = null; - var postFlushIndex = 0; - var resolvedPromise = Promise.resolve(); - var currentFlushPromise = null; - var currentPreFlushParentJob = null; - var RECURSION_LIMIT = 100; - - function nextTick(fn) { - var p = currentFlushPromise || resolvedPromise; - return fn ? p.then(this ? fn.bind(this) : fn) : p; - } // #2768 - // Use binary-search to find a suitable position in the queue, - // so that the queue maintains the increasing order of job's id, - // which can prevent the job from being skipped and also can avoid repeated patching. - - - function findInsertionIndex(job) { - // the start index should be `flushIndex + 1` - var start = flushIndex + 1; - var end = queue.length; - var jobId = getId(job); - - while (start < end) { - var middle = start + end >>> 1; - var middleJobId = getId(queue[middle]); - middleJobId < jobId ? start = middle + 1 : end = middle; - } - - return start; - } - - function queueJob(job) { - // the dedupe search uses the startIndex argument of Array.includes() - // by default the search index includes the current job that is being run - // so it cannot recursively trigger itself again. - // if the job is a watch() callback, the search will start with a +1 index to - // allow it recursively trigger itself - it is the user's responsibility to - // ensure it doesn't end up in an infinite loop. - if ((!queue.length || !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) && job !== currentPreFlushParentJob) { - var pos = findInsertionIndex(job); - - if (pos > -1) { - queue.splice(pos, 0, job); - } else { - queue.push(job); - } - - queueFlush(); - } - } - - function queueFlush() { - if (!isFlushing && !isFlushPending) { - isFlushPending = true; - currentFlushPromise = resolvedPromise.then(flushJobs); - } - } - - function invalidateJob(job) { - var i = queue.indexOf(job); - - if (i > flushIndex) { - queue.splice(i, 1); - } - } - - function queueCb(cb, activeQueue, pendingQueue, index) { - if (!isArray(cb)) { - if (!activeQueue || !activeQueue.includes(cb, cb.allowRecurse ? index + 1 : index)) { - pendingQueue.push(cb); - } - } else { - // if cb is an array, it is a component lifecycle hook which can only be - // triggered by a job, which is already deduped in the main queue, so - // we can skip duplicate check here to improve perf - pendingQueue.push.apply(pendingQueue, _toConsumableArray(cb)); - } - - queueFlush(); - } - - function queuePreFlushCb(cb) { - queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex); - } - - function queuePostFlushCb(cb) { - queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex); - } - - function flushPreFlushCbs(seen) { - var parentJob = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - if (pendingPreFlushCbs.length) { - currentPreFlushParentJob = parentJob; - activePreFlushCbs = _toConsumableArray(new Set(pendingPreFlushCbs)); - pendingPreFlushCbs.length = 0; - - if (process.env.NODE_ENV !== 'production') { - seen = seen || new Map(); - } - - for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) { - if (process.env.NODE_ENV !== 'production' && checkRecursiveUpdates(seen, activePreFlushCbs[preFlushIndex])) { - continue; - } - - activePreFlushCbs[preFlushIndex](); - } - - activePreFlushCbs = null; - preFlushIndex = 0; - currentPreFlushParentJob = null; // recursively flush until it drains - - flushPreFlushCbs(seen, parentJob); - } - } - - function flushPostFlushCbs(seen) { - if (pendingPostFlushCbs.length) { - var deduped = _toConsumableArray(new Set(pendingPostFlushCbs)); - - pendingPostFlushCbs.length = 0; // #1947 already has active queue, nested flushPostFlushCbs call - - if (activePostFlushCbs) { - var _activePostFlushCbs; - - (_activePostFlushCbs = activePostFlushCbs).push.apply(_activePostFlushCbs, _toConsumableArray(deduped)); - - return; - } - - activePostFlushCbs = deduped; - - if (process.env.NODE_ENV !== 'production') { - seen = seen || new Map(); - } - - activePostFlushCbs.sort(function (a, b) { - return getId(a) - getId(b); - }); - - for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { - if (process.env.NODE_ENV !== 'production' && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { - continue; - } - - activePostFlushCbs[postFlushIndex](); - } - - activePostFlushCbs = null; - postFlushIndex = 0; - } - } - - var getId = function getId(job) { - return job.id == null ? Infinity : job.id; - }; - - function flushJobs(seen) { - isFlushPending = false; - isFlushing = true; - - if (process.env.NODE_ENV !== 'production') { - seen = seen || new Map(); - } - - flushPreFlushCbs(seen); // Sort queue before flush. - // This ensures that: - // 1. Components are updated from parent to child. (because parent is always - // created before the child so its render effect will have smaller - // priority number) - // 2. If a component is unmounted during a parent component's update, - // its update can be skipped. - - queue.sort(function (a, b) { - return getId(a) - getId(b); - }); - - try { - for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { - var job = queue[flushIndex]; - - if (job && job.active !== false) { - if (process.env.NODE_ENV !== 'production' && checkRecursiveUpdates(seen, job)) { - continue; - } - - callWithErrorHandling(job, null, 14 - /* SCHEDULER */ - ); - } - } - } finally { - flushIndex = 0; - queue.length = 0; - flushPostFlushCbs(seen); - isFlushing = false; - currentFlushPromise = null; // some postFlushCb queued jobs! - // keep flushing until it drains. - - if (queue.length || pendingPreFlushCbs.length || pendingPostFlushCbs.length) { - flushJobs(seen); - } - } - } - - function checkRecursiveUpdates(seen, fn) { - if (!seen.has(fn)) { - seen.set(fn, 1); - } else { - var count = seen.get(fn); - - if (count > RECURSION_LIMIT) { - var instance = fn.ownerInstance; - var componentName = instance && getComponentName(instance.type); - warn("Maximum recursive updates exceeded".concat(componentName ? " in component <".concat(componentName, ">") : "", ". ") + "This means you have a reactive effect that is mutating its own " + "dependencies and thus recursively triggering itself. Possible sources " + "include component template, render function, updated hook or " + "watcher source function."); - return true; - } else { - seen.set(fn, count + 1); - } - } - } - /* eslint-disable no-restricted-globals */ - - - var isHmrUpdating = false; - var hmrDirtyComponents = new Set(); // Expose the HMR runtime on the window object - // This makes it entirely tree-shakable without polluting the exports and makes - // it easier to be used in toolings like vue-loader - // Note: for a component to be eligible for HMR it also needs the __hmrId option - // to be set so that its instances can be registered / removed. - - if (process.env.NODE_ENV !== 'production') { - var globalObject = typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {}; - globalObject.__VUE_HMR_RUNTIME__ = { - createRecord: tryWrap(createRecord), - rerender: tryWrap(rerender), - reload: tryWrap(reload) - }; - } - - var map = new Map(); - - function registerHMR(instance) { - var id = instance.type.__hmrId; - var record = map.get(id); - - if (!record) { - createRecord(id, instance.type); - record = map.get(id); - } - - record.instances.add(instance); - } - - function unregisterHMR(instance) { - map.get(instance.type.__hmrId).instances.delete(instance); - } - - function createRecord(id, component) { - if (!component) { - warn("HMR API usage is out of date.\n" + "Please upgrade vue-loader/vite/rollup-plugin-vue or other relevant " + "dependency that handles Vue SFC compilation."); - component = {}; - } - - if (map.has(id)) { - return false; - } - - map.set(id, { - component: isClassComponent(component) ? component.__vccOpts : component, - instances: new Set() - }); - return true; - } - - function rerender(id, newRender) { - var record = map.get(id); - if (!record) return; - if (newRender) record.component.render = newRender; // Array.from creates a snapshot which avoids the set being mutated during - // updates - - Array.from(record.instances).forEach(function (instance) { - if (newRender) { - instance.render = newRender; - } - - instance.renderCache = []; // this flag forces child components with slot content to update - - isHmrUpdating = true; - instance.update(); - isHmrUpdating = false; - }); - } - - function reload(id, newComp) { - var record = map.get(id); - if (!record) return; // Array.from creates a snapshot which avoids the set being mutated during - // updates - - var component = record.component, - instances = record.instances; - - if (!hmrDirtyComponents.has(component)) { - // 1. Update existing comp definition to match new one - newComp = isClassComponent(newComp) ? newComp.__vccOpts : newComp; - extend(component, newComp); - - for (var key in component) { - if (key !== '__file' && !(key in newComp)) { - delete component[key]; - } - } // 2. Mark component dirty. This forces the renderer to replace the component - // on patch. - - - hmrDirtyComponents.add(component); // 3. Make sure to unmark the component after the reload. - - queuePostFlushCb(function () { - hmrDirtyComponents.delete(component); - }); - } - - Array.from(instances).forEach(function (instance) { - if (instance.parent) { - // 4. Force the parent instance to re-render. This will cause all updated - // components to be unmounted and re-mounted. Queue the update so that we - // don't end up forcing the same parent to re-render multiple times. - queueJob(instance.parent.update); - } else if (instance.appContext.reload) { - // root instance mounted via createApp() has a reload method - instance.appContext.reload(); - } else if (typeof window !== 'undefined') { - // root instance inside tree created via raw render(). Force reload. - window.location.reload(); - } else { - console.warn('[HMR] Root or manually mounted instance modified. Full reload required.'); - } - }); - } - - function tryWrap(fn) { - return function (id, arg) { - try { - return fn(id, arg); - } catch (e) { - console.error(e); - console.warn("[HMR] Something went wrong during Vue component hot-reload. " + "Full reload required."); - } - }; - } - - var devtools; - - function setDevtoolsHook(hook) { - devtools = hook; - } - - function devtoolsInitApp(app, version) { - // TODO queue if devtools is undefined - if (!devtools) return; - devtools.emit('app:init' - /* APP_INIT */ - , app, version, { - Fragment, - Text, - Comment: Comment$1, - Static - }); - } - - function devtoolsUnmountApp(app) { - if (!devtools) return; - devtools.emit('app:unmount' - /* APP_UNMOUNT */ - , app); - } - - var devtoolsComponentAdded = /*#__PURE__*/createDevtoolsComponentHook('component:added' - /* COMPONENT_ADDED */ - ); - var devtoolsComponentUpdated = /*#__PURE__*/createDevtoolsComponentHook('component:updated' - /* COMPONENT_UPDATED */ - ); - var devtoolsComponentRemoved = /*#__PURE__*/createDevtoolsComponentHook('component:removed' - /* COMPONENT_REMOVED */ - ); - - function createDevtoolsComponentHook(hook) { - return function (component) { - if (!devtools) return; - devtools.emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component); - }; - } - - var devtoolsPerfStart = /*#__PURE__*/createDevtoolsPerformanceHook('perf:start' - /* PERFORMANCE_START */ - ); - var devtoolsPerfEnd = /*#__PURE__*/createDevtoolsPerformanceHook('perf:end' - /* PERFORMANCE_END */ - ); - - function createDevtoolsPerformanceHook(hook) { - return function (component, type, time) { - if (!devtools) return; - devtools.emit(hook, component.appContext.app, component.uid, component, type, time); - }; - } - - function devtoolsComponentEmit(component, event, params) { - if (!devtools) return; - devtools.emit('component:emit' - /* COMPONENT_EMIT */ - , component.appContext.app, component, event, params); - } - - var globalCompatConfig = { - MODE: 2 - }; - - function getCompatConfigForKey(key, instance) { - var instanceConfig = instance && instance.type.compatConfig; - - if (instanceConfig && key in instanceConfig) { - return instanceConfig[key]; - } - - return globalCompatConfig[key]; - } - - function isCompatEnabled(key, instance) { - var enableForBuiltIn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - // skip compat for built-in components - if (!enableForBuiltIn && instance && instance.type.__isBuiltIn) { - return false; - } - - var rawMode = getCompatConfigForKey('MODE', instance) || 2; - var val = getCompatConfigForKey(key, instance); - var mode = isFunction(rawMode) ? rawMode(instance && instance.type) : rawMode; - - if (mode === 2) { - return val !== false; - } else { - return val === true || val === 'suppress-warning'; - } - } - - function emit(instance, event) { - var props = instance.vnode.props || EMPTY_OBJ; - - for (var _len4 = arguments.length, rawArgs = new Array(_len4 > 2 ? _len4 - 2 : 0), _key5 = 2; _key5 < _len4; _key5++) { - rawArgs[_key5 - 2] = arguments[_key5]; - } - - if (process.env.NODE_ENV !== 'production') { - var emitsOptions = instance.emitsOptions, - _instance$propsOption = _slicedToArray(instance.propsOptions, 1), - propsOptions = _instance$propsOption[0]; - - if (emitsOptions) { - if (!(event in emitsOptions) && !false) { - if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { - warn("Component emitted event \"".concat(event, "\" but it is neither declared in ") + "the emits option nor as an \"".concat(toHandlerKey(event), "\" prop.")); - } - } else { - var validator = emitsOptions[event]; - - if (isFunction(validator)) { - var isValid = validator.apply(void 0, rawArgs); - - if (!isValid) { - warn("Invalid event arguments: event validation failed for event \"".concat(event, "\".")); - } - } - } - } - } - - var args = rawArgs; - var isModelListener = event.startsWith('update:'); // for v-model update:xxx events, apply modifiers on args - - var modelArg = isModelListener && event.slice(7); - - if (modelArg && modelArg in props) { - var modifiersKey = "".concat(modelArg === 'modelValue' ? 'model' : modelArg, "Modifiers"); - - var _ref5 = props[modifiersKey] || EMPTY_OBJ, - number = _ref5.number, - trim = _ref5.trim; - - if (trim) { - args = rawArgs.map(function (a) { - return a.trim(); - }); - } else if (number) { - args = rawArgs.map(toNumber); - } - } - - if (process.env.NODE_ENV !== 'production' || false) { - devtoolsComponentEmit(instance, event, args); - } - - if (process.env.NODE_ENV !== 'production') { - var lowerCaseEvent = event.toLowerCase(); - - if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { - warn("Event \"".concat(lowerCaseEvent, "\" is emitted in component ") + "".concat(formatComponentName(instance, instance.type), " but the handler is registered for \"").concat(event, "\". ") + "Note that HTML attributes are case-insensitive and you cannot use " + "v-on to listen to camelCase events when using in-DOM templates. " + "You should probably use \"".concat(hyphenate(event), "\" instead of \"").concat(event, "\".")); - } - } - - var handlerName; - var handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) - props[handlerName = toHandlerKey(camelize(event))]; // for v-model update:xxx events, also trigger kebab-case equivalent - // for props passed via kebab-case - - if (!handler && isModelListener) { - handler = props[handlerName = toHandlerKey(hyphenate(event))]; - } - - if (handler) { - callWithAsyncErrorHandling(handler, instance, 6 - /* COMPONENT_EVENT_HANDLER */ - , args); - } - - var onceHandler = props[handlerName + "Once"]; - - if (onceHandler) { - if (!instance.emitted) { - instance.emitted = {}; - } else if (instance.emitted[handlerName]) { - return; - } - - instance.emitted[handlerName] = true; - callWithAsyncErrorHandling(onceHandler, instance, 6 - /* COMPONENT_EVENT_HANDLER */ - , args); - } - } - - function normalizeEmitsOptions(comp, appContext) { - var asMixin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var cache = appContext.emitsCache; - var cached = cache.get(comp); - - if (cached !== undefined) { - return cached; - } - - var raw = comp.emits; - var normalized = {}; // apply mixin/extends props - - var hasExtends = false; - - if (!isFunction(comp)) { - var extendEmits = function extendEmits(raw) { - var normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true); - - if (normalizedFromExtend) { - hasExtends = true; - extend(normalized, normalizedFromExtend); - } - }; - - if (!asMixin && appContext.mixins.length) { - appContext.mixins.forEach(extendEmits); - } - - if (comp.extends) { - extendEmits(comp.extends); - } - - if (comp.mixins) { - comp.mixins.forEach(extendEmits); - } - } - - if (!raw && !hasExtends) { - cache.set(comp, null); - return null; - } - - if (isArray(raw)) { - raw.forEach(function (key) { - return normalized[key] = null; - }); - } else { - extend(normalized, raw); - } - - cache.set(comp, normalized); - return normalized; - } // Check if an incoming prop key is a declared emit event listener. - // e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are - // both considered matched listeners. - - - function isEmitListener(options, key) { - if (!options || !isOn(key)) { - return false; - } - - key = key.slice(2).replace(/Once$/, ''); - return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); - } - /** - * mark the current rendering instance for asset resolution (e.g. - * resolveComponent, resolveDirective) during render - */ - - - var currentRenderingInstance = null; - var currentScopeId = null; - /** - * Note: rendering calls maybe nested. The function returns the parent rendering - * instance if present, which should be restored after the render is done: - * - * ```js - * const prev = setCurrentRenderingInstance(i) - * // ...render - * setCurrentRenderingInstance(prev) - * ``` - */ - - function setCurrentRenderingInstance(instance) { - var prev = currentRenderingInstance; - currentRenderingInstance = instance; - currentScopeId = instance && instance.type.__scopeId || null; - return prev; - } - /** - * Set scope id when creating hoisted vnodes. - * @private compiler helper - */ - - - function pushScopeId(id) { - currentScopeId = id; - } - /** - * Technically we no longer need this after 3.0.8 but we need to keep the same - * API for backwards compat w/ code generated by compilers. - * @private - */ - - - function popScopeId() { - currentScopeId = null; - } - /** - * Only for backwards compat - * @private - */ - - - var withScopeId = function withScopeId(_id) { - return withCtx; - }; - /** - * Wrap a slot function to memoize current rendering instance - * @private compiler helper - */ - - - function withCtx(fn) // false only - { - var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : currentRenderingInstance; - var isNonScopedSlot = arguments.length > 2 ? arguments[2] : undefined; - if (!ctx) return fn; // already normalized - - if (fn._n) { - return fn; - } - - var renderFnWithContext = function renderFnWithContext() { - // If a user calls a compiled slot inside a template expression (#1745), it - // can mess up block tracking, so by default we disable block tracking and - // force bail out when invoking a compiled slot (indicated by the ._d flag). - // This isn't necessary if rendering a compiled ``, so we flip the - // ._d flag off when invoking the wrapped fn inside `renderSlot`. - if (renderFnWithContext._d) { - setBlockTracking(-1); - } - - var prevInstance = setCurrentRenderingInstance(ctx); - var res = fn.apply(void 0, arguments); - setCurrentRenderingInstance(prevInstance); - - if (renderFnWithContext._d) { - setBlockTracking(1); - } - - if (process.env.NODE_ENV !== 'production' || false) { - devtoolsComponentUpdated(ctx); - } - - return res; - }; // mark normalized to avoid duplicated wrapping - - - renderFnWithContext._n = true; // mark this as compiled by default - // this is used in vnode.ts -> normalizeChildren() to set the slot - // rendering flag. - - renderFnWithContext._c = true; // disable block tracking by default - - renderFnWithContext._d = true; - return renderFnWithContext; - } - /** - * dev only flag to track whether $attrs was used during render. - * If $attrs was used during render then the warning for failed attrs - * fallthrough can be suppressed. - */ - - - var accessedAttrs = false; - - function markAttrsAccessed() { - accessedAttrs = true; - } - - function renderComponentRoot(instance) { - var Component = instance.type, - vnode = instance.vnode, - proxy = instance.proxy, - withProxy = instance.withProxy, - props = instance.props, - _instance$propsOption2 = _slicedToArray(instance.propsOptions, 1), - propsOptions = _instance$propsOption2[0], - slots = instance.slots, - attrs = instance.attrs, - emit = instance.emit, - render = instance.render, - renderCache = instance.renderCache, - data = instance.data, - setupState = instance.setupState, - ctx = instance.ctx, - inheritAttrs = instance.inheritAttrs; - - var result; - var prev = setCurrentRenderingInstance(instance); - - if (process.env.NODE_ENV !== 'production') { - accessedAttrs = false; - } - - try { - var fallthroughAttrs; - - if (vnode.shapeFlag & 4 - /* STATEFUL_COMPONENT */ - ) { - // withProxy is a proxy with a different `has` trap only for - // runtime-compiled render functions using `with` block. - var proxyToUse = withProxy || proxy; - result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx)); - fallthroughAttrs = attrs; - } else { - // functional - var _render = Component; // in dev, mark attrs accessed if optional props (attrs === props) - - if (process.env.NODE_ENV !== 'production' && attrs === props) { - markAttrsAccessed(); - } - - result = normalizeVNode(_render.length > 1 ? _render(props, process.env.NODE_ENV !== 'production' ? { - get attrs() { - markAttrsAccessed(); - return attrs; - }, - - slots, - emit - } : { - attrs, - slots, - emit - }) : _render(props, null - /* we know it doesn't need it */ - )); - fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); - } // attr merging - // in dev mode, comments are preserved, and it's possible for a template - // to have comments along side the root element which makes it a fragment - - - var root = result; - var setRoot = undefined; - - if (process.env.NODE_ENV !== 'production' && result.patchFlag > 0 && result.patchFlag & 2048 - /* DEV_ROOT_FRAGMENT */ - ) { - ; - - var _getChildRoot = getChildRoot(result); - - var _getChildRoot2 = _slicedToArray(_getChildRoot, 2); - - root = _getChildRoot2[0]; - setRoot = _getChildRoot2[1]; - } - - if (fallthroughAttrs && inheritAttrs !== false) { - var keys = Object.keys(fallthroughAttrs); - var _root = root, - shapeFlag = _root.shapeFlag; - - if (keys.length) { - if (shapeFlag & 1 - /* ELEMENT */ - || shapeFlag & 6 - /* COMPONENT */ - ) { - if (propsOptions && keys.some(isModelListener)) { - // If a v-model listener (onUpdate:xxx) has a corresponding declared - // prop, it indicates this component expects to handle v-model and - // it should not fallthrough. - // related: #1543, #1643, #1989 - fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions); - } - - root = cloneVNode(root, fallthroughAttrs); - } else if (process.env.NODE_ENV !== 'production' && !accessedAttrs && root.type !== Comment$1) { - var allAttrs = Object.keys(attrs); - var eventAttrs = []; - var extraAttrs = []; - - for (var i = 0, l = allAttrs.length; i < l; i++) { - var key = allAttrs[i]; - - if (isOn(key)) { - // ignore v-model handlers when they fail to fallthrough - if (!isModelListener(key)) { - // remove `on`, lowercase first letter to reflect event casing - // accurately - eventAttrs.push(key[2].toLowerCase() + key.slice(3)); - } - } else { - extraAttrs.push(key); - } - } - - if (extraAttrs.length) { - warn("Extraneous non-props attributes (" + "".concat(extraAttrs.join(', '), ") ") + "were passed to component but could not be automatically inherited " + "because component renders fragment or text root nodes."); - } - - if (eventAttrs.length) { - warn("Extraneous non-emits event listeners (" + "".concat(eventAttrs.join(', '), ") ") + "were passed to component but could not be automatically inherited " + "because component renders fragment or text root nodes. " + "If the listener is intended to be a component custom event listener only, " + "declare it using the \"emits\" option."); - } - } - } - } - - if (false && isCompatEnabled('INSTANCE_ATTRS_CLASS_STYLE' - /* INSTANCE_ATTRS_CLASS_STYLE */ - , instance) && vnode.shapeFlag & 4 - /* STATEFUL_COMPONENT */ - && (root.shapeFlag & 1 - /* ELEMENT */ - || root.shapeFlag & 6) - /* COMPONENT */ - ) ; // inherit directives - - if (vnode.dirs) { - if (process.env.NODE_ENV !== 'production' && !isElementRoot(root)) { - warn("Runtime directive used on component with non-element root node. " + "The directives will not function as intended."); - } - - root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; - } // inherit transition data - - - if (vnode.transition) { - if (process.env.NODE_ENV !== 'production' && !isElementRoot(root)) { - warn("Component inside renders non-element root node " + "that cannot be animated."); - } - - root.transition = vnode.transition; - } - - if (process.env.NODE_ENV !== 'production' && setRoot) { - setRoot(root); - } else { - result = root; - } - } catch (err) { - blockStack.length = 0; - handleError(err, instance, 1 - /* RENDER_FUNCTION */ - ); - result = createVNode(Comment$1); - } - - setCurrentRenderingInstance(prev); - return result; - } - /** - * dev only - * In dev mode, template root level comments are rendered, which turns the - * template into a fragment root, but we need to locate the single element - * root for attrs and scope id processing. - */ - - - var getChildRoot = function getChildRoot(vnode) { - var rawChildren = vnode.children; - var dynamicChildren = vnode.dynamicChildren; - var childRoot = filterSingleRoot(rawChildren); - - if (!childRoot) { - return [vnode, undefined]; - } - - var index = rawChildren.indexOf(childRoot); - var dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; - - var setRoot = function setRoot(updatedRoot) { - rawChildren[index] = updatedRoot; - - if (dynamicChildren) { - if (dynamicIndex > -1) { - dynamicChildren[dynamicIndex] = updatedRoot; - } else if (updatedRoot.patchFlag > 0) { - vnode.dynamicChildren = [].concat(_toConsumableArray(dynamicChildren), [updatedRoot]); - } - } - }; - - return [normalizeVNode(childRoot), setRoot]; - }; - - function filterSingleRoot(children) { - var singleRoot; - - for (var i = 0; i < children.length; i++) { - var child = children[i]; - - if (isVNode(child)) { - // ignore user comment - if (child.type !== Comment$1 || child.children === 'v-if') { - if (singleRoot) { - // has more than 1 non-comment child, return now - return; - } else { - singleRoot = child; - } - } - } else { - return; - } - } - - return singleRoot; - } - - var getFunctionalFallthrough = function getFunctionalFallthrough(attrs) { - var res; - - for (var key in attrs) { - if (key === 'class' || key === 'style' || isOn(key)) { - (res || (res = {}))[key] = attrs[key]; - } - } - - return res; - }; - - var filterModelListeners = function filterModelListeners(attrs, props) { - var res = {}; - - for (var key in attrs) { - if (!isModelListener(key) || !(key.slice(9) in props)) { - res[key] = attrs[key]; - } - } - - return res; - }; - - var isElementRoot = function isElementRoot(vnode) { - return vnode.shapeFlag & 6 - /* COMPONENT */ - || vnode.shapeFlag & 1 - /* ELEMENT */ - || vnode.type === Comment$1 // potential v-if branch switch - ; - }; - - function shouldUpdateComponent(prevVNode, nextVNode, optimized) { - var prevProps = prevVNode.props, - prevChildren = prevVNode.children, - component = prevVNode.component; - var nextProps = nextVNode.props, - nextChildren = nextVNode.children, - patchFlag = nextVNode.patchFlag; - var emits = component.emitsOptions; // Parent component's render function was hot-updated. Since this may have - // caused the child component's slots content to have changed, we need to - // force the child to update as well. - - if (process.env.NODE_ENV !== 'production' && (prevChildren || nextChildren) && isHmrUpdating) { - return true; - } // force child update for runtime directive or transition on component vnode. - - - if (nextVNode.dirs || nextVNode.transition) { - return true; - } - - if (optimized && patchFlag >= 0) { - if (patchFlag & 1024 - /* DYNAMIC_SLOTS */ - ) { - // slot content that references values that might have changed, - // e.g. in a v-for - return true; - } - - if (patchFlag & 16 - /* FULL_PROPS */ - ) { - if (!prevProps) { - return !!nextProps; - } // presence of this flag indicates props are always non-null - - - return hasPropsChanged(prevProps, nextProps, emits); - } else if (patchFlag & 8 - /* PROPS */ - ) { - var dynamicProps = nextVNode.dynamicProps; - - for (var i = 0; i < dynamicProps.length; i++) { - var key = dynamicProps[i]; - - if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { - return true; - } - } - } - } else { - // this path is only taken by manually written render functions - // so presence of any children leads to a forced update - if (prevChildren || nextChildren) { - if (!nextChildren || !nextChildren.$stable) { - return true; - } - } - - if (prevProps === nextProps) { - return false; - } - - if (!prevProps) { - return !!nextProps; - } - - if (!nextProps) { - return true; - } - - return hasPropsChanged(prevProps, nextProps, emits); - } - - return false; - } - - function hasPropsChanged(prevProps, nextProps, emitsOptions) { - var nextKeys = Object.keys(nextProps); - - if (nextKeys.length !== Object.keys(prevProps).length) { - return true; - } - - for (var i = 0; i < nextKeys.length; i++) { - var key = nextKeys[i]; - - if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { - return true; - } - } - - return false; - } - - function updateHOCHostEl(_ref6, el // HostNode - ) { - var vnode = _ref6.vnode, - parent = _ref6.parent; - - while (parent && parent.subTree === vnode) { - (vnode = parent.vnode).el = el; - parent = parent.parent; - } - } - - var isSuspense = function isSuspense(type) { - return type.__isSuspense; - }; // Suspense exposes a component-like API, and is treated like a component - // in the compiler, but internally it's a special built-in type that hooks - // directly into the renderer. - - - var SuspenseImpl = { - name: 'Suspense', - // In order to make Suspense tree-shakable, we need to avoid importing it - // directly in the renderer. The renderer checks for the __isSuspense flag - // on a vnode's type and calls the `process` method, passing in renderer - // internals. - __isSuspense: true, - - process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, // platform-specific impl passed from renderer - rendererInternals) { - if (n1 == null) { - mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals); - } else { - patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals); - } - }, - - hydrate: hydrateSuspense, - create: createSuspenseBoundary, - normalize: normalizeSuspenseChildren - }; // Force-casted public typing for h and TSX props inference - - var Suspense = SuspenseImpl; - - function triggerEvent(vnode, name) { - var eventListener = vnode.props && vnode.props[name]; - - if (isFunction(eventListener)) { - eventListener(); - } - } - - function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { - var patch = rendererInternals.p, - createElement = rendererInternals.o.createElement; - var hiddenContainer = createElement('div', container); // fixed by xxxxxx - - var suspense = vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals); // start mounting the content subtree in an off-dom container - - patch(null, suspense.pendingBranch = vnode.ssContent, hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds); // now check if we have encountered any async deps - - if (suspense.deps > 0) { - // has async - // invoke @fallback event - triggerEvent(vnode, 'onPending'); - triggerEvent(vnode, 'onFallback'); // mount the fallback tree - - patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, slotScopeIds); - setActiveBranch(suspense, vnode.ssFallback); - } else { - // Suspense has no async deps. Just resolve. - suspense.resolve(); - } - } - - function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, _ref7) { - var patch = _ref7.p, - unmount = _ref7.um, - createElement = _ref7.o.createElement; - var suspense = n2.suspense = n1.suspense; - suspense.vnode = n2; - n2.el = n1.el; - var newBranch = n2.ssContent; - var newFallback = n2.ssFallback; - var activeBranch = suspense.activeBranch, - pendingBranch = suspense.pendingBranch, - isInFallback = suspense.isInFallback, - isHydrating = suspense.isHydrating; - - if (pendingBranch) { - suspense.pendingBranch = newBranch; - - if (isSameVNodeType(newBranch, pendingBranch)) { - // same root type but content may have changed. - patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); - - if (suspense.deps <= 0) { - suspense.resolve(); - } else if (isInFallback) { - patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, slotScopeIds, optimized); - setActiveBranch(suspense, newFallback); - } - } else { - // toggled before pending tree is resolved - suspense.pendingId++; - - if (isHydrating) { - // if toggled before hydration is finished, the current DOM tree is - // no longer valid. set it as the active branch so it will be unmounted - // when resolved - suspense.isHydrating = false; - suspense.activeBranch = pendingBranch; - } else { - unmount(pendingBranch, parentComponent, suspense); - } // increment pending ID. this is used to invalidate async callbacks - // reset suspense state - - - suspense.deps = 0; // discard effects from pending branch - - suspense.effects.length = 0; // discard previous container - - suspense.hiddenContainer = createElement('div', container); // fixed by xxxxxx - - if (isInFallback) { - // already in fallback state - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); - - if (suspense.deps <= 0) { - suspense.resolve(); - } else { - patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, slotScopeIds, optimized); - setActiveBranch(suspense, newFallback); - } - } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - // toggled "back" to current active branch - patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized); // force resolve - - suspense.resolve(true); - } else { - // switched to a 3rd branch - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); - - if (suspense.deps <= 0) { - suspense.resolve(); - } - } - } - } else { - if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - // root did not change, just normal patch - patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized); - setActiveBranch(suspense, newBranch); - } else { - // root node toggled - // invoke @pending event - triggerEvent(n2, 'onPending'); // mount pending branch in off-dom container - - suspense.pendingBranch = newBranch; - suspense.pendingId++; - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); - - if (suspense.deps <= 0) { - // incoming branch has no async deps, resolve now. - suspense.resolve(); - } else { - var timeout = suspense.timeout, - pendingId = suspense.pendingId; - - if (timeout > 0) { - setTimeout(function () { - if (suspense.pendingId === pendingId) { - suspense.fallback(newFallback); - } - }, timeout); - } else if (timeout === 0) { - suspense.fallback(newFallback); - } - } - } - } - } - - var hasWarned = false; - - function createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals) { - var isHydrating = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : false; - - /* istanbul ignore if */ - if (process.env.NODE_ENV !== 'production' && !false && !hasWarned) { - hasWarned = true; // @ts-ignore `console.info` cannot be null error - - console[console.info ? 'info' : 'log'](" is an experimental feature and its API will likely change."); - } - - var patch = rendererInternals.p, - move = rendererInternals.m, - unmount = rendererInternals.um, - next = rendererInternals.n, - _rendererInternals$o = rendererInternals.o, - parentNode = _rendererInternals$o.parentNode, - remove = _rendererInternals$o.remove; - var timeout = toNumber(vnode.props && vnode.props.timeout); - var suspense = { - vnode, - parent, - parentComponent, - isSVG, - container, - hiddenContainer, - anchor, - deps: 0, - pendingId: 0, - timeout: typeof timeout === 'number' ? timeout : -1, - activeBranch: null, - pendingBranch: null, - isInFallback: true, - isHydrating, - isUnmounted: false, - effects: [], - - resolve() { - var resume = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (process.env.NODE_ENV !== 'production') { - if (!resume && !suspense.pendingBranch) { - throw new Error("suspense.resolve() is called without a pending branch."); - } - - if (suspense.isUnmounted) { - throw new Error("suspense.resolve() is called on an already unmounted suspense boundary."); - } - } - - var vnode = suspense.vnode, - activeBranch = suspense.activeBranch, - pendingBranch = suspense.pendingBranch, - pendingId = suspense.pendingId, - effects = suspense.effects, - parentComponent = suspense.parentComponent, - container = suspense.container; - - if (suspense.isHydrating) { - suspense.isHydrating = false; - } else if (!resume) { - var delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === 'out-in'; - - if (delayEnter) { - activeBranch.transition.afterLeave = function () { - if (pendingId === suspense.pendingId) { - move(pendingBranch, container, _anchor, 0 - /* ENTER */ - ); - } - }; - } // this is initial anchor on mount - - - var _anchor = suspense.anchor; // unmount current active tree - - if (activeBranch) { - // if the fallback tree was mounted, it may have been moved - // as part of a parent suspense. get the latest anchor for insertion - _anchor = next(activeBranch); - unmount(activeBranch, parentComponent, suspense, true); - } - - if (!delayEnter) { - // move content from off-dom container to actual container - move(pendingBranch, container, _anchor, 0 - /* ENTER */ - ); - } - } - - setActiveBranch(suspense, pendingBranch); - suspense.pendingBranch = null; - suspense.isInFallback = false; // flush buffered effects - // check if there is a pending parent suspense - - var parent = suspense.parent; - var hasUnresolvedAncestor = false; - - while (parent) { - if (parent.pendingBranch) { - var _parent$effects; - - // found a pending parent suspense, merge buffered post jobs - // into that parent - (_parent$effects = parent.effects).push.apply(_parent$effects, _toConsumableArray(effects)); - - hasUnresolvedAncestor = true; - break; - } - - parent = parent.parent; - } // no pending parent suspense, flush all jobs - - - if (!hasUnresolvedAncestor) { - queuePostFlushCb(effects); - } - - suspense.effects = []; // invoke @resolve event - - triggerEvent(vnode, 'onResolve'); - }, - - fallback(fallbackVNode) { - if (!suspense.pendingBranch) { - return; - } - - var vnode = suspense.vnode, - activeBranch = suspense.activeBranch, - parentComponent = suspense.parentComponent, - container = suspense.container, - isSVG = suspense.isSVG; // invoke @fallback event - - triggerEvent(vnode, 'onFallback'); - var anchor = next(activeBranch); - - var mountFallback = function mountFallback() { - if (!suspense.isInFallback) { - return; - } // mount the fallback tree - - - patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, slotScopeIds, optimized); - setActiveBranch(suspense, fallbackVNode); - }; - - var delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in'; - - if (delayEnter) { - activeBranch.transition.afterLeave = mountFallback; - } - - suspense.isInFallback = true; // unmount current active branch - - unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now - true // shouldRemove - ); - - if (!delayEnter) { - mountFallback(); - } - }, - - move(container, anchor, type) { - suspense.activeBranch && move(suspense.activeBranch, container, anchor, type); - suspense.container = container; - }, - - next() { - return suspense.activeBranch && next(suspense.activeBranch); - }, - - registerDep(instance, setupRenderEffect) { - var isInPendingSuspense = !!suspense.pendingBranch; - - if (isInPendingSuspense) { - suspense.deps++; - } - - var hydratedEl = instance.vnode.el; - instance.asyncDep.catch(function (err) { - handleError(err, instance, 0 - /* SETUP_FUNCTION */ - ); - }).then(function (asyncSetupResult) { - // retry when the setup() promise resolves. - // component may have been unmounted before resolve. - if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { - return; - } // retry from this component - - - instance.asyncResolved = true; - var vnode = instance.vnode; - - if (process.env.NODE_ENV !== 'production') { - pushWarningContext(vnode); - } - - handleSetupResult(instance, asyncSetupResult, false); - - if (hydratedEl) { - // vnode may have been replaced if an update happened before the - // async dep is resolved. - vnode.el = hydratedEl; - } - - var placeholder = !hydratedEl && instance.subTree.el; - setupRenderEffect(instance, vnode, // component may have been moved before resolve. - // if this is not a hydration, instance.subTree will be the comment - // placeholder. - parentNode(hydratedEl || instance.subTree.el), // anchor will not be used if this is hydration, so only need to - // consider the comment placeholder case. - hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized); - - if (placeholder) { - remove(placeholder); - } - - updateHOCHostEl(instance, vnode.el); - - if (process.env.NODE_ENV !== 'production') { - popWarningContext(); - } // only decrease deps count if suspense is not already resolved - - - if (isInPendingSuspense && --suspense.deps === 0) { - suspense.resolve(); - } - }); - }, - - unmount(parentSuspense, doRemove) { - suspense.isUnmounted = true; - - if (suspense.activeBranch) { - unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove); - } - - if (suspense.pendingBranch) { - unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove); - } - } - - }; - return suspense; - } - - function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) { - /* eslint-disable no-restricted-globals */ - var suspense = vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true - /* hydrating */ - ); // there are two possible scenarios for server-rendered suspense: - // - success: ssr content should be fully resolved - // - failure: ssr content should be the fallback branch. - // however, on the client we don't really know if it has failed or not - // attempt to hydrate the DOM assuming it has succeeded, but we still - // need to construct a suspense boundary first - - var result = hydrateNode(node, suspense.pendingBranch = vnode.ssContent, parentComponent, suspense, slotScopeIds, optimized); - - if (suspense.deps === 0) { - suspense.resolve(); - } - - return result; - /* eslint-enable no-restricted-globals */ - } - - function normalizeSuspenseChildren(vnode) { - var shapeFlag = vnode.shapeFlag, - children = vnode.children; - var isSlotChildren = shapeFlag & 32; - /* SLOTS_CHILDREN */ - - vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children); - vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); - } - - function normalizeSuspenseSlot(s) { - var block; - - if (isFunction(s)) { - var isCompiledSlot = s._c; - - if (isCompiledSlot) { - // disableTracking: false - // allow block tracking for compiled slots - // (see ./componentRenderContext.ts) - s._d = false; - openBlock(); - } - - s = s(); - - if (isCompiledSlot) { - s._d = true; - block = currentBlock; - closeBlock(); - } - } - - if (isArray(s)) { - var singleChild = filterSingleRoot(s); - - if (process.env.NODE_ENV !== 'production' && !singleChild) { - warn(" slots expect a single root node."); - } - - s = singleChild; - } - - s = normalizeVNode(s); - - if (block) { - s.dynamicChildren = block.filter(function (c) { - return c !== s; - }); - } - - return s; - } - - function queueEffectWithSuspense(fn, suspense) { - if (suspense && suspense.pendingBranch) { - if (isArray(fn)) { - var _suspense$effects; - - (_suspense$effects = suspense.effects).push.apply(_suspense$effects, _toConsumableArray(fn)); - } else { - suspense.effects.push(fn); - } - } else { - queuePostFlushCb(fn); - } - } - - function setActiveBranch(suspense, branch) { - suspense.activeBranch = branch; - var vnode = suspense.vnode, - parentComponent = suspense.parentComponent; - var el = vnode.el = branch.el; // in case suspense is the root node of a component, - // recursively update the HOC el - - if (parentComponent && parentComponent.subTree === vnode) { - parentComponent.vnode.el = el; - updateHOCHostEl(parentComponent, el); - } - } - - function provide(key, value) { - if (!currentInstance) { - if (process.env.NODE_ENV !== 'production') { - warn("provide() can only be used inside setup()."); - } - } else { - var provides = currentInstance.provides; // by default an instance inherits its parent's provides object - // but when it needs to provide values of its own, it creates its - // own provides object using parent provides object as prototype. - // this way in `inject` we can simply look up injections from direct - // parent and let the prototype chain do the work. - - var parentProvides = currentInstance.parent && currentInstance.parent.provides; - - if (parentProvides === provides) { - provides = currentInstance.provides = Object.create(parentProvides); - } // TS doesn't allow symbol as index type - - - provides[key] = value; - } - } - - function inject(key, defaultValue) { - var treatDefaultAsFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - // fallback to `currentRenderingInstance` so that this can be called in - // a functional component - var instance = currentInstance || currentRenderingInstance; - - if (instance) { - // #2400 - // to support `app.use` plugins, - // fallback to appContext's `provides` if the intance is at root - var provides = instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides; - - if (provides && key in provides) { - // TS doesn't allow symbol as index type - return provides[key]; - } else if (arguments.length > 1) { - return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance.proxy) : defaultValue; - } else if (process.env.NODE_ENV !== 'production') { - warn("injection \"".concat(String(key), "\" not found.")); - } - } else if (process.env.NODE_ENV !== 'production') { - warn("inject() can only be used inside setup() or functional components."); - } - } // Simple effect. - - - function watchEffect(effect, options) { - return doWatch(effect, null, options); - } // initial value for watchers to trigger on undefined initial values - - - var INITIAL_WATCHER_VALUE = {}; // implementation - - function watch(source, cb, options) { - if (process.env.NODE_ENV !== 'production' && !isFunction(cb)) { - warn("`watch(fn, options?)` signature has been moved to a separate API. " + "Use `watchEffect(fn, options?)` instead. `watch` now only " + "supports `watch(source, cb, options?) signature."); - } - - return doWatch(source, cb, options); - } - - function doWatch(source, cb) { - var _ref8 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJ, - immediate = _ref8.immediate, - deep = _ref8.deep, - flush = _ref8.flush, - onTrack = _ref8.onTrack, - onTrigger = _ref8.onTrigger; - - var instance = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : currentInstance; - - if (process.env.NODE_ENV !== 'production' && !cb) { - if (immediate !== undefined) { - warn("watch() \"immediate\" option is only respected when using the " + "watch(source, callback, options?) signature."); - } - - if (deep !== undefined) { - warn("watch() \"deep\" option is only respected when using the " + "watch(source, callback, options?) signature."); - } - } - - var warnInvalidSource = function warnInvalidSource(s) { - warn("Invalid watch source: ", s, "A watch source can only be a getter/effect function, a ref, " + "a reactive object, or an array of these types."); - }; - - var getter; - var forceTrigger = false; - var isMultiSource = false; - - if (isRef(source)) { - getter = function getter() { - return source.value; - }; - - forceTrigger = !!source._shallow; - } else if (isReactive(source)) { - getter = function getter() { - return source; - }; - - deep = true; - } else if (isArray(source)) { - isMultiSource = true; - forceTrigger = source.some(isReactive); - - getter = function getter() { - return source.map(function (s) { - if (isRef(s)) { - return s.value; - } else if (isReactive(s)) { - return traverse(s); - } else if (isFunction(s)) { - return callWithErrorHandling(s, instance, 2 - /* WATCH_GETTER */ - ); - } else { - process.env.NODE_ENV !== 'production' && warnInvalidSource(s); - } - }); - }; - } else if (isFunction(source)) { - if (cb) { - // getter with cb - getter = function getter() { - return callWithErrorHandling(source, instance, 2 - /* WATCH_GETTER */ - ); - }; - } else { - // no cb -> simple effect - getter = function getter() { - if (instance && instance.isUnmounted) { - return; - } - - if (cleanup) { - cleanup(); - } - - return callWithAsyncErrorHandling(source, instance, 3 - /* WATCH_CALLBACK */ - , [onInvalidate]); - }; - } - } else { - getter = NOOP; - process.env.NODE_ENV !== 'production' && warnInvalidSource(source); - } - - if (cb && deep) { - var baseGetter = getter; - - getter = function getter() { - return traverse(baseGetter()); - }; - } - - var cleanup; - - var onInvalidate = function onInvalidate(fn) { - cleanup = runner.options.onStop = function () { - callWithErrorHandling(fn, instance, 4 - /* WATCH_CLEANUP */ - ); - }; - }; - - var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE; - - var job = function job() { - if (!runner.active) { - return; - } - - if (cb) { - // watch(source, cb) - var newValue = runner(); - - if (deep || forceTrigger || (isMultiSource ? newValue.some(function (v, i) { - return hasChanged(v, oldValue[i]); - }) : hasChanged(newValue, oldValue)) || false) { - // cleanup before running cb again - if (cleanup) { - cleanup(); - } - - callWithAsyncErrorHandling(cb, instance, 3 - /* WATCH_CALLBACK */ - , [newValue, // pass undefined as the old value when it's changed for the first time - oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue, onInvalidate]); - oldValue = newValue; - } - } else { - // watchEffect - runner(); - } - }; // important: mark the job as a watcher callback so that scheduler knows - // it is allowed to self-trigger (#1727) - - - job.allowRecurse = !!cb; - var scheduler; - - if (flush === 'sync') { - scheduler = job; // the scheduler function gets called directly - } else if (flush === 'post') { - scheduler = function scheduler() { - return queuePostRenderEffect(job, instance && instance.suspense); - }; - } else { - // default: 'pre' - scheduler = function scheduler() { - if (!instance || instance.isMounted) { - queuePreFlushCb(job); - } else { - // with 'pre' option, the first call must happen before - // the component is mounted so it is called synchronously. - job(); - } - }; - } - - var runner = effect(getter, { - lazy: true, - onTrack, - onTrigger, - scheduler - }); - recordInstanceBoundEffect(runner, instance); // initial run - - if (cb) { - if (immediate) { - job(); - } else { - oldValue = runner(); - } - } else if (flush === 'post') { - queuePostRenderEffect(runner, instance && instance.suspense); - } else { - runner(); - } - - return function () { - stop(runner); - - if (instance) { - remove(instance.effects, runner); - } - }; - } // this.$watch - - - function instanceWatch(source, value, options) { - var publicThis = this.proxy; - var getter = isString(source) ? source.includes('.') ? createPathGetter(publicThis, source) : function () { - return publicThis[source]; - } : source.bind(publicThis, publicThis); - var cb; - - if (isFunction(value)) { - cb = value; - } else { - cb = value.handler; - options = value; - } - - return doWatch(getter, cb.bind(publicThis), options, this); - } - - function createPathGetter(ctx, path) { - var segments = path.split('.'); - return function () { - var cur = ctx; - - for (var i = 0; i < segments.length && cur; i++) { - cur = cur[segments[i]]; - } - - return cur; - }; - } - - function traverse(value) { - var seen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set(); - - if (!isObject(value) || seen.has(value) || value['__v_skip' - /* SKIP */ - ]) { - return value; - } - - seen.add(value); - - if (isRef(value)) { - traverse(value.value, seen); - } else if (isArray(value)) { - for (var i = 0; i < value.length; i++) { - traverse(value[i], seen); - } - } else if (isSet(value) || isMap(value)) { - value.forEach(function (v) { - traverse(v, seen); - }); - } else if (isPlainObject(value)) { - for (var key in value) { - traverse(value[key], seen); - } - } - - return value; - } - - function useTransitionState() { - var state = { - isMounted: false, - isLeaving: false, - isUnmounting: false, - leavingVNodes: new Map() - }; - onMounted(function () { - state.isMounted = true; - }); - onBeforeUnmount(function () { - state.isUnmounting = true; - }); - return state; - } - - var TransitionHookValidator = [Function, Array]; - var BaseTransitionImpl = { - name: "BaseTransition", - props: { - mode: String, - appear: Boolean, - persisted: Boolean, - // enter - onBeforeEnter: TransitionHookValidator, - onEnter: TransitionHookValidator, - onAfterEnter: TransitionHookValidator, - onEnterCancelled: TransitionHookValidator, - // leave - onBeforeLeave: TransitionHookValidator, - onLeave: TransitionHookValidator, - onAfterLeave: TransitionHookValidator, - onLeaveCancelled: TransitionHookValidator, - // appear - onBeforeAppear: TransitionHookValidator, - onAppear: TransitionHookValidator, - onAfterAppear: TransitionHookValidator, - onAppearCancelled: TransitionHookValidator - }, - - setup(props, _ref9) { - var slots = _ref9.slots; - var instance = getCurrentInstance(); - var state = useTransitionState(); - var prevTransitionKey; - return function () { - var children = slots.default && getTransitionRawChildren(slots.default(), true); - - if (!children || !children.length) { - return; - } // warn multiple elements - - - if (process.env.NODE_ENV !== 'production' && children.length > 1) { - warn(' can only be used on a single element or component. Use ' + ' for lists.'); - } // there's no need to track reactivity for these props so use the raw - // props for a bit better perf - - - var rawProps = toRaw(props); - var mode = rawProps.mode; // check mode - - if (process.env.NODE_ENV !== 'production' && mode && !['in-out', 'out-in', 'default'].includes(mode)) { - warn("invalid mode: ".concat(mode)); - } // at this point children has a guaranteed length of 1. - - - var child = children[0]; - - if (state.isLeaving) { - return emptyPlaceholder(child); - } // in the case of , we need to - // compare the type of the kept-alive children. - - - var innerChild = getKeepAliveChild(child); - - if (!innerChild) { - return emptyPlaceholder(child); - } - - var enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance); - setTransitionHooks(innerChild, enterHooks); - var oldChild = instance.subTree; - var oldInnerChild = oldChild && getKeepAliveChild(oldChild); - var transitionKeyChanged = false; - var getTransitionKey = innerChild.type.getTransitionKey; - - if (getTransitionKey) { - var key = getTransitionKey(); - - if (prevTransitionKey === undefined) { - prevTransitionKey = key; - } else if (key !== prevTransitionKey) { - prevTransitionKey = key; - transitionKeyChanged = true; - } - } // handle mode - - - if (oldInnerChild && oldInnerChild.type !== Comment$1 && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { - var leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance); // update old tree's hooks in case of dynamic transition - - setTransitionHooks(oldInnerChild, leavingHooks); // switching between different views - - if (mode === 'out-in') { - state.isLeaving = true; // return placeholder node and queue update when leave finishes - - leavingHooks.afterLeave = function () { - state.isLeaving = false; - instance.update(); - }; - - return emptyPlaceholder(child); - } else if (mode === 'in-out' && innerChild.type !== Comment$1) { - leavingHooks.delayLeave = function (el, earlyRemove, delayedLeave) { - var leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild); - leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; // early removal callback - - el._leaveCb = function () { - earlyRemove(); - el._leaveCb = undefined; - delete enterHooks.delayedLeave; - }; - - enterHooks.delayedLeave = delayedLeave; - }; - } - } - - return child; - }; - } - - }; // export the public type for h/tsx inference - // also to avoid inline import() in generated d.ts files - - var BaseTransition = BaseTransitionImpl; - - function getLeavingNodesForType(state, vnode) { - var leavingVNodes = state.leavingVNodes; - var leavingVNodesCache = leavingVNodes.get(vnode.type); - - if (!leavingVNodesCache) { - leavingVNodesCache = Object.create(null); - leavingVNodes.set(vnode.type, leavingVNodesCache); - } - - return leavingVNodesCache; - } // The transition hooks are attached to the vnode as vnode.transition - // and will be called at appropriate timing in the renderer. - - - function resolveTransitionHooks(vnode, props, state, instance) { - var appear = props.appear, - mode = props.mode, - _props$persisted = props.persisted, - persisted = _props$persisted === void 0 ? false : _props$persisted, - onBeforeEnter = props.onBeforeEnter, - onEnter = props.onEnter, - onAfterEnter = props.onAfterEnter, - onEnterCancelled = props.onEnterCancelled, - onBeforeLeave = props.onBeforeLeave, - onLeave = props.onLeave, - onAfterLeave = props.onAfterLeave, - onLeaveCancelled = props.onLeaveCancelled, - onBeforeAppear = props.onBeforeAppear, - onAppear = props.onAppear, - onAfterAppear = props.onAfterAppear, - onAppearCancelled = props.onAppearCancelled; - var key = String(vnode.key); - var leavingVNodesCache = getLeavingNodesForType(state, vnode); - - var callHook = function callHook(hook, args) { - hook && callWithAsyncErrorHandling(hook, instance, 9 - /* TRANSITION_HOOK */ - , args); - }; - - var hooks = { - mode, - persisted, - - beforeEnter(el) { - var hook = onBeforeEnter; - - if (!state.isMounted) { - if (appear) { - hook = onBeforeAppear || onBeforeEnter; - } else { - return; - } - } // for same element (v-show) - - - if (el._leaveCb) { - el._leaveCb(true - /* cancelled */ - ); - } // for toggled element with same key (v-if) - - - var leavingVNode = leavingVNodesCache[key]; - - if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) { - // force early removal (not cancelled) - leavingVNode.el._leaveCb(); - } - - callHook(hook, [el]); - }, - - enter(el) { - var hook = onEnter; - var afterHook = onAfterEnter; - var cancelHook = onEnterCancelled; - - if (!state.isMounted) { - if (appear) { - hook = onAppear || onEnter; - afterHook = onAfterAppear || onAfterEnter; - cancelHook = onAppearCancelled || onEnterCancelled; - } else { - return; - } - } - - var called = false; - - var done = el._enterCb = function (cancelled) { - if (called) return; - called = true; - - if (cancelled) { - callHook(cancelHook, [el]); - } else { - callHook(afterHook, [el]); - } - - if (hooks.delayedLeave) { - hooks.delayedLeave(); - } - - el._enterCb = undefined; - }; - - if (hook) { - hook(el, done); - - if (hook.length <= 1) { - done(); - } - } else { - done(); - } - }, - - leave(el, remove) { - var key = String(vnode.key); - - if (el._enterCb) { - el._enterCb(true - /* cancelled */ - ); - } - - if (state.isUnmounting) { - return remove(); - } - - callHook(onBeforeLeave, [el]); - var called = false; - - var done = el._leaveCb = function (cancelled) { - if (called) return; - called = true; - remove(); - - if (cancelled) { - callHook(onLeaveCancelled, [el]); - } else { - callHook(onAfterLeave, [el]); - } - - el._leaveCb = undefined; - - if (leavingVNodesCache[key] === vnode) { - delete leavingVNodesCache[key]; - } - }; - - leavingVNodesCache[key] = vnode; - - if (onLeave) { - onLeave(el, done); - - if (onLeave.length <= 1) { - done(); - } - } else { - done(); - } - }, - - clone(vnode) { - return resolveTransitionHooks(vnode, props, state, instance); - } - - }; - return hooks; - } // the placeholder really only handles one special case: KeepAlive - // in the case of a KeepAlive in a leave phase we need to return a KeepAlive - // placeholder with empty content to avoid the KeepAlive instance from being - // unmounted. - - - function emptyPlaceholder(vnode) { - if (isKeepAlive(vnode)) { - vnode = cloneVNode(vnode); - vnode.children = null; - return vnode; - } - } - - function getKeepAliveChild(vnode) { - return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : undefined : vnode; - } - - function setTransitionHooks(vnode, hooks) { - if (vnode.shapeFlag & 6 - /* COMPONENT */ - && vnode.component) { - setTransitionHooks(vnode.component.subTree, hooks); - } else if (vnode.shapeFlag & 128 - /* SUSPENSE */ - ) { - vnode.ssContent.transition = hooks.clone(vnode.ssContent); - vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); - } else { - vnode.transition = hooks; - } - } - - function getTransitionRawChildren(children) { - var keepComment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var ret = []; - var keyedFragmentCount = 0; - - for (var i = 0; i < children.length; i++) { - var child = children[i]; // handle fragment children case, e.g. v-for - - if (child.type === Fragment) { - if (child.patchFlag & 128 - /* KEYED_FRAGMENT */ - ) keyedFragmentCount++; - ret = ret.concat(getTransitionRawChildren(child.children, keepComment)); - } // comment placeholders should be skipped, e.g. v-if - else if (keepComment || child.type !== Comment$1) { - ret.push(child); - } - } // #1126 if a transition children list contains multiple sub fragments, these - // fragments will be merged into a flat children array. Since each v-for - // fragment may contain different static bindings inside, we need to de-op - // these children to force full diffs to ensure correct behavior. - - - if (keyedFragmentCount > 1) { - for (var _i2 = 0; _i2 < ret.length; _i2++) { - ret[_i2].patchFlag = -2; - /* BAIL */ - } - } - - return ret; - } // implementation, close to no-op - - - function defineComponent(options) { - return isFunction(options) ? { - setup: options, - name: options.name - } : options; - } - - var isAsyncWrapper = function isAsyncWrapper(i) { - return !!i.type.__asyncLoader; - }; - - function defineAsyncComponent(source) { - if (isFunction(source)) { - source = { - loader: source - }; - } - - var _source = source, - loader = _source.loader, - loadingComponent = _source.loadingComponent, - errorComponent = _source.errorComponent, - _source$delay = _source.delay, - delay = _source$delay === void 0 ? 200 : _source$delay, - timeout = _source.timeout, - _source$suspensible = _source.suspensible, - suspensible = _source$suspensible === void 0 ? true : _source$suspensible, - userOnError = _source.onError; - var pendingRequest = null; - var resolvedComp; - var retries = 0; - - var retry = function retry() { - retries++; - pendingRequest = null; - return load(); - }; - - var load = function load() { - var thisRequest; - return pendingRequest || (thisRequest = pendingRequest = loader().catch(function (err) { - err = err instanceof Error ? err : new Error(String(err)); - - if (userOnError) { - return new Promise(function (resolve, reject) { - var userRetry = function userRetry() { - return resolve(retry()); - }; - - var userFail = function userFail() { - return reject(err); - }; - - userOnError(err, userRetry, userFail, retries + 1); - }); - } else { - throw err; - } - }).then(function (comp) { - if (thisRequest !== pendingRequest && pendingRequest) { - return pendingRequest; - } - - if (process.env.NODE_ENV !== 'production' && !comp) { - warn("Async component loader resolved to undefined. " + "If you are using retry(), make sure to return its return value."); - } // interop module default - - - if (comp && (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) { - comp = comp.default; - } - - if (process.env.NODE_ENV !== 'production' && comp && !isObject(comp) && !isFunction(comp)) { - throw new Error("Invalid async component load result: ".concat(comp)); - } - - resolvedComp = comp; - return comp; - })); - }; - - return defineComponent({ - name: 'AsyncComponentWrapper', - __asyncLoader: load, - - get __asyncResolved() { - return resolvedComp; - }, - - setup() { - var instance = currentInstance; // already resolved - - if (resolvedComp) { - return function () { - return createInnerComp(resolvedComp, instance); - }; - } - - var onError = function onError(err) { - pendingRequest = null; - handleError(err, instance, 13 - /* ASYNC_COMPONENT_LOADER */ - , !errorComponent - /* do not throw in dev if user provided error component */ - ); - }; // suspense-controlled or SSR. - - - if (suspensible && instance.suspense || false) { - return load().then(function (comp) { - return function () { - return createInnerComp(comp, instance); - }; - }).catch(function (err) { - onError(err); - return function () { - return errorComponent ? createVNode(errorComponent, { - error: err - }) : null; - }; - }); - } - - var loaded = ref(false); - var error = ref(); - var delayed = ref(!!delay); - - if (delay) { - setTimeout(function () { - delayed.value = false; - }, delay); - } - - if (timeout != null) { - setTimeout(function () { - if (!loaded.value && !error.value) { - var err = new Error("Async component timed out after ".concat(timeout, "ms.")); - onError(err); - error.value = err; - } - }, timeout); - } - - load().then(function () { - loaded.value = true; - - if (instance.parent && isKeepAlive(instance.parent.vnode)) { - // parent is keep-alive, force update so the loaded component's - // name is taken into account - queueJob(instance.parent.update); - } - }).catch(function (err) { - onError(err); - error.value = err; - }); - return function () { - if (loaded.value && resolvedComp) { - return createInnerComp(resolvedComp, instance); - } else if (error.value && errorComponent) { - return createVNode(errorComponent, { - error: error.value - }); - } else if (loadingComponent && !delayed.value) { - return createVNode(loadingComponent); - } - }; - } - - }); - } - - function createInnerComp(comp, _ref10) { - var _ref10$vnode = _ref10.vnode, - ref = _ref10$vnode.ref, - props = _ref10$vnode.props, - children = _ref10$vnode.children; - var vnode = createVNode(comp, props, children); // ensure inner component inherits the async wrapper's ref owner - - vnode.ref = ref; - return vnode; - } - - var isKeepAlive = function isKeepAlive(vnode) { - return vnode.type.__isKeepAlive; - }; - - var KeepAliveImpl = { - name: "KeepAlive", - // Marker for special handling inside the renderer. We are not using a === - // check directly on KeepAlive in the renderer, because importing it directly - // would prevent it from being tree-shaken. - __isKeepAlive: true, - props: { - include: [String, RegExp, Array], - exclude: [String, RegExp, Array], - max: [String, Number] - }, - - setup(props, _ref11) { - var slots = _ref11.slots; - var instance = getCurrentInstance(); // KeepAlive communicates with the instantiated renderer via the - // ctx where the renderer passes in its internals, - // and the KeepAlive instance exposes activate/deactivate implementations. - // The whole point of this is to avoid importing KeepAlive directly in the - // renderer to facilitate tree-shaking. - - var sharedContext = instance.ctx; // if the internal renderer is not registered, it indicates that this is server-side rendering, - // for KeepAlive, we just need to render its children - - if (!sharedContext.renderer) { - return slots.default; - } - - var cache = new Map(); - var keys = new Set(); - var current = null; - - if (process.env.NODE_ENV !== 'production' || false) { - instance.__v_cache = cache; - } - - var parentSuspense = instance.suspense; - var _sharedContext$render = sharedContext.renderer, - patch = _sharedContext$render.p, - move = _sharedContext$render.m, - _unmount = _sharedContext$render.um, - createElement = _sharedContext$render.o.createElement; - var storageContainer = createElement('div', null); // fixed by xxxxx - - sharedContext.activate = function (vnode, container, anchor, isSVG, optimized) { - var instance = vnode.component; - move(vnode, container, anchor, 0 - /* ENTER */ - , parentSuspense); // in case props have changed - - patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized); - queuePostRenderEffect(function () { - instance.isDeactivated = false; - - if (instance.a) { - invokeArrayFns(instance.a); - } - - var vnodeHook = vnode.props && vnode.props.onVnodeMounted; - - if (vnodeHook) { - invokeVNodeHook(vnodeHook, instance.parent, vnode); - } - }, parentSuspense); - - if (process.env.NODE_ENV !== 'production' || false) { - // Update components tree - devtoolsComponentAdded(instance); - } - }; - - sharedContext.deactivate = function (vnode) { - var instance = vnode.component; - move(vnode, storageContainer, null, 1 - /* LEAVE */ - , parentSuspense); - queuePostRenderEffect(function () { - if (instance.da) { - invokeArrayFns(instance.da); - } - - var vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; - - if (vnodeHook) { - invokeVNodeHook(vnodeHook, instance.parent, vnode); - } - - instance.isDeactivated = true; - }, parentSuspense); - - if (process.env.NODE_ENV !== 'production' || false) { - // Update components tree - devtoolsComponentAdded(instance); - } - }; - - function unmount(vnode) { - // reset the shapeFlag so it can be properly unmounted - resetShapeFlag(vnode); - - _unmount(vnode, instance, parentSuspense); - } - - function pruneCache(filter) { - cache.forEach(function (vnode, key) { - var name = getComponentName(vnode.type); - - if (name && (!filter || !filter(name))) { - pruneCacheEntry(key); - } - }); - } - - function pruneCacheEntry(key) { - var cached = cache.get(key); - - if (!current || cached.type !== current.type) { - unmount(cached); - } else if (current) { - // current active instance should no longer be kept-alive. - // we can't unmount it now but it might be later, so reset its flag now. - resetShapeFlag(current); - } - - cache.delete(key); - keys.delete(key); - } // prune cache on include/exclude prop change - - - watch(function () { - return [props.include, props.exclude]; - }, function (_ref12) { - var _ref13 = _slicedToArray(_ref12, 2), - include = _ref13[0], - exclude = _ref13[1]; - - include && pruneCache(function (name) { - return matches(include, name); - }); - exclude && pruneCache(function (name) { - return !matches(exclude, name); - }); - }, // prune post-render after `current` has been updated - { - flush: 'post', - deep: true - }); // cache sub tree after render - - var pendingCacheKey = null; - - var cacheSubtree = function cacheSubtree() { - // fix #1621, the pendingCacheKey could be 0 - if (pendingCacheKey != null) { - cache.set(pendingCacheKey, getInnerChild(instance.subTree)); - } - }; - - onMounted(cacheSubtree); - onUpdated(cacheSubtree); - onBeforeUnmount(function () { - cache.forEach(function (cached) { - var subTree = instance.subTree, - suspense = instance.suspense; - var vnode = getInnerChild(subTree); - - if (cached.type === vnode.type) { - // current instance will be unmounted as part of keep-alive's unmount - resetShapeFlag(vnode); // but invoke its deactivated hook here - - var da = vnode.component.da; - da && queuePostRenderEffect(da, suspense); - return; - } - - unmount(cached); - }); - }); - return function () { - pendingCacheKey = null; - - if (!slots.default) { - return null; - } - - var children = slots.default(); - var rawVNode = children[0]; - - if (children.length > 1) { - if (process.env.NODE_ENV !== 'production') { - warn("KeepAlive should contain exactly one component child."); - } - - current = null; - return children; - } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { - current = null; - return rawVNode; - } - - var vnode = getInnerChild(rawVNode); - var comp = vnode.type; // for async components, name check should be based in its loaded - // inner component if available - - var name = getComponentName(isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp); - var include = props.include, - exclude = props.exclude, - max = props.max; - - if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { - current = vnode; - return rawVNode; - } - - var key = vnode.key == null ? comp : vnode.key; - var cachedVNode = cache.get(key); // clone vnode if it's reused because we are going to mutate it - - if (vnode.el) { - vnode = cloneVNode(vnode); - - if (rawVNode.shapeFlag & 128 - /* SUSPENSE */ - ) { - rawVNode.ssContent = vnode; - } - } // #1513 it's possible for the returned vnode to be cloned due to attr - // fallthrough or scopeId, so the vnode here may not be the final vnode - // that is mounted. Instead of caching it directly, we store the pending - // key and cache `instance.subTree` (the normalized vnode) in - // beforeMount/beforeUpdate hooks. - - - pendingCacheKey = key; - - if (cachedVNode) { - // copy over mounted state - vnode.el = cachedVNode.el; - vnode.component = cachedVNode.component; - - if (vnode.transition) { - // recursively update transition hooks on subTree - setTransitionHooks(vnode, vnode.transition); - } // avoid vnode being mounted as fresh - - - vnode.shapeFlag |= 512; - /* COMPONENT_KEPT_ALIVE */ - // make this key the freshest - - keys.delete(key); - keys.add(key); - } else { - keys.add(key); // prune oldest entry - - if (max && keys.size > parseInt(max, 10)) { - pruneCacheEntry(keys.values().next().value); - } - } // avoid vnode being unmounted - - - vnode.shapeFlag |= 256; - /* COMPONENT_SHOULD_KEEP_ALIVE */ - - current = vnode; - return rawVNode; - }; - } - - }; // export the public type for h/tsx inference - // also to avoid inline import() in generated d.ts files - - var KeepAlive = KeepAliveImpl; - - function matches(pattern, name) { - if (isArray(pattern)) { - return pattern.some(function (p) { - return matches(p, name); - }); - } else if (isString(pattern)) { - return pattern.split(',').indexOf(name) > -1; - } else if (pattern.test) { - return pattern.test(name); - } - /* istanbul ignore next */ - - - return false; - } - - function onActivated(hook, target) { - registerKeepAliveHook(hook, 'a' - /* ACTIVATED */ - , target); - } - - function onDeactivated(hook, target) { - registerKeepAliveHook(hook, 'da' - /* DEACTIVATED */ - , target); - } - - function registerKeepAliveHook(hook, type) { - var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentInstance; - - // cache the deactivate branch check wrapper for injected hooks so the same - // hook can be properly deduped by the scheduler. "__wdc" stands for "with - // deactivation check". - var wrappedHook = hook.__wdc || (hook.__wdc = function () { - // only fire the hook if the target instance is NOT in a deactivated branch. - var current = target; - - while (current) { - if (current.isDeactivated) { - return; - } - - current = current.parent; - } - - hook(); - }); - - injectHook(type, wrappedHook, target); // In addition to registering it on the target instance, we walk up the parent - // chain and register it on all ancestor instances that are keep-alive roots. - // This avoids the need to walk the entire component tree when invoking these - // hooks, and more importantly, avoids the need to track child components in - // arrays. - - if (target) { - var current = target.parent; - - while (current && current.parent) { - if (isKeepAlive(current.parent.vnode)) { - injectToKeepAliveRoot(wrappedHook, type, target, current); - } - - current = current.parent; - } - } - } - - function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { - // injectHook wraps the original for error handling, so make sure to remove - // the wrapped version. - var injected = injectHook(type, hook, keepAliveRoot, true - /* prepend */ - ); - onUnmounted(function () { - remove(keepAliveRoot[type], injected); - }, target); - } - - function resetShapeFlag(vnode) { - var shapeFlag = vnode.shapeFlag; - - if (shapeFlag & 256 - /* COMPONENT_SHOULD_KEEP_ALIVE */ - ) { - shapeFlag -= 256; - /* COMPONENT_SHOULD_KEEP_ALIVE */ - } - - if (shapeFlag & 512 - /* COMPONENT_KEPT_ALIVE */ - ) { - shapeFlag -= 512; - /* COMPONENT_KEPT_ALIVE */ - } - - vnode.shapeFlag = shapeFlag; - } - - function getInnerChild(vnode) { - return vnode.shapeFlag & 128 - /* SUSPENSE */ - ? vnode.ssContent : vnode; - } - - function injectHook(type, hook) { - var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentInstance; - var prepend = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - - if (target) { - var hooks = target[type] || (target[type] = []); // cache the error handling wrapper for injected hooks so the same hook - // can be properly deduped by the scheduler. "__weh" stands for "with error - // handling". - - var wrappedHook = hook.__weh || (hook.__weh = function () { - if (target.isUnmounted) { - return; - } // disable tracking inside all lifecycle hooks - // since they can potentially be called inside effects. - - - pauseTracking(); // Set currentInstance during hook invocation. - // This assumes the hook does not synchronously trigger other hooks, which - // can only be false when the user does something really funky. - - setCurrentInstance(target); - - for (var _len5 = arguments.length, args = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) { - args[_key6] = arguments[_key6]; - } - - var res = callWithAsyncErrorHandling(hook, target, type, args); - setCurrentInstance(null); - resetTracking(); - return res; - }); - - if (prepend) { - hooks.unshift(wrappedHook); - } else { - hooks.push(wrappedHook); - } - - return wrappedHook; - } else if (process.env.NODE_ENV !== 'production') { - var apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, '')); - warn("".concat(apiName, " is called when there is no active component instance to be ") + "associated with. " + "Lifecycle injection APIs can only be used during execution of setup()." + (" If you are using async setup(), make sure to register lifecycle " + "hooks before the first await statement.")); - } - } - - var createHook = function createHook(lifecycle) { - return function (hook) { - var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : currentInstance; - return (// post-create lifecycle registrations are noops during SSR (except for serverPrefetch) - (!isInSSRComponentSetup || lifecycle === 'sp') && - /* SERVER_PREFETCH */ - injectHook(lifecycle, hook, target) - ); - }; - }; - - var onBeforeMount = createHook('bm' - /* BEFORE_MOUNT */ - ); - var onMounted = createHook('m' - /* MOUNTED */ - ); - var onBeforeUpdate = createHook('bu' - /* BEFORE_UPDATE */ - ); - var onUpdated = createHook('u' - /* UPDATED */ - ); - var onBeforeUnmount = createHook('bum' - /* BEFORE_UNMOUNT */ - ); - var onUnmounted = createHook('um' - /* UNMOUNTED */ - ); - var onServerPrefetch = createHook('sp' - /* SERVER_PREFETCH */ - ); - var onRenderTriggered = createHook('rtg' - /* RENDER_TRIGGERED */ - ); - var onRenderTracked = createHook('rtc' - /* RENDER_TRACKED */ - ); - - function onErrorCaptured(hook) { - var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : currentInstance; - injectHook('ec' - /* ERROR_CAPTURED */ - , hook, target); - } - - function createDuplicateChecker() { - var cache = Object.create(null); - return function (type, key) { - if (cache[key]) { - warn("".concat(type, " property \"").concat(key, "\" is already defined in ").concat(cache[key], ".")); - } else { - cache[key] = type; - } - }; - } - - var shouldCacheAccess = true; - - function applyOptions(instance) { - var options = resolveMergedOptions(instance); - var publicThis = instance.proxy; - var ctx = instance.ctx; // fixed by xxxxxx - - var customApplyOptions = instance.appContext.config.globalProperties.$applyOptions; - - if (customApplyOptions) { - customApplyOptions(options, instance, publicThis); - } // do not cache property access on public proxy during state initialization - - - shouldCacheAccess = false; // call beforeCreate first before accessing other options since - // the hook may mutate resolved options (#2791) - - if (options.beforeCreate) { - callHook(options.beforeCreate, instance, 'bc' - /* BEFORE_CREATE */ - ); - } - - var dataOptions = options.data, - computedOptions = options.computed, - methods = options.methods, - watchOptions = options.watch, - provideOptions = options.provide, - injectOptions = options.inject, - created = options.created, - beforeMount = options.beforeMount, - mounted = options.mounted, - beforeUpdate = options.beforeUpdate, - updated = options.updated, - activated = options.activated, - deactivated = options.deactivated, - beforeDestroy = options.beforeDestroy, - beforeUnmount = options.beforeUnmount, - destroyed = options.destroyed, - unmounted = options.unmounted, - render = options.render, - renderTracked = options.renderTracked, - renderTriggered = options.renderTriggered, - errorCaptured = options.errorCaptured, - serverPrefetch = options.serverPrefetch, - expose = options.expose, - inheritAttrs = options.inheritAttrs, - components = options.components, - directives = options.directives, - filters = options.filters; - var checkDuplicateProperties = process.env.NODE_ENV !== 'production' ? createDuplicateChecker() : null; - - if (process.env.NODE_ENV !== 'production') { - var _instance$propsOption3 = _slicedToArray(instance.propsOptions, 1), - propsOptions = _instance$propsOption3[0]; - - if (propsOptions) { - for (var key in propsOptions) { - checkDuplicateProperties('Props' - /* PROPS */ - , key); - } - } - } // options initialization order (to be consistent with Vue 2): - // - props (already done outside of this function) - // - inject - // - methods - // - data (deferred since it relies on `this` access) - // - computed - // - watch (deferred since it relies on `this` access) - - - if (injectOptions) { - resolveInjections(injectOptions, ctx, checkDuplicateProperties); - } - - if (methods) { - for (var _key7 in methods) { - var methodHandler = methods[_key7]; - - if (isFunction(methodHandler)) { - // In dev mode, we use the `createRenderContext` function to define methods to the proxy target, - // and those are read-only but reconfigurable, so it needs to be redefined here - if (process.env.NODE_ENV !== 'production') { - Object.defineProperty(ctx, _key7, { - value: methodHandler.bind(publicThis), - configurable: true, - enumerable: true, - writable: true - }); - } else { - ctx[_key7] = methodHandler.bind(publicThis); - } - - if (process.env.NODE_ENV !== 'production') { - checkDuplicateProperties('Methods' - /* METHODS */ - , _key7); - } - } else if (process.env.NODE_ENV !== 'production') { - warn("Method \"".concat(_key7, "\" has type \"").concat(typeof methodHandler, "\" in the component definition. ") + "Did you reference the function correctly?"); - } - } - } - - if (dataOptions) { - (function () { - if (process.env.NODE_ENV !== 'production' && !isFunction(dataOptions)) { - warn("The data option must be a function. " + "Plain object usage is no longer supported."); - } - - var data = dataOptions.call(publicThis, publicThis); - - if (process.env.NODE_ENV !== 'production' && isPromise(data)) { - warn("data() returned a Promise - note data() cannot be async; If you " + "intend to perform data fetching before component renders, use " + "async setup() + ."); - } - - if (!isObject(data)) { - process.env.NODE_ENV !== 'production' && warn("data() should return an object."); - } else { - instance.data = reactive(data); - - if (process.env.NODE_ENV !== 'production') { - var _loop = function _loop(_key8) { - checkDuplicateProperties('Data' - /* DATA */ - , _key8); // expose data on ctx during dev - - if (_key8[0] !== '$' && _key8[0] !== '_') { - Object.defineProperty(ctx, _key8, { - configurable: true, - enumerable: true, - get: function get() { - return data[_key8]; - }, - set: NOOP - }); - } - }; - - for (var _key8 in data) { - _loop(_key8); - } - } - } - })(); - } // state initialization complete at this point - start caching access - - - shouldCacheAccess = true; - - if (computedOptions) { - var _loop2 = function _loop2(_key9) { - var opt = computedOptions[_key9]; - var get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP; - - if (process.env.NODE_ENV !== 'production' && get === NOOP) { - warn("Computed property \"".concat(_key9, "\" has no getter.")); - } - - var set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : process.env.NODE_ENV !== 'production' ? function () { - warn("Write operation failed: computed property \"".concat(_key9, "\" is readonly.")); - } : NOOP; - var c = computed$1({ - get, - set - }); - Object.defineProperty(ctx, _key9, { - enumerable: true, - configurable: true, - get: function get() { - return c.value; - }, - set: function set(v) { - return c.value = v; - } - }); - - if (process.env.NODE_ENV !== 'production') { - checkDuplicateProperties('Computed' - /* COMPUTED */ - , _key9); - } - }; - - for (var _key9 in computedOptions) { - _loop2(_key9); - } - } - - if (watchOptions) { - for (var _key10 in watchOptions) { - createWatcher(watchOptions[_key10], ctx, publicThis, _key10); - } - } - - if (provideOptions) { - var provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; - Reflect.ownKeys(provides).forEach(function (key) { - provide(key, provides[key]); - }); - } - - if (created) { - callHook(created, instance, 'c' - /* CREATED */ - ); - } - - function registerLifecycleHook(register, hook) { - if (isArray(hook)) { - hook.forEach(function (_hook) { - return register(_hook.bind(publicThis)); - }); - } else if (hook) { - register(hook.bind(publicThis)); - } - } - - registerLifecycleHook(onBeforeMount, beforeMount); - registerLifecycleHook(onMounted, mounted); - registerLifecycleHook(onBeforeUpdate, beforeUpdate); - registerLifecycleHook(onUpdated, updated); - registerLifecycleHook(onActivated, activated); - registerLifecycleHook(onDeactivated, deactivated); - registerLifecycleHook(onErrorCaptured, errorCaptured); - registerLifecycleHook(onRenderTracked, renderTracked); - registerLifecycleHook(onRenderTriggered, renderTriggered); - registerLifecycleHook(onBeforeUnmount, beforeUnmount); - registerLifecycleHook(onUnmounted, unmounted); - registerLifecycleHook(onServerPrefetch, serverPrefetch); - - if (isArray(expose)) { - if (expose.length) { - var exposed = instance.exposed || (instance.exposed = {}); - expose.forEach(function (key) { - Object.defineProperty(exposed, key, { - get: function get() { - return publicThis[key]; - }, - set: function set(val) { - return publicThis[key] = val; - } - }); - }); - } else if (!instance.exposed) { - instance.exposed = {}; - } - } // options that are handled when creating the instance but also need to be - // applied from mixins - - - if (render && instance.render === NOOP) { - instance.render = render; - } - - if (inheritAttrs != null) { - instance.inheritAttrs = inheritAttrs; - } // asset options. - - - if (components) instance.components = components; - if (directives) instance.directives = directives; - } - - function resolveInjections(injectOptions, ctx) { - var checkDuplicateProperties = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NOOP; - - if (isArray(injectOptions)) { - injectOptions = normalizeInject(injectOptions); - } - - for (var key in injectOptions) { - var opt = injectOptions[key]; - - if (isObject(opt)) { - if ('default' in opt) { - ctx[key] = inject(opt.from || key, opt.default, true - /* treat default function as factory */ - ); - } else { - ctx[key] = inject(opt.from || key); - } - } else { - ctx[key] = inject(opt); - } - - if (process.env.NODE_ENV !== 'production') { - checkDuplicateProperties('Inject' - /* INJECT */ - , key); - } - } - } - - function callHook(hook, instance, type) { - callWithAsyncErrorHandling(isArray(hook) ? hook.map(function (h) { - return h.bind(instance.proxy); - }) : hook.bind(instance.proxy), instance, type); - } - - function createWatcher(raw, ctx, publicThis, key) { - var getter = key.includes('.') ? createPathGetter(publicThis, key) : function () { - return publicThis[key]; - }; - - if (isString(raw)) { - var handler = ctx[raw]; - - if (isFunction(handler)) { - watch(getter, handler); - } else if (process.env.NODE_ENV !== 'production') { - warn("Invalid watch handler specified by key \"".concat(raw, "\""), handler); - } - } else if (isFunction(raw)) { - watch(getter, raw.bind(publicThis)); - } else if (isObject(raw)) { - if (isArray(raw)) { - raw.forEach(function (r) { - return createWatcher(r, ctx, publicThis, key); - }); - } else { - var _handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; - - if (isFunction(_handler)) { - watch(getter, _handler, raw); - } else if (process.env.NODE_ENV !== 'production') { - warn("Invalid watch handler specified by key \"".concat(raw.handler, "\""), _handler); - } - } - } else if (process.env.NODE_ENV !== 'production') { - warn("Invalid watch option: \"".concat(key, "\""), raw); - } - } - /** - * Resolve merged options and cache it on the component. - * This is done only once per-component since the merging does not involve - * instances. - */ - - - function resolveMergedOptions(instance) { - var base = instance.type; - var mixins = base.mixins, - extendsOptions = base.extends; - var _instance$appContext = instance.appContext, - globalMixins = _instance$appContext.mixins, - cache = _instance$appContext.optionsCache, - optionMergeStrategies = _instance$appContext.config.optionMergeStrategies; - var cached = cache.get(base); - var resolved; - - if (cached) { - resolved = cached; - } else if (!globalMixins.length && !mixins && !extendsOptions) { - { - resolved = base; - } - } else { - resolved = {}; - - if (globalMixins.length) { - globalMixins.forEach(function (m) { - return mergeOptions(resolved, m, optionMergeStrategies, true); - }); - } - - mergeOptions(resolved, base, optionMergeStrategies); - } - - cache.set(base, resolved); - return resolved; - } - - function mergeOptions(to, from, strats) { - var asMixin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - var mixins = from.mixins, - extendsOptions = from.extends; - - if (extendsOptions) { - mergeOptions(to, extendsOptions, strats, true); - } - - if (mixins) { - mixins.forEach(function (m) { - return mergeOptions(to, m, strats, true); - }); - } - - for (var key in from) { - if (asMixin && key === 'expose') { - process.env.NODE_ENV !== 'production' && warn("\"expose\" option is ignored when declared in mixins or extends. " + "It should only be declared in the base component itself."); - } else { - var strat = internalOptionMergeStrats[key] || strats && strats[key]; - to[key] = strat ? strat(to[key], from[key]) : from[key]; - } - } - - return to; - } - - var internalOptionMergeStrats = { - data: mergeDataFn, - props: mergeObjectOptions, - emits: mergeObjectOptions, - // objects - methods: mergeObjectOptions, - computed: mergeObjectOptions, - // lifecycle - beforeCreate: mergeAsArray, - created: mergeAsArray, - beforeMount: mergeAsArray, - mounted: mergeAsArray, - beforeUpdate: mergeAsArray, - updated: mergeAsArray, - beforeDestroy: mergeAsArray, - destroyed: mergeAsArray, - activated: mergeAsArray, - deactivated: mergeAsArray, - errorCaptured: mergeAsArray, - serverPrefetch: mergeAsArray, - // assets - components: mergeObjectOptions, - directives: mergeObjectOptions, - // watch - watch: mergeWatchOptions, - // provide / inject - provide: mergeDataFn, - inject: mergeInject - }; - - function mergeDataFn(to, from) { - if (!from) { - return to; - } - - if (!to) { - return from; - } - - return function mergedDataFn() { - return extend(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from); - }; - } - - function mergeInject(to, from) { - return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); - } - - function normalizeInject(raw) { - if (isArray(raw)) { - var res = {}; - - for (var i = 0; i < raw.length; i++) { - res[raw[i]] = raw[i]; - } - - return res; - } - - return raw; - } - - function mergeAsArray(to, from) { - return to ? _toConsumableArray(new Set([].concat(to, from))) : from; - } - - function mergeObjectOptions(to, from) { - return to ? extend(extend(Object.create(null), to), from) : from; - } - - function mergeWatchOptions(to, from) { - if (!to) return from; - if (!from) return to; - var merged = extend(Object.create(null), to); - - for (var key in from) { - merged[key] = mergeAsArray(to[key], from[key]); - } - - return merged; - } - - function initProps(instance, rawProps, isStateful) { - var isSSR = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - var props = {}; - var attrs = {}; - def(attrs, InternalObjectKey, 1); - instance.propsDefaults = Object.create(null); - setFullProps(instance, rawProps, props, attrs); // ensure all declared prop keys are present - - for (var key in instance.propsOptions[0]) { - if (!(key in props)) { - props[key] = undefined; - } - } // validation - - - if (process.env.NODE_ENV !== 'production') { - validateProps(rawProps || {}, props, instance); - } - - if (isStateful) { - // stateful - instance.props = isSSR ? props : shallowReactive(props); - } else { - if (!instance.type.props) { - // functional w/ optional props, props === attrs - instance.props = attrs; - } else { - // functional w/ declared props - instance.props = props; - } - } - - instance.attrs = attrs; - } - - function updateProps(instance, rawProps, rawPrevProps, optimized) { - var props = instance.props, - attrs = instance.attrs, - patchFlag = instance.vnode.patchFlag; - var rawCurrentProps = toRaw(props); - - var _instance$propsOption4 = _slicedToArray(instance.propsOptions, 1), - options = _instance$propsOption4[0]; - - var hasAttrsChanged = false; - - if ( // always force full diff in dev - // - #1942 if hmr is enabled with sfc component - // - vite#872 non-sfc component used by sfc component - !(process.env.NODE_ENV !== 'production' && (instance.type.__hmrId || instance.parent && instance.parent.type.__hmrId)) && (optimized || patchFlag > 0) && !(patchFlag & 16)) { - if (patchFlag & 8 - /* PROPS */ - ) { - // Compiler-generated props & no keys change, just set the updated - // the props. - var propsToUpdate = instance.vnode.dynamicProps; - - for (var i = 0; i < propsToUpdate.length; i++) { - var key = propsToUpdate[i]; // PROPS flag guarantees rawProps to be non-null - - var value = rawProps[key]; - - if (options) { - // attr / props separation was done on init and will be consistent - // in this code path, so just check if attrs have it. - if (hasOwn(attrs, key)) { - if (value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } else { - var camelizedKey = camelize(key); - props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false - /* isAbsent */ - ); - } - } else { - if (value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } - } - } - } else { - // full props update. - if (setFullProps(instance, rawProps, props, attrs)) { - hasAttrsChanged = true; - } // in case of dynamic props, check if we need to delete keys from - // the props object - - - var kebabKey; - - for (var _key11 in rawCurrentProps) { - if (!rawProps || // for camelCase - !hasOwn(rawProps, _key11) && ( // it's possible the original props was passed in as kebab-case - // and converted to camelCase (#955) - (kebabKey = hyphenate(_key11)) === _key11 || !hasOwn(rawProps, kebabKey))) { - if (options) { - if (rawPrevProps && ( // for camelCase - rawPrevProps[_key11] !== undefined || // for kebab-case - rawPrevProps[kebabKey] !== undefined)) { - props[_key11] = resolvePropValue(options, rawCurrentProps, _key11, undefined, instance, true - /* isAbsent */ - ); - } - } else { - delete props[_key11]; - } - } - } // in the case of functional component w/o props declaration, props and - // attrs point to the same object so it should already have been updated. - - - if (attrs !== rawCurrentProps) { - for (var _key12 in attrs) { - if (!rawProps || !hasOwn(rawProps, _key12)) { - delete attrs[_key12]; - hasAttrsChanged = true; - } - } - } - } // trigger updates for $attrs in case it's used in component slots - - - if (hasAttrsChanged) { - trigger(instance, 'set' - /* SET */ - , '$attrs'); - } - - if (process.env.NODE_ENV !== 'production') { - validateProps(rawProps || {}, props, instance); - } - } - - function setFullProps(instance, rawProps, props, attrs) { - var _instance$propsOption5 = _slicedToArray(instance.propsOptions, 2), - options = _instance$propsOption5[0], - needCastKeys = _instance$propsOption5[1]; - - var hasAttrsChanged = false; - var rawCastValues; - - if (rawProps) { - for (var key in rawProps) { - // key, ref are reserved and never passed down - if (isReservedProp(key)) { - continue; - } - - var value = rawProps[key]; // prop option names are camelized during normalization, so to support - // kebab -> camel conversion here we need to camelize the key. - - var camelKey = void 0; - - if (options && hasOwn(options, camelKey = camelize(key))) { - if (!needCastKeys || !needCastKeys.includes(camelKey)) { - props[camelKey] = value; - } else { - (rawCastValues || (rawCastValues = {}))[camelKey] = value; - } - } else if (!isEmitListener(instance.emitsOptions, key)) { - if (value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } - } - } - - if (needCastKeys) { - var rawCurrentProps = toRaw(props); - var castValues = rawCastValues || EMPTY_OBJ; - - for (var i = 0; i < needCastKeys.length; i++) { - var _key13 = needCastKeys[i]; - props[_key13] = resolvePropValue(options, rawCurrentProps, _key13, castValues[_key13], instance, !hasOwn(castValues, _key13)); - } - } - - return hasAttrsChanged; - } - - function resolvePropValue(options, props, key, value, instance, isAbsent) { - var opt = options[key]; - - if (opt != null) { - var hasDefault = hasOwn(opt, 'default'); // default values - - if (hasDefault && value === undefined) { - var defaultValue = opt.default; - - if (opt.type !== Function && isFunction(defaultValue)) { - var propsDefaults = instance.propsDefaults; - - if (key in propsDefaults) { - value = propsDefaults[key]; - } else { - setCurrentInstance(instance); - value = propsDefaults[key] = defaultValue.call(null, props); - setCurrentInstance(null); - } - } else { - value = defaultValue; - } - } // boolean casting - - - if (opt[0 - /* shouldCast */ - ]) { - if (isAbsent && !hasDefault) { - value = false; - } else if (opt[1 - /* shouldCastTrue */ - ] && (value === '' || value === hyphenate(key))) { - value = true; - } - } - } - - return value; - } - - function normalizePropsOptions(comp, appContext) { - var asMixin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var cache = appContext.propsCache; - var cached = cache.get(comp); - - if (cached) { - return cached; - } - - var raw = comp.props; - var normalized = {}; - var needCastKeys = []; // apply mixin/extends props - - var hasExtends = false; - - if (!isFunction(comp)) { - var extendProps = function extendProps(raw) { - hasExtends = true; - - var _normalizePropsOption = normalizePropsOptions(raw, appContext, true), - _normalizePropsOption2 = _slicedToArray(_normalizePropsOption, 2), - props = _normalizePropsOption2[0], - keys = _normalizePropsOption2[1]; - - extend(normalized, props); - if (keys) needCastKeys.push.apply(needCastKeys, _toConsumableArray(keys)); - }; - - if (!asMixin && appContext.mixins.length) { - appContext.mixins.forEach(extendProps); - } - - if (comp.extends) { - extendProps(comp.extends); - } - - if (comp.mixins) { - comp.mixins.forEach(extendProps); - } - } - - if (!raw && !hasExtends) { - cache.set(comp, EMPTY_ARR); - return EMPTY_ARR; - } - - if (isArray(raw)) { - for (var i = 0; i < raw.length; i++) { - if (process.env.NODE_ENV !== 'production' && !isString(raw[i])) { - warn("props must be strings when using array syntax.", raw[i]); - } - - var normalizedKey = camelize(raw[i]); - - if (validatePropName(normalizedKey)) { - normalized[normalizedKey] = EMPTY_OBJ; - } - } - } else if (raw) { - if (process.env.NODE_ENV !== 'production' && !isObject(raw)) { - warn("invalid props options", raw); - } - - for (var key in raw) { - var _normalizedKey = camelize(key); - - if (validatePropName(_normalizedKey)) { - var opt = raw[key]; - var prop = normalized[_normalizedKey] = isArray(opt) || isFunction(opt) ? { - type: opt - } : opt; - - if (prop) { - var booleanIndex = getTypeIndex(Boolean, prop.type); - var stringIndex = getTypeIndex(String, prop.type); - prop[0 - /* shouldCast */ - ] = booleanIndex > -1; - prop[1 - /* shouldCastTrue */ - ] = stringIndex < 0 || booleanIndex < stringIndex; // if the prop needs boolean casting or default value - - if (booleanIndex > -1 || hasOwn(prop, 'default')) { - needCastKeys.push(_normalizedKey); - } - } - } - } - } - - var res = [normalized, needCastKeys]; - cache.set(comp, res); - return res; - } - - function validatePropName(key) { - if (key[0] !== '$') { - return true; - } else if (process.env.NODE_ENV !== 'production') { - warn("Invalid prop name: \"".concat(key, "\" is a reserved property.")); - } - - return false; - } // use function string name to check type constructors - // so that it works across vms / iframes. - - - function getType(ctor) { - var match = ctor && ctor.toString().match(/^\s*function (\w+)/); - return match ? match[1] : ''; - } - - function isSameType(a, b) { - return getType(a) === getType(b); - } - - function getTypeIndex(type, expectedTypes) { - if (isArray(expectedTypes)) { - return expectedTypes.findIndex(function (t) { - return isSameType(t, type); - }); - } else if (isFunction(expectedTypes)) { - return isSameType(expectedTypes, type) ? 0 : -1; - } - - return -1; - } - /** - * dev only - */ - - - function validateProps(rawProps, props, instance) { - var resolvedValues = toRaw(props); - var options = instance.propsOptions[0]; - - for (var key in options) { - var opt = options[key]; - if (opt == null) continue; - validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))); - } - } - /** - * dev only - */ - - - function validateProp(name, value, prop, isAbsent) { - var type = prop.type, - required = prop.required, - validator = prop.validator; // required! - - if (required && isAbsent) { - warn('Missing required prop: "' + name + '"'); - return; - } // missing but optional - - - if (value == null && !prop.required) { - return; - } // type check - - - if (type != null && type !== true) { - var isValid = false; - var types = isArray(type) ? type : [type]; - var expectedTypes = []; // value is valid as long as one of the specified types match - - for (var i = 0; i < types.length && !isValid; i++) { - var _assertType = assertType(value, types[i]), - valid = _assertType.valid, - expectedType = _assertType.expectedType; - - expectedTypes.push(expectedType || ''); - isValid = valid; - } - - if (!isValid) { - warn(getInvalidTypeMessage(name, value, expectedTypes)); - return; - } - } // custom validator - - - if (validator && !validator(value)) { - warn('Invalid prop: custom validator check failed for prop "' + name + '".'); - } - } - - var isSimpleType = /*#__PURE__*/makeMap('String,Number,Boolean,Function,Symbol,BigInt'); - /** - * dev only - */ - - function assertType(value, type) { - var valid; - var expectedType = getType(type); - - if (isSimpleType(expectedType)) { - var t = typeof value; - valid = t === expectedType.toLowerCase(); // for primitive wrapper objects - - if (!valid && t === 'object') { - valid = value instanceof type; - } - } else if (expectedType === 'Object') { - valid = isObject(value); - } else if (expectedType === 'Array') { - valid = isArray(value); - } else { - valid = value instanceof type; - } - - return { - valid, - expectedType - }; - } - /** - * dev only - */ - - - function getInvalidTypeMessage(name, value, expectedTypes) { - var message = "Invalid prop: type check failed for prop \"".concat(name, "\".") + " Expected ".concat(expectedTypes.map(capitalize).join(', ')); - var expectedType = expectedTypes[0]; - var receivedType = toRawType(value); - var expectedValue = styleValue(value, expectedType); - var receivedValue = styleValue(value, receivedType); // check if we need to specify expected value - - if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) { - message += " with value ".concat(expectedValue); - } - - message += ", got ".concat(receivedType, " "); // check if we need to specify received value - - if (isExplicable(receivedType)) { - message += "with value ".concat(receivedValue, "."); - } - - return message; - } - /** - * dev only - */ - - - function styleValue(value, type) { - if (type === 'String') { - return "\"".concat(value, "\""); - } else if (type === 'Number') { - return "".concat(Number(value)); - } else { - return "".concat(value); - } - } - /** - * dev only - */ - - - function isExplicable(type) { - var explicitTypes = ['string', 'number', 'boolean']; - return explicitTypes.some(function (elem) { - return type.toLowerCase() === elem; - }); - } - /** - * dev only - */ - - - function isBoolean() { - for (var _len6 = arguments.length, args = new Array(_len6), _key14 = 0; _key14 < _len6; _key14++) { - args[_key14] = arguments[_key14]; - } - - return args.some(function (elem) { - return elem.toLowerCase() === 'boolean'; - }); - } - - var isInternalKey = function isInternalKey(key) { - return key[0] === '_' || key === '$stable'; - }; - - var normalizeSlotValue = function normalizeSlotValue(value) { - return isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; - }; - - var normalizeSlot = function normalizeSlot(key, rawSlot, ctx) { - var normalized = withCtx(function (props) { - if (process.env.NODE_ENV !== 'production' && currentInstance) { - warn("Slot \"".concat(key, "\" invoked outside of the render function: ") + "this will not track dependencies used in the slot. " + "Invoke the slot function inside the render function instead."); - } - - return normalizeSlotValue(rawSlot(props)); - }, ctx); - normalized._c = false; - return normalized; - }; - - var normalizeObjectSlots = function normalizeObjectSlots(rawSlots, slots, instance) { - var ctx = rawSlots._ctx; - - for (var key in rawSlots) { - if (isInternalKey(key)) continue; - var value = rawSlots[key]; - - if (isFunction(value)) { - slots[key] = normalizeSlot(key, value, ctx); - } else if (value != null) { - (function () { - if (process.env.NODE_ENV !== 'production' && !false) { - warn("Non-function value encountered for slot \"".concat(key, "\". ") + "Prefer function slots for better performance."); - } - - var normalized = normalizeSlotValue(value); - - slots[key] = function () { - return normalized; - }; - })(); - } - } - }; - - var normalizeVNodeSlots = function normalizeVNodeSlots(instance, children) { - if (process.env.NODE_ENV !== 'production' && !isKeepAlive(instance.vnode) && !false) { - warn("Non-function value encountered for default slot. " + "Prefer function slots for better performance."); - } - - var normalized = normalizeSlotValue(children); - - instance.slots.default = function () { - return normalized; - }; - }; - - var initSlots = function initSlots(instance, children) { - if (instance.vnode.shapeFlag & 32 - /* SLOTS_CHILDREN */ - ) { - var type = children._; - - if (type) { - // users can get the shallow readonly version of the slots object through `this.$slots`, - // we should avoid the proxy object polluting the slots of the internal instance - instance.slots = toRaw(children); // make compiler marker non-enumerable - - def(children, '_', type); - } else { - normalizeObjectSlots(children, instance.slots = {}); - } - } else { - instance.slots = {}; - - if (children) { - normalizeVNodeSlots(instance, children); - } - } - - def(instance.slots, InternalObjectKey, 1); - }; - - var updateSlots = function updateSlots(instance, children, optimized) { - var vnode = instance.vnode, - slots = instance.slots; - var needDeletionCheck = true; - var deletionComparisonTarget = EMPTY_OBJ; - - if (vnode.shapeFlag & 32 - /* SLOTS_CHILDREN */ - ) { - var type = children._; - - if (type) { - // compiled slots. - if (process.env.NODE_ENV !== 'production' && isHmrUpdating) { - // Parent was HMR updated so slot content may have changed. - // force update slots and mark instance for hmr as well - extend(slots, children); - } else if (optimized && type === 1 - /* STABLE */ - ) { - // compiled AND stable. - // no need to update, and skip stale slots removal. - needDeletionCheck = false; - } else { - // compiled but dynamic (v-if/v-for on slots) - update slots, but skip - // normalization. - extend(slots, children); // #2893 - // when rendering the optimized slots by manually written render function, - // we need to delete the `slots._` flag if necessary to make subsequent updates reliable, - // i.e. let the `renderSlot` create the bailed Fragment - - if (!optimized && type === 1 - /* STABLE */ - ) { - delete slots._; - } - } - } else { - needDeletionCheck = !children.$stable; - normalizeObjectSlots(children, slots); - } - - deletionComparisonTarget = children; - } else if (children) { - // non slot object children (direct value) passed to a component - normalizeVNodeSlots(instance, children); - deletionComparisonTarget = { - default: 1 - }; - } // delete stale slots - - - if (needDeletionCheck) { - for (var key in slots) { - if (!isInternalKey(key) && !(key in deletionComparisonTarget)) { - delete slots[key]; - } - } - } - }; - /** - Runtime helper for applying directives to a vnode. Example usage: - - const comp = resolveComponent('comp') - const foo = resolveDirective('foo') - const bar = resolveDirective('bar') - - return withDirectives(h(comp), [ - [foo, this.x], - [bar, this.y] - ]) - */ - - - var isBuiltInDirective = /*#__PURE__*/makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text'); - - function validateDirectiveName(name) { - if (isBuiltInDirective(name)) { - warn('Do not use built-in directive ids as custom directive id: ' + name); - } - } - /** - * Adds directives to a VNode. - */ - - - function withDirectives(vnode, directives) { - var internalInstance = currentRenderingInstance; - - if (internalInstance === null) { - process.env.NODE_ENV !== 'production' && warn("withDirectives can only be used inside render functions."); - return vnode; - } - - var instance = internalInstance.proxy; - var bindings = vnode.dirs || (vnode.dirs = []); - - for (var i = 0; i < directives.length; i++) { - var _directives$i = _slicedToArray(directives[i], 4), - dir = _directives$i[0], - value = _directives$i[1], - arg = _directives$i[2], - _directives$i$ = _directives$i[3], - modifiers = _directives$i$ === void 0 ? EMPTY_OBJ : _directives$i$; - - if (isFunction(dir)) { - dir = { - mounted: dir, - updated: dir - }; - } - - bindings.push({ - dir, - instance, - value, - oldValue: void 0, - arg, - modifiers - }); - } - - return vnode; - } - - function invokeDirectiveHook(vnode, prevVNode, instance, name) { - var bindings = vnode.dirs; - var oldBindings = prevVNode && prevVNode.dirs; - - for (var i = 0; i < bindings.length; i++) { - var binding = bindings[i]; - - if (oldBindings) { - binding.oldValue = oldBindings[i].value; - } - - var hook = binding.dir[name]; - - if (hook) { - // disable tracking inside all lifecycle hooks - // since they can potentially be called inside effects. - pauseTracking(); - callWithAsyncErrorHandling(hook, instance, 8 - /* DIRECTIVE_HOOK */ - , [vnode.el, binding, vnode, prevVNode]); - resetTracking(); - } - } - } - - function createAppContext() { - return { - app: null, - config: { - isNativeTag: NO, - performance: false, - globalProperties: {}, - optionMergeStrategies: {}, - errorHandler: undefined, - warnHandler: undefined, - compilerOptions: {} - }, - mixins: [], - components: {}, - directives: {}, - provides: Object.create(null), - optionsCache: new WeakMap(), - propsCache: new WeakMap(), - emitsCache: new WeakMap() - }; - } - - var uid$1 = 0; - - function createAppAPI(render, hydrate) { - return function createApp(rootComponent) { - var rootProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - if (rootProps != null && !isObject(rootProps)) { - process.env.NODE_ENV !== 'production' && warn("root props passed to app.mount() must be an object."); - rootProps = null; - } - - var context = createAppContext(); - var installedPlugins = new Set(); - var isMounted = false; - var app = context.app = { - _uid: uid$1++, - _component: rootComponent, - _props: rootProps, - _container: null, - _context: context, - _instance: null, - version, - - get config() { - return context.config; - }, - - set config(v) { - if (process.env.NODE_ENV !== 'production') { - warn("app.config cannot be replaced. Modify individual options instead."); - } - }, - - use(plugin) { - for (var _len7 = arguments.length, options = new Array(_len7 > 1 ? _len7 - 1 : 0), _key15 = 1; _key15 < _len7; _key15++) { - options[_key15 - 1] = arguments[_key15]; - } - - if (installedPlugins.has(plugin)) { - process.env.NODE_ENV !== 'production' && warn("Plugin has already been applied to target app."); - } else if (plugin && isFunction(plugin.install)) { - installedPlugins.add(plugin); - plugin.install.apply(plugin, [app].concat(options)); - } else if (isFunction(plugin)) { - installedPlugins.add(plugin); - plugin.apply(void 0, [app].concat(options)); - } else if (process.env.NODE_ENV !== 'production') { - warn("A plugin must either be a function or an object with an \"install\" " + "function."); - } - - return app; - }, - - mixin(mixin) { - { - if (!context.mixins.includes(mixin)) { - context.mixins.push(mixin); - } else if (process.env.NODE_ENV !== 'production') { - warn('Mixin has already been applied to target app' + (mixin.name ? ": ".concat(mixin.name) : '')); - } - } - return app; - }, - - component(name, component) { - if (process.env.NODE_ENV !== 'production') { - validateComponentName(name, context.config); - } - - if (!component) { - return context.components[name]; - } - - if (process.env.NODE_ENV !== 'production' && context.components[name]) { - warn("Component \"".concat(name, "\" has already been registered in target app.")); - } - - context.components[name] = component; - return app; - }, - - directive(name, directive) { - if (process.env.NODE_ENV !== 'production') { - validateDirectiveName(name); - } - - if (!directive) { - return context.directives[name]; - } - - if (process.env.NODE_ENV !== 'production' && context.directives[name]) { - warn("Directive \"".concat(name, "\" has already been registered in target app.")); - } - - context.directives[name] = directive; - return app; - }, - - mount(rootContainer, isHydrate, isSVG) { - if (!isMounted) { - var vnode = createVNode(rootComponent, rootProps); // store app context on the root VNode. - // this will be set on the root instance on initial mount. - - vnode.appContext = context; // HMR root reload - - if (process.env.NODE_ENV !== 'production') { - context.reload = function () { - render(cloneVNode(vnode), rootContainer, isSVG); - }; - } - - if (isHydrate && hydrate) { - hydrate(vnode, rootContainer); - } else { - render(vnode, rootContainer, isSVG); - } - - isMounted = true; - app._container = rootContainer; - rootContainer.__vue_app__ = app; - - if (process.env.NODE_ENV !== 'production' || false) { - app._instance = vnode.component; - devtoolsInitApp(app, version); - } - - return vnode.component.proxy; - } else if (process.env.NODE_ENV !== 'production') { - warn("App has already been mounted.\n" + "If you want to remount the same app, move your app creation logic " + "into a factory function and create fresh app instances for each " + "mount - e.g. `const createMyApp = () => createApp(App)`"); - } - }, - - unmount() { - if (isMounted) { - render(null, app._container); - - if (process.env.NODE_ENV !== 'production' || false) { - app._instance = null; - devtoolsUnmountApp(app); - } - - delete app._container.__vue_app__; - } else if (process.env.NODE_ENV !== 'production') { - warn("Cannot unmount an app that is not mounted."); - } - }, - - provide(key, value) { - if (process.env.NODE_ENV !== 'production' && key in context.provides) { - warn("App already provides property with key \"".concat(String(key), "\". ") + "It will be overwritten with the new value."); - } // TypeScript doesn't allow symbols as index type - // https://github.com/Microsoft/TypeScript/issues/24587 - - - context.provides[key] = value; - return app; - } - - }; - return app; - }; - } - - var hasMismatch = false; - - var isSVGContainer = function isSVGContainer(container) { - return /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject'; - }; - - var isComment = function isComment(node) { - return node.nodeType === 8; - }; - /* COMMENT */ - // Note: hydration is DOM-specific - // But we have to place it in core due to tight coupling with core - splitting - // it out creates a ton of unnecessary complexity. - // Hydration also depends on some renderer internal logic which needs to be - // passed in via arguments. - - - function createHydrationFunctions(rendererInternals) { - var mountComponent = rendererInternals.mt, - patch = rendererInternals.p, - _rendererInternals$o2 = rendererInternals.o, - patchProp = _rendererInternals$o2.patchProp, - nextSibling = _rendererInternals$o2.nextSibling, - parentNode = _rendererInternals$o2.parentNode, - remove = _rendererInternals$o2.remove, - insert = _rendererInternals$o2.insert, - createComment = _rendererInternals$o2.createComment; - - var hydrate = function hydrate(vnode, container) { - if (process.env.NODE_ENV !== 'production' && !container.hasChildNodes()) { - warn("Attempting to hydrate existing markup but container is empty. " + "Performing full mount instead."); - patch(null, vnode, container); - return; - } - - hasMismatch = false; - hydrateNode(container.firstChild, vnode, null, null, null); - flushPostFlushCbs(); - - if (hasMismatch && !false) { - // this error should show up in production - console.error("Hydration completed but contains mismatches."); - } - }; - - var hydrateNode = function hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds) { - var optimized = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; - var isFragmentStart = isComment(node) && node.data === '['; - - var onMismatch = function onMismatch() { - return handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart); - }; - - var type = vnode.type, - ref = vnode.ref, - shapeFlag = vnode.shapeFlag; - var domType = node.nodeType; - vnode.el = node; - var nextNode = null; - - switch (type) { - case Text: - if (domType !== 3 - /* TEXT */ - ) { - nextNode = onMismatch(); - } else { - if (node.data !== vnode.children) { - hasMismatch = true; - process.env.NODE_ENV !== 'production' && warn("Hydration text mismatch:" + "\n- Client: ".concat(JSON.stringify(node.data)) + "\n- Server: ".concat(JSON.stringify(vnode.children))); - node.data = vnode.children; - } - - nextNode = nextSibling(node); - } - - break; - - case Comment$1: - if (domType !== 8 - /* COMMENT */ - || isFragmentStart) { - nextNode = onMismatch(); - } else { - nextNode = nextSibling(node); - } - - break; - - case Static: - if (domType !== 1 - /* ELEMENT */ - ) { - nextNode = onMismatch(); - } else { - // determine anchor, adopt content - nextNode = node; // if the static vnode has its content stripped during build, - // adopt it from the server-rendered HTML. - - var needToAdoptContent = !vnode.children.length; - - for (var i = 0; i < vnode.staticCount; i++) { - if (needToAdoptContent) vnode.children += nextNode.outerHTML; - - if (i === vnode.staticCount - 1) { - vnode.anchor = nextNode; - } - - nextNode = nextSibling(nextNode); - } - - return nextNode; - } - - break; - - case Fragment: - if (!isFragmentStart) { - nextNode = onMismatch(); - } else { - nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized); - } - - break; - - default: - if (shapeFlag & 1 - /* ELEMENT */ - ) { - if (domType !== 1 - /* ELEMENT */ - || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) { - nextNode = onMismatch(); - } else { - nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized); - } - } else if (shapeFlag & 6 - /* COMPONENT */ - ) { - // when setting up the render effect, if the initial vnode already - // has .el set, the component will perform hydration instead of mount - // on its sub-tree. - vnode.slotScopeIds = slotScopeIds; - var container = parentNode(node); - mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized); // component may be async, so in the case of fragments we cannot rely - // on component's rendered output to determine the end of the fragment - // instead, we do a lookahead to find the end anchor node. - - nextNode = isFragmentStart ? locateClosingAsyncAnchor(node) : nextSibling(node); // #3787 - // if component is async, it may get moved / unmounted before its - // inner component is loaded, so we need to give it a placeholder - // vnode that matches its adopted DOM. - - if (isAsyncWrapper(vnode)) { - var subTree; - - if (isFragmentStart) { - subTree = createVNode(Fragment); - subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; - } else { - subTree = node.nodeType === 3 ? createTextVNode('') : createVNode('div'); - } - - subTree.el = node; - vnode.component.subTree = subTree; - } - } else if (shapeFlag & 64 - /* TELEPORT */ - ) { - if (domType !== 8 - /* COMMENT */ - ) { - nextNode = onMismatch(); - } else { - nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren); - } - } else if (shapeFlag & 128 - /* SUSPENSE */ - ) { - nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode); - } else if (process.env.NODE_ENV !== 'production') { - warn('Invalid HostVNode type:', type, "(".concat(typeof type, ")")); - } - - } - - if (ref != null) { - setRef(ref, null, parentSuspense, vnode); - } - - return nextNode; - }; - - var hydrateElement = function hydrateElement(el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) { - optimized = optimized || !!vnode.dynamicChildren; - var props = vnode.props, - patchFlag = vnode.patchFlag, - shapeFlag = vnode.shapeFlag, - dirs = vnode.dirs; // skip props & children if this is hoisted static nodes - - if (patchFlag !== -1 - /* HOISTED */ - ) { - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, 'created'); - } // props - - - if (props) { - if (!optimized || patchFlag & 16 - /* FULL_PROPS */ - || patchFlag & 32 - /* HYDRATE_EVENTS */ - ) { - for (var key in props) { - if (!isReservedProp(key) && isOn(key)) { - patchProp(el, key, null, props[key]); - } - } - } else if (props.onClick) { - // Fast path for click listeners (which is most often) to avoid - // iterating through props. - patchProp(el, 'onClick', null, props.onClick); - } - } // vnode / directive hooks - - - var vnodeHooks; - - if (vnodeHooks = props && props.onVnodeBeforeMount) { - invokeVNodeHook(vnodeHooks, parentComponent, vnode); - } - - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount'); - } - - if ((vnodeHooks = props && props.onVnodeMounted) || dirs) { - queueEffectWithSuspense(function () { - vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); - dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted'); - }, parentSuspense); - } // children - - - if (shapeFlag & 16 - /* ARRAY_CHILDREN */ - && // skip if element has innerHTML / textContent - !(props && (props.innerHTML || props.textContent))) { - var next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized); - var _hasWarned = false; - - while (next) { - hasMismatch = true; - - if (process.env.NODE_ENV !== 'production' && !_hasWarned) { - warn("Hydration children mismatch in <".concat(vnode.type, ">: ") + "server rendered element contains more child nodes than client vdom."); - _hasWarned = true; - } // The SSRed DOM contains more nodes than it should. Remove them. - - - var cur = next; - next = next.nextSibling; - remove(cur); - } - } else if (shapeFlag & 8 - /* TEXT_CHILDREN */ - ) { - if (el.textContent !== vnode.children) { - hasMismatch = true; - process.env.NODE_ENV !== 'production' && warn("Hydration text content mismatch in <".concat(vnode.type, ">:\n") + "- Client: ".concat(el.textContent, "\n") + "- Server: ".concat(vnode.children)); - el.textContent = vnode.children; - } - } - } - - return el.nextSibling; - }; - - var hydrateChildren = function hydrateChildren(node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) { - optimized = optimized || !!parentVNode.dynamicChildren; - var children = parentVNode.children; - var l = children.length; - var hasWarned = false; - - for (var i = 0; i < l; i++) { - var vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); - - if (node) { - node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized); - } else if (vnode.type === Text && !vnode.children) { - continue; - } else { - hasMismatch = true; - - if (process.env.NODE_ENV !== 'production' && !hasWarned) { - warn("Hydration children mismatch in <".concat(container.tagName.toLowerCase(), ">: ") + "server rendered element contains fewer child nodes than client vdom."); - hasWarned = true; - } // the SSRed DOM didn't contain enough nodes. Mount the missing ones. - - - patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds); - } - } - - return node; - }; - - var hydrateFragment = function hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) { - var fragmentSlotScopeIds = vnode.slotScopeIds; - - if (fragmentSlotScopeIds) { - slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; - } - - var container = parentNode(node); - var next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized); - - if (next && isComment(next) && next.data === ']') { - return nextSibling(vnode.anchor = next); - } else { - // fragment didn't hydrate successfully, since we didn't get a end anchor - // back. This should have led to node/children mismatch warnings. - hasMismatch = true; // since the anchor is missing, we need to create one and insert it - - insert(vnode.anchor = createComment("]", container), container, next); // fixed by xxxxxx - - return next; - } - }; - - var handleMismatch = function handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) { - hasMismatch = true; - process.env.NODE_ENV !== 'production' && warn("Hydration node mismatch:\n- Client vnode:", vnode.type, "\n- Server rendered DOM:", node, node.nodeType === 3 - /* TEXT */ - ? "(text)" : isComment(node) && node.data === '[' ? "(start of fragment)" : ""); - vnode.el = null; - - if (isFragment) { - // remove excessive fragment nodes - var end = locateClosingAsyncAnchor(node); - - while (true) { - var _next = nextSibling(node); - - if (_next && _next !== end) { - remove(_next); - } else { - break; - } - } - } - - var next = nextSibling(node); - var container = parentNode(node); - remove(node); - patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds); - return next; - }; - - var locateClosingAsyncAnchor = function locateClosingAsyncAnchor(node) { - var match = 0; - - while (node) { - node = nextSibling(node); - - if (node && isComment(node)) { - if (node.data === '[') match++; - - if (node.data === ']') { - if (match === 0) { - return nextSibling(node); - } else { - match--; - } - } - } - } - - return node; - }; - - return [hydrate, hydrateNode]; - } - - var supported; - var perf; - - function startMeasure(instance, type) { - if (instance.appContext.config.performance && isSupported()) { - perf.mark("vue-".concat(type, "-").concat(instance.uid)); - } - - if (process.env.NODE_ENV !== 'production' || false) { - devtoolsPerfStart(instance, type, supported ? perf.now() : Date.now()); - } - } - - function endMeasure(instance, type) { - if (instance.appContext.config.performance && isSupported()) { - var startTag = "vue-".concat(type, "-").concat(instance.uid); - var endTag = startTag + ":end"; - perf.mark(endTag); - perf.measure("<".concat(formatComponentName(instance, instance.type), "> ").concat(type), startTag, endTag); - perf.clearMarks(startTag); - perf.clearMarks(endTag); - } - - if (process.env.NODE_ENV !== 'production' || false) { - devtoolsPerfEnd(instance, type, supported ? perf.now() : Date.now()); - } - } - - function isSupported() { - if (supported !== undefined) { - return supported; - } - /* eslint-disable no-restricted-globals */ - - - if (typeof window !== 'undefined' && window.performance) { - supported = true; - perf = window.performance; - } else { - supported = false; - } - /* eslint-enable no-restricted-globals */ - - - return supported; - } - /** - * This is only called in esm-bundler builds. - * It is called when a renderer is created, in `baseCreateRenderer` so that - * importing runtime-core is side-effects free. - * - * istanbul-ignore-next - */ - - - function initFeatureFlags() { - var needWarn = false; - - if (process.env.NODE_ENV !== 'production' && needWarn) { - console.warn("You are running the esm-bundler build of Vue. It is recommended to " + "configure your bundler to explicitly replace feature flag globals " + "with boolean literals to get proper tree-shaking in the final bundle. " + "See http://link.vuejs.org/feature-flags for more details."); - } - } - - var prodEffectOptions = { - scheduler: queueJob, - // #1801, #2043 component render effects should allow recursive updates - allowRecurse: true - }; - - function createDevEffectOptions(instance) { - return { - scheduler: queueJob, - allowRecurse: true, - onTrack: instance.rtc ? function (e) { - return invokeArrayFns(instance.rtc, e); - } : void 0, - onTrigger: instance.rtg ? function (e) { - return invokeArrayFns(instance.rtg, e); - } : void 0 - }; - } - - var queuePostRenderEffect = queueEffectWithSuspense; - - var setRef = function setRef(rawRef, oldRawRef, parentSuspense, vnode) { - var isUnmount = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - - if (isArray(rawRef)) { - rawRef.forEach(function (r, i) { - return setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount); - }); - return; - } - - if (isAsyncWrapper(vnode) && !isUnmount) { - // when mounting async components, nothing needs to be done, - // because the template ref is forwarded to inner component - return; - } - - var refValue = vnode.shapeFlag & 4 - /* STATEFUL_COMPONENT */ - ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el; - var value = isUnmount ? null : refValue; - var owner = rawRef.i, - ref = rawRef.r; - - if (process.env.NODE_ENV !== 'production' && !owner) { - warn("Missing ref owner context. ref cannot be used on hoisted vnodes. " + "A vnode with ref must be created inside the render function."); - return; - } - - var oldRef = oldRawRef && oldRawRef.r; - var refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs; - var setupState = owner.setupState; // dynamic ref changed. unset old ref - - if (oldRef != null && oldRef !== ref) { - if (isString(oldRef)) { - refs[oldRef] = null; - - if (hasOwn(setupState, oldRef)) { - setupState[oldRef] = null; - } - } else if (isRef(oldRef)) { - oldRef.value = null; - } - } - - if (isString(ref)) { - var doSet = function doSet() { - { - refs[ref] = value; - } - - if (hasOwn(setupState, ref)) { - setupState[ref] = value; - } - }; // #1789: for non-null values, set them after render - // null values means this is unmount and it should not overwrite another - // ref with the same key - - - if (value) { - doSet.id = -1; - queuePostRenderEffect(doSet, parentSuspense); - } else { - doSet(); - } - } else if (isRef(ref)) { - var _doSet = function _doSet() { - ref.value = value; - }; - - if (value) { - _doSet.id = -1; - queuePostRenderEffect(_doSet, parentSuspense); - } else { - _doSet(); - } - } else if (isFunction(ref)) { - callWithErrorHandling(ref, owner, 12 - /* FUNCTION_REF */ - , [value, refs]); - } else if (process.env.NODE_ENV !== 'production') { - warn('Invalid template ref type:', value, "(".concat(typeof value, ")")); - } - }; - /** - * The createRenderer function accepts two generic arguments: - * HostNode and HostElement, corresponding to Node and Element types in the - * host environment. For example, for runtime-dom, HostNode would be the DOM - * `Node` interface and HostElement would be the DOM `Element` interface. - * - * Custom renderers can pass in the platform specific types like this: - * - * ``` js - * const { render, createApp } = createRenderer({ - * patchProp, - * ...nodeOps - * }) - * ``` - */ - - - function createRenderer(options) { - return baseCreateRenderer(options); - } // Separate API for creating hydration-enabled renderer. - // Hydration logic is only used when calling this function, making it - // tree-shakable. - - - function createHydrationRenderer(options) { - return baseCreateRenderer(options, createHydrationFunctions); - } // implementation - - - function baseCreateRenderer(options, createHydrationFns) { - // compile-time feature flags check - { - initFeatureFlags(); - } - - if (process.env.NODE_ENV !== 'production' || false) { - var target = getGlobalThis(); - target.__VUE__ = true; - setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__); - } - - var hostInsert = options.insert, - hostRemove = options.remove, - hostPatchProp = options.patchProp, - hostForcePatchProp = options.forcePatchProp, - hostCreateElement = options.createElement, - hostCreateText = options.createText, - hostCreateComment = options.createComment, - hostSetText = options.setText, - hostSetElementText = options.setElementText, - hostParentNode = options.parentNode, - hostNextSibling = options.nextSibling, - _options$setScopeId = options.setScopeId, - hostSetScopeId = _options$setScopeId === void 0 ? NOOP : _options$setScopeId, - hostCloneNode = options.cloneNode, - hostInsertStaticContent = options.insertStaticContent; // Note: functions inside this closure should use `const xxx = () => {}` - // style in order to prevent being inlined by minifiers. - - var patch = function patch(n1, n2, container) { - var anchor = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var parentComponent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; - var parentSuspense = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; - var isSVG = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false; - var slotScopeIds = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null; - var optimized = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false; - - // patching & not same type, unmount old tree - if (n1 && !isSameVNodeType(n1, n2)) { - anchor = getNextHostNode(n1); - unmount(n1, parentComponent, parentSuspense, true); - n1 = null; - } - - if (n2.patchFlag === -2 - /* BAIL */ - ) { - optimized = false; - n2.dynamicChildren = null; - } - - var type = n2.type, - ref = n2.ref, - shapeFlag = n2.shapeFlag; - - switch (type) { - case Text: - processText(n1, n2, container, anchor); - break; - - case Comment$1: - processCommentNode(n1, n2, container, anchor); - break; - - case Static: - if (n1 == null) { - mountStaticNode(n2, container, anchor, isSVG); - } else if (process.env.NODE_ENV !== 'production') { - patchStaticNode(n1, n2, container, isSVG); - } - - break; - - case Fragment: - processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); - break; - - default: - if (shapeFlag & 1 - /* ELEMENT */ - ) { - processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); - } else if (shapeFlag & 6 - /* COMPONENT */ - ) { - processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); - } else if (shapeFlag & 64 - /* TELEPORT */ - ) { - type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals); - } else if (shapeFlag & 128 - /* SUSPENSE */ - ) { - type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals); - } else if (process.env.NODE_ENV !== 'production') { - warn('Invalid VNode type:', type, "(".concat(typeof type, ")")); - } - - } // set ref - - - if (ref != null && parentComponent) { - setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); - } - }; - - var processText = function processText(n1, n2, container, anchor) { - if (n1 == null) { - hostInsert(n2.el = hostCreateText(n2.children, container), // fixed by xxxxxx - container, anchor); - } else { - var el = n2.el = n1.el; - - if (n2.children !== n1.children) { - hostSetText(el, n2.children); - } - } - }; - - var processCommentNode = function processCommentNode(n1, n2, container, anchor) { - if (n1 == null) { - hostInsert(n2.el = hostCreateComment(n2.children || '', container), // fixed by xxxxxx - container, anchor); - } else { - // there's no support for dynamic comments - n2.el = n1.el; - } - }; - - var mountStaticNode = function mountStaticNode(n2, container, anchor, isSVG) { - var _hostInsertStaticCont = hostInsertStaticContent(n2.children, container, anchor, isSVG, // pass cached nodes if the static node is being mounted multiple times - // so that runtime-dom can simply cloneNode() instead of inserting new - // HTML - n2.el && [n2.el, n2.anchor]); - - var _hostInsertStaticCont2 = _slicedToArray(_hostInsertStaticCont, 2); - - n2.el = _hostInsertStaticCont2[0]; - n2.anchor = _hostInsertStaticCont2[1]; - }; - /** - * Dev / HMR only - */ - - - var patchStaticNode = function patchStaticNode(n1, n2, container, isSVG) { - // static nodes are only patched during dev for HMR - if (n2.children !== n1.children) { - var anchor = hostNextSibling(n1.anchor); // remove existing - - removeStaticNode(n1); - - var _hostInsertStaticCont3 = hostInsertStaticContent(n2.children, container, anchor, isSVG); - - var _hostInsertStaticCont4 = _slicedToArray(_hostInsertStaticCont3, 2); - - n2.el = _hostInsertStaticCont4[0]; - n2.anchor = _hostInsertStaticCont4[1]; - } else { - n2.el = n1.el; - n2.anchor = n1.anchor; - } - }; - - var moveStaticNode = function moveStaticNode(_ref14, container, nextSibling) { - var el = _ref14.el, - anchor = _ref14.anchor; - var next; - - while (el && el !== anchor) { - next = hostNextSibling(el); - hostInsert(el, container, nextSibling); - el = next; - } - - hostInsert(anchor, container, nextSibling); - }; - - var removeStaticNode = function removeStaticNode(_ref15) { - var el = _ref15.el, - anchor = _ref15.anchor; - var next; - - while (el && el !== anchor) { - next = hostNextSibling(el); - hostRemove(el); - el = next; - } - - hostRemove(anchor); - }; - - var processElement = function processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) { - isSVG = isSVG || n2.type === 'svg'; - - if (n1 == null) { - mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); - } else { - patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized); - } - }; - - var mountElement = function mountElement(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) { - var el; - var vnodeHook; - var type = vnode.type, - props = vnode.props, - shapeFlag = vnode.shapeFlag, - transition = vnode.transition, - patchFlag = vnode.patchFlag, - dirs = vnode.dirs; - - if (!(process.env.NODE_ENV !== 'production') && vnode.el && hostCloneNode !== undefined && patchFlag === -1 - /* HOISTED */ - ) { - // If a vnode has non-null el, it means it's being reused. - // Only static vnodes can be reused, so its mounted DOM nodes should be - // exactly the same, and we can simply do a clone here. - // only do this in production since cloned trees cannot be HMR updated. - el = vnode.el = hostCloneNode(vnode.el); - } else { - el = vnode.el = hostCreateElement( // fixed by xxxxxx - vnode.type, container); // mount children first, since some props may rely on child content - // being already rendered, e.g. `