wevu 6.20.4 → 6.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/defineProperty.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/toPrimitive.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/toPropertyKey.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/typeof.mjs +1 -1
- package/dist/dev/internal-runtime.mjs +3 -3
- package/dist/dev/package.mjs +1 -1
- package/dist/dev/reactivity/core.mjs +1 -1
- package/dist/dev/reactivity/ref.mjs +1 -1
- package/dist/dev/runtime/app/context.mjs +4 -0
- package/dist/dev/runtime/app/context.mjs.map +1 -1
- package/dist/dev/runtime/app.mjs +1 -1
- package/dist/dev/runtime/app.mjs.map +1 -1
- package/dist/dev/runtime/define/componentDefinition.mjs +25 -0
- package/dist/dev/runtime/define/componentDefinition.mjs.map +1 -0
- package/dist/dev/runtime/define/scopedSlotOptions.mjs +40 -1
- package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
- package/dist/dev/runtime/define.mjs +52 -24
- package/dist/dev/runtime/define.mjs.map +1 -1
- package/dist/dev/runtime/provideContext.mjs +2 -2
- package/dist/dev/runtime/provideContext.mjs.map +1 -1
- package/dist/dev/runtime/register/component/registerDefinition.mjs +6 -2
- package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
- package/dist/dev/runtime/register/component.mjs +4 -3
- package/dist/dev/runtime/register/component.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/internal-runtime.d.mts +3 -3
- package/dist/internal-runtime.mjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/reactivity/core.mjs +1 -1
- package/dist/reactivity/ref.mjs +1 -1
- package/dist/runtime/app/context.mjs +1 -1
- package/dist/runtime/app.mjs +1 -1
- package/dist/runtime/defaults.d.mts +2 -1
- package/dist/runtime/define/componentDefinition.mjs +1 -0
- package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
- package/dist/runtime/define.d.mts +22 -1
- package/dist/runtime/define.mjs +1 -1
- package/dist/runtime/index.d.mts +1 -1
- package/dist/runtime/provideContext.mjs +1 -1
- package/dist/runtime/register/component/registerDefinition.mjs +1 -1
- package/dist/runtime/register/component.d.mts +3 -1
- package/dist/runtime/register/component.mjs +1 -1
- package/dist/vue-demi.d.mts +1 -1
- package/package.json +4 -4
- /package/dist/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/defineProperty.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/toPrimitive.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/toPropertyKey.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/typeof.mjs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import toPropertyKey from "./toPropertyKey.mjs";
|
|
2
2
|
|
|
3
|
-
//#region \0@oxc-project+runtime@0.
|
|
3
|
+
//#region \0@oxc-project+runtime@0.146.0/helpers/esm/defineProperty.js
|
|
4
4
|
function _defineProperty(e, r, t) {
|
|
5
5
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
6
6
|
value: t,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _typeof from "./typeof.mjs";
|
|
2
2
|
|
|
3
|
-
//#region \0@oxc-project+runtime@0.
|
|
3
|
+
//#region \0@oxc-project+runtime@0.146.0/helpers/esm/toPrimitive.js
|
|
4
4
|
function toPrimitive(t, r) {
|
|
5
5
|
if ("object" != _typeof(t) || !t) return t;
|
|
6
6
|
var e = t[Symbol.toPrimitive];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _typeof from "./typeof.mjs";
|
|
2
2
|
import toPrimitive from "./toPrimitive.mjs";
|
|
3
3
|
|
|
4
|
-
//#region \0@oxc-project+runtime@0.
|
|
4
|
+
//#region \0@oxc-project+runtime@0.146.0/helpers/esm/toPropertyKey.js
|
|
5
5
|
function toPropertyKey(t) {
|
|
6
6
|
var i = toPrimitive(t, "string");
|
|
7
7
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region \0@oxc-project+runtime@0.
|
|
1
|
+
//#region \0@oxc-project+runtime@0.146.0/helpers/esm/typeof.js
|
|
2
2
|
function _typeof(o) {
|
|
3
3
|
"@babel/helpers - typeof";
|
|
4
4
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -4,7 +4,7 @@ import { onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactiva
|
|
|
4
4
|
import { version } from "./version.mjs";
|
|
5
5
|
import { isNoSetData, markNoSetData } from "./runtime/noSetData.mjs";
|
|
6
6
|
import { takePendingRuntimeAppRegistration } from "./runtime/app/pending.mjs";
|
|
7
|
-
import { resetWevuDefaults, setWevuDefaults } from "./runtime/defaults.mjs";
|
|
7
|
+
import { INTERNAL_DEFAULTS_SCOPE_KEY, resetWevuDefaults, setWevuDefaults } from "./runtime/defaults.mjs";
|
|
8
8
|
import { setGlobalProvidedValue } from "./runtime/provideStore.mjs";
|
|
9
9
|
import { resolveRuntimePageLayoutName, setPageLayout, syncRuntimePageLayoutState, syncRuntimePageLayoutStateFromRuntime, usePageLayout } from "./runtime/pageLayout.mjs";
|
|
10
10
|
import { runSetupFunction } from "./runtime/register/setup.mjs";
|
|
@@ -15,7 +15,7 @@ import { resolveLayoutBridge, resolveLayoutHost, useLayoutBridge, useLayoutHosts
|
|
|
15
15
|
import { registerComponent } from "./runtime/register/component.mjs";
|
|
16
16
|
import { createApp } from "./runtime/app.mjs";
|
|
17
17
|
import { hasInjectionContext, inject, injectGlobal, provide, provideGlobal } from "./runtime/provide.mjs";
|
|
18
|
-
import { createWevuComponent, createWevuScopedSlotComponent, defineComponent } from "./runtime/define.mjs";
|
|
18
|
+
import { createIsolatedWevuComponentDefinition, createWevuComponent, createWevuComponentDefinition, createWevuScopedSlotComponent, defineComponent, getWevuComponentLifecycleDefinition } from "./runtime/define.mjs";
|
|
19
19
|
import { useDisposables } from "./runtime/disposables.mjs";
|
|
20
20
|
import { useElementIntersectionObserver } from "./runtime/elementIntersectionObserver.mjs";
|
|
21
21
|
import { useIntersectionObserver } from "./runtime/intersectionObserver.mjs";
|
|
@@ -31,4 +31,4 @@ import { useNativePageRouter, useNativeRouter } from "./runtime/vueCompat/router
|
|
|
31
31
|
import { useTemplateRef } from "./runtime/vueCompat/templateRef.mjs";
|
|
32
32
|
import { createUniAppHost } from "./runtime/uniAppHost.mjs";
|
|
33
33
|
|
|
34
|
-
export { Fragment, callHookList, callHookReturn, createApp, createTextVNode, createUniAppHost, createVNode, createWevuComponent, createWevuScopedSlotComponent, defineAppSetup, defineComponent, getCurrentInstance, getCurrentPageStackSnapshot, getCurrentSetupContext, getNavigationBarMetrics, hasInjectionContext, inject, injectGlobal, isNoSetData, isVNode, markNoSetData, mergeModels, mergeProps, mountRuntimeInstance, normalizeJsxIsland, onActivated, onAddToFavorites, onAttached, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onDetached, onError, onErrorCaptured, onHide, onLaunch, onLoad, onMemoryWarning, onMounted, onMoved, onPageNotFound, onPageScroll, onPullDownRefresh, onReachBottom, onReady, onResize, onRouteDone, onSaveExitState, onServerPrefetch, onShareAppMessage, onShareTimeline, onShow, onTabItemTap, onThemeChange, onUnhandledRejection, onUnload, onUnmounted, onUpdated, provide, provideGlobal, registerApp, registerComponent, resetWevuDefaults, resolveComponent, resolveDirective, resolveLayoutBridge, resolveLayoutHost, resolveRuntimePageLayoutName, runSetupFunction, setCurrentInstance, setCurrentSetupContext, setGlobalProvidedValue, setPageLayout, setRuntimeSetDataVisibility, setWevuDefaults, syncRuntimePageLayoutState, syncRuntimePageLayoutStateFromRuntime, takePendingRuntimeAppRegistration, teardownRuntimeInstance, transformOn, use, useAsyncPullDownRefresh, useAttrs, useBindModel, useBoundingClientRect, useChangeModel, useDisposables, useElementIntersectionObserver, useIntersectionObserver, useLayoutBridge, useLayoutHosts, useModel, useNativeInstance, useNativePageRouter, useNativeRouter, useNavigationBarMetrics, usePageLayout, usePageScrollThrottle, usePageStack, useScrollOffset, useSelectorFields, useSelectorQuery, useSlots, useTemplateRef, useUpdatePerformanceListener, vModelCheckbox, vModelRadio, vModelSelect, vModelText, vShow, version, waitForLayoutHost, withDirectives };
|
|
34
|
+
export { Fragment, INTERNAL_DEFAULTS_SCOPE_KEY, callHookList, callHookReturn, createApp, createIsolatedWevuComponentDefinition, createTextVNode, createUniAppHost, createVNode, createWevuComponent, createWevuComponentDefinition, createWevuScopedSlotComponent, defineAppSetup, defineComponent, getCurrentInstance, getCurrentPageStackSnapshot, getCurrentSetupContext, getNavigationBarMetrics, getWevuComponentLifecycleDefinition, hasInjectionContext, inject, injectGlobal, isNoSetData, isVNode, markNoSetData, mergeModels, mergeProps, mountRuntimeInstance, normalizeJsxIsland, onActivated, onAddToFavorites, onAttached, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onDetached, onError, onErrorCaptured, onHide, onLaunch, onLoad, onMemoryWarning, onMounted, onMoved, onPageNotFound, onPageScroll, onPullDownRefresh, onReachBottom, onReady, onResize, onRouteDone, onSaveExitState, onServerPrefetch, onShareAppMessage, onShareTimeline, onShow, onTabItemTap, onThemeChange, onUnhandledRejection, onUnload, onUnmounted, onUpdated, provide, provideGlobal, registerApp, registerComponent, resetWevuDefaults, resolveComponent, resolveDirective, resolveLayoutBridge, resolveLayoutHost, resolveRuntimePageLayoutName, runSetupFunction, setCurrentInstance, setCurrentSetupContext, setGlobalProvidedValue, setPageLayout, setRuntimeSetDataVisibility, setWevuDefaults, syncRuntimePageLayoutState, syncRuntimePageLayoutStateFromRuntime, takePendingRuntimeAppRegistration, teardownRuntimeInstance, transformOn, use, useAsyncPullDownRefresh, useAttrs, useBindModel, useBoundingClientRect, useChangeModel, useDisposables, useElementIntersectionObserver, useIntersectionObserver, useLayoutBridge, useLayoutHosts, useModel, useNativeInstance, useNativePageRouter, useNativeRouter, useNavigationBarMetrics, usePageLayout, usePageScrollThrottle, usePageStack, useScrollOffset, useSelectorFields, useSelectorQuery, useSlots, useTemplateRef, useUpdatePerformanceListener, vModelCheckbox, vModelRadio, vModelSelect, vModelText, vShow, version, waitForLayoutHost, withDirectives };
|
package/dist/dev/package.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { queueJob } from "../scheduler.mjs";
|
|
2
|
-
import _defineProperty from "../_virtual/_@oxc-project_runtime@0.
|
|
2
|
+
import _defineProperty from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/defineProperty.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/reactivity/core.ts
|
|
5
5
|
const targetMap = /* @__PURE__ */ new WeakMap();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import _defineProperty from "../_virtual/_@oxc-project_runtime@0.
|
|
1
|
+
import _defineProperty from "../_virtual/_@oxc-project_runtime@0.146.0/helpers/esm/defineProperty.mjs";
|
|
2
2
|
import { trackEffects, triggerEffects } from "./core.mjs";
|
|
3
3
|
import { convertToReactive, markRaw } from "./reactive.mjs";
|
|
4
4
|
|
|
@@ -102,6 +102,10 @@ function createRuntimeContext(options) {
|
|
|
102
102
|
const props = target[WEVU_PROPS_KEY];
|
|
103
103
|
if (props && typeof props === "object") return props;
|
|
104
104
|
}
|
|
105
|
+
if (key === "$props") {
|
|
106
|
+
const props = target[WEVU_PROPS_KEY];
|
|
107
|
+
if (props && typeof props === "object") return props;
|
|
108
|
+
}
|
|
105
109
|
const props = target[WEVU_PROPS_KEY];
|
|
106
110
|
if (props && typeof props === "object" && hasOwn(props, key)) return Reflect.get(props, key);
|
|
107
111
|
if (key === "data") return state;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.mjs","names":[],"sources":["../../../../src/runtime/app/context.ts"],"sourcesContent":["import type { WritableComputedOptions } from '../../reactivity'\nimport type { AppConfig, ComponentPublicInstance, ComputedDefinitions, ExtractMethods, MethodDefinitions } from '../types'\nimport {\n WEVU_COMPONENT_NAME_KEY,\n WEVU_INLINE_MAP_KEY,\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_PARENT_INSTANCE_KEY,\n WEVU_PROPS_KEY,\n WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD,\n WEVU_RUNTIME_APP_KEY,\n WEVU_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { isRef, ref, toRaw } from '../../reactivity'\nimport { nextTick } from '../../scheduler'\nimport { hasOwn } from '../../utils'\nimport { normalizeEmitEventName, normalizeEmitPayload } from '../emit'\nimport { setComputedValue } from '../internal'\nimport { isNativeBridgeMethod, markNativeBridgeMethod } from '../nativeBridge'\nimport { createComputedAccessors } from './computed'\n\nexport function createRuntimeContext<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n state: D\n setupState: Record<string, any>\n computedDefs: C\n methodDefs: M\n appConfig: AppConfig\n includeComputed: boolean\n setDataStrategy: 'diff' | 'patch'\n}) {\n const {\n state,\n setupState,\n computedDefs,\n methodDefs,\n appConfig,\n includeComputed,\n setDataStrategy,\n } = options\n\n const boundMethods = {} as ExtractMethods<M>\n const {\n computedRefs,\n computedSetters,\n dirtyComputedKeys,\n createTrackedComputed,\n computedProxy,\n } = createComputedAccessors({ includeComputed, setDataStrategy })\n const setupMethodVersion = ref(0)\n const instanceFields = Object.create(null) as Record<PropertyKey, any>\n\n const resolveNativeInstance = (target: object, receiver: object) => {\n const rawTarget = toRaw(target as any) as Record<string, any>\n const runtimeRef = rawTarget[WEVU_RUNTIME_KEY]\n const runtimeProxy = runtimeRef?.proxy as Record<string, any> | undefined\n const isBridgeMethod = (\n candidate: object,\n methodName: 'triggerEvent' | 'createSelectorQuery' | 'createIntersectionObserver' | 'setData',\n ) => {\n const candidateMethod = (candidate as any)[methodName]\n return isNativeBridgeMethod(candidateMethod)\n }\n const isValidNativeCandidate = (candidate: unknown) => {\n if (!candidate || typeof candidate !== 'object') {\n return false\n }\n if (candidate === target || candidate === receiver || candidate === runtimeProxy) {\n return false\n }\n if (\n isBridgeMethod(candidate, 'triggerEvent')\n || isBridgeMethod(candidate, 'createSelectorQuery')\n || isBridgeMethod(candidate, 'createIntersectionObserver')\n || isBridgeMethod(candidate, 'setData')\n ) {\n return false\n }\n return true\n }\n const directNative = rawTarget[WEVU_NATIVE_INSTANCE_KEY]\n if (isValidNativeCandidate(directNative)) {\n return directNative as object\n }\n const runtimeNative = runtimeRef?.instance\n if (isValidNativeCandidate(runtimeNative)) {\n return runtimeNative as object\n }\n return undefined\n }\n\n const installNativeMethodBridge = (methodName: string) => {\n if (hasOwn(boundMethods, methodName)) {\n return\n }\n const bridge = (...args: any[]) => {\n const nativeInstance = resolveNativeInstance(state as object, state as object)\n if (!nativeInstance) {\n return undefined\n }\n const nativeMethod = Reflect.get(nativeInstance, methodName)\n if (typeof nativeMethod === 'function') {\n return nativeMethod.apply(nativeInstance, args)\n }\n return undefined\n }\n markNativeBridgeMethod(bridge)\n ;(boundMethods as any)[methodName] = bridge\n }\n\n const resolveGlobalProperty = (nativeInstance: object | undefined, key: string) => {\n const seen = new Set<object>()\n let current = nativeInstance as Record<string, any> | undefined\n while (current && !seen.has(current)) {\n seen.add(current)\n const globalProperties = current[WEVU_RUNTIME_APP_KEY]?.config?.globalProperties\n if (globalProperties && hasOwn(globalProperties, key)) {\n return { found: true, value: globalProperties[key] }\n }\n current = current[WEVU_PARENT_INSTANCE_KEY]\n }\n\n const getAppFn = typeof globalThis !== 'undefined'\n ? (globalThis as Record<string, any>).getApp\n : undefined\n if (typeof getAppFn === 'function') {\n try {\n const rootAppInstance = getAppFn()\n const globalProperties = rootAppInstance?.[WEVU_RUNTIME_APP_KEY]?.config?.globalProperties\n if (globalProperties && hasOwn(globalProperties, key)) {\n return { found: true, value: globalProperties[key] }\n }\n }\n catch {\n // App 尚未初始化时保持普通属性回退语义。\n }\n }\n return { found: false, value: undefined }\n }\n\n const resolveParentPublicInstance = (nativeInstance: object | undefined) => {\n const selectOwnerComponent = nativeInstance && Reflect.get(nativeInstance, 'selectOwnerComponent')\n if (typeof selectOwnerComponent !== 'function') {\n return undefined\n }\n try {\n const owner = selectOwnerComponent.call(nativeInstance)\n if (!owner || typeof owner !== 'object') {\n return undefined\n }\n const resolvePublicInstance = Reflect.get(owner, WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD)\n if (typeof resolvePublicInstance === 'function') {\n const publicInstance = resolvePublicInstance.call(owner)\n if (publicInstance) {\n return publicInstance\n }\n }\n return owner[WEVU_RUNTIME_KEY]?.proxy ?? owner.__wevu?.proxy ?? owner\n }\n catch {\n return undefined\n }\n }\n\n const publicInstance = new Proxy(state as ComponentPublicInstance<D, C, M>, {\n get(target, key, receiver) {\n if (typeof key === 'string') {\n // setup 返回的方法会在运行时后置注入,读取版本号可确保相关 computed 在方法注入后失效重算。\n void setupMethodVersion.value\n if (hasOwn(setupState, key)) {\n return Reflect.get(setupState, key, receiver)\n }\n if (key === 'props') {\n const props = (target as any)[WEVU_PROPS_KEY]\n if (props && typeof props === 'object') {\n return props\n }\n }\n const props = (target as any)[WEVU_PROPS_KEY]\n if (props && typeof props === 'object' && hasOwn(props, key)) {\n return Reflect.get(props, key)\n }\n if (key === 'data') {\n return state\n }\n if (key === '$state') {\n return state\n }\n if (key === '$computed') {\n return computedProxy\n }\n if (key === '$emit') {\n return (eventName: string, ...args: any[]) => {\n const nativeInstance = resolveNativeInstance(target as object, receiver as object)\n const triggerEvent = nativeInstance && Reflect.get(nativeInstance, 'triggerEvent')\n if (typeof triggerEvent !== 'function') {\n return undefined\n }\n const { detail, options } = normalizeEmitPayload(args)\n return triggerEvent.call(nativeInstance, normalizeEmitEventName(eventName), detail, options)\n }\n }\n if (key === '$nextTick') {\n return <T>(fn?: () => T) => fn\n ? nextTick(() => fn.call(publicInstance))\n : nextTick<T>()\n }\n if (key === '$set') {\n return (object: Record<PropertyKey, any>, property: PropertyKey, value: any) => {\n Reflect.set(object, property, value)\n return value\n }\n }\n if (key === '$delete') {\n return (object: Record<PropertyKey, any>, property: PropertyKey) => Reflect.deleteProperty(object, property)\n }\n if (key === '$slots') {\n const rawTarget = toRaw(target as any) as Record<string, any>\n return rawTarget.$slots ?? Object.freeze(Object.create(null))\n }\n if (key === '$refs') {\n const rawTarget = toRaw(target as any) as Record<string, any>\n return rawTarget.$refs ?? Object.create(null)\n }\n if (key === '$parent') {\n return resolveParentPublicInstance(resolveNativeInstance(target as object, receiver as object))\n }\n if (key === '$options') {\n const nativeInstance = resolveNativeInstance(target as object, receiver as object) as Record<string, any> | undefined\n return {\n name: nativeInstance?.[WEVU_COMPONENT_NAME_KEY] ?? nativeInstance?.name ?? nativeInstance?.is,\n }\n }\n if (hasOwn(instanceFields, key)) {\n return Reflect.get(instanceFields, key)\n }\n if (hasOwn(boundMethods, key)) {\n return boundMethods[key as keyof ExtractMethods<M>]\n }\n if ((computedRefs as any)[key]) {\n return (computedRefs as any)[key].value\n }\n if (hasOwn(appConfig.globalProperties, key)) {\n return (appConfig.globalProperties as any)[key]\n }\n const globalProperty = resolveGlobalProperty(\n resolveNativeInstance(target as object, receiver as object),\n key,\n )\n if (globalProperty.found) {\n return globalProperty.value\n }\n }\n if (!Reflect.has(target, key)) {\n const nativeInstance = resolveNativeInstance(target as object, receiver as object)\n if (nativeInstance && Reflect.has(nativeInstance, key)) {\n const nativeValue = Reflect.get(nativeInstance, key)\n if (typeof nativeValue === 'function') {\n return nativeValue.bind(nativeInstance)\n }\n return nativeValue\n }\n }\n const targetValue = Reflect.get(target, key, receiver)\n if (typeof key === 'string' && hasOwn(setupState, key)) {\n return Reflect.get(setupState, key, receiver)\n }\n return targetValue\n },\n set(target, key, value, receiver) {\n if (typeof key === 'string' && (computedRefs as any)[key]) {\n setComputedValue(computedSetters, key, value)\n return true\n }\n if (hasOwn(setupState, key)) {\n const existingValue = Reflect.get(setupState, key, receiver)\n if (isRef(existingValue) && !isRef(value)) {\n existingValue.value = value\n return true\n }\n return Reflect.set(setupState, key, value, receiver)\n }\n if (hasOwn(instanceFields, key)) {\n return Reflect.set(instanceFields, key, value)\n }\n if (Reflect.has(target, key)) {\n const existingValue = Reflect.get(target, key, receiver)\n if (isRef(existingValue) && !isRef(value)) {\n existingValue.value = value\n return true\n }\n if (hasOwn((target as any)[WEVU_PROPS_KEY] ?? {}, key)) {\n return Reflect.set(setupState, key, value, receiver)\n }\n return Reflect.set(target, key, value, receiver)\n }\n return Reflect.set(instanceFields, key, value)\n },\n has(target, key) {\n if (\n key === 'data'\n || key === '$emit'\n || key === '$nextTick'\n || key === '$set'\n || key === '$delete'\n || key === '$slots'\n || key === '$refs'\n || key === '$parent'\n || key === '$options'\n ) {\n return true\n }\n if (typeof key === 'string' && (hasOwn(setupState, key) || (computedRefs as any)[key] || hasOwn(boundMethods, key))) {\n return true\n }\n if (hasOwn(instanceFields, key)) {\n return true\n }\n const nativeInstance = resolveNativeInstance(target as object, target as object)\n if (typeof key === 'string' && resolveGlobalProperty(nativeInstance, key).found) {\n return true\n }\n if (nativeInstance && Reflect.has(nativeInstance, key)) {\n return true\n }\n return Reflect.has(target, key)\n },\n ownKeys(target) {\n const keys = new Set<string | symbol>()\n Reflect.ownKeys(target).forEach((key) => {\n keys.add(key as string | symbol)\n })\n Reflect.ownKeys(setupState).forEach((key) => {\n keys.add(key as string | symbol)\n })\n Reflect.ownKeys(instanceFields).forEach(key => keys.add(key))\n Object.keys(boundMethods).forEach(key => keys.add(key))\n Object.keys(computedRefs).forEach(key => keys.add(key))\n return [...keys]\n },\n getOwnPropertyDescriptor(target, key) {\n if (typeof key === 'string' && hasOwn(setupState, key)) {\n return Object.getOwnPropertyDescriptor(setupState, key)\n }\n if (hasOwn(instanceFields, key)) {\n return Object.getOwnPropertyDescriptor(instanceFields, key)\n }\n if (Reflect.has(target, key)) {\n return Object.getOwnPropertyDescriptor(target, key)\n }\n if (typeof key === 'string') {\n if (key === 'data') {\n return {\n configurable: true,\n enumerable: false,\n get() {\n return state\n },\n }\n }\n if ((computedRefs as any)[key]) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return (computedRefs as any)[key].value\n },\n set(value: any) {\n setComputedValue(computedSetters, key, value)\n },\n }\n }\n if (hasOwn(boundMethods, key)) {\n return {\n configurable: true,\n enumerable: false,\n value: boundMethods[key as keyof ExtractMethods<M>],\n }\n }\n }\n return undefined\n },\n })\n\n Object.keys(methodDefs).forEach((key) => {\n const handler = (methodDefs as any)[key]\n if (typeof handler === 'function') {\n ;(boundMethods as any)[key] = (...args: any[]) => handler.apply(publicInstance, args)\n return\n }\n if (key === WEVU_INLINE_MAP_KEY && handler && typeof handler === 'object') {\n ;(boundMethods as any)[key] = handler\n }\n })\n\n installNativeMethodBridge('triggerEvent')\n installNativeMethodBridge('createSelectorQuery')\n installNativeMethodBridge('createIntersectionObserver')\n installNativeMethodBridge('setData')\n\n Object.keys(computedDefs).forEach((key) => {\n const definition = (computedDefs as any)[key] as ((this: any) => any) | WritableComputedOptions<any>\n if (typeof definition === 'function') {\n computedRefs[key] = createTrackedComputed(key, () => (definition as any).call(publicInstance))\n }\n else {\n const getter = definition.get?.bind(publicInstance)\n if (!getter) {\n throw new Error(`计算属性 \"${key}\" 需要提供 getter`)\n }\n const setter = definition.set?.bind(publicInstance)\n if (setter) {\n computedSetters[key] = setter\n computedRefs[key] = createTrackedComputed(key, getter, setter)\n }\n else {\n computedRefs[key] = createTrackedComputed(key, getter)\n }\n }\n })\n\n return {\n boundMethods,\n computedRefs,\n computedSetters,\n dirtyComputedKeys,\n computedProxy,\n publicInstance,\n touchSetupMethodsVersion() {\n setupMethodVersion.value += 1\n },\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.mjs","names":[],"sources":["../../../../src/runtime/app/context.ts"],"sourcesContent":["import type { WritableComputedOptions } from '../../reactivity'\nimport type { AppConfig, ComponentPublicInstance, ComputedDefinitions, ExtractMethods, MethodDefinitions } from '../types'\nimport {\n WEVU_COMPONENT_NAME_KEY,\n WEVU_INLINE_MAP_KEY,\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_PARENT_INSTANCE_KEY,\n WEVU_PROPS_KEY,\n WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD,\n WEVU_RUNTIME_APP_KEY,\n WEVU_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { isRef, ref, toRaw } from '../../reactivity'\nimport { nextTick } from '../../scheduler'\nimport { hasOwn } from '../../utils'\nimport { normalizeEmitEventName, normalizeEmitPayload } from '../emit'\nimport { setComputedValue } from '../internal'\nimport { isNativeBridgeMethod, markNativeBridgeMethod } from '../nativeBridge'\nimport { createComputedAccessors } from './computed'\n\nexport function createRuntimeContext<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n state: D\n setupState: Record<string, any>\n computedDefs: C\n methodDefs: M\n appConfig: AppConfig\n includeComputed: boolean\n setDataStrategy: 'diff' | 'patch'\n}) {\n const {\n state,\n setupState,\n computedDefs,\n methodDefs,\n appConfig,\n includeComputed,\n setDataStrategy,\n } = options\n\n const boundMethods = {} as ExtractMethods<M>\n const {\n computedRefs,\n computedSetters,\n dirtyComputedKeys,\n createTrackedComputed,\n computedProxy,\n } = createComputedAccessors({ includeComputed, setDataStrategy })\n const setupMethodVersion = ref(0)\n const instanceFields = Object.create(null) as Record<PropertyKey, any>\n\n const resolveNativeInstance = (target: object, receiver: object) => {\n const rawTarget = toRaw(target as any) as Record<string, any>\n const runtimeRef = rawTarget[WEVU_RUNTIME_KEY]\n const runtimeProxy = runtimeRef?.proxy as Record<string, any> | undefined\n const isBridgeMethod = (\n candidate: object,\n methodName: 'triggerEvent' | 'createSelectorQuery' | 'createIntersectionObserver' | 'setData',\n ) => {\n const candidateMethod = (candidate as any)[methodName]\n return isNativeBridgeMethod(candidateMethod)\n }\n const isValidNativeCandidate = (candidate: unknown) => {\n if (!candidate || typeof candidate !== 'object') {\n return false\n }\n if (candidate === target || candidate === receiver || candidate === runtimeProxy) {\n return false\n }\n if (\n isBridgeMethod(candidate, 'triggerEvent')\n || isBridgeMethod(candidate, 'createSelectorQuery')\n || isBridgeMethod(candidate, 'createIntersectionObserver')\n || isBridgeMethod(candidate, 'setData')\n ) {\n return false\n }\n return true\n }\n const directNative = rawTarget[WEVU_NATIVE_INSTANCE_KEY]\n if (isValidNativeCandidate(directNative)) {\n return directNative as object\n }\n const runtimeNative = runtimeRef?.instance\n if (isValidNativeCandidate(runtimeNative)) {\n return runtimeNative as object\n }\n return undefined\n }\n\n const installNativeMethodBridge = (methodName: string) => {\n if (hasOwn(boundMethods, methodName)) {\n return\n }\n const bridge = (...args: any[]) => {\n const nativeInstance = resolveNativeInstance(state as object, state as object)\n if (!nativeInstance) {\n return undefined\n }\n const nativeMethod = Reflect.get(nativeInstance, methodName)\n if (typeof nativeMethod === 'function') {\n return nativeMethod.apply(nativeInstance, args)\n }\n return undefined\n }\n markNativeBridgeMethod(bridge)\n ;(boundMethods as any)[methodName] = bridge\n }\n\n const resolveGlobalProperty = (nativeInstance: object | undefined, key: string) => {\n const seen = new Set<object>()\n let current = nativeInstance as Record<string, any> | undefined\n while (current && !seen.has(current)) {\n seen.add(current)\n const globalProperties = current[WEVU_RUNTIME_APP_KEY]?.config?.globalProperties\n if (globalProperties && hasOwn(globalProperties, key)) {\n return { found: true, value: globalProperties[key] }\n }\n current = current[WEVU_PARENT_INSTANCE_KEY]\n }\n\n const getAppFn = typeof globalThis !== 'undefined'\n ? (globalThis as Record<string, any>).getApp\n : undefined\n if (typeof getAppFn === 'function') {\n try {\n const rootAppInstance = getAppFn()\n const globalProperties = rootAppInstance?.[WEVU_RUNTIME_APP_KEY]?.config?.globalProperties\n if (globalProperties && hasOwn(globalProperties, key)) {\n return { found: true, value: globalProperties[key] }\n }\n }\n catch {\n // App 尚未初始化时保持普通属性回退语义。\n }\n }\n return { found: false, value: undefined }\n }\n\n const resolveParentPublicInstance = (nativeInstance: object | undefined) => {\n const selectOwnerComponent = nativeInstance && Reflect.get(nativeInstance, 'selectOwnerComponent')\n if (typeof selectOwnerComponent !== 'function') {\n return undefined\n }\n try {\n const owner = selectOwnerComponent.call(nativeInstance)\n if (!owner || typeof owner !== 'object') {\n return undefined\n }\n const resolvePublicInstance = Reflect.get(owner, WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD)\n if (typeof resolvePublicInstance === 'function') {\n const publicInstance = resolvePublicInstance.call(owner)\n if (publicInstance) {\n return publicInstance\n }\n }\n return owner[WEVU_RUNTIME_KEY]?.proxy ?? owner.__wevu?.proxy ?? owner\n }\n catch {\n return undefined\n }\n }\n\n const publicInstance = new Proxy(state as ComponentPublicInstance<D, C, M>, {\n get(target, key, receiver) {\n if (typeof key === 'string') {\n // setup 返回的方法会在运行时后置注入,读取版本号可确保相关 computed 在方法注入后失效重算。\n void setupMethodVersion.value\n if (hasOwn(setupState, key)) {\n return Reflect.get(setupState, key, receiver)\n }\n if (key === 'props') {\n const props = (target as any)[WEVU_PROPS_KEY]\n if (props && typeof props === 'object') {\n return props\n }\n }\n if (key === '$props') {\n const props = (target as any)[WEVU_PROPS_KEY]\n if (props && typeof props === 'object') {\n return props\n }\n }\n const props = (target as any)[WEVU_PROPS_KEY]\n if (props && typeof props === 'object' && hasOwn(props, key)) {\n return Reflect.get(props, key)\n }\n if (key === 'data') {\n return state\n }\n if (key === '$state') {\n return state\n }\n if (key === '$computed') {\n return computedProxy\n }\n if (key === '$emit') {\n return (eventName: string, ...args: any[]) => {\n const nativeInstance = resolveNativeInstance(target as object, receiver as object)\n const triggerEvent = nativeInstance && Reflect.get(nativeInstance, 'triggerEvent')\n if (typeof triggerEvent !== 'function') {\n return undefined\n }\n const { detail, options } = normalizeEmitPayload(args)\n return triggerEvent.call(nativeInstance, normalizeEmitEventName(eventName), detail, options)\n }\n }\n if (key === '$nextTick') {\n return <T>(fn?: () => T) => fn\n ? nextTick(() => fn.call(publicInstance))\n : nextTick<T>()\n }\n if (key === '$set') {\n return (object: Record<PropertyKey, any>, property: PropertyKey, value: any) => {\n Reflect.set(object, property, value)\n return value\n }\n }\n if (key === '$delete') {\n return (object: Record<PropertyKey, any>, property: PropertyKey) => Reflect.deleteProperty(object, property)\n }\n if (key === '$slots') {\n const rawTarget = toRaw(target as any) as Record<string, any>\n return rawTarget.$slots ?? Object.freeze(Object.create(null))\n }\n if (key === '$refs') {\n const rawTarget = toRaw(target as any) as Record<string, any>\n return rawTarget.$refs ?? Object.create(null)\n }\n if (key === '$parent') {\n return resolveParentPublicInstance(resolveNativeInstance(target as object, receiver as object))\n }\n if (key === '$options') {\n const nativeInstance = resolveNativeInstance(target as object, receiver as object) as Record<string, any> | undefined\n return {\n name: nativeInstance?.[WEVU_COMPONENT_NAME_KEY] ?? nativeInstance?.name ?? nativeInstance?.is,\n }\n }\n if (hasOwn(instanceFields, key)) {\n return Reflect.get(instanceFields, key)\n }\n if (hasOwn(boundMethods, key)) {\n return boundMethods[key as keyof ExtractMethods<M>]\n }\n if ((computedRefs as any)[key]) {\n return (computedRefs as any)[key].value\n }\n if (hasOwn(appConfig.globalProperties, key)) {\n return (appConfig.globalProperties as any)[key]\n }\n const globalProperty = resolveGlobalProperty(\n resolveNativeInstance(target as object, receiver as object),\n key,\n )\n if (globalProperty.found) {\n return globalProperty.value\n }\n }\n if (!Reflect.has(target, key)) {\n const nativeInstance = resolveNativeInstance(target as object, receiver as object)\n if (nativeInstance && Reflect.has(nativeInstance, key)) {\n const nativeValue = Reflect.get(nativeInstance, key)\n if (typeof nativeValue === 'function') {\n return nativeValue.bind(nativeInstance)\n }\n return nativeValue\n }\n }\n const targetValue = Reflect.get(target, key, receiver)\n if (typeof key === 'string' && hasOwn(setupState, key)) {\n return Reflect.get(setupState, key, receiver)\n }\n return targetValue\n },\n set(target, key, value, receiver) {\n if (typeof key === 'string' && (computedRefs as any)[key]) {\n setComputedValue(computedSetters, key, value)\n return true\n }\n if (hasOwn(setupState, key)) {\n const existingValue = Reflect.get(setupState, key, receiver)\n if (isRef(existingValue) && !isRef(value)) {\n existingValue.value = value\n return true\n }\n return Reflect.set(setupState, key, value, receiver)\n }\n if (hasOwn(instanceFields, key)) {\n return Reflect.set(instanceFields, key, value)\n }\n if (Reflect.has(target, key)) {\n const existingValue = Reflect.get(target, key, receiver)\n if (isRef(existingValue) && !isRef(value)) {\n existingValue.value = value\n return true\n }\n if (hasOwn((target as any)[WEVU_PROPS_KEY] ?? {}, key)) {\n return Reflect.set(setupState, key, value, receiver)\n }\n return Reflect.set(target, key, value, receiver)\n }\n return Reflect.set(instanceFields, key, value)\n },\n has(target, key) {\n if (\n key === 'data'\n || key === '$emit'\n || key === '$nextTick'\n || key === '$set'\n || key === '$delete'\n || key === '$slots'\n || key === '$refs'\n || key === '$parent'\n || key === '$options'\n ) {\n return true\n }\n if (typeof key === 'string' && (hasOwn(setupState, key) || (computedRefs as any)[key] || hasOwn(boundMethods, key))) {\n return true\n }\n if (hasOwn(instanceFields, key)) {\n return true\n }\n const nativeInstance = resolveNativeInstance(target as object, target as object)\n if (typeof key === 'string' && resolveGlobalProperty(nativeInstance, key).found) {\n return true\n }\n if (nativeInstance && Reflect.has(nativeInstance, key)) {\n return true\n }\n return Reflect.has(target, key)\n },\n ownKeys(target) {\n const keys = new Set<string | symbol>()\n Reflect.ownKeys(target).forEach((key) => {\n keys.add(key as string | symbol)\n })\n Reflect.ownKeys(setupState).forEach((key) => {\n keys.add(key as string | symbol)\n })\n Reflect.ownKeys(instanceFields).forEach(key => keys.add(key))\n Object.keys(boundMethods).forEach(key => keys.add(key))\n Object.keys(computedRefs).forEach(key => keys.add(key))\n return [...keys]\n },\n getOwnPropertyDescriptor(target, key) {\n if (typeof key === 'string' && hasOwn(setupState, key)) {\n return Object.getOwnPropertyDescriptor(setupState, key)\n }\n if (hasOwn(instanceFields, key)) {\n return Object.getOwnPropertyDescriptor(instanceFields, key)\n }\n if (Reflect.has(target, key)) {\n return Object.getOwnPropertyDescriptor(target, key)\n }\n if (typeof key === 'string') {\n if (key === 'data') {\n return {\n configurable: true,\n enumerable: false,\n get() {\n return state\n },\n }\n }\n if ((computedRefs as any)[key]) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return (computedRefs as any)[key].value\n },\n set(value: any) {\n setComputedValue(computedSetters, key, value)\n },\n }\n }\n if (hasOwn(boundMethods, key)) {\n return {\n configurable: true,\n enumerable: false,\n value: boundMethods[key as keyof ExtractMethods<M>],\n }\n }\n }\n return undefined\n },\n })\n\n Object.keys(methodDefs).forEach((key) => {\n const handler = (methodDefs as any)[key]\n if (typeof handler === 'function') {\n ;(boundMethods as any)[key] = (...args: any[]) => handler.apply(publicInstance, args)\n return\n }\n if (key === WEVU_INLINE_MAP_KEY && handler && typeof handler === 'object') {\n ;(boundMethods as any)[key] = handler\n }\n })\n\n installNativeMethodBridge('triggerEvent')\n installNativeMethodBridge('createSelectorQuery')\n installNativeMethodBridge('createIntersectionObserver')\n installNativeMethodBridge('setData')\n\n Object.keys(computedDefs).forEach((key) => {\n const definition = (computedDefs as any)[key] as ((this: any) => any) | WritableComputedOptions<any>\n if (typeof definition === 'function') {\n computedRefs[key] = createTrackedComputed(key, () => (definition as any).call(publicInstance))\n }\n else {\n const getter = definition.get?.bind(publicInstance)\n if (!getter) {\n throw new Error(`计算属性 \"${key}\" 需要提供 getter`)\n }\n const setter = definition.set?.bind(publicInstance)\n if (setter) {\n computedSetters[key] = setter\n computedRefs[key] = createTrackedComputed(key, getter, setter)\n }\n else {\n computedRefs[key] = createTrackedComputed(key, getter)\n }\n }\n })\n\n return {\n boundMethods,\n computedRefs,\n computedSetters,\n dirtyComputedKeys,\n computedProxy,\n publicInstance,\n touchSetupMethodsVersion() {\n setupMethodVersion.value += 1\n },\n }\n}\n"],"mappings":";;;;;;;;;;;AAoBA,SAAgB,qBAAmG,SAQhH;CACD,MAAM,EACJ,OACA,YACA,cACA,YACA,WACA,iBACA,oBACE;CAEJ,MAAM,eAAe,CAAC;CACtB,MAAM,EACJ,cACA,iBACA,mBACA,uBACA,kBACE,wBAAwB;EAAE;EAAiB;CAAgB,CAAC;CAChE,MAAM,qBAAqB,IAAI,CAAC;CAChC,MAAM,iBAAiB,OAAO,OAAO,IAAI;CAEzC,MAAM,yBAAyB,QAAgB,aAAqB;EAClE,MAAM,YAAY,MAAM,MAAa;EACrC,MAAM,aAAa,UAAU;EAC7B,MAAM,uEAAe,WAAY;EACjC,MAAM,kBACJ,WACA,eACG;GACH,MAAM,kBAAmB,UAAkB;GAC3C,OAAO,qBAAqB,eAAe;EAC7C;EACA,MAAM,0BAA0B,cAAuB;GACrD,IAAI,CAAC,aAAa,OAAO,cAAc,UACrC,OAAO;GAET,IAAI,cAAc,UAAU,cAAc,YAAY,cAAc,cAClE,OAAO;GAET,IACE,eAAe,WAAW,cAAc,KACrC,eAAe,WAAW,qBAAqB,KAC/C,eAAe,WAAW,4BAA4B,KACtD,eAAe,WAAW,SAAS,GAEtC,OAAO;GAET,OAAO;EACT;EACA,MAAM,eAAe,UAAU;EAC/B,IAAI,uBAAuB,YAAY,GACrC,OAAO;EAET,MAAM,wEAAgB,WAAY;EAClC,IAAI,uBAAuB,aAAa,GACtC,OAAO;CAGX;CAEA,MAAM,6BAA6B,eAAuB;EACxD,IAAI,OAAO,cAAc,UAAU,GACjC;EAEF,MAAM,UAAU,GAAG,SAAgB;GACjC,MAAM,iBAAiB,sBAAsB,OAAiB,KAAe;GAC7E,IAAI,CAAC,gBACH;GAEF,MAAM,eAAe,QAAQ,IAAI,gBAAgB,UAAU;GAC3D,IAAI,OAAO,iBAAiB,YAC1B,OAAO,aAAa,MAAM,gBAAgB,IAAI;EAGlD;EACA,uBAAuB,MAAM;EAC5B,AAAC,aAAqB,cAAc;CACvC;CAEA,MAAM,yBAAyB,gBAAoC,QAAgB;EACjF,MAAM,uBAAO,IAAI,IAAY;EAC7B,IAAI,UAAU;EACd,OAAO,WAAW,CAAC,KAAK,IAAI,OAAO,GAAG;;GACpC,KAAK,IAAI,OAAO;GAChB,MAAM,4CAAmB,QAAQ,sHAAuB,sFAAQ;GAChE,IAAI,oBAAoB,OAAO,kBAAkB,GAAG,GAClD,OAAO;IAAE,OAAO;IAAM,OAAO,iBAAiB;GAAK;GAErD,UAAU,QAAQ;EACpB;EAEA,MAAM,WAAW,OAAO,eAAe,cAClC,WAAmC,SACpC;EACJ,IAAI,OAAO,aAAa,YACtB,IAAI;;GACF,MAAM,kBAAkB,SAAS;GACjC,MAAM,sGAAmB,gBAAkB,sHAAuB,sFAAQ;GAC1E,IAAI,oBAAoB,OAAO,kBAAkB,GAAG,GAClD,OAAO;IAAE,OAAO;IAAM,OAAO,iBAAiB;GAAK;EAEvD,kBACM,CAEN;EAEF,OAAO;GAAE,OAAO;GAAO,OAAO;EAAU;CAC1C;CAEA,MAAM,+BAA+B,mBAAuC;EAC1E,MAAM,uBAAuB,kBAAkB,QAAQ,IAAI,gBAAgB,sBAAsB;EACjG,IAAI,OAAO,yBAAyB,YAClC;EAEF,IAAI;;GACF,MAAM,QAAQ,qBAAqB,KAAK,cAAc;GACtD,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B;GAEF,MAAM,wBAAwB,QAAQ,IAAI,OAAO,mCAAmC;GACpF,IAAI,OAAO,0BAA0B,YAAY;IAC/C,MAAM,iBAAiB,sBAAsB,KAAK,KAAK;IACvD,IAAI,gBACF,OAAO;GAEX;GACA,kEAAO,MAAM,mGAAmB,+FAAS,MAAM,sEAAQ,4CAAS;EAClE,mBACM;GACJ;EACF;CACF;CAEA,MAAM,iBAAiB,IAAI,MAAM,OAA2C;EAC1E,IAAI,QAAQ,KAAK,UAAU;GACzB,IAAI,OAAO,QAAQ,UAAU;IAE3B,AAAK,mBAAmB;IACxB,IAAI,OAAO,YAAY,GAAG,GACxB,OAAO,QAAQ,IAAI,YAAY,KAAK,QAAQ;IAE9C,IAAI,QAAQ,SAAS;KACnB,MAAM,QAAS,OAAe;KAC9B,IAAI,SAAS,OAAO,UAAU,UAC5B,OAAO;IAEX;IACA,IAAI,QAAQ,UAAU;KACpB,MAAM,QAAS,OAAe;KAC9B,IAAI,SAAS,OAAO,UAAU,UAC5B,OAAO;IAEX;IACA,MAAM,QAAS,OAAe;IAC9B,IAAI,SAAS,OAAO,UAAU,YAAY,OAAO,OAAO,GAAG,GACzD,OAAO,QAAQ,IAAI,OAAO,GAAG;IAE/B,IAAI,QAAQ,QACV,OAAO;IAET,IAAI,QAAQ,UACV,OAAO;IAET,IAAI,QAAQ,aACV,OAAO;IAET,IAAI,QAAQ,SACV,QAAQ,WAAmB,GAAG,SAAgB;KAC5C,MAAM,iBAAiB,sBAAsB,QAAkB,QAAkB;KACjF,MAAM,eAAe,kBAAkB,QAAQ,IAAI,gBAAgB,cAAc;KACjF,IAAI,OAAO,iBAAiB,YAC1B;KAEF,MAAM,EAAE,QAAQ,YAAY,qBAAqB,IAAI;KACrD,OAAO,aAAa,KAAK,gBAAgB,uBAAuB,SAAS,GAAG,QAAQ,OAAO;IAC7F;IAEF,IAAI,QAAQ,aACV,QAAW,OAAiB,KACxB,eAAe,GAAG,KAAK,cAAc,CAAC,IACtC,SAAY;IAElB,IAAI,QAAQ,QACV,QAAQ,QAAkC,UAAuB,UAAe;KAC9E,QAAQ,IAAI,QAAQ,UAAU,KAAK;KACnC,OAAO;IACT;IAEF,IAAI,QAAQ,WACV,QAAQ,QAAkC,aAA0B,QAAQ,eAAe,QAAQ,QAAQ;IAE7G,IAAI,QAAQ,UAAU;;KAEpB,4BADkB,MAAM,MACT,CAAC,CAAC,uEAAU,OAAO,OAAO,OAAO,OAAO,IAAI,CAAC;IAC9D;IACA,IAAI,QAAQ,SAAS;;KAEnB,2BADkB,MAAM,MACT,CAAC,CAAC,oEAAS,OAAO,OAAO,IAAI;IAC9C;IACA,IAAI,QAAQ,WACV,OAAO,4BAA4B,sBAAsB,QAAkB,QAAkB,CAAC;IAEhG,IAAI,QAAQ,YAAY;;KACtB,MAAM,iBAAiB,sBAAsB,QAAkB,QAAkB;KACjF,OAAO,EACL,wGAAM,eAAiB,iKAA4B,eAAgB,6GAAQ,eAAgB,GAC7F;IACF;IACA,IAAI,OAAO,gBAAgB,GAAG,GAC5B,OAAO,QAAQ,IAAI,gBAAgB,GAAG;IAExC,IAAI,OAAO,cAAc,GAAG,GAC1B,OAAO,aAAa;IAEtB,IAAK,aAAqB,MACxB,OAAQ,aAAqB,IAAI,CAAC;IAEpC,IAAI,OAAO,UAAU,kBAAkB,GAAG,GACxC,OAAQ,UAAU,iBAAyB;IAE7C,MAAM,iBAAiB,sBACrB,sBAAsB,QAAkB,QAAkB,GAC1D,GACF;IACA,IAAI,eAAe,OACjB,OAAO,eAAe;GAE1B;GACA,IAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG,GAAG;IAC7B,MAAM,iBAAiB,sBAAsB,QAAkB,QAAkB;IACjF,IAAI,kBAAkB,QAAQ,IAAI,gBAAgB,GAAG,GAAG;KACtD,MAAM,cAAc,QAAQ,IAAI,gBAAgB,GAAG;KACnD,IAAI,OAAO,gBAAgB,YACzB,OAAO,YAAY,KAAK,cAAc;KAExC,OAAO;IACT;GACF;GACA,MAAM,cAAc,QAAQ,IAAI,QAAQ,KAAK,QAAQ;GACrD,IAAI,OAAO,QAAQ,YAAY,OAAO,YAAY,GAAG,GACnD,OAAO,QAAQ,IAAI,YAAY,KAAK,QAAQ;GAE9C,OAAO;EACT;EACA,IAAI,QAAQ,KAAK,OAAO,UAAU;GAChC,IAAI,OAAO,QAAQ,YAAa,aAAqB,MAAM;IACzD,iBAAiB,iBAAiB,KAAK,KAAK;IAC5C,OAAO;GACT;GACA,IAAI,OAAO,YAAY,GAAG,GAAG;IAC3B,MAAM,gBAAgB,QAAQ,IAAI,YAAY,KAAK,QAAQ;IAC3D,IAAI,MAAM,aAAa,KAAK,CAAC,MAAM,KAAK,GAAG;KACzC,cAAc,QAAQ;KACtB,OAAO;IACT;IACA,OAAO,QAAQ,IAAI,YAAY,KAAK,OAAO,QAAQ;GACrD;GACA,IAAI,OAAO,gBAAgB,GAAG,GAC5B,OAAO,QAAQ,IAAI,gBAAgB,KAAK,KAAK;GAE/C,IAAI,QAAQ,IAAI,QAAQ,GAAG,GAAG;;IAC5B,MAAM,gBAAgB,QAAQ,IAAI,QAAQ,KAAK,QAAQ;IACvD,IAAI,MAAM,aAAa,KAAK,CAAC,MAAM,KAAK,GAAG;KACzC,cAAc,QAAQ;KACtB,OAAO;IACT;IACA,IAAI,0BAAQ,OAAe,4EAAmB,CAAC,GAAG,GAAG,GACnD,OAAO,QAAQ,IAAI,YAAY,KAAK,OAAO,QAAQ;IAErD,OAAO,QAAQ,IAAI,QAAQ,KAAK,OAAO,QAAQ;GACjD;GACA,OAAO,QAAQ,IAAI,gBAAgB,KAAK,KAAK;EAC/C;EACA,IAAI,QAAQ,KAAK;GACf,IACE,QAAQ,UACL,QAAQ,WACR,QAAQ,eACR,QAAQ,UACR,QAAQ,aACR,QAAQ,YACR,QAAQ,WACR,QAAQ,aACR,QAAQ,YAEX,OAAO;GAET,IAAI,OAAO,QAAQ,aAAa,OAAO,YAAY,GAAG,KAAM,aAAqB,QAAQ,OAAO,cAAc,GAAG,IAC/G,OAAO;GAET,IAAI,OAAO,gBAAgB,GAAG,GAC5B,OAAO;GAET,MAAM,iBAAiB,sBAAsB,QAAkB,MAAgB;GAC/E,IAAI,OAAO,QAAQ,YAAY,sBAAsB,gBAAgB,GAAG,CAAC,CAAC,OACxE,OAAO;GAET,IAAI,kBAAkB,QAAQ,IAAI,gBAAgB,GAAG,GACnD,OAAO;GAET,OAAO,QAAQ,IAAI,QAAQ,GAAG;EAChC;EACA,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,IAAqB;GACtC,QAAQ,QAAQ,MAAM,CAAC,CAAC,SAAS,QAAQ;IACvC,KAAK,IAAI,GAAsB;GACjC,CAAC;GACD,QAAQ,QAAQ,UAAU,CAAC,CAAC,SAAS,QAAQ;IAC3C,KAAK,IAAI,GAAsB;GACjC,CAAC;GACD,QAAQ,QAAQ,cAAc,CAAC,CAAC,SAAQ,QAAO,KAAK,IAAI,GAAG,CAAC;GAC5D,OAAO,KAAK,YAAY,CAAC,CAAC,SAAQ,QAAO,KAAK,IAAI,GAAG,CAAC;GACtD,OAAO,KAAK,YAAY,CAAC,CAAC,SAAQ,QAAO,KAAK,IAAI,GAAG,CAAC;GACtD,OAAO,CAAC,GAAG,IAAI;EACjB;EACA,yBAAyB,QAAQ,KAAK;GACpC,IAAI,OAAO,QAAQ,YAAY,OAAO,YAAY,GAAG,GACnD,OAAO,OAAO,yBAAyB,YAAY,GAAG;GAExD,IAAI,OAAO,gBAAgB,GAAG,GAC5B,OAAO,OAAO,yBAAyB,gBAAgB,GAAG;GAE5D,IAAI,QAAQ,IAAI,QAAQ,GAAG,GACzB,OAAO,OAAO,yBAAyB,QAAQ,GAAG;GAEpD,IAAI,OAAO,QAAQ,UAAU;IAC3B,IAAI,QAAQ,QACV,OAAO;KACL,cAAc;KACd,YAAY;KACZ,MAAM;MACJ,OAAO;KACT;IACF;IAEF,IAAK,aAAqB,MACxB,OAAO;KACL,cAAc;KACd,YAAY;KACZ,MAAM;MACJ,OAAQ,aAAqB,IAAI,CAAC;KACpC;KACA,IAAI,OAAY;MACd,iBAAiB,iBAAiB,KAAK,KAAK;KAC9C;IACF;IAEF,IAAI,OAAO,cAAc,GAAG,GAC1B,OAAO;KACL,cAAc;KACd,YAAY;KACZ,OAAO,aAAa;IACtB;GAEJ;EAEF;CACF,CAAC;CAED,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,QAAQ;EACvC,MAAM,UAAW,WAAmB;EACpC,IAAI,OAAO,YAAY,YAAY;GAChC,AAAC,aAAqB,QAAQ,GAAG,SAAgB,QAAQ,MAAM,gBAAgB,IAAI;GACpF;EACF;EACA,IAAI,QAAQ,uBAAuB,WAAW,OAAO,YAAY,UAC9D,AAAC,aAAqB,OAAO;CAElC,CAAC;CAED,0BAA0B,cAAc;CACxC,0BAA0B,qBAAqB;CAC/C,0BAA0B,4BAA4B;CACtD,0BAA0B,SAAS;CAEnC,OAAO,KAAK,YAAY,CAAC,CAAC,SAAS,QAAQ;EACzC,MAAM,aAAc,aAAqB;EACzC,IAAI,OAAO,eAAe,YACxB,aAAa,OAAO,sBAAsB,WAAY,WAAmB,KAAK,cAAc,CAAC;OAE1F;;GACH,MAAM,4BAAS,WAAW,uEAAK,KAAK,cAAc;GAClD,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,SAAS,IAAI,cAAc;GAE7C,MAAM,4BAAS,WAAW,uEAAK,KAAK,cAAc;GAClD,IAAI,QAAQ;IACV,gBAAgB,OAAO;IACvB,aAAa,OAAO,sBAAsB,KAAK,QAAQ,MAAM;GAC/D,OAEE,aAAa,OAAO,sBAAsB,KAAK,MAAM;EAEzD;CACF,CAAC;CAED,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA,2BAA2B;GACzB,mBAAmB,SAAS;EAC9B;CACF;AACF"}
|
package/dist/dev/runtime/app.mjs
CHANGED
|
@@ -33,7 +33,7 @@ function createApp(options) {
|
|
|
33
33
|
return runtimeApp;
|
|
34
34
|
},
|
|
35
35
|
provide(key, value) {
|
|
36
|
-
setRuntimeAppProvidedValue(runtimeApp, key, value);
|
|
36
|
+
setRuntimeAppProvidedValue(runtimeApp, key, value, { syncGlobal: defaultsScope !== "component" });
|
|
37
37
|
return runtimeApp;
|
|
38
38
|
},
|
|
39
39
|
onUnmount(cleanup) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.mjs","names":[],"sources":["../../../src/runtime/app.ts"],"sourcesContent":["import type {\n AppConfig,\n ComputedDefinitions,\n CreateAppOptions,\n MethodDefinitions,\n RuntimeApp,\n WevuPlugin,\n} from './types'\nimport { version } from '../version'\nimport { createRuntimeMount } from './app/mount'\nimport { setPendingRuntimeAppRegistration } from './app/pending'\nimport { applyWevuAppDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { getMiniProgramGlobalObject } from './platform'\nimport { ensureRuntimeAppProvides, setRuntimeAppProvidedValue } from './provideContext'\nimport { registerApp } from './register'\n\nexport function createApp<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n options: CreateAppOptions<D, C, M>,\n): RuntimeApp<D, C, M> {\n const defaultsScope = (options as any)[INTERNAL_DEFAULTS_SCOPE_KEY] as string | undefined\n const resolvedOptions = defaultsScope === 'component'\n ? options\n : applyWevuAppDefaults(options)\n const {\n [INTERNAL_DEFAULTS_SCOPE_KEY]: _ignoredDefaultsScope,\n data,\n computed: computedOptions,\n methods,\n setData: setDataOptions,\n watch: appWatch,\n setup: appSetup,\n ...mpOptions\n } = resolvedOptions\n const resolvedMethods = methods ?? ({} as M)\n const resolvedComputed = computedOptions ?? ({} as C)\n\n const installedPlugins = new Set<WevuPlugin>()\n const appUnmountCleanups = new Set<() => void>()\n let appUnmounted = false\n const appConfig: AppConfig = { globalProperties: {} }\n const mount = createRuntimeMount<D, C, M>({\n data,\n resolvedComputed,\n resolvedMethods,\n appConfig,\n setDataOptions,\n })\n\n const runtimeApp: RuntimeApp<D, C, M> = {\n mount,\n use(plugin: WevuPlugin, ...options: any[]) {\n if (!plugin || installedPlugins.has(plugin)) {\n return runtimeApp\n }\n installedPlugins.add(plugin)\n if (typeof plugin === 'function') {\n plugin(runtimeApp, ...options)\n }\n else if (typeof plugin.install === 'function') {\n plugin.install(runtimeApp, ...options)\n }\n else {\n throw new TypeError('插件必须是函数,或包含 install 方法的对象')\n }\n return runtimeApp\n },\n provide(key: any, value: any) {\n setRuntimeAppProvidedValue(runtimeApp, key, value)\n return runtimeApp\n },\n onUnmount(cleanup: () => void) {\n if (typeof cleanup !== 'function') {\n throw new TypeError('onUnmount 只接受函数')\n }\n if (appUnmounted) {\n cleanup()\n return runtimeApp\n }\n appUnmountCleanups.add(cleanup)\n return runtimeApp\n },\n unmount() {\n if (appUnmounted) {\n return\n }\n appUnmounted = true\n for (const cleanup of appUnmountCleanups) {\n cleanup()\n }\n appUnmountCleanups.clear()\n },\n config: appConfig,\n version,\n }\n\n try {\n ensureRuntimeAppProvides(runtimeApp)\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuSetDataOptions', {\n value: setDataOptions,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuHasTemplateRuntimeBindings', {\n value: Object.keys(resolvedComputed as Record<string, unknown>).some(key => key.startsWith('__wv_bind_')),\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeApp as any).__wevuSetDataOptions = setDataOptions\n ;(runtimeApp as any).__wevuHasTemplateRuntimeBindings = Object.keys(resolvedComputed as Record<string, unknown>)\n .some(key => key.startsWith('__wv_bind_'))\n }\n\n const registerRuntimeApp = () => {\n const globalObject = getMiniProgramGlobalObject()\n const appRegisterKey = '__wevuAppRegistered'\n const hasRegistered = globalObject ? Boolean(globalObject[appRegisterKey]) : false\n // 开发者工具/HMR 可能重复执行入口,避免多次 App() 导致 AppService 事件监听累积。\n if (!hasRegistered) {\n if (globalObject) {\n globalObject[appRegisterKey] = true\n }\n // 若检测到全局 App 构造器则自动注册小程序 App\n registerApp<D, C, M>(runtimeApp, (methods ?? {}) as any, appWatch as any, appSetup as any, mpOptions as any)\n }\n }\n\n if (defaultsScope !== 'component' && typeof App === 'function') {\n registerRuntimeApp()\n }\n else if (defaultsScope !== 'component') {\n setPendingRuntimeAppRegistration({\n app: runtimeApp,\n register: registerRuntimeApp,\n })\n }\n\n return runtimeApp\n}\n"],"mappings":";;;;;;;;;AAgBA,SAAgB,UACd,SACqB;CACrB,MAAM,gBAAiB,QAAgB;CAIvC,MAAM,GACH,8BAA8B,uBAC/B,MACA,UAAU,iBACV,SACA,SAAS,gBACT,OAAO,UACP,OAAO,UACP,GAAG,cAXmB,kBAAkB,cACtC,UACA,qBAAqB,OAAO;CAWhC,MAAM,kBAAkB,mDAAY,CAAC;CACrC,MAAM,mBAAmB,2EAAoB,CAAC;CAE9C,MAAM,mCAAmB,IAAI,IAAgB;CAC7C,MAAM,qCAAqB,IAAI,IAAgB;CAC/C,IAAI,eAAe;CACnB,MAAM,YAAuB,EAAE,kBAAkB,CAAC,EAAE;CASpD,MAAM,aAAkC;EACtC,OATY,mBAA4B;GACxC;GACA;GACA;GACA;GACA;EACF,CAGM;EACJ,IAAI,QAAoB,GAAG,SAAgB;GACzC,IAAI,CAAC,UAAU,iBAAiB,IAAI,MAAM,GACxC,OAAO;GAET,iBAAiB,IAAI,MAAM;GAC3B,IAAI,OAAO,WAAW,YACpB,OAAO,YAAY,GAAG,OAAO;QAE1B,IAAI,OAAO,OAAO,YAAY,YACjC,OAAO,QAAQ,YAAY,GAAG,OAAO;QAGrC,MAAM,IAAI,UAAU,2BAA2B;GAEjD,OAAO;EACT;EACA,QAAQ,KAAU,OAAY;GAC5B,2BAA2B,YAAY,KAAK,
|
|
1
|
+
{"version":3,"file":"app.mjs","names":[],"sources":["../../../src/runtime/app.ts"],"sourcesContent":["import type {\n AppConfig,\n ComputedDefinitions,\n CreateAppOptions,\n MethodDefinitions,\n RuntimeApp,\n WevuPlugin,\n} from './types'\nimport { version } from '../version'\nimport { createRuntimeMount } from './app/mount'\nimport { setPendingRuntimeAppRegistration } from './app/pending'\nimport { applyWevuAppDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { getMiniProgramGlobalObject } from './platform'\nimport { ensureRuntimeAppProvides, setRuntimeAppProvidedValue } from './provideContext'\nimport { registerApp } from './register'\n\nexport function createApp<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n options: CreateAppOptions<D, C, M>,\n): RuntimeApp<D, C, M> {\n const defaultsScope = (options as any)[INTERNAL_DEFAULTS_SCOPE_KEY] as string | undefined\n const resolvedOptions = defaultsScope === 'component'\n ? options\n : applyWevuAppDefaults(options)\n const {\n [INTERNAL_DEFAULTS_SCOPE_KEY]: _ignoredDefaultsScope,\n data,\n computed: computedOptions,\n methods,\n setData: setDataOptions,\n watch: appWatch,\n setup: appSetup,\n ...mpOptions\n } = resolvedOptions\n const resolvedMethods = methods ?? ({} as M)\n const resolvedComputed = computedOptions ?? ({} as C)\n\n const installedPlugins = new Set<WevuPlugin>()\n const appUnmountCleanups = new Set<() => void>()\n let appUnmounted = false\n const appConfig: AppConfig = { globalProperties: {} }\n const mount = createRuntimeMount<D, C, M>({\n data,\n resolvedComputed,\n resolvedMethods,\n appConfig,\n setDataOptions,\n })\n\n const runtimeApp: RuntimeApp<D, C, M> = {\n mount,\n use(plugin: WevuPlugin, ...options: any[]) {\n if (!plugin || installedPlugins.has(plugin)) {\n return runtimeApp\n }\n installedPlugins.add(plugin)\n if (typeof plugin === 'function') {\n plugin(runtimeApp, ...options)\n }\n else if (typeof plugin.install === 'function') {\n plugin.install(runtimeApp, ...options)\n }\n else {\n throw new TypeError('插件必须是函数,或包含 install 方法的对象')\n }\n return runtimeApp\n },\n provide(key: any, value: any) {\n setRuntimeAppProvidedValue(runtimeApp, key, value, {\n syncGlobal: defaultsScope !== 'component',\n })\n return runtimeApp\n },\n onUnmount(cleanup: () => void) {\n if (typeof cleanup !== 'function') {\n throw new TypeError('onUnmount 只接受函数')\n }\n if (appUnmounted) {\n cleanup()\n return runtimeApp\n }\n appUnmountCleanups.add(cleanup)\n return runtimeApp\n },\n unmount() {\n if (appUnmounted) {\n return\n }\n appUnmounted = true\n for (const cleanup of appUnmountCleanups) {\n cleanup()\n }\n appUnmountCleanups.clear()\n },\n config: appConfig,\n version,\n }\n\n try {\n ensureRuntimeAppProvides(runtimeApp)\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuSetDataOptions', {\n value: setDataOptions,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuHasTemplateRuntimeBindings', {\n value: Object.keys(resolvedComputed as Record<string, unknown>).some(key => key.startsWith('__wv_bind_')),\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeApp as any).__wevuSetDataOptions = setDataOptions\n ;(runtimeApp as any).__wevuHasTemplateRuntimeBindings = Object.keys(resolvedComputed as Record<string, unknown>)\n .some(key => key.startsWith('__wv_bind_'))\n }\n\n const registerRuntimeApp = () => {\n const globalObject = getMiniProgramGlobalObject()\n const appRegisterKey = '__wevuAppRegistered'\n const hasRegistered = globalObject ? Boolean(globalObject[appRegisterKey]) : false\n // 开发者工具/HMR 可能重复执行入口,避免多次 App() 导致 AppService 事件监听累积。\n if (!hasRegistered) {\n if (globalObject) {\n globalObject[appRegisterKey] = true\n }\n // 若检测到全局 App 构造器则自动注册小程序 App\n registerApp<D, C, M>(runtimeApp, (methods ?? {}) as any, appWatch as any, appSetup as any, mpOptions as any)\n }\n }\n\n if (defaultsScope !== 'component' && typeof App === 'function') {\n registerRuntimeApp()\n }\n else if (defaultsScope !== 'component') {\n setPendingRuntimeAppRegistration({\n app: runtimeApp,\n register: registerRuntimeApp,\n })\n }\n\n return runtimeApp\n}\n"],"mappings":";;;;;;;;;AAgBA,SAAgB,UACd,SACqB;CACrB,MAAM,gBAAiB,QAAgB;CAIvC,MAAM,GACH,8BAA8B,uBAC/B,MACA,UAAU,iBACV,SACA,SAAS,gBACT,OAAO,UACP,OAAO,UACP,GAAG,cAXmB,kBAAkB,cACtC,UACA,qBAAqB,OAAO;CAWhC,MAAM,kBAAkB,mDAAY,CAAC;CACrC,MAAM,mBAAmB,2EAAoB,CAAC;CAE9C,MAAM,mCAAmB,IAAI,IAAgB;CAC7C,MAAM,qCAAqB,IAAI,IAAgB;CAC/C,IAAI,eAAe;CACnB,MAAM,YAAuB,EAAE,kBAAkB,CAAC,EAAE;CASpD,MAAM,aAAkC;EACtC,OATY,mBAA4B;GACxC;GACA;GACA;GACA;GACA;EACF,CAGM;EACJ,IAAI,QAAoB,GAAG,SAAgB;GACzC,IAAI,CAAC,UAAU,iBAAiB,IAAI,MAAM,GACxC,OAAO;GAET,iBAAiB,IAAI,MAAM;GAC3B,IAAI,OAAO,WAAW,YACpB,OAAO,YAAY,GAAG,OAAO;QAE1B,IAAI,OAAO,OAAO,YAAY,YACjC,OAAO,QAAQ,YAAY,GAAG,OAAO;QAGrC,MAAM,IAAI,UAAU,2BAA2B;GAEjD,OAAO;EACT;EACA,QAAQ,KAAU,OAAY;GAC5B,2BAA2B,YAAY,KAAK,OAAO,EACjD,YAAY,kBAAkB,YAChC,CAAC;GACD,OAAO;EACT;EACA,UAAU,SAAqB;GAC7B,IAAI,OAAO,YAAY,YACrB,MAAM,IAAI,UAAU,iBAAiB;GAEvC,IAAI,cAAc;IAChB,QAAQ;IACR,OAAO;GACT;GACA,mBAAmB,IAAI,OAAO;GAC9B,OAAO;EACT;EACA,UAAU;GACR,IAAI,cACF;GAEF,eAAe;GACf,KAAK,MAAM,WAAW,oBACpB,QAAQ;GAEV,mBAAmB,MAAM;EAC3B;EACA,QAAQ;EACR;CACF;CAEA,IAAI;EACF,yBAAyB,UAAU;EACnC,OAAO,eAAe,YAAmC,wBAAwB;GAC/E,OAAO;GACP,cAAc;GACd,YAAY;GACZ,UAAU;EACZ,CAAC;EACD,OAAO,eAAe,YAAmC,oCAAoC;GAC3F,OAAO,OAAO,KAAK,gBAA2C,CAAC,CAAC,MAAK,QAAO,IAAI,WAAW,YAAY,CAAC;GACxG,cAAc;GACd,YAAY;GACZ,UAAU;EACZ,CAAC;CACH,kBACM;EACH,AAAC,WAAmB,uBAAuB;EAC3C,AAAC,WAAmB,mCAAmC,OAAO,KAAK,gBAA2C,CAAC,CAC7G,MAAK,QAAO,IAAI,WAAW,YAAY,CAAC;CAC7C;CAEA,MAAM,2BAA2B;EAC/B,MAAM,eAAe,2BAA2B;EAChD,MAAM,iBAAiB;EAGvB,IAAI,EAFkB,eAAe,QAAQ,aAAa,eAAe,IAAI,QAEzD;GAClB,IAAI,cACF,aAAa,kBAAkB;GAGjC,YAAqB,YAAa,mDAAW,CAAC,GAAW,UAAiB,UAAiB,SAAgB;EAC7G;CACF;CAEA,IAAI,kBAAkB,eAAe,OAAO,QAAQ,YAClD,mBAAmB;MAEhB,IAAI,kBAAkB,aACzB,iCAAiC;EAC/B,KAAK;EACL,UAAU;CACZ,CAAC;CAGH,OAAO;AACT"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { INTERNAL_DEFAULTS_SCOPE_KEY } from "../defaults.mjs";
|
|
2
|
+
import { registerComponent } from "../register/component.mjs";
|
|
3
|
+
import { createApp } from "../app.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/runtime/define/componentDefinition.ts
|
|
6
|
+
/**
|
|
7
|
+
* 从稳定的组件选项快照创建独立运行时和宿主生命周期定义。
|
|
8
|
+
*/
|
|
9
|
+
function createRuntimeComponentDefinition(options, registerNative = false) {
|
|
10
|
+
const runtimeApp = createApp({
|
|
11
|
+
data: options.data,
|
|
12
|
+
computed: options.computed,
|
|
13
|
+
methods: options.methods,
|
|
14
|
+
setData: options.setData,
|
|
15
|
+
[INTERNAL_DEFAULTS_SCOPE_KEY]: "component"
|
|
16
|
+
});
|
|
17
|
+
return {
|
|
18
|
+
lifecycleDefinition: registerComponent(runtimeApp, options.methods, options.watch, options.setup, options.mpOptions, { registerNative }),
|
|
19
|
+
runtimeApp
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { createRuntimeComponentDefinition };
|
|
25
|
+
//# sourceMappingURL=componentDefinition.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"componentDefinition.mjs","names":[],"sources":["../../../../src/runtime/define/componentDefinition.ts"],"sourcesContent":["import type { WatchMap } from '../register/watch'\nimport type {\n ComputedDefinitions,\n MethodDefinitions,\n MiniProgramComponentRawOptions,\n SetDataSnapshotOptions,\n} from '../types'\nimport { createApp } from '../app'\nimport { INTERNAL_DEFAULTS_SCOPE_KEY } from '../defaults'\nimport { registerComponent } from '../register'\n\nexport interface RuntimeComponentDefinitionOptions {\n data: (() => Record<string, any>) | undefined\n computed: ComputedDefinitions\n methods: MethodDefinitions\n setData: SetDataSnapshotOptions | undefined\n watch: WatchMap | undefined\n setup: ((props: any, ctx: any) => any) | undefined\n mpOptions: MiniProgramComponentRawOptions\n}\n\n/**\n * 从稳定的组件选项快照创建独立运行时和宿主生命周期定义。\n */\nexport function createRuntimeComponentDefinition(\n options: RuntimeComponentDefinitionOptions,\n registerNative = false,\n) {\n const runtimeApp = createApp({\n data: options.data,\n computed: options.computed,\n methods: options.methods,\n setData: options.setData,\n [INTERNAL_DEFAULTS_SCOPE_KEY]: 'component',\n } as any)\n const lifecycleDefinition = registerComponent(\n runtimeApp as any,\n options.methods,\n options.watch,\n options.setup,\n options.mpOptions,\n { registerNative },\n )\n\n return {\n lifecycleDefinition,\n runtimeApp,\n }\n}\n"],"mappings":";;;;;;;;AAwBA,SAAgB,iCACd,SACA,iBAAiB,OACjB;CACA,MAAM,aAAa,UAAU;EAC3B,MAAM,QAAQ;EACd,UAAU,QAAQ;EAClB,SAAS,QAAQ;EACjB,SAAS,QAAQ;GAChB,8BAA8B;CACjC,CAAQ;CAUR,OAAO;EACL,qBAV0B,kBAC1B,YACA,QAAQ,SACR,QAAQ,OACR,QAAQ,OACR,QAAQ,WACR,EAAE,eAAe,CAIC;EAClB;CACF;AACF"}
|
|
@@ -178,6 +178,45 @@ function setOwnerProxy(instance, proxy) {
|
|
|
178
178
|
}
|
|
179
179
|
return changed;
|
|
180
180
|
}
|
|
181
|
+
function isSnapshotObject(value) {
|
|
182
|
+
if (!value || typeof value !== "object") return false;
|
|
183
|
+
const prototype = Object.getPrototypeOf(value);
|
|
184
|
+
return prototype === Object.prototype || prototype === null;
|
|
185
|
+
}
|
|
186
|
+
function splitOwnerSnapshotFunctions(value, path, functionPayload, visiting) {
|
|
187
|
+
if (typeof value === "function") {
|
|
188
|
+
functionPayload[path] = value;
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (value == null || typeof value !== "object") return value;
|
|
192
|
+
if (visiting.has(value)) return;
|
|
193
|
+
if (Array.isArray(value)) {
|
|
194
|
+
visiting.add(value);
|
|
195
|
+
const output = value.map((item, index) => {
|
|
196
|
+
const next = splitOwnerSnapshotFunctions(item, `${path}.${index}`, functionPayload, visiting);
|
|
197
|
+
return next === void 0 ? null : next;
|
|
198
|
+
});
|
|
199
|
+
visiting.delete(value);
|
|
200
|
+
return output;
|
|
201
|
+
}
|
|
202
|
+
if (!isSnapshotObject(value)) return cloneSnapshotValue(value);
|
|
203
|
+
visiting.add(value);
|
|
204
|
+
const output = {};
|
|
205
|
+
for (const [key, child] of Object.entries(value)) {
|
|
206
|
+
const next = splitOwnerSnapshotFunctions(child, `${path}.${key}`, functionPayload, visiting);
|
|
207
|
+
if (next !== void 0) output[key] = next;
|
|
208
|
+
}
|
|
209
|
+
visiting.delete(value);
|
|
210
|
+
return output;
|
|
211
|
+
}
|
|
212
|
+
function createOwnerSetDataPayload(snapshot) {
|
|
213
|
+
const functionPayload = {};
|
|
214
|
+
const ownerSnapshot = splitOwnerSnapshotFunctions(snapshot, WEVU_SLOT_OWNER_KEY, functionPayload, /* @__PURE__ */ new WeakSet());
|
|
215
|
+
return {
|
|
216
|
+
[WEVU_SLOT_OWNER_KEY]: ownerSnapshot,
|
|
217
|
+
...functionPayload
|
|
218
|
+
};
|
|
219
|
+
}
|
|
181
220
|
function updateOwnerBindings(instance, snapshot, proxy, computed) {
|
|
182
221
|
var _instance$__wvOwnerSn;
|
|
183
222
|
const proxyChanged = setOwnerProxy(instance, proxy);
|
|
@@ -191,7 +230,7 @@ function updateOwnerBindings(instance, snapshot, proxy, computed) {
|
|
|
191
230
|
const runtimeState = instance === null || instance === void 0 || (_instance$__wevu5 = instance.__wevu) === null || _instance$__wevu5 === void 0 ? void 0 : _instance$__wevu5.state;
|
|
192
231
|
if (runtimeState && typeof runtimeState === "object") runtimeState[WEVU_SLOT_OWNER_KEY] = nextOwnerSnapshot;
|
|
193
232
|
}
|
|
194
|
-
if (ownerChanged && typeof (instance === null || instance === void 0 ? void 0 : instance.setData) === "function") instance.setData(
|
|
233
|
+
if (ownerChanged && typeof (instance === null || instance === void 0 ? void 0 : instance.setData) === "function") instance.setData(createOwnerSetDataPayload(nextOwnerSnapshot));
|
|
195
234
|
if (ownerChanged || proxyChanged || slotPropsChanged) flushScopedSlotComputedBindings(instance, computed);
|
|
196
235
|
}
|
|
197
236
|
function bindOwner(instance, ownerId, computed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopedSlotOptions.mjs","names":[],"sources":["../../../../src/runtime/define/scopedSlotOptions.ts"],"sourcesContent":["import type { InlineExpressionMap } from '../register/inline'\nimport type { TemplateRefBinding } from '../templateRefs'\nimport type { ComputedDefinitions } from '../types'\nimport {\n WEVU_INLINE_HANDLER,\n WEVU_INLINE_MAP_KEY,\n WEVU_OWNER_HANDLER,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_SLOT_FUNCTION_TOKEN,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_OWNER_KEY,\n WEVU_SLOT_OWNER_PROXY_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_SLOT_PROPS_KEY,\n WEVU_SLOT_SCOPE_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../../utils'\nimport { cloneSnapshotValue, isDeepEqualValue } from '../app/setData/snapshot'\nimport { resolveDatasetEventValue, runInlineExpression } from '../register/inline'\nimport { getOwnerProxy, getOwnerSnapshot, getOwnerTarget, subscribeOwner } from '../scopedSlots'\nimport { clearTemplateRefs, scheduleTemplateRefUpdate } from '../templateRefs'\n\nconst SCOPED_SLOT_SNAPSHOT_OMIT_KEYS = [\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_OWNER_PROXY_KEY,\n WEVU_SLOT_OWNER_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_SLOT_PROPS_KEY,\n WEVU_SLOT_SCOPE_KEY,\n]\n\nconst AMP_RE = /&/g\nconst QUOT_RE = /"/g\nconst NUM_QUOT_RE = /"/g\nconst APOS_RE = /'/g\nconst NUM_APOS_RE = /'/g\nconst LT_RE = /</g\nconst GT_RE = />/g\n\nfunction decodeWxmlEntities(value: string) {\n return value\n .replace(AMP_RE, '&')\n .replace(QUOT_RE, '\"')\n .replace(NUM_QUOT_RE, '\"')\n .replace(APOS_RE, '\\'')\n .replace(NUM_APOS_RE, '\\'')\n .replace(LT_RE, '<')\n .replace(GT_RE, '>')\n}\n\nfunction parseInlineArgs(event: any) {\n const dataset = event?.currentTarget?.dataset ?? event?.target?.dataset ?? {}\n const argsRaw = resolveDatasetEventValue(dataset, 'wvArgs', event)\n let args: any[] = []\n if (Array.isArray(argsRaw)) {\n args = argsRaw\n }\n else if (typeof argsRaw === 'string') {\n try {\n args = JSON.parse(argsRaw)\n }\n catch {\n try {\n args = JSON.parse(decodeWxmlEntities(argsRaw))\n }\n catch {\n args = []\n }\n }\n }\n if (!Array.isArray(args)) {\n args = []\n }\n return args.map((item: any) => item === '$event' ? event : item)\n}\n\nfunction normalizeSlotBindings(value: unknown): Record<string, any> {\n if (!value || typeof value !== 'object') {\n return {}\n }\n if (Array.isArray(value)) {\n const result: Record<string, any> = {}\n for (let i = 0; i < value.length; i += 2) {\n const key = value[i]\n if (typeof key === 'string' && key) {\n result[key] = value[i + 1]\n }\n }\n return result\n }\n return value as Record<string, any>\n}\n\nfunction isSlotFunctionDescriptor(value: unknown): value is [string, string, unknown[], unknown[]] {\n return Array.isArray(value)\n && value[0] === WEVU_SLOT_FUNCTION_TOKEN\n && typeof value[1] === 'string'\n}\n\nfunction createSlotFunctionProxy(instance: any, descriptor: [string, string, unknown[], unknown[]]) {\n return (...args: unknown[]) => {\n const owner = instance?.selectOwnerComponent?.()\n const handler = owner?.[WEVU_INLINE_HANDLER]\n if (typeof handler !== 'function') {\n return undefined\n }\n const dataset: Record<string, unknown> = {\n wd: 1,\n wi: descriptor[1],\n }\n const scopeBindings = Array.isArray(descriptor[2]) ? descriptor[2] : []\n const indexBindings = Array.isArray(descriptor[3]) ? descriptor[3] : []\n scopeBindings.forEach((value, index) => dataset[`wvS${index}`] = value)\n indexBindings.forEach((value, index) => dataset[`wvI${index}`] = value)\n const event = {\n type: 'wv-slot-function',\n detail: args,\n currentTarget: { dataset },\n target: { dataset },\n }\n return handler.call(owner, event)\n }\n}\n\nfunction resolveRuntimeSlotBindings(instance: any, bindings: Record<string, any>) {\n return Object.fromEntries(Object.entries(bindings).map(([key, value]) => [\n key,\n isSlotFunctionDescriptor(value) ? createSlotFunctionProxy(instance, value) : value,\n ]))\n}\n\nfunction resolveComputedContext(instance: any) {\n return instance?.__wevu?.proxy\n ?? instance?.[WEVU_PUBLIC_RUNTIME_KEY]?.proxy\n ?? instance\n}\n\nfunction collectComputedPayload(instance: any, computed?: ComputedDefinitions) {\n if (!computed || Object.keys(computed).length === 0) {\n return undefined\n }\n\n const context = resolveComputedContext(instance)\n const payload: Record<string, any> = {}\n for (const [key, definition] of Object.entries(computed)) {\n try {\n let value: any\n if (typeof definition === 'function') {\n value = definition.call(context)\n }\n else if (typeof (definition as any)?.get === 'function') {\n value = (definition as any).get.call(context)\n }\n if (value !== undefined) {\n payload[key] = value\n }\n }\n catch {\n }\n }\n return payload\n}\n\nfunction flushOwnerProxyBindings(instance: any) {\n instance?.__wevu?.__wevu_flushSetupSnapshotSync?.()\n}\n\nfunction flushScopedSlotComputedBindings(\n instance: any,\n computed?: ComputedDefinitions,\n options?: { force?: boolean },\n) {\n flushOwnerProxyBindings(instance)\n const payload = collectComputedPayload(instance, computed)\n if (!payload || typeof instance?.setData !== 'function') {\n return\n }\n const hasPrevious = hasOwn(instance, '__wvScopedSlotComputedSnapshot')\n const previous = instance.__wvScopedSlotComputedSnapshot ?? {}\n const next: Record<string, any> = {}\n const changed: Record<string, any> = {}\n for (const [key, value] of Object.entries(payload)) {\n next[key] = cloneSnapshotValue(value)\n if (options?.force || !hasPrevious || !hasOwn(previous, key) || !isDeepEqualValue(previous[key], value, 20, { keys: 10_000 })) {\n changed[key] = value\n }\n }\n for (const key of Object.keys(previous)) {\n if (!hasOwn(payload, key)) {\n changed[key] = null\n }\n }\n instance.__wvScopedSlotComputedSnapshot = next\n if (Object.keys(changed).length > 0) {\n instance.setData(changed)\n }\n}\n\nfunction syncSlotPropsData(\n instance: any,\n override?: { [WEVU_SLOT_SCOPE_KEY]?: unknown, [WEVU_SLOT_PROPS_KEY]?: unknown },\n) {\n const scopeSource = hasOwn(override ?? {}, WEVU_SLOT_SCOPE_KEY)\n ? (override as any)[WEVU_SLOT_SCOPE_KEY]\n : instance?.properties?.[WEVU_SLOT_SCOPE_KEY]\n const propsSource = hasOwn(override ?? {}, WEVU_SLOT_PROPS_KEY)\n ? (override as any)[WEVU_SLOT_PROPS_KEY]\n : instance?.properties?.[WEVU_SLOT_PROPS_KEY]\n const scope = normalizeSlotBindings(scopeSource)\n const slotProps = normalizeSlotBindings(propsSource)\n const snapshot = { ...scope, ...slotProps }\n const snapshotChanged = !hasOwn(instance, '__wvSlotPropsSnapshot')\n || !isDeepEqualValue(\n instance.__wvSlotPropsSnapshot ?? {},\n snapshot,\n 20,\n { keys: 10_000 },\n )\n const merged = snapshotChanged || !instance[WEVU_SLOT_PROPS_DATA_KEY]\n ? resolveRuntimeSlotBindings(instance, snapshot)\n : instance[WEVU_SLOT_PROPS_DATA_KEY]\n if (snapshotChanged) {\n instance.__wvSlotPropsSnapshot = cloneSnapshotValue(snapshot)\n }\n instance[WEVU_SLOT_PROPS_DATA_KEY] = merged\n const runtimeState = instance?.__wevu?.state\n const runtimeSnapshotChanged = Boolean(\n runtimeState\n && typeof runtimeState === 'object'\n && (\n !hasOwn(runtimeState, WEVU_SLOT_PROPS_DATA_KEY)\n || !isDeepEqualValue(\n runtimeState[WEVU_SLOT_PROPS_DATA_KEY] ?? {},\n snapshot,\n 20,\n { keys: 10_000 },\n )\n ),\n )\n if (runtimeState && typeof runtimeState === 'object') {\n runtimeState[WEVU_SLOT_PROPS_DATA_KEY] = merged\n }\n return { merged, runtimeSnapshotChanged, snapshot, snapshotChanged }\n}\n\nfunction mergeSlotProps(\n instance: any,\n computed?: ComputedDefinitions,\n override?: { [WEVU_SLOT_SCOPE_KEY]?: unknown, [WEVU_SLOT_PROPS_KEY]?: unknown },\n) {\n const { runtimeSnapshotChanged, snapshot, snapshotChanged } = syncSlotPropsData(instance, override)\n if ((snapshotChanged || runtimeSnapshotChanged) && typeof instance?.setData === 'function') {\n instance.setData({ [WEVU_SLOT_PROPS_DATA_KEY]: snapshot })\n }\n if (snapshotChanged) {\n flushScopedSlotComputedBindings(instance, computed)\n }\n}\n\nfunction setOwnerProxy(instance: any, proxy: any) {\n let changed = false\n if (instance[WEVU_SLOT_OWNER_PROXY_KEY] !== proxy) {\n instance[WEVU_SLOT_OWNER_PROXY_KEY] = proxy\n changed = true\n }\n const data = instance?.data\n if (data && typeof data === 'object' && data[WEVU_SLOT_OWNER_PROXY_KEY] !== proxy) {\n try {\n Object.defineProperty(data, WEVU_SLOT_OWNER_PROXY_KEY, {\n value: proxy,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n data[WEVU_SLOT_OWNER_PROXY_KEY] = proxy\n }\n changed = true\n }\n const runtimeState = instance?.__wevu?.state\n if (\n runtimeState\n && typeof runtimeState === 'object'\n && runtimeState[WEVU_SLOT_OWNER_PROXY_KEY] !== proxy\n ) {\n runtimeState[WEVU_SLOT_OWNER_PROXY_KEY] = proxy\n changed = true\n }\n return changed\n}\n\nfunction updateOwnerBindings(instance: any, snapshot: Record<string, any>, proxy: any, computed?: ComputedDefinitions) {\n const proxyChanged = setOwnerProxy(instance, proxy)\n const { snapshotChanged: slotPropsChanged } = syncSlotPropsData(instance)\n const nextOwnerSnapshot = snapshot || {}\n const ownerChanged = !hasOwn(instance, '__wvOwnerSnapshot')\n || !isDeepEqualValue(\n instance.__wvOwnerSnapshot ?? {},\n nextOwnerSnapshot,\n 20,\n { keys: 10_000 },\n )\n if (ownerChanged) {\n instance.__wvOwnerSnapshot = cloneSnapshotValue(nextOwnerSnapshot)\n instance[WEVU_SLOT_OWNER_KEY] = nextOwnerSnapshot\n const runtimeState = instance?.__wevu?.state\n if (runtimeState && typeof runtimeState === 'object') {\n runtimeState[WEVU_SLOT_OWNER_KEY] = nextOwnerSnapshot\n }\n }\n if (ownerChanged && typeof instance?.setData === 'function') {\n instance.setData({ [WEVU_SLOT_OWNER_KEY]: nextOwnerSnapshot })\n }\n if (ownerChanged || proxyChanged || slotPropsChanged) {\n flushScopedSlotComputedBindings(instance, computed)\n }\n}\n\nfunction bindOwner(instance: any, ownerId: string, computed?: ComputedDefinitions) {\n if (!ownerId) {\n if (typeof instance?.__wvOwnerUnsub === 'function') {\n instance.__wvOwnerUnsub()\n }\n instance.__wvOwnerUnsub = undefined\n instance.__wvOwnerBoundId = ''\n setOwnerProxy(instance, undefined)\n return\n }\n\n const updateOwner = (snapshot: Record<string, any>, proxy: any) => {\n updateOwnerBindings(instance, snapshot, proxy, computed)\n }\n if (instance.__wvOwnerBoundId !== ownerId) {\n if (typeof instance.__wvOwnerUnsub === 'function') {\n instance.__wvOwnerUnsub()\n }\n instance.__wvOwnerBoundId = ownerId\n instance.__wvOwnerUnsub = subscribeOwner(ownerId, updateOwner)\n }\n const snapshot = getOwnerSnapshot(ownerId)\n if (snapshot) {\n updateOwner(snapshot, getOwnerProxy(ownerId))\n }\n}\n\nfunction resolveBoundOwnerId(instance: any) {\n return instance?.properties?.[WEVU_SLOT_OWNER_ID_PROP]\n ?? instance?.properties?.[WEVU_SLOT_OWNER_ID_KEY]\n ?? ''\n}\n\nfunction syncScopedSlotBindings(instance: any, computed?: ComputedDefinitions) {\n mergeSlotProps(instance, computed)\n const ownerId = resolveBoundOwnerId(instance)\n if (!ownerId) {\n return\n }\n bindOwner(instance, ownerId, computed)\n}\n\nfunction createScopedSlotData() {\n const data = {\n [WEVU_SLOT_OWNER_KEY]: {},\n [WEVU_SLOT_PROPS_DATA_KEY]: {},\n }\n Object.defineProperty(data, WEVU_SLOT_OWNER_PROXY_KEY, {\n value: undefined,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n return data\n}\n\nexport function createScopedSlotOptions(\n overrides?: {\n computed?: ComputedDefinitions\n inlineMap?: InlineExpressionMap\n templateRefs?: TemplateRefBinding[]\n },\n) {\n const scopedSlotComputed = overrides?.computed\n const templateRefs = overrides?.templateRefs\n const resolveTemplateRefOwner = (instance: any) => {\n const ownerId = resolveBoundOwnerId(instance)\n return ownerId ? getOwnerTarget(ownerId) : undefined\n }\n const baseOptions = {\n options: {\n virtualHost: true,\n },\n setData: {\n omit: SCOPED_SLOT_SNAPSHOT_OMIT_KEYS,\n },\n [WEVU_PROPS_DERIVED_KEYS_KEY]: SCOPED_SLOT_SNAPSHOT_OMIT_KEYS,\n properties: {\n [WEVU_SLOT_OWNER_ID_PROP]: {\n type: String,\n value: '',\n observer(this: any, next: string) {\n bindOwner(this, next || '', scopedSlotComputed)\n },\n },\n [WEVU_SLOT_OWNER_ID_KEY]: {\n type: String,\n value: '',\n observer(this: any, next: string) {\n bindOwner(this, next || '', scopedSlotComputed)\n },\n },\n [WEVU_SLOT_PROPS_KEY]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n mergeSlotProps(this, scopedSlotComputed, { [WEVU_SLOT_PROPS_KEY]: next })\n },\n },\n [WEVU_SLOT_SCOPE_KEY]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n mergeSlotProps(this, scopedSlotComputed, { [WEVU_SLOT_SCOPE_KEY]: next })\n },\n },\n },\n data: createScopedSlotData,\n lifetimes: {\n attached(this: any) {\n syncScopedSlotBindings(this, scopedSlotComputed)\n },\n ready(this: any) {\n syncScopedSlotBindings(this, scopedSlotComputed)\n flushScopedSlotComputedBindings(this, scopedSlotComputed, { force: true })\n const owner = resolveTemplateRefOwner(this)\n if (owner) {\n scheduleTemplateRefUpdate(this, undefined, owner)\n }\n },\n detached(this: any) {\n const owner = resolveTemplateRefOwner(this)\n if (owner) {\n clearTemplateRefs(this, owner)\n }\n if (typeof this.__wvOwnerUnsub === 'function') {\n this.__wvOwnerUnsub()\n }\n this.__wvOwnerUnsub = undefined\n this.__wvOwnerBoundId = ''\n setOwnerProxy(this, undefined)\n },\n },\n methods: {\n [WEVU_OWNER_HANDLER](this: any, event: any) {\n const owner = this[WEVU_SLOT_OWNER_PROXY_KEY]\n const inlineMap = (this as any).__wevu?.methods?.[WEVU_INLINE_MAP_KEY]\n const result = runInlineExpression(owner, undefined, event, inlineMap)\n if (result !== undefined) {\n return result\n }\n if (!owner) {\n return undefined\n }\n const dataset = event?.currentTarget?.dataset ?? event?.target?.dataset ?? {}\n const handlerName = resolveDatasetEventValue(dataset, 'wvHandler', event)\n if (typeof handlerName !== 'string' || !handlerName) {\n return undefined\n }\n const handler = owner?.[handlerName]\n if (typeof handler !== 'function') {\n return undefined\n }\n const args = parseInlineArgs(event)\n return handler.apply(owner, args)\n },\n },\n }\n\n if (overrides?.computed && Object.keys(overrides.computed).length > 0) {\n ;(baseOptions as any).computed = overrides.computed\n }\n if (overrides?.inlineMap && Object.keys(overrides.inlineMap).length > 0) {\n ;(baseOptions as any).methods = {\n ...(baseOptions as any).methods,\n [WEVU_INLINE_MAP_KEY]: overrides.inlineMap,\n }\n }\n if (templateRefs?.length) {\n ;(baseOptions as any)[WEVU_TEMPLATE_REFS_KEY] = templateRefs\n }\n\n return baseOptions\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scopedSlotOptions.mjs","names":[],"sources":["../../../../src/runtime/define/scopedSlotOptions.ts"],"sourcesContent":["import type { InlineExpressionMap } from '../register/inline'\nimport type { TemplateRefBinding } from '../templateRefs'\nimport type { ComputedDefinitions } from '../types'\nimport {\n WEVU_INLINE_HANDLER,\n WEVU_INLINE_MAP_KEY,\n WEVU_OWNER_HANDLER,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_SLOT_FUNCTION_TOKEN,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_OWNER_KEY,\n WEVU_SLOT_OWNER_PROXY_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_SLOT_PROPS_KEY,\n WEVU_SLOT_SCOPE_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../../utils'\nimport { cloneSnapshotValue, isDeepEqualValue } from '../app/setData/snapshot'\nimport { resolveDatasetEventValue, runInlineExpression } from '../register/inline'\nimport { getOwnerProxy, getOwnerSnapshot, getOwnerTarget, subscribeOwner } from '../scopedSlots'\nimport { clearTemplateRefs, scheduleTemplateRefUpdate } from '../templateRefs'\n\nconst SCOPED_SLOT_SNAPSHOT_OMIT_KEYS = [\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_OWNER_PROXY_KEY,\n WEVU_SLOT_OWNER_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_SLOT_PROPS_KEY,\n WEVU_SLOT_SCOPE_KEY,\n]\n\nconst AMP_RE = /&/g\nconst QUOT_RE = /"/g\nconst NUM_QUOT_RE = /"/g\nconst APOS_RE = /'/g\nconst NUM_APOS_RE = /'/g\nconst LT_RE = /</g\nconst GT_RE = />/g\n\nfunction decodeWxmlEntities(value: string) {\n return value\n .replace(AMP_RE, '&')\n .replace(QUOT_RE, '\"')\n .replace(NUM_QUOT_RE, '\"')\n .replace(APOS_RE, '\\'')\n .replace(NUM_APOS_RE, '\\'')\n .replace(LT_RE, '<')\n .replace(GT_RE, '>')\n}\n\nfunction parseInlineArgs(event: any) {\n const dataset = event?.currentTarget?.dataset ?? event?.target?.dataset ?? {}\n const argsRaw = resolveDatasetEventValue(dataset, 'wvArgs', event)\n let args: any[] = []\n if (Array.isArray(argsRaw)) {\n args = argsRaw\n }\n else if (typeof argsRaw === 'string') {\n try {\n args = JSON.parse(argsRaw)\n }\n catch {\n try {\n args = JSON.parse(decodeWxmlEntities(argsRaw))\n }\n catch {\n args = []\n }\n }\n }\n if (!Array.isArray(args)) {\n args = []\n }\n return args.map((item: any) => item === '$event' ? event : item)\n}\n\nfunction normalizeSlotBindings(value: unknown): Record<string, any> {\n if (!value || typeof value !== 'object') {\n return {}\n }\n if (Array.isArray(value)) {\n const result: Record<string, any> = {}\n for (let i = 0; i < value.length; i += 2) {\n const key = value[i]\n if (typeof key === 'string' && key) {\n result[key] = value[i + 1]\n }\n }\n return result\n }\n return value as Record<string, any>\n}\n\nfunction isSlotFunctionDescriptor(value: unknown): value is [string, string, unknown[], unknown[]] {\n return Array.isArray(value)\n && value[0] === WEVU_SLOT_FUNCTION_TOKEN\n && typeof value[1] === 'string'\n}\n\nfunction createSlotFunctionProxy(instance: any, descriptor: [string, string, unknown[], unknown[]]) {\n return (...args: unknown[]) => {\n const owner = instance?.selectOwnerComponent?.()\n const handler = owner?.[WEVU_INLINE_HANDLER]\n if (typeof handler !== 'function') {\n return undefined\n }\n const dataset: Record<string, unknown> = {\n wd: 1,\n wi: descriptor[1],\n }\n const scopeBindings = Array.isArray(descriptor[2]) ? descriptor[2] : []\n const indexBindings = Array.isArray(descriptor[3]) ? descriptor[3] : []\n scopeBindings.forEach((value, index) => dataset[`wvS${index}`] = value)\n indexBindings.forEach((value, index) => dataset[`wvI${index}`] = value)\n const event = {\n type: 'wv-slot-function',\n detail: args,\n currentTarget: { dataset },\n target: { dataset },\n }\n return handler.call(owner, event)\n }\n}\n\nfunction resolveRuntimeSlotBindings(instance: any, bindings: Record<string, any>) {\n return Object.fromEntries(Object.entries(bindings).map(([key, value]) => [\n key,\n isSlotFunctionDescriptor(value) ? createSlotFunctionProxy(instance, value) : value,\n ]))\n}\n\nfunction resolveComputedContext(instance: any) {\n return instance?.__wevu?.proxy\n ?? instance?.[WEVU_PUBLIC_RUNTIME_KEY]?.proxy\n ?? instance\n}\n\nfunction collectComputedPayload(instance: any, computed?: ComputedDefinitions) {\n if (!computed || Object.keys(computed).length === 0) {\n return undefined\n }\n\n const context = resolveComputedContext(instance)\n const payload: Record<string, any> = {}\n for (const [key, definition] of Object.entries(computed)) {\n try {\n let value: any\n if (typeof definition === 'function') {\n value = definition.call(context)\n }\n else if (typeof (definition as any)?.get === 'function') {\n value = (definition as any).get.call(context)\n }\n if (value !== undefined) {\n payload[key] = value\n }\n }\n catch {\n }\n }\n return payload\n}\n\nfunction flushOwnerProxyBindings(instance: any) {\n instance?.__wevu?.__wevu_flushSetupSnapshotSync?.()\n}\n\nfunction flushScopedSlotComputedBindings(\n instance: any,\n computed?: ComputedDefinitions,\n options?: { force?: boolean },\n) {\n flushOwnerProxyBindings(instance)\n const payload = collectComputedPayload(instance, computed)\n if (!payload || typeof instance?.setData !== 'function') {\n return\n }\n const hasPrevious = hasOwn(instance, '__wvScopedSlotComputedSnapshot')\n const previous = instance.__wvScopedSlotComputedSnapshot ?? {}\n const next: Record<string, any> = {}\n const changed: Record<string, any> = {}\n for (const [key, value] of Object.entries(payload)) {\n next[key] = cloneSnapshotValue(value)\n if (options?.force || !hasPrevious || !hasOwn(previous, key) || !isDeepEqualValue(previous[key], value, 20, { keys: 10_000 })) {\n changed[key] = value\n }\n }\n for (const key of Object.keys(previous)) {\n if (!hasOwn(payload, key)) {\n changed[key] = null\n }\n }\n instance.__wvScopedSlotComputedSnapshot = next\n if (Object.keys(changed).length > 0) {\n instance.setData(changed)\n }\n}\n\nfunction syncSlotPropsData(\n instance: any,\n override?: { [WEVU_SLOT_SCOPE_KEY]?: unknown, [WEVU_SLOT_PROPS_KEY]?: unknown },\n) {\n const scopeSource = hasOwn(override ?? {}, WEVU_SLOT_SCOPE_KEY)\n ? (override as any)[WEVU_SLOT_SCOPE_KEY]\n : instance?.properties?.[WEVU_SLOT_SCOPE_KEY]\n const propsSource = hasOwn(override ?? {}, WEVU_SLOT_PROPS_KEY)\n ? (override as any)[WEVU_SLOT_PROPS_KEY]\n : instance?.properties?.[WEVU_SLOT_PROPS_KEY]\n const scope = normalizeSlotBindings(scopeSource)\n const slotProps = normalizeSlotBindings(propsSource)\n const snapshot = { ...scope, ...slotProps }\n const snapshotChanged = !hasOwn(instance, '__wvSlotPropsSnapshot')\n || !isDeepEqualValue(\n instance.__wvSlotPropsSnapshot ?? {},\n snapshot,\n 20,\n { keys: 10_000 },\n )\n const merged = snapshotChanged || !instance[WEVU_SLOT_PROPS_DATA_KEY]\n ? resolveRuntimeSlotBindings(instance, snapshot)\n : instance[WEVU_SLOT_PROPS_DATA_KEY]\n if (snapshotChanged) {\n instance.__wvSlotPropsSnapshot = cloneSnapshotValue(snapshot)\n }\n instance[WEVU_SLOT_PROPS_DATA_KEY] = merged\n const runtimeState = instance?.__wevu?.state\n const runtimeSnapshotChanged = Boolean(\n runtimeState\n && typeof runtimeState === 'object'\n && (\n !hasOwn(runtimeState, WEVU_SLOT_PROPS_DATA_KEY)\n || !isDeepEqualValue(\n runtimeState[WEVU_SLOT_PROPS_DATA_KEY] ?? {},\n snapshot,\n 20,\n { keys: 10_000 },\n )\n ),\n )\n if (runtimeState && typeof runtimeState === 'object') {\n runtimeState[WEVU_SLOT_PROPS_DATA_KEY] = merged\n }\n return { merged, runtimeSnapshotChanged, snapshot, snapshotChanged }\n}\n\nfunction mergeSlotProps(\n instance: any,\n computed?: ComputedDefinitions,\n override?: { [WEVU_SLOT_SCOPE_KEY]?: unknown, [WEVU_SLOT_PROPS_KEY]?: unknown },\n) {\n const { runtimeSnapshotChanged, snapshot, snapshotChanged } = syncSlotPropsData(instance, override)\n if ((snapshotChanged || runtimeSnapshotChanged) && typeof instance?.setData === 'function') {\n instance.setData({ [WEVU_SLOT_PROPS_DATA_KEY]: snapshot })\n }\n if (snapshotChanged) {\n flushScopedSlotComputedBindings(instance, computed)\n }\n}\n\nfunction setOwnerProxy(instance: any, proxy: any) {\n let changed = false\n if (instance[WEVU_SLOT_OWNER_PROXY_KEY] !== proxy) {\n instance[WEVU_SLOT_OWNER_PROXY_KEY] = proxy\n changed = true\n }\n const data = instance?.data\n if (data && typeof data === 'object' && data[WEVU_SLOT_OWNER_PROXY_KEY] !== proxy) {\n try {\n Object.defineProperty(data, WEVU_SLOT_OWNER_PROXY_KEY, {\n value: proxy,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n data[WEVU_SLOT_OWNER_PROXY_KEY] = proxy\n }\n changed = true\n }\n const runtimeState = instance?.__wevu?.state\n if (\n runtimeState\n && typeof runtimeState === 'object'\n && runtimeState[WEVU_SLOT_OWNER_PROXY_KEY] !== proxy\n ) {\n runtimeState[WEVU_SLOT_OWNER_PROXY_KEY] = proxy\n changed = true\n }\n return changed\n}\n\nfunction isSnapshotObject(value: unknown): value is Record<string, any> {\n if (!value || typeof value !== 'object') {\n return false\n }\n const prototype = Object.getPrototypeOf(value)\n return prototype === Object.prototype || prototype === null\n}\n\nfunction splitOwnerSnapshotFunctions(\n value: any,\n path: string,\n functionPayload: Record<string, any>,\n visiting: WeakSet<object>,\n): any {\n if (typeof value === 'function') {\n functionPayload[path] = value\n return undefined\n }\n if (value == null || typeof value !== 'object') {\n return value\n }\n if (visiting.has(value)) {\n return undefined\n }\n if (Array.isArray(value)) {\n visiting.add(value)\n const output = value.map((item, index) => {\n const next = splitOwnerSnapshotFunctions(item, `${path}.${index}`, functionPayload, visiting)\n return next === undefined ? null : next\n })\n visiting.delete(value)\n return output\n }\n if (!isSnapshotObject(value)) {\n return cloneSnapshotValue(value)\n }\n visiting.add(value)\n const output: Record<string, any> = {}\n for (const [key, child] of Object.entries(value)) {\n const next = splitOwnerSnapshotFunctions(child, `${path}.${key}`, functionPayload, visiting)\n if (next !== undefined) {\n output[key] = next\n }\n }\n visiting.delete(value)\n return output\n}\n\nfunction createOwnerSetDataPayload(snapshot: Record<string, any>) {\n const functionPayload: Record<string, any> = {}\n const ownerSnapshot = splitOwnerSnapshotFunctions(\n snapshot,\n WEVU_SLOT_OWNER_KEY,\n functionPayload,\n new WeakSet(),\n )\n return {\n [WEVU_SLOT_OWNER_KEY]: ownerSnapshot,\n ...functionPayload,\n }\n}\n\nfunction updateOwnerBindings(instance: any, snapshot: Record<string, any>, proxy: any, computed?: ComputedDefinitions) {\n const proxyChanged = setOwnerProxy(instance, proxy)\n const { snapshotChanged: slotPropsChanged } = syncSlotPropsData(instance)\n const nextOwnerSnapshot = snapshot || {}\n const ownerChanged = !hasOwn(instance, '__wvOwnerSnapshot')\n || !isDeepEqualValue(\n instance.__wvOwnerSnapshot ?? {},\n nextOwnerSnapshot,\n 20,\n { keys: 10_000 },\n )\n if (ownerChanged) {\n instance.__wvOwnerSnapshot = cloneSnapshotValue(nextOwnerSnapshot)\n instance[WEVU_SLOT_OWNER_KEY] = nextOwnerSnapshot\n const runtimeState = instance?.__wevu?.state\n if (runtimeState && typeof runtimeState === 'object') {\n runtimeState[WEVU_SLOT_OWNER_KEY] = nextOwnerSnapshot\n }\n }\n if (ownerChanged && typeof instance?.setData === 'function') {\n instance.setData(createOwnerSetDataPayload(nextOwnerSnapshot))\n }\n if (ownerChanged || proxyChanged || slotPropsChanged) {\n flushScopedSlotComputedBindings(instance, computed)\n }\n}\n\nfunction bindOwner(instance: any, ownerId: string, computed?: ComputedDefinitions) {\n if (!ownerId) {\n if (typeof instance?.__wvOwnerUnsub === 'function') {\n instance.__wvOwnerUnsub()\n }\n instance.__wvOwnerUnsub = undefined\n instance.__wvOwnerBoundId = ''\n setOwnerProxy(instance, undefined)\n return\n }\n\n const updateOwner = (snapshot: Record<string, any>, proxy: any) => {\n updateOwnerBindings(instance, snapshot, proxy, computed)\n }\n if (instance.__wvOwnerBoundId !== ownerId) {\n if (typeof instance.__wvOwnerUnsub === 'function') {\n instance.__wvOwnerUnsub()\n }\n instance.__wvOwnerBoundId = ownerId\n instance.__wvOwnerUnsub = subscribeOwner(ownerId, updateOwner)\n }\n const snapshot = getOwnerSnapshot(ownerId)\n if (snapshot) {\n updateOwner(snapshot, getOwnerProxy(ownerId))\n }\n}\n\nfunction resolveBoundOwnerId(instance: any) {\n return instance?.properties?.[WEVU_SLOT_OWNER_ID_PROP]\n ?? instance?.properties?.[WEVU_SLOT_OWNER_ID_KEY]\n ?? ''\n}\n\nfunction syncScopedSlotBindings(instance: any, computed?: ComputedDefinitions) {\n mergeSlotProps(instance, computed)\n const ownerId = resolveBoundOwnerId(instance)\n if (!ownerId) {\n return\n }\n bindOwner(instance, ownerId, computed)\n}\n\nfunction createScopedSlotData() {\n const data = {\n [WEVU_SLOT_OWNER_KEY]: {},\n [WEVU_SLOT_PROPS_DATA_KEY]: {},\n }\n Object.defineProperty(data, WEVU_SLOT_OWNER_PROXY_KEY, {\n value: undefined,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n return data\n}\n\nexport function createScopedSlotOptions(\n overrides?: {\n computed?: ComputedDefinitions\n inlineMap?: InlineExpressionMap\n templateRefs?: TemplateRefBinding[]\n },\n) {\n const scopedSlotComputed = overrides?.computed\n const templateRefs = overrides?.templateRefs\n const resolveTemplateRefOwner = (instance: any) => {\n const ownerId = resolveBoundOwnerId(instance)\n return ownerId ? getOwnerTarget(ownerId) : undefined\n }\n const baseOptions = {\n options: {\n virtualHost: true,\n },\n setData: {\n omit: SCOPED_SLOT_SNAPSHOT_OMIT_KEYS,\n },\n [WEVU_PROPS_DERIVED_KEYS_KEY]: SCOPED_SLOT_SNAPSHOT_OMIT_KEYS,\n properties: {\n [WEVU_SLOT_OWNER_ID_PROP]: {\n type: String,\n value: '',\n observer(this: any, next: string) {\n bindOwner(this, next || '', scopedSlotComputed)\n },\n },\n [WEVU_SLOT_OWNER_ID_KEY]: {\n type: String,\n value: '',\n observer(this: any, next: string) {\n bindOwner(this, next || '', scopedSlotComputed)\n },\n },\n [WEVU_SLOT_PROPS_KEY]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n mergeSlotProps(this, scopedSlotComputed, { [WEVU_SLOT_PROPS_KEY]: next })\n },\n },\n [WEVU_SLOT_SCOPE_KEY]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n mergeSlotProps(this, scopedSlotComputed, { [WEVU_SLOT_SCOPE_KEY]: next })\n },\n },\n },\n data: createScopedSlotData,\n lifetimes: {\n attached(this: any) {\n syncScopedSlotBindings(this, scopedSlotComputed)\n },\n ready(this: any) {\n syncScopedSlotBindings(this, scopedSlotComputed)\n flushScopedSlotComputedBindings(this, scopedSlotComputed, { force: true })\n const owner = resolveTemplateRefOwner(this)\n if (owner) {\n scheduleTemplateRefUpdate(this, undefined, owner)\n }\n },\n detached(this: any) {\n const owner = resolveTemplateRefOwner(this)\n if (owner) {\n clearTemplateRefs(this, owner)\n }\n if (typeof this.__wvOwnerUnsub === 'function') {\n this.__wvOwnerUnsub()\n }\n this.__wvOwnerUnsub = undefined\n this.__wvOwnerBoundId = ''\n setOwnerProxy(this, undefined)\n },\n },\n methods: {\n [WEVU_OWNER_HANDLER](this: any, event: any) {\n const owner = this[WEVU_SLOT_OWNER_PROXY_KEY]\n const inlineMap = (this as any).__wevu?.methods?.[WEVU_INLINE_MAP_KEY]\n const result = runInlineExpression(owner, undefined, event, inlineMap)\n if (result !== undefined) {\n return result\n }\n if (!owner) {\n return undefined\n }\n const dataset = event?.currentTarget?.dataset ?? event?.target?.dataset ?? {}\n const handlerName = resolveDatasetEventValue(dataset, 'wvHandler', event)\n if (typeof handlerName !== 'string' || !handlerName) {\n return undefined\n }\n const handler = owner?.[handlerName]\n if (typeof handler !== 'function') {\n return undefined\n }\n const args = parseInlineArgs(event)\n return handler.apply(owner, args)\n },\n },\n }\n\n if (overrides?.computed && Object.keys(overrides.computed).length > 0) {\n ;(baseOptions as any).computed = overrides.computed\n }\n if (overrides?.inlineMap && Object.keys(overrides.inlineMap).length > 0) {\n ;(baseOptions as any).methods = {\n ...(baseOptions as any).methods,\n [WEVU_INLINE_MAP_KEY]: overrides.inlineMap,\n }\n }\n if (templateRefs?.length) {\n ;(baseOptions as any)[WEVU_TEMPLATE_REFS_KEY] = templateRefs\n }\n\n return baseOptions\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { getScopedSlotHostGlobalObject } from "./platform.mjs";
|
|
2
2
|
import { hasOwn } from "../utils.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { applyWevuComponentDefaults } from "./defaults.mjs";
|
|
4
4
|
import { allocateOwnerId } from "./scopedSlots.mjs";
|
|
5
5
|
import { runSetupFunction } from "./register/setup.mjs";
|
|
6
|
-
import {
|
|
7
|
-
import { createApp } from "./app.mjs";
|
|
6
|
+
import { createRuntimeComponentDefinition } from "./define/componentDefinition.mjs";
|
|
8
7
|
import { resolveNativeInitialData } from "./define/initialComputed.mjs";
|
|
9
8
|
import { resolveVueComponentOptions } from "./define/options.mjs";
|
|
10
9
|
import { applyOptionsApiProvide, resolveOptionsApiInjections } from "./define/optionsApi.mjs";
|
|
@@ -15,6 +14,7 @@ import { WEVU_FUNCTION_PROP_PATHS_KEY, WEVU_SCOPED_SLOT_CREATOR_KEY, WEVU_SLOT_O
|
|
|
15
14
|
|
|
16
15
|
//#region src/runtime/define.ts
|
|
17
16
|
let scopedSlotCreator;
|
|
17
|
+
const componentLifecycleDefinitions = /* @__PURE__ */ new WeakMap();
|
|
18
18
|
function ensureScopedSlotComponentGlobal() {
|
|
19
19
|
const globalObject = getScopedSlotHostGlobalObject();
|
|
20
20
|
if (!globalObject) return;
|
|
@@ -44,8 +44,20 @@ function resolveScopedSlotHostSetData(mpOptions, setData) {
|
|
|
44
44
|
strategy: "diff"
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
|
+
function materializeComponentDefinition(componentOptions, registerNative = false) {
|
|
48
|
+
const { lifecycleDefinition, runtimeApp } = createRuntimeComponentDefinition(componentOptions, registerNative);
|
|
49
|
+
const definition = {
|
|
50
|
+
__wevu_runtime: runtimeApp,
|
|
51
|
+
__wevu_options: componentOptions
|
|
52
|
+
};
|
|
53
|
+
componentLifecycleDefinitions.set(definition, lifecycleDefinition);
|
|
54
|
+
return definition;
|
|
55
|
+
}
|
|
47
56
|
function defineComponent(options) {
|
|
48
|
-
|
|
57
|
+
return createComponentDefinition(options, true);
|
|
58
|
+
}
|
|
59
|
+
function createComponentDefinition(options, registerNative) {
|
|
60
|
+
if (registerNative) ensureScopedSlotComponentGlobal();
|
|
49
61
|
const { __typeProps: _typeProps, data, computed, methods, setData, watch, setup, props, inject: injectOptions, provide: provideOptions, allowFunctionProps, ...mpOptions } = resolveVueComponentOptions(applyWevuComponentDefaults(options));
|
|
50
62
|
const rawFunctionPropPaths = mpOptions[WEVU_FUNCTION_PROP_PATHS_KEY];
|
|
51
63
|
const functionPropPaths = Array.isArray(rawFunctionPropPaths) ? [...new Set(rawFunctionPropPaths.filter((path) => typeof path === "string" && path.length > 0))] : [];
|
|
@@ -62,13 +74,6 @@ function defineComponent(options) {
|
|
|
62
74
|
const normalizedMpOptions = normalizeProps(mpOptions, props);
|
|
63
75
|
const initialDataContext = resolveInitialDataContext(normalizedMpOptions.properties, methods);
|
|
64
76
|
const resolvedData = typeof data === "function" ? () => data.call(initialDataContext) : data;
|
|
65
|
-
const runtimeApp = createApp({
|
|
66
|
-
data: resolvedData,
|
|
67
|
-
computed,
|
|
68
|
-
methods,
|
|
69
|
-
setData: resolvedSetData,
|
|
70
|
-
[INTERNAL_DEFAULTS_SCOPE_KEY]: "component"
|
|
71
|
-
});
|
|
72
77
|
const setupWrapper = typeof setup === "function" || injectOptions != null || provideOptions != null ? ((props, ctx) => {
|
|
73
78
|
var _ref, _proxy;
|
|
74
79
|
const publicInstance = (_ref = (_proxy = ctx === null || ctx === void 0 ? void 0 : ctx.proxy) !== null && _proxy !== void 0 ? _proxy : ctx === null || ctx === void 0 ? void 0 : ctx.instance) !== null && _ref !== void 0 ? _ref : Object.create(null);
|
|
@@ -91,24 +96,47 @@ function defineComponent(options) {
|
|
|
91
96
|
[WEVU_SLOT_OWNER_ID_KEY]: shouldSeedNativeSlotOwnerId(mpOptions, resolvedSetData) ? (nativeData === null || nativeData === void 0 ? void 0 : nativeData[WEVU_SLOT_OWNER_ID_KEY]) || allocateOwnerId() : (nativeData === null || nativeData === void 0 ? void 0 : nativeData[WEVU_SLOT_OWNER_ID_KEY]) || ""
|
|
92
97
|
} : nativeData;
|
|
93
98
|
const nativeInitialData = resolveNativeInitialData(seededNativeData, computed, resolvedSetData, methods);
|
|
94
|
-
|
|
95
|
-
...normalizedMpOptions,
|
|
96
|
-
data: nativeInitialData
|
|
97
|
-
} : normalizedMpOptions;
|
|
98
|
-
const componentOptions = {
|
|
99
|
+
return materializeComponentDefinition({
|
|
99
100
|
data: resolvedData,
|
|
100
101
|
computed,
|
|
101
102
|
methods,
|
|
102
103
|
setData: resolvedSetData,
|
|
103
104
|
watch,
|
|
104
105
|
setup: setupWrapper,
|
|
105
|
-
mpOptions:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
106
|
+
mpOptions: nativeInitialData !== void 0 ? {
|
|
107
|
+
...normalizedMpOptions,
|
|
108
|
+
data: nativeInitialData
|
|
109
|
+
} : normalizedMpOptions
|
|
110
|
+
}, registerNative);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* 创建不触发宿主全局注册的 Wevu 组件定义。
|
|
114
|
+
*
|
|
115
|
+
* @param options 组件选项
|
|
116
|
+
* @internal
|
|
117
|
+
*/
|
|
118
|
+
function createWevuComponentDefinition(options) {
|
|
119
|
+
return createComponentDefinition(options, false);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 从现有组件定义派生拥有独立应用上下文的组件定义。
|
|
123
|
+
*
|
|
124
|
+
* @param definition 已解析的 Wevu 组件定义
|
|
125
|
+
* @internal
|
|
126
|
+
*/
|
|
127
|
+
function createIsolatedWevuComponentDefinition(definition) {
|
|
128
|
+
const componentOptions = definition.__wevu_options;
|
|
129
|
+
if (!componentOptions) throw new TypeError("无法从非 Wevu 组件定义创建独立运行时");
|
|
130
|
+
return materializeComponentDefinition(componentOptions);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* 获取组件定义对应的宿主生命周期定义。
|
|
134
|
+
*
|
|
135
|
+
* @param definition Wevu 组件定义
|
|
136
|
+
* @internal
|
|
137
|
+
*/
|
|
138
|
+
function getWevuComponentLifecycleDefinition(definition) {
|
|
139
|
+
return componentLifecycleDefinitions.get(definition);
|
|
112
140
|
}
|
|
113
141
|
/**
|
|
114
142
|
* 从 Vue SFC 选项创建 wevu 组件,供 weapp-vite 编译产物直接调用的兼容入口。
|
|
@@ -138,5 +166,5 @@ scopedSlotCreator = createWevuScopedSlotComponent;
|
|
|
138
166
|
ensureScopedSlotComponentGlobal();
|
|
139
167
|
|
|
140
168
|
//#endregion
|
|
141
|
-
export { createWevuComponent, createWevuScopedSlotComponent, defineComponent };
|
|
169
|
+
export { createIsolatedWevuComponentDefinition, createWevuComponent, createWevuComponentDefinition, createWevuScopedSlotComponent, defineComponent, getWevuComponentLifecycleDefinition };
|
|
142
170
|
//# sourceMappingURL=define.mjs.map
|