wevu 6.20.4 → 6.20.5

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.
Files changed (39) hide show
  1. package/dist/dev/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/defineProperty.mjs +1 -1
  2. package/dist/dev/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/toPrimitive.mjs +1 -1
  3. package/dist/dev/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/toPropertyKey.mjs +1 -1
  4. package/dist/dev/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/typeof.mjs +1 -1
  5. package/dist/dev/internal-runtime.mjs +3 -3
  6. package/dist/dev/package.mjs +1 -1
  7. package/dist/dev/reactivity/core.mjs +1 -1
  8. package/dist/dev/reactivity/ref.mjs +1 -1
  9. package/dist/dev/runtime/app/context.mjs +4 -0
  10. package/dist/dev/runtime/app/context.mjs.map +1 -1
  11. package/dist/dev/runtime/define/scopedSlotOptions.mjs +40 -1
  12. package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
  13. package/dist/dev/runtime/define.mjs +28 -4
  14. package/dist/dev/runtime/define.mjs.map +1 -1
  15. package/dist/dev/runtime/register/component/registerDefinition.mjs +6 -2
  16. package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
  17. package/dist/dev/runtime/register/component.mjs +4 -3
  18. package/dist/dev/runtime/register/component.mjs.map +1 -1
  19. package/dist/index.d.mts +1 -1
  20. package/dist/internal-runtime.d.mts +3 -3
  21. package/dist/internal-runtime.mjs +1 -1
  22. package/dist/package.mjs +1 -1
  23. package/dist/reactivity/core.mjs +1 -1
  24. package/dist/reactivity/ref.mjs +1 -1
  25. package/dist/runtime/app/context.mjs +1 -1
  26. package/dist/runtime/defaults.d.mts +2 -1
  27. package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
  28. package/dist/runtime/define.d.mts +15 -1
  29. package/dist/runtime/define.mjs +1 -1
  30. package/dist/runtime/index.d.mts +1 -1
  31. package/dist/runtime/register/component/registerDefinition.mjs +1 -1
  32. package/dist/runtime/register/component.d.mts +3 -1
  33. package/dist/runtime/register/component.mjs +1 -1
  34. package/dist/vue-demi.d.mts +1 -1
  35. package/package.json +3 -3
  36. /package/dist/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/defineProperty.mjs +0 -0
  37. /package/dist/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/toPrimitive.mjs +0 -0
  38. /package/dist/_virtual/{_@oxc-project_runtime@0.144.0 → _@oxc-project_runtime@0.146.0}/helpers/esm/toPropertyKey.mjs +0 -0
  39. /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.144.0/helpers/esm/defineProperty.js
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.144.0/helpers/esm/toPrimitive.js
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.144.0/helpers/esm/toPropertyKey.js
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.144.0/helpers/esm/typeof.js
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 { 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, 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 };
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "6.20.4";
2
+ var version = "6.20.5";
3
3
 
4
4
  //#endregion
5
5
  export { version };
@@ -1,5 +1,5 @@
1
1
  import { queueJob } from "../scheduler.mjs";
2
- import _defineProperty from "../_virtual/_@oxc-project_runtime@0.144.0/helpers/esm/defineProperty.mjs";
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.144.0/helpers/esm/defineProperty.mjs";
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":"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"}
@@ -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({ [WEVU_SLOT_OWNER_KEY]: nextOwnerSnapshot });
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 = /&amp;/g\nconst QUOT_RE = /&quot;/g\nconst NUM_QUOT_RE = /&#34;/g\nconst APOS_RE = /&apos;/g\nconst NUM_APOS_RE = /&#39;/g\nconst LT_RE = /&lt;/g\nconst GT_RE = /&gt;/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 = /&amp;/g\nconst QUOT_RE = /&quot;/g\nconst NUM_QUOT_RE = /&#34;/g\nconst APOS_RE = /&apos;/g\nconst NUM_APOS_RE = /&#39;/g\nconst LT_RE = /&lt;/g\nconst GT_RE = /&gt;/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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"}
@@ -15,6 +15,7 @@ import { WEVU_FUNCTION_PROP_PATHS_KEY, WEVU_SCOPED_SLOT_CREATOR_KEY, WEVU_SLOT_O
15
15
 
16
16
  //#region src/runtime/define.ts
17
17
  let scopedSlotCreator;
18
+ const componentLifecycleDefinitions = /* @__PURE__ */ new WeakMap();
18
19
  function ensureScopedSlotComponentGlobal() {
19
20
  const globalObject = getScopedSlotHostGlobalObject();
20
21
  if (!globalObject) return;
@@ -45,7 +46,10 @@ function resolveScopedSlotHostSetData(mpOptions, setData) {
45
46
  };
46
47
  }
47
48
  function defineComponent(options) {
48
- ensureScopedSlotComponentGlobal();
49
+ return createComponentDefinition(options, true);
50
+ }
51
+ function createComponentDefinition(options, registerNative) {
52
+ if (registerNative) ensureScopedSlotComponentGlobal();
49
53
  const { __typeProps: _typeProps, data, computed, methods, setData, watch, setup, props, inject: injectOptions, provide: provideOptions, allowFunctionProps, ...mpOptions } = resolveVueComponentOptions(applyWevuComponentDefaults(options));
50
54
  const rawFunctionPropPaths = mpOptions[WEVU_FUNCTION_PROP_PATHS_KEY];
51
55
  const functionPropPaths = Array.isArray(rawFunctionPropPaths) ? [...new Set(rawFunctionPropPaths.filter((path) => typeof path === "string" && path.length > 0))] : [];
@@ -104,11 +108,31 @@ function defineComponent(options) {
104
108
  setup: setupWrapper,
105
109
  mpOptions: mpOptionsWithProps
106
110
  };
107
- registerComponent(runtimeApp, methods !== null && methods !== void 0 ? methods : {}, watch, setupWrapper, mpOptionsWithProps);
108
- return {
111
+ const lifecycleDefinition = registerComponent(runtimeApp, methods !== null && methods !== void 0 ? methods : {}, watch, setupWrapper, mpOptionsWithProps, { registerNative });
112
+ const definition = {
109
113
  __wevu_runtime: runtimeApp,
110
114
  __wevu_options: componentOptions
111
115
  };
116
+ componentLifecycleDefinitions.set(definition, lifecycleDefinition);
117
+ return definition;
118
+ }
119
+ /**
120
+ * 创建不触发宿主全局注册的 Wevu 组件定义。
121
+ *
122
+ * @param options 组件选项
123
+ * @internal
124
+ */
125
+ function createWevuComponentDefinition(options) {
126
+ return createComponentDefinition(options, false);
127
+ }
128
+ /**
129
+ * 获取组件定义对应的宿主生命周期定义。
130
+ *
131
+ * @param definition Wevu 组件定义
132
+ * @internal
133
+ */
134
+ function getWevuComponentLifecycleDefinition(definition) {
135
+ return componentLifecycleDefinitions.get(definition);
112
136
  }
113
137
  /**
114
138
  * 从 Vue SFC 选项创建 wevu 组件,供 weapp-vite 编译产物直接调用的兼容入口。
@@ -138,5 +162,5 @@ scopedSlotCreator = createWevuScopedSlotComponent;
138
162
  ensureScopedSlotComponentGlobal();
139
163
 
140
164
  //#endregion
141
- export { createWevuComponent, createWevuScopedSlotComponent, defineComponent };
165
+ export { createWevuComponent, createWevuComponentDefinition, createWevuScopedSlotComponent, defineComponent, getWevuComponentLifecycleDefinition };
142
166
  //# sourceMappingURL=define.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"define.mjs","names":[],"sources":["../../../src/runtime/define.ts"],"sourcesContent":["import type { InlineExpressionMap } from './register/inline'\nimport type { TemplateRefBinding } from './templateRefs'\nimport type {\n ComponentPropsOptions,\n ComponentPublicInstance,\n ComputedDefinitions,\n DefineComponent,\n DefineComponentOptions,\n InferProps,\n MethodDefinitions,\n MiniProgramComponentPropertyOption,\n MiniProgramComponentRawOptions,\n ShallowUnwrapRef,\n} from './types'\nimport {\n WEVU_FUNCTION_PROP_PATHS_KEY,\n WEVU_SCOPED_SLOT_CREATOR_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../utils'\nimport { createApp } from './app'\nimport { applyWevuComponentDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { resolveNativeInitialData } from './define/initialComputed'\nimport { resolveVueComponentOptions } from './define/options'\nimport { applyOptionsApiProvide, resolveOptionsApiInjections } from './define/optionsApi'\nimport { normalizeProps } from './define/props'\nimport { createScopedSlotOptions } from './define/scopedSlotOptions'\nimport { applySetupResult } from './define/setupResult'\nimport { getScopedSlotHostGlobalObject } from './platform'\nimport { registerComponent, runSetupFunction } from './register'\nimport { allocateOwnerId } from './scopedSlots'\n\nlet scopedSlotCreator: (() => void) | undefined\n\nfunction ensureScopedSlotComponentGlobal() {\n const globalObject = getScopedSlotHostGlobalObject()\n if (!globalObject) {\n return\n }\n const globalRecord = globalObject as Record<string, any>\n if (scopedSlotCreator && globalRecord[WEVU_SCOPED_SLOT_CREATOR_KEY] !== scopedSlotCreator) {\n globalRecord[WEVU_SCOPED_SLOT_CREATOR_KEY] = scopedSlotCreator\n }\n}\n\nfunction resolveInitialDataContext(properties: unknown, methods: MethodDefinitions | undefined) {\n const context: Record<string, unknown> = { ...(methods ?? {}) }\n if (!properties || typeof properties !== 'object') {\n return context\n }\n for (const [name, definition] of Object.entries(properties)) {\n if (definition && typeof definition === 'object' && hasOwn(definition, 'value')) {\n context[name] = (definition as Record<string, unknown>).value\n }\n }\n return context\n}\n\nfunction shouldSeedNativeSlotOwnerId(\n mpOptions: Record<string, any>,\n setData: DefineComponentOptions<any, any, any, any, any>['setData'],\n) {\n return Boolean((mpOptions as any).__wevu_isPage)\n && Array.isArray(setData?.pick)\n && setData.pick.includes(WEVU_SLOT_OWNER_ID_KEY)\n}\n\nfunction shouldDeclareNativeSlotOwnerId(\n setData: DefineComponentOptions<any, any, any, any, any>['setData'],\n) {\n return Array.isArray(setData?.pick)\n && setData.pick.includes(WEVU_SLOT_OWNER_ID_KEY)\n}\n\nfunction hasScopedSlotHostProperties(mpOptions: Record<string, any>) {\n const properties = mpOptions.properties\n return Boolean(\n properties\n && typeof properties === 'object'\n && (\n WEVU_SLOT_OWNER_ID_PROP in properties\n || WEVU_SLOT_SCOPE_KEY in properties\n ),\n )\n}\n\nfunction resolveScopedSlotHostSetData(\n mpOptions: Record<string, any>,\n setData: DefineComponentOptions<any, any, any, any, any>['setData'],\n) {\n if (setData?.strategy !== 'patch' || !hasScopedSlotHostProperties(mpOptions)) {\n return setData\n }\n return {\n ...setData,\n strategy: 'diff' as const,\n }\n}\n\n/**\n * defineComponent 返回的组件定义描述,用于手动注册或高级用法。\n */\nexport interface ComponentDefinition<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> {\n /**\n * 内部 runtime app(高级能力使用),不对外暴露正式 API。\n * @internal\n */\n __wevu_runtime: import('./types').RuntimeApp<D, C, M>\n\n /**\n * 内部选项快照(高级能力使用),包含 data/computed/methods 等。\n * @internal\n */\n __wevu_options: {\n data: () => D\n computed: C\n methods: M\n setData: import('./types').SetDataSnapshotOptions | undefined\n watch: Record<string, any> | undefined\n setup: ((props: any, ctx: any) => any) | undefined\n mpOptions: MiniProgramComponentRawOptions\n }\n}\n\ntype SetupBindings<S> = Exclude<S, void> extends never ? Record<string, never> : Exclude<S, void>\ntype ResolveProps<P> = P extends ComponentPropsOptions ? InferProps<P> : P\n\nexport interface WevuComponentConstructor<\n Props,\n RawBindings,\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> {\n new (): ComponentPublicInstance<D, C, M, Props> & ShallowUnwrapRef<RawBindings>\n}\n\nexport type WevuDefinedComponent<\n PropsOrPropOptions,\n RawBindings,\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = DefineComponent<PropsOrPropOptions, RawBindings, D, C, M> & ComponentDefinition<D, C, M>\nexport interface SetupContextWithTypeProps<TypeProps> {\n props: TypeProps\n [key: string]: any\n}\nexport type SetupFunctionWithTypeProps<\n TypeProps,\n> = (\n props: TypeProps,\n ctx: SetupContextWithTypeProps<TypeProps>,\n) => Record<string, any> | void\nexport interface DefineComponentTypePropsOptions<TypeProps> {\n __typeProps: TypeProps\n setup?: SetupFunctionWithTypeProps<TypeProps>\n [key: string]: any\n}\nexport interface DefineComponentWithTypeProps<TypeProps> {\n new (): { $props: TypeProps } & Record<string, any>\n}\n\n/**\n * 按 Vue 3 风格定义一个小程序组件/页面。\n *\n * - 统一注册为 `Component()`\n *\n * @param options 组件定义项\n * @returns 可手动注册的组件定义\n *\n * @example\n * ```ts\n * defineComponent({\n * data: () => ({ count: 0 }),\n * setup() {\n * onMounted(() => console.log('已挂载'))\n * }\n * })\n * ```\n *\n * @example\n * ```ts\n * defineComponent({\n * setup() {\n * onPageScroll(() => {})\n * }\n * })\n * ```\n */\n// @ts-expect-error -- TS2589:__typeProps 签名的重载实例化深度过高。\nexport function defineComponent<\n TypeProps = any,\n>(\n options: DefineComponentTypePropsOptions<TypeProps>,\n): DefineComponentWithTypeProps<TypeProps>\nexport function defineComponent<\n P extends ComponentPropsOptions = ComponentPropsOptions,\n D extends object = Record<string, any>,\n C extends ComputedDefinitions = ComputedDefinitions,\n M extends MethodDefinitions = MethodDefinitions,\n S extends Record<string, any> | void = Record<string, any> | void,\n>(\n options: DefineComponentOptions<P, D, C, M, S>,\n): WevuComponentConstructor<ResolveProps<P>, SetupBindings<S>, D, C, M> & ComponentDefinition<D, C, M>\nexport function defineComponent(\n options: DefineComponentOptions<any, any, any, any, any>,\n): WevuComponentConstructor<Record<string, any>, Record<string, any>, Record<string, any>, ComputedDefinitions, MethodDefinitions>\n & ComponentDefinition<any, any, any> {\n ensureScopedSlotComponentGlobal()\n const resolvedOptions = resolveVueComponentOptions(applyWevuComponentDefaults(options))\n const {\n __typeProps: _typeProps,\n data,\n computed,\n methods,\n setData,\n watch,\n setup,\n props,\n inject: injectOptions,\n provide: provideOptions,\n allowFunctionProps,\n ...mpOptions\n } = resolvedOptions\n\n const rawFunctionPropPaths = (mpOptions as any)[WEVU_FUNCTION_PROP_PATHS_KEY]\n const functionPropPaths: string[] = Array.isArray(rawFunctionPropPaths)\n ? [...new Set(rawFunctionPropPaths.filter((path: unknown): path is string => typeof path === 'string' && path.length > 0))]\n : []\n delete (mpOptions as any)[WEVU_FUNCTION_PROP_PATHS_KEY]\n\n const rawResolvedSetData = allowFunctionProps === true\n ? {\n ...(setData ?? {}),\n includeFunctions: true,\n functionPaths: functionPropPaths,\n }\n : allowFunctionProps === false\n ? setData\n : functionPropPaths.length\n ? {\n ...(setData ?? {}),\n functionPaths: functionPropPaths,\n }\n : setData\n const resolvedSetData = resolveScopedSlotHostSetData(mpOptions, rawResolvedSetData)\n const setupFunctionPropKeys = new Set(\n functionPropPaths\n .filter(path => !path.includes('.')),\n )\n\n const normalizedMpOptions = normalizeProps(mpOptions, props)\n const initialDataContext = resolveInitialDataContext(normalizedMpOptions.properties, methods)\n const resolvedData = typeof data === 'function'\n ? () => data.call(initialDataContext)\n : data\n\n const runtimeApp = createApp({\n data: resolvedData,\n computed,\n methods,\n setData: resolvedSetData,\n [INTERNAL_DEFAULTS_SCOPE_KEY]: 'component',\n } as any)\n\n const hasOptionsApiContext = injectOptions != null || provideOptions != null\n const setupWrapper = typeof setup === 'function' || hasOptionsApiContext\n ? ((props, ctx) => {\n const publicInstance = (ctx as any)?.proxy ?? (ctx as any)?.instance ?? Object.create(null)\n const injected = resolveOptionsApiInjections(injectOptions, publicInstance)\n if (provideOptions != null) {\n applyOptionsApiProvide(provideOptions, publicInstance)\n }\n const setupResult = typeof setup === 'function'\n ? runSetupFunction(setup as any, props as Record<string, any>, ctx as any) as Record<string, any> | void\n : undefined\n const result = {\n ...injected,\n ...(setupResult ?? {}),\n }\n if (ctx && Object.keys(result).length) {\n applySetupResult((ctx as any).runtime, (ctx as any).instance, result, {\n includeFunctionsInState: allowFunctionProps === true,\n functionPropPaths: allowFunctionProps === false ? undefined : setupFunctionPropKeys,\n })\n }\n return result\n }) satisfies DefineComponentOptions<ComponentPropsOptions, any, any, any, any>['setup']\n : undefined\n\n const nativeData = typeof resolvedData === 'function'\n ? resolvedData()\n : resolvedData\n const shouldDeclareOwnerId = shouldDeclareNativeSlotOwnerId(resolvedSetData)\n const seededNativeData = shouldDeclareOwnerId\n ? {\n ...(nativeData && typeof nativeData === 'object' ? nativeData : {}),\n [WEVU_SLOT_OWNER_ID_KEY]: shouldSeedNativeSlotOwnerId(mpOptions, resolvedSetData)\n ? (nativeData as any)?.[WEVU_SLOT_OWNER_ID_KEY] || allocateOwnerId()\n : (nativeData as any)?.[WEVU_SLOT_OWNER_ID_KEY] || '',\n }\n : nativeData\n const nativeInitialData = resolveNativeInitialData(seededNativeData, computed as ComputedDefinitions, resolvedSetData, methods as Record<string, any> | undefined)\n const mpOptionsWithProps = nativeInitialData !== undefined\n ? {\n ...normalizedMpOptions,\n data: nativeInitialData,\n }\n : normalizedMpOptions\n\n const componentOptions = {\n data: resolvedData as () => Record<string, any>,\n computed: computed as ComputedDefinitions,\n methods: methods as MethodDefinitions,\n setData: resolvedSetData,\n watch,\n setup: setupWrapper,\n mpOptions: mpOptionsWithProps,\n }\n\n registerComponent(runtimeApp as any, methods ?? {}, watch as any, setupWrapper as any, mpOptionsWithProps as any)\n\n // 返回组件定义,便于外部自行注册\n const definition: ComponentDefinition<any, any, any> = {\n __wevu_runtime: runtimeApp as any,\n __wevu_options: componentOptions as ComponentDefinition<any, any, any>['__wevu_options'],\n }\n\n return definition as unknown as WevuComponentConstructor<\n ResolveProps<ComponentPropsOptions>,\n Record<string, any>,\n Record<string, any>,\n ComputedDefinitions,\n MethodDefinitions\n > & ComponentDefinition<any, any, any>\n}\n\n/**\n * 从 Vue SFC 选项创建 wevu 组件,供 weapp-vite 编译产物直接调用的兼容入口。\n *\n * @param options 组件选项,可能包含小程序特有的 properties\n * @internal\n */\nexport function createWevuComponent<\n P extends ComponentPropsOptions = ComponentPropsOptions,\n D extends object = Record<string, any>,\n C extends ComputedDefinitions = ComputedDefinitions,\n M extends MethodDefinitions = MethodDefinitions,\n>(\n options: DefineComponentOptions<P, D, C, M> & { properties?: MiniProgramComponentPropertyOption },\n): void {\n ensureScopedSlotComponentGlobal()\n const {\n properties,\n props,\n ...restOptions\n } = options\n\n const baseOptions = {\n ...restOptions,\n allowNullPropInput: (restOptions as any).allowNullPropInput ?? true,\n __wevu_allowNullPropInput: true,\n }\n\n // 将 properties 合并到 mpOptions,保持小程序属性定义\n const finalOptions = normalizeProps(baseOptions, props, properties)\n\n defineComponent(finalOptions)\n}\n\n/**\n * scoped slot 兼容组件入口(编译产物内部使用)。\n * @internal\n */\nexport function createWevuScopedSlotComponent(\n overrides?: {\n computed?: ComputedDefinitions\n inlineMap?: InlineExpressionMap\n templateRefs?: TemplateRefBinding[]\n },\n): void {\n const baseOptions = createScopedSlotOptions(overrides)\n createWevuComponent(baseOptions as any)\n}\n\nscopedSlotCreator = createWevuScopedSlotComponent\nensureScopedSlotComponentGlobal()\n"],"mappings":";;;;;;;;;;;;;;;;AAkCA,IAAI;AAEJ,SAAS,kCAAkC;CACzC,MAAM,eAAe,8BAA8B;CACnD,IAAI,CAAC,cACH;CAEF,MAAM,eAAe;CACrB,IAAI,qBAAqB,aAAa,kCAAkC,mBACtE,aAAa,gCAAgC;AAEjD;AAEA,SAAS,0BAA0B,YAAqB,SAAwC;CAC9F,MAAM,UAAmC,EAAE,GAAI,mDAAW,CAAC,EAAG;CAC9D,IAAI,CAAC,cAAc,OAAO,eAAe,UACvC,OAAO;CAET,KAAK,MAAM,CAAC,MAAM,eAAe,OAAO,QAAQ,UAAU,GACxD,IAAI,cAAc,OAAO,eAAe,YAAY,OAAO,YAAY,OAAO,GAC5E,QAAQ,QAAS,WAAuC;CAG5D,OAAO;AACT;AAEA,SAAS,4BACP,WACA,SACA;CACA,OAAO,QAAS,UAAkB,aAAa,KAC1C,MAAM,0DAAQ,QAAS,IAAI,KAC3B,QAAQ,KAAK,SAAS,sBAAsB;AACnD;AAEA,SAAS,+BACP,SACA;CACA,OAAO,MAAM,0DAAQ,QAAS,IAAI,KAC7B,QAAQ,KAAK,SAAS,sBAAsB;AACnD;AAEA,SAAS,4BAA4B,WAAgC;CACnE,MAAM,aAAa,UAAU;CAC7B,OAAO,QACL,cACG,OAAO,eAAe,aAEvB,2BAA2B,cACxB,uBAAuB,WAE9B;AACF;AAEA,SAAS,6BACP,WACA,SACA;CACA,uDAAI,QAAS,cAAa,WAAW,CAAC,4BAA4B,SAAS,GACzE,OAAO;CAET,OAAO;EACL,GAAG;EACH,UAAU;CACZ;AACF;AAgHA,SAAgB,gBACd,SAEqC;CACrC,gCAAgC;CAEhC,MAAM,EACJ,aAAa,YACb,MACA,UACA,SACA,SACA,OACA,OACA,OACA,QAAQ,eACR,SAAS,gBACT,oBACA,GAAG,cAbmB,2BAA2B,2BAA2B,OAAO,CAcnE;CAElB,MAAM,uBAAwB,UAAkB;CAChD,MAAM,oBAA8B,MAAM,QAAQ,oBAAoB,IAClE,CAAC,GAAG,IAAI,IAAI,qBAAqB,QAAQ,SAAkC,OAAO,SAAS,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IACxH,CAAC;CACL,OAAQ,UAAkB;CAgB1B,MAAM,kBAAkB,6BAA6B,WAd1B,uBAAuB,OAC9C;EACE,GAAI,mDAAW,CAAC;EAChB,kBAAkB;EAClB,eAAe;CACjB,IACA,uBAAuB,QACrB,UACA,kBAAkB,SAChB;EACE,GAAI,mDAAW,CAAC;EAChB,eAAe;CACjB,IACA,OAC0E;CAClF,MAAM,wBAAwB,IAAI,IAChC,kBACG,QAAO,SAAQ,CAAC,KAAK,SAAS,GAAG,CAAC,CACvC;CAEA,MAAM,sBAAsB,eAAe,WAAW,KAAK;CAC3D,MAAM,qBAAqB,0BAA0B,oBAAoB,YAAY,OAAO;CAC5F,MAAM,eAAe,OAAO,SAAS,mBAC3B,KAAK,KAAK,kBAAkB,IAClC;CAEJ,MAAM,aAAa,UAAU;EAC3B,MAAM;EACN;EACA;EACA,SAAS;GACR,8BAA8B;CACjC,CAAQ;CAGR,MAAM,eAAe,OAAO,UAAU,cADT,iBAAiB,QAAQ,kBAAkB,SAElE,OAAO,QAAQ;;EACjB,MAAM,6EAAkB,IAAa,0FAAU,IAAa,+CAAY,OAAO,OAAO,IAAI;EAC1F,MAAM,WAAW,4BAA4B,eAAe,cAAc;EAC1E,IAAI,kBAAkB,MACpB,uBAAuB,gBAAgB,cAAc;EAEvD,MAAM,cAAc,OAAO,UAAU,aACjC,iBAAiB,OAAc,OAA8B,GAAU,IACvE;EACJ,MAAM,SAAS;GACb,GAAG;GACH,GAAI,+DAAe,CAAC;EACtB;EACA,IAAI,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,QAC7B,iBAAkB,IAAY,SAAU,IAAY,UAAU,QAAQ;GACpE,yBAAyB,uBAAuB;GAChD,mBAAmB,uBAAuB,QAAQ,SAAY;EAChE,CAAC;EAEH,OAAO;CACT,KACE;CAEJ,MAAM,aAAa,OAAO,iBAAiB,aACvC,aAAa,IACb;CAEJ,MAAM,mBADuB,+BAA+B,eAChB,IACxC;EACE,GAAI,cAAc,OAAO,eAAe,WAAW,aAAa,CAAC;GAChE,yBAAyB,4BAA4B,WAAW,eAAe,6DAC3E,WAAqB,4BAA2B,gBAAgB,6DAChE,WAAqB,4BAA2B;CACvD,IACA;CACJ,MAAM,oBAAoB,yBAAyB,kBAAkB,UAAiC,iBAAiB,OAA0C;CACjK,MAAM,qBAAqB,sBAAsB,SAC7C;EACE,GAAG;EACH,MAAM;CACR,IACA;CAEJ,MAAM,mBAAmB;EACvB,MAAM;EACI;EACD;EACT,SAAS;EACT;EACA,OAAO;EACP,WAAW;CACb;CAEA,kBAAkB,YAAmB,mDAAW,CAAC,GAAG,OAAc,cAAqB,kBAAyB;CAQhH,OAAO;EAJL,gBAAgB;EAChB,gBAAgB;CAGF;AAOlB;;;;;;;AAQA,SAAgB,oBAMd,SACM;;CACN,gCAAgC;CAChC,MAAM,EACJ,YACA,OACA,GAAG,gBACD;CAEJ,MAAM,cAAc;EAClB,GAAG;EACH,2CAAqB,YAAoB,uFAAsB;EAC/D,2BAA2B;CAC7B;CAKA,gBAFqB,eAAe,aAAa,OAAO,UAE7B,CAAC;AAC9B;;;;;AAMA,SAAgB,8BACd,WAKM;CAEN,oBADoB,wBAAwB,SACd,CAAQ;AACxC;AAEA,oBAAoB;AACpB,gCAAgC"}
1
+ {"version":3,"file":"define.mjs","names":[],"sources":["../../../src/runtime/define.ts"],"sourcesContent":["import type { InlineExpressionMap } from './register/inline'\nimport type { TemplateRefBinding } from './templateRefs'\nimport type {\n ComponentPropsOptions,\n ComponentPublicInstance,\n ComputedDefinitions,\n DefineComponent,\n DefineComponentOptions,\n InferProps,\n MethodDefinitions,\n MiniProgramComponentPropertyOption,\n MiniProgramComponentRawOptions,\n ShallowUnwrapRef,\n} from './types'\nimport {\n WEVU_FUNCTION_PROP_PATHS_KEY,\n WEVU_SCOPED_SLOT_CREATOR_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../utils'\nimport { createApp } from './app'\nimport { applyWevuComponentDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { resolveNativeInitialData } from './define/initialComputed'\nimport { resolveVueComponentOptions } from './define/options'\nimport { applyOptionsApiProvide, resolveOptionsApiInjections } from './define/optionsApi'\nimport { normalizeProps } from './define/props'\nimport { createScopedSlotOptions } from './define/scopedSlotOptions'\nimport { applySetupResult } from './define/setupResult'\nimport { getScopedSlotHostGlobalObject } from './platform'\nimport { registerComponent, runSetupFunction } from './register'\nimport { allocateOwnerId } from './scopedSlots'\n\nlet scopedSlotCreator: (() => void) | undefined\nconst componentLifecycleDefinitions = new WeakMap<object, Record<string, any>>()\n\nfunction ensureScopedSlotComponentGlobal() {\n const globalObject = getScopedSlotHostGlobalObject()\n if (!globalObject) {\n return\n }\n const globalRecord = globalObject as Record<string, any>\n if (scopedSlotCreator && globalRecord[WEVU_SCOPED_SLOT_CREATOR_KEY] !== scopedSlotCreator) {\n globalRecord[WEVU_SCOPED_SLOT_CREATOR_KEY] = scopedSlotCreator\n }\n}\n\nfunction resolveInitialDataContext(properties: unknown, methods: MethodDefinitions | undefined) {\n const context: Record<string, unknown> = { ...(methods ?? {}) }\n if (!properties || typeof properties !== 'object') {\n return context\n }\n for (const [name, definition] of Object.entries(properties)) {\n if (definition && typeof definition === 'object' && hasOwn(definition, 'value')) {\n context[name] = (definition as Record<string, unknown>).value\n }\n }\n return context\n}\n\nfunction shouldSeedNativeSlotOwnerId(\n mpOptions: Record<string, any>,\n setData: DefineComponentOptions<any, any, any, any, any>['setData'],\n) {\n return Boolean((mpOptions as any).__wevu_isPage)\n && Array.isArray(setData?.pick)\n && setData.pick.includes(WEVU_SLOT_OWNER_ID_KEY)\n}\n\nfunction shouldDeclareNativeSlotOwnerId(\n setData: DefineComponentOptions<any, any, any, any, any>['setData'],\n) {\n return Array.isArray(setData?.pick)\n && setData.pick.includes(WEVU_SLOT_OWNER_ID_KEY)\n}\n\nfunction hasScopedSlotHostProperties(mpOptions: Record<string, any>) {\n const properties = mpOptions.properties\n return Boolean(\n properties\n && typeof properties === 'object'\n && (\n WEVU_SLOT_OWNER_ID_PROP in properties\n || WEVU_SLOT_SCOPE_KEY in properties\n ),\n )\n}\n\nfunction resolveScopedSlotHostSetData(\n mpOptions: Record<string, any>,\n setData: DefineComponentOptions<any, any, any, any, any>['setData'],\n) {\n if (setData?.strategy !== 'patch' || !hasScopedSlotHostProperties(mpOptions)) {\n return setData\n }\n return {\n ...setData,\n strategy: 'diff' as const,\n }\n}\n\n/**\n * defineComponent 返回的组件定义描述,用于手动注册或高级用法。\n */\nexport interface ComponentDefinition<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> {\n /**\n * 内部 runtime app(高级能力使用),不对外暴露正式 API。\n * @internal\n */\n __wevu_runtime: import('./types').RuntimeApp<D, C, M>\n\n /**\n * 内部选项快照(高级能力使用),包含 data/computed/methods 等。\n * @internal\n */\n __wevu_options: {\n data: () => D\n computed: C\n methods: M\n setData: import('./types').SetDataSnapshotOptions | undefined\n watch: Record<string, any> | undefined\n setup: ((props: any, ctx: any) => any) | undefined\n mpOptions: MiniProgramComponentRawOptions\n }\n}\n\ntype SetupBindings<S> = Exclude<S, void> extends never ? Record<string, never> : Exclude<S, void>\ntype ResolveProps<P> = P extends ComponentPropsOptions ? InferProps<P> : P\n\nexport interface WevuComponentConstructor<\n Props,\n RawBindings,\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> {\n new (): ComponentPublicInstance<D, C, M, Props> & ShallowUnwrapRef<RawBindings>\n}\n\nexport type WevuDefinedComponent<\n PropsOrPropOptions,\n RawBindings,\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = DefineComponent<PropsOrPropOptions, RawBindings, D, C, M> & ComponentDefinition<D, C, M>\nexport interface SetupContextWithTypeProps<TypeProps> {\n props: TypeProps\n [key: string]: any\n}\nexport type SetupFunctionWithTypeProps<\n TypeProps,\n> = (\n props: TypeProps,\n ctx: SetupContextWithTypeProps<TypeProps>,\n) => Record<string, any> | void\nexport interface DefineComponentTypePropsOptions<TypeProps> {\n __typeProps: TypeProps\n setup?: SetupFunctionWithTypeProps<TypeProps>\n [key: string]: any\n}\nexport interface DefineComponentWithTypeProps<TypeProps> {\n new (): { $props: TypeProps } & Record<string, any>\n}\n\n/**\n * 按 Vue 3 风格定义一个小程序组件/页面。\n *\n * - 统一注册为 `Component()`\n *\n * @param options 组件定义项\n * @returns 可手动注册的组件定义\n *\n * @example\n * ```ts\n * defineComponent({\n * data: () => ({ count: 0 }),\n * setup() {\n * onMounted(() => console.log('已挂载'))\n * }\n * })\n * ```\n *\n * @example\n * ```ts\n * defineComponent({\n * setup() {\n * onPageScroll(() => {})\n * }\n * })\n * ```\n */\n// @ts-expect-error -- TS2589:__typeProps 签名的重载实例化深度过高。\nexport function defineComponent<\n TypeProps = any,\n>(\n options: DefineComponentTypePropsOptions<TypeProps>,\n): DefineComponentWithTypeProps<TypeProps>\nexport function defineComponent<\n P extends ComponentPropsOptions = ComponentPropsOptions,\n D extends object = Record<string, any>,\n C extends ComputedDefinitions = ComputedDefinitions,\n M extends MethodDefinitions = MethodDefinitions,\n S extends Record<string, any> | void = Record<string, any> | void,\n>(\n options: DefineComponentOptions<P, D, C, M, S>,\n): WevuComponentConstructor<ResolveProps<P>, SetupBindings<S>, D, C, M> & ComponentDefinition<D, C, M>\nexport function defineComponent(\n options: DefineComponentOptions<any, any, any, any, any>,\n): WevuComponentConstructor<Record<string, any>, Record<string, any>, Record<string, any>, ComputedDefinitions, MethodDefinitions>\n & ComponentDefinition<any, any, any> {\n // eslint-disable-next-line ts/no-use-before-define -- 重载实现需保持在内部共享工厂之前。\n return createComponentDefinition(options, true) as any\n}\n\nfunction createComponentDefinition(\n options: DefineComponentOptions<any, any, any, any, any>,\n registerNative: boolean,\n) {\n if (registerNative) {\n ensureScopedSlotComponentGlobal()\n }\n const resolvedOptions = resolveVueComponentOptions(applyWevuComponentDefaults(options))\n const {\n __typeProps: _typeProps,\n data,\n computed,\n methods,\n setData,\n watch,\n setup,\n props,\n inject: injectOptions,\n provide: provideOptions,\n allowFunctionProps,\n ...mpOptions\n } = resolvedOptions\n\n const rawFunctionPropPaths = (mpOptions as any)[WEVU_FUNCTION_PROP_PATHS_KEY]\n const functionPropPaths: string[] = Array.isArray(rawFunctionPropPaths)\n ? [...new Set(rawFunctionPropPaths.filter((path: unknown): path is string => typeof path === 'string' && path.length > 0))]\n : []\n delete (mpOptions as any)[WEVU_FUNCTION_PROP_PATHS_KEY]\n\n const rawResolvedSetData = allowFunctionProps === true\n ? {\n ...(setData ?? {}),\n includeFunctions: true,\n functionPaths: functionPropPaths,\n }\n : allowFunctionProps === false\n ? setData\n : functionPropPaths.length\n ? {\n ...(setData ?? {}),\n functionPaths: functionPropPaths,\n }\n : setData\n const resolvedSetData = resolveScopedSlotHostSetData(mpOptions, rawResolvedSetData)\n const setupFunctionPropKeys = new Set(\n functionPropPaths\n .filter(path => !path.includes('.')),\n )\n\n const normalizedMpOptions = normalizeProps(mpOptions, props)\n const initialDataContext = resolveInitialDataContext(normalizedMpOptions.properties, methods)\n const resolvedData = typeof data === 'function'\n ? () => data.call(initialDataContext)\n : data\n\n const runtimeApp = createApp({\n data: resolvedData,\n computed,\n methods,\n setData: resolvedSetData,\n [INTERNAL_DEFAULTS_SCOPE_KEY]: 'component',\n } as any)\n\n const hasOptionsApiContext = injectOptions != null || provideOptions != null\n const setupWrapper = typeof setup === 'function' || hasOptionsApiContext\n ? ((props, ctx) => {\n const publicInstance = (ctx as any)?.proxy ?? (ctx as any)?.instance ?? Object.create(null)\n const injected = resolveOptionsApiInjections(injectOptions, publicInstance)\n if (provideOptions != null) {\n applyOptionsApiProvide(provideOptions, publicInstance)\n }\n const setupResult = typeof setup === 'function'\n ? runSetupFunction(setup as any, props as Record<string, any>, ctx as any) as Record<string, any> | void\n : undefined\n const result = {\n ...injected,\n ...(setupResult ?? {}),\n }\n if (ctx && Object.keys(result).length) {\n applySetupResult((ctx as any).runtime, (ctx as any).instance, result, {\n includeFunctionsInState: allowFunctionProps === true,\n functionPropPaths: allowFunctionProps === false ? undefined : setupFunctionPropKeys,\n })\n }\n return result\n }) satisfies DefineComponentOptions<ComponentPropsOptions, any, any, any, any>['setup']\n : undefined\n\n const nativeData = typeof resolvedData === 'function'\n ? resolvedData()\n : resolvedData\n const shouldDeclareOwnerId = shouldDeclareNativeSlotOwnerId(resolvedSetData)\n const seededNativeData = shouldDeclareOwnerId\n ? {\n ...(nativeData && typeof nativeData === 'object' ? nativeData : {}),\n [WEVU_SLOT_OWNER_ID_KEY]: shouldSeedNativeSlotOwnerId(mpOptions, resolvedSetData)\n ? (nativeData as any)?.[WEVU_SLOT_OWNER_ID_KEY] || allocateOwnerId()\n : (nativeData as any)?.[WEVU_SLOT_OWNER_ID_KEY] || '',\n }\n : nativeData\n const nativeInitialData = resolveNativeInitialData(seededNativeData, computed as ComputedDefinitions, resolvedSetData, methods as Record<string, any> | undefined)\n const mpOptionsWithProps = nativeInitialData !== undefined\n ? {\n ...normalizedMpOptions,\n data: nativeInitialData,\n }\n : normalizedMpOptions\n\n const componentOptions = {\n data: resolvedData as () => Record<string, any>,\n computed: computed as ComputedDefinitions,\n methods: methods as MethodDefinitions,\n setData: resolvedSetData,\n watch,\n setup: setupWrapper,\n mpOptions: mpOptionsWithProps,\n }\n\n const lifecycleDefinition = registerComponent(\n runtimeApp as any,\n methods ?? {},\n watch as any,\n setupWrapper as any,\n mpOptionsWithProps as any,\n { registerNative },\n )\n\n // 返回组件定义,便于外部自行注册\n const definition: ComponentDefinition<any, any, any> = {\n __wevu_runtime: runtimeApp as any,\n __wevu_options: componentOptions as ComponentDefinition<any, any, any>['__wevu_options'],\n }\n componentLifecycleDefinitions.set(definition, lifecycleDefinition)\n\n return definition as unknown as WevuComponentConstructor<\n ResolveProps<ComponentPropsOptions>,\n Record<string, any>,\n Record<string, any>,\n ComputedDefinitions,\n MethodDefinitions\n > & ComponentDefinition<any, any, any>\n}\n\n/**\n * 创建不触发宿主全局注册的 Wevu 组件定义。\n *\n * @param options 组件选项\n * @internal\n */\nexport function createWevuComponentDefinition(\n options: DefineComponentOptions<any, any, any, any, any>,\n) {\n return createComponentDefinition(options, false)\n}\n\n/**\n * 获取组件定义对应的宿主生命周期定义。\n *\n * @param definition Wevu 组件定义\n * @internal\n */\nexport function getWevuComponentLifecycleDefinition(definition: object) {\n return componentLifecycleDefinitions.get(definition)\n}\n\n/**\n * 从 Vue SFC 选项创建 wevu 组件,供 weapp-vite 编译产物直接调用的兼容入口。\n *\n * @param options 组件选项,可能包含小程序特有的 properties\n * @internal\n */\nexport function createWevuComponent<\n P extends ComponentPropsOptions = ComponentPropsOptions,\n D extends object = Record<string, any>,\n C extends ComputedDefinitions = ComputedDefinitions,\n M extends MethodDefinitions = MethodDefinitions,\n>(\n options: DefineComponentOptions<P, D, C, M> & { properties?: MiniProgramComponentPropertyOption },\n): void {\n ensureScopedSlotComponentGlobal()\n const {\n properties,\n props,\n ...restOptions\n } = options\n\n const baseOptions = {\n ...restOptions,\n allowNullPropInput: (restOptions as any).allowNullPropInput ?? true,\n __wevu_allowNullPropInput: true,\n }\n\n // 将 properties 合并到 mpOptions,保持小程序属性定义\n const finalOptions = normalizeProps(baseOptions, props, properties)\n\n defineComponent(finalOptions)\n}\n\n/**\n * scoped slot 兼容组件入口(编译产物内部使用)。\n * @internal\n */\nexport function createWevuScopedSlotComponent(\n overrides?: {\n computed?: ComputedDefinitions\n inlineMap?: InlineExpressionMap\n templateRefs?: TemplateRefBinding[]\n },\n): void {\n const baseOptions = createScopedSlotOptions(overrides)\n createWevuComponent(baseOptions as any)\n}\n\nscopedSlotCreator = createWevuScopedSlotComponent\nensureScopedSlotComponentGlobal()\n"],"mappings":";;;;;;;;;;;;;;;;AAkCA,IAAI;AACJ,MAAM,gDAAgC,IAAI,QAAqC;AAE/E,SAAS,kCAAkC;CACzC,MAAM,eAAe,8BAA8B;CACnD,IAAI,CAAC,cACH;CAEF,MAAM,eAAe;CACrB,IAAI,qBAAqB,aAAa,kCAAkC,mBACtE,aAAa,gCAAgC;AAEjD;AAEA,SAAS,0BAA0B,YAAqB,SAAwC;CAC9F,MAAM,UAAmC,EAAE,GAAI,mDAAW,CAAC,EAAG;CAC9D,IAAI,CAAC,cAAc,OAAO,eAAe,UACvC,OAAO;CAET,KAAK,MAAM,CAAC,MAAM,eAAe,OAAO,QAAQ,UAAU,GACxD,IAAI,cAAc,OAAO,eAAe,YAAY,OAAO,YAAY,OAAO,GAC5E,QAAQ,QAAS,WAAuC;CAG5D,OAAO;AACT;AAEA,SAAS,4BACP,WACA,SACA;CACA,OAAO,QAAS,UAAkB,aAAa,KAC1C,MAAM,0DAAQ,QAAS,IAAI,KAC3B,QAAQ,KAAK,SAAS,sBAAsB;AACnD;AAEA,SAAS,+BACP,SACA;CACA,OAAO,MAAM,0DAAQ,QAAS,IAAI,KAC7B,QAAQ,KAAK,SAAS,sBAAsB;AACnD;AAEA,SAAS,4BAA4B,WAAgC;CACnE,MAAM,aAAa,UAAU;CAC7B,OAAO,QACL,cACG,OAAO,eAAe,aAEvB,2BAA2B,cACxB,uBAAuB,WAE9B;AACF;AAEA,SAAS,6BACP,WACA,SACA;CACA,uDAAI,QAAS,cAAa,WAAW,CAAC,4BAA4B,SAAS,GACzE,OAAO;CAET,OAAO;EACL,GAAG;EACH,UAAU;CACZ;AACF;AAgHA,SAAgB,gBACd,SAEqC;CAErC,OAAO,0BAA0B,SAAS,IAAI;AAChD;AAEA,SAAS,0BACP,SACA,gBACA;CACA,IAAI,gBACF,gCAAgC;CAGlC,MAAM,EACJ,aAAa,YACb,MACA,UACA,SACA,SACA,OACA,OACA,OACA,QAAQ,eACR,SAAS,gBACT,oBACA,GAAG,cAbmB,2BAA2B,2BAA2B,OAAO,CAcnE;CAElB,MAAM,uBAAwB,UAAkB;CAChD,MAAM,oBAA8B,MAAM,QAAQ,oBAAoB,IAClE,CAAC,GAAG,IAAI,IAAI,qBAAqB,QAAQ,SAAkC,OAAO,SAAS,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IACxH,CAAC;CACL,OAAQ,UAAkB;CAgB1B,MAAM,kBAAkB,6BAA6B,WAd1B,uBAAuB,OAC9C;EACE,GAAI,mDAAW,CAAC;EAChB,kBAAkB;EAClB,eAAe;CACjB,IACA,uBAAuB,QACrB,UACA,kBAAkB,SAChB;EACE,GAAI,mDAAW,CAAC;EAChB,eAAe;CACjB,IACA,OAC0E;CAClF,MAAM,wBAAwB,IAAI,IAChC,kBACG,QAAO,SAAQ,CAAC,KAAK,SAAS,GAAG,CAAC,CACvC;CAEA,MAAM,sBAAsB,eAAe,WAAW,KAAK;CAC3D,MAAM,qBAAqB,0BAA0B,oBAAoB,YAAY,OAAO;CAC5F,MAAM,eAAe,OAAO,SAAS,mBAC3B,KAAK,KAAK,kBAAkB,IAClC;CAEJ,MAAM,aAAa,UAAU;EAC3B,MAAM;EACN;EACA;EACA,SAAS;GACR,8BAA8B;CACjC,CAAQ;CAGR,MAAM,eAAe,OAAO,UAAU,cADT,iBAAiB,QAAQ,kBAAkB,SAElE,OAAO,QAAQ;;EACjB,MAAM,6EAAkB,IAAa,0FAAU,IAAa,+CAAY,OAAO,OAAO,IAAI;EAC1F,MAAM,WAAW,4BAA4B,eAAe,cAAc;EAC1E,IAAI,kBAAkB,MACpB,uBAAuB,gBAAgB,cAAc;EAEvD,MAAM,cAAc,OAAO,UAAU,aACjC,iBAAiB,OAAc,OAA8B,GAAU,IACvE;EACJ,MAAM,SAAS;GACb,GAAG;GACH,GAAI,+DAAe,CAAC;EACtB;EACA,IAAI,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,QAC7B,iBAAkB,IAAY,SAAU,IAAY,UAAU,QAAQ;GACpE,yBAAyB,uBAAuB;GAChD,mBAAmB,uBAAuB,QAAQ,SAAY;EAChE,CAAC;EAEH,OAAO;CACT,KACE;CAEJ,MAAM,aAAa,OAAO,iBAAiB,aACvC,aAAa,IACb;CAEJ,MAAM,mBADuB,+BAA+B,eAChB,IACxC;EACE,GAAI,cAAc,OAAO,eAAe,WAAW,aAAa,CAAC;GAChE,yBAAyB,4BAA4B,WAAW,eAAe,6DAC3E,WAAqB,4BAA2B,gBAAgB,6DAChE,WAAqB,4BAA2B;CACvD,IACA;CACJ,MAAM,oBAAoB,yBAAyB,kBAAkB,UAAiC,iBAAiB,OAA0C;CACjK,MAAM,qBAAqB,sBAAsB,SAC7C;EACE,GAAG;EACH,MAAM;CACR,IACA;CAEJ,MAAM,mBAAmB;EACvB,MAAM;EACI;EACD;EACT,SAAS;EACT;EACA,OAAO;EACP,WAAW;CACb;CAEA,MAAM,sBAAsB,kBAC1B,YACA,mDAAW,CAAC,GACZ,OACA,cACA,oBACA,EAAE,eAAe,CACnB;CAGA,MAAM,aAAiD;EACrD,gBAAgB;EAChB,gBAAgB;CAClB;CACA,8BAA8B,IAAI,YAAY,mBAAmB;CAEjE,OAAO;AAOT;;;;;;;AAQA,SAAgB,8BACd,SACA;CACA,OAAO,0BAA0B,SAAS,KAAK;AACjD;;;;;;;AAQA,SAAgB,oCAAoC,YAAoB;CACtE,OAAO,8BAA8B,IAAI,UAAU;AACrD;;;;;;;AAQA,SAAgB,oBAMd,SACM;;CACN,gCAAgC;CAChC,MAAM,EACJ,YACA,OACA,GAAG,gBACD;CAEJ,MAAM,cAAc;EAClB,GAAG;EACH,2CAAqB,YAAoB,uFAAsB;EAC/D,2BAA2B;CAC7B;CAKA,gBAFqB,eAAe,aAAa,OAAO,UAE7B,CAAC;AAC9B;;;;;AAMA,SAAgB,8BACd,WAKM;CAEN,oBADoB,wBAAwB,SACd,CAAQ;AACxC;AAEA,oBAAoB;AACpB,gCAAgC"}
@@ -19,7 +19,7 @@ function scheduleOwnerTemplateRefUpdate(target) {
19
19
  }
20
20
  function registerComponentDefinition(options) {
21
21
  var _getMiniProgramRuntim;
22
- const { runtimeApp, watch, setup, restOptions, pageLifecycleHooks, finalObservers, userLifetimes, userPageLifetimes, finalMethods, finalOptions, applyExtraInstanceFields, templateRefs, layoutHosts, attachWevuPropKeys, setupLifecycle, syncWevuPropsFromInstance, directPropsDerivedKeys, isPage, vueLifecycles, getRuntimeOwnerLabel } = options;
22
+ const { runtimeApp, watch, setup, restOptions, pageLifecycleHooks, finalObservers, userLifetimes, userPageLifetimes, finalMethods, finalOptions, applyExtraInstanceFields, templateRefs, layoutHosts, attachWevuPropKeys, setupLifecycle, syncWevuPropsFromInstance, directPropsDerivedKeys, isPage, vueLifecycles, getRuntimeOwnerLabel, registerNative = true } = options;
23
23
  const resolveRuntime = (instance) => {
24
24
  var _wevu;
25
25
  const directRuntime = (_wevu = instance.__wevu) !== null && _wevu !== void 0 ? _wevu : instance[WEVU_PUBLIC_RUNTIME_KEY];
@@ -272,6 +272,7 @@ function registerComponentDefinition(options) {
272
272
  },
273
273
  options: finalOptions
274
274
  };
275
+ if (!registerNative) return componentDefinition;
275
276
  const statefulHmrBridge = (_getMiniProgramRuntim = getMiniProgramRuntimeGlobalObject()) === null || _getMiniProgramRuntim === void 0 ? void 0 : _getMiniProgramRuntim[WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY];
276
277
  if (typeof (statefulHmrBridge === null || statefulHmrBridge === void 0 ? void 0 : statefulHmrBridge.trackWevuComponent) === "function") {
277
278
  const definition = statefulHmrBridge.trackWevuComponent(componentDefinition, (instance, stateSnapshot) => {
@@ -285,7 +286,10 @@ function registerComponentDefinition(options) {
285
286
  enableDeferredSetData(instance, { rehydrateSetupState: true });
286
287
  });
287
288
  if (!statefulHmrBridge.isApplying()) registerNativeComponentDefinition(definition, isPage);
288
- } else registerNativeComponentDefinition(componentDefinition, isPage);
289
+ return definition;
290
+ }
291
+ registerNativeComponentDefinition(componentDefinition, isPage);
292
+ return componentDefinition;
289
293
  }
290
294
 
291
295
  //#endregion