wevu 6.19.0 → 6.19.2

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 (95) hide show
  1. package/dist/dev/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.143.0}/helpers/esm/defineProperty.mjs +1 -1
  2. package/dist/dev/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.143.0}/helpers/esm/toPrimitive.mjs +1 -1
  3. package/dist/dev/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.143.0}/helpers/esm/toPropertyKey.mjs +1 -1
  4. package/dist/dev/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.143.0}/helpers/esm/typeof.mjs +1 -1
  5. package/dist/dev/index.mjs +0 -1
  6. package/dist/dev/package.mjs +1 -1
  7. package/dist/dev/reactivity/core.mjs +1 -1
  8. package/dist/dev/reactivity/reactive/patch.mjs +2 -1
  9. package/dist/dev/reactivity/reactive/patch.mjs.map +1 -1
  10. package/dist/dev/reactivity/reactive.mjs +2 -1
  11. package/dist/dev/reactivity/reactive.mjs.map +1 -1
  12. package/dist/dev/reactivity/ref.mjs +1 -1
  13. package/dist/dev/router/createRouter.mjs +6 -3
  14. package/dist/dev/router/createRouter.mjs.map +1 -1
  15. package/dist/dev/router/navigationTarget.mjs +2 -1
  16. package/dist/dev/router/navigationTarget.mjs.map +1 -1
  17. package/dist/dev/router/resolve.mjs +9 -2
  18. package/dist/dev/router/resolve.mjs.map +1 -1
  19. package/dist/dev/routerInternal/location.mjs +3 -1
  20. package/dist/dev/routerInternal/location.mjs.map +1 -1
  21. package/dist/dev/routerInternal/records.mjs +2 -1
  22. package/dist/dev/routerInternal/records.mjs.map +1 -1
  23. package/dist/dev/runtime/app/mount.mjs +2 -1
  24. package/dist/dev/runtime/app/mount.mjs.map +1 -1
  25. package/dist/dev/runtime/define/scopedSlotOptions.mjs +6 -3
  26. package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
  27. package/dist/dev/runtime/define.mjs +6 -4
  28. package/dist/dev/runtime/define.mjs.map +1 -1
  29. package/dist/dev/runtime/layoutBridge.mjs.map +1 -1
  30. package/dist/dev/runtime/platform.mjs +4 -2
  31. package/dist/dev/runtime/platform.mjs.map +1 -1
  32. package/dist/dev/runtime/register/app.mjs +3 -1
  33. package/dist/dev/runtime/register/app.mjs.map +1 -1
  34. package/dist/dev/runtime/register/component/lifecycle/platform.mjs +2 -1
  35. package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -1
  36. package/dist/dev/runtime/register/component/methods.mjs +3 -1
  37. package/dist/dev/runtime/register/component/methods.mjs.map +1 -1
  38. package/dist/dev/runtime/register/component.mjs +35 -34
  39. package/dist/dev/runtime/register/component.mjs.map +1 -1
  40. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +4 -2
  41. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -1
  42. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +4 -2
  43. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -1
  44. package/dist/dev/runtime/register/runtimeInstance.mjs +6 -3
  45. package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -1
  46. package/dist/dev/runtime/register/snapshot.mjs +2 -1
  47. package/dist/dev/runtime/register/snapshot.mjs.map +1 -1
  48. package/dist/dev/runtime/templateRefs/helpers.mjs +13 -8
  49. package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -1
  50. package/dist/dev/runtime/templateRefs.mjs +4 -3
  51. package/dist/dev/runtime/templateRefs.mjs.map +1 -1
  52. package/dist/dev/runtime/vueCompat/model.mjs +2 -1
  53. package/dist/dev/runtime/vueCompat/model.mjs.map +1 -1
  54. package/dist/dev/store/define/optionsStyle.mjs +17 -15
  55. package/dist/dev/store/define/optionsStyle.mjs.map +1 -1
  56. package/dist/dev/store/define/setupStyle.mjs +17 -15
  57. package/dist/dev/store/define/setupStyle.mjs.map +1 -1
  58. package/dist/dev/vue-demi.mjs +0 -158
  59. package/dist/dev/vue-demi.mjs.map +1 -1
  60. package/dist/index.mjs +1 -1
  61. package/dist/package.mjs +1 -1
  62. package/dist/reactivity/core.mjs +1 -1
  63. package/dist/reactivity/reactive/patch.mjs +1 -1
  64. package/dist/reactivity/reactive.mjs +1 -1
  65. package/dist/reactivity/ref.mjs +1 -1
  66. package/dist/reactivity/watch/helpers.mjs +1 -1
  67. package/dist/router/createRouter.mjs +1 -1
  68. package/dist/router/navigationTarget.mjs +1 -1
  69. package/dist/router/resolve.mjs +1 -1
  70. package/dist/routerInternal/location.mjs +1 -1
  71. package/dist/routerInternal/records.mjs +1 -1
  72. package/dist/runtime/app/mount.mjs +1 -1
  73. package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
  74. package/dist/runtime/define.mjs +1 -1
  75. package/dist/runtime/platform.mjs +1 -1
  76. package/dist/runtime/register/app.mjs +1 -1
  77. package/dist/runtime/register/component/lifecycle/platform.mjs +1 -1
  78. package/dist/runtime/register/component/methods.mjs +1 -1
  79. package/dist/runtime/register/component/props.mjs +1 -1
  80. package/dist/runtime/register/component.mjs +1 -1
  81. package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -1
  82. package/dist/runtime/register/runtimeInstance.mjs +1 -1
  83. package/dist/runtime/register/snapshot.mjs +1 -1
  84. package/dist/runtime/templateRefs/helpers.mjs +1 -1
  85. package/dist/runtime/vueCompat/model.mjs +1 -1
  86. package/dist/store/storeToRefs.mjs +1 -1
  87. package/dist/vue-demi.d.mts +1 -3
  88. package/dist/vue-demi.mjs +1 -1
  89. package/package.json +6 -6
  90. package/dist/_virtual/_rolldown/runtime.mjs +0 -1
  91. package/dist/dev/_virtual/_rolldown/runtime.mjs +0 -36
  92. /package/dist/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.143.0}/helpers/esm/defineProperty.mjs +0 -0
  93. /package/dist/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.143.0}/helpers/esm/toPrimitive.mjs +0 -0
  94. /package/dist/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.143.0}/helpers/esm/toPropertyKey.mjs +0 -0
  95. /package/dist/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.143.0}/helpers/esm/typeof.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeInstance.mjs","names":[],"sources":["../../../../src/runtime/register/runtimeInstance.ts"],"sourcesContent":["import type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineAppOptions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n RuntimeInstance,\n} from '../types'\nimport type { AdapterWithSetData } from './runtimeInstance/utils'\nimport type { WatchMap } from './watch'\nimport {\n WEVU_EFFECT_SCOPE_KEY,\n WEVU_HOOKS_KEY,\n WEVU_PAGE_LAYOUT_NAME_KEY,\n WEVU_PAGE_LAYOUT_PROPS_KEY,\n WEVU_PAGE_LAYOUT_SETTER_KEY,\n WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PROPS_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_RUNTIME_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n WEVU_WATCH_STOPS_KEY,\n} from '@weapp-core/constants'\nimport { isRef } from '../../reactivity'\nimport { isDeepEqualValue } from '../app/setData/snapshot'\nimport { callHookList } from '../hooks'\nimport { resolveRuntimePageLayoutName, syncRuntimePageLayoutState } from '../pageLayout'\nimport { allocateOwnerId, attachOwnerSnapshot, mergeOwnerSnapshotProps, removeOwner, resolveOwnerSnapshot, updateOwnerSnapshot } from '../scopedSlots'\nimport { clearTemplateRefs, scheduleTemplateRefUpdate } from '../templateRefs'\nimport { bridgeRuntimeMethodsToTarget } from './runtimeInstance/methodBridge'\nimport { attachRuntimeProvideParentContext } from './runtimeInstance/provideContext'\nimport {\n attachRuntimeSlots,\n createNoopWatchStopHandle,\n safeMarkNoSetData,\n} from './runtimeInstance/setupContext'\nimport { runRuntimeSetupPhase } from './runtimeInstance/setupPhase'\nimport {\n attachNativeInstanceRef,\n attachRuntimeInstance,\n attachRuntimeRef,\n callNativeSetData,\n ensureRuntimeProps,\n resolveNativeSetData,\n} from './runtimeInstance/utils'\nimport { createSetDataHighFrequencyWarningMonitor } from './setDataFrequencyWarning'\nimport { registerWatches } from './watch'\n\nfunction cloneInitialSnapshotValue(value: unknown, cache = new WeakMap<object, unknown>()): unknown {\n if (!value || typeof value !== 'object') {\n return value\n }\n if (cache.has(value as object)) {\n return cache.get(value as object)\n }\n if (Array.isArray(value)) {\n const next: unknown[] = []\n cache.set(value, next)\n for (const item of value) {\n next.push(cloneInitialSnapshotValue(item, cache))\n }\n return next\n }\n const next: Record<string, unknown> = {}\n cache.set(value as object, next)\n for (const [key, child] of Object.entries(value as Record<string, unknown>)) {\n next[key] = cloneInitialSnapshotValue(child, cache)\n }\n return next\n}\n\nfunction resolveInitialSnapshotFromNativeData(\n target: InternalRuntimeState,\n omitKeys?: string[],\n extraEntries?: Record<string, unknown>,\n) {\n const data = (target as any).data\n if ((!data || typeof data !== 'object') && (!extraEntries || !Object.keys(extraEntries).length)) {\n return undefined\n }\n const omitSet = Array.isArray(omitKeys) && omitKeys.length\n ? new Set(omitKeys)\n : undefined\n const snapshot: Record<string, any> = {}\n if (data && typeof data === 'object') {\n for (const [key, value] of Object.entries(data as Record<string, unknown>)) {\n if (omitSet?.has(key)) {\n continue\n }\n snapshot[key] = cloneInitialSnapshotValue(value)\n }\n }\n if (extraEntries) {\n for (const [key, value] of Object.entries(extraEntries)) {\n if (omitSet?.has(key)) {\n continue\n }\n snapshot[key] = cloneInitialSnapshotValue(value)\n }\n }\n return snapshot\n}\n\nfunction hasTemplateRuntimeBindings(runtimeApp: RuntimeApp<any, any, any>) {\n return Boolean((runtimeApp as any)?.__wevuHasTemplateRuntimeBindings)\n}\n\ntype RuntimeSetupFunction<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n | DefineAppOptions<D, C, M>['setup']\n\ntype RuntimeInstanceWithSyncFlush<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = RuntimeInstance<D, C, M> & {\n __wevu_flushSetupSnapshotSync?: () => void\n __wevu_touchSetupMethodsVersion?: () => void\n __wevu_trackSetupReactiveKey?: (key: string) => void\n}\n\nfunction attachPageLayoutSetter(target: InternalRuntimeState) {\n if (typeof (target as any).route !== 'string' || !(target as any).route) {\n return\n }\n\n target[WEVU_PAGE_LAYOUT_SETTER_KEY] = (layout: string | false, props?: Record<string, any>) => {\n const runtimeState = target.__wevu?.state as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object') {\n return\n }\n\n runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY] = resolveRuntimePageLayoutName(layout)\n const nextProps = layout === false ? {} : (props ?? {})\n runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY] = nextProps\n syncRuntimePageLayoutState(target as Record<string, any>, layout, nextProps)\n }\n}\n\n/**\n * 挂载运行时实例(框架内部注册流程使用)。\n * @internal\n */\nexport function mountRuntimeInstance<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n runtimeApp: RuntimeApp<D, C, M>,\n watchMap: WatchMap | undefined,\n setup?: RuntimeSetupFunction<D, C, M>,\n options?: { deferSetData?: boolean, snapshotOmitKeys?: string[] },\n) {\n if (target.__wevu) {\n return target.__wevu as RuntimeInstance<D, C, M>\n }\n attachRuntimeProvideParentContext(target, runtimeApp as RuntimeApp<any, any, any>)\n safeMarkNoSetData(target)\n const initialNativeOwnerId = (target as any).data?.[WEVU_SLOT_OWNER_ID_KEY]\n const ownerId = typeof initialNativeOwnerId === 'string' && initialNativeOwnerId\n ? initialNativeOwnerId\n : allocateOwnerId()\n const shouldFlushNativeOwnerId = typeof initialNativeOwnerId === 'string' && initialNativeOwnerId !== ownerId\n const suspendWhenHidden = Boolean((runtimeApp as any)?.__wevuSetDataOptions?.suspendWhenHidden)\n const targetLabel = typeof (target as any).route === 'string' && (target as any).route\n ? `page:${(target as any).route}`\n : typeof (target as any).is === 'string' && (target as any).is\n ? `component:${(target as any).is}`\n : 'unknown-target'\n const highFrequencyWarning = createSetDataHighFrequencyWarningMonitor({\n option: (runtimeApp as any)?.__wevuSetDataOptions?.highFrequencyWarning,\n targetLabel,\n isInPageScrollHook: () => Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 0) > 0,\n })\n const createDeferredAdapter = (instance: InternalRuntimeState): AdapterWithSetData => {\n let pending: Record<string, any> | undefined\n let pendingCallbacks: Array<() => void> = []\n let enabled = false\n const adapter: AdapterWithSetData = {\n setData(payload: Record<string, any>, callback?: () => void) {\n if (!enabled) {\n pending = {\n ...(pending ?? {}),\n ...payload,\n }\n if (callback) {\n pendingCallbacks.push(callback)\n }\n return undefined\n }\n const setData = resolveNativeSetData(instance)\n if (setData) {\n return callNativeSetData(instance, setData, payload, callback)\n }\n return undefined\n },\n }\n adapter.__wevu_enableSetData = (discardPending = false) => {\n enabled = true\n if (discardPending) {\n pending = undefined\n pendingCallbacks = []\n }\n const setData = resolveNativeSetData(instance)\n if (pending && Object.keys(pending).length && setData) {\n const payload = pending\n const callbacks = pendingCallbacks\n pending = undefined\n pendingCallbacks = []\n const callback = callbacks.length\n ? () => callbacks.forEach(callback => callback())\n : undefined\n callNativeSetData(instance, setData, payload, callback)\n }\n }\n return adapter\n }\n\n const baseAdapter: AdapterWithSetData = options?.deferSetData\n ? createDeferredAdapter(target)\n : {\n setData(payload: Record<string, any>, callback?: () => void) {\n const setData = resolveNativeSetData(target)\n if (setData) {\n return callNativeSetData(target, setData, payload, callback)\n }\n return undefined\n },\n }\n let runtimeRef: RuntimeInstance<any, any, any> | undefined\n let visible = true\n let hiddenPendingPayload: Record<string, any> | undefined\n\n const mergePendingPayload = (pending: Record<string, any> | undefined, payload: Record<string, any>) => ({\n ...(pending ?? {}),\n ...payload,\n })\n const refreshOwnerSnapshot = () => {\n if (!runtimeRef) {\n return\n }\n const snapshot = resolveOwnerSnapshot(runtimeRef)\n const propsSource = (target as any)[WEVU_PROPS_KEY] ?? (target as any).properties\n mergeOwnerSnapshotProps(snapshot, propsSource)\n updateOwnerSnapshot(ownerId, snapshot, runtimeRef.proxy, target)\n }\n const syncNativeOwnerId = () => {\n if (!shouldFlushNativeOwnerId) {\n return\n }\n const nativeData = (target as any).data\n try {\n if (nativeData && typeof nativeData === 'object') {\n nativeData[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n }\n catch {\n // 忽略直接写入失败,后续 setData 仍会尝试同步。\n }\n const setData = resolveNativeSetData(target)\n if (!setData) {\n return\n }\n callNativeSetData(target, setData, { [WEVU_SLOT_OWNER_ID_KEY]: ownerId })\n }\n const adapter: AdapterWithSetData = {\n ...(baseAdapter as any),\n setData(payload: Record<string, any>) {\n highFrequencyWarning?.()\n if (suspendWhenHidden && !visible) {\n hiddenPendingPayload = mergePendingPayload(hiddenPendingPayload, payload)\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n return undefined\n }\n const hasTemplateRefs = Array.isArray((target as any)[WEVU_TEMPLATE_REFS_KEY])\n && (target as any)[WEVU_TEMPLATE_REFS_KEY].length > 0\n refreshOwnerSnapshot()\n if (hasTemplateRefs && resolveNativeSetData(target)) {\n return new Promise<void>((resolve) => {\n baseAdapter.setData(payload, () => {\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n resolve()\n })\n })\n }\n const result = baseAdapter.setData(payload)\n scheduleTemplateRefUpdate(target)\n return result\n },\n __wevu_setVisibility(nextVisible: boolean) {\n visible = nextVisible\n if (!visible || !hiddenPendingPayload) {\n return undefined\n }\n const payload = hiddenPendingPayload\n hiddenPendingPayload = undefined\n const hasTemplateRefs = Array.isArray((target as any)[WEVU_TEMPLATE_REFS_KEY])\n && (target as any)[WEVU_TEMPLATE_REFS_KEY].length > 0\n refreshOwnerSnapshot()\n if (hasTemplateRefs && resolveNativeSetData(target)) {\n return new Promise<void>((resolve) => {\n baseAdapter.setData(payload, () => {\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n resolve()\n })\n })\n }\n const result = baseAdapter.setData(payload)\n scheduleTemplateRefUpdate(target)\n return result\n },\n }\n\n const baseMountAdapter = {\n ...(adapter as any),\n }\n Object.defineProperty(baseMountAdapter, '__wevu_targetLabel', {\n configurable: true,\n enumerable: false,\n value: targetLabel,\n writable: false,\n })\n const targetProperties = (target as any).properties\n if (targetProperties && typeof targetProperties === 'object') {\n Object.defineProperty(baseMountAdapter, '__wevu_initialProps', {\n configurable: true,\n enumerable: false,\n value: targetProperties,\n writable: false,\n })\n }\n if (Array.isArray(options?.snapshotOmitKeys) && options.snapshotOmitKeys.length) {\n Object.defineProperty(baseMountAdapter, '__wevu_snapshotOmitKeys', {\n configurable: true,\n enumerable: false,\n value: options.snapshotOmitKeys,\n writable: false,\n })\n }\n const initialSnapshot = resolveInitialSnapshotFromNativeData(\n target,\n options?.snapshotOmitKeys,\n hasTemplateRuntimeBindings(runtimeApp)\n ? undefined\n : { [WEVU_SLOT_OWNER_ID_KEY]: ownerId },\n )\n if (initialSnapshot && Object.keys(initialSnapshot).length) {\n Object.defineProperty(baseMountAdapter, '__wevu_initialSnapshot', {\n configurable: true,\n enumerable: false,\n value: initialSnapshot,\n writable: false,\n })\n }\n Object.defineProperty(baseMountAdapter, '__wevu_initialState', {\n configurable: true,\n enumerable: false,\n value: { [WEVU_SLOT_OWNER_ID_KEY]: ownerId },\n writable: false,\n })\n const shouldDeferInitialSnapshot = Boolean(options?.deferSetData)\n || Boolean(setup)\n || Boolean(targetProperties && typeof targetProperties === 'object' && Object.keys(targetProperties).length > 0)\n if (shouldDeferInitialSnapshot) {\n Object.defineProperty(baseMountAdapter, '__wevu_deferInitialSnapshot', {\n configurable: true,\n enumerable: false,\n value: true,\n writable: false,\n })\n }\n const runtime = runtimeApp.mount(baseMountAdapter)\n runtimeRef = runtime\n attachRuntimeInstance(runtime as RuntimeInstance<any, any, any>, target)\n const runtimeProxy = runtime?.proxy ?? {}\n const runtimeState = runtime?.state ?? {}\n const runtimeSetupState = runtime?.setupState ?? Object.create(null)\n if (runtimeState && typeof runtimeState === 'object') {\n attachRuntimeRef(runtimeState as Record<string, any>, runtime)\n attachNativeInstanceRef(runtimeState as Record<string, any>, target)\n }\n const runtimeComputed = (runtime as any)?.computed ?? Object.create(null)\n // 防护:适配器可能返回不完整的 runtime(或被插件篡改),此处兜底补齐\n if (!runtime?.methods) {\n try {\n ;(runtime as any).methods = Object.create(null)\n }\n catch {\n // 若对象只读则忽略,后续将使用兜底 runtimeMethods\n }\n }\n const runtimeMethods = runtime?.methods ?? Object.create(null)\n const runtimeWatch = (runtime as any)?.watch ?? (() => createNoopWatchStopHandle())\n const runtimeBindModel = (runtime as any)?.bindModel ?? (() => {})\n const runtimeWithDefaults = {\n ...(runtime ?? {}),\n state: runtimeState,\n setupState: runtimeSetupState,\n proxy: runtimeProxy,\n methods: runtimeMethods,\n computed: runtimeComputed,\n watch: runtimeWatch,\n bindModel: runtimeBindModel,\n snapshot: (runtime as any)?.snapshot ?? (() => Object.create(null)),\n unmount: (runtime as any)?.unmount ?? (() => {}),\n } satisfies RuntimeInstance<any, any, any>\n Object.defineProperty(runtimeWithDefaults, '__wevu_initialRuntimeSnapshot', {\n configurable: true,\n enumerable: false,\n value: cloneInitialSnapshotValue(runtimeState),\n writable: false,\n })\n const runtimeWithSyncFlush = runtimeWithDefaults as RuntimeInstanceWithSyncFlush<D, C, M>\n const internalRuntimeFields = {\n __wevu_flushSetupSnapshotSync: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_flushSetupSnapshotSync,\n __wevu_touchSetupMethodsVersion: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_touchSetupMethodsVersion,\n __wevu_trackSetupReactiveKey: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_trackSetupReactiveKey,\n [WEVU_PROPS_DERIVED_KEYS_KEY]: (runtime as any)[WEVU_PROPS_DERIVED_KEYS_KEY],\n }\n for (const [key, value] of Object.entries(internalRuntimeFields)) {\n if (!value) {\n continue\n }\n Object.defineProperty(runtimeWithDefaults, key, {\n configurable: true,\n enumerable: false,\n value,\n writable: true,\n })\n }\n\n Object.defineProperty(target, WEVU_PUBLIC_RUNTIME_KEY, {\n value: runtimeWithDefaults,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n target.__wevu = runtimeWithDefaults\n attachPageLayoutSetter(target)\n const runtimeProps = ensureRuntimeProps(target, runtimeState as Record<string, any>)\n attachRuntimeSlots(runtimeState as Record<string, any>, runtimeProps)\n\n attachOwnerSnapshot(target, runtimeWithDefaults as any, ownerId, {\n deferSnapshot: options?.deferSetData,\n })\n syncNativeOwnerId()\n\n const watchStops = watchMap\n ? registerWatches(runtimeWithDefaults, watchMap, target, {\n deferMissingSourceBaseline: Boolean(setup),\n })\n : []\n if (watchStops.length) {\n target[WEVU_WATCH_STOPS_KEY] = watchStops\n }\n\n if (setup) {\n runRuntimeSetupPhase({\n target,\n runtime,\n runtimeWithDefaults,\n runtimeState: runtimeState as Record<string, any>,\n runtimeProxy: runtimeProxy as Record<string, any>,\n setup,\n })\n if (!options?.deferSetData) {\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n }\n if (!options?.deferSetData) {\n refreshOwnerSnapshot()\n }\n for (const stop of watchStops) {\n stop.resume()\n }\n }\n else if (\n !options?.deferSetData\n && (target as any).properties\n && typeof (target as any).properties === 'object'\n && Object.keys((target as any).properties).length > 0\n ) {\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n refreshOwnerSnapshot()\n }\n\n // 将 runtime.methods 透传到原生实例,供小程序事件处理直接调用\n bridgeRuntimeMethodsToTarget(target, runtime)\n\n return runtime\n}\n\nfunction preserveRuntimeFacadeIdentity<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n previousRuntime: RuntimeInstance<D, C, M>,\n nextRuntime: RuntimeInstance<D, C, M>,\n) {\n for (const key of Reflect.ownKeys(previousRuntime)) {\n if (!Reflect.has(nextRuntime, key)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(previousRuntime, key)\n if (descriptor?.configurable) {\n Reflect.deleteProperty(previousRuntime, key)\n }\n }\n }\n for (const key of Reflect.ownKeys(nextRuntime)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(nextRuntime, key)\n if (!descriptor) {\n continue\n }\n try {\n Reflect.defineProperty(previousRuntime, key, descriptor)\n }\n catch {\n try {\n ;(previousRuntime as any)[key] = (nextRuntime as any)[key]\n }\n catch {\n // 宿主包装对象仍持有旧 runtime 时,保留无法覆盖的只读字段。\n }\n }\n }\n attachRuntimeRef(previousRuntime.state as Record<string, any>, previousRuntime)\n target.__wevu = previousRuntime\n Object.defineProperty(target, WEVU_PUBLIC_RUNTIME_KEY, {\n value: previousRuntime,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n return previousRuntime\n}\n\nfunction createRuntimeStateSnapshot(\n runtime: RuntimeInstance<any, any, any>,\n nativeData: Record<string, any> | undefined,\n preferredState?: Record<string, any>,\n) {\n const runtimeState = runtime.state as Record<string, any>\n const setupState = runtime.setupState as Record<string, any> | undefined\n const snapshot: Record<string, any> = {}\n for (const key of Object.keys(nativeData ?? {})) {\n if (!Object.prototype.hasOwnProperty.call(runtimeState, key)) {\n continue\n }\n if (preferredState && Object.prototype.hasOwnProperty.call(preferredState, key)) {\n snapshot[key] = cloneInitialSnapshotValue(preferredState[key])\n continue\n }\n const setupBinding = setupState?.[key]\n snapshot[key] = cloneInitialSnapshotValue(isRef(setupBinding) ? setupBinding.value : runtimeState[key])\n }\n return snapshot\n}\n\nfunction syncRuntimeStateFromNativeData(\n target: InternalRuntimeState,\n options?: { includeSetupState?: boolean, nativeData?: Record<string, any> },\n) {\n const runtime = target.__wevu\n const runtimeState = runtime?.state as Record<string, any> | undefined\n const setupState = runtime?.setupState as Record<string, any> | undefined\n const nativeData = options?.nativeData ?? (target as any).data as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object' || !nativeData || typeof nativeData !== 'object') {\n return\n }\n const initialRuntimeSnapshot = (runtime as any)?.__wevu_initialRuntimeSnapshot as Record<string, any> | undefined\n for (const [key, value] of Object.entries(nativeData)) {\n if (!key || key === 'undefined') {\n continue\n }\n if (Object.prototype.hasOwnProperty.call(runtimeState, key)) {\n try {\n const setupBinding = setupState?.[key]\n const runtimeValue = cloneInitialSnapshotValue(value)\n if (!options?.includeSetupState && setupState && Object.prototype.hasOwnProperty.call(setupState, key)) {\n continue\n }\n if (\n !options?.includeSetupState\n && initialRuntimeSnapshot\n && Object.prototype.hasOwnProperty.call(initialRuntimeSnapshot, key)\n && !isDeepEqualValue(runtimeState[key], initialRuntimeSnapshot[key], 20, { keys: 10_000 })\n ) {\n continue\n }\n if (\n !options?.includeSetupState\n && initialRuntimeSnapshot\n && !Object.prototype.hasOwnProperty.call(initialRuntimeSnapshot, key)\n ) {\n continue\n }\n if (isRef(setupBinding)) {\n setupBinding.value = runtimeValue\n continue\n }\n runtimeState[key] = runtimeValue\n }\n catch {\n // DevTools 热更新期间可能带入响应式 state 拒绝写入的临时 data key,跳过即可。\n }\n }\n }\n}\n\nexport function enableDeferredSetData(\n target: InternalRuntimeState,\n options?: { rehydrateSetupState?: boolean },\n) {\n const adapter = (target as any).__wevu?.adapter\n syncRuntimeStateFromNativeData(target, {\n includeSetupState: options?.rehydrateSetupState,\n })\n if (adapter && typeof (adapter as any).__wevu_enableSetData === 'function') {\n ;(adapter as any).__wevu_enableSetData(true)\n }\n ;(target as any).__wevu?.__wevu_flushSetupSnapshotSync?.()\n}\n\nexport function setRuntimeSetDataVisibility(target: InternalRuntimeState, visible: boolean) {\n const adapter = (target as any).__wevu?.adapter\n if (adapter && typeof (adapter as any).__wevu_setVisibility === 'function') {\n ;(adapter as any).__wevu_setVisibility(visible)\n }\n}\n\n/**\n * 卸载运行时实例(框架内部注册流程使用)。\n * @internal\n */\nexport function teardownRuntimeInstance(target: InternalRuntimeState, options?: { skipHooks?: boolean }) {\n const runtime = target.__wevu\n const ownerId = (target as any)[WEVU_RUNTIME_OWNER_ID_KEY]\n ?? (target as any)[WEVU_SLOT_OWNER_ID_KEY]\n if (ownerId) {\n removeOwner(ownerId)\n }\n clearTemplateRefs(target)\n // 触发卸载钩子(仅在 teardown 首次执行时触发)\n if (!options?.skipHooks && runtime && target[WEVU_HOOKS_KEY]) {\n callHookList(target, 'onUnload', [])\n }\n // 清理注册的生命周期钩子\n if (target[WEVU_HOOKS_KEY]) {\n target[WEVU_HOOKS_KEY] = undefined\n }\n const stops = target[WEVU_WATCH_STOPS_KEY]\n if (Array.isArray(stops)) {\n for (const stop of stops) {\n try {\n stop()\n }\n catch {\n // 避免 teardown 中断:单个 stop 失败不阻塞其他清理\n }\n }\n }\n target[WEVU_WATCH_STOPS_KEY] = undefined\n target[WEVU_EFFECT_SCOPE_KEY]?.stop()\n target[WEVU_EFFECT_SCOPE_KEY] = undefined\n if (runtime) {\n runtime.unmount()\n }\n delete target.__wevu\n if (WEVU_PUBLIC_RUNTIME_KEY in target) {\n delete (target as any)[WEVU_PUBLIC_RUNTIME_KEY]\n }\n}\n\n/**\n * 重建运行时实例,同时保持宿主包装对象持有的 runtime facade 身份稳定。\n * @internal\n */\nexport function refreshRuntimeInstance<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n runtimeApp: RuntimeApp<D, C, M>,\n watchMap: WatchMap | undefined,\n setup?: RuntimeSetupFunction<D, C, M>,\n options?: { snapshotOmitKeys?: string[], stateSnapshot?: Record<string, any> },\n) {\n const previousRuntime = target.__wevu as RuntimeInstance<D, C, M> | undefined\n const previousRuntimeState = previousRuntime\n ? createRuntimeStateSnapshot(previousRuntime, (target as any).data, options?.stateSnapshot)\n : undefined\n teardownRuntimeInstance(target, { skipHooks: true })\n const nextRuntime = mountRuntimeInstance(target, runtimeApp, watchMap, setup, {\n deferSetData: true,\n snapshotOmitKeys: options?.snapshotOmitKeys,\n })\n if (previousRuntimeState) {\n const nativeData = (target as any).data\n if (nativeData && typeof nativeData === 'object') {\n Object.assign(nativeData, cloneInitialSnapshotValue(previousRuntimeState))\n }\n syncRuntimeStateFromNativeData(target, {\n includeSetupState: true,\n nativeData: previousRuntimeState,\n })\n }\n if (!previousRuntime || previousRuntime === nextRuntime) {\n return nextRuntime\n }\n return preserveRuntimeFacadeIdentity(target, previousRuntime, nextRuntime)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"runtimeInstance.mjs","names":[],"sources":["../../../../src/runtime/register/runtimeInstance.ts"],"sourcesContent":["import type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineAppOptions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n RuntimeInstance,\n} from '../types'\nimport type { AdapterWithSetData } from './runtimeInstance/utils'\nimport type { WatchMap } from './watch'\nimport {\n WEVU_EFFECT_SCOPE_KEY,\n WEVU_HOOKS_KEY,\n WEVU_PAGE_LAYOUT_NAME_KEY,\n WEVU_PAGE_LAYOUT_PROPS_KEY,\n WEVU_PAGE_LAYOUT_SETTER_KEY,\n WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PROPS_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_RUNTIME_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n WEVU_WATCH_STOPS_KEY,\n} from '@weapp-core/constants'\nimport { isRef } from '../../reactivity'\nimport { isDeepEqualValue } from '../app/setData/snapshot'\nimport { callHookList } from '../hooks'\nimport { resolveRuntimePageLayoutName, syncRuntimePageLayoutState } from '../pageLayout'\nimport { allocateOwnerId, attachOwnerSnapshot, mergeOwnerSnapshotProps, removeOwner, resolveOwnerSnapshot, updateOwnerSnapshot } from '../scopedSlots'\nimport { clearTemplateRefs, scheduleTemplateRefUpdate } from '../templateRefs'\nimport { bridgeRuntimeMethodsToTarget } from './runtimeInstance/methodBridge'\nimport { attachRuntimeProvideParentContext } from './runtimeInstance/provideContext'\nimport {\n attachRuntimeSlots,\n createNoopWatchStopHandle,\n safeMarkNoSetData,\n} from './runtimeInstance/setupContext'\nimport { runRuntimeSetupPhase } from './runtimeInstance/setupPhase'\nimport {\n attachNativeInstanceRef,\n attachRuntimeInstance,\n attachRuntimeRef,\n callNativeSetData,\n ensureRuntimeProps,\n resolveNativeSetData,\n} from './runtimeInstance/utils'\nimport { createSetDataHighFrequencyWarningMonitor } from './setDataFrequencyWarning'\nimport { registerWatches } from './watch'\n\nfunction cloneInitialSnapshotValue(value: unknown, cache = new WeakMap<object, unknown>()): unknown {\n if (!value || typeof value !== 'object') {\n return value\n }\n if (cache.has(value as object)) {\n return cache.get(value as object)\n }\n if (Array.isArray(value)) {\n const next: unknown[] = []\n cache.set(value, next)\n for (const item of value) {\n next.push(cloneInitialSnapshotValue(item, cache))\n }\n return next\n }\n const next: Record<string, unknown> = {}\n cache.set(value as object, next)\n for (const [key, child] of Object.entries(value as Record<string, unknown>)) {\n next[key] = cloneInitialSnapshotValue(child, cache)\n }\n return next\n}\n\nfunction resolveInitialSnapshotFromNativeData(\n target: InternalRuntimeState,\n omitKeys?: string[],\n extraEntries?: Record<string, unknown>,\n) {\n const data = (target as any).data\n if ((!data || typeof data !== 'object') && (!extraEntries || !Object.keys(extraEntries).length)) {\n return undefined\n }\n const omitSet = Array.isArray(omitKeys) && omitKeys.length\n ? new Set(omitKeys)\n : undefined\n const snapshot: Record<string, any> = {}\n if (data && typeof data === 'object') {\n for (const [key, value] of Object.entries(data as Record<string, unknown>)) {\n if (omitSet?.has(key)) {\n continue\n }\n snapshot[key] = cloneInitialSnapshotValue(value)\n }\n }\n if (extraEntries) {\n for (const [key, value] of Object.entries(extraEntries)) {\n if (omitSet?.has(key)) {\n continue\n }\n snapshot[key] = cloneInitialSnapshotValue(value)\n }\n }\n return snapshot\n}\n\nfunction hasTemplateRuntimeBindings(runtimeApp: RuntimeApp<any, any, any>) {\n return Boolean((runtimeApp as any)?.__wevuHasTemplateRuntimeBindings)\n}\n\ntype RuntimeSetupFunction<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n | DefineAppOptions<D, C, M>['setup']\n\ntype RuntimeInstanceWithSyncFlush<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = RuntimeInstance<D, C, M> & {\n __wevu_flushSetupSnapshotSync?: () => void\n __wevu_touchSetupMethodsVersion?: () => void\n __wevu_trackSetupReactiveKey?: (key: string) => void\n}\n\nfunction attachPageLayoutSetter(target: InternalRuntimeState) {\n if (typeof (target as any).route !== 'string' || !(target as any).route) {\n return\n }\n\n target[WEVU_PAGE_LAYOUT_SETTER_KEY] = (layout: string | false, props?: Record<string, any>) => {\n const runtimeState = target.__wevu?.state as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object') {\n return\n }\n\n runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY] = resolveRuntimePageLayoutName(layout)\n const nextProps = layout === false ? {} : (props ?? {})\n runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY] = nextProps\n syncRuntimePageLayoutState(target as Record<string, any>, layout, nextProps)\n }\n}\n\n/**\n * 挂载运行时实例(框架内部注册流程使用)。\n * @internal\n */\nexport function mountRuntimeInstance<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n runtimeApp: RuntimeApp<D, C, M>,\n watchMap: WatchMap | undefined,\n setup?: RuntimeSetupFunction<D, C, M>,\n options?: { deferSetData?: boolean, snapshotOmitKeys?: string[] },\n) {\n if (target.__wevu) {\n return target.__wevu as RuntimeInstance<D, C, M>\n }\n attachRuntimeProvideParentContext(target, runtimeApp as RuntimeApp<any, any, any>)\n safeMarkNoSetData(target)\n const initialNativeOwnerId = (target as any).data?.[WEVU_SLOT_OWNER_ID_KEY]\n const ownerId = typeof initialNativeOwnerId === 'string' && initialNativeOwnerId\n ? initialNativeOwnerId\n : allocateOwnerId()\n const shouldFlushNativeOwnerId = typeof initialNativeOwnerId === 'string' && initialNativeOwnerId !== ownerId\n const suspendWhenHidden = Boolean((runtimeApp as any)?.__wevuSetDataOptions?.suspendWhenHidden)\n const targetLabel = typeof (target as any).route === 'string' && (target as any).route\n ? `page:${(target as any).route}`\n : typeof (target as any).is === 'string' && (target as any).is\n ? `component:${(target as any).is}`\n : 'unknown-target'\n const highFrequencyWarning = createSetDataHighFrequencyWarningMonitor({\n option: (runtimeApp as any)?.__wevuSetDataOptions?.highFrequencyWarning,\n targetLabel,\n isInPageScrollHook: () => Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 0) > 0,\n })\n const createDeferredAdapter = (instance: InternalRuntimeState): AdapterWithSetData => {\n let pending: Record<string, any> | undefined\n let pendingCallbacks: Array<() => void> = []\n let enabled = false\n const adapter: AdapterWithSetData = {\n setData(payload: Record<string, any>, callback?: () => void) {\n if (!enabled) {\n pending = {\n ...(pending ?? {}),\n ...payload,\n }\n if (callback) {\n pendingCallbacks.push(callback)\n }\n return undefined\n }\n const setData = resolveNativeSetData(instance)\n if (setData) {\n return callNativeSetData(instance, setData, payload, callback)\n }\n return undefined\n },\n }\n adapter.__wevu_enableSetData = (discardPending = false) => {\n enabled = true\n if (discardPending) {\n pending = undefined\n pendingCallbacks = []\n }\n const setData = resolveNativeSetData(instance)\n if (pending && Object.keys(pending).length && setData) {\n const payload = pending\n const callbacks = pendingCallbacks\n pending = undefined\n pendingCallbacks = []\n const callback = callbacks.length\n ? () => callbacks.forEach(callback => callback())\n : undefined\n callNativeSetData(instance, setData, payload, callback)\n }\n }\n return adapter\n }\n\n const baseAdapter: AdapterWithSetData = options?.deferSetData\n ? createDeferredAdapter(target)\n : {\n setData(payload: Record<string, any>, callback?: () => void) {\n const setData = resolveNativeSetData(target)\n if (setData) {\n return callNativeSetData(target, setData, payload, callback)\n }\n return undefined\n },\n }\n let runtimeRef: RuntimeInstance<any, any, any> | undefined\n let visible = true\n let hiddenPendingPayload: Record<string, any> | undefined\n\n const mergePendingPayload = (pending: Record<string, any> | undefined, payload: Record<string, any>) => ({\n ...(pending ?? {}),\n ...payload,\n })\n const refreshOwnerSnapshot = () => {\n if (!runtimeRef) {\n return\n }\n const snapshot = resolveOwnerSnapshot(runtimeRef)\n const propsSource = (target as any)[WEVU_PROPS_KEY] ?? (target as any).properties\n mergeOwnerSnapshotProps(snapshot, propsSource)\n updateOwnerSnapshot(ownerId, snapshot, runtimeRef.proxy, target)\n }\n const syncNativeOwnerId = () => {\n if (!shouldFlushNativeOwnerId) {\n return\n }\n const nativeData = (target as any).data\n try {\n if (nativeData && typeof nativeData === 'object') {\n nativeData[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n }\n catch {\n // 忽略直接写入失败,后续 setData 仍会尝试同步。\n }\n const setData = resolveNativeSetData(target)\n if (!setData) {\n return\n }\n callNativeSetData(target, setData, { [WEVU_SLOT_OWNER_ID_KEY]: ownerId })\n }\n const adapter: AdapterWithSetData = {\n ...(baseAdapter as any),\n setData(payload: Record<string, any>) {\n highFrequencyWarning?.()\n if (suspendWhenHidden && !visible) {\n hiddenPendingPayload = mergePendingPayload(hiddenPendingPayload, payload)\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n return undefined\n }\n const hasTemplateRefs = Array.isArray((target as any)[WEVU_TEMPLATE_REFS_KEY])\n && (target as any)[WEVU_TEMPLATE_REFS_KEY].length > 0\n refreshOwnerSnapshot()\n if (hasTemplateRefs && resolveNativeSetData(target)) {\n return new Promise<void>((resolve) => {\n baseAdapter.setData(payload, () => {\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n resolve()\n })\n })\n }\n const result = baseAdapter.setData(payload)\n scheduleTemplateRefUpdate(target)\n return result\n },\n __wevu_setVisibility(nextVisible: boolean) {\n visible = nextVisible\n if (!visible || !hiddenPendingPayload) {\n return undefined\n }\n const payload = hiddenPendingPayload\n hiddenPendingPayload = undefined\n const hasTemplateRefs = Array.isArray((target as any)[WEVU_TEMPLATE_REFS_KEY])\n && (target as any)[WEVU_TEMPLATE_REFS_KEY].length > 0\n refreshOwnerSnapshot()\n if (hasTemplateRefs && resolveNativeSetData(target)) {\n return new Promise<void>((resolve) => {\n baseAdapter.setData(payload, () => {\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n resolve()\n })\n })\n }\n const result = baseAdapter.setData(payload)\n scheduleTemplateRefUpdate(target)\n return result\n },\n }\n\n const baseMountAdapter = {\n ...(adapter as any),\n }\n Object.defineProperty(baseMountAdapter, '__wevu_targetLabel', {\n configurable: true,\n enumerable: false,\n value: targetLabel,\n writable: false,\n })\n const targetProperties = (target as any).properties\n if (targetProperties && typeof targetProperties === 'object') {\n Object.defineProperty(baseMountAdapter, '__wevu_initialProps', {\n configurable: true,\n enumerable: false,\n value: targetProperties,\n writable: false,\n })\n }\n if (Array.isArray(options?.snapshotOmitKeys) && options.snapshotOmitKeys.length) {\n Object.defineProperty(baseMountAdapter, '__wevu_snapshotOmitKeys', {\n configurable: true,\n enumerable: false,\n value: options.snapshotOmitKeys,\n writable: false,\n })\n }\n const initialSnapshot = resolveInitialSnapshotFromNativeData(\n target,\n options?.snapshotOmitKeys,\n hasTemplateRuntimeBindings(runtimeApp)\n ? undefined\n : { [WEVU_SLOT_OWNER_ID_KEY]: ownerId },\n )\n if (initialSnapshot && Object.keys(initialSnapshot).length) {\n Object.defineProperty(baseMountAdapter, '__wevu_initialSnapshot', {\n configurable: true,\n enumerable: false,\n value: initialSnapshot,\n writable: false,\n })\n }\n Object.defineProperty(baseMountAdapter, '__wevu_initialState', {\n configurable: true,\n enumerable: false,\n value: { [WEVU_SLOT_OWNER_ID_KEY]: ownerId },\n writable: false,\n })\n const shouldDeferInitialSnapshot = Boolean(options?.deferSetData)\n || Boolean(setup)\n || Boolean(targetProperties && typeof targetProperties === 'object' && Object.keys(targetProperties).length > 0)\n if (shouldDeferInitialSnapshot) {\n Object.defineProperty(baseMountAdapter, '__wevu_deferInitialSnapshot', {\n configurable: true,\n enumerable: false,\n value: true,\n writable: false,\n })\n }\n const runtime = runtimeApp.mount(baseMountAdapter)\n runtimeRef = runtime\n attachRuntimeInstance(runtime as RuntimeInstance<any, any, any>, target)\n const runtimeProxy = runtime?.proxy ?? {}\n const runtimeState = runtime?.state ?? {}\n const runtimeSetupState = runtime?.setupState ?? Object.create(null)\n if (runtimeState && typeof runtimeState === 'object') {\n attachRuntimeRef(runtimeState as Record<string, any>, runtime)\n attachNativeInstanceRef(runtimeState as Record<string, any>, target)\n }\n const runtimeComputed = (runtime as any)?.computed ?? Object.create(null)\n // 防护:适配器可能返回不完整的 runtime(或被插件篡改),此处兜底补齐\n if (!runtime?.methods) {\n try {\n ;(runtime as any).methods = Object.create(null)\n }\n catch {\n // 若对象只读则忽略,后续将使用兜底 runtimeMethods\n }\n }\n const runtimeMethods = runtime?.methods ?? Object.create(null)\n const runtimeWatch = (runtime as any)?.watch ?? (() => createNoopWatchStopHandle())\n const runtimeBindModel = (runtime as any)?.bindModel ?? (() => {})\n const runtimeWithDefaults = {\n ...(runtime ?? {}),\n state: runtimeState,\n setupState: runtimeSetupState,\n proxy: runtimeProxy,\n methods: runtimeMethods,\n computed: runtimeComputed,\n watch: runtimeWatch,\n bindModel: runtimeBindModel,\n snapshot: (runtime as any)?.snapshot ?? (() => Object.create(null)),\n unmount: (runtime as any)?.unmount ?? (() => {}),\n } satisfies RuntimeInstance<any, any, any>\n Object.defineProperty(runtimeWithDefaults, '__wevu_initialRuntimeSnapshot', {\n configurable: true,\n enumerable: false,\n value: cloneInitialSnapshotValue(runtimeState),\n writable: false,\n })\n const runtimeWithSyncFlush = runtimeWithDefaults as RuntimeInstanceWithSyncFlush<D, C, M>\n const internalRuntimeFields = {\n __wevu_flushSetupSnapshotSync: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_flushSetupSnapshotSync,\n __wevu_touchSetupMethodsVersion: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_touchSetupMethodsVersion,\n __wevu_trackSetupReactiveKey: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_trackSetupReactiveKey,\n [WEVU_PROPS_DERIVED_KEYS_KEY]: (runtime as any)[WEVU_PROPS_DERIVED_KEYS_KEY],\n }\n for (const [key, value] of Object.entries(internalRuntimeFields)) {\n if (!value) {\n continue\n }\n Object.defineProperty(runtimeWithDefaults, key, {\n configurable: true,\n enumerable: false,\n value,\n writable: true,\n })\n }\n\n Object.defineProperty(target, WEVU_PUBLIC_RUNTIME_KEY, {\n value: runtimeWithDefaults,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n target.__wevu = runtimeWithDefaults\n attachPageLayoutSetter(target)\n const runtimeProps = ensureRuntimeProps(target, runtimeState as Record<string, any>)\n attachRuntimeSlots(runtimeState as Record<string, any>, runtimeProps)\n\n attachOwnerSnapshot(target, runtimeWithDefaults as any, ownerId, {\n deferSnapshot: options?.deferSetData,\n })\n syncNativeOwnerId()\n\n const watchStops = watchMap\n ? registerWatches(runtimeWithDefaults, watchMap, target, {\n deferMissingSourceBaseline: Boolean(setup),\n })\n : []\n if (watchStops.length) {\n target[WEVU_WATCH_STOPS_KEY] = watchStops\n }\n\n if (setup) {\n runRuntimeSetupPhase({\n target,\n runtime,\n runtimeWithDefaults,\n runtimeState: runtimeState as Record<string, any>,\n runtimeProxy: runtimeProxy as Record<string, any>,\n setup,\n })\n if (!options?.deferSetData) {\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n }\n if (!options?.deferSetData) {\n refreshOwnerSnapshot()\n }\n for (const stop of watchStops) {\n stop.resume()\n }\n }\n else if (\n !options?.deferSetData\n && (target as any).properties\n && typeof (target as any).properties === 'object'\n && Object.keys((target as any).properties).length > 0\n ) {\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n refreshOwnerSnapshot()\n }\n\n // 将 runtime.methods 透传到原生实例,供小程序事件处理直接调用\n bridgeRuntimeMethodsToTarget(target, runtime)\n\n return runtime\n}\n\nfunction preserveRuntimeFacadeIdentity<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n previousRuntime: RuntimeInstance<D, C, M>,\n nextRuntime: RuntimeInstance<D, C, M>,\n) {\n for (const key of Reflect.ownKeys(previousRuntime)) {\n if (!Reflect.has(nextRuntime, key)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(previousRuntime, key)\n if (descriptor?.configurable) {\n Reflect.deleteProperty(previousRuntime, key)\n }\n }\n }\n for (const key of Reflect.ownKeys(nextRuntime)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(nextRuntime, key)\n if (!descriptor) {\n continue\n }\n try {\n Reflect.defineProperty(previousRuntime, key, descriptor)\n }\n catch {\n try {\n ;(previousRuntime as any)[key] = (nextRuntime as any)[key]\n }\n catch {\n // 宿主包装对象仍持有旧 runtime 时,保留无法覆盖的只读字段。\n }\n }\n }\n attachRuntimeRef(previousRuntime.state as Record<string, any>, previousRuntime)\n target.__wevu = previousRuntime\n Object.defineProperty(target, WEVU_PUBLIC_RUNTIME_KEY, {\n value: previousRuntime,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n return previousRuntime\n}\n\nfunction createRuntimeStateSnapshot(\n runtime: RuntimeInstance<any, any, any>,\n nativeData: Record<string, any> | undefined,\n preferredState?: Record<string, any>,\n) {\n const runtimeState = runtime.state as Record<string, any>\n const setupState = runtime.setupState as Record<string, any> | undefined\n const snapshot: Record<string, any> = {}\n for (const key of Object.keys(nativeData ?? {})) {\n if (!Object.prototype.hasOwnProperty.call(runtimeState, key)) {\n continue\n }\n if (preferredState && Object.prototype.hasOwnProperty.call(preferredState, key)) {\n snapshot[key] = cloneInitialSnapshotValue(preferredState[key])\n continue\n }\n const setupBinding = setupState?.[key]\n snapshot[key] = cloneInitialSnapshotValue(isRef(setupBinding) ? setupBinding.value : runtimeState[key])\n }\n return snapshot\n}\n\nfunction syncRuntimeStateFromNativeData(\n target: InternalRuntimeState,\n options?: { includeSetupState?: boolean, nativeData?: Record<string, any> },\n) {\n const runtime = target.__wevu\n const runtimeState = runtime?.state as Record<string, any> | undefined\n const setupState = runtime?.setupState as Record<string, any> | undefined\n const nativeData = options?.nativeData ?? (target as any).data as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object' || !nativeData || typeof nativeData !== 'object') {\n return\n }\n const initialRuntimeSnapshot = (runtime as any)?.__wevu_initialRuntimeSnapshot as Record<string, any> | undefined\n for (const [key, value] of Object.entries(nativeData)) {\n if (!key || key === 'undefined') {\n continue\n }\n if (Object.prototype.hasOwnProperty.call(runtimeState, key)) {\n try {\n const setupBinding = setupState?.[key]\n const runtimeValue = cloneInitialSnapshotValue(value)\n if (!options?.includeSetupState && setupState && Object.prototype.hasOwnProperty.call(setupState, key)) {\n continue\n }\n if (\n !options?.includeSetupState\n && initialRuntimeSnapshot\n && Object.prototype.hasOwnProperty.call(initialRuntimeSnapshot, key)\n && !isDeepEqualValue(runtimeState[key], initialRuntimeSnapshot[key], 20, { keys: 10_000 })\n ) {\n continue\n }\n if (\n !options?.includeSetupState\n && initialRuntimeSnapshot\n && !Object.prototype.hasOwnProperty.call(initialRuntimeSnapshot, key)\n ) {\n continue\n }\n if (isRef(setupBinding)) {\n setupBinding.value = runtimeValue\n continue\n }\n runtimeState[key] = runtimeValue\n }\n catch {\n // DevTools 热更新期间可能带入响应式 state 拒绝写入的临时 data key,跳过即可。\n }\n }\n }\n}\n\nexport function enableDeferredSetData(\n target: InternalRuntimeState,\n options?: { rehydrateSetupState?: boolean },\n) {\n const adapter = (target as any).__wevu?.adapter\n syncRuntimeStateFromNativeData(target, {\n includeSetupState: options?.rehydrateSetupState,\n })\n if (adapter && typeof (adapter as any).__wevu_enableSetData === 'function') {\n ;(adapter as any).__wevu_enableSetData(true)\n }\n ;(target as any).__wevu?.__wevu_flushSetupSnapshotSync?.()\n}\n\nexport function setRuntimeSetDataVisibility(target: InternalRuntimeState, visible: boolean) {\n const adapter = (target as any).__wevu?.adapter\n if (adapter && typeof (adapter as any).__wevu_setVisibility === 'function') {\n ;(adapter as any).__wevu_setVisibility(visible)\n }\n}\n\n/**\n * 卸载运行时实例(框架内部注册流程使用)。\n * @internal\n */\nexport function teardownRuntimeInstance(target: InternalRuntimeState, options?: { skipHooks?: boolean }) {\n const runtime = target.__wevu\n const ownerId = (target as any)[WEVU_RUNTIME_OWNER_ID_KEY]\n ?? (target as any)[WEVU_SLOT_OWNER_ID_KEY]\n if (ownerId) {\n removeOwner(ownerId)\n }\n clearTemplateRefs(target)\n // 触发卸载钩子(仅在 teardown 首次执行时触发)\n if (!options?.skipHooks && runtime && target[WEVU_HOOKS_KEY]) {\n callHookList(target, 'onUnload', [])\n }\n // 清理注册的生命周期钩子\n if (target[WEVU_HOOKS_KEY]) {\n target[WEVU_HOOKS_KEY] = undefined\n }\n const stops = target[WEVU_WATCH_STOPS_KEY]\n if (Array.isArray(stops)) {\n for (const stop of stops) {\n try {\n stop()\n }\n catch {\n // 避免 teardown 中断:单个 stop 失败不阻塞其他清理\n }\n }\n }\n target[WEVU_WATCH_STOPS_KEY] = undefined\n target[WEVU_EFFECT_SCOPE_KEY]?.stop()\n target[WEVU_EFFECT_SCOPE_KEY] = undefined\n if (runtime) {\n runtime.unmount()\n }\n delete target.__wevu\n if (WEVU_PUBLIC_RUNTIME_KEY in target) {\n delete (target as any)[WEVU_PUBLIC_RUNTIME_KEY]\n }\n}\n\n/**\n * 重建运行时实例,同时保持宿主包装对象持有的 runtime facade 身份稳定。\n * @internal\n */\nexport function refreshRuntimeInstance<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n runtimeApp: RuntimeApp<D, C, M>,\n watchMap: WatchMap | undefined,\n setup?: RuntimeSetupFunction<D, C, M>,\n options?: { snapshotOmitKeys?: string[], stateSnapshot?: Record<string, any> },\n) {\n const previousRuntime = target.__wevu as RuntimeInstance<D, C, M> | undefined\n const previousRuntimeState = previousRuntime\n ? createRuntimeStateSnapshot(previousRuntime, (target as any).data, options?.stateSnapshot)\n : undefined\n teardownRuntimeInstance(target, { skipHooks: true })\n const nextRuntime = mountRuntimeInstance(target, runtimeApp, watchMap, setup, {\n deferSetData: true,\n snapshotOmitKeys: options?.snapshotOmitKeys,\n })\n if (previousRuntimeState) {\n const nativeData = (target as any).data\n if (nativeData && typeof nativeData === 'object') {\n Object.assign(nativeData, cloneInitialSnapshotValue(previousRuntimeState))\n }\n syncRuntimeStateFromNativeData(target, {\n includeSetupState: true,\n nativeData: previousRuntimeState,\n })\n }\n if (!previousRuntime || previousRuntime === nextRuntime) {\n return nextRuntime\n }\n return preserveRuntimeFacadeIdentity(target, previousRuntime, nextRuntime)\n}\n"],"mappings":"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"}
@@ -8,7 +8,8 @@ function refreshOwnerSnapshotFromInstance(instance) {
8
8
  const ownerId = instance[WEVU_SLOT_OWNER_ID_KEY];
9
9
  if (!runtime || !ownerId || typeof runtime.snapshot !== "function") return;
10
10
  const snapshot = runtime.snapshot();
11
- mergeOwnerSnapshotProps(snapshot, (_WEVU_PROPS_KEY = instance[WEVU_PROPS_KEY]) !== null && _WEVU_PROPS_KEY !== void 0 ? _WEVU_PROPS_KEY : instance.properties);
11
+ const propsSource = (_WEVU_PROPS_KEY = instance[WEVU_PROPS_KEY]) !== null && _WEVU_PROPS_KEY !== void 0 ? _WEVU_PROPS_KEY : instance.properties;
12
+ mergeOwnerSnapshotProps(snapshot, propsSource);
12
13
  updateOwnerSnapshot(ownerId, snapshot, runtime.proxy, instance);
13
14
  }
14
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.mjs","names":[],"sources":["../../../../src/runtime/register/snapshot.ts"],"sourcesContent":["import type { InternalRuntimeState } from '../types'\nimport {\n WEVU_PROPS_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n} from '@weapp-core/constants'\nimport { mergeOwnerSnapshotProps, updateOwnerSnapshot } from '../scopedSlots'\n\nexport function refreshOwnerSnapshotFromInstance(instance: InternalRuntimeState) {\n const runtime = instance.__wevu\n const ownerId = (instance as any)[WEVU_SLOT_OWNER_ID_KEY]\n if (!runtime || !ownerId || typeof runtime.snapshot !== 'function') {\n return\n }\n const snapshot = runtime.snapshot()\n const propsSource = (instance as any)[WEVU_PROPS_KEY] ?? (instance as any).properties\n mergeOwnerSnapshotProps(snapshot, propsSource)\n updateOwnerSnapshot(ownerId, snapshot, runtime.proxy, instance)\n}\n"],"mappings":";;;;AAOA,SAAgB,iCAAiC,UAAgC;;CAC/E,MAAM,UAAU,SAAS;CACzB,MAAM,UAAW,SAAiB;CAClC,IAAI,CAAC,WAAW,CAAC,WAAW,OAAO,QAAQ,aAAa,YACtD;CAEF,MAAM,WAAW,QAAQ,SAAS;CAElC,wBAAwB,6BADH,SAAiB,4EAAoB,SAAiB,UAC9B;CAC7C,oBAAoB,SAAS,UAAU,QAAQ,OAAO,QAAQ;AAChE"}
1
+ {"version":3,"file":"snapshot.mjs","names":[],"sources":["../../../../src/runtime/register/snapshot.ts"],"sourcesContent":["import type { InternalRuntimeState } from '../types'\nimport {\n WEVU_PROPS_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n} from '@weapp-core/constants'\nimport { mergeOwnerSnapshotProps, updateOwnerSnapshot } from '../scopedSlots'\n\nexport function refreshOwnerSnapshotFromInstance(instance: InternalRuntimeState) {\n const runtime = instance.__wevu\n const ownerId = (instance as any)[WEVU_SLOT_OWNER_ID_KEY]\n if (!runtime || !ownerId || typeof runtime.snapshot !== 'function') {\n return\n }\n const snapshot = runtime.snapshot()\n const propsSource = (instance as any)[WEVU_PROPS_KEY] ?? (instance as any).properties\n mergeOwnerSnapshotProps(snapshot, propsSource)\n updateOwnerSnapshot(ownerId, snapshot, runtime.proxy, instance)\n}\n"],"mappings":";;;;AAOA,SAAgB,iCAAiC,UAAgC;;CAC/E,MAAM,UAAU,SAAS;CACzB,MAAM,UAAW,SAAiB;CAClC,IAAI,CAAC,WAAW,CAAC,WAAW,OAAO,QAAQ,aAAa,YACtD;CAEF,MAAM,WAAW,QAAQ,SAAS;CAClC,MAAM,iCAAe,SAAiB,4EAAoB,SAAiB;CAC3E,wBAAwB,UAAU,WAAW;CAC7C,oBAAoB,SAAS,UAAU,QAAQ,OAAO,QAAQ;AAChE"}
@@ -55,7 +55,7 @@ function mergeComponentRefValue(wrapper, exposed, resolveCurrent) {
55
55
  return current && typeof current === "object" ? current : source;
56
56
  };
57
57
  markRaw(wrapper);
58
- return markNoSetData(new Proxy(wrapper, {
58
+ const merged = new Proxy(wrapper, {
59
59
  get(target, key, receiver) {
60
60
  if (key === "__r_raw") return target;
61
61
  if (key === "__r_isReactive" || key === "__r_isReadonly") return false;
@@ -90,7 +90,8 @@ function mergeComponentRefValue(wrapper, exposed, resolveCurrent) {
90
90
  configurable: true
91
91
  };
92
92
  }
93
- }));
93
+ });
94
+ return markNoSetData(merged);
94
95
  }
95
96
  function resolveComponentPublicInstance(value) {
96
97
  var _instance$WEVU_PUBLIC;
@@ -217,7 +218,7 @@ function resolveComponentRefValue(target, binding) {
217
218
  if (binding.inFor) {
218
219
  if (typeof instance.selectAllComponents === "function") {
219
220
  const result = instance.selectAllComponents(binding.selector);
220
- return markNoSetData((Array.isArray(result) ? result : []).map((item, index) => {
221
+ const merged = (Array.isArray(result) ? result : []).map((item, index) => {
221
222
  const wrapper = createTemplateRefWrapper(target, binding.selector, {
222
223
  multiple: true,
223
224
  index
@@ -227,7 +228,8 @@ function resolveComponentRefValue(target, binding) {
227
228
  return resolveComponentPublicInstance(Array.isArray(current) ? current[index] : null);
228
229
  };
229
230
  return mergeComponentRefValue(wrapper, resolveComponentPublicInstance(item), resolveCurrent);
230
- }));
231
+ });
232
+ return markNoSetData(merged);
231
233
  }
232
234
  return markNoSetData([]);
233
235
  }
@@ -241,10 +243,13 @@ function resolveComponentRefValue(target, binding) {
241
243
  return mergeComponentRefValue(wrapper, publicInstance, resolveCurrent);
242
244
  }
243
245
  function buildTemplateRefValue(target, binding, result) {
244
- if (binding.inFor) return markNoSetData((Array.isArray(result) ? result : []).map((_, index) => createTemplateRefWrapper(target, binding.selector, {
245
- multiple: true,
246
- index
247
- })));
246
+ if (binding.inFor) {
247
+ const wrappers = (Array.isArray(result) ? result : []).map((_, index) => createTemplateRefWrapper(target, binding.selector, {
248
+ multiple: true,
249
+ index
250
+ }));
251
+ return markNoSetData(wrappers);
252
+ }
248
253
  if (!result) return null;
249
254
  return createTemplateRefWrapper(target, binding.selector, { multiple: false });
250
255
  }
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.mjs","names":[],"sources":["../../../../src/runtime/templateRefs/helpers.ts"],"sourcesContent":["import type { Ref } from '../../reactivity'\nimport type { TemplateRefBinding } from '../templateRefs'\nimport type {\n InternalRuntimeState,\n MiniProgramNodesRef,\n MiniProgramNodesRefFields,\n MiniProgramSelectorQuery,\n} from '../types'\nimport {\n WEVU_EXPOSED_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_READY_CALLED_KEY,\n WEVU_TEMPLATE_REF_MAP_KEY,\n} from '@weapp-core/constants'\nimport { isRef, markRaw } from '../../reactivity'\nimport { ReactiveFlags } from '../../reactivity/reactive'\nimport { markNoSetData } from '../noSetData'\nimport { getCurrentMiniProgramRuntimeCapabilities, getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from '../platform'\n\ntype TemplateRefTarget\n = | { type: 'function', fn: (value: any) => void }\n | { type: 'ref', ref: Ref<any> }\n | { type: 'name', name: string }\n | { type: 'skip' }\n\nexport type TemplateRefMap = Map<string, Ref<any>>\n\nexport function isComponentRef(binding: TemplateRefBinding) {\n return binding.kind === 'component'\n}\n\nfunction proxyRefs<T extends Record<string, any>>(target: T): T {\n return new Proxy(target, {\n get(obj, key, receiver) {\n const value = Reflect.get(obj, key, receiver) as unknown\n return isRef(value) ? value.value : value\n },\n set(obj, key, value, receiver) {\n const current = (obj as any)[key]\n if (isRef(current) && !isRef(value)) {\n current.value = value\n return true\n }\n return Reflect.set(obj, key, value, receiver)\n },\n })\n}\n\nfunction getExposeProxy(target: any, exposed: Record<string, any>) {\n const existing = target.__wevuExposeProxy\n if (existing && target.__wevuExposeRaw === exposed) {\n return existing\n }\n const proxy = proxyRefs(exposed)\n try {\n Object.defineProperty(target, '__wevuExposeProxy', {\n value: proxy,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n Object.defineProperty(target, '__wevuExposeRaw', {\n value: exposed,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n target.__wevuExposeProxy = proxy\n target.__wevuExposeRaw = exposed\n }\n return proxy\n}\n\nfunction mergeComponentRefValue(\n wrapper: Record<string, any>,\n exposed: unknown,\n resolveCurrent?: () => unknown,\n) {\n if ((!exposed || typeof exposed !== 'object') && !resolveCurrent) {\n return wrapper\n }\n const source = exposed && typeof exposed === 'object'\n ? exposed as Record<string, any>\n : Object.create(null) as Record<string, any>\n const getSource = () => {\n const current = resolveCurrent?.()\n return current && typeof current === 'object'\n ? current as Record<string, any>\n : source\n }\n markRaw(wrapper)\n const merged = new Proxy(wrapper, {\n get(target, key, receiver) {\n if (key === ReactiveFlags.RAW) {\n return target\n }\n if (key === ReactiveFlags.IS_REACTIVE || key === ReactiveFlags.IS_READONLY) {\n return false\n }\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key, receiver)\n }\n const currentSource = getSource()\n const value = currentSource[key as keyof typeof currentSource]\n if (typeof value === 'function') {\n return value.bind(currentSource)\n }\n return value\n },\n set(target, key, value, receiver) {\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value, receiver)\n }\n const currentSource = getSource()\n if (key in currentSource) {\n currentSource[key as keyof typeof currentSource] = value\n return true\n }\n currentSource[key as keyof typeof currentSource] = value\n return true\n },\n has(target, key) {\n return Reflect.has(target, key) || key in getSource()\n },\n ownKeys(target) {\n return [...new Set([...Reflect.ownKeys(target), ...Reflect.ownKeys(getSource())])]\n },\n getOwnPropertyDescriptor(target, key) {\n if (Reflect.has(target, key)) {\n return Object.getOwnPropertyDescriptor(target, key)\n }\n const descriptor = Object.getOwnPropertyDescriptor(getSource(), key)\n if (!descriptor) {\n return descriptor\n }\n return {\n ...descriptor,\n configurable: true,\n }\n },\n })\n return markNoSetData(merged)\n}\n\nfunction resolveComponentPublicInstance(value: any) {\n if (!value || typeof value !== 'object') {\n return value ?? null\n }\n const instance = value as any\n if (instance.__wevu && !instance[WEVU_READY_CALLED_KEY]) {\n return null\n }\n const exposed = instance[WEVU_EXPOSED_KEY]\n if (exposed && typeof exposed === 'object') {\n return getExposeProxy(instance, exposed as Record<string, any>)\n }\n if (instance[WEVU_PUBLIC_RUNTIME_KEY]?.proxy) {\n return instance[WEVU_PUBLIC_RUNTIME_KEY].proxy\n }\n return value\n}\n\nexport function getTemplateRefMap(target: InternalRuntimeState): TemplateRefMap | undefined {\n return (target as any)[WEVU_TEMPLATE_REF_MAP_KEY] as TemplateRefMap | undefined\n}\n\nexport function updateTemplateRefMapValue(\n refMap: TemplateRefMap | undefined,\n name: string,\n value: any,\n) {\n if (!refMap) {\n return\n }\n const entry = refMap.get(name)\n if (entry) {\n entry.value = value\n }\n}\n\nexport function resolveTemplateRefTarget(\n target: InternalRuntimeState,\n binding: TemplateRefBinding,\n evaluationTarget: InternalRuntimeState = target,\n): TemplateRefTarget {\n const proxy = evaluationTarget.__wevu?.proxy ?? evaluationTarget\n let resolved: unknown\n if (binding.get) {\n try {\n resolved = binding.get.call(proxy)\n }\n catch {\n resolved = undefined\n }\n }\n if (resolved == null && binding.name) {\n const setupBinding = target.__wevu?.setupState?.[binding.name]\n if (isRef(setupBinding) || typeof setupBinding === 'function') {\n resolved = setupBinding\n }\n }\n if (resolved == null && binding.name) {\n resolved = binding.name\n }\n if (typeof resolved === 'function') {\n return { type: 'function', fn: resolved as (value: any) => void }\n }\n if (isRef(resolved)) {\n return { type: 'ref', ref: resolved as Ref<any> }\n }\n if (typeof resolved === 'string' && resolved) {\n return { type: 'name', name: resolved }\n }\n if (binding.name) {\n return { type: 'name', name: binding.name }\n }\n return { type: 'skip' }\n}\n\nexport function ensureRefsContainer(target: InternalRuntimeState): Record<string, any> {\n const runtimeState = (target.__wevu?.state ?? target) as Record<string, any>\n const existing = runtimeState.$refs\n if (existing && typeof existing === 'object') {\n return existing as Record<string, any>\n }\n const refs = markNoSetData(Object.create(null))\n Object.defineProperty(runtimeState, '$refs', {\n value: refs,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n return refs\n}\n\nexport function createSelectorQuery(target: InternalRuntimeState): MiniProgramSelectorQuery | null {\n const instance = target as any\n if (instance && typeof instance.createSelectorQuery === 'function') {\n return instance.createSelectorQuery()\n }\n if (!supportsCurrentMiniProgramRuntimeCapability('globalCreateSelectorQuery')) {\n return null\n }\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (miniProgramGlobal && typeof miniProgramGlobal.createSelectorQuery === 'function') {\n const query = miniProgramGlobal.createSelectorQuery()\n if (!query) {\n return null\n }\n if (getCurrentMiniProgramRuntimeCapabilities().selectorQueryScopeByIn && typeof (query as any).in === 'function') {\n return (query as any).in(instance)\n }\n return query\n }\n return null\n}\n\nfunction runQuery<T>(\n target: InternalRuntimeState,\n selector: string,\n options: { multiple: boolean, index?: number },\n apply: (nodesRef: MiniProgramNodesRef) => void,\n cb?: (value: T | null) => void,\n): Promise<T | null> {\n const query = createSelectorQuery(target)\n if (!query) {\n const fallback = null\n if (cb) {\n cb(fallback)\n }\n return Promise.resolve(fallback)\n }\n const nodesRef = options.multiple ? query.selectAll(selector) : query.select(selector)\n apply(nodesRef)\n return new Promise((resolve) => {\n query.exec((res) => {\n let result: any = Array.isArray(res) ? res[0] : null\n if (options.index != null && Array.isArray(result)) {\n result = result[options.index] ?? null\n }\n if (cb) {\n cb(result ?? null)\n }\n resolve(result ?? null)\n })\n })\n}\n\nfunction createTemplateRefWrapper(\n target: InternalRuntimeState,\n selector: string,\n options: { multiple: boolean, index?: number },\n) {\n const wrapper = {\n selector,\n boundingClientRect: (cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.boundingClientRect(), cb)\n },\n scrollOffset: (cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.scrollOffset(), cb)\n },\n fields: (fields: MiniProgramNodesRefFields, cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.fields(fields as any), cb)\n },\n node: (cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.node(), cb)\n },\n }\n return markNoSetData(wrapper)\n}\n\nexport function resolveComponentRefValue(\n target: InternalRuntimeState,\n binding: TemplateRefBinding,\n) {\n const instance = target as any\n if (!instance) {\n return binding.inFor ? markNoSetData([]) : null\n }\n if (binding.inFor) {\n if (typeof instance.selectAllComponents === 'function') {\n const result = instance.selectAllComponents(binding.selector)\n const items = Array.isArray(result) ? result : []\n const merged = items.map((item, index) => {\n const wrapper = createTemplateRefWrapper(target, binding.selector, { multiple: true, index })\n const resolveCurrent = () => {\n const current = instance.selectAllComponents(binding.selector)\n return resolveComponentPublicInstance(Array.isArray(current) ? current[index] : null)\n }\n return mergeComponentRefValue(wrapper as Record<string, any>, resolveComponentPublicInstance(item), resolveCurrent)\n })\n return markNoSetData(merged)\n }\n return markNoSetData([])\n }\n const wrapper = createTemplateRefWrapper(target, binding.selector, { multiple: false })\n if (typeof instance.selectComponent !== 'function') {\n return wrapper\n }\n const result = instance.selectComponent(binding.selector)\n if (!result) {\n return null\n }\n const publicInstance = resolveComponentPublicInstance(result)\n if (!publicInstance) {\n return null\n }\n const resolveCurrent = () => resolveComponentPublicInstance(instance.selectComponent(binding.selector))\n return mergeComponentRefValue(wrapper as Record<string, any>, publicInstance, resolveCurrent)\n}\n\nexport function buildTemplateRefValue(\n target: InternalRuntimeState,\n binding: TemplateRefBinding,\n result: unknown,\n) {\n if (binding.inFor) {\n const items = Array.isArray(result) ? result : []\n const wrappers = items.map((_, index) => createTemplateRefWrapper(target, binding.selector, { multiple: true, index }))\n return markNoSetData(wrappers)\n }\n if (!result) {\n return null\n }\n return createTemplateRefWrapper(target, binding.selector, { multiple: false })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.mjs","names":[],"sources":["../../../../src/runtime/templateRefs/helpers.ts"],"sourcesContent":["import type { Ref } from '../../reactivity'\nimport type { TemplateRefBinding } from '../templateRefs'\nimport type {\n InternalRuntimeState,\n MiniProgramNodesRef,\n MiniProgramNodesRefFields,\n MiniProgramSelectorQuery,\n} from '../types'\nimport {\n WEVU_EXPOSED_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_READY_CALLED_KEY,\n WEVU_TEMPLATE_REF_MAP_KEY,\n} from '@weapp-core/constants'\nimport { isRef, markRaw } from '../../reactivity'\nimport { ReactiveFlags } from '../../reactivity/reactive'\nimport { markNoSetData } from '../noSetData'\nimport { getCurrentMiniProgramRuntimeCapabilities, getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from '../platform'\n\ntype TemplateRefTarget\n = | { type: 'function', fn: (value: any) => void }\n | { type: 'ref', ref: Ref<any> }\n | { type: 'name', name: string }\n | { type: 'skip' }\n\nexport type TemplateRefMap = Map<string, Ref<any>>\n\nexport function isComponentRef(binding: TemplateRefBinding) {\n return binding.kind === 'component'\n}\n\nfunction proxyRefs<T extends Record<string, any>>(target: T): T {\n return new Proxy(target, {\n get(obj, key, receiver) {\n const value = Reflect.get(obj, key, receiver) as unknown\n return isRef(value) ? value.value : value\n },\n set(obj, key, value, receiver) {\n const current = (obj as any)[key]\n if (isRef(current) && !isRef(value)) {\n current.value = value\n return true\n }\n return Reflect.set(obj, key, value, receiver)\n },\n })\n}\n\nfunction getExposeProxy(target: any, exposed: Record<string, any>) {\n const existing = target.__wevuExposeProxy\n if (existing && target.__wevuExposeRaw === exposed) {\n return existing\n }\n const proxy = proxyRefs(exposed)\n try {\n Object.defineProperty(target, '__wevuExposeProxy', {\n value: proxy,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n Object.defineProperty(target, '__wevuExposeRaw', {\n value: exposed,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n target.__wevuExposeProxy = proxy\n target.__wevuExposeRaw = exposed\n }\n return proxy\n}\n\nfunction mergeComponentRefValue(\n wrapper: Record<string, any>,\n exposed: unknown,\n resolveCurrent?: () => unknown,\n) {\n if ((!exposed || typeof exposed !== 'object') && !resolveCurrent) {\n return wrapper\n }\n const source = exposed && typeof exposed === 'object'\n ? exposed as Record<string, any>\n : Object.create(null) as Record<string, any>\n const getSource = () => {\n const current = resolveCurrent?.()\n return current && typeof current === 'object'\n ? current as Record<string, any>\n : source\n }\n markRaw(wrapper)\n const merged = new Proxy(wrapper, {\n get(target, key, receiver) {\n if (key === ReactiveFlags.RAW) {\n return target\n }\n if (key === ReactiveFlags.IS_REACTIVE || key === ReactiveFlags.IS_READONLY) {\n return false\n }\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key, receiver)\n }\n const currentSource = getSource()\n const value = currentSource[key as keyof typeof currentSource]\n if (typeof value === 'function') {\n return value.bind(currentSource)\n }\n return value\n },\n set(target, key, value, receiver) {\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value, receiver)\n }\n const currentSource = getSource()\n if (key in currentSource) {\n currentSource[key as keyof typeof currentSource] = value\n return true\n }\n currentSource[key as keyof typeof currentSource] = value\n return true\n },\n has(target, key) {\n return Reflect.has(target, key) || key in getSource()\n },\n ownKeys(target) {\n return [...new Set([...Reflect.ownKeys(target), ...Reflect.ownKeys(getSource())])]\n },\n getOwnPropertyDescriptor(target, key) {\n if (Reflect.has(target, key)) {\n return Object.getOwnPropertyDescriptor(target, key)\n }\n const descriptor = Object.getOwnPropertyDescriptor(getSource(), key)\n if (!descriptor) {\n return descriptor\n }\n return {\n ...descriptor,\n configurable: true,\n }\n },\n })\n return markNoSetData(merged)\n}\n\nfunction resolveComponentPublicInstance(value: any) {\n if (!value || typeof value !== 'object') {\n return value ?? null\n }\n const instance = value as any\n if (instance.__wevu && !instance[WEVU_READY_CALLED_KEY]) {\n return null\n }\n const exposed = instance[WEVU_EXPOSED_KEY]\n if (exposed && typeof exposed === 'object') {\n return getExposeProxy(instance, exposed as Record<string, any>)\n }\n if (instance[WEVU_PUBLIC_RUNTIME_KEY]?.proxy) {\n return instance[WEVU_PUBLIC_RUNTIME_KEY].proxy\n }\n return value\n}\n\nexport function getTemplateRefMap(target: InternalRuntimeState): TemplateRefMap | undefined {\n return (target as any)[WEVU_TEMPLATE_REF_MAP_KEY] as TemplateRefMap | undefined\n}\n\nexport function updateTemplateRefMapValue(\n refMap: TemplateRefMap | undefined,\n name: string,\n value: any,\n) {\n if (!refMap) {\n return\n }\n const entry = refMap.get(name)\n if (entry) {\n entry.value = value\n }\n}\n\nexport function resolveTemplateRefTarget(\n target: InternalRuntimeState,\n binding: TemplateRefBinding,\n evaluationTarget: InternalRuntimeState = target,\n): TemplateRefTarget {\n const proxy = evaluationTarget.__wevu?.proxy ?? evaluationTarget\n let resolved: unknown\n if (binding.get) {\n try {\n resolved = binding.get.call(proxy)\n }\n catch {\n resolved = undefined\n }\n }\n if (resolved == null && binding.name) {\n const setupBinding = target.__wevu?.setupState?.[binding.name]\n if (isRef(setupBinding) || typeof setupBinding === 'function') {\n resolved = setupBinding\n }\n }\n if (resolved == null && binding.name) {\n resolved = binding.name\n }\n if (typeof resolved === 'function') {\n return { type: 'function', fn: resolved as (value: any) => void }\n }\n if (isRef(resolved)) {\n return { type: 'ref', ref: resolved as Ref<any> }\n }\n if (typeof resolved === 'string' && resolved) {\n return { type: 'name', name: resolved }\n }\n if (binding.name) {\n return { type: 'name', name: binding.name }\n }\n return { type: 'skip' }\n}\n\nexport function ensureRefsContainer(target: InternalRuntimeState): Record<string, any> {\n const runtimeState = (target.__wevu?.state ?? target) as Record<string, any>\n const existing = runtimeState.$refs\n if (existing && typeof existing === 'object') {\n return existing as Record<string, any>\n }\n const refs = markNoSetData(Object.create(null))\n Object.defineProperty(runtimeState, '$refs', {\n value: refs,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n return refs\n}\n\nexport function createSelectorQuery(target: InternalRuntimeState): MiniProgramSelectorQuery | null {\n const instance = target as any\n if (instance && typeof instance.createSelectorQuery === 'function') {\n return instance.createSelectorQuery()\n }\n if (!supportsCurrentMiniProgramRuntimeCapability('globalCreateSelectorQuery')) {\n return null\n }\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (miniProgramGlobal && typeof miniProgramGlobal.createSelectorQuery === 'function') {\n const query = miniProgramGlobal.createSelectorQuery()\n if (!query) {\n return null\n }\n if (getCurrentMiniProgramRuntimeCapabilities().selectorQueryScopeByIn && typeof (query as any).in === 'function') {\n return (query as any).in(instance)\n }\n return query\n }\n return null\n}\n\nfunction runQuery<T>(\n target: InternalRuntimeState,\n selector: string,\n options: { multiple: boolean, index?: number },\n apply: (nodesRef: MiniProgramNodesRef) => void,\n cb?: (value: T | null) => void,\n): Promise<T | null> {\n const query = createSelectorQuery(target)\n if (!query) {\n const fallback = null\n if (cb) {\n cb(fallback)\n }\n return Promise.resolve(fallback)\n }\n const nodesRef = options.multiple ? query.selectAll(selector) : query.select(selector)\n apply(nodesRef)\n return new Promise((resolve) => {\n query.exec((res) => {\n let result: any = Array.isArray(res) ? res[0] : null\n if (options.index != null && Array.isArray(result)) {\n result = result[options.index] ?? null\n }\n if (cb) {\n cb(result ?? null)\n }\n resolve(result ?? null)\n })\n })\n}\n\nfunction createTemplateRefWrapper(\n target: InternalRuntimeState,\n selector: string,\n options: { multiple: boolean, index?: number },\n) {\n const wrapper = {\n selector,\n boundingClientRect: (cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.boundingClientRect(), cb)\n },\n scrollOffset: (cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.scrollOffset(), cb)\n },\n fields: (fields: MiniProgramNodesRefFields, cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.fields(fields as any), cb)\n },\n node: (cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.node(), cb)\n },\n }\n return markNoSetData(wrapper)\n}\n\nexport function resolveComponentRefValue(\n target: InternalRuntimeState,\n binding: TemplateRefBinding,\n) {\n const instance = target as any\n if (!instance) {\n return binding.inFor ? markNoSetData([]) : null\n }\n if (binding.inFor) {\n if (typeof instance.selectAllComponents === 'function') {\n const result = instance.selectAllComponents(binding.selector)\n const items = Array.isArray(result) ? result : []\n const merged = items.map((item, index) => {\n const wrapper = createTemplateRefWrapper(target, binding.selector, { multiple: true, index })\n const resolveCurrent = () => {\n const current = instance.selectAllComponents(binding.selector)\n return resolveComponentPublicInstance(Array.isArray(current) ? current[index] : null)\n }\n return mergeComponentRefValue(wrapper as Record<string, any>, resolveComponentPublicInstance(item), resolveCurrent)\n })\n return markNoSetData(merged)\n }\n return markNoSetData([])\n }\n const wrapper = createTemplateRefWrapper(target, binding.selector, { multiple: false })\n if (typeof instance.selectComponent !== 'function') {\n return wrapper\n }\n const result = instance.selectComponent(binding.selector)\n if (!result) {\n return null\n }\n const publicInstance = resolveComponentPublicInstance(result)\n if (!publicInstance) {\n return null\n }\n const resolveCurrent = () => resolveComponentPublicInstance(instance.selectComponent(binding.selector))\n return mergeComponentRefValue(wrapper as Record<string, any>, publicInstance, resolveCurrent)\n}\n\nexport function buildTemplateRefValue(\n target: InternalRuntimeState,\n binding: TemplateRefBinding,\n result: unknown,\n) {\n if (binding.inFor) {\n const items = Array.isArray(result) ? result : []\n const wrappers = items.map((_, index) => createTemplateRefWrapper(target, binding.selector, { multiple: true, index }))\n return markNoSetData(wrappers)\n }\n if (!result) {\n return null\n }\n return createTemplateRefWrapper(target, binding.selector, { multiple: false })\n}\n"],"mappings":"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"}
@@ -35,9 +35,10 @@ function updateTemplateRefs(target, onResolved, assignmentTarget = target) {
35
35
  const value = entry.value;
36
36
  const resolved = resolveTemplateRefTarget(assignmentTarget, binding, target);
37
37
  if (resolved.type === "function") {
38
- if (binding.inFor && Array.isArray(value)) if (value.length) value.forEach((item) => resolved.fn.call(proxy, item));
39
- else resolved.fn.call(proxy, null);
40
- else resolved.fn.call(proxy, value !== null && value !== void 0 ? value : null);
38
+ if (binding.inFor && Array.isArray(value)) {
39
+ if (value.length) value.forEach((item) => resolved.fn.call(proxy, item));
40
+ else resolved.fn.call(proxy, null);
41
+ } else resolved.fn.call(proxy, value !== null && value !== void 0 ? value : null);
41
42
  return;
42
43
  }
43
44
  if (resolved.type === "ref") {
@@ -1 +1 @@
1
- {"version":3,"file":"templateRefs.mjs","names":[],"sources":["../../../src/runtime/templateRefs.ts"],"sourcesContent":["import type { InternalRuntimeState } from './types'\nimport {\n WEVU_READY_CALLED_KEY,\n WEVU_TEMPLATE_REFS_CALLBACKS_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n WEVU_TEMPLATE_REFS_PENDING_KEY,\n} from '@weapp-core/constants'\nimport { nextTick } from '../scheduler'\nimport { markNoSetData } from './noSetData'\nimport {\n buildTemplateRefValue,\n createSelectorQuery,\n ensureRefsContainer,\n getTemplateRefMap,\n isComponentRef,\n resolveComponentRefValue,\n resolveTemplateRefTarget,\n updateTemplateRefMapValue,\n} from './templateRefs/helpers'\n\nexport interface TemplateRefBinding {\n selector: string\n inFor: boolean\n name?: string\n get?: () => unknown\n kind?: 'component' | 'element'\n}\n\ntype TemplateRefUpdateCallback = () => void\n\nexport function updateTemplateRefs(\n target: InternalRuntimeState,\n onResolved?: TemplateRefUpdateCallback,\n assignmentTarget: InternalRuntimeState = target,\n) {\n const bindings = (target as any)[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings || !bindings.length) {\n onResolved?.()\n return\n }\n if (!(target as any)[WEVU_READY_CALLED_KEY]) {\n onResolved?.()\n return\n }\n if (!target.__wevu) {\n onResolved?.()\n return\n }\n const templateRefMap = getTemplateRefMap(assignmentTarget)\n const nodeBindings = bindings.filter(binding => !isComponentRef(binding))\n const componentEntries = bindings\n .filter(binding => isComponentRef(binding))\n .map(binding => ({\n binding,\n value: resolveComponentRefValue(target, binding),\n }))\n\n const applyEntries = (entries: Array<{ binding: TemplateRefBinding, value: any }>) => {\n const refsContainer = ensureRefsContainer(assignmentTarget)\n const nameEntries = new Map<string, { values: any[], count: number, hasFor: boolean }>()\n const nextNames = new Set<string>()\n const proxy = target.__wevu?.proxy ?? target\n entries.forEach((entry) => {\n const binding = entry.binding\n const value = entry.value\n const resolved = resolveTemplateRefTarget(assignmentTarget, binding, target)\n\n if (resolved.type === 'function') {\n if (binding.inFor && Array.isArray(value)) {\n if (value.length) {\n value.forEach(item => resolved.fn.call(proxy, item))\n }\n else {\n resolved.fn.call(proxy, null)\n }\n }\n else {\n resolved.fn.call(proxy, value ?? null)\n }\n return\n }\n\n if (resolved.type === 'ref') {\n resolved.ref.value = value\n return\n }\n\n if (resolved.type === 'name') {\n nextNames.add(resolved.name)\n const entry = nameEntries.get(resolved.name) ?? { values: [], count: 0, hasFor: false }\n entry.count += 1\n entry.hasFor = entry.hasFor || binding.inFor\n if (binding.inFor) {\n if (Array.isArray(value)) {\n entry.values.push(...value)\n }\n }\n else if (value != null) {\n entry.values.push(value)\n }\n nameEntries.set(resolved.name, entry)\n }\n })\n\n for (const [name, entry] of nameEntries) {\n let nextValue: any\n if (!entry.values.length) {\n nextValue = entry.hasFor ? markNoSetData([]) : null\n }\n else if (entry.hasFor || entry.values.length > 1 || entry.count > 1) {\n nextValue = markNoSetData(entry.values)\n }\n else {\n nextValue = entry.values[0]\n }\n refsContainer[name] = nextValue\n updateTemplateRefMapValue(templateRefMap, name, nextValue)\n }\n\n for (const key of Object.keys(refsContainer)) {\n if (!nextNames.has(key)) {\n delete refsContainer[key]\n }\n }\n\n onResolved?.()\n }\n\n if (!nodeBindings.length) {\n applyEntries(componentEntries)\n return\n }\n\n const query = createSelectorQuery(target)\n if (!query) {\n applyEntries(componentEntries)\n return\n }\n\n const nodeEntries: Array<{ binding: TemplateRefBinding }> = []\n for (const binding of nodeBindings) {\n const nodesRef = binding.inFor ? query.selectAll(binding.selector) : query.select(binding.selector)\n nodesRef.boundingClientRect()\n nodeEntries.push({ binding })\n }\n\n query.exec((res) => {\n const entries = nodeEntries.map((entry, index) => {\n const rawResult = Array.isArray(res) ? res[index] : null\n return {\n binding: entry.binding,\n value: buildTemplateRefValue(target, entry.binding, rawResult),\n }\n })\n applyEntries([...componentEntries, ...entries])\n })\n}\n\nexport function scheduleTemplateRefUpdate(\n target: InternalRuntimeState,\n onResolved?: TemplateRefUpdateCallback,\n assignmentTarget: InternalRuntimeState = target,\n) {\n const bindings = (target as any)[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings || !bindings.length) {\n onResolved?.()\n return\n }\n if (onResolved) {\n const callbacks = ((target as any)[WEVU_TEMPLATE_REFS_CALLBACKS_KEY] ?? []) as TemplateRefUpdateCallback[]\n callbacks.push(onResolved)\n if (!(target as any)[WEVU_TEMPLATE_REFS_CALLBACKS_KEY]) {\n Object.defineProperty(target, WEVU_TEMPLATE_REFS_CALLBACKS_KEY, {\n value: callbacks,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n }\n if ((target as any)[WEVU_TEMPLATE_REFS_PENDING_KEY]) {\n return\n }\n ;(target as any)[WEVU_TEMPLATE_REFS_PENDING_KEY] = true\n nextTick(() => {\n ;(target as any)[WEVU_TEMPLATE_REFS_PENDING_KEY] = false\n const flushCallbacks = () => {\n const callbacks = (target as any)[WEVU_TEMPLATE_REFS_CALLBACKS_KEY] as TemplateRefUpdateCallback[] | undefined\n if (!callbacks || !callbacks.length) {\n return\n }\n callbacks.splice(0).forEach((cb) => {\n try {\n cb()\n }\n catch {\n // 忽略回调中的异常,避免影响后续更新\n }\n })\n }\n updateTemplateRefs(target, flushCallbacks, assignmentTarget)\n })\n}\n\nexport function clearTemplateRefs(\n target: InternalRuntimeState,\n assignmentTarget: InternalRuntimeState = target,\n) {\n const bindings = (target as any)[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings || !bindings.length) {\n return\n }\n const refsContainer = ensureRefsContainer(assignmentTarget)\n const proxy = target.__wevu?.proxy ?? target\n const nextNames = new Set<string>()\n const templateRefMap = getTemplateRefMap(assignmentTarget)\n\n for (const binding of bindings) {\n const resolved = resolveTemplateRefTarget(assignmentTarget, binding, target)\n const emptyValue = binding.inFor ? markNoSetData([]) : null\n if (resolved.type === 'function') {\n resolved.fn.call(proxy, null)\n continue\n }\n if (resolved.type === 'ref') {\n resolved.ref.value = emptyValue\n continue\n }\n if (resolved.type === 'name') {\n nextNames.add(resolved.name)\n refsContainer[resolved.name] = emptyValue\n updateTemplateRefMapValue(templateRefMap, resolved.name, emptyValue)\n }\n }\n\n for (const key of Object.keys(refsContainer)) {\n if (!nextNames.has(key)) {\n delete refsContainer[key]\n }\n }\n}\n"],"mappings":";;;;;;AA8BA,SAAgB,mBACd,QACA,YACA,mBAAyC,QACzC;CACA,MAAM,WAAY,OAAe;CACjC,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ;EACjC,2DAAa;EACb;CACF;CACA,IAAI,CAAE,OAAe,wBAAwB;EAC3C,2DAAa;EACb;CACF;CACA,IAAI,CAAC,OAAO,QAAQ;EAClB,2DAAa;EACb;CACF;CACA,MAAM,iBAAiB,kBAAkB,gBAAgB;CACzD,MAAM,eAAe,SAAS,QAAO,YAAW,CAAC,eAAe,OAAO,CAAC;CACxE,MAAM,mBAAmB,SACtB,QAAO,YAAW,eAAe,OAAO,CAAC,CAAC,CAC1C,KAAI,aAAY;EACf;EACA,OAAO,yBAAyB,QAAQ,OAAO;CACjD,EAAE;CAEJ,MAAM,gBAAgB,YAAgE;;EACpF,MAAM,gBAAgB,oBAAoB,gBAAgB;EAC1D,MAAM,8BAAc,IAAI,IAA+D;EACvF,MAAM,4BAAY,IAAI,IAAY;EAClC,MAAM,kDAAQ,OAAO,wEAAQ,4EAAS;EACtC,QAAQ,SAAS,UAAU;GACzB,MAAM,UAAU,MAAM;GACtB,MAAM,QAAQ,MAAM;GACpB,MAAM,WAAW,yBAAyB,kBAAkB,SAAS,MAAM;GAE3E,IAAI,SAAS,SAAS,YAAY;IAChC,IAAI,QAAQ,SAAS,MAAM,QAAQ,KAAK,GACtC,IAAI,MAAM,QACR,MAAM,SAAQ,SAAQ,SAAS,GAAG,KAAK,OAAO,IAAI,CAAC;SAGnD,SAAS,GAAG,KAAK,OAAO,IAAI;SAI9B,SAAS,GAAG,KAAK,OAAO,6CAAS,IAAI;IAEvC;GACF;GAEA,IAAI,SAAS,SAAS,OAAO;IAC3B,SAAS,IAAI,QAAQ;IACrB;GACF;GAEA,IAAI,SAAS,SAAS,QAAQ;;IAC5B,UAAU,IAAI,SAAS,IAAI;IAC3B,MAAM,4BAAQ,YAAY,IAAI,SAAS,IAAI,gEAAK;KAAE,QAAQ,CAAC;KAAG,OAAO;KAAG,QAAQ;IAAM;IACtF,MAAM,SAAS;IACf,MAAM,SAAS,MAAM,UAAU,QAAQ;IACvC,IAAI,QAAQ,OACV;SAAI,MAAM,QAAQ,KAAK,GACrB,MAAM,OAAO,KAAK,GAAG,KAAK;IAC5B,OAEG,IAAI,SAAS,MAChB,MAAM,OAAO,KAAK,KAAK;IAEzB,YAAY,IAAI,SAAS,MAAM,KAAK;GACtC;EACF,CAAC;EAED,KAAK,MAAM,CAAC,MAAM,UAAU,aAAa;GACvC,IAAI;GACJ,IAAI,CAAC,MAAM,OAAO,QAChB,YAAY,MAAM,SAAS,cAAc,CAAC,CAAC,IAAI;QAE5C,IAAI,MAAM,UAAU,MAAM,OAAO,SAAS,KAAK,MAAM,QAAQ,GAChE,YAAY,cAAc,MAAM,MAAM;QAGtC,YAAY,MAAM,OAAO;GAE3B,cAAc,QAAQ;GACtB,0BAA0B,gBAAgB,MAAM,SAAS;EAC3D;EAEA,KAAK,MAAM,OAAO,OAAO,KAAK,aAAa,GACzC,IAAI,CAAC,UAAU,IAAI,GAAG,GACpB,OAAO,cAAc;EAIzB,2DAAa;CACf;CAEA,IAAI,CAAC,aAAa,QAAQ;EACxB,aAAa,gBAAgB;EAC7B;CACF;CAEA,MAAM,QAAQ,oBAAoB,MAAM;CACxC,IAAI,CAAC,OAAO;EACV,aAAa,gBAAgB;EAC7B;CACF;CAEA,MAAM,cAAsD,CAAC;CAC7D,KAAK,MAAM,WAAW,cAAc;EAElC,CADiB,QAAQ,QAAQ,MAAM,UAAU,QAAQ,QAAQ,IAAI,MAAM,OAAO,QAAQ,QAAQ,EAC1F,CAAC,mBAAmB;EAC5B,YAAY,KAAK,EAAE,QAAQ,CAAC;CAC9B;CAEA,MAAM,MAAM,QAAQ;EAClB,MAAM,UAAU,YAAY,KAAK,OAAO,UAAU;GAChD,MAAM,YAAY,MAAM,QAAQ,GAAG,IAAI,IAAI,SAAS;GACpD,OAAO;IACL,SAAS,MAAM;IACf,OAAO,sBAAsB,QAAQ,MAAM,SAAS,SAAS;GAC/D;EACF,CAAC;EACD,aAAa,CAAC,GAAG,kBAAkB,GAAG,OAAO,CAAC;CAChD,CAAC;AACH;AAEA,SAAgB,0BACd,QACA,YACA,mBAAyC,QACzC;CACA,MAAM,WAAY,OAAe;CACjC,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ;EACjC,2DAAa;EACb;CACF;CACA,IAAI,YAAY;;EACd,MAAM,qCAAc,OAAe,0GAAqC,CAAC;EACzE,UAAU,KAAK,UAAU;EACzB,IAAI,CAAE,OAAe,mCACnB,OAAO,eAAe,QAAQ,kCAAkC;GAC9D,OAAO;GACP,cAAc;GACd,YAAY;GACZ,UAAU;EACZ,CAAC;CAEL;CACA,IAAK,OAAe,iCAClB;CAED,AAAC,OAAe,kCAAkC;CACnD,eAAe;EACZ,AAAC,OAAe,kCAAkC;EACnD,MAAM,uBAAuB;GAC3B,MAAM,YAAa,OAAe;GAClC,IAAI,CAAC,aAAa,CAAC,UAAU,QAC3B;GAEF,UAAU,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO;IAClC,IAAI;KACF,GAAG;IACL,kBACM,CAEN;GACF,CAAC;EACH;EACA,mBAAmB,QAAQ,gBAAgB,gBAAgB;CAC7D,CAAC;AACH;AAEA,SAAgB,kBACd,QACA,mBAAyC,QACzC;;CACA,MAAM,WAAY,OAAe;CACjC,IAAI,CAAC,YAAY,CAAC,SAAS,QACzB;CAEF,MAAM,gBAAgB,oBAAoB,gBAAgB;CAC1D,MAAM,oDAAQ,OAAO,0EAAQ,8EAAS;CACtC,MAAM,4BAAY,IAAI,IAAY;CAClC,MAAM,iBAAiB,kBAAkB,gBAAgB;CAEzD,KAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,WAAW,yBAAyB,kBAAkB,SAAS,MAAM;EAC3E,MAAM,aAAa,QAAQ,QAAQ,cAAc,CAAC,CAAC,IAAI;EACvD,IAAI,SAAS,SAAS,YAAY;GAChC,SAAS,GAAG,KAAK,OAAO,IAAI;GAC5B;EACF;EACA,IAAI,SAAS,SAAS,OAAO;GAC3B,SAAS,IAAI,QAAQ;GACrB;EACF;EACA,IAAI,SAAS,SAAS,QAAQ;GAC5B,UAAU,IAAI,SAAS,IAAI;GAC3B,cAAc,SAAS,QAAQ;GAC/B,0BAA0B,gBAAgB,SAAS,MAAM,UAAU;EACrE;CACF;CAEA,KAAK,MAAM,OAAO,OAAO,KAAK,aAAa,GACzC,IAAI,CAAC,UAAU,IAAI,GAAG,GACpB,OAAO,cAAc;AAG3B"}
1
+ {"version":3,"file":"templateRefs.mjs","names":[],"sources":["../../../src/runtime/templateRefs.ts"],"sourcesContent":["import type { InternalRuntimeState } from './types'\nimport {\n WEVU_READY_CALLED_KEY,\n WEVU_TEMPLATE_REFS_CALLBACKS_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n WEVU_TEMPLATE_REFS_PENDING_KEY,\n} from '@weapp-core/constants'\nimport { nextTick } from '../scheduler'\nimport { markNoSetData } from './noSetData'\nimport {\n buildTemplateRefValue,\n createSelectorQuery,\n ensureRefsContainer,\n getTemplateRefMap,\n isComponentRef,\n resolveComponentRefValue,\n resolveTemplateRefTarget,\n updateTemplateRefMapValue,\n} from './templateRefs/helpers'\n\nexport interface TemplateRefBinding {\n selector: string\n inFor: boolean\n name?: string\n get?: () => unknown\n kind?: 'component' | 'element'\n}\n\ntype TemplateRefUpdateCallback = () => void\n\nexport function updateTemplateRefs(\n target: InternalRuntimeState,\n onResolved?: TemplateRefUpdateCallback,\n assignmentTarget: InternalRuntimeState = target,\n) {\n const bindings = (target as any)[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings || !bindings.length) {\n onResolved?.()\n return\n }\n if (!(target as any)[WEVU_READY_CALLED_KEY]) {\n onResolved?.()\n return\n }\n if (!target.__wevu) {\n onResolved?.()\n return\n }\n const templateRefMap = getTemplateRefMap(assignmentTarget)\n const nodeBindings = bindings.filter(binding => !isComponentRef(binding))\n const componentEntries = bindings\n .filter(binding => isComponentRef(binding))\n .map(binding => ({\n binding,\n value: resolveComponentRefValue(target, binding),\n }))\n\n const applyEntries = (entries: Array<{ binding: TemplateRefBinding, value: any }>) => {\n const refsContainer = ensureRefsContainer(assignmentTarget)\n const nameEntries = new Map<string, { values: any[], count: number, hasFor: boolean }>()\n const nextNames = new Set<string>()\n const proxy = target.__wevu?.proxy ?? target\n entries.forEach((entry) => {\n const binding = entry.binding\n const value = entry.value\n const resolved = resolveTemplateRefTarget(assignmentTarget, binding, target)\n\n if (resolved.type === 'function') {\n if (binding.inFor && Array.isArray(value)) {\n if (value.length) {\n value.forEach(item => resolved.fn.call(proxy, item))\n }\n else {\n resolved.fn.call(proxy, null)\n }\n }\n else {\n resolved.fn.call(proxy, value ?? null)\n }\n return\n }\n\n if (resolved.type === 'ref') {\n resolved.ref.value = value\n return\n }\n\n if (resolved.type === 'name') {\n nextNames.add(resolved.name)\n const entry = nameEntries.get(resolved.name) ?? { values: [], count: 0, hasFor: false }\n entry.count += 1\n entry.hasFor = entry.hasFor || binding.inFor\n if (binding.inFor) {\n if (Array.isArray(value)) {\n entry.values.push(...value)\n }\n }\n else if (value != null) {\n entry.values.push(value)\n }\n nameEntries.set(resolved.name, entry)\n }\n })\n\n for (const [name, entry] of nameEntries) {\n let nextValue: any\n if (!entry.values.length) {\n nextValue = entry.hasFor ? markNoSetData([]) : null\n }\n else if (entry.hasFor || entry.values.length > 1 || entry.count > 1) {\n nextValue = markNoSetData(entry.values)\n }\n else {\n nextValue = entry.values[0]\n }\n refsContainer[name] = nextValue\n updateTemplateRefMapValue(templateRefMap, name, nextValue)\n }\n\n for (const key of Object.keys(refsContainer)) {\n if (!nextNames.has(key)) {\n delete refsContainer[key]\n }\n }\n\n onResolved?.()\n }\n\n if (!nodeBindings.length) {\n applyEntries(componentEntries)\n return\n }\n\n const query = createSelectorQuery(target)\n if (!query) {\n applyEntries(componentEntries)\n return\n }\n\n const nodeEntries: Array<{ binding: TemplateRefBinding }> = []\n for (const binding of nodeBindings) {\n const nodesRef = binding.inFor ? query.selectAll(binding.selector) : query.select(binding.selector)\n nodesRef.boundingClientRect()\n nodeEntries.push({ binding })\n }\n\n query.exec((res) => {\n const entries = nodeEntries.map((entry, index) => {\n const rawResult = Array.isArray(res) ? res[index] : null\n return {\n binding: entry.binding,\n value: buildTemplateRefValue(target, entry.binding, rawResult),\n }\n })\n applyEntries([...componentEntries, ...entries])\n })\n}\n\nexport function scheduleTemplateRefUpdate(\n target: InternalRuntimeState,\n onResolved?: TemplateRefUpdateCallback,\n assignmentTarget: InternalRuntimeState = target,\n) {\n const bindings = (target as any)[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings || !bindings.length) {\n onResolved?.()\n return\n }\n if (onResolved) {\n const callbacks = ((target as any)[WEVU_TEMPLATE_REFS_CALLBACKS_KEY] ?? []) as TemplateRefUpdateCallback[]\n callbacks.push(onResolved)\n if (!(target as any)[WEVU_TEMPLATE_REFS_CALLBACKS_KEY]) {\n Object.defineProperty(target, WEVU_TEMPLATE_REFS_CALLBACKS_KEY, {\n value: callbacks,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n }\n if ((target as any)[WEVU_TEMPLATE_REFS_PENDING_KEY]) {\n return\n }\n ;(target as any)[WEVU_TEMPLATE_REFS_PENDING_KEY] = true\n nextTick(() => {\n ;(target as any)[WEVU_TEMPLATE_REFS_PENDING_KEY] = false\n const flushCallbacks = () => {\n const callbacks = (target as any)[WEVU_TEMPLATE_REFS_CALLBACKS_KEY] as TemplateRefUpdateCallback[] | undefined\n if (!callbacks || !callbacks.length) {\n return\n }\n callbacks.splice(0).forEach((cb) => {\n try {\n cb()\n }\n catch {\n // 忽略回调中的异常,避免影响后续更新\n }\n })\n }\n updateTemplateRefs(target, flushCallbacks, assignmentTarget)\n })\n}\n\nexport function clearTemplateRefs(\n target: InternalRuntimeState,\n assignmentTarget: InternalRuntimeState = target,\n) {\n const bindings = (target as any)[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings || !bindings.length) {\n return\n }\n const refsContainer = ensureRefsContainer(assignmentTarget)\n const proxy = target.__wevu?.proxy ?? target\n const nextNames = new Set<string>()\n const templateRefMap = getTemplateRefMap(assignmentTarget)\n\n for (const binding of bindings) {\n const resolved = resolveTemplateRefTarget(assignmentTarget, binding, target)\n const emptyValue = binding.inFor ? markNoSetData([]) : null\n if (resolved.type === 'function') {\n resolved.fn.call(proxy, null)\n continue\n }\n if (resolved.type === 'ref') {\n resolved.ref.value = emptyValue\n continue\n }\n if (resolved.type === 'name') {\n nextNames.add(resolved.name)\n refsContainer[resolved.name] = emptyValue\n updateTemplateRefMapValue(templateRefMap, resolved.name, emptyValue)\n }\n }\n\n for (const key of Object.keys(refsContainer)) {\n if (!nextNames.has(key)) {\n delete refsContainer[key]\n }\n }\n}\n"],"mappings":";;;;;;AA8BA,SAAgB,mBACd,QACA,YACA,mBAAyC,QACzC;CACA,MAAM,WAAY,OAAe;CACjC,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ;EACjC,2DAAa;EACb;CACF;CACA,IAAI,CAAE,OAAe,wBAAwB;EAC3C,2DAAa;EACb;CACF;CACA,IAAI,CAAC,OAAO,QAAQ;EAClB,2DAAa;EACb;CACF;CACA,MAAM,iBAAiB,kBAAkB,gBAAgB;CACzD,MAAM,eAAe,SAAS,QAAO,YAAW,CAAC,eAAe,OAAO,CAAC;CACxE,MAAM,mBAAmB,SACtB,QAAO,YAAW,eAAe,OAAO,CAAC,CAAC,CAC1C,KAAI,aAAY;EACf;EACA,OAAO,yBAAyB,QAAQ,OAAO;CACjD,EAAE;CAEJ,MAAM,gBAAgB,YAAgE;;EACpF,MAAM,gBAAgB,oBAAoB,gBAAgB;EAC1D,MAAM,8BAAc,IAAI,IAA+D;EACvF,MAAM,4BAAY,IAAI,IAAY;EAClC,MAAM,kDAAQ,OAAO,wEAAQ,4EAAS;EACtC,QAAQ,SAAS,UAAU;GACzB,MAAM,UAAU,MAAM;GACtB,MAAM,QAAQ,MAAM;GACpB,MAAM,WAAW,yBAAyB,kBAAkB,SAAS,MAAM;GAE3E,IAAI,SAAS,SAAS,YAAY;IAChC,IAAI,QAAQ,SAAS,MAAM,QAAQ,KAAK,GAAG;KACzC,IAAI,MAAM,QACR,MAAM,SAAQ,SAAQ,SAAS,GAAG,KAAK,OAAO,IAAI,CAAC;UAGnD,SAAS,GAAG,KAAK,OAAO,IAAI;IAEhC,OAEE,SAAS,GAAG,KAAK,OAAO,6CAAS,IAAI;IAEvC;GACF;GAEA,IAAI,SAAS,SAAS,OAAO;IAC3B,SAAS,IAAI,QAAQ;IACrB;GACF;GAEA,IAAI,SAAS,SAAS,QAAQ;;IAC5B,UAAU,IAAI,SAAS,IAAI;IAC3B,MAAM,4BAAQ,YAAY,IAAI,SAAS,IAAI,gEAAK;KAAE,QAAQ,CAAC;KAAG,OAAO;KAAG,QAAQ;IAAM;IACtF,MAAM,SAAS;IACf,MAAM,SAAS,MAAM,UAAU,QAAQ;IACvC,IAAI,QAAQ,OACV;SAAI,MAAM,QAAQ,KAAK,GACrB,MAAM,OAAO,KAAK,GAAG,KAAK;IAC5B,OAEG,IAAI,SAAS,MAChB,MAAM,OAAO,KAAK,KAAK;IAEzB,YAAY,IAAI,SAAS,MAAM,KAAK;GACtC;EACF,CAAC;EAED,KAAK,MAAM,CAAC,MAAM,UAAU,aAAa;GACvC,IAAI;GACJ,IAAI,CAAC,MAAM,OAAO,QAChB,YAAY,MAAM,SAAS,cAAc,CAAC,CAAC,IAAI;QAE5C,IAAI,MAAM,UAAU,MAAM,OAAO,SAAS,KAAK,MAAM,QAAQ,GAChE,YAAY,cAAc,MAAM,MAAM;QAGtC,YAAY,MAAM,OAAO;GAE3B,cAAc,QAAQ;GACtB,0BAA0B,gBAAgB,MAAM,SAAS;EAC3D;EAEA,KAAK,MAAM,OAAO,OAAO,KAAK,aAAa,GACzC,IAAI,CAAC,UAAU,IAAI,GAAG,GACpB,OAAO,cAAc;EAIzB,2DAAa;CACf;CAEA,IAAI,CAAC,aAAa,QAAQ;EACxB,aAAa,gBAAgB;EAC7B;CACF;CAEA,MAAM,QAAQ,oBAAoB,MAAM;CACxC,IAAI,CAAC,OAAO;EACV,aAAa,gBAAgB;EAC7B;CACF;CAEA,MAAM,cAAsD,CAAC;CAC7D,KAAK,MAAM,WAAW,cAAc;EAElC,CADiB,QAAQ,QAAQ,MAAM,UAAU,QAAQ,QAAQ,IAAI,MAAM,OAAO,QAAQ,QAAQ,EAC1F,CAAC,mBAAmB;EAC5B,YAAY,KAAK,EAAE,QAAQ,CAAC;CAC9B;CAEA,MAAM,MAAM,QAAQ;EAClB,MAAM,UAAU,YAAY,KAAK,OAAO,UAAU;GAChD,MAAM,YAAY,MAAM,QAAQ,GAAG,IAAI,IAAI,SAAS;GACpD,OAAO;IACL,SAAS,MAAM;IACf,OAAO,sBAAsB,QAAQ,MAAM,SAAS,SAAS;GAC/D;EACF,CAAC;EACD,aAAa,CAAC,GAAG,kBAAkB,GAAG,OAAO,CAAC;CAChD,CAAC;AACH;AAEA,SAAgB,0BACd,QACA,YACA,mBAAyC,QACzC;CACA,MAAM,WAAY,OAAe;CACjC,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ;EACjC,2DAAa;EACb;CACF;CACA,IAAI,YAAY;;EACd,MAAM,qCAAc,OAAe,0GAAqC,CAAC;EACzE,UAAU,KAAK,UAAU;EACzB,IAAI,CAAE,OAAe,mCACnB,OAAO,eAAe,QAAQ,kCAAkC;GAC9D,OAAO;GACP,cAAc;GACd,YAAY;GACZ,UAAU;EACZ,CAAC;CAEL;CACA,IAAK,OAAe,iCAClB;CAED,AAAC,OAAe,kCAAkC;CACnD,eAAe;EACZ,AAAC,OAAe,kCAAkC;EACnD,MAAM,uBAAuB;GAC3B,MAAM,YAAa,OAAe;GAClC,IAAI,CAAC,aAAa,CAAC,UAAU,QAC3B;GAEF,UAAU,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO;IAClC,IAAI;KACF,GAAG;IACL,kBACM,CAEN;GACF,CAAC;EACH;EACA,mBAAmB,QAAQ,gBAAgB,gBAAgB;CAC7D,CAAC;AACH;AAEA,SAAgB,kBACd,QACA,mBAAyC,QACzC;;CACA,MAAM,WAAY,OAAe;CACjC,IAAI,CAAC,YAAY,CAAC,SAAS,QACzB;CAEF,MAAM,gBAAgB,oBAAoB,gBAAgB;CAC1D,MAAM,oDAAQ,OAAO,0EAAQ,8EAAS;CACtC,MAAM,4BAAY,IAAI,IAAY;CAClC,MAAM,iBAAiB,kBAAkB,gBAAgB;CAEzD,KAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,WAAW,yBAAyB,kBAAkB,SAAS,MAAM;EAC3E,MAAM,aAAa,QAAQ,QAAQ,cAAc,CAAC,CAAC,IAAI;EACvD,IAAI,SAAS,SAAS,YAAY;GAChC,SAAS,GAAG,KAAK,OAAO,IAAI;GAC5B;EACF;EACA,IAAI,SAAS,SAAS,OAAO;GAC3B,SAAS,IAAI,QAAQ;GACrB;EACF;EACA,IAAI,SAAS,SAAS,QAAQ;GAC5B,UAAU,IAAI,SAAS,IAAI;GAC3B,cAAc,SAAS,QAAQ;GAC/B,0BAA0B,gBAAgB,SAAS,MAAM,UAAU;EACrE;CACF;CAEA,KAAK,MAAM,OAAO,OAAO,KAAK,aAAa,GACzC,IAAI,CAAC,UAAU,IAAI,GAAG,GACpB,OAAO,cAAc;AAG3B"}
@@ -88,7 +88,8 @@ function useBindModel(defaultOptions) {
88
88
  ...defaultOptions,
89
89
  ...options
90
90
  };
91
- const handlerKey = `on${capitalize((_merged$event = merged === null || merged === void 0 ? void 0 : merged.event) !== null && _merged$event !== void 0 ? _merged$event : "input")}`;
91
+ const eventName = (_merged$event = merged === null || merged === void 0 ? void 0 : merged.event) !== null && _merged$event !== void 0 ? _merged$event : "input";
92
+ const handlerKey = `on${capitalize(eventName)}`;
92
93
  return bindModel.model(path, options)[handlerKey];
93
94
  };
94
95
  return bindModel;
@@ -1 +1 @@
1
- {"version":3,"file":"model.mjs","names":[],"sources":["../../../../src/runtime/vueCompat/model.ts"],"sourcesContent":["import type { Ref } from '../../reactivity'\nimport type {\n ModelBinding,\n ModelBindingOptions,\n ModelBindingPayload,\n} from '../types'\nimport { customRef } from '../../reactivity/ref'\nimport { capitalize } from '../../utils'\nimport { getCurrentInstance, getCurrentSetupContext } from '../hooks'\n\nexport type ModelModifiers<M extends PropertyKey = string> = Record<M, true | undefined>\nexport type ModelRef<T, M extends PropertyKey = string, G = T, S = T> = Ref<G, S> & [ModelRef<T, M, G, S>, ModelModifiers<M>]\n\nexport interface UseModelOptions<T, M extends PropertyKey = string, G = T, S = T> {\n get?: (value: T, modifiers: ModelModifiers<M>) => G\n set?: (value: S, modifiers: ModelModifiers<M>) => T\n}\n\nconst EMPTY_MODEL_MODIFIERS = Object.freeze(Object.create(null)) as ModelModifiers<any>\n\nfunction resolveModelModifiers<M extends PropertyKey = string>(\n props: Record<string, any>,\n name: string,\n): ModelModifiers<M> {\n const key = name === 'modelValue' ? 'modelModifiers' : `${name}Modifiers`\n const modifiers = props?.[key]\n if (!modifiers || typeof modifiers !== 'object') {\n return EMPTY_MODEL_MODIFIERS as ModelModifiers<M>\n }\n return modifiers as ModelModifiers<M>\n}\n\nfunction attachModelTuple<T, M extends PropertyKey = string, G = T, S = T>(\n model: Ref<G, S>,\n getModifiers: () => ModelModifiers<M>,\n): ModelRef<T, M, G, S> {\n const tupleModel = model as ModelRef<T, M, G, S>\n try {\n Object.defineProperty(tupleModel, Symbol.iterator, {\n configurable: true,\n value: () => {\n let index = 0\n return {\n next: () => {\n if (index === 0) {\n index += 1\n return { value: tupleModel, done: false }\n }\n if (index === 1) {\n index += 1\n return { value: getModifiers(), done: false }\n }\n return { value: undefined, done: true }\n },\n }\n },\n })\n }\n catch {\n // 忽略 defineProperty 失败场景,降级为普通 Ref 返回\n }\n return tupleModel\n}\n\nexport function useModel<T = any, M extends PropertyKey = string>(\n props: Record<string, any>,\n name: string,\n): ModelRef<T, M, T, T>\nexport function useModel<T = any, M extends PropertyKey = string, G = T, S = T>(\n props: Record<string, any>,\n name: string,\n options: UseModelOptions<T, M, G, S>,\n): ModelRef<T, M, G, S>\nexport function useModel<T = any, M extends PropertyKey = string, G = T, S = T>(\n props: Record<string, any>,\n name: string,\n options: UseModelOptions<T, M, G, S> = {},\n): ModelRef<T, M, G, S> {\n const ctx = getCurrentSetupContext<any>()\n if (!ctx) {\n throw new Error('useModel() 必须在 setup() 的同步阶段调用')\n }\n\n const emit: ((event: string, ...args: any[]) => void) | undefined = ctx.emit\n const eventName = `update:${name}`\n const getModifiers = () => resolveModelModifiers<M>(props, name)\n const model = customRef<G>({\n get: () => {\n const rawValue = (props as any)?.[name] as T\n if (!options.get) {\n return rawValue as unknown as G\n }\n return options.get(rawValue, getModifiers())\n },\n set: (value: G) => {\n const nextValue = options.set\n ? options.set(value as unknown as S, getModifiers())\n : (value as unknown as T)\n emit?.(eventName, nextValue)\n },\n })\n return attachModelTuple<T, M, G, S>(model, getModifiers)\n}\n\n/**\n * useBindModel 返回绑定到当前运行时实例的 bindModel。\n * 该方法必须在 setup() 的同步阶段调用。\n */\ntype BindModelWithHelper<\n DefaultEvent extends string = 'input',\n DefaultValueProp extends string = 'value',\n> = (<T = any>(path: string, options?: ModelBindingOptions<T>) => ModelBinding<T>) & {\n model: <T = any, Event extends string = DefaultEvent, ValueProp extends string = DefaultValueProp, Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, Event, ValueProp, Formatted>,\n ) => ModelBindingPayload<T, Event, ValueProp, Formatted>\n value: <T = any, Event extends string = DefaultEvent, ValueProp extends string = DefaultValueProp, Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, Event, ValueProp, Formatted>,\n ) => Formatted\n on: <T = any, Event extends string = DefaultEvent, ValueProp extends string = DefaultValueProp, Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, Event, ValueProp, Formatted>,\n ) => (event: any) => void\n}\n\nexport function useBindModel<\n DefaultEvent extends string = 'input',\n DefaultValueProp extends string = 'value',\n>(defaultOptions?: ModelBindingOptions<any, DefaultEvent, DefaultValueProp, any>) {\n const instance = getCurrentInstance()\n if (!instance?.__wevu || typeof instance.__wevu.bindModel !== 'function') {\n throw new Error('useBindModel() 必须在 setup() 的同步阶段调用')\n }\n const rawBindModel = instance.__wevu.bindModel.bind(instance.__wevu) as <T = any>(\n path: string,\n options?: ModelBindingOptions<T>,\n ) => ModelBinding<T>\n const bindModel: BindModelWithHelper<DefaultEvent, DefaultValueProp> = (<T = any>(path: string, options?: ModelBindingOptions<T>) => {\n if (!defaultOptions) {\n return rawBindModel(path, options)\n }\n const merged = {\n ...(defaultOptions as ModelBindingOptions<T, DefaultEvent, DefaultValueProp, any>),\n ...(options as ModelBindingOptions<T, DefaultEvent, DefaultValueProp, any>),\n } as ModelBindingOptions<T>\n return rawBindModel(path, merged)\n }) as BindModelWithHelper<DefaultEvent, DefaultValueProp>\n\n bindModel.model = (path, options) => bindModel(path).model(options)\n bindModel.value = (path, options) => {\n const merged = { ...defaultOptions, ...options } as ModelBindingOptions<any>\n const valueProp = merged?.valueProp ?? 'value'\n const payload = bindModel.model(path, options) as Record<string, any>\n return payload[valueProp]\n }\n bindModel.on = (path, options) => {\n const merged = { ...defaultOptions, ...options } as ModelBindingOptions<any>\n const eventName = merged?.event ?? 'input'\n const handlerKey = `on${capitalize(eventName)}`\n const payload = bindModel.model(path, options) as Record<string, any>\n return payload[handlerKey]\n }\n\n return bindModel\n}\n\n/**\n * useChangeModel 返回以 change 事件为默认更新事件的 model 绑定助手。\n */\nexport function useChangeModel() {\n const bindModel = useBindModel({ event: 'change' })\n\n return function changeModel<T = any, ValueProp extends string = 'value', Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, 'change', ValueProp, Formatted>,\n ): ModelBindingPayload<T, 'change', ValueProp, Formatted> {\n return bindModel.model<T, 'change', ValueProp, Formatted>(path, options)\n }\n}\n\nexport function mergeModels<T>(a: T, b: T): T {\n if (a == null) {\n return b\n }\n if (b == null) {\n return a\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n return [...new Set([...a, ...b])] as any\n }\n if (typeof a === 'object' && typeof b === 'object') {\n return { ...(a as any), ...(b as any) }\n }\n return b\n}\n"],"mappings":";;;;;AAkBA,MAAM,wBAAwB,OAAO,OAAO,OAAO,OAAO,IAAI,CAAC;AAE/D,SAAS,sBACP,OACA,MACmB;CACnB,MAAM,MAAM,SAAS,eAAe,mBAAmB,GAAG,KAAK;CAC/D,MAAM,0DAAY,MAAQ;CAC1B,IAAI,CAAC,aAAa,OAAO,cAAc,UACrC,OAAO;CAET,OAAO;AACT;AAEA,SAAS,iBACP,OACA,cACsB;CACtB,MAAM,aAAa;CACnB,IAAI;EACF,OAAO,eAAe,YAAY,OAAO,UAAU;GACjD,cAAc;GACd,aAAa;IACX,IAAI,QAAQ;IACZ,OAAO,EACL,YAAY;KACV,IAAI,UAAU,GAAG;MACf,SAAS;MACT,OAAO;OAAE,OAAO;OAAY,MAAM;MAAM;KAC1C;KACA,IAAI,UAAU,GAAG;MACf,SAAS;MACT,OAAO;OAAE,OAAO,aAAa;OAAG,MAAM;MAAM;KAC9C;KACA,OAAO;MAAE,OAAO;MAAW,MAAM;KAAK;IACxC,EACF;GACF;EACF,CAAC;CACH,kBACM,CAEN;CACA,OAAO;AACT;AAWA,SAAgB,SACd,OACA,MACA,UAAuC,CAAC,GAClB;CACtB,MAAM,MAAM,uBAA4B;CACxC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,gCAAgC;CAGlD,MAAM,OAA8D,IAAI;CACxE,MAAM,YAAY,UAAU;CAC5B,MAAM,qBAAqB,sBAAyB,OAAO,IAAI;CAgB/D,OAAO,iBAfO,UAAa;EACzB,WAAW;GACT,MAAM,yDAAY,MAAgB;GAClC,IAAI,CAAC,QAAQ,KACX,OAAO;GAET,OAAO,QAAQ,IAAI,UAAU,aAAa,CAAC;EAC7C;EACA,MAAM,UAAa;GACjB,MAAM,YAAY,QAAQ,MACtB,QAAQ,IAAI,OAAuB,aAAa,CAAC,IAChD;GACL,yCAAO,WAAW,SAAS;EAC7B;CACF,CACwC,GAAG,YAAY;AACzD;AAwBA,SAAgB,aAGd,gBAAgF;CAChF,MAAM,WAAW,mBAAmB;CACpC,IAAI,sDAAC,SAAU,WAAU,OAAO,SAAS,OAAO,cAAc,YAC5D,MAAM,IAAI,MAAM,oCAAoC;CAEtD,MAAM,eAAe,SAAS,OAAO,UAAU,KAAK,SAAS,MAAM;CAInE,MAAM,cAA4E,MAAc,YAAqC;EACnI,IAAI,CAAC,gBACH,OAAO,aAAa,MAAM,OAAO;EAEnC,MAAM,SAAS;GACb,GAAI;GACJ,GAAI;EACN;EACA,OAAO,aAAa,MAAM,MAAM;CAClC;CAEA,UAAU,SAAS,MAAM,YAAY,UAAU,IAAI,CAAC,CAAC,MAAM,OAAO;CAClE,UAAU,SAAS,MAAM,YAAY;;EACnC,MAAM,SAAS;GAAE,GAAG;GAAgB,GAAG;EAAQ;EAC/C,MAAM,iFAAY,OAAQ,0EAAa;EAEvC,OADgB,UAAU,MAAM,MAAM,OACzB,CAAC,CAAC;CACjB;CACA,UAAU,MAAM,MAAM,YAAY;;EAChC,MAAM,SAAS;GAAE,GAAG;GAAgB,GAAG;EAAQ;EAE/C,MAAM,aAAa,KAAK,4EADN,OAAQ,8DAAS,OACS;EAE5C,OADgB,UAAU,MAAM,MAAM,OACzB,CAAC,CAAC;CACjB;CAEA,OAAO;AACT;;;;AAKA,SAAgB,iBAAiB;CAC/B,MAAM,YAAY,aAAa,EAAE,OAAO,SAAS,CAAC;CAElD,OAAO,SAAS,YACd,MACA,SACwD;EACxD,OAAO,UAAU,MAAyC,MAAM,OAAO;CACzE;AACF;AAEA,SAAgB,YAAe,GAAM,GAAS;CAC5C,IAAI,KAAK,MACP,OAAO;CAET,IAAI,KAAK,MACP,OAAO;CAET,IAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GACrC,OAAO,CAAC,mBAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;CAElC,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM,UACxC,OAAO;EAAE,GAAI;EAAW,GAAI;CAAU;CAExC,OAAO;AACT"}
1
+ {"version":3,"file":"model.mjs","names":[],"sources":["../../../../src/runtime/vueCompat/model.ts"],"sourcesContent":["import type { Ref } from '../../reactivity'\nimport type {\n ModelBinding,\n ModelBindingOptions,\n ModelBindingPayload,\n} from '../types'\nimport { customRef } from '../../reactivity/ref'\nimport { capitalize } from '../../utils'\nimport { getCurrentInstance, getCurrentSetupContext } from '../hooks'\n\nexport type ModelModifiers<M extends PropertyKey = string> = Record<M, true | undefined>\nexport type ModelRef<T, M extends PropertyKey = string, G = T, S = T> = Ref<G, S> & [ModelRef<T, M, G, S>, ModelModifiers<M>]\n\nexport interface UseModelOptions<T, M extends PropertyKey = string, G = T, S = T> {\n get?: (value: T, modifiers: ModelModifiers<M>) => G\n set?: (value: S, modifiers: ModelModifiers<M>) => T\n}\n\nconst EMPTY_MODEL_MODIFIERS = Object.freeze(Object.create(null)) as ModelModifiers<any>\n\nfunction resolveModelModifiers<M extends PropertyKey = string>(\n props: Record<string, any>,\n name: string,\n): ModelModifiers<M> {\n const key = name === 'modelValue' ? 'modelModifiers' : `${name}Modifiers`\n const modifiers = props?.[key]\n if (!modifiers || typeof modifiers !== 'object') {\n return EMPTY_MODEL_MODIFIERS as ModelModifiers<M>\n }\n return modifiers as ModelModifiers<M>\n}\n\nfunction attachModelTuple<T, M extends PropertyKey = string, G = T, S = T>(\n model: Ref<G, S>,\n getModifiers: () => ModelModifiers<M>,\n): ModelRef<T, M, G, S> {\n const tupleModel = model as ModelRef<T, M, G, S>\n try {\n Object.defineProperty(tupleModel, Symbol.iterator, {\n configurable: true,\n value: () => {\n let index = 0\n return {\n next: () => {\n if (index === 0) {\n index += 1\n return { value: tupleModel, done: false }\n }\n if (index === 1) {\n index += 1\n return { value: getModifiers(), done: false }\n }\n return { value: undefined, done: true }\n },\n }\n },\n })\n }\n catch {\n // 忽略 defineProperty 失败场景,降级为普通 Ref 返回\n }\n return tupleModel\n}\n\nexport function useModel<T = any, M extends PropertyKey = string>(\n props: Record<string, any>,\n name: string,\n): ModelRef<T, M, T, T>\nexport function useModel<T = any, M extends PropertyKey = string, G = T, S = T>(\n props: Record<string, any>,\n name: string,\n options: UseModelOptions<T, M, G, S>,\n): ModelRef<T, M, G, S>\nexport function useModel<T = any, M extends PropertyKey = string, G = T, S = T>(\n props: Record<string, any>,\n name: string,\n options: UseModelOptions<T, M, G, S> = {},\n): ModelRef<T, M, G, S> {\n const ctx = getCurrentSetupContext<any>()\n if (!ctx) {\n throw new Error('useModel() 必须在 setup() 的同步阶段调用')\n }\n\n const emit: ((event: string, ...args: any[]) => void) | undefined = ctx.emit\n const eventName = `update:${name}`\n const getModifiers = () => resolveModelModifiers<M>(props, name)\n const model = customRef<G>({\n get: () => {\n const rawValue = (props as any)?.[name] as T\n if (!options.get) {\n return rawValue as unknown as G\n }\n return options.get(rawValue, getModifiers())\n },\n set: (value: G) => {\n const nextValue = options.set\n ? options.set(value as unknown as S, getModifiers())\n : (value as unknown as T)\n emit?.(eventName, nextValue)\n },\n })\n return attachModelTuple<T, M, G, S>(model, getModifiers)\n}\n\n/**\n * useBindModel 返回绑定到当前运行时实例的 bindModel。\n * 该方法必须在 setup() 的同步阶段调用。\n */\ntype BindModelWithHelper<\n DefaultEvent extends string = 'input',\n DefaultValueProp extends string = 'value',\n> = (<T = any>(path: string, options?: ModelBindingOptions<T>) => ModelBinding<T>) & {\n model: <T = any, Event extends string = DefaultEvent, ValueProp extends string = DefaultValueProp, Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, Event, ValueProp, Formatted>,\n ) => ModelBindingPayload<T, Event, ValueProp, Formatted>\n value: <T = any, Event extends string = DefaultEvent, ValueProp extends string = DefaultValueProp, Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, Event, ValueProp, Formatted>,\n ) => Formatted\n on: <T = any, Event extends string = DefaultEvent, ValueProp extends string = DefaultValueProp, Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, Event, ValueProp, Formatted>,\n ) => (event: any) => void\n}\n\nexport function useBindModel<\n DefaultEvent extends string = 'input',\n DefaultValueProp extends string = 'value',\n>(defaultOptions?: ModelBindingOptions<any, DefaultEvent, DefaultValueProp, any>) {\n const instance = getCurrentInstance()\n if (!instance?.__wevu || typeof instance.__wevu.bindModel !== 'function') {\n throw new Error('useBindModel() 必须在 setup() 的同步阶段调用')\n }\n const rawBindModel = instance.__wevu.bindModel.bind(instance.__wevu) as <T = any>(\n path: string,\n options?: ModelBindingOptions<T>,\n ) => ModelBinding<T>\n const bindModel: BindModelWithHelper<DefaultEvent, DefaultValueProp> = (<T = any>(path: string, options?: ModelBindingOptions<T>) => {\n if (!defaultOptions) {\n return rawBindModel(path, options)\n }\n const merged = {\n ...(defaultOptions as ModelBindingOptions<T, DefaultEvent, DefaultValueProp, any>),\n ...(options as ModelBindingOptions<T, DefaultEvent, DefaultValueProp, any>),\n } as ModelBindingOptions<T>\n return rawBindModel(path, merged)\n }) as BindModelWithHelper<DefaultEvent, DefaultValueProp>\n\n bindModel.model = (path, options) => bindModel(path).model(options)\n bindModel.value = (path, options) => {\n const merged = { ...defaultOptions, ...options } as ModelBindingOptions<any>\n const valueProp = merged?.valueProp ?? 'value'\n const payload = bindModel.model(path, options) as Record<string, any>\n return payload[valueProp]\n }\n bindModel.on = (path, options) => {\n const merged = { ...defaultOptions, ...options } as ModelBindingOptions<any>\n const eventName = merged?.event ?? 'input'\n const handlerKey = `on${capitalize(eventName)}`\n const payload = bindModel.model(path, options) as Record<string, any>\n return payload[handlerKey]\n }\n\n return bindModel\n}\n\n/**\n * useChangeModel 返回以 change 事件为默认更新事件的 model 绑定助手。\n */\nexport function useChangeModel() {\n const bindModel = useBindModel({ event: 'change' })\n\n return function changeModel<T = any, ValueProp extends string = 'value', Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, 'change', ValueProp, Formatted>,\n ): ModelBindingPayload<T, 'change', ValueProp, Formatted> {\n return bindModel.model<T, 'change', ValueProp, Formatted>(path, options)\n }\n}\n\nexport function mergeModels<T>(a: T, b: T): T {\n if (a == null) {\n return b\n }\n if (b == null) {\n return a\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n return [...new Set([...a, ...b])] as any\n }\n if (typeof a === 'object' && typeof b === 'object') {\n return { ...(a as any), ...(b as any) }\n }\n return b\n}\n"],"mappings":"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"}
@@ -44,22 +44,24 @@ function createOptionsStyleStore(id, options, manager) {
44
44
  const store = {};
45
45
  for (const key of Object.getOwnPropertyNames(base.api)) {
46
46
  const d = Object.getOwnPropertyDescriptor(base.api, key);
47
- if (d) if (key === "$state") Object.defineProperty(store, key, {
48
- enumerable: d.enumerable,
49
- configurable: d.configurable,
50
- get() {
51
- return base.api.$state;
52
- },
53
- set(v) {
54
- isPatching = true;
55
- try {
56
- base.api.$state = v;
57
- } finally {
58
- isPatching = false;
47
+ if (d) {
48
+ if (key === "$state") Object.defineProperty(store, key, {
49
+ enumerable: d.enumerable,
50
+ configurable: d.configurable,
51
+ get() {
52
+ return base.api.$state;
53
+ },
54
+ set(v) {
55
+ isPatching = true;
56
+ try {
57
+ base.api.$state = v;
58
+ } finally {
59
+ isPatching = false;
60
+ }
59
61
  }
60
- }
61
- });
62
- else Object.defineProperty(store, key, d);
62
+ });
63
+ else Object.defineProperty(store, key, d);
64
+ }
63
65
  }
64
66
  const getterDefs = (_options$getters = options.getters) !== null && _options$getters !== void 0 ? _options$getters : {};
65
67
  Object.keys(getterDefs).forEach((key) => {
@@ -1 +1 @@
1
- {"version":3,"file":"optionsStyle.mjs","names":[],"sources":["../../../../src/store/define/optionsStyle.ts"],"sourcesContent":["import { computed, effect, reactive, toRaw, touchReactive } from '../../reactivity'\nimport { wrapAction } from '../actions'\nimport { createBaseApi } from '../base'\nimport { cloneDeep, resetObject } from '../utils'\nimport { createSafeNotifier } from './shared'\n\nexport function createOptionsStyleStore(id: string, options: any, manager: any) {\n const rawState = options.state ? options.state() : {}\n const state = reactive(rawState)\n const initialSnapshot = cloneDeep(toRaw(rawState))\n let notify: (type: any) => void = () => {}\n const base = createBaseApi<typeof state>(id, state, t => notify(t), () => {\n resetObject(state as any, initialSnapshot)\n notify('patch object')\n })\n\n let isPatching = false\n const rawPatch = base.api.$patch\n base.api.$patch = (patch: Partial<typeof state> | ((nextState: typeof state) => void)) => {\n isPatching = true\n try {\n rawPatch(patch as any)\n }\n finally {\n isPatching = false\n }\n }\n if (typeof base.api.$reset === 'function') {\n const rawReset = base.api.$reset\n base.api.$reset = () => {\n isPatching = true\n try {\n rawReset()\n }\n finally {\n isPatching = false\n }\n }\n }\n\n notify = createSafeNotifier(id, base.subs, () => state as any)\n\n const store: Record<string, any> = {}\n for (const key of Object.getOwnPropertyNames(base.api)) {\n const d = Object.getOwnPropertyDescriptor(base.api, key)\n if (d) {\n if (key === '$state') {\n Object.defineProperty(store, key, {\n enumerable: d.enumerable,\n configurable: d.configurable,\n get() {\n return (base.api as any).$state\n },\n set(v: any) {\n isPatching = true\n try {\n ;(base.api as any).$state = v\n }\n finally {\n isPatching = false\n }\n },\n })\n }\n else {\n Object.defineProperty(store, key, d)\n }\n }\n }\n\n const getterDefs = options.getters ?? {}\n Object.keys(getterDefs).forEach((key) => {\n const getter = (getterDefs as any)[key]\n if (typeof getter === 'function') {\n const c = computed(() => getter.call(store, state))\n Object.defineProperty(store, key, {\n enumerable: true,\n configurable: true,\n get() {\n return c.value\n },\n })\n }\n })\n\n const actionDefs = options.actions ?? {}\n Object.keys(actionDefs).forEach((key) => {\n const act = (actionDefs as any)[key]\n if (typeof act === 'function') {\n const wrapped = wrapAction(store as any, key, (...args: any[]) => {\n return act.apply(store as any, args)\n }, base.actionSubs)\n store[key] = wrapped\n }\n })\n\n Object.keys(state).forEach((k) => {\n Object.defineProperty(store, k, {\n enumerable: true,\n configurable: true,\n get() {\n return (state as any)[k]\n },\n set(v: any) {\n ;(state as any)[k] = v\n },\n })\n })\n\n let initialized = false\n let dispatchingDirect = false\n effect(() => {\n touchReactive(state)\n if (!initialized) {\n initialized = true\n return\n }\n if (isPatching || dispatchingDirect) {\n return\n }\n dispatchingDirect = true\n try {\n notify('direct')\n }\n finally {\n dispatchingDirect = false\n }\n })\n\n const plugins = manager?._plugins ?? []\n for (const plugin of plugins) {\n try {\n plugin({ store })\n }\n catch {}\n }\n\n return store\n}\n"],"mappings":";;;;;;;;;;;AAMA,SAAgB,wBAAwB,IAAY,SAAc,SAAc;;CAC9E,MAAM,WAAW,QAAQ,QAAQ,QAAQ,MAAM,IAAI,CAAC;CACpD,MAAM,QAAQ,SAAS,QAAQ;CAC/B,MAAM,kBAAkB,UAAU,MAAM,QAAQ,CAAC;CACjD,IAAI,eAAoC,CAAC;CACzC,MAAM,OAAO,cAA4B,IAAI,QAAO,MAAK,OAAO,CAAC,SAAS;EACxE,YAAY,OAAc,eAAe;EACzC,OAAO,cAAc;CACvB,CAAC;CAED,IAAI,aAAa;CACjB,MAAM,WAAW,KAAK,IAAI;CAC1B,KAAK,IAAI,UAAU,UAAuE;EACxF,aAAa;EACb,IAAI;GACF,SAAS,KAAY;EACvB,UACQ;GACN,aAAa;EACf;CACF;CACA,IAAI,OAAO,KAAK,IAAI,WAAW,YAAY;EACzC,MAAM,WAAW,KAAK,IAAI;EAC1B,KAAK,IAAI,eAAe;GACtB,aAAa;GACb,IAAI;IACF,SAAS;GACX,UACQ;IACN,aAAa;GACf;EACF;CACF;CAEA,SAAS,mBAAmB,IAAI,KAAK,YAAY,KAAY;CAE7D,MAAM,QAA6B,CAAC;CACpC,KAAK,MAAM,OAAO,OAAO,oBAAoB,KAAK,GAAG,GAAG;EACtD,MAAM,IAAI,OAAO,yBAAyB,KAAK,KAAK,GAAG;EACvD,IAAI,GACF,IAAI,QAAQ,UACV,OAAO,eAAe,OAAO,KAAK;GAChC,YAAY,EAAE;GACd,cAAc,EAAE;GAChB,MAAM;IACJ,OAAQ,KAAK,IAAY;GAC3B;GACA,IAAI,GAAQ;IACV,aAAa;IACb,IAAI;KACD,AAAC,KAAK,IAAY,SAAS;IAC9B,UACQ;KACN,aAAa;IACf;GACF;EACF,CAAC;OAGD,OAAO,eAAe,OAAO,KAAK,CAAC;CAGzC;CAEA,MAAM,iCAAa,QAAQ,sEAAW,CAAC;CACvC,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,QAAQ;EACvC,MAAM,SAAU,WAAmB;EACnC,IAAI,OAAO,WAAW,YAAY;GAChC,MAAM,IAAI,eAAe,OAAO,KAAK,OAAO,KAAK,CAAC;GAClD,OAAO,eAAe,OAAO,KAAK;IAChC,YAAY;IACZ,cAAc;IACd,MAAM;KACJ,OAAO,EAAE;IACX;GACF,CAAC;EACH;CACF,CAAC;CAED,MAAM,iCAAa,QAAQ,sEAAW,CAAC;CACvC,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,QAAQ;EACvC,MAAM,MAAO,WAAmB;EAChC,IAAI,OAAO,QAAQ,YAAY;GAC7B,MAAM,UAAU,WAAW,OAAc,MAAM,GAAG,SAAgB;IAChE,OAAO,IAAI,MAAM,OAAc,IAAI;GACrC,GAAG,KAAK,UAAU;GAClB,MAAM,OAAO;EACf;CACF,CAAC;CAED,OAAO,KAAK,KAAK,CAAC,CAAC,SAAS,MAAM;EAChC,OAAO,eAAe,OAAO,GAAG;GAC9B,YAAY;GACZ,cAAc;GACd,MAAM;IACJ,OAAQ,MAAc;GACxB;GACA,IAAI,GAAQ;IACT,AAAC,MAAc,KAAK;GACvB;EACF,CAAC;CACH,CAAC;CAED,IAAI,cAAc;CAClB,IAAI,oBAAoB;CACxB,aAAa;EACX,cAAc,KAAK;EACnB,IAAI,CAAC,aAAa;GAChB,cAAc;GACd;EACF;EACA,IAAI,cAAc,mBAChB;EAEF,oBAAoB;EACpB,IAAI;GACF,OAAO,QAAQ;EACjB,UACQ;GACN,oBAAoB;EACtB;CACF,CAAC;CAED,MAAM,iFAAU,QAAS,yEAAY,CAAC;CACtC,KAAK,MAAM,UAAU,SACnB,IAAI;EACF,OAAO,EAAE,MAAM,CAAC;CAClB,kBACM,CAAC;CAGT,OAAO;AACT"}
1
+ {"version":3,"file":"optionsStyle.mjs","names":[],"sources":["../../../../src/store/define/optionsStyle.ts"],"sourcesContent":["import { computed, effect, reactive, toRaw, touchReactive } from '../../reactivity'\nimport { wrapAction } from '../actions'\nimport { createBaseApi } from '../base'\nimport { cloneDeep, resetObject } from '../utils'\nimport { createSafeNotifier } from './shared'\n\nexport function createOptionsStyleStore(id: string, options: any, manager: any) {\n const rawState = options.state ? options.state() : {}\n const state = reactive(rawState)\n const initialSnapshot = cloneDeep(toRaw(rawState))\n let notify: (type: any) => void = () => {}\n const base = createBaseApi<typeof state>(id, state, t => notify(t), () => {\n resetObject(state as any, initialSnapshot)\n notify('patch object')\n })\n\n let isPatching = false\n const rawPatch = base.api.$patch\n base.api.$patch = (patch: Partial<typeof state> | ((nextState: typeof state) => void)) => {\n isPatching = true\n try {\n rawPatch(patch as any)\n }\n finally {\n isPatching = false\n }\n }\n if (typeof base.api.$reset === 'function') {\n const rawReset = base.api.$reset\n base.api.$reset = () => {\n isPatching = true\n try {\n rawReset()\n }\n finally {\n isPatching = false\n }\n }\n }\n\n notify = createSafeNotifier(id, base.subs, () => state as any)\n\n const store: Record<string, any> = {}\n for (const key of Object.getOwnPropertyNames(base.api)) {\n const d = Object.getOwnPropertyDescriptor(base.api, key)\n if (d) {\n if (key === '$state') {\n Object.defineProperty(store, key, {\n enumerable: d.enumerable,\n configurable: d.configurable,\n get() {\n return (base.api as any).$state\n },\n set(v: any) {\n isPatching = true\n try {\n ;(base.api as any).$state = v\n }\n finally {\n isPatching = false\n }\n },\n })\n }\n else {\n Object.defineProperty(store, key, d)\n }\n }\n }\n\n const getterDefs = options.getters ?? {}\n Object.keys(getterDefs).forEach((key) => {\n const getter = (getterDefs as any)[key]\n if (typeof getter === 'function') {\n const c = computed(() => getter.call(store, state))\n Object.defineProperty(store, key, {\n enumerable: true,\n configurable: true,\n get() {\n return c.value\n },\n })\n }\n })\n\n const actionDefs = options.actions ?? {}\n Object.keys(actionDefs).forEach((key) => {\n const act = (actionDefs as any)[key]\n if (typeof act === 'function') {\n const wrapped = wrapAction(store as any, key, (...args: any[]) => {\n return act.apply(store as any, args)\n }, base.actionSubs)\n store[key] = wrapped\n }\n })\n\n Object.keys(state).forEach((k) => {\n Object.defineProperty(store, k, {\n enumerable: true,\n configurable: true,\n get() {\n return (state as any)[k]\n },\n set(v: any) {\n ;(state as any)[k] = v\n },\n })\n })\n\n let initialized = false\n let dispatchingDirect = false\n effect(() => {\n touchReactive(state)\n if (!initialized) {\n initialized = true\n return\n }\n if (isPatching || dispatchingDirect) {\n return\n }\n dispatchingDirect = true\n try {\n notify('direct')\n }\n finally {\n dispatchingDirect = false\n }\n })\n\n const plugins = manager?._plugins ?? []\n for (const plugin of plugins) {\n try {\n plugin({ store })\n }\n catch {}\n }\n\n return store\n}\n"],"mappings":";;;;;;;;;;;AAMA,SAAgB,wBAAwB,IAAY,SAAc,SAAc;;CAC9E,MAAM,WAAW,QAAQ,QAAQ,QAAQ,MAAM,IAAI,CAAC;CACpD,MAAM,QAAQ,SAAS,QAAQ;CAC/B,MAAM,kBAAkB,UAAU,MAAM,QAAQ,CAAC;CACjD,IAAI,eAAoC,CAAC;CACzC,MAAM,OAAO,cAA4B,IAAI,QAAO,MAAK,OAAO,CAAC,SAAS;EACxE,YAAY,OAAc,eAAe;EACzC,OAAO,cAAc;CACvB,CAAC;CAED,IAAI,aAAa;CACjB,MAAM,WAAW,KAAK,IAAI;CAC1B,KAAK,IAAI,UAAU,UAAuE;EACxF,aAAa;EACb,IAAI;GACF,SAAS,KAAY;EACvB,UACQ;GACN,aAAa;EACf;CACF;CACA,IAAI,OAAO,KAAK,IAAI,WAAW,YAAY;EACzC,MAAM,WAAW,KAAK,IAAI;EAC1B,KAAK,IAAI,eAAe;GACtB,aAAa;GACb,IAAI;IACF,SAAS;GACX,UACQ;IACN,aAAa;GACf;EACF;CACF;CAEA,SAAS,mBAAmB,IAAI,KAAK,YAAY,KAAY;CAE7D,MAAM,QAA6B,CAAC;CACpC,KAAK,MAAM,OAAO,OAAO,oBAAoB,KAAK,GAAG,GAAG;EACtD,MAAM,IAAI,OAAO,yBAAyB,KAAK,KAAK,GAAG;EACvD,IAAI,GAAG;GACL,IAAI,QAAQ,UACV,OAAO,eAAe,OAAO,KAAK;IAChC,YAAY,EAAE;IACd,cAAc,EAAE;IAChB,MAAM;KACJ,OAAQ,KAAK,IAAY;IAC3B;IACA,IAAI,GAAQ;KACV,aAAa;KACb,IAAI;MACD,AAAC,KAAK,IAAY,SAAS;KAC9B,UACQ;MACN,aAAa;KACf;IACF;GACF,CAAC;QAGD,OAAO,eAAe,OAAO,KAAK,CAAC;EAEvC;CACF;CAEA,MAAM,iCAAa,QAAQ,sEAAW,CAAC;CACvC,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,QAAQ;EACvC,MAAM,SAAU,WAAmB;EACnC,IAAI,OAAO,WAAW,YAAY;GAChC,MAAM,IAAI,eAAe,OAAO,KAAK,OAAO,KAAK,CAAC;GAClD,OAAO,eAAe,OAAO,KAAK;IAChC,YAAY;IACZ,cAAc;IACd,MAAM;KACJ,OAAO,EAAE;IACX;GACF,CAAC;EACH;CACF,CAAC;CAED,MAAM,iCAAa,QAAQ,sEAAW,CAAC;CACvC,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,QAAQ;EACvC,MAAM,MAAO,WAAmB;EAChC,IAAI,OAAO,QAAQ,YAAY;GAC7B,MAAM,UAAU,WAAW,OAAc,MAAM,GAAG,SAAgB;IAChE,OAAO,IAAI,MAAM,OAAc,IAAI;GACrC,GAAG,KAAK,UAAU;GAClB,MAAM,OAAO;EACf;CACF,CAAC;CAED,OAAO,KAAK,KAAK,CAAC,CAAC,SAAS,MAAM;EAChC,OAAO,eAAe,OAAO,GAAG;GAC9B,YAAY;GACZ,cAAc;GACd,MAAM;IACJ,OAAQ,MAAc;GACxB;GACA,IAAI,GAAQ;IACT,AAAC,MAAc,KAAK;GACvB;EACF,CAAC;CACH,CAAC;CAED,IAAI,cAAc;CAClB,IAAI,oBAAoB;CACxB,aAAa;EACX,cAAc,KAAK;EACnB,IAAI,CAAC,aAAa;GAChB,cAAc;GACd;EACF;EACA,IAAI,cAAc,mBAChB;EAEF,oBAAoB;EACpB,IAAI;GACF,OAAO,QAAQ;EACjB,UACQ;GACN,oBAAoB;EACtB;CACF,CAAC;CAED,MAAM,iFAAU,QAAS,yEAAY,CAAC;CACtC,KAAK,MAAM,UAAU,SACnB,IAAI;EACF,OAAO,EAAE,MAAM,CAAC;CAClB,kBACM,CAAC;CAGT,OAAO;AACT"}
@@ -64,22 +64,24 @@ function createSetupStyleStore(id, setupFactory, manager) {
64
64
  notify = createSafeNotifier(id, base.subs, () => instance);
65
65
  for (const key of Object.getOwnPropertyNames(base.api)) {
66
66
  const d = Object.getOwnPropertyDescriptor(base.api, key);
67
- if (d) if (key === "$state") Object.defineProperty(instance, key, {
68
- enumerable: d.enumerable,
69
- configurable: d.configurable,
70
- get() {
71
- return base.api.$state;
72
- },
73
- set(v) {
74
- isPatching = true;
75
- try {
76
- base.api.$state = v;
77
- } finally {
78
- isPatching = false;
67
+ if (d) {
68
+ if (key === "$state") Object.defineProperty(instance, key, {
69
+ enumerable: d.enumerable,
70
+ configurable: d.configurable,
71
+ get() {
72
+ return base.api.$state;
73
+ },
74
+ set(v) {
75
+ isPatching = true;
76
+ try {
77
+ base.api.$state = v;
78
+ } finally {
79
+ isPatching = false;
80
+ }
79
81
  }
80
- }
81
- });
82
- else Object.defineProperty(instance, key, d);
82
+ });
83
+ else Object.defineProperty(instance, key, d);
84
+ }
83
85
  }
84
86
  const directSources = [];
85
87
  Object.keys(result).forEach((k) => {