From 4fc0dd20f8ec8c8160c73205025a94f319b2d665 Mon Sep 17 00:00:00 2001 From: nico Date: Fri, 8 Dec 2023 11:07:59 +0100 Subject: [PATCH] updated content CSS grid CSS custom fonts CSS variables --- .gitignore | 0 README.md | 0 bun.lockb | Bin 0 -> 67740 bytes docs/.vitepress/cache/deps/_metadata.json | 14 +- docs/.vitepress/cache/deps/package.json | 4 +- .../deps/vitepress___@vue_devtools-api.js | 162 + .../deps/vitepress___@vue_devtools-api.js.map | 7 + docs/.vitepress/cache/deps/vue.js | 4653 +++++++++++------ docs/.vitepress/cache/deps/vue.js.map | 8 +- docs/.vitepress/config.js | 2 + .../theme/components/CustomBlockquote.vue | 13 - docs/.vitepress/theme/custom.css | 19 +- docs/.vitepress/theme/index.js | 15 - docs/.vitepress/theme/layouts/PageLayout.vue | 0 docs/a-propos.md | 0 docs/design/emails/assets/2col.jpg | Bin docs/design/emails/assets/desktop.jpg | Bin docs/design/emails/assets/mobile.jpg | Bin docs/design/emails/assets/shadow-mobile.jpg | Bin docs/design/emails/index.md | 0 docs/design/index.md | 0 docs/dev/01-debutant/css.md | 0 docs/dev/01-debutant/html.md | 0 docs/dev/01-debutant/index.md | 0 docs/dev/01-debutant/typographie.md | 76 + docs/dev/02-intermediaire/css.md | 114 + docs/dev/02-intermediaire/git.md | 0 docs/dev/02-intermediaire/html.md | 0 docs/dev/02-intermediaire/index.md | 0 docs/dev/02-intermediaire/javascript.md | 0 docs/dev/02-intermediaire/markdown.md | 0 docs/dev/02-intermediaire/nodejs.md | 0 docs/dev/03-avance/html.md | 0 docs/dev/03-avance/index.md | 0 docs/dev/code-camp/index.md | 0 docs/dev/code-camp/sujets.md | 0 docs/dev/docs.md | 0 docs/dev/fragments/base/01-structure.md | 0 docs/dev/fragments/base/02-robots.md | 0 docs/dev/fragments/css/00-reset.md | 0 docs/dev/fragments/css/01-centrer.md | 0 docs/dev/fragments/html/01-titres.md | 0 docs/dev/fragments/html/02-paragraphe.md | 0 docs/dev/fragments/html/04-image.md | 0 docs/dev/fragments/html/index.md | 0 docs/dev/goat.md | 0 docs/dev/index.md | 0 docs/dev/outils.md | 0 docs/index.md | 0 docs/public/robots.txt | 0 docs/snippets/css/base.css | 0 docs/snippets/css/reset.css | 0 docs/snippets/html/base.html | 0 docs/snippets/html/structure.html | 0 docs/snippets/js/DOM-select.js | 0 docs/snippets/js/variables.js | 0 docs/snippets/robots.txt | 0 package.json | 3 +- pnpm-lock.yaml | 782 --- 59 files changed, 3409 insertions(+), 2463 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 README.md create mode 100755 bun.lockb create mode 100644 docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js create mode 100644 docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map mode change 100644 => 100755 docs/.vitepress/config.js delete mode 100644 docs/.vitepress/theme/components/CustomBlockquote.vue mode change 100644 => 100755 docs/.vitepress/theme/custom.css mode change 100644 => 100755 docs/.vitepress/theme/index.js mode change 100644 => 100755 docs/.vitepress/theme/layouts/PageLayout.vue mode change 100644 => 100755 docs/a-propos.md mode change 100644 => 100755 docs/design/emails/assets/2col.jpg mode change 100644 => 100755 docs/design/emails/assets/desktop.jpg mode change 100644 => 100755 docs/design/emails/assets/mobile.jpg mode change 100644 => 100755 docs/design/emails/assets/shadow-mobile.jpg mode change 100644 => 100755 docs/design/emails/index.md mode change 100644 => 100755 docs/design/index.md mode change 100644 => 100755 docs/dev/01-debutant/css.md mode change 100644 => 100755 docs/dev/01-debutant/html.md mode change 100644 => 100755 docs/dev/01-debutant/index.md create mode 100644 docs/dev/01-debutant/typographie.md create mode 100644 docs/dev/02-intermediaire/css.md mode change 100644 => 100755 docs/dev/02-intermediaire/git.md mode change 100644 => 100755 docs/dev/02-intermediaire/html.md mode change 100644 => 100755 docs/dev/02-intermediaire/index.md mode change 100644 => 100755 docs/dev/02-intermediaire/javascript.md mode change 100644 => 100755 docs/dev/02-intermediaire/markdown.md mode change 100644 => 100755 docs/dev/02-intermediaire/nodejs.md mode change 100644 => 100755 docs/dev/03-avance/html.md mode change 100644 => 100755 docs/dev/03-avance/index.md mode change 100644 => 100755 docs/dev/code-camp/index.md mode change 100644 => 100755 docs/dev/code-camp/sujets.md mode change 100644 => 100755 docs/dev/docs.md mode change 100644 => 100755 docs/dev/fragments/base/01-structure.md mode change 100644 => 100755 docs/dev/fragments/base/02-robots.md mode change 100644 => 100755 docs/dev/fragments/css/00-reset.md mode change 100644 => 100755 docs/dev/fragments/css/01-centrer.md mode change 100644 => 100755 docs/dev/fragments/html/01-titres.md mode change 100644 => 100755 docs/dev/fragments/html/02-paragraphe.md mode change 100644 => 100755 docs/dev/fragments/html/04-image.md mode change 100644 => 100755 docs/dev/fragments/html/index.md mode change 100644 => 100755 docs/dev/goat.md mode change 100644 => 100755 docs/dev/index.md mode change 100644 => 100755 docs/dev/outils.md mode change 100644 => 100755 docs/index.md mode change 100644 => 100755 docs/public/robots.txt mode change 100644 => 100755 docs/snippets/css/base.css mode change 100644 => 100755 docs/snippets/css/reset.css mode change 100644 => 100755 docs/snippets/html/base.html mode change 100644 => 100755 docs/snippets/html/structure.html mode change 100644 => 100755 docs/snippets/js/DOM-select.js mode change 100644 => 100755 docs/snippets/js/variables.js mode change 100644 => 100755 docs/snippets/robots.txt mode change 100644 => 100755 package.json delete mode 100644 pnpm-lock.yaml diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..d5b96621e0b85382700fb6c281731b91c523177e GIT binary patch literal 67740 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 SC)v)7>XhF3i_t&5|9=k*PM%o+ literal 0 HcmV?d00001 diff --git a/docs/.vitepress/cache/deps/_metadata.json b/docs/.vitepress/cache/deps/_metadata.json index 450d436..5c679be 100644 --- a/docs/.vitepress/cache/deps/_metadata.json +++ b/docs/.vitepress/cache/deps/_metadata.json @@ -1,11 +1,17 @@ { - "hash": "35964354", - "browserHash": "c708b366", + "hash": "61014706", + "browserHash": "2f8b4d93", "optimized": { "vue": { - "src": "../../../../node_modules/.pnpm/vue@3.2.47/node_modules/vue/dist/vue.runtime.esm-bundler.js", + "src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js", "file": "vue.js", - "fileHash": "84ebdea4", + "fileHash": "e47bde2a", + "needsInterop": false + }, + "vitepress > @vue/devtools-api": { + "src": "../../../../node_modules/@vue/devtools-api/lib/esm/index.js", + "file": "vitepress___@vue_devtools-api.js", + "fileHash": "7672acce", "needsInterop": false } }, diff --git a/docs/.vitepress/cache/deps/package.json b/docs/.vitepress/cache/deps/package.json index 7c34deb..3dbc1ca 100644 --- a/docs/.vitepress/cache/deps/package.json +++ b/docs/.vitepress/cache/deps/package.json @@ -1 +1,3 @@ -{"type":"module"} \ No newline at end of file +{ + "type": "module" +} diff --git a/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js b/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js new file mode 100644 index 0000000..72ba638 --- /dev/null +++ b/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js @@ -0,0 +1,162 @@ +// node_modules/@vue/devtools-api/lib/esm/env.js +function getDevtoolsGlobalHook() { + return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; +} +function getTarget() { + return typeof navigator !== "undefined" && typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}; +} +var isProxyAvailable = typeof Proxy === "function"; + +// node_modules/@vue/devtools-api/lib/esm/const.js +var HOOK_SETUP = "devtools-plugin:setup"; +var HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set"; + +// node_modules/@vue/devtools-api/lib/esm/time.js +var supported; +var perf; +function isPerformanceSupported() { + var _a; + if (supported !== void 0) { + return supported; + } + if (typeof window !== "undefined" && window.performance) { + supported = true; + perf = window.performance; + } else if (typeof global !== "undefined" && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { + supported = true; + perf = global.perf_hooks.performance; + } else { + supported = false; + } + return supported; +} +function now() { + return isPerformanceSupported() ? perf.now() : Date.now(); +} + +// node_modules/@vue/devtools-api/lib/esm/proxy.js +var ApiProxy = class { + constructor(plugin, hook) { + this.target = null; + this.targetQueue = []; + this.onQueue = []; + this.plugin = plugin; + this.hook = hook; + const defaultSettings = {}; + if (plugin.settings) { + for (const id in plugin.settings) { + const item = plugin.settings[id]; + defaultSettings[id] = item.defaultValue; + } + } + const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; + let currentSettings = Object.assign({}, defaultSettings); + try { + const raw = localStorage.getItem(localSettingsSaveId); + const data = JSON.parse(raw); + Object.assign(currentSettings, data); + } catch (e) { + } + this.fallbacks = { + getSettings() { + return currentSettings; + }, + setSettings(value) { + try { + localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); + } catch (e) { + } + currentSettings = value; + }, + now() { + return now(); + } + }; + if (hook) { + hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { + if (pluginId === this.plugin.id) { + this.fallbacks.setSettings(value); + } + }); + } + this.proxiedOn = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target.on[prop]; + } else { + return (...args) => { + this.onQueue.push({ + method: prop, + args + }); + }; + } + } + }); + this.proxiedTarget = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target[prop]; + } else if (prop === "on") { + return this.proxiedOn; + } else if (Object.keys(this.fallbacks).includes(prop)) { + return (...args) => { + this.targetQueue.push({ + method: prop, + args, + resolve: () => { + } + }); + return this.fallbacks[prop](...args); + }; + } else { + return (...args) => { + return new Promise((resolve) => { + this.targetQueue.push({ + method: prop, + args, + resolve + }); + }); + }; + } + } + }); + } + async setRealTarget(target) { + this.target = target; + for (const item of this.onQueue) { + this.target.on[item.method](...item.args); + } + for (const item of this.targetQueue) { + item.resolve(await this.target[item.method](...item.args)); + } + } +}; + +// node_modules/@vue/devtools-api/lib/esm/index.js +function setupDevtoolsPlugin(pluginDescriptor, setupFn) { + const descriptor = pluginDescriptor; + const target = getTarget(); + const hook = getDevtoolsGlobalHook(); + const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy; + if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { + hook.emit(HOOK_SETUP, pluginDescriptor, setupFn); + } else { + const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null; + const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; + list.push({ + pluginDescriptor: descriptor, + setupFn, + proxy + }); + if (proxy) + setupFn(proxy.proxiedTarget); + } +} +export { + isPerformanceSupported, + now, + setupDevtoolsPlugin +}; +//# sourceMappingURL=vitepress___@vue_devtools-api.js.map diff --git a/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map b/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map new file mode 100644 index 0000000..7e0a995 --- /dev/null +++ b/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../node_modules/@vue/devtools-api/lib/esm/env.js", "../../../../node_modules/@vue/devtools-api/lib/esm/const.js", "../../../../node_modules/@vue/devtools-api/lib/esm/time.js", "../../../../node_modules/@vue/devtools-api/lib/esm/proxy.js", "../../../../node_modules/@vue/devtools-api/lib/esm/index.js"], + "sourcesContent": ["export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-ignore\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n", "export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n", "let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = global.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n", "import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n", "import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy)\n setupFn(proxy.proxiedTarget);\n }\n}\n"], + "mappings": "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", + "names": [] +} diff --git a/docs/.vitepress/cache/deps/vue.js b/docs/.vitepress/cache/deps/vue.js index c115735..63b4d07 100644 --- a/docs/.vitepress/cache/deps/vue.js +++ b/docs/.vitepress/cache/deps/vue.js @@ -1,4 +1,4 @@ -// node_modules/.pnpm/@vue+shared@3.2.47/node_modules/@vue/shared/dist/shared.esm-bundler.js +// node_modules/@vue/shared/dist/shared.esm-bundler.js function makeMap(str, expectsLowerCase) { const map2 = /* @__PURE__ */ Object.create(null); const list = str.split(","); @@ -7,8 +7,98 @@ function makeMap(str, expectsLowerCase) { } return expectsLowerCase ? (val) => !!map2[val.toLowerCase()] : (val) => !!map2[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 = makeMap(GLOBALS_WHITE_LISTED); +var EMPTY_OBJ = true ? Object.freeze({}) : {}; +var EMPTY_ARR = true ? Object.freeze([]) : []; +var NOOP = () => { +}; +var NO = () => false; +var isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +var isModelListener = (key) => key.startsWith("onUpdate:"); +var extend = Object.assign; +var remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var hasOwn = (val, key) => hasOwnProperty.call(val, key); +var isArray = Array.isArray; +var isMap = (val) => toTypeString(val) === "[object Map]"; +var isSet = (val) => toTypeString(val) === "[object Set]"; +var isDate = (val) => toTypeString(val) === "[object Date]"; +var isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +var isFunction = (val) => typeof val === "function"; +var isString = (val) => typeof val === "string"; +var isSymbol = (val) => typeof val === "symbol"; +var isObject = (val) => val !== null && typeof val === "object"; +var isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +var objectToString = Object.prototype.toString; +var toTypeString = (value) => objectToString.call(value); +var toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +var isPlainObject = (val) => toTypeString(val) === "[object Object]"; +var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +var isReservedProp = makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +var isBuiltInDirective = makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +var cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +var camelizeRE = /-(\w)/g; +var camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +var hyphenateRE = /\B([A-Z])/g; +var hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +var capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +var toHandlerKey = cacheStringFunction((str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; +}); +var hasChanged = (value, oldValue) => !Object.is(value, oldValue); +var invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } +}; +var def = (obj, key, value) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + value + }); +}; +var looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +var toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +var _globalThis; +var getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +var GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console"; +var isGloballyAllowed = makeMap(GLOBALS_ALLOWED); function normalizeStyle(value) { if (isArray(value)) { const res = {}; @@ -22,15 +112,13 @@ function normalizeStyle(value) { } } return res; - } else if (isString(value)) { - return value; - } else if (isObject(value)) { + } else if (isString(value) || isObject(value)) { return value; } } var listDelimiterRE = /;(?![^(]*\))/g; var propertyDelimiterRE = /:([^]+)/; -var styleCommentRE = /\/\*.*?\*\//gs; +var styleCommentRE = /\/\*[^]*?\*\//g; function parseStringStyle(cssText) { const ret = {}; cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { @@ -81,12 +169,18 @@ var isSVGTag = makeMap(SVG_TAGS); var isVoidTag = makeMap(VOID_TAGS); var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; var isSpecialBooleanAttr = makeMap(specialBooleanAttrs); -var isBooleanAttr = makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`); +var isBooleanAttr = makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); function includeBooleanAttr(value) { return !!value || value === ""; } -var isKnownHtmlAttr = makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`); -var isKnownSvgAttr = makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`); +var isKnownHtmlAttr = makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +var isKnownSvgAttr = makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); function looseCompareArrays(a, b) { if (a.length !== b.length) return false; @@ -160,89 +254,8 @@ var replacer = (_key, val) => { } return val; }; -var EMPTY_OBJ = true ? Object.freeze({}) : {}; -var EMPTY_ARR = true ? Object.freeze([]) : []; -var NOOP = () => { -}; -var NO = () => false; -var onRE = /^on[^a-z]/; -var isOn = (key) => onRE.test(key); -var isModelListener = (key) => key.startsWith("onUpdate:"); -var extend = Object.assign; -var remove = (arr, el) => { - const i = arr.indexOf(el); - if (i > -1) { - arr.splice(i, 1); - } -}; -var hasOwnProperty = Object.prototype.hasOwnProperty; -var hasOwn = (val, key) => hasOwnProperty.call(val, key); -var isArray = Array.isArray; -var isMap = (val) => toTypeString(val) === "[object Map]"; -var isSet = (val) => toTypeString(val) === "[object Set]"; -var isDate = (val) => toTypeString(val) === "[object Date]"; -var isRegExp = (val) => toTypeString(val) === "[object RegExp]"; -var isFunction = (val) => typeof val === "function"; -var isString = (val) => typeof val === "string"; -var isSymbol = (val) => typeof val === "symbol"; -var isObject = (val) => val !== null && typeof val === "object"; -var isPromise = (val) => { - return isObject(val) && isFunction(val.then) && isFunction(val.catch); -}; -var objectToString = Object.prototype.toString; -var toTypeString = (value) => objectToString.call(value); -var toRawType = (value) => { - return toTypeString(value).slice(8, -1); -}; -var isPlainObject = (val) => toTypeString(val) === "[object Object]"; -var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; -var isReservedProp = makeMap( - // the leading comma is intentional so empty string "" is also included - ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" -); -var isBuiltInDirective = makeMap("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"); -var cacheStringFunction = (fn) => { - const cache = /* @__PURE__ */ Object.create(null); - return (str) => { - const hit = cache[str]; - return hit || (cache[str] = fn(str)); - }; -}; -var camelizeRE = /-(\w)/g; -var camelize = cacheStringFunction((str) => { - return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); -}); -var hyphenateRE = /\B([A-Z])/g; -var hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase()); -var capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1)); -var toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``); -var hasChanged = (value, oldValue) => !Object.is(value, oldValue); -var invokeArrayFns = (fns, arg) => { - for (let i = 0; i < fns.length; i++) { - fns[i](arg); - } -}; -var def = (obj, key, value) => { - Object.defineProperty(obj, key, { - configurable: true, - enumerable: false, - value - }); -}; -var looseToNumber = (val) => { - const n = parseFloat(val); - return isNaN(n) ? val : n; -}; -var toNumber = (val) => { - const n = isString(val) ? Number(val) : NaN; - return isNaN(n) ? val : n; -}; -var _globalThis; -var getGlobalThis = () => { - return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); -}; -// node_modules/.pnpm/@vue+reactivity@3.2.47/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js +// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js function warn(msg, ...args) { console.warn(`[Vue warn] ${msg}`, ...args); } @@ -255,7 +268,9 @@ var EffectScope = class { this.cleanups = []; this.parent = activeEffectScope; if (!detached && activeEffectScope) { - this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1; + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; } } get active() { @@ -329,7 +344,9 @@ function onScopeDispose(fn) { if (activeEffectScope) { activeEffectScope.cleanups.push(fn); } else if (true) { - warn(`onScopeDispose() is called when there is no active effect scope to be associated with.`); + warn( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); } } var createDep = (effects) => { @@ -438,7 +455,7 @@ function cleanupEffect(effect2) { } } function effect(fn, options) { - if (fn.effect) { + if (fn.effect instanceof ReactiveEffect) { fn = fn.effect.fn; } const _effect = new ReactiveEffect(fn); @@ -495,7 +512,14 @@ function trackEffects(dep, debuggerEventExtraInfo) { dep.add(activeEffect); activeEffect.deps.push(dep); if (activeEffect.onTrack) { - activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo)); + activeEffect.onTrack( + extend( + { + effect: activeEffect + }, + debuggerEventExtraInfo + ) + ); } } } @@ -510,7 +534,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) { } else if (key === "length" && isArray(target)) { const newLength = Number(newValue); depsMap.forEach((dep, key2) => { - if (key2 === "length" || key2 >= newLength) { + if (key2 === "length" || !isSymbol(key2) && key2 >= newLength) { deps.push(dep); } }); @@ -593,17 +617,13 @@ function triggerEffect(effect2, debuggerEventExtraInfo) { } } function getDepFromReactive(object, key) { - var _a2; - return (_a2 = targetMap.get(object)) === null || _a2 === void 0 ? void 0 : _a2.get(key); + var _a; + return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key); } var isNonTrackableKeys = makeMap(`__proto__,__v_isRef,__isVue`); var builtInSymbols = new Set( Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) ); -var get$1 = createGetter(); -var shallowGet = createGetter(false, true); -var readonlyGet = createGetter(true); -var shallowReadonlyGet = createGetter(true, true); var arrayInstrumentations = createArrayInstrumentations(); function createArrayInstrumentations() { const instrumentations = {}; @@ -636,8 +656,13 @@ function hasOwnProperty2(key) { track(obj, "has", key); return obj.hasOwnProperty(key); } -function createGetter(isReadonly2 = false, shallow = false) { - return function get2(target, key, receiver) { +var BaseReactiveHandler = class { + constructor(_isReadonly = false, _shallow = false) { + this._isReadonly = _isReadonly; + this._shallow = _shallow; + } + get(target, key, receiver) { + const isReadonly2 = this._isReadonly, shallow = this._shallow; if (key === "__v_isReactive") { return !isReadonly2; } else if (key === "__v_isReadonly") { @@ -673,17 +698,18 @@ function createGetter(isReadonly2 = false, shallow = false) { return isReadonly2 ? readonly(res) : reactive(res); } return res; - }; -} -var set$1 = createSetter(); -var shallowSet = createSetter(true); -function createSetter(shallow = false) { - return function set2(target, key, value, receiver) { + } +}; +var MutableReactiveHandler = class extends BaseReactiveHandler { + constructor(shallow = false) { + super(false, shallow); + } + set(target, key, value, receiver) { let oldValue = target[key]; if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { return false; } - if (!shallow) { + if (!this._shallow) { if (!isShallow(value) && !isReadonly(value)) { oldValue = toRaw(oldValue); value = toRaw(value); @@ -703,68 +729,69 @@ function createSetter(shallow = false) { } } return result; - }; -} -function deleteProperty(target, key) { - const hadKey = hasOwn(target, key); - const oldValue = target[key]; - const result = Reflect.deleteProperty(target, key); - if (result && hadKey) { - trigger(target, "delete", key, void 0, oldValue); } - return result; -} -function has$1(target, key) { - const result = Reflect.has(target, key); - if (!isSymbol(key) || !builtInSymbols.has(key)) { - track(target, "has", key); + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); } - return result; -} -function ownKeys(target) { - track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY); - return Reflect.ownKeys(target); -} -var mutableHandlers = { - get: get$1, - set: set$1, - deleteProperty, - has: has$1, - ownKeys }; -var readonlyHandlers = { - get: readonlyGet, +var ReadonlyReactiveHandler = class extends BaseReactiveHandler { + constructor(shallow = false) { + super(true, shallow); + } set(target, key) { if (true) { - warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target); + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); } return true; - }, + } deleteProperty(target, key) { if (true) { - warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target); + warn( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); } return true; } }; -var shallowReactiveHandlers = extend({}, mutableHandlers, { - get: shallowGet, - set: shallowSet -}); -var shallowReadonlyHandlers = extend({}, readonlyHandlers, { - get: shallowReadonlyGet -}); +var mutableHandlers = new MutableReactiveHandler(); +var readonlyHandlers = new ReadonlyReactiveHandler(); +var shallowReactiveHandlers = new MutableReactiveHandler( + true +); +var shallowReadonlyHandlers = new ReadonlyReactiveHandler(true); var toShallow = (value) => value; var getProto = (v) => Reflect.getPrototypeOf(v); function get(target, key, isReadonly2 = false, isShallow3 = false) { - target = target[ - "__v_raw" - /* ReactiveFlags.RAW */ - ]; + target = target["__v_raw"]; const rawTarget = toRaw(target); const rawKey = toRaw(key); if (!isReadonly2) { - if (key !== rawKey) { + if (hasChanged(key, rawKey)) { track(rawTarget, "get", key); } track(rawTarget, "get", rawKey); @@ -780,14 +807,11 @@ function get(target, key, isReadonly2 = false, isShallow3 = false) { } } function has(key, isReadonly2 = false) { - const target = this[ - "__v_raw" - /* ReactiveFlags.RAW */ - ]; + const target = this["__v_raw"]; const rawTarget = toRaw(target); const rawKey = toRaw(key); if (!isReadonly2) { - if (key !== rawKey) { + if (hasChanged(key, rawKey)) { track(rawTarget, "has", key); } track(rawTarget, "has", rawKey); @@ -795,10 +819,7 @@ function has(key, isReadonly2 = false) { return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); } function size(target, isReadonly2 = false) { - target = target[ - "__v_raw" - /* ReactiveFlags.RAW */ - ]; + target = target["__v_raw"]; !isReadonly2 && track(toRaw(target), "iterate", ITERATE_KEY); return Reflect.get(target, "size", target); } @@ -863,10 +884,7 @@ function clear() { function createForEach(isReadonly2, isShallow3) { return function forEach(callback, thisArg) { const observed = this; - const target = observed[ - "__v_raw" - /* ReactiveFlags.RAW */ - ]; + const target = observed["__v_raw"]; const rawTarget = toRaw(target); const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive; !isReadonly2 && track(rawTarget, "iterate", ITERATE_KEY); @@ -877,17 +895,18 @@ function createForEach(isReadonly2, isShallow3) { } function createIterableMethod(method, isReadonly2, isShallow3) { return function(...args) { - const target = this[ - "__v_raw" - /* ReactiveFlags.RAW */ - ]; + const target = this["__v_raw"]; const rawTarget = toRaw(target); const targetIsMap = isMap(rawTarget); const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; const isKeyOnly = method === "keys" && targetIsMap; const innerIterator = target[method](...args); const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive; - !isReadonly2 && track(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); return { // iterator protocol next() { @@ -908,9 +927,12 @@ function createReadonlyMethod(type) { return function(...args) { if (true) { const key = args[0] ? `on key "${args[0]}" ` : ``; - console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this)); + console.warn( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); } - return type === "delete" ? false : this; + return type === "delete" ? false : type === "clear" ? void 0 : this; }; } function createInstrumentations() { @@ -952,22 +974,10 @@ function createInstrumentations() { has(key) { return has.call(this, key, true); }, - add: createReadonlyMethod( - "add" - /* TriggerOpTypes.ADD */ - ), - set: createReadonlyMethod( - "set" - /* TriggerOpTypes.SET */ - ), - delete: createReadonlyMethod( - "delete" - /* TriggerOpTypes.DELETE */ - ), - clear: createReadonlyMethod( - "clear" - /* TriggerOpTypes.CLEAR */ - ), + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), forEach: createForEach(true, false) }; const shallowReadonlyInstrumentations2 = { @@ -980,30 +990,34 @@ function createInstrumentations() { has(key) { return has.call(this, key, true); }, - add: createReadonlyMethod( - "add" - /* TriggerOpTypes.ADD */ - ), - set: createReadonlyMethod( - "set" - /* TriggerOpTypes.SET */ - ), - delete: createReadonlyMethod( - "delete" - /* TriggerOpTypes.DELETE */ - ), - clear: createReadonlyMethod( - "clear" - /* TriggerOpTypes.CLEAR */ - ), + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), forEach: createForEach(true, true) }; const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; iteratorMethods.forEach((method) => { - mutableInstrumentations2[method] = createIterableMethod(method, false, false); - readonlyInstrumentations2[method] = createIterableMethod(method, true, false); - shallowInstrumentations2[method] = createIterableMethod(method, false, true); - shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true); + mutableInstrumentations2[method] = createIterableMethod( + method, + false, + false + ); + readonlyInstrumentations2[method] = createIterableMethod( + method, + true, + false + ); + shallowInstrumentations2[method] = createIterableMethod( + method, + false, + true + ); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); }); return [ mutableInstrumentations2, @@ -1012,7 +1026,12 @@ function createInstrumentations() { shallowReadonlyInstrumentations2 ]; } -var [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = createInstrumentations(); +var [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations +] = createInstrumentations(); function createInstrumentationGetter(isReadonly2, shallow) { const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations; return (target, key, receiver) => { @@ -1023,7 +1042,11 @@ function createInstrumentationGetter(isReadonly2, shallow) { } else if (key === "__v_raw") { return target; } - return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver); + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); }; } var mutableCollectionHandlers = { @@ -1042,7 +1065,9 @@ function checkIdentityKeys(target, has2, key) { const rawKey = toRaw(key); if (rawKey !== key && has2.call(target, rawKey)) { const type = toRawType(target); - console.warn(`Reactive ${type} contains both the raw and reactive versions of the same object${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.`); + console.warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${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 = /* @__PURE__ */ new WeakMap(); @@ -1064,25 +1089,46 @@ function targetTypeMap(rawType) { } } function getTargetType(value) { - return value[ - "__v_skip" - /* ReactiveFlags.SKIP */ - ] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); + return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); } function reactive(target) { if (isReadonly(target)) { return target; } - return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap); + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); } function shallowReactive(target) { - return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap); + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); } function readonly(target) { - return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap); + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); } function shallowReadonly(target) { - return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap); + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); } function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { if (!isObject(target)) { @@ -1091,13 +1137,7 @@ function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandl } return target; } - if (target[ - "__v_raw" - /* ReactiveFlags.RAW */ - ] && !(isReadonly2 && target[ - "__v_isReactive" - /* ReactiveFlags.IS_REACTIVE */ - ])) { + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { return target; } const existingProxy = proxyMap.get(target); @@ -1108,42 +1148,30 @@ function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandl if (targetType === 0) { return target; } - const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers); + const proxy = new Proxy( + target, + targetType === 2 ? collectionHandlers : baseHandlers + ); proxyMap.set(target, proxy); return proxy; } function isReactive(value) { if (isReadonly(value)) { - return isReactive(value[ - "__v_raw" - /* ReactiveFlags.RAW */ - ]); + return isReactive(value["__v_raw"]); } - return !!(value && value[ - "__v_isReactive" - /* ReactiveFlags.IS_REACTIVE */ - ]); + return !!(value && value["__v_isReactive"]); } function isReadonly(value) { - return !!(value && value[ - "__v_isReadonly" - /* ReactiveFlags.IS_READONLY */ - ]); + return !!(value && value["__v_isReadonly"]); } function isShallow(value) { - return !!(value && value[ - "__v_isShallow" - /* ReactiveFlags.IS_SHALLOW */ - ]); + return !!(value && value["__v_isShallow"]); } function isProxy(value) { return isReactive(value) || isReadonly(value); } function toRaw(observed) { - const raw = observed && observed[ - "__v_raw" - /* ReactiveFlags.RAW */ - ]; + const raw = observed && observed["__v_raw"]; return raw ? toRaw(raw) : observed; } function markRaw(value) { @@ -1225,6 +1253,9 @@ function triggerRef(ref2) { function unref(ref2) { return isRef(ref2) ? ref2.value : ref2; } +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} var shallowUnwrapHandlers = { get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), set: (target, key, value, receiver) => { @@ -1244,7 +1275,10 @@ var CustomRefImpl = class { constructor(factory) { this.dep = void 0; this.__v_isRef = true; - const { get: get2, set: set2 } = factory(() => trackRefValue(this), () => triggerRefValue(this)); + const { get: get2, set: set2 } = factory( + () => trackRefValue(this), + () => triggerRefValue(this) + ); this._get = get2; this._set = set2; } @@ -1264,7 +1298,7 @@ function toRefs(object) { } const ret = isArray(object) ? new Array(object.length) : {}; for (const key in object) { - ret[key] = toRef(object, key); + ret[key] = propertyToRef(object, key); } return ret; } @@ -1286,17 +1320,37 @@ var ObjectRefImpl = class { return getDepFromReactive(toRaw(this._object), this._key); } }; -function toRef(object, key, defaultValue) { - const val = object[key]; - return isRef(val) ? val : new ObjectRefImpl(object, key, defaultValue); +var GetterRefImpl = class { + constructor(_getter) { + this._getter = _getter; + this.__v_isRef = true; + this.__v_isReadonly = true; + } + get value() { + return this._getter(); + } +}; +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); } -var _a$1; var ComputedRefImpl = class { constructor(getter, _setter, isReadonly2, isSSR) { this._setter = _setter; this.dep = void 0; this.__v_isRef = true; - this[_a$1] = false; + this["__v_isReadonly"] = false; this._dirty = true; this.effect = new ReactiveEffect(getter, () => { if (!this._dirty) { @@ -1306,10 +1360,7 @@ var ComputedRefImpl = class { }); this.effect.computed = this; this.effect.active = this._cacheable = !isSSR; - this[ - "__v_isReadonly" - /* ReactiveFlags.IS_READONLY */ - ] = isReadonly2; + this["__v_isReadonly"] = isReadonly2; } get value() { const self2 = toRaw(this); @@ -1324,7 +1375,6 @@ var ComputedRefImpl = class { this._setter(newValue); } }; -_a$1 = "__v_isReadonly"; function computed(getterOrOptions, debugOptions, isSSR = false) { let getter; let setter; @@ -1345,11 +1395,9 @@ function computed(getterOrOptions, debugOptions, isSSR = false) { } return cRef; } -var _a; var tick = Promise.resolve(); -_a = "__v_isReadonly"; -// node_modules/.pnpm/@vue+runtime-core@3.2.47/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +// node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js var stack = []; function pushWarningContext(vnode) { stack.push(vnode); @@ -1365,12 +1413,19 @@ function warn2(msg, ...args) { const appWarnHandler = instance && instance.appContext.config.warnHandler; const trace = getComponentTrace(); if (appWarnHandler) { - callWithErrorHandling(appWarnHandler, instance, 11, [ - msg + args.join(""), - instance && instance.proxy, - trace.map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`).join("\n"), - trace - ]); + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + msg + args.join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); } else { const warnArgs = [`[Vue warn]: ${msg}`, ...args]; if (trace.length && // avoid spamming console during tests @@ -1414,7 +1469,11 @@ function formatTrace(trace) { function formatTraceEntry({ vnode, recurseCount }) { const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; const isRoot = vnode.component ? vnode.component.parent == null : false; - const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; const close = `>` + postfix; return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; } @@ -1457,122 +1516,35 @@ function assertNumber(val, type) { } } var ErrorTypeStrings = { - [ - "sp" - /* LifecycleHooks.SERVER_PREFETCH */ - ]: "serverPrefetch hook", - [ - "bc" - /* LifecycleHooks.BEFORE_CREATE */ - ]: "beforeCreate hook", - [ - "c" - /* LifecycleHooks.CREATED */ - ]: "created hook", - [ - "bm" - /* LifecycleHooks.BEFORE_MOUNT */ - ]: "beforeMount hook", - [ - "m" - /* LifecycleHooks.MOUNTED */ - ]: "mounted hook", - [ - "bu" - /* LifecycleHooks.BEFORE_UPDATE */ - ]: "beforeUpdate hook", - [ - "u" - /* LifecycleHooks.UPDATED */ - ]: "updated", - [ - "bum" - /* LifecycleHooks.BEFORE_UNMOUNT */ - ]: "beforeUnmount hook", - [ - "um" - /* LifecycleHooks.UNMOUNTED */ - ]: "unmounted hook", - [ - "a" - /* LifecycleHooks.ACTIVATED */ - ]: "activated hook", - [ - "da" - /* LifecycleHooks.DEACTIVATED */ - ]: "deactivated hook", - [ - "ec" - /* LifecycleHooks.ERROR_CAPTURED */ - ]: "errorCaptured hook", - [ - "rtc" - /* LifecycleHooks.RENDER_TRACKED */ - ]: "renderTracked hook", - [ - "rtg" - /* LifecycleHooks.RENDER_TRIGGERED */ - ]: "renderTriggered hook", - [ - 0 - /* ErrorCodes.SETUP_FUNCTION */ - ]: "setup function", - [ - 1 - /* ErrorCodes.RENDER_FUNCTION */ - ]: "render function", - [ - 2 - /* ErrorCodes.WATCH_GETTER */ - ]: "watcher getter", - [ - 3 - /* ErrorCodes.WATCH_CALLBACK */ - ]: "watcher callback", - [ - 4 - /* ErrorCodes.WATCH_CLEANUP */ - ]: "watcher cleanup function", - [ - 5 - /* ErrorCodes.NATIVE_EVENT_HANDLER */ - ]: "native event handler", - [ - 6 - /* ErrorCodes.COMPONENT_EVENT_HANDLER */ - ]: "component event handler", - [ - 7 - /* ErrorCodes.VNODE_HOOK */ - ]: "vnode hook", - [ - 8 - /* ErrorCodes.DIRECTIVE_HOOK */ - ]: "directive hook", - [ - 9 - /* ErrorCodes.TRANSITION_HOOK */ - ]: "transition hook", - [ - 10 - /* ErrorCodes.APP_ERROR_HANDLER */ - ]: "app errorHandler", - [ - 11 - /* ErrorCodes.APP_WARN_HANDLER */ - ]: "app warnHandler", - [ - 12 - /* ErrorCodes.FUNCTION_REF */ - ]: "ref function", - [ - 13 - /* ErrorCodes.ASYNC_COMPONENT_LOADER */ - ]: "async component loader", - [ - 14 - /* ErrorCodes.SCHEDULER */ - ]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" }; function callWithErrorHandling(fn, instance, type, args) { let res; @@ -1618,7 +1590,12 @@ function handleError(err, instance, type, throwInDev = true) { } const appErrorHandler = instance.appContext.config.errorHandler; if (appErrorHandler) { - callWithErrorHandling(appErrorHandler, null, 10, [err, exposedInstance, errorInfo]); + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); return; } } @@ -1662,13 +1639,21 @@ function findInsertionIndex(id) { let end = queue.length; while (start < end) { const middle = start + end >>> 1; - const middleJobId = getId(queue[middle]); - middleJobId < id ? start = middle + 1 : end = middle; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.pre) { + start = middle + 1; + } else { + end = middle; + } } return start; } function queueJob(job) { - if (!queue.length || !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) { + if (!queue.length || !queue.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { if (job.id == null) { queue.push(job); } else { @@ -1691,7 +1676,10 @@ function invalidateJob(job) { } function queuePostFlushCb(cb) { if (!isArray(cb)) { - if (!activePostFlushCbs || !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { pendingPostFlushCbs.push(cb); } } else { @@ -1764,12 +1752,7 @@ function flushJobs(seen) { if (check(job)) { continue; } - callWithErrorHandling( - job, - null, - 14 - /* ErrorCodes.SCHEDULER */ - ); + callWithErrorHandling(job, null, 14); } } } finally { @@ -1791,7 +1774,9 @@ function checkRecursiveUpdates(seen, fn) { if (count > RECURSION_LIMIT) { const instance = fn.ownerInstance; const componentName = instance && getComponentName(instance.type); - warn2(`Maximum recursive updates exceeded${componentName ? ` in component <${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.`); + warn2( + `Maximum recursive updates exceeded${componentName ? ` in component <${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); @@ -1865,6 +1850,8 @@ function reload(id, newComp) { } hmrDirtyComponents.add(oldComp); } + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); instance.appContext.optionsCache.delete(instance.type); if (instance.ceReload) { hmrDirtyComponents.add(oldComp); @@ -1877,12 +1864,16 @@ function reload(id, newComp) { } else if (typeof window !== "undefined") { window.location.reload(); } else { - console.warn("[HMR] Root or manually mounted instance modified. Full reload required."); + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); } } queuePostFlushCb(() => { for (const instance of instances) { - hmrDirtyComponents.delete(normalizeClassComponent(instance.type)); + hmrDirtyComponents.delete( + normalizeClassComponent(instance.type) + ); } }); } @@ -1900,7 +1891,9 @@ function tryWrap(fn) { return fn(id, arg); } catch (e) { console.error(e); - console.warn(`[HMR] Something went wrong during Vue component hot-reload. Full reload required.`); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); } }; } @@ -1915,7 +1908,7 @@ function emit$1(event, ...args) { } } function setDevtoolsHook(hook, target) { - var _a2, _b; + var _a, _b; devtools = hook; if (devtools) { devtools.enabled = true; @@ -1927,7 +1920,7 @@ function setDevtoolsHook(hook, target) { // (#4815) typeof window !== "undefined" && // some envs mock window but not fully window.HTMLElement && // also exclude jsdom - !((_b = (_a2 = window.navigator) === null || _a2 === void 0 ? void 0 : _a2.userAgent) === null || _b === void 0 ? void 0 : _b.includes("jsdom")) + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) ) { const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; replay.push((newHook) => { @@ -1958,15 +1951,15 @@ function devtoolsUnmountApp(app) { } var devtoolsComponentAdded = createDevtoolsComponentHook( "component:added" - /* DevtoolsHooks.COMPONENT_ADDED */ + /* COMPONENT_ADDED */ ); var devtoolsComponentUpdated = createDevtoolsComponentHook( "component:updated" - /* DevtoolsHooks.COMPONENT_UPDATED */ + /* COMPONENT_UPDATED */ ); var _devtoolsComponentRemoved = createDevtoolsComponentHook( "component:removed" - /* DevtoolsHooks.COMPONENT_REMOVED */ + /* COMPONENT_REMOVED */ ); var devtoolsComponentRemoved = (component) => { if (devtools && typeof devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered @@ -1976,16 +1969,22 @@ var devtoolsComponentRemoved = (component) => { }; function createDevtoolsComponentHook(hook) { return (component) => { - emit$1(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : void 0, component); + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); }; } var devtoolsPerfStart = createDevtoolsPerformanceHook( "perf:start" - /* DevtoolsHooks.PERFORMANCE_START */ + /* PERFORMANCE_START */ ); var devtoolsPerfEnd = createDevtoolsPerformanceHook( "perf:end" - /* DevtoolsHooks.PERFORMANCE_END */ + /* PERFORMANCE_END */ ); function createDevtoolsPerformanceHook(hook) { return (component, type, time) => { @@ -1993,25 +1992,38 @@ function createDevtoolsPerformanceHook(hook) { }; } function devtoolsComponentEmit(component, event, params) { - emit$1("component:emit", component.appContext.app, component, event, params); + emit$1( + "component:emit", + component.appContext.app, + component, + event, + params + ); } function emit(instance, event, ...rawArgs) { if (instance.isUnmounted) return; const props = instance.vnode.props || EMPTY_OBJ; if (true) { - const { emitsOptions, propsOptions: [propsOptions] } = instance; + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; if (emitsOptions) { if (!(event in emitsOptions) && true) { if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { - warn2(`Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.`); + warn2( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.` + ); } } else { const validator = emitsOptions[event]; if (isFunction(validator)) { const isValid = validator(...rawArgs); if (!isValid) { - warn2(`Invalid event arguments: event validation failed for event "${event}".`); + warn2( + `Invalid event arguments: event validation failed for event "${event}".` + ); } } } @@ -2036,7 +2048,12 @@ function emit(instance, event, ...rawArgs) { if (true) { const lowerCaseEvent = event.toLowerCase(); if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { - warn2(`Event "${lowerCaseEvent}" is emitted in component ${formatComponentName(instance, instance.type)} but the handler is registered for "${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 "${hyphenate(event)}" instead of "${event}".`); + warn2( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${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 "${hyphenate(event)}" instead of "${event}".` + ); } } let handlerName; @@ -2046,7 +2063,12 @@ function emit(instance, event, ...rawArgs) { handler = props[handlerName = toHandlerKey(hyphenate(event))]; } if (handler) { - callWithAsyncErrorHandling(handler, instance, 6, args); + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); } const onceHandler = props[handlerName + `Once`]; if (onceHandler) { @@ -2056,7 +2078,12 @@ function emit(instance, event, ...rawArgs) { return; } instance.emitted[handlerName] = true; - callWithAsyncErrorHandling(onceHandler, instance, 6, args); + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); } } function normalizeEmitsOptions(comp, appContext, asMixin = false) { @@ -2159,7 +2186,23 @@ function markAttrsAccessed() { accessedAttrs = true; } function renderComponentRoot(instance) { - const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit: emit2, render: render2, renderCache, data, setupState, ctx, inheritAttrs } = instance; + const { + type: Component, + vnode, + proxy, + withProxy, + props, + propsOptions: [propsOptions], + slots, + attrs, + emit: emit2, + render: render2, + renderCache, + data, + setupState, + ctx, + inheritAttrs + } = instance; let result; let fallthroughAttrs; const prev = setCurrentRenderingInstance(instance); @@ -2169,35 +2212,55 @@ function renderComponentRoot(instance) { try { if (vnode.shapeFlag & 4) { const proxyToUse = withProxy || proxy; - result = normalizeVNode(render2.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx)); + const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn2( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render2.call( + thisProxy, + proxyToUse, + renderCache, + props, + setupState, + data, + ctx + ) + ); fallthroughAttrs = attrs; } else { - const render3 = Component; + const render22 = Component; if (attrs === props) { markAttrsAccessed(); } - result = normalizeVNode(render3.length > 1 ? render3(props, true ? { - get attrs() { - markAttrsAccessed(); - return attrs; - }, - slots, - emit: emit2 - } : { attrs, slots, emit: emit2 }) : render3( - props, - null - /* we know it doesn't need it */ - )); + result = normalizeVNode( + render22.length > 1 ? render22( + props, + true ? { + get attrs() { + markAttrsAccessed(); + return attrs; + }, + slots, + emit: emit2 + } : { attrs, slots, emit: emit2 } + ) : render22( + props, + null + /* we know it doesn't need it */ + ) + ); fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); } } catch (err) { blockStack.length = 0; - handleError( - err, - instance, - 1 - /* ErrorCodes.RENDER_FUNCTION */ - ); + handleError(err, instance, 1); result = createVNode(Comment); } let root = result; @@ -2211,7 +2274,10 @@ function renderComponentRoot(instance) { if (keys.length) { if (shapeFlag & (1 | 6)) { if (propsOptions && keys.some(isModelListener)) { - fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions); + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); } root = cloneVNode(root, fallthroughAttrs); } else if (!accessedAttrs && root.type !== Comment) { @@ -2229,24 +2295,32 @@ function renderComponentRoot(instance) { } } if (extraAttrs.length) { - warn2(`Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`); + warn2( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` + ); } if (eventAttrs.length) { - warn2(`Extraneous non-emits event listeners (${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.`); + warn2( + `Extraneous non-emits event listeners (${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 (vnode.dirs) { if (!isElementRoot(root)) { - warn2(`Runtime directive used on component with non-element root node. The directives will not function as intended.`); + warn2( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); } root = cloneVNode(root); root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; } if (vnode.transition) { if (!isElementRoot(root)) { - warn2(`Component inside renders non-element root node that cannot be animated.`); + warn2( + `Component inside renders non-element root node that cannot be animated.` + ); } root.transition = vnode.transition; } @@ -2384,6 +2458,60 @@ function updateHOCHostEl({ vnode, parent }, el) { parent = parent.parent; } } +var COMPONENTS = "components"; +var DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +var NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + /* do not include inferred name to avoid breaking existing code */ + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn2(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else if (true) { + warn2( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); +} var isSuspense = (type) => type.__isSuspense; var SuspenseImpl = { name: "Suspense", @@ -2394,9 +2522,29 @@ var SuspenseImpl = { __isSuspense: true, process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { if (n1 == null) { - mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals); + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); } else { - patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals); + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); } }, hydrate: hydrateSuspense, @@ -2411,10 +2559,33 @@ function triggerEvent(vnode, name) { } } function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { - const { p: patch, o: { createElement } } = rendererInternals; + const { + p: patch, + o: { createElement } + } = rendererInternals; const hiddenContainer = createElement("div"); - const suspense = vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals); - patch(null, suspense.pendingBranch = vnode.ssContent, hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds + ); if (suspense.deps > 0) { triggerEvent(vnode, "onPending"); triggerEvent(vnode, "onFallback"); @@ -2431,7 +2602,7 @@ function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense ); setActiveBranch(suspense, vnode.ssFallback); } else { - suspense.resolve(); + suspense.resolve(false, true); } } function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { @@ -2444,7 +2615,17 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotSc if (pendingBranch) { suspense.pendingBranch = newBranch; if (isSameVNodeType(newBranch, pendingBranch)) { - patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); if (suspense.deps <= 0) { suspense.resolve(); } else if (isInFallback) { @@ -2474,7 +2655,17 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotSc suspense.effects.length = 0; suspense.hiddenContainer = createElement("div"); if (isInFallback) { - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); if (suspense.deps <= 0) { suspense.resolve(); } else { @@ -2493,10 +2684,30 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotSc setActiveBranch(suspense, newFallback); } } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized); + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); suspense.resolve(true); } else { - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); if (suspense.deps <= 0) { suspense.resolve(); } @@ -2504,13 +2715,33 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotSc } } else { if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized); + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); setActiveBranch(suspense, newBranch); } else { triggerEvent(n2, "onPending"); suspense.pendingBranch = newBranch; suspense.pendingId++; - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); if (suspense.deps <= 0) { suspense.resolve(); } else { @@ -2529,19 +2760,35 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotSc } } var hasWarned = false; -function createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) { +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) { if (!hasWarned) { hasWarned = true; - console[console.info ? "info" : "log"](` is an experimental feature and its API will likely change.`); + console[console.info ? "info" : "log"]( + ` is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove: remove2 } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } } - const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove: remove2 } } = rendererInternals; const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; if (true) { assertNumber(timeout, `Suspense timeout`); } const suspense = { vnode, - parent, + parent: parentSuspense, parentComponent, isSVG, container, @@ -2556,30 +2803,43 @@ function createSuspenseBoundary(vnode, parent, parentComponent, container, hidde isHydrating, isUnmounted: false, effects: [], - resolve(resume = false) { + resolve(resume = false, sync = false) { if (true) { if (!resume && !suspense.pendingBranch) { - throw new Error(`suspense.resolve() is called without a pending branch.`); + 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.`); + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); } } - const { vnode: vnode2, activeBranch, pendingBranch, pendingId, effects, parentComponent: parentComponent2, container: container2 } = suspense; + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; if (suspense.isHydrating) { suspense.isHydrating = false; } else if (!resume) { - const delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; if (delayEnter) { activeBranch.transition.afterLeave = () => { if (pendingId === suspense.pendingId) { move( pendingBranch, container2, - anchor2, + next(activeBranch), 0 - /* MoveType.ENTER */ ); + queuePostFlushCb(effects); } }; } @@ -2589,32 +2849,34 @@ function createSuspenseBoundary(vnode, parent, parentComponent, container, hidde unmount(activeBranch, parentComponent2, suspense, true); } if (!delayEnter) { - move( - pendingBranch, - container2, - anchor2, - 0 - /* MoveType.ENTER */ - ); + move(pendingBranch, container2, anchor2, 0); } } setActiveBranch(suspense, pendingBranch); suspense.pendingBranch = null; suspense.isInFallback = false; - let parent2 = suspense.parent; + let parent = suspense.parent; let hasUnresolvedAncestor = false; - while (parent2) { - if (parent2.pendingBranch) { - parent2.effects.push(...effects); + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); hasUnresolvedAncestor = true; break; } - parent2 = parent2.parent; + parent = parent.parent; } - if (!hasUnresolvedAncestor) { + if (!hasUnresolvedAncestor && !delayEnter) { queuePostFlushCb(effects); } suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } triggerEvent(vnode2, "onResolve"); }, fallback(fallbackVNode) { @@ -2623,7 +2885,6 @@ function createSuspenseBoundary(vnode, parent, parentComponent, container, hidde } const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense; triggerEvent(vnode2, "onFallback"); - const anchor2 = next(activeBranch); const mountFallback = () => { if (!suspense.isInFallback) { return; @@ -2632,7 +2893,7 @@ function createSuspenseBoundary(vnode, parent, parentComponent, container, hidde null, fallbackVNode, container2, - anchor2, + next(activeBranch), parentComponent2, null, // fallback tree will not have suspense context @@ -2673,12 +2934,7 @@ function createSuspenseBoundary(vnode, parent, parentComponent, container, hidde } const hydratedEl = instance.vnode.el; instance.asyncDep.catch((err) => { - handleError( - err, - instance, - 0 - /* ErrorCodes.SETUP_FUNCTION */ - ); + handleError(err, instance, 0); }).then((asyncSetupResult) => { if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { return; @@ -2719,13 +2975,23 @@ function createSuspenseBoundary(vnode, parent, parentComponent, container, hidde } }); }, - unmount(parentSuspense, doRemove) { + unmount(parentSuspense2, doRemove) { suspense.isUnmounted = true; if (suspense.activeBranch) { - unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove); + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); } if (suspense.pendingBranch) { - unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove); + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); } } }; @@ -2746,16 +3012,25 @@ function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, sl true /* hydrating */ ); - const result = hydrateNode(node, suspense.pendingBranch = vnode.ssContent, parentComponent, suspense, slotScopeIds, optimized); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); if (suspense.deps === 0) { - suspense.resolve(); + suspense.resolve(false, true); } return result; } function normalizeSuspenseChildren(vnode) { const { shapeFlag, children } = vnode; const isSlotChildren = shapeFlag & 32; - vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children); + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); } function normalizeSuspenseSlot(s) { @@ -2775,7 +3050,7 @@ function normalizeSuspenseSlot(s) { } if (isArray(s)) { const singleChild = filterSingleRoot(s); - if (!singleChild) { + if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { warn2(` slots expect a single root node.`); } s = singleChild; @@ -2806,64 +3081,58 @@ function setActiveBranch(suspense, branch) { updateHOCHostEl(parentComponent, el); } } -function provide(key, value) { - if (!currentInstance) { - if (true) { - warn2(`provide() can only be used inside setup().`); - } - } else { - let provides = currentInstance.provides; - const parentProvides = currentInstance.parent && currentInstance.parent.provides; - if (parentProvides === provides) { - provides = currentInstance.provides = Object.create(parentProvides); - } - provides[key] = value; - } -} -function inject(key, defaultValue, treatDefaultAsFactory = false) { - const instance = currentInstance || currentRenderingInstance; - if (instance) { - const provides = instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides; - if (provides && key in provides) { - return provides[key]; - } else if (arguments.length > 1) { - return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance.proxy) : defaultValue; - } else if (true) { - warn2(`injection "${String(key)}" not found.`); - } - } else if (true) { - warn2(`inject() can only be used inside setup() or functional components.`); - } +function isVNodeSuspensible(vnode) { + var _a; + return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false; } function watchEffect(effect2, options) { return doWatch(effect2, null, options); } function watchPostEffect(effect2, options) { - return doWatch(effect2, null, true ? Object.assign(Object.assign({}, options), { flush: "post" }) : { flush: "post" }); + return doWatch( + effect2, + null, + true ? extend({}, options, { flush: "post" }) : { flush: "post" } + ); } function watchSyncEffect(effect2, options) { - return doWatch(effect2, null, true ? Object.assign(Object.assign({}, options), { flush: "sync" }) : { flush: "sync" }); + return doWatch( + effect2, + null, + true ? extend({}, options, { flush: "sync" }) : { flush: "sync" } + ); } var INITIAL_WATCHER_VALUE = {}; function watch(source, cb, options) { if (!isFunction(cb)) { - warn2(`\`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.`); + warn2( + `\`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, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) { + var _a; if (!cb) { if (immediate !== void 0) { - warn2(`watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.`); + warn2( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); } if (deep !== void 0) { - warn2(`watch() "deep" option is only respected when using the watch(source, callback, options?) signature.`); + warn2( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); } } const warnInvalidSource = (s) => { - warn2(`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.`); + warn2( + `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.` + ); }; - const instance = getCurrentScope() === (currentInstance === null || currentInstance === void 0 ? void 0 : currentInstance.scope) ? currentInstance : null; + const instance = getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null; let getter; let forceTrigger = false; let isMultiSource = false; @@ -2882,24 +3151,14 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM } else if (isReactive(s)) { return traverse(s); } else if (isFunction(s)) { - return callWithErrorHandling( - s, - instance, - 2 - /* ErrorCodes.WATCH_GETTER */ - ); + return callWithErrorHandling(s, instance, 2); } else { warnInvalidSource(s); } }); } else if (isFunction(source)) { if (cb) { - getter = () => callWithErrorHandling( - source, - instance, - 2 - /* ErrorCodes.WATCH_GETTER */ - ); + getter = () => callWithErrorHandling(source, instance, 2); } else { getter = () => { if (instance && instance.isUnmounted) { @@ -2908,7 +3167,12 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM if (cleanup) { cleanup(); } - return callWithAsyncErrorHandling(source, instance, 3, [onCleanup]); + return callWithAsyncErrorHandling( + source, + instance, + 3, + [onCleanup] + ); }; } } else { @@ -2922,12 +3186,8 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM let cleanup; let onCleanup = (fn) => { cleanup = effect2.onStop = () => { - callWithErrorHandling( - fn, - instance, - 4 - /* ErrorCodes.WATCH_CLEANUP */ - ); + callWithErrorHandling(fn, instance, 4); + cleanup = effect2.onStop = void 0; }; }; let ssrCleanup; @@ -2996,7 +3256,10 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM oldValue = effect2.run(); } } else if (flush === "post") { - queuePostRenderEffect(effect2.run.bind(effect2), instance && instance.suspense); + queuePostRenderEffect( + effect2.run.bind(effect2), + instance && instance.suspense + ); } else { effect2.run(); } @@ -3041,10 +3304,7 @@ function createPathGetter(ctx, path) { }; } function traverse(value, seen) { - if (!isObject(value) || value[ - "__v_skip" - /* ReactiveFlags.SKIP */ - ]) { + if (!isObject(value) || value["__v_skip"]) { return value; } seen = seen || /* @__PURE__ */ new Set(); @@ -3069,6 +3329,66 @@ function traverse(value, seen) { } return value; } +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn2("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + const internalInstance = currentRenderingInstance; + if (internalInstance === null) { + warn2(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getExposeProxy(internalInstance) || internalInstance.proxy; + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} +var leaveCbKey = Symbol("_leaveCb"); +var enterCbKey = Symbol("_enterCb"); function useTransitionState() { const state = { isMounted: false, @@ -3085,28 +3405,29 @@ function useTransitionState() { return state; } var TransitionHookValidator = [Function, Array]; +var BaseTransitionPropsValidators = { + 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 +}; 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 - }, + props: BaseTransitionPropsValidators, setup(props, { slots }) { const instance = getCurrentInstance(); const state = useTransitionState(); @@ -3122,7 +3443,9 @@ var BaseTransitionImpl = { for (const c of children) { if (c.type !== Comment) { if (hasFound) { - warn2(" can only be used on a single element or component. Use for lists."); + warn2( + " can only be used on a single element or component. Use for lists." + ); break; } child = c; @@ -3144,7 +3467,12 @@ var BaseTransitionImpl = { if (!innerChild) { return emptyPlaceholder(child); } - const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance); + const enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance + ); setTransitionHooks(innerChild, enterHooks); const oldChild = instance.subTree; const oldInnerChild = oldChild && getKeepAliveChild(oldChild); @@ -3160,7 +3488,12 @@ var BaseTransitionImpl = { } } if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { - const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance); + const leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); setTransitionHooks(oldInnerChild, leavingHooks); if (mode === "out-in") { state.isLeaving = true; @@ -3173,11 +3506,14 @@ var BaseTransitionImpl = { return emptyPlaceholder(child); } else if (mode === "in-out" && innerChild.type !== Comment) { leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { - const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild); + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; - el._leaveCb = () => { + el[leaveCbKey] = () => { earlyRemove(); - el._leaveCb = void 0; + el[leaveCbKey] = void 0; delete enterHooks.delayedLeave; }; enterHooks.delayedLeave = delayedLeave; @@ -3199,11 +3535,32 @@ function getLeavingNodesForType(state, vnode) { return leavingVNodesCache; } function resolveTransitionHooks(vnode, props, state, instance) { - const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props; + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; const key = String(vnode.key); const leavingVNodesCache = getLeavingNodesForType(state, vnode); const callHook3 = (hook, args) => { - hook && callWithAsyncErrorHandling(hook, instance, 9, args); + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); }; const callAsyncHook = (hook, args) => { const done = args[1]; @@ -3227,15 +3584,15 @@ function resolveTransitionHooks(vnode, props, state, instance) { return; } } - if (el._leaveCb) { - el._leaveCb( + if (el[leaveCbKey]) { + el[leaveCbKey]( true /* cancelled */ ); } const leavingVNode = leavingVNodesCache[key]; - if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) { - leavingVNode.el._leaveCb(); + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); } callHook3(hook, [el]); }, @@ -3253,7 +3610,7 @@ function resolveTransitionHooks(vnode, props, state, instance) { } } let called = false; - const done = el._enterCb = (cancelled) => { + const done = el[enterCbKey] = (cancelled) => { if (called) return; called = true; @@ -3265,7 +3622,7 @@ function resolveTransitionHooks(vnode, props, state, instance) { if (hooks.delayedLeave) { hooks.delayedLeave(); } - el._enterCb = void 0; + el[enterCbKey] = void 0; }; if (hook) { callAsyncHook(hook, [el, done]); @@ -3275,8 +3632,8 @@ function resolveTransitionHooks(vnode, props, state, instance) { }, leave(el, remove2) { const key2 = String(vnode.key); - if (el._enterCb) { - el._enterCb( + if (el[enterCbKey]) { + el[enterCbKey]( true /* cancelled */ ); @@ -3286,7 +3643,7 @@ function resolveTransitionHooks(vnode, props, state, instance) { } callHook3(onBeforeLeave, [el]); let called = false; - const done = el._leaveCb = (cancelled) => { + const done = el[leaveCbKey] = (cancelled) => { if (called) return; called = true; @@ -3296,7 +3653,7 @@ function resolveTransitionHooks(vnode, props, state, instance) { } else { callHook3(onAfterLeave, [el]); } - el._leaveCb = void 0; + el[leaveCbKey] = void 0; if (leavingVNodesCache[key2] === vnode) { delete leavingVNodesCache[key2]; } @@ -3322,7 +3679,11 @@ function emptyPlaceholder(vnode) { } } function getKeepAliveChild(vnode) { - return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode; + return isKeepAlive(vnode) ? ( + // #7121 ensure get the child component subtree in case + // it's been replaced during HMR + vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0 + ) : vnode; } function setTransitionHooks(vnode, hooks) { if (vnode.shapeFlag & 6 && vnode.component) { @@ -3343,7 +3704,9 @@ function getTransitionRawChildren(children, keepComment = false, parentKey) { if (child.type === Fragment) { if (child.patchFlag & 128) keyedFragmentCount++; - ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key)); + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); } else if (keepComment || child.type !== Comment) { ret.push(key != null ? cloneVNode(child, { key }) : child); } @@ -3355,8 +3718,12 @@ function getTransitionRawChildren(children, keepComment = false, parentKey) { } return ret; } -function defineComponent(options) { - return isFunction(options) ? { setup: options, name: options.name } : options; +function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8326: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; } var isAsyncWrapper = (i) => !!i.type.__asyncLoader; function defineAsyncComponent(source) { @@ -3399,7 +3766,9 @@ function defineAsyncComponent(source) { return pendingRequest; } if (!comp) { - warn2(`Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`); + warn2( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); } if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { comp = comp.default; @@ -3453,7 +3822,9 @@ function defineAsyncComponent(source) { if (timeout != null) { setTimeout(() => { if (!loaded.value && !error.value) { - const err = new Error(`Async component timed out after ${timeout}ms.`); + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); onError(err); error.value = err; } @@ -3518,12 +3889,29 @@ var KeepAliveImpl = { instance.__v_cache = cache; } const parentSuspense = instance.suspense; - const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; const storageContainer = createElement("div"); sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { const instance2 = vnode.component; move(vnode, container, anchor, 0, parentSuspense); - patch(instance2.vnode, vnode, container, anchor, instance2, parentSuspense, isSVG, vnode.slotScopeIds, optimized); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + isSVG, + vnode.slotScopeIds, + optimized + ); queuePostRenderEffect(() => { instance2.isDeactivated = false; if (instance2.a) { @@ -3626,7 +4014,9 @@ var KeepAliveImpl = { } let vnode = getInnerChild(rawVNode); const comp = vnode.type; - const name = getComponentName(isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp); + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); const { include, exclude, max } = props; if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { current = vnode; @@ -3742,162 +4132,31 @@ function injectHook(type, hook, target = currentInstance, prepend = false) { return wrappedHook; } else if (true) { const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, "")); - warn2(`${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.`); + warn2( + `${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 = (lifecycle) => (hook, target = currentInstance) => ( // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) ); -var onBeforeMount = createHook( - "bm" - /* LifecycleHooks.BEFORE_MOUNT */ -); -var onMounted = createHook( - "m" - /* LifecycleHooks.MOUNTED */ -); -var onBeforeUpdate = createHook( - "bu" - /* LifecycleHooks.BEFORE_UPDATE */ -); -var onUpdated = createHook( - "u" - /* LifecycleHooks.UPDATED */ -); -var onBeforeUnmount = createHook( - "bum" - /* LifecycleHooks.BEFORE_UNMOUNT */ -); -var onUnmounted = createHook( - "um" - /* LifecycleHooks.UNMOUNTED */ -); -var onServerPrefetch = createHook( - "sp" - /* LifecycleHooks.SERVER_PREFETCH */ -); +var onBeforeMount = createHook("bm"); +var onMounted = createHook("m"); +var onBeforeUpdate = createHook("bu"); +var onUpdated = createHook("u"); +var onBeforeUnmount = createHook("bum"); +var onUnmounted = createHook("um"); +var onServerPrefetch = createHook("sp"); var onRenderTriggered = createHook( "rtg" - /* LifecycleHooks.RENDER_TRIGGERED */ ); var onRenderTracked = createHook( "rtc" - /* LifecycleHooks.RENDER_TRACKED */ ); function onErrorCaptured(hook, target = currentInstance) { injectHook("ec", hook, target); } -function validateDirectiveName(name) { - if (isBuiltInDirective(name)) { - warn2("Do not use built-in directive ids as custom directive id: " + name); - } -} -function withDirectives(vnode, directives) { - const internalInstance = currentRenderingInstance; - if (internalInstance === null) { - warn2(`withDirectives can only be used inside render functions.`); - return vnode; - } - const instance = getExposeProxy(internalInstance) || internalInstance.proxy; - const bindings = vnode.dirs || (vnode.dirs = []); - for (let i = 0; i < directives.length; i++) { - let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; - if (dir) { - if (isFunction(dir)) { - dir = { - mounted: dir, - updated: dir - }; - } - if (dir.deep) { - traverse(value); - } - bindings.push({ - dir, - instance, - value, - oldValue: void 0, - arg, - modifiers - }); - } - } - return vnode; -} -function invokeDirectiveHook(vnode, prevVNode, instance, name) { - const bindings = vnode.dirs; - const oldBindings = prevVNode && prevVNode.dirs; - for (let i = 0; i < bindings.length; i++) { - const binding = bindings[i]; - if (oldBindings) { - binding.oldValue = oldBindings[i].value; - } - let hook = binding.dir[name]; - if (hook) { - pauseTracking(); - callWithAsyncErrorHandling(hook, instance, 8, [ - vnode.el, - binding, - vnode, - prevVNode - ]); - resetTracking(); - } - } -} -var COMPONENTS = "components"; -var DIRECTIVES = "directives"; -function resolveComponent(name, maybeSelfReference) { - return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; -} -var NULL_DYNAMIC_COMPONENT = Symbol(); -function resolveDynamicComponent(component) { - if (isString(component)) { - return resolveAsset(COMPONENTS, component, false) || component; - } else { - return component || NULL_DYNAMIC_COMPONENT; - } -} -function resolveDirective(name) { - return resolveAsset(DIRECTIVES, name); -} -function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { - const instance = currentRenderingInstance || currentInstance; - if (instance) { - const Component = instance.type; - if (type === COMPONENTS) { - const selfName = getComponentName( - Component, - false - /* do not include inferred name to avoid breaking existing code */ - ); - if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { - return Component; - } - } - const res = ( - // local registration - // check instance[type] first which is resolved for options API - resolve(instance[type] || Component[type], name) || // global registration - resolve(instance.appContext[type], name) - ); - if (!res && maybeSelfReference) { - return Component; - } - if (warnMissing && !res) { - const extra = type === COMPONENTS ? ` -If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; - warn2(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); - } - return res; - } else if (true) { - warn2(`resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`); - } -} -function resolve(registry, name) { - return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); -} function renderList(source, renderItem, cache, index) { let ret; const cached = cache && cache[index]; @@ -3916,7 +4175,10 @@ function renderList(source, renderItem, cache, index) { } } else if (isObject(source)) { if (source[Symbol.iterator]) { - ret = Array.from(source, (item, i) => renderItem(item, i, void 0, cached && cached[i])); + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); } else { const keys = Object.keys(source); ret = new Array(keys.length); @@ -3959,7 +4221,9 @@ function renderSlot(slots, name, props = {}, fallback, noSlotted) { } let slot = slots[name]; if (slot && slot.length > 1) { - warn2(`SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`); + warn2( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); slot = () => []; } if (slot && slot._c) { @@ -3976,7 +4240,6 @@ function renderSlot(slots, name, props = {}, fallback, noSlotted) { }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 ? 64 : -2 - /* PatchFlags.BAIL */ ); if (!noSlotted && rendered.scopeId) { rendered.slotScopeIds = [rendered.scopeId + "-s"]; @@ -4083,6 +4346,8 @@ var PublicInstanceProxyHandlers = { if (key === "$attrs") { track(instance, "get", key); markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); } return publicGetter(instance); } else if ( @@ -4104,9 +4369,15 @@ var PublicInstanceProxyHandlers = { // to infinite warning loop key.indexOf("__v") !== 0)) { if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { - warn2(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`); + warn2( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); } else if (instance === currentRenderingInstance) { - warn2(`Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`); + warn2( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); } } }, @@ -4126,7 +4397,9 @@ var PublicInstanceProxyHandlers = { return false; } if (key[0] === "$" && key.slice(1) in instance) { - warn2(`Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.`); + warn2( + `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.` + ); return false; } else { if (key in instance.appContext.config.globalProperties) { @@ -4141,7 +4414,9 @@ var PublicInstanceProxyHandlers = { } return true; }, - has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) { + has({ + _: { data, setupState, accessCache, ctx, appContext, propsOptions } + }, key) { let normalizedProps; return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key); }, @@ -4156,25 +4431,35 @@ var PublicInstanceProxyHandlers = { }; if (true) { PublicInstanceProxyHandlers.ownKeys = (target) => { - warn2(`Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`); + warn2( + `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.` + ); return Reflect.ownKeys(target); }; } -var RuntimeCompiledPublicInstanceProxyHandlers = extend({}, PublicInstanceProxyHandlers, { - get(target, key) { - if (key === Symbol.unscopables) { - return; +var RuntimeCompiledPublicInstanceProxyHandlers = extend( + {}, + PublicInstanceProxyHandlers, + { + get(target, key) { + if (key === Symbol.unscopables) { + return; + } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has2 = key[0] !== "_" && !isGloballyAllowed(key); + if (!has2 && PublicInstanceProxyHandlers.has(_, key)) { + warn2( + `Property ${JSON.stringify( + key + )} should not start with _ which is a reserved prefix for Vue internals.` + ); + } + return has2; } - return PublicInstanceProxyHandlers.get(target, key, target); - }, - has(_, key) { - const has2 = key[0] !== "_" && !isGloballyWhitelisted(key); - if (!has2 && PublicInstanceProxyHandlers.has(_, key)) { - warn2(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`); - } - return has2; } -}); +); function createDevRenderContext(instance) { const target = {}; Object.defineProperty(target, `_`, { @@ -4195,7 +4480,10 @@ function createDevRenderContext(instance) { return target; } function exposePropsOnRenderContext(instance) { - const { ctx, propsOptions: [propsOptions] } = instance; + const { + ctx, + propsOptions: [propsOptions] + } = instance; if (propsOptions) { Object.keys(propsOptions).forEach((key) => { Object.defineProperty(ctx, key, { @@ -4212,7 +4500,11 @@ function exposeSetupStateOnRenderContext(instance) { Object.keys(toRaw(setupState)).forEach((key) => { if (!setupState.__isScriptSetup) { if (isReservedPrefix(key[0])) { - warn2(`setup() return property ${JSON.stringify(key)} should not start with "$" or "_" which are reserved prefixes for Vue internals.`); + warn2( + `setup() return property ${JSON.stringify( + key + )} should not start with "$" or "_" which are reserved prefixes for Vue internals.` + ); return; } Object.defineProperty(ctx, key, { @@ -4224,6 +4516,160 @@ function exposeSetupStateOnRenderContext(instance) { } }); } +var warnRuntimeUsage = (method) => warn2( + `${method}() is a compiler-hint helper that is only usable inside - - diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css old mode 100644 new mode 100755 index 42e1f6c..daaa010 --- a/docs/.vitepress/theme/custom.css +++ b/docs/.vitepress/theme/custom.css @@ -3,8 +3,10 @@ --color-primary-light: hsl(11, 100%, 31%); --color-primary-dark: hsl(11, 100%, 75%); /* custom theme */ - --vp-c-brand: var(--color-primary-light); + --vp-c-brand-1: var(--color-primary-light); + --vp-c-brand-2: var(--color-primary-light); + --vp-button-brand-bg: var(--color-primary-light); --vp-button-brand-text: var(--vp-c-bg); --vp-button-brand-hover-text: var(--color-primary-light); --vp-button-brand-active-text: var(--color-primary-light); @@ -14,31 +16,34 @@ --vp-button-brand-hover-border: var(--color-primary-light); --vp-button-brand-active-border: var(--color-primary-light); - --vp-custom-block-tip-bg: var(--vp-c-bg); + /* --vp-custom-block-tip-bg: var(--vp-c-bg); --vp-custom-block-danger-bg: var(--vp-c-bg); --vp-custom-block-info-bg: var(--vp-c-bg); --vp-custom-block-warning-bg: var(--vp-c-bg); --vp-custom-block-tip-text: hsl(161, 96%, 20%); --vp-custom-block-warning-text: hsl(26, 95%, 29%); - --vp-custom-block-danger-text: hsl(350, 75%, 38%); + --vp-custom-block-danger-text: hsl(350, 75%, 38%); */ --vp-code-font-size: 0.9375rem; } .dark { - --vp-c-brand: var(--color-primary-dark); + --vp-c-brand-1: var(--color-primary-dark); + --vp-c-brand-2: var(--color-primary-dark); + + --vp-button-brand-bg: var(--color-primary-dark); --vp-button-brand-hover-text: var(--vp-c-dark); --vp-button-brand-active-text: var(--vp-c-dark); --vp-button-brand-border: var(--color-primary-dark); --vp-button-brand-hover-border: var(--color-primary-dark); --vp-button-brand-active-border: var(--color-primary-dark); - --vp-custom-block-tip-bg: var(--vp-c-bg); + /* --vp-custom-block-tip-bg: var(--vp-c-bg); --vp-custom-block-danger-bg: var(--vp-c-bg); --vp-custom-block-info-bg: var(--vp-c-bg); --vp-custom-block-warning-bg: var(--vp-c-bg); --vp-custom-block-tip-text: hsl(161, 78%, 43%); --vp-custom-block-warning-text: hsl(32, 95%, 44%); - --vp-custom-block-danger-text: hsl(0, 100%, 76%); + --vp-custom-block-danger-text: hsl(0, 100%, 76%); */ } :where(details summary) { @@ -46,7 +51,7 @@ } a:hover { - text-decoration: underline; + text-decoration: none; } .prev-next a:hover { diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js old mode 100644 new mode 100755 index d0b34c2..0eb14bc --- a/docs/.vitepress/theme/index.js +++ b/docs/.vitepress/theme/index.js @@ -1,21 +1,6 @@ import DefaultTheme from "vitepress/theme"; -import PageLayout from "./layouts/PageLayout.vue"; import "./custom.css"; -const modules = import.meta.globEager("./components/**/*.vue"); -const components = []; - -for (const path in modules) { - components.push(modules[path].default); -} - export default { ...DefaultTheme, - // Layout: PageLayout, - enhanceApp({ app }) { - // import all components globally - components.forEach(comp => { - app.component(comp.name, comp); - }); - } }; diff --git a/docs/.vitepress/theme/layouts/PageLayout.vue b/docs/.vitepress/theme/layouts/PageLayout.vue old mode 100644 new mode 100755 diff --git a/docs/a-propos.md b/docs/a-propos.md old mode 100644 new mode 100755 diff --git a/docs/design/emails/assets/2col.jpg b/docs/design/emails/assets/2col.jpg old mode 100644 new mode 100755 diff --git a/docs/design/emails/assets/desktop.jpg b/docs/design/emails/assets/desktop.jpg old mode 100644 new mode 100755 diff --git a/docs/design/emails/assets/mobile.jpg b/docs/design/emails/assets/mobile.jpg old mode 100644 new mode 100755 diff --git a/docs/design/emails/assets/shadow-mobile.jpg b/docs/design/emails/assets/shadow-mobile.jpg old mode 100644 new mode 100755 diff --git a/docs/design/emails/index.md b/docs/design/emails/index.md old mode 100644 new mode 100755 diff --git a/docs/design/index.md b/docs/design/index.md old mode 100644 new mode 100755 diff --git a/docs/dev/01-debutant/css.md b/docs/dev/01-debutant/css.md old mode 100644 new mode 100755 diff --git a/docs/dev/01-debutant/html.md b/docs/dev/01-debutant/html.md old mode 100644 new mode 100755 diff --git a/docs/dev/01-debutant/index.md b/docs/dev/01-debutant/index.md old mode 100644 new mode 100755 diff --git a/docs/dev/01-debutant/typographie.md b/docs/dev/01-debutant/typographie.md new file mode 100644 index 0000000..f1380c2 --- /dev/null +++ b/docs/dev/01-debutant/typographie.md @@ -0,0 +1,76 @@ +# Utiliser des typographies sur le web + +Lorsque l'on publie du contenu sur le web, nous avons la possibilité de personnaliser les polices de caractères utilisées. + +## Les polices système + +Il existe une famille informelle de polices appellées "polices systèmes". Ce sont les polices qui ont le plus de chance d'être installées sur la quasi-totalité des ordinateurs, quelque soit le système d'exploitation utilisé. On y trouve notamment : + +- Arial +- Times New Roman +- Trebuchet +- Verdana +- Georgia +- Courier + +## Modifier la police + +En CSS, la propriété permettant de changer la police de caractères est `font-family` + +```css +body { + font-family: Arial; +} +``` + +Afin de s'assurer un certain contrôle sur la police affichée dans le cas où l'utilisateur n'aurait pas celle que nous voulons utiliser, il convient de lister des polices alternatives. On termine généralement en utilisant un mot-clé générique définissant la famille de police souhaitée. + +```css +body { + font-family: Helvetica, Arial, sans-serif; +} +``` + +## Les polices personnalisées + +L'intérêt des polices web vient surtout de la possibilité d'utiliser sa (ou ses) propre police. + +### Choisir une police + +La première étape est de choisir une police adaptée au projet. Il existe de nombreux sites proposant des polices gratuites à télécharger. Je vous recommande [Font Squirrel](https://www.fontsquirrel.com/) ou [Google fonts](https://fonts.google.com/). + +### Préparer la police + +Un fichier de police sera généralement au format `.otf` ou `.ttf`. Ces formats, bien que compatibles, ne sont pas adaptés pour une utilisation web. Il convient de les convertir au format `.woff2`. Vous pouvez le faire grâce à des outils en ligne tels que [Transfonter.](https://transfonter.org/) + +Il est aussi possible de supprimer les caractères inutilisés dans le fichier de police (comme les alphabets non latin) afin de réduire le poids du fichier. + +### Importer la police + +Avant de pouvoir utiliser notre police personnalisée, nous devons la rendre disponible sur notre site web. Cela se passe dans le fichier CSS, grâce à la déclaration `@font-face`. + +```css +@font-face { + font-family: "Luciole"; // on définit le nom de la police + src: url("../fonts/webfonts/Luciole-Regular.woff2") format("woff2"); // chemin vers le fichier .woff2 + font-weight: normal; // graisse de la police + font-style: normal; // style de la police + font-display: swap; // stratégie de chargement de la police +} +``` + +### Utiliser la police + +Il ne reste plus qu'à indiquer aux éléments concernés qu'ils doivent utiliser notre police personnalisée ! + +:::warning Attention +N'oubliez pas les polices de secours 😉 +::: + +```css +h1, +h2, +h3 { + font-family: "Luciole", Arial, sans-serif; +} +``` diff --git a/docs/dev/02-intermediaire/css.md b/docs/dev/02-intermediaire/css.md new file mode 100644 index 0000000..f2bc048 --- /dev/null +++ b/docs/dev/02-intermediaire/css.md @@ -0,0 +1,114 @@ +# CSS Intermédiaire + +Dans cette partie plus poussée, nous verrons des techniques de mise en page avancée comme les grilles CSS ainsi que des fonctionnalités CSS dynamiques telles que les variables. + +## Les variables CSS + +Depuis quelques années, le langage CSS permet de définir et d'utiliser des variables. Une variable est un élément qui stocke une valeur. +L'intérêt des variables réside principalement, mais pas uniquement, dans le fait de pouvoir utiliser une même valeur dynamique à plusieurs endroits. Ainsi, si la variable doit être modifiée, elle modifiera toutes ses instances en une seule fois. + +Par exemple, si la couleur principale d'une marque change, il suffira de mettre la variable à jour et pas de chercher et modifier chaque occurrence de la couleur en question dans le code. + +Une variable peut stocker n'importe quelle valeur. Qu'il s'agisse d'une couleur, d'une suite de chiffre ou encore d'une fonction entière. + +### Syntaxe + +Pour définir une variable en CSS, il convient de respecter la nomenclature suivante : +`--` `NOM-DE-VARIABLE` `:` `VALEUR` + +Les variables globales sont généralement définies dans un sélecteur `:root` +Par exemple : + +```css +:root { + --text-color: #222222; + --bg-color: white; +} +``` + +### Utilisation + +Une fois définies, les variables sont disponibles mais n'auront pas d'effet tant qu'elles ne seront pas appliquées à un propriété CSS. Pour utiliser une variable, il faut utiliser la fonction CSS `var()` + +```css +body { + color: var(--text-color); // #222222 + background-color: var(--bg-color); // white +} +``` + +Afin d'éviter d'utiliser une variable qui n'existe pas ou qui pourrait être supprimée, on peut définir une deuxième valeur dans la fonction `var()` qui servira de valeur de secours. + +```css +body { + color: var(--text-color, black); // #222222 + background-color: var(--brand-color, #f0f0f0); // #f0f0f0 +} +``` + +## CSS Grid + +La propriété `display: grid` permet de créer des grilles de mise en page, c'est-à-dire des colonnes, des lignes et des cellules dans lesquelles placer le contenu HTML. + +Je vous recommande la lecture détaillée et l'utilisation des exemples dynamiques de [cet article sur les grilles CSS.](https://www.joshwcomeau.com/css/interactive-guide-to-grid/) + +### Utilisation + +La grille se déclare sur un élément (parent) contenant d'autres éléments (enfants). Toute la structure de la grille sera également déclarée sur la parent. + +```css +.parent { + // On initialise la grille + display: grid; + // On créé des colonnes + grid-template-columns: 1fr 3fr; // 2 colonnes + // On créé des lignes + grid-template-rows: 100px 1fr 50px; // 3 lignes +} +``` + +L'unité `fr` utilisée ici permet de dire aux colonnes et lignes de répartir l'espace disponible selon des **fr**actions. Ainsi, la deuxième colonne bénificiera des 3 quart de l'espace disponible alors que la première n'en aura qu'un quart. + +### La répétition de colonnes + +Si nos colonnes doivent partager l'espace de manière égale, il est possible d'utiliser la fonction `repeat()` afin d'optimiser la déclaration. + +```css +.parent { + display: grid; + grid-template-columns: repeat(3, 1fr); // 3 colonnes de 1fr chacune +} +``` + +### La répétition responsive + +Bien que pratique, cette déclaration n'est pas responsive. On peut la modifier dans une règle `@media` en fonction de la taille de la fenêtre. On peut également définir une grille fluide qui s'adaptera d'elle-même à l'espace disponible dans le navigateur. + +```css +.parent { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); +} +``` + +- `auto-fit` permet de dire aux cellules de grandir afin de remplir l'espace disponible dans la ligne +- `minmax()` est une fonction qui permet de définir une valeur minimum et une valeur maximum + - `300px` est la largeur minimum d'une cellule + - `1fr` est la largeur maximum + +Ainsi, la grille va calculer dynamiquement combien d'enfants peuvent rentrer côte-à-côte dans l'espace disponible en se basant sur les valeurs min et max. Lorsqu'un enfant n'a plus la place, il passe à la ligne. + +#### Optimisation finale + +Pour éviter de causer un débordement horizontal à cause de la valeur min sur les petits écrans, on préfèrera utiliser un garde-fou qui garantira que les enfants resteront contenus dans la page. + +```css +.parent { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); +} +``` + +- `min()` est une fonction qui permet de choisir la plus petite valeur entre deux + - `300px` est la largeur minimum idéale d'une cellule + - `100%` est la largeur minimum permise pour éviter un débordement horizontal diff --git a/docs/dev/02-intermediaire/git.md b/docs/dev/02-intermediaire/git.md old mode 100644 new mode 100755 diff --git a/docs/dev/02-intermediaire/html.md b/docs/dev/02-intermediaire/html.md old mode 100644 new mode 100755 diff --git a/docs/dev/02-intermediaire/index.md b/docs/dev/02-intermediaire/index.md old mode 100644 new mode 100755 diff --git a/docs/dev/02-intermediaire/javascript.md b/docs/dev/02-intermediaire/javascript.md old mode 100644 new mode 100755 diff --git a/docs/dev/02-intermediaire/markdown.md b/docs/dev/02-intermediaire/markdown.md old mode 100644 new mode 100755 diff --git a/docs/dev/02-intermediaire/nodejs.md b/docs/dev/02-intermediaire/nodejs.md old mode 100644 new mode 100755 diff --git a/docs/dev/03-avance/html.md b/docs/dev/03-avance/html.md old mode 100644 new mode 100755 diff --git a/docs/dev/03-avance/index.md b/docs/dev/03-avance/index.md old mode 100644 new mode 100755 diff --git a/docs/dev/code-camp/index.md b/docs/dev/code-camp/index.md old mode 100644 new mode 100755 diff --git a/docs/dev/code-camp/sujets.md b/docs/dev/code-camp/sujets.md old mode 100644 new mode 100755 diff --git a/docs/dev/docs.md b/docs/dev/docs.md old mode 100644 new mode 100755 diff --git a/docs/dev/fragments/base/01-structure.md b/docs/dev/fragments/base/01-structure.md old mode 100644 new mode 100755 diff --git a/docs/dev/fragments/base/02-robots.md b/docs/dev/fragments/base/02-robots.md old mode 100644 new mode 100755 diff --git a/docs/dev/fragments/css/00-reset.md b/docs/dev/fragments/css/00-reset.md old mode 100644 new mode 100755 diff --git a/docs/dev/fragments/css/01-centrer.md b/docs/dev/fragments/css/01-centrer.md old mode 100644 new mode 100755 diff --git a/docs/dev/fragments/html/01-titres.md b/docs/dev/fragments/html/01-titres.md old mode 100644 new mode 100755 diff --git a/docs/dev/fragments/html/02-paragraphe.md b/docs/dev/fragments/html/02-paragraphe.md old mode 100644 new mode 100755 diff --git a/docs/dev/fragments/html/04-image.md b/docs/dev/fragments/html/04-image.md old mode 100644 new mode 100755 diff --git a/docs/dev/fragments/html/index.md b/docs/dev/fragments/html/index.md old mode 100644 new mode 100755 diff --git a/docs/dev/goat.md b/docs/dev/goat.md old mode 100644 new mode 100755 diff --git a/docs/dev/index.md b/docs/dev/index.md old mode 100644 new mode 100755 diff --git a/docs/dev/outils.md b/docs/dev/outils.md old mode 100644 new mode 100755 diff --git a/docs/index.md b/docs/index.md old mode 100644 new mode 100755 diff --git a/docs/public/robots.txt b/docs/public/robots.txt old mode 100644 new mode 100755 diff --git a/docs/snippets/css/base.css b/docs/snippets/css/base.css old mode 100644 new mode 100755 diff --git a/docs/snippets/css/reset.css b/docs/snippets/css/reset.css old mode 100644 new mode 100755 diff --git a/docs/snippets/html/base.html b/docs/snippets/html/base.html old mode 100644 new mode 100755 diff --git a/docs/snippets/html/structure.html b/docs/snippets/html/structure.html old mode 100644 new mode 100755 diff --git a/docs/snippets/js/DOM-select.js b/docs/snippets/js/DOM-select.js old mode 100644 new mode 100755 diff --git a/docs/snippets/js/variables.js b/docs/snippets/js/variables.js old mode 100644 new mode 100755 diff --git a/docs/snippets/robots.txt b/docs/snippets/robots.txt old mode 100644 new mode 100755 diff --git a/package.json b/package.json old mode 100644 new mode 100755 index 1a77201..5bbb9b1 --- a/package.json +++ b/package.json @@ -1,13 +1,12 @@ { "name": "vitepress-starter", - "packageManager": "yarn@3.2.1", "scripts": { "dev": "vitepress dev docs", "docs:build": "vitepress build docs", "serve": "vitepress serve docs" }, "devDependencies": { - "vitepress": "1.0.0-alpha.63", + "vitepress": "^1.0.0-rc.31", "vue": "^3.2.47" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index a0414c7..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,782 +0,0 @@ -lockfileVersion: 5.4 - -specifiers: - vitepress: 1.0.0-alpha.63 - vue: ^3.2.47 - -devDependencies: - vitepress: 1.0.0-alpha.63 - vue: 3.2.47 - -packages: - - /@algolia/autocomplete-core/1.7.4: - resolution: {integrity: sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==} - dependencies: - '@algolia/autocomplete-shared': 1.7.4 - dev: true - - /@algolia/autocomplete-preset-algolia/1.7.4_algoliasearch@4.16.0: - resolution: {integrity: sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/autocomplete-shared': 1.7.4 - algoliasearch: 4.16.0 - dev: true - - /@algolia/autocomplete-shared/1.7.4: - resolution: {integrity: sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==} - dev: true - - /@algolia/cache-browser-local-storage/4.16.0: - resolution: {integrity: sha512-jVrk0YB3tjOhD5/lhBtYCVCeLjZmVpf2kdi4puApofytf/R0scjWz0GdozlW4HhU+Prxmt/c9ge4QFjtv5OAzQ==} - dependencies: - '@algolia/cache-common': 4.16.0 - dev: true - - /@algolia/cache-common/4.16.0: - resolution: {integrity: sha512-4iHjkSYQYw46pITrNQgXXhvUmcekI8INz1m+SzmqLX8jexSSy4Ky4zfGhZzhhhLHXUP3+x/PK/c0qPjxEvRwKQ==} - dev: true - - /@algolia/cache-in-memory/4.16.0: - resolution: {integrity: sha512-p7RYykvA6Ip6QENxrh99nOD77otVh1sJRivcgcVpnjoZb5sIN3t33eUY1DpB9QSBizcrW+qk19rNkdnZ43a+PQ==} - dependencies: - '@algolia/cache-common': 4.16.0 - dev: true - - /@algolia/client-account/4.16.0: - resolution: {integrity: sha512-eydcfpdIyuWoKgUSz5iZ/L0wE/Wl7958kACkvTHLDNXvK/b8Z1zypoJavh6/km1ZNQmFpeYS2jrmq0kUSFn02w==} - dependencies: - '@algolia/client-common': 4.16.0 - '@algolia/client-search': 4.16.0 - '@algolia/transporter': 4.16.0 - dev: true - - /@algolia/client-analytics/4.16.0: - resolution: {integrity: sha512-cONWXH3BfilgdlCofUm492bJRWtpBLVW/hsUlfoFtiX1u05xoBP7qeiDwh9RR+4pSLHLodYkHAf5U4honQ55Qg==} - dependencies: - '@algolia/client-common': 4.16.0 - '@algolia/client-search': 4.16.0 - '@algolia/requester-common': 4.16.0 - '@algolia/transporter': 4.16.0 - dev: true - - /@algolia/client-common/4.16.0: - resolution: {integrity: sha512-QVdR4019ukBH6f5lFr27W60trRxQF1SfS1qo0IP6gjsKhXhUVJuHxOCA6ArF87jrNkeuHEoRoDU+GlvaecNo8g==} - dependencies: - '@algolia/requester-common': 4.16.0 - '@algolia/transporter': 4.16.0 - dev: true - - /@algolia/client-personalization/4.16.0: - resolution: {integrity: sha512-irtLafssDGPuhYqIwxqOxiWlVYvrsBD+EMA1P9VJtkKi3vSNBxiWeQ0f0Tn53cUNdSRNEssfoEH84JL97SV2SQ==} - dependencies: - '@algolia/client-common': 4.16.0 - '@algolia/requester-common': 4.16.0 - '@algolia/transporter': 4.16.0 - dev: true - - /@algolia/client-search/4.16.0: - resolution: {integrity: sha512-xsfrAE1jO/JDh1wFrRz+alVyW+aA6qnkzmbWWWZWEgVF3EaFqzIf9r1l/aDtDdBtNTNhX9H3Lg31+BRtd5izQA==} - dependencies: - '@algolia/client-common': 4.16.0 - '@algolia/requester-common': 4.16.0 - '@algolia/transporter': 4.16.0 - dev: true - - /@algolia/logger-common/4.16.0: - resolution: {integrity: sha512-U9H8uCzSDuePJmbnjjTX21aPDRU6x74Tdq3dJmdYu2+pISx02UeBJm4kSgc9RW5jcR5j35G9gnjHY9Q3ngWbyQ==} - dev: true - - /@algolia/logger-console/4.16.0: - resolution: {integrity: sha512-+qymusiM+lPZKrkf0tDjCQA158eEJO2IU+Nr/sJ9TFyI/xkFPjNPzw/Qbc8Iy/xcOXGlc6eMgmyjtVQqAWq6UA==} - dependencies: - '@algolia/logger-common': 4.16.0 - dev: true - - /@algolia/requester-browser-xhr/4.16.0: - resolution: {integrity: sha512-gK+kvs6LHl/PaOJfDuwjkopNbG1djzFLsVBklGBsSU6h6VjFkxIpo6Qq80IK14p9cplYZfhfaL12va6Q9p3KVQ==} - dependencies: - '@algolia/requester-common': 4.16.0 - dev: true - - /@algolia/requester-common/4.16.0: - resolution: {integrity: sha512-3Zmcs/iMubcm4zqZ3vZG6Zum8t+hMWxGMzo0/uY2BD8o9q5vMxIYI0c4ocdgQjkXcix189WtZNkgjSOBzSbkdw==} - dev: true - - /@algolia/requester-node-http/4.16.0: - resolution: {integrity: sha512-L8JxM2VwZzh8LJ1Zb8TFS6G3icYsCKZsdWW+ahcEs1rGWmyk9SybsOe1MLnjonGBaqPWJkn9NjS7mRdjEmBtKA==} - dependencies: - '@algolia/requester-common': 4.16.0 - dev: true - - /@algolia/transporter/4.16.0: - resolution: {integrity: sha512-H9BVB2EAjT65w7XGBNf5drpsW39x2aSZ942j4boSAAJPPlLmjtj5IpAP7UAtsV8g9Beslonh0bLa1XGmE/P0BA==} - dependencies: - '@algolia/cache-common': 4.16.0 - '@algolia/logger-common': 4.16.0 - '@algolia/requester-common': 4.16.0 - dev: true - - /@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier/7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/parser/7.21.3: - resolution: {integrity: sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.21.3 - dev: true - - /@babel/types/7.21.3: - resolution: {integrity: sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - dev: true - - /@docsearch/css/3.3.3: - resolution: {integrity: sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==} - dev: true - - /@docsearch/js/3.3.3: - resolution: {integrity: sha512-2xAv2GFuHzzmG0SSZgf8wHX0qZX8n9Y1ZirKUk5Wrdc+vH9CL837x2hZIUdwcPZI9caBA+/CzxsS68O4waYjUQ==} - dependencies: - '@docsearch/react': 3.3.3 - preact: 10.13.2 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/react' - - react - - react-dom - dev: true - - /@docsearch/react/3.3.3: - resolution: {integrity: sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==} - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - dependencies: - '@algolia/autocomplete-core': 1.7.4 - '@algolia/autocomplete-preset-algolia': 1.7.4_algoliasearch@4.16.0 - '@docsearch/css': 3.3.3 - algoliasearch: 4.16.0 - transitivePeerDependencies: - - '@algolia/client-search' - dev: true - - /@esbuild/android-arm/0.17.14: - resolution: {integrity: sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm64/0.17.14: - resolution: {integrity: sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64/0.17.14: - resolution: {integrity: sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64/0.17.14: - resolution: {integrity: sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64/0.17.14: - resolution: {integrity: sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64/0.17.14: - resolution: {integrity: sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64/0.17.14: - resolution: {integrity: sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm/0.17.14: - resolution: {integrity: sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64/0.17.14: - resolution: {integrity: sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32/0.17.14: - resolution: {integrity: sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64/0.17.14: - resolution: {integrity: sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el/0.17.14: - resolution: {integrity: sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64/0.17.14: - resolution: {integrity: sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64/0.17.14: - resolution: {integrity: sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x/0.17.14: - resolution: {integrity: sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64/0.17.14: - resolution: {integrity: sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64/0.17.14: - resolution: {integrity: sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64/0.17.14: - resolution: {integrity: sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64/0.17.14: - resolution: {integrity: sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64/0.17.14: - resolution: {integrity: sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32/0.17.14: - resolution: {integrity: sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64/0.17.14: - resolution: {integrity: sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@types/web-bluetooth/0.0.16: - resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} - dev: true - - /@vitejs/plugin-vue/4.1.0_vite@4.2.1+vue@3.2.47: - resolution: {integrity: sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.0.0 - vue: ^3.2.25 - dependencies: - vite: 4.2.1 - vue: 3.2.47 - dev: true - - /@vue/compiler-core/3.2.47: - resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} - dependencies: - '@babel/parser': 7.21.3 - '@vue/shared': 3.2.47 - estree-walker: 2.0.2 - source-map: 0.6.1 - dev: true - - /@vue/compiler-dom/3.2.47: - resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} - dependencies: - '@vue/compiler-core': 3.2.47 - '@vue/shared': 3.2.47 - dev: true - - /@vue/compiler-sfc/3.2.47: - resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} - dependencies: - '@babel/parser': 7.21.3 - '@vue/compiler-core': 3.2.47 - '@vue/compiler-dom': 3.2.47 - '@vue/compiler-ssr': 3.2.47 - '@vue/reactivity-transform': 3.2.47 - '@vue/shared': 3.2.47 - estree-walker: 2.0.2 - magic-string: 0.25.9 - postcss: 8.4.21 - source-map: 0.6.1 - dev: true - - /@vue/compiler-ssr/3.2.47: - resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} - dependencies: - '@vue/compiler-dom': 3.2.47 - '@vue/shared': 3.2.47 - dev: true - - /@vue/devtools-api/6.5.0: - resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} - dev: true - - /@vue/reactivity-transform/3.2.47: - resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} - dependencies: - '@babel/parser': 7.21.3 - '@vue/compiler-core': 3.2.47 - '@vue/shared': 3.2.47 - estree-walker: 2.0.2 - magic-string: 0.25.9 - dev: true - - /@vue/reactivity/3.2.47: - resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} - dependencies: - '@vue/shared': 3.2.47 - dev: true - - /@vue/runtime-core/3.2.47: - resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} - dependencies: - '@vue/reactivity': 3.2.47 - '@vue/shared': 3.2.47 - dev: true - - /@vue/runtime-dom/3.2.47: - resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==} - dependencies: - '@vue/runtime-core': 3.2.47 - '@vue/shared': 3.2.47 - csstype: 2.6.21 - dev: true - - /@vue/server-renderer/3.2.47_vue@3.2.47: - resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} - peerDependencies: - vue: 3.2.47 - dependencies: - '@vue/compiler-ssr': 3.2.47 - '@vue/shared': 3.2.47 - vue: 3.2.47 - dev: true - - /@vue/shared/3.2.47: - resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} - dev: true - - /@vueuse/core/9.13.0_vue@3.2.47: - resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} - dependencies: - '@types/web-bluetooth': 0.0.16 - '@vueuse/metadata': 9.13.0 - '@vueuse/shared': 9.13.0_vue@3.2.47 - vue-demi: 0.13.11_vue@3.2.47 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true - - /@vueuse/metadata/9.13.0: - resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} - dev: true - - /@vueuse/shared/9.13.0_vue@3.2.47: - resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} - dependencies: - vue-demi: 0.13.11_vue@3.2.47 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true - - /algoliasearch/4.16.0: - resolution: {integrity: sha512-HAjKJ6bBblaXqO4dYygF4qx251GuJ6zCZt+qbJ+kU7sOC+yc84pawEjVpJByh+cGP2APFCsao2Giz50cDlKNPA==} - dependencies: - '@algolia/cache-browser-local-storage': 4.16.0 - '@algolia/cache-common': 4.16.0 - '@algolia/cache-in-memory': 4.16.0 - '@algolia/client-account': 4.16.0 - '@algolia/client-analytics': 4.16.0 - '@algolia/client-common': 4.16.0 - '@algolia/client-personalization': 4.16.0 - '@algolia/client-search': 4.16.0 - '@algolia/logger-common': 4.16.0 - '@algolia/logger-console': 4.16.0 - '@algolia/requester-browser-xhr': 4.16.0 - '@algolia/requester-common': 4.16.0 - '@algolia/requester-node-http': 4.16.0 - '@algolia/transporter': 4.16.0 - dev: true - - /ansi-sequence-parser/1.1.0: - resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} - dev: true - - /body-scroll-lock/4.0.0-beta.0: - resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} - dev: true - - /csstype/2.6.21: - resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} - dev: true - - /esbuild/0.17.14: - resolution: {integrity: sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.17.14 - '@esbuild/android-arm64': 0.17.14 - '@esbuild/android-x64': 0.17.14 - '@esbuild/darwin-arm64': 0.17.14 - '@esbuild/darwin-x64': 0.17.14 - '@esbuild/freebsd-arm64': 0.17.14 - '@esbuild/freebsd-x64': 0.17.14 - '@esbuild/linux-arm': 0.17.14 - '@esbuild/linux-arm64': 0.17.14 - '@esbuild/linux-ia32': 0.17.14 - '@esbuild/linux-loong64': 0.17.14 - '@esbuild/linux-mips64el': 0.17.14 - '@esbuild/linux-ppc64': 0.17.14 - '@esbuild/linux-riscv64': 0.17.14 - '@esbuild/linux-s390x': 0.17.14 - '@esbuild/linux-x64': 0.17.14 - '@esbuild/netbsd-x64': 0.17.14 - '@esbuild/openbsd-x64': 0.17.14 - '@esbuild/sunos-x64': 0.17.14 - '@esbuild/win32-arm64': 0.17.14 - '@esbuild/win32-ia32': 0.17.14 - '@esbuild/win32-x64': 0.17.14 - dev: true - - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - - /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - dependencies: - has: 1.0.3 - dev: true - - /jsonc-parser/3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true - - /magic-string/0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - - /nanoid/3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - - /picocolors/1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /postcss/8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /preact/10.13.2: - resolution: {integrity: sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==} - dev: true - - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.11.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /rollup/3.20.2: - resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /shiki/0.14.1: - resolution: {integrity: sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==} - dependencies: - ansi-sequence-parser: 1.1.0 - jsonc-parser: 3.2.0 - vscode-oniguruma: 1.7.0 - vscode-textmate: 8.0.0 - dev: true - - /source-map-js/1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map/0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /sourcemap-codec/1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true - - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /to-fast-properties/2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - - /vite/4.2.1: - resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.17.14 - postcss: 8.4.21 - resolve: 1.22.1 - rollup: 3.20.2 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /vitepress/1.0.0-alpha.63: - resolution: {integrity: sha512-7QMwjT9888S64SkmJqSmRlP417yniCj4IqawIpzYSQMnlJ5CjBWOTbzXKvmzRZkjOJGTcaYr2C88+1/z8ERG+g==} - hasBin: true - dependencies: - '@docsearch/css': 3.3.3 - '@docsearch/js': 3.3.3 - '@vitejs/plugin-vue': 4.1.0_vite@4.2.1+vue@3.2.47 - '@vue/devtools-api': 6.5.0 - '@vueuse/core': 9.13.0_vue@3.2.47 - body-scroll-lock: 4.0.0-beta.0 - shiki: 0.14.1 - vite: 4.2.1 - vue: 3.2.47 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/node' - - '@types/react' - - '@vue/composition-api' - - less - - react - - react-dom - - sass - - stylus - - sugarss - - terser - dev: true - - /vscode-oniguruma/1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: true - - /vscode-textmate/8.0.0: - resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - dev: true - - /vue-demi/0.13.11_vue@3.2.47: - resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - dependencies: - vue: 3.2.47 - dev: true - - /vue/3.2.47: - resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} - dependencies: - '@vue/compiler-dom': 3.2.47 - '@vue/compiler-sfc': 3.2.47 - '@vue/runtime-dom': 3.2.47 - '@vue/server-renderer': 3.2.47_vue@3.2.47 - '@vue/shared': 3.2.47 - dev: true