first commit

This commit is contained in:
Grey committed 2026-05-12 12:41:49 +07:00
commit 604fef891f
8368 files changed
+1285228

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
{
"hash": "40c30454",
"configHash": "f033ba72",
"lockfileHash": "f80977f6",
"browserHash": "69b1c7b1",
"optimized": {
"lucide-vue-next": {
"src": "../../lucide-vue-next/dist/esm/lucide-vue-next.js",
"file": "lucide-vue-next.js",
"fileHash": "1102272b",
"needsInterop": false
},
"vue-router": {
"src": "../../vue-router/dist/vue-router.js",
"file": "vue-router.js",
"fileHash": "c295d1ee",
"needsInterop": false
},
"vue": {
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "80604bd0",
"needsInterop": false
}
},
"chunks": {
"vue.runtime.esm-bundler-C6sZGmPl": {
"file": "vue.runtime.esm-bundler-C6sZGmPl.js",
"isDynamicEntry": false
}
}
}
+48068
View File
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"lucide-vue-next.js","names":["Infinity"],"sources":["../../lucide-vue-next/dist/esm/shared/src/utils/hasA11yProp.js","../../lucide-vue-next/dist/esm/shared/src/utils/isEmptyString.js","../../lucide-vue-next/dist/esm/shared/src/utils/mergeClasses.js","../../lucide-vue-next/dist/esm/shared/src/utils/toKebabCase.js","../../lucide-vue-next/dist/esm/shared/src/utils/toCamelCase.js","../../lucide-vue-next/dist/esm/shared/src/utils/toPascalCase.js","../../lucide-vue-next/dist/esm/defaultAttributes.js","../../lucide-vue-next/dist/esm/Icon.js","../../lucide-vue-next/dist/esm/createLucideIcon.js","../../lucide-vue-next/dist/esm/icons/a-arrow-down.js","../../lucide-vue-next/dist/esm/icons/a-arrow-up.js","../../lucide-vue-next/dist/esm/icons/a-large-small.js","../../lucide-vue-next/dist/esm/icons/accessibility.js","../../lucide-vue-next/dist/esm/icons/activity.js","../../lucide-vue-next/dist/esm/icons/air-vent.js","../../lucide-vue-next/dist/esm/icons/airplay.js","../../lucide-vue-next/dist/esm/icons/alarm-clock-check.js","../../lucide-vue-next/dist/esm/icons/alarm-clock-minus.js","../../lucide-vue-next/dist/esm/icons/alarm-clock-off.js","../../lucide-vue-next/dist/esm/icons/alarm-clock-plus.js","../../lucide-vue-next/dist/esm/icons/alarm-clock.js","../../lucide-vue-next/dist/esm/icons/alarm-smoke.js","../../lucide-vue-next/dist/esm/icons/album.js","../../lucide-vue-next/dist/esm/icons/align-center-horizontal.js","../../lucide-vue-next/dist/esm/icons/align-center-vertical.js","../../lucide-vue-next/dist/esm/icons/align-end-horizontal.js","../../lucide-vue-next/dist/esm/icons/align-end-vertical.js","../../lucide-vue-next/dist/esm/icons/align-horizontal-distribute-center.js","../../lucide-vue-next/dist/esm/icons/align-horizontal-distribute-start.js","../../lucide-vue-next/dist/esm/icons/align-horizontal-distribute-end.js","../../lucide-vue-next/dist/esm/icons/align-horizontal-justify-center.js","../../lucide-vue-next/dist/esm/icons/align-horizontal-justify-end.js","../../lucide-vue-next/dist/esm/icons/align-horizontal-justify-start.js","../../lucide-vue-next/dist/esm/icons/align-horizontal-space-around.js","../../lucide-vue-next/dist/esm/icons/align-horizontal-space-between.js","../../lucide-vue-next/dist/esm/icons/align-start-horizontal.js","../../lucide-vue-next/dist/esm/icons/align-start-vertical.js","../../lucide-vue-next/dist/esm/icons/align-vertical-distribute-center.js","../../lucide-vue-next/dist/esm/icons/align-vertical-distribute-end.js","../../lucide-vue-next/dist/esm/icons/align-vertical-distribute-start.js","../../lucide-vue-next/dist/esm/icons/align-vertical-justify-center.js","../../lucide-vue-next/dist/esm/icons/align-vertical-justify-end.js","../../lucide-vue-next/dist/esm/icons/align-vertical-justify-start.js","../../lucide-vue-next/dist/esm/icons/align-vertical-space-between.js","../../lucide-vue-next/dist/esm/icons/align-vertical-space-around.js","../../lucide-vue-next/dist/esm/icons/ambulance.js","../../lucide-vue-next/dist/esm/icons/ampersands.js","../../lucide-vue-next/dist/esm/icons/ampersand.js","../../lucide-vue-next/dist/esm/icons/amphora.js","../../lucide-vue-next/dist/esm/icons/anchor.js","../../lucide-vue-next/dist/esm/icons/angry.js","../../lucide-vue-next/dist/esm/icons/annoyed.js","../../lucide-vue-next/dist/esm/icons/antenna.js","../../lucide-vue-next/dist/esm/icons/anvil.js","../../lucide-vue-next/dist/esm/icons/aperture.js","../../lucide-vue-next/dist/esm/icons/app-window-mac.js","../../lucide-vue-next/dist/esm/icons/app-window.js","../../lucide-vue-next/dist/esm/icons/apple.js","../../lucide-vue-next/dist/esm/icons/archive-restore.js","../../lucide-vue-next/dist/esm/icons/archive-x.js","../../lucide-vue-next/dist/esm/icons/archive.js","../../lucide-vue-next/dist/esm/icons/armchair.js","../../lucide-vue-next/dist/esm/icons/arrow-big-down-dash.js","../../lucide-vue-next/dist/esm/icons/arrow-big-down.js","../../lucide-vue-next/dist/esm/icons/arrow-big-left-dash.js","../../lucide-vue-next/dist/esm/icons/arrow-big-left.js","../../lucide-vue-next/dist/esm/icons/arrow-big-right-dash.js","../../lucide-vue-next/dist/esm/icons/arrow-big-right.js","../../lucide-vue-next/dist/esm/icons/arrow-big-up-dash.js","../../lucide-vue-next/dist/esm/icons/arrow-big-up.js","../../lucide-vue-next/dist/esm/icons/arrow-down-0-1.js","../../lucide-vue-next/dist/esm/icons/arrow-down-1-0.js","../../lucide-vue-next/dist/esm/icons/arrow-down-a-z.js","../../lucide-vue-next/dist/esm/icons/arrow-down-from-line.js","../../lucide-vue-next/dist/esm/icons/arrow-down-left.js","../../lucide-vue-next/dist/esm/icons/arrow-down-narrow-wide.js","../../lucide-vue-next/dist/esm/icons/arrow-down-to-dot.js","../../lucide-vue-next/dist/esm/icons/arrow-down-right.js","../../lucide-vue-next/dist/esm/icons/arrow-down-to-line.js","../../lucide-vue-next/dist/esm/icons/arrow-down-up.js","../../lucide-vue-next/dist/esm/icons/arrow-down-wide-narrow.js","../../lucide-vue-next/dist/esm/icons/arrow-down-z-a.js","../../lucidLine truncated
+3
View File
@@ -0,0 +1,3 @@
{
"type": "module"
}
+6437
View File
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"vue-router.js","names":["isBrowser","__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__commonJSMin","__copyProps","__toESM","isBrowser","isBrowser"],"sources":["../../vue-router/dist/useApi-DtucMc-S.js","../../@vue/devtools-shared/dist/index.js","../../perfect-debounce/dist/index.mjs","../../hookable/dist/index.mjs","../../birpc/dist/index.mjs","../../@vue/devtools-kit/dist/index.js","../../vue-router/dist/devtools-BPov6AZY.js","../../vue-router/dist/vue-router.js"],"sourcesContent":["/*!\n * vue-router v5.0.6\n * (c) 2026 Eduardo San Martin Morote\n * @license MIT\n */\nimport { inject } from \"vue\";\n\n//#region src/utils/env.ts\nconst isBrowser = typeof document !== \"undefined\";\n\n//#endregion\n//#region src/utils/index.ts\n/**\n* Identity function that returns the value as is.\n*\n* @param v - the value to return\n*\n* @internal\n*/\nconst identityFn = (v) => v;\n/**\n* Allows differentiating lazy components from functional components and vue-class-component\n* @internal\n*\n* @param component\n*/\nfunction isRouteComponent(component) {\n\treturn typeof component === \"object\" || \"displayName\" in component || \"props\" in component || \"__vccOpts\" in component;\n}\nfunction isESModule(obj) {\n\treturn obj.__esModule || obj[Symbol.toStringTag] === \"Module\" || obj.default && isRouteComponent(obj.default);\n}\nconst assign = Object.assign;\nfunction applyToParams(fn, params) {\n\tconst newParams = {};\n\tfor (const key in params) {\n\t\tconst value = params[key];\n\t\tnewParams[key] = isArray(value) ? value.map(fn) : fn(value);\n\t}\n\treturn newParams;\n}\nconst noop = () => {};\n/**\n* Typesafe alternative to Array.isArray\n* https://github.com/microsoft/TypeScript/pull/48228\n*\n* @internal\n*/\nconst isArray = Array.isArray;\nfunction mergeOptions(defaults, partialOptions) {\n\tconst options = {};\n\tfor (const key in defaults) options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\n\treturn options;\n}\n\n//#endregion\n//#region src/errors.ts\n/**\n* Flags so we can combine them when checking for multiple errors. This is the internal version of\n* {@link NavigationFailureType}.\n*\n* @internal\n*/\nlet ErrorTypes = /* @__PURE__ */ function(ErrorTypes) {\n\tErrorTypes[ErrorTypes[\"MATCHER_NOT_FOUND\"] = 1] = \"MATCHER_NOT_FOUND\";\n\tErrorTypes[ErrorTypes[\"NAVIGATION_GUARD_REDIRECT\"] = 2] = \"NAVIGATION_GUARD_REDIRECT\";\n\tErrorTypes[ErrorTypes[\"NAVIGATION_ABORTED\"] = 4] = \"NAVIGATION_ABORTED\";\n\tErrorTypes[ErrorTypes[\"NAVIGATION_CANCELLED\"] = 8] = \"NAVIGATION_CANCELLED\";\n\tErrorTypes[ErrorTypes[\"NAVIGATION_DUPLICATED\"] = 16] = \"NAVIGATION_DUPLICATED\";\n\treturn ErrorTypes;\n}({});\nconst NavigationFailureSymbol = Symbol(process.env.NODE_ENV !== \"production\" ? \"navigation failure\" : \"\");\n/**\n* Enumeration with all possible types for navigation failures. Can be passed to\n* {@link isNavigationFailure} to check for specific failures.\n*/\nlet NavigationFailureType = /* @__PURE__ */ function(NavigationFailureType) {\n\t/**\n\t* An aborted navigation is a navigation that failed because a navigation\n\t* guard returned `false` or called `next(false)`\n\t*/\n\tNavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\n\t/**\n\t* A cancelled navigation is a navigation that failed because a more recent\n\t* navigation finished started (not necessarily finished).\n\t*/\n\tNavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\n\t/**\n\t* A duplicated navigation is a navigation that failed because it was\n\t* initiated while already being at the exact same location.\n\t*/\n\tNavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\n\treturn NavigationFailureType;\n}({});\nconst ErrorTypeMessages = {\n\t[ErrorTypes.MATCHER_NOT_FOUND]({ location, currentLocation }) {\n\t\treturn `No match for\\n ${JSON.stringify(location)}${currentLocation ? \"\\nwhile being at\\n\" + JSON.stringify(currentLocation) : \"\"}`;\n\t},\n\t[ErrorTypes.NAVIGATION_GUARD_REDIRECT]({ from, to }) {\n\t\treturn `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\n\t},\n\t[ErrorTypes.NAVIGATION_ABORTED]({ from, to }) {\n\t\treturn `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\n\t},\n\t[ErrorTypes.NAVIGATION_CANCELLED]({ from, to }) {\n\t\treturn `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\n\t},\n\t[ErrorTypes.NAVIGATION_DUPLICATED]({ from, to: _to }) {\n\t\treturn `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\n\t}\n};\n/**\n* Creates a typed NavigationFailure object.\n* @internal\n* @param type - NavigationFailureType\n* @param params - { from, to }\n*/\nfunction createRouterError(type, params) {\n\tif (process.env.NODE_ENV !== \"production\" || false) return assign(new Error(ErrorTypeMLine truncated
+2
View File
@@ -0,0 +1,2 @@
import { $ as createTextVNode, $n as toRefs, $t as resolveTransitionHooks, A as ErrorCodes, An as customRef, At as onBeforeMount, B as callWithErrorHandling, Bn as markRaw, Bt as onUpdated, C as vShow, Cn as withDirectives, Ct as isRuntimeOnly, D as BaseTransitionPropsValidators, Dn as ReactiveEffect, Dt as mergeProps, E as BaseTransition, En as EffectScope, Et as mergeModels, F as Suspense, Fn as isProxy, Ft as onMounted, G as createBlock, Gn as readonly, Gt as queuePostFlushCb, H as compatUtils, Hn as onWatcherCleanup, Ht as popScopeId, I as Teleport, In as isReactive, It as onRenderTracked, J as createHydrationRenderer, Jn as shallowReadonly, Jt as renderSlot, K as createCommentVNode, Kn as ref, Kt as registerRuntimeCompiler, L as Text, Ln as isReadonly, Lt as onRenderTriggered, M as Fragment, Mn as effectScope, Mt as onBeforeUpdate, N as KeepAlive, Nn as getCurrentScope, Nt as onDeactivated, O as Comment, On as TrackOpTypes, Ot as nextTick, P as Static, Pn as getCurrentWatcher, Pt as onErrorCaptured, Q as createStaticVNode, Qn as toRef, Qt as resolveFilter, R as assertNumber, Rn as isRef, Rt as onServerPrefetch, S as vModelText, Sn as withDefaults, St as isMemoSame, T as withModifiers, Tn as withScopeId, Tt as mergeDefaults, U as computed, Un as proxyRefs, Ut as provide, V as cloneVNode, Vn as onScopeDispose, Vt as openBlock, W as createBaseVNode, Wn as reactive, Wt as pushScopeId, X as createRenderer, Xn as stop, Xt as resolveDirective, Y as createPropsRestProxy, Yn as shallowRef, Yt as resolveComponent, Z as createSlots, Zn as toRaw, Zt as resolveDynamicComponent, _ as useShadowRoot, _n as watchEffect, _t as hydrateOnInteraction, a as createApp, an as toHandlers, ar as normalizeClass, at as defineModel, b as vModelRadio, bn as withAsyncContext, bt as initCustomFormatter, c as defineSSRCustomElement, cn as useId, cr as toDisplayString, ct as defineSlots, d as nodeOps, dn as useSlots, dt as getTransitionRawChildren, en as setBlockTracking, er as toValue, et as createVNode, f as patchProp, fn as useTemplateRef, ft as guardReactiveProps, g as useHost, gn as watch, gt as hydrateOnIdle, h as useCssVars, hn as warn, ht as hasInjectionContext, i as VueElement, in as ssrUtils, ir as capitalize, it as defineExpose, j as ErrorTypeStrings, jn as effect, jt as onBeforeUnmount, k as DeprecationTypes, kn as TriggerOpTypes, kt as onActivated, l as hydrate, ln as useModel, lr as toHandlerKey, lt as devtools, m as useCssModule, mn as version, mt as handleError, n as Transition, nn as setTransitionHooks, nr as unref, nt as defineComponent, o as createSSRApp, on as transformVNodeArgs, or as normalizeProps, ot as defineOptions, p as render, pn as useTransitionState, pt as h, q as createElementBlock, qn as shallowReactive, qt as renderList, r as TransitionGroup, rn as ssrContextKey, rr as camelize, rt as defineEmits, s as defineCustomElement, sn as useAttrs, sr as normalizeStyle, st as defineProps, t as compile, tn as setDevtoolsHook, tr as triggerRef, tt as defineAsyncComponent, u as initDirectivesForSSR, un as useSSRContext, ut as getCurrentInstance, v as vModelCheckbox, vn as watchPostEffect, vt as hydrateOnMediaQuery, w as withKeys, wn as withMemo, wt as isVNode, x as vModelSelect, xn as withCtx, xt as inject, y as vModelDynamic, yn as watchSyncEffect, yt as hydrateOnVisible, z as callWithAsyncErrorHandling, zn as isShallow, zt as onUnmounted } from "./vue.runtime.esm-bundler-C6sZGmPl.js";
export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, compile, computed, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getCurrentWatcher, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, nodeOps, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, onWatcherCleanup, openBlock, patchProp, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useHost, useId, useModel, useSSRContext, useShadowRoot, useSlots, useTemplateRef, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"vue.runtime.esm-bundler-C6sZGmPl.js","names":["hasOwnProperty","isRef","warn","computed","watch","enterCbKey","callHook","compile","camelize$1"],"sources":["../../@vue/shared/dist/shared.esm-bundler.js","../../@vue/reactivity/dist/reactivity.esm-bundler.js","../../@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../vue/dist/vue.runtime.esm-bundler.js"],"sourcesContent":["/**\n* @vue/shared v3.5.34\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n const map = /* @__PURE__ */ Object.create(null);\n for (const key of str.split(\",\")) map[key] = 1;\n return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-\\w/g;\nconst camelize = cacheStringFunction(\n (str) => {\n return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase());\n }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n (str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n return source + JSON.stringify(\n options,\n (_, val) => typeof val === \"function\" ? val.toString() : val\n );\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STLine truncated