wevu 7.2.2 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/typeof.mjs +1 -1
- package/dist/dev/internal-runtime.d.mts +2 -1
- package/dist/dev/internal-runtime.mjs +3 -2
- package/dist/dev/package.mjs +1 -1
- package/dist/dev/reactivity/asyncDerivation.mjs +8 -10
- package/dist/dev/reactivity/asyncDerivation.mjs.map +1 -1
- package/dist/dev/reactivity/core.mjs +5 -8
- package/dist/dev/reactivity/core.mjs.map +1 -1
- package/dist/dev/reactivity/reactive/patch.mjs +3 -3
- package/dist/dev/reactivity/reactive/patch.mjs.map +1 -1
- package/dist/dev/reactivity/reactive/patchState.mjs +4 -8
- package/dist/dev/reactivity/reactive/patchState.mjs.map +1 -1
- package/dist/dev/reactivity/reactive/shared.mjs +1 -2
- package/dist/dev/reactivity/reactive/shared.mjs.map +1 -1
- package/dist/dev/reactivity/reactive.mjs +5 -10
- package/dist/dev/reactivity/reactive.mjs.map +1 -1
- package/dist/dev/reactivity/ref.mjs +2 -2
- package/dist/dev/reactivity/ref.mjs.map +1 -1
- package/dist/dev/reactivity/shallowRef.mjs +1 -1
- package/dist/dev/reactivity/shallowRef.mjs.map +1 -1
- package/dist/dev/reactivity/watch/helpers.mjs +1 -1
- package/dist/dev/reactivity/watch/helpers.mjs.map +1 -1
- package/dist/dev/reactivity/watch.mjs +6 -8
- package/dist/dev/reactivity/watch.mjs.map +1 -1
- package/dist/dev/router/createRouter.mjs +17 -24
- package/dist/dev/router/createRouter.mjs.map +1 -1
- package/dist/dev/router/initialNavigation.mjs +22 -17
- package/dist/dev/router/initialNavigation.mjs.map +1 -1
- package/dist/dev/router/instance.mjs +1 -2
- package/dist/dev/router/instance.mjs.map +1 -1
- package/dist/dev/router/navigationCore.mjs +2 -2
- package/dist/dev/router/navigationCore.mjs.map +1 -1
- package/dist/dev/router/navigationResult.mjs +7 -10
- package/dist/dev/router/navigationResult.mjs.map +1 -1
- package/dist/dev/router/navigationTarget.mjs +1 -3
- package/dist/dev/router/navigationTarget.mjs.map +1 -1
- package/dist/dev/router/resolve.mjs +3 -4
- package/dist/dev/router/resolve.mjs.map +1 -1
- package/dist/dev/router/routeRegistry.mjs +1 -1
- package/dist/dev/router/routeRegistry.mjs.map +1 -1
- package/dist/dev/router/routeSync.mjs +1 -1
- package/dist/dev/router/routeSync.mjs.map +1 -1
- package/dist/dev/router/scrollRestoration/adapters.d.mts +8 -0
- package/dist/dev/router/scrollRestoration/adapters.mjs +86 -0
- package/dist/dev/router/scrollRestoration/adapters.mjs.map +1 -0
- package/dist/dev/router/scrollRestoration/controller.d.mts +8 -0
- package/dist/dev/router/scrollRestoration/controller.mjs +148 -0
- package/dist/dev/router/scrollRestoration/controller.mjs.map +1 -0
- package/dist/dev/router/scrollRestoration/host.d.mts +3 -0
- package/dist/dev/router/scrollRestoration/host.mjs +76 -0
- package/dist/dev/router/scrollRestoration/host.mjs.map +1 -0
- package/dist/dev/router/scrollRestoration/index.d.mts +9 -0
- package/dist/dev/router/scrollRestoration/index.mjs +156 -0
- package/dist/dev/router/scrollRestoration/index.mjs.map +1 -0
- package/dist/dev/router/scrollRestoration/types.d.mts +61 -0
- package/dist/dev/router/useRoute.mjs +12 -19
- package/dist/dev/router/useRoute.mjs.map +1 -1
- package/dist/dev/router.d.mts +5 -1
- package/dist/dev/router.mjs +4 -1
- package/dist/dev/routerInternal/location.mjs +2 -3
- package/dist/dev/routerInternal/location.mjs.map +1 -1
- package/dist/dev/routerInternal/params.mjs +2 -3
- package/dist/dev/routerInternal/params.mjs.map +1 -1
- package/dist/dev/routerInternal/records.mjs +1 -1
- package/dist/dev/routerInternal/records.mjs.map +1 -1
- package/dist/dev/routerInternal/recordsWarnings.mjs +1 -2
- package/dist/dev/routerInternal/recordsWarnings.mjs.map +1 -1
- package/dist/dev/runtime/app/context.mjs +13 -26
- package/dist/dev/runtime/app/context.mjs.map +1 -1
- package/dist/dev/runtime/app/diagnostics.mjs +2 -4
- package/dist/dev/runtime/app/diagnostics.mjs.map +1 -1
- package/dist/dev/runtime/app/mount.mjs +27 -33
- package/dist/dev/runtime/app/mount.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/commitTracker.mjs +5 -9
- package/dist/dev/runtime/app/setData/commitTracker.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/patchScheduler.mjs +2 -4
- package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/payload.mjs +2 -3
- package/dist/dev/runtime/app/setData/payload.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/scheduler.mjs +7 -9
- package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/snapshot.mjs +5 -6
- package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -1
- package/dist/dev/runtime/app/setDataOptions.mjs +26 -27
- package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -1
- package/dist/dev/runtime/app.mjs +9 -9
- package/dist/dev/runtime/app.mjs.map +1 -1
- package/dist/dev/runtime/bindingManifest.mjs +6 -14
- package/dist/dev/runtime/bindingManifest.mjs.map +1 -1
- package/dist/dev/runtime/capabilities.d.mts +4 -1
- package/dist/dev/runtime/capabilities.mjs.map +1 -1
- package/dist/dev/runtime/css.mjs +4 -8
- package/dist/dev/runtime/css.mjs.map +1 -1
- package/dist/dev/runtime/defaults.mjs +4 -4
- package/dist/dev/runtime/defaults.mjs.map +1 -1
- package/dist/dev/runtime/define/initialComputed.mjs +5 -5
- package/dist/dev/runtime/define/initialComputed.mjs.map +1 -1
- package/dist/dev/runtime/define/options.mjs +10 -12
- package/dist/dev/runtime/define/options.mjs.map +1 -1
- package/dist/dev/runtime/define/props.mjs +4 -5
- package/dist/dev/runtime/define/props.mjs.map +1 -1
- package/dist/dev/runtime/define/scopedSlotOptions.mjs +43 -61
- package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
- package/dist/dev/runtime/define/setupResult.mjs +17 -28
- package/dist/dev/runtime/define/setupResult.mjs.map +1 -1
- package/dist/dev/runtime/define.mjs +9 -12
- package/dist/dev/runtime/define.mjs.map +1 -1
- package/dist/dev/runtime/diff.mjs +9 -11
- package/dist/dev/runtime/diff.mjs.map +1 -1
- package/dist/dev/runtime/disposables.mjs +2 -2
- package/dist/dev/runtime/disposables.mjs.map +1 -1
- package/dist/dev/runtime/elementIntersectionObserver.mjs +16 -24
- package/dist/dev/runtime/elementIntersectionObserver.mjs.map +1 -1
- package/dist/dev/runtime/features/inlineEvents.mjs +2 -3
- package/dist/dev/runtime/features/inlineEvents.mjs.map +1 -1
- package/dist/dev/runtime/features/jsxIslands.d.mts +7 -0
- package/dist/dev/runtime/features/jsxIslands.mjs +20 -0
- package/dist/dev/runtime/features/jsxIslands.mjs.map +1 -0
- package/dist/dev/runtime/features/layout.mjs +2 -3
- package/dist/dev/runtime/features/layout.mjs.map +1 -1
- package/dist/dev/runtime/features/publicLayout.mjs +2 -6
- package/dist/dev/runtime/features/publicLayout.mjs.map +1 -1
- package/dist/dev/runtime/features/scopedSlots.mjs +5 -9
- package/dist/dev/runtime/features/scopedSlots.mjs.map +1 -1
- package/dist/dev/runtime/features/templateRefs.mjs +1 -1
- package/dist/dev/runtime/features/templateRefs.mjs.map +1 -1
- package/dist/dev/runtime/hooks/base.mjs +20 -43
- package/dist/dev/runtime/hooks/base.mjs.map +1 -1
- package/dist/dev/runtime/hooks/pageScroll.mjs +41 -0
- package/dist/dev/runtime/hooks/pageScroll.mjs.map +1 -0
- package/dist/dev/runtime/hooks/register.mjs +2 -1
- package/dist/dev/runtime/hooks/register.mjs.map +1 -1
- package/dist/dev/runtime/inlineDataset.mjs +1 -2
- package/dist/dev/runtime/inlineDataset.mjs.map +1 -1
- package/dist/dev/runtime/intersectionObserver.mjs +6 -6
- package/dist/dev/runtime/intersectionObserver.mjs.map +1 -1
- package/dist/dev/runtime/jsxIsland.mjs +16 -33
- package/dist/dev/runtime/jsxIsland.mjs.map +1 -1
- package/dist/dev/runtime/layoutBridge.mjs +32 -62
- package/dist/dev/runtime/layoutBridge.mjs.map +1 -1
- package/dist/dev/runtime/nativeBridge.mjs +1 -1
- package/dist/dev/runtime/nativeBridge.mjs.map +1 -1
- package/dist/dev/runtime/navigationLifecycle.mjs +24 -0
- package/dist/dev/runtime/navigationLifecycle.mjs.map +1 -0
- package/dist/dev/runtime/pageEnvironment.mjs +15 -18
- package/dist/dev/runtime/pageEnvironment.mjs.map +1 -1
- package/dist/dev/runtime/pageLayout.mjs +7 -11
- package/dist/dev/runtime/pageLayout.mjs.map +1 -1
- package/dist/dev/runtime/pageScroll.mjs +2 -3
- package/dist/dev/runtime/pageScroll.mjs.map +1 -1
- package/dist/dev/runtime/platform/current.mjs +12 -0
- package/dist/dev/runtime/platform/current.mjs.map +1 -0
- package/dist/dev/runtime/platform/generic.mjs +36 -0
- package/dist/dev/runtime/platform/generic.mjs.map +1 -0
- package/dist/dev/runtime/platform/globals.mjs +29 -0
- package/dist/dev/runtime/platform/globals.mjs.map +1 -0
- package/dist/dev/runtime/platform.mjs +15 -60
- package/dist/dev/runtime/platform.mjs.map +1 -1
- package/dist/dev/runtime/provideContext.mjs +7 -9
- package/dist/dev/runtime/provideContext.mjs.map +1 -1
- package/dist/dev/runtime/publicRuntime.mjs +4 -0
- package/dist/dev/runtime/publicRuntime.mjs.map +1 -1
- package/dist/dev/runtime/pullDownRefresh.mjs +2 -4
- package/dist/dev/runtime/pullDownRefresh.mjs.map +1 -1
- package/dist/dev/runtime/register/app.mjs +18 -19
- package/dist/dev/runtime/register/app.mjs.map +1 -1
- package/dist/dev/runtime/register/component/alipay.mjs +9 -18
- package/dist/dev/runtime/register/component/alipay.mjs.map +1 -1
- package/dist/dev/runtime/register/component/alipayRegistration.mjs +60 -0
- package/dist/dev/runtime/register/component/alipayRegistration.mjs.map +1 -0
- package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs +2 -5
- package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs.map +1 -1
- package/dist/dev/runtime/register/component/lifecycle/platform.mjs +13 -26
- package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -1
- package/dist/dev/runtime/register/component/lifecycle.mjs +7 -12
- package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -1
- package/dist/dev/runtime/register/component/methods.mjs +13 -18
- package/dist/dev/runtime/register/component/methods.mjs.map +1 -1
- package/dist/dev/runtime/register/component/options.mjs +3 -4
- package/dist/dev/runtime/register/component/options.mjs.map +1 -1
- package/dist/dev/runtime/register/component/props.mjs +25 -31
- package/dist/dev/runtime/register/component/props.mjs.map +1 -1
- package/dist/dev/runtime/register/component/registerDefinition.mjs +21 -40
- package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
- package/dist/dev/runtime/register/component/registerNativeDefinition.mjs +18 -60
- package/dist/dev/runtime/register/component/registerNativeDefinition.mjs.map +1 -1
- package/dist/dev/runtime/register/component.mjs +3 -5
- package/dist/dev/runtime/register/component.mjs.map +1 -1
- package/dist/dev/runtime/register/inline.mjs +8 -10
- package/dist/dev/runtime/register/inline.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +7 -8
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +1 -1
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +25 -34
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +13 -15
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs +2 -2
- package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs +9 -9
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance.mjs +74 -100
- package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -1
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs +12 -15
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -1
- package/dist/dev/runtime/register/setup.mjs +2 -3
- package/dist/dev/runtime/register/setup.mjs.map +1 -1
- package/dist/dev/runtime/register/snapshot.mjs +1 -4
- package/dist/dev/runtime/register/snapshot.mjs.map +1 -1
- package/dist/dev/runtime/register/watch.mjs +3 -5
- package/dist/dev/runtime/register/watch.mjs.map +1 -1
- package/dist/dev/runtime/scopedSlots.mjs +14 -21
- package/dist/dev/runtime/scopedSlots.mjs.map +1 -1
- package/dist/dev/runtime/selectorQuery.mjs +5 -9
- package/dist/dev/runtime/selectorQuery.mjs.map +1 -1
- package/dist/dev/runtime/template.mjs +1 -1
- package/dist/dev/runtime/template.mjs.map +1 -1
- package/dist/dev/runtime/templateRefs/helpers.mjs +14 -24
- package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -1
- package/dist/dev/runtime/templateRefs.mjs +8 -15
- package/dist/dev/runtime/templateRefs.mjs.map +1 -1
- package/dist/dev/runtime/uniAppHost.mjs +6 -14
- package/dist/dev/runtime/uniAppHost.mjs.map +1 -1
- package/dist/dev/runtime/updatePerformance.mjs +1 -1
- package/dist/dev/runtime/updatePerformance.mjs.map +1 -1
- package/dist/dev/runtime/use.mjs +1 -1
- package/dist/dev/runtime/use.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/context.mjs +3 -5
- package/dist/dev/runtime/vueCompat/context.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/model.mjs +9 -13
- package/dist/dev/runtime/vueCompat/model.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/router.mjs +4 -4
- package/dist/dev/runtime/vueCompat/router.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/templateRef.mjs +1 -1
- package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -1
- package/dist/dev/scheduler.mjs +3 -4
- package/dist/dev/scheduler.mjs.map +1 -1
- package/dist/dev/store/base.mjs +1 -2
- package/dist/dev/store/base.mjs.map +1 -1
- package/dist/dev/store/define/create.mjs +11 -22
- package/dist/dev/store/define/create.mjs.map +1 -1
- package/dist/dev/store/define.mjs +1 -1
- package/dist/dev/store/define.mjs.map +1 -1
- package/dist/dev/store/view.mjs +1 -1
- package/dist/dev/store/view.mjs.map +1 -1
- package/dist/internal-runtime.d.mts +2 -1
- package/dist/internal-runtime.mjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/reactivity/asyncDerivation.mjs +1 -1
- package/dist/reactivity/core.mjs +1 -1
- package/dist/reactivity/reactive/patch.mjs +1 -1
- package/dist/reactivity/reactive/patchState.mjs +1 -1
- package/dist/reactivity/reactive/shared.mjs +1 -1
- package/dist/reactivity/reactive.mjs +1 -1
- package/dist/reactivity/ref.mjs +1 -1
- package/dist/reactivity/shallowRef.mjs +1 -1
- package/dist/reactivity/watch/helpers.mjs +1 -1
- package/dist/reactivity/watch.mjs +1 -1
- package/dist/router/createRouter.mjs +1 -1
- package/dist/router/initialNavigation.mjs +1 -1
- package/dist/router/instance.mjs +1 -1
- package/dist/router/navigationCore.mjs +1 -1
- package/dist/router/navigationResult.mjs +1 -1
- package/dist/router/navigationTarget.mjs +1 -1
- package/dist/router/resolve.mjs +1 -1
- package/dist/router/routeRegistry.mjs +1 -1
- package/dist/router/routeSync.mjs +1 -1
- package/dist/router/scrollRestoration/adapters.d.mts +7 -0
- package/dist/router/scrollRestoration/adapters.mjs +1 -0
- package/dist/router/scrollRestoration/controller.d.mts +7 -0
- package/dist/router/scrollRestoration/controller.mjs +1 -0
- package/dist/router/scrollRestoration/host.d.mts +3 -0
- package/dist/router/scrollRestoration/host.mjs +1 -0
- package/dist/router/scrollRestoration/index.d.mts +8 -0
- package/dist/router/scrollRestoration/index.mjs +1 -0
- package/dist/router/scrollRestoration/types.d.mts +60 -0
- package/dist/router/useRoute.mjs +1 -1
- package/dist/router.d.mts +5 -1
- package/dist/router.mjs +1 -1
- package/dist/routerInternal/location.mjs +1 -1
- package/dist/routerInternal/params.mjs +1 -1
- package/dist/routerInternal/records.mjs +1 -1
- package/dist/routerInternal/recordsWarnings.mjs +1 -1
- package/dist/runtime/app/context.mjs +1 -1
- package/dist/runtime/app/diagnostics.mjs +1 -1
- package/dist/runtime/app/mount.mjs +1 -1
- package/dist/runtime/app/setData/commitTracker.mjs +1 -1
- package/dist/runtime/app/setData/patchScheduler.mjs +1 -1
- package/dist/runtime/app/setData/payload.mjs +1 -1
- package/dist/runtime/app/setData/scheduler.mjs +1 -1
- package/dist/runtime/app/setData/snapshot.mjs +1 -1
- package/dist/runtime/app/setDataOptions.mjs +1 -1
- package/dist/runtime/app.mjs +1 -1
- package/dist/runtime/bindingManifest.mjs +1 -1
- package/dist/runtime/capabilities.d.mts +4 -1
- package/dist/runtime/css.mjs +1 -1
- package/dist/runtime/defaults.mjs +1 -1
- package/dist/runtime/define/initialComputed.mjs +1 -1
- package/dist/runtime/define/options.mjs +1 -1
- package/dist/runtime/define/props.mjs +1 -1
- package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
- package/dist/runtime/define/setupResult.mjs +1 -1
- package/dist/runtime/define.mjs +1 -1
- package/dist/runtime/diff.mjs +1 -1
- package/dist/runtime/disposables.mjs +1 -1
- package/dist/runtime/elementIntersectionObserver.mjs +1 -1
- package/dist/runtime/features/inlineEvents.mjs +1 -1
- package/dist/runtime/features/jsxIslands.d.mts +6 -0
- package/dist/runtime/features/jsxIslands.mjs +1 -0
- package/dist/runtime/features/layout.mjs +1 -1
- package/dist/runtime/features/publicLayout.mjs +1 -1
- package/dist/runtime/features/scopedSlots.mjs +1 -1
- package/dist/runtime/features/templateRefs.mjs +1 -1
- package/dist/runtime/hooks/base.mjs +1 -1
- package/dist/runtime/hooks/pageScroll.mjs +1 -0
- package/dist/runtime/hooks/register.mjs +1 -1
- package/dist/runtime/inlineDataset.mjs +1 -1
- package/dist/runtime/intersectionObserver.mjs +1 -1
- package/dist/runtime/jsxIsland.mjs +1 -1
- package/dist/runtime/layoutBridge.mjs +1 -1
- package/dist/runtime/nativeBridge.mjs +1 -1
- package/dist/runtime/navigationLifecycle.mjs +1 -0
- package/dist/runtime/pageEnvironment.mjs +1 -1
- package/dist/runtime/pageLayout.mjs +1 -1
- package/dist/runtime/pageScroll.mjs +1 -1
- package/dist/runtime/platform/current.mjs +1 -0
- package/dist/runtime/platform/generic.mjs +1 -0
- package/dist/runtime/platform/globals.mjs +1 -0
- package/dist/runtime/platform.mjs +1 -1
- package/dist/runtime/provideContext.mjs +1 -1
- package/dist/runtime/publicRuntime.mjs +1 -1
- package/dist/runtime/pullDownRefresh.mjs +1 -1
- package/dist/runtime/register/app.mjs +1 -1
- package/dist/runtime/register/component/alipay.mjs +1 -1
- package/dist/runtime/register/component/alipayRegistration.mjs +1 -0
- package/dist/runtime/register/component/lifecycle/optionalHooks.mjs +1 -1
- package/dist/runtime/register/component/lifecycle/platform.mjs +1 -1
- package/dist/runtime/register/component/lifecycle.mjs +1 -1
- package/dist/runtime/register/component/methods.mjs +1 -1
- package/dist/runtime/register/component/options.mjs +1 -1
- package/dist/runtime/register/component/props.mjs +1 -1
- package/dist/runtime/register/component/registerDefinition.mjs +1 -1
- package/dist/runtime/register/component/registerNativeDefinition.mjs +1 -1
- package/dist/runtime/register/component.mjs +1 -1
- package/dist/runtime/register/inline.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupSnapshot.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/utils.mjs +1 -1
- package/dist/runtime/register/runtimeInstance.mjs +1 -1
- package/dist/runtime/register/setDataFrequencyWarning.mjs +1 -1
- package/dist/runtime/register/setup.mjs +1 -1
- package/dist/runtime/register/snapshot.mjs +1 -1
- package/dist/runtime/register/watch.mjs +1 -1
- package/dist/runtime/scopedSlots.mjs +1 -1
- package/dist/runtime/selectorQuery.mjs +1 -1
- package/dist/runtime/template.mjs +1 -1
- package/dist/runtime/templateRefs/helpers.mjs +1 -1
- package/dist/runtime/templateRefs.mjs +1 -1
- package/dist/runtime/uniAppHost.mjs +1 -1
- package/dist/runtime/updatePerformance.mjs +1 -1
- package/dist/runtime/use.mjs +1 -1
- package/dist/runtime/vueCompat/context.mjs +1 -1
- package/dist/runtime/vueCompat/model.mjs +1 -1
- package/dist/runtime/vueCompat/router.mjs +1 -1
- package/dist/runtime/vueCompat/templateRef.mjs +1 -1
- package/dist/scheduler.mjs +1 -1
- package/dist/store/base.mjs +1 -1
- package/dist/store/define/create.mjs +1 -1
- package/dist/store/define.mjs +1 -1
- package/dist/store/view.mjs +1 -1
- package/package.json +7 -7
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/typeof.mjs +0 -0
|
@@ -4,7 +4,7 @@ import { installTemplateRefs } from "./features/templateRefs.mjs";
|
|
|
4
4
|
|
|
5
5
|
//#region src/runtime/selectorQuery.ts
|
|
6
6
|
function resolveSetupContext(apiName, context) {
|
|
7
|
-
const resolved = context
|
|
7
|
+
const resolved = context ?? getCurrentInstance();
|
|
8
8
|
if (!resolved || !getCurrentSetupContext()) throw new Error(`${apiName}() 必须在 setup() 的同步阶段调用`);
|
|
9
9
|
return resolved;
|
|
10
10
|
}
|
|
@@ -14,8 +14,7 @@ function runSelectorQuery(context, selector, all, apply) {
|
|
|
14
14
|
apply(all ? query.selectAll(selector) : query.select(selector));
|
|
15
15
|
return new Promise((resolve) => {
|
|
16
16
|
query.exec((res) => {
|
|
17
|
-
|
|
18
|
-
resolve(result !== null && result !== void 0 ? result : null);
|
|
17
|
+
resolve((Array.isArray(res) ? res[0] : null) ?? null);
|
|
19
18
|
});
|
|
20
19
|
});
|
|
21
20
|
}
|
|
@@ -28,24 +27,21 @@ function useSelectorQuery(options = {}) {
|
|
|
28
27
|
return () => createSelectorQuery(context);
|
|
29
28
|
}
|
|
30
29
|
function useBoundingClientRect(options = {}) {
|
|
31
|
-
var _options$all;
|
|
32
30
|
installTemplateRefs();
|
|
33
31
|
const context = resolveSetupContext("useBoundingClientRect", options.context);
|
|
34
|
-
const all =
|
|
32
|
+
const all = options.all ?? false;
|
|
35
33
|
return (selector) => runSelectorQuery(context, selector, all, (nodesRef) => nodesRef.boundingClientRect());
|
|
36
34
|
}
|
|
37
35
|
function useSelectorFields(options) {
|
|
38
|
-
var _options$all2;
|
|
39
36
|
installTemplateRefs();
|
|
40
37
|
const context = resolveSetupContext("useSelectorFields", options.context);
|
|
41
|
-
const all =
|
|
38
|
+
const all = options.all ?? false;
|
|
42
39
|
return (selector) => runSelectorQuery(context, selector, all, (nodesRef) => nodesRef.fields(options.fields));
|
|
43
40
|
}
|
|
44
41
|
function useScrollOffset(options = {}) {
|
|
45
|
-
var _options$all3;
|
|
46
42
|
installTemplateRefs();
|
|
47
43
|
const context = resolveSetupContext("useScrollOffset", options.context);
|
|
48
|
-
const all =
|
|
44
|
+
const all = options.all ?? false;
|
|
49
45
|
return (selector) => runSelectorQuery(context, selector, all, (nodesRef) => nodesRef.scrollOffset());
|
|
50
46
|
}
|
|
51
47
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectorQuery.mjs","names":[],"sources":["../../../src/runtime/selectorQuery.ts"],"sourcesContent":["import type {\n InternalRuntimeState,\n MiniProgramBoundingClientRectResult,\n MiniProgramNodesRefFields,\n MiniProgramScrollOffsetResult,\n MiniProgramSelectorQuery,\n} from './types'\nimport { installTemplateRefs } from './features/templateRefs'\nimport { getCurrentInstance, getCurrentSetupContext } from './hooks'\nimport { createSelectorQuery } from './templateRefs/helpers'\n\nexport interface UseSelectorQueryOptions {\n context?: InternalRuntimeState | null\n}\n\nexport interface UseBoundingClientRectOptions extends UseSelectorQueryOptions {\n all?: boolean\n}\n\nexport interface UseSelectorFieldsOptions extends UseSelectorQueryOptions {\n all?: boolean\n fields: MiniProgramNodesRefFields\n}\n\nexport interface UseScrollOffsetOptions extends UseSelectorQueryOptions {\n all?: boolean\n}\n\nexport interface UseAllBoundingClientRectOptions extends UseSelectorQueryOptions {\n all: true\n}\n\nexport interface UseAllSelectorFieldsOptions extends UseSelectorQueryOptions {\n all: true\n fields: MiniProgramNodesRefFields\n}\n\nexport interface UseAllScrollOffsetOptions extends UseSelectorQueryOptions {\n all: true\n}\n\nfunction resolveSetupContext<T extends InternalRuntimeState>(\n apiName: string,\n context?: T | null,\n): T {\n const resolved = context ?? getCurrentInstance<T>()\n if (!resolved || !getCurrentSetupContext()) {\n throw new Error(`${apiName}() 必须在 setup() 的同步阶段调用`)\n }\n return resolved\n}\n\nfunction runSelectorQuery<T>(\n context: InternalRuntimeState,\n selector: string,\n all: boolean,\n apply: (nodesRef: any) => void,\n): Promise<T | null> {\n const query = createSelectorQuery(context)\n if (!query || !selector) {\n return Promise.resolve(null)\n }\n\n const nodesRef = all ? query.selectAll(selector) : query.select(selector)\n apply(nodesRef)\n\n return new Promise((resolve) => {\n query.exec((res) => {\n const result = Array.isArray(res) ? res[0] : null\n resolve((result ?? null) as T | null)\n })\n })\n}\n\n/**\n * 创建绑定当前小程序实例的选择器查询工厂。\n */\nexport function useSelectorQuery(options: UseSelectorQueryOptions = {}) {\n installTemplateRefs()\n const context = resolveSetupContext('useSelectorQuery', options.context)\n return (): MiniProgramSelectorQuery | null => createSelectorQuery(context)\n}\n\n/**\n * 创建绑定当前小程序实例的节点布局查询函数。\n */\nexport function useBoundingClientRect(\n options?: UseBoundingClientRectOptions & { all?: false },\n): (selector: string) => Promise<MiniProgramBoundingClientRectResult | null>\nexport function useBoundingClientRect(\n options: UseAllBoundingClientRectOptions,\n): (selector: string) => Promise<MiniProgramBoundingClientRectResult[] | null>\nexport function useBoundingClientRect(options: UseBoundingClientRectOptions = {}) {\n installTemplateRefs()\n const context = resolveSetupContext('useBoundingClientRect', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery<\n MiniProgramBoundingClientRectResult | MiniProgramBoundingClientRectResult[]\n >(\n context,\n selector,\n all,\n nodesRef => nodesRef.boundingClientRect(),\n )\n}\n\n/**\n * 创建绑定当前小程序实例的节点字段查询函数。\n */\nexport function useSelectorFields(\n options: UseSelectorFieldsOptions & { all?: false },\n): (selector: string) => Promise<Record<string, any> | null>\nexport function useSelectorFields(\n options: UseAllSelectorFieldsOptions,\n): (selector: string) => Promise<Array<Record<string, any>> | null>\nexport function useSelectorFields(options: UseSelectorFieldsOptions) {\n installTemplateRefs()\n const context = resolveSetupContext('useSelectorFields', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery(\n context,\n selector,\n all,\n nodesRef => nodesRef.fields(options.fields),\n )\n}\n\n/**\n * 创建绑定当前小程序实例的滚动位置查询函数。\n */\nexport function useScrollOffset(\n options?: UseScrollOffsetOptions & { all?: false },\n): (selector: string) => Promise<MiniProgramScrollOffsetResult | null>\nexport function useScrollOffset(\n options: UseAllScrollOffsetOptions,\n): (selector: string) => Promise<MiniProgramScrollOffsetResult[] | null>\nexport function useScrollOffset(options: UseScrollOffsetOptions = {}) {\n installTemplateRefs()\n const context = resolveSetupContext('useScrollOffset', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery<\n MiniProgramScrollOffsetResult | MiniProgramScrollOffsetResult[]\n >(\n context,\n selector,\n all,\n nodesRef => nodesRef.scrollOffset(),\n )\n}\n"],"mappings":";;;;;AAyCA,SAAS,oBACP,SACA,SACG;CACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"selectorQuery.mjs","names":[],"sources":["../../../src/runtime/selectorQuery.ts"],"sourcesContent":["import type {\n InternalRuntimeState,\n MiniProgramBoundingClientRectResult,\n MiniProgramNodesRefFields,\n MiniProgramScrollOffsetResult,\n MiniProgramSelectorQuery,\n} from './types'\nimport { installTemplateRefs } from './features/templateRefs'\nimport { getCurrentInstance, getCurrentSetupContext } from './hooks'\nimport { createSelectorQuery } from './templateRefs/helpers'\n\nexport interface UseSelectorQueryOptions {\n context?: InternalRuntimeState | null\n}\n\nexport interface UseBoundingClientRectOptions extends UseSelectorQueryOptions {\n all?: boolean\n}\n\nexport interface UseSelectorFieldsOptions extends UseSelectorQueryOptions {\n all?: boolean\n fields: MiniProgramNodesRefFields\n}\n\nexport interface UseScrollOffsetOptions extends UseSelectorQueryOptions {\n all?: boolean\n}\n\nexport interface UseAllBoundingClientRectOptions extends UseSelectorQueryOptions {\n all: true\n}\n\nexport interface UseAllSelectorFieldsOptions extends UseSelectorQueryOptions {\n all: true\n fields: MiniProgramNodesRefFields\n}\n\nexport interface UseAllScrollOffsetOptions extends UseSelectorQueryOptions {\n all: true\n}\n\nfunction resolveSetupContext<T extends InternalRuntimeState>(\n apiName: string,\n context?: T | null,\n): T {\n const resolved = context ?? getCurrentInstance<T>()\n if (!resolved || !getCurrentSetupContext()) {\n throw new Error(`${apiName}() 必须在 setup() 的同步阶段调用`)\n }\n return resolved\n}\n\nfunction runSelectorQuery<T>(\n context: InternalRuntimeState,\n selector: string,\n all: boolean,\n apply: (nodesRef: any) => void,\n): Promise<T | null> {\n const query = createSelectorQuery(context)\n if (!query || !selector) {\n return Promise.resolve(null)\n }\n\n const nodesRef = all ? query.selectAll(selector) : query.select(selector)\n apply(nodesRef)\n\n return new Promise((resolve) => {\n query.exec((res) => {\n const result = Array.isArray(res) ? res[0] : null\n resolve((result ?? null) as T | null)\n })\n })\n}\n\n/**\n * 创建绑定当前小程序实例的选择器查询工厂。\n */\nexport function useSelectorQuery(options: UseSelectorQueryOptions = {}) {\n installTemplateRefs()\n const context = resolveSetupContext('useSelectorQuery', options.context)\n return (): MiniProgramSelectorQuery | null => createSelectorQuery(context)\n}\n\n/**\n * 创建绑定当前小程序实例的节点布局查询函数。\n */\nexport function useBoundingClientRect(\n options?: UseBoundingClientRectOptions & { all?: false },\n): (selector: string) => Promise<MiniProgramBoundingClientRectResult | null>\nexport function useBoundingClientRect(\n options: UseAllBoundingClientRectOptions,\n): (selector: string) => Promise<MiniProgramBoundingClientRectResult[] | null>\nexport function useBoundingClientRect(options: UseBoundingClientRectOptions = {}) {\n installTemplateRefs()\n const context = resolveSetupContext('useBoundingClientRect', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery<\n MiniProgramBoundingClientRectResult | MiniProgramBoundingClientRectResult[]\n >(\n context,\n selector,\n all,\n nodesRef => nodesRef.boundingClientRect(),\n )\n}\n\n/**\n * 创建绑定当前小程序实例的节点字段查询函数。\n */\nexport function useSelectorFields(\n options: UseSelectorFieldsOptions & { all?: false },\n): (selector: string) => Promise<Record<string, any> | null>\nexport function useSelectorFields(\n options: UseAllSelectorFieldsOptions,\n): (selector: string) => Promise<Array<Record<string, any>> | null>\nexport function useSelectorFields(options: UseSelectorFieldsOptions) {\n installTemplateRefs()\n const context = resolveSetupContext('useSelectorFields', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery(\n context,\n selector,\n all,\n nodesRef => nodesRef.fields(options.fields),\n )\n}\n\n/**\n * 创建绑定当前小程序实例的滚动位置查询函数。\n */\nexport function useScrollOffset(\n options?: UseScrollOffsetOptions & { all?: false },\n): (selector: string) => Promise<MiniProgramScrollOffsetResult | null>\nexport function useScrollOffset(\n options: UseAllScrollOffsetOptions,\n): (selector: string) => Promise<MiniProgramScrollOffsetResult[] | null>\nexport function useScrollOffset(options: UseScrollOffsetOptions = {}) {\n installTemplateRefs()\n const context = resolveSetupContext('useScrollOffset', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery<\n MiniProgramScrollOffsetResult | MiniProgramScrollOffsetResult[]\n >(\n context,\n selector,\n all,\n nodesRef => nodesRef.scrollOffset(),\n )\n}\n"],"mappings":";;;;;AAyCA,SAAS,oBACP,SACA,SACG;CACH,MAAM,WAAW,WAAW,mBAAsB;CAClD,IAAI,CAAC,YAAY,CAAC,uBAAuB,GACvC,MAAM,IAAI,MAAM,GAAG,QAAQ,uBAAuB;CAEpD,OAAO;AACT;AAEA,SAAS,iBACP,SACA,UACA,KACA,OACmB;CACnB,MAAM,QAAQ,oBAAoB,OAAO;CACzC,IAAI,CAAC,SAAS,CAAC,UACb,OAAO,QAAQ,QAAQ,IAAI;CAI7B,MADiB,MAAM,MAAM,UAAU,QAAQ,IAAI,MAAM,OAAO,QAAQ,CAC1D;CAEd,OAAO,IAAI,SAAS,YAAY;EAC9B,MAAM,MAAM,QAAQ;GAElB,SADe,MAAM,QAAQ,GAAG,IAAI,IAAI,KAAK,SAC1B,IAAiB;EACtC,CAAC;CACH,CAAC;AACH;;;;AAKA,SAAgB,iBAAiB,UAAmC,CAAC,GAAG;CACtE,oBAAoB;CACpB,MAAM,UAAU,oBAAoB,oBAAoB,QAAQ,OAAO;CACvE,aAA8C,oBAAoB,OAAO;AAC3E;AAWA,SAAgB,sBAAsB,UAAwC,CAAC,GAAG;CAChF,oBAAoB;CACpB,MAAM,UAAU,oBAAoB,yBAAyB,QAAQ,OAAO;CAC5E,MAAM,MAAM,QAAQ,OAAO;CAE3B,QAAQ,aAAqB,iBAG3B,SACA,UACA,MACA,aAAY,SAAS,mBAAmB,CAC1C;AACF;AAWA,SAAgB,kBAAkB,SAAmC;CACnE,oBAAoB;CACpB,MAAM,UAAU,oBAAoB,qBAAqB,QAAQ,OAAO;CACxE,MAAM,MAAM,QAAQ,OAAO;CAE3B,QAAQ,aAAqB,iBAC3B,SACA,UACA,MACA,aAAY,SAAS,OAAO,QAAQ,MAAM,CAC5C;AACF;AAWA,SAAgB,gBAAgB,UAAkC,CAAC,GAAG;CACpE,oBAAoB;CACpB,MAAM,UAAU,oBAAoB,mBAAmB,QAAQ,OAAO;CACtE,MAAM,MAAM,QAAQ,OAAO;CAE3B,QAAQ,aAAqB,iBAG3B,SACA,UACA,MACA,aAAY,SAAS,aAAa,CACpC;AACF"}
|
|
@@ -76,7 +76,7 @@ function resolvePropValue(target, key, fallback, preferProps = false) {
|
|
|
76
76
|
return fallback;
|
|
77
77
|
}
|
|
78
78
|
const stateObject = unref(target.$state);
|
|
79
|
-
const setupStateObject = stateObject
|
|
79
|
+
const setupStateObject = stateObject?.[WEVU_SETUP_STATE_KEY];
|
|
80
80
|
if (setupStateObject != null && hasOwnProperty(setupStateObject, key)) return target[key];
|
|
81
81
|
if (stateObject != null && hasOwnProperty(stateObject, key)) return stateObject[key];
|
|
82
82
|
if (hasPropsValue) return propsObject[key];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.mjs","names":[],"sources":["../../../src/runtime/template.ts"],"sourcesContent":["import { WEVU_SETUP_STATE_KEY } from '@weapp-core/constants'\nimport { unref } from '../reactivity'\nimport { hyphenate } from '../utils'\n\nfunction hasOwnProperty(target: object, key: string) {\n return Object.prototype.hasOwnProperty.call(target, key)\n}\n\nfunction appendStyle(base: string, part: string) {\n if (!part) {\n return base\n }\n if (!base) {\n return part\n }\n let next = base\n if (!next.endsWith(';')) {\n next += ';'\n }\n const normalized = part.startsWith(';') ? part.slice(1) : part\n return next + normalized\n}\n\nfunction stringifyStyle(value: Record<string, any>) {\n let res = ''\n for (const key of Object.keys(value)) {\n const raw = unref(value[key])\n if (raw == null) {\n continue\n }\n const name = key.startsWith('--') ? key : hyphenate(key)\n if (Array.isArray(raw)) {\n for (const itemValue of raw) {\n const item = unref(itemValue)\n if (item == null) {\n continue\n }\n res = appendStyle(res, `${name}:${item}`)\n }\n }\n else {\n res = appendStyle(res, `${name}:${raw}`)\n }\n }\n return res\n}\n\nexport function normalizeStyle(value: any): string {\n const unwrapped = unref(value)\n if (unwrapped == null) {\n return ''\n }\n if (typeof unwrapped === 'string') {\n return unwrapped\n }\n if (Array.isArray(unwrapped)) {\n let res = ''\n for (const item of unwrapped) {\n const normalized = normalizeStyle(item)\n if (normalized) {\n res = appendStyle(res, normalized)\n }\n }\n return res\n }\n if (typeof unwrapped === 'object') {\n return stringifyStyle(unwrapped)\n }\n return ''\n}\n\nexport function normalizeClass(value: any): string {\n const unwrapped = unref(value)\n let res = ''\n if (!unwrapped) {\n return res\n }\n if (typeof unwrapped === 'string') {\n return unwrapped\n }\n if (Array.isArray(unwrapped)) {\n for (const item of unwrapped) {\n const normalized = normalizeClass(item)\n if (normalized) {\n res += `${normalized} `\n }\n }\n return res.trim()\n }\n if (typeof unwrapped === 'object') {\n for (const key of Object.keys(unwrapped)) {\n if (unref(unwrapped[key])) {\n res += `${key} `\n }\n }\n return res.trim()\n }\n return res\n}\n\nexport function resolvePropValue(target: any, key: string, fallback: any, preferProps = false) {\n if (target == null) {\n return fallback\n }\n const propsObject = unref(target.__wevuProps)\n if (key === 'data') {\n if (propsObject != null && (propsObject[key] !== undefined || hasOwnProperty(propsObject, key))) {\n return propsObject[key]\n }\n return key in target ? target[key] : fallback\n }\n const hasPropsValue = propsObject != null\n && (propsObject[key] !== undefined || hasOwnProperty(propsObject, key))\n if (preferProps) {\n if (hasPropsValue) {\n return propsObject[key]\n }\n if (key in target) {\n return target[key]\n }\n return fallback\n }\n const stateObject = unref(target.$state)\n const setupStateObject = stateObject?.[WEVU_SETUP_STATE_KEY]\n if (setupStateObject != null && hasOwnProperty(setupStateObject, key)) {\n return target[key]\n }\n if (stateObject != null && hasOwnProperty(stateObject, key)) {\n return stateObject[key]\n }\n if (hasPropsValue) {\n return propsObject[key]\n }\n if (!(key in target)) {\n return fallback\n }\n return target[key]\n}\n"],"mappings":";;;;;AAIA,SAAS,eAAe,QAAgB,KAAa;CACnD,OAAO,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG;AACzD;AAEA,SAAS,YAAY,MAAc,MAAc;CAC/C,IAAI,CAAC,MACH,OAAO;CAET,IAAI,CAAC,MACH,OAAO;CAET,IAAI,OAAO;CACX,IAAI,CAAC,KAAK,SAAS,GAAG,GACpB,QAAQ;CAEV,MAAM,aAAa,KAAK,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,IAAI;CAC1D,OAAO,OAAO;AAChB;AAEA,SAAS,eAAe,OAA4B;CAClD,IAAI,MAAM;CACV,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG;EACpC,MAAM,MAAM,MAAM,MAAM,IAAI;EAC5B,IAAI,OAAO,MACT;EAEF,MAAM,OAAO,IAAI,WAAW,IAAI,IAAI,MAAM,UAAU,GAAG;EACvD,IAAI,MAAM,QAAQ,GAAG,GACnB,KAAK,MAAM,aAAa,KAAK;GAC3B,MAAM,OAAO,MAAM,SAAS;GAC5B,IAAI,QAAQ,MACV;GAEF,MAAM,YAAY,KAAK,GAAG,KAAK,GAAG,MAAM;EAC1C;OAGA,MAAM,YAAY,KAAK,GAAG,KAAK,GAAG,KAAK;CAE3C;CACA,OAAO;AACT;AAEA,SAAgB,eAAe,OAAoB;CACjD,MAAM,YAAY,MAAM,KAAK;CAC7B,IAAI,aAAa,MACf,OAAO;CAET,IAAI,OAAO,cAAc,UACvB,OAAO;CAET,IAAI,MAAM,QAAQ,SAAS,GAAG;EAC5B,IAAI,MAAM;EACV,KAAK,MAAM,QAAQ,WAAW;GAC5B,MAAM,aAAa,eAAe,IAAI;GACtC,IAAI,YACF,MAAM,YAAY,KAAK,UAAU;EAErC;EACA,OAAO;CACT;CACA,IAAI,OAAO,cAAc,UACvB,OAAO,eAAe,SAAS;CAEjC,OAAO;AACT;AAEA,SAAgB,eAAe,OAAoB;CACjD,MAAM,YAAY,MAAM,KAAK;CAC7B,IAAI,MAAM;CACV,IAAI,CAAC,WACH,OAAO;CAET,IAAI,OAAO,cAAc,UACvB,OAAO;CAET,IAAI,MAAM,QAAQ,SAAS,GAAG;EAC5B,KAAK,MAAM,QAAQ,WAAW;GAC5B,MAAM,aAAa,eAAe,IAAI;GACtC,IAAI,YACF,OAAO,GAAG,WAAW;EAEzB;EACA,OAAO,IAAI,KAAK;CAClB;CACA,IAAI,OAAO,cAAc,UAAU;EACjC,KAAK,MAAM,OAAO,OAAO,KAAK,SAAS,GACrC,IAAI,MAAM,UAAU,IAAI,GACtB,OAAO,GAAG,IAAI;EAGlB,OAAO,IAAI,KAAK;CAClB;CACA,OAAO;AACT;AAEA,SAAgB,iBAAiB,QAAa,KAAa,UAAe,cAAc,OAAO;CAC7F,IAAI,UAAU,MACZ,OAAO;CAET,MAAM,cAAc,MAAM,OAAO,WAAW;CAC5C,IAAI,QAAQ,QAAQ;EAClB,IAAI,eAAe,SAAS,YAAY,SAAS,UAAa,eAAe,aAAa,GAAG,IAC3F,OAAO,YAAY;EAErB,OAAO,OAAO,SAAS,OAAO,OAAO;CACvC;CACA,MAAM,gBAAgB,eAAe,SAC/B,YAAY,SAAS,UAAa,eAAe,aAAa,GAAG;CACvE,IAAI,aAAa;EACf,IAAI,eACF,OAAO,YAAY;EAErB,IAAI,OAAO,QACT,OAAO,OAAO;EAEhB,OAAO;CACT;CACA,MAAM,cAAc,MAAM,OAAO,MAAM;CACvC,MAAM,
|
|
1
|
+
{"version":3,"file":"template.mjs","names":[],"sources":["../../../src/runtime/template.ts"],"sourcesContent":["import { WEVU_SETUP_STATE_KEY } from '@weapp-core/constants'\nimport { unref } from '../reactivity'\nimport { hyphenate } from '../utils'\n\nfunction hasOwnProperty(target: object, key: string) {\n return Object.prototype.hasOwnProperty.call(target, key)\n}\n\nfunction appendStyle(base: string, part: string) {\n if (!part) {\n return base\n }\n if (!base) {\n return part\n }\n let next = base\n if (!next.endsWith(';')) {\n next += ';'\n }\n const normalized = part.startsWith(';') ? part.slice(1) : part\n return next + normalized\n}\n\nfunction stringifyStyle(value: Record<string, any>) {\n let res = ''\n for (const key of Object.keys(value)) {\n const raw = unref(value[key])\n if (raw == null) {\n continue\n }\n const name = key.startsWith('--') ? key : hyphenate(key)\n if (Array.isArray(raw)) {\n for (const itemValue of raw) {\n const item = unref(itemValue)\n if (item == null) {\n continue\n }\n res = appendStyle(res, `${name}:${item}`)\n }\n }\n else {\n res = appendStyle(res, `${name}:${raw}`)\n }\n }\n return res\n}\n\nexport function normalizeStyle(value: any): string {\n const unwrapped = unref(value)\n if (unwrapped == null) {\n return ''\n }\n if (typeof unwrapped === 'string') {\n return unwrapped\n }\n if (Array.isArray(unwrapped)) {\n let res = ''\n for (const item of unwrapped) {\n const normalized = normalizeStyle(item)\n if (normalized) {\n res = appendStyle(res, normalized)\n }\n }\n return res\n }\n if (typeof unwrapped === 'object') {\n return stringifyStyle(unwrapped)\n }\n return ''\n}\n\nexport function normalizeClass(value: any): string {\n const unwrapped = unref(value)\n let res = ''\n if (!unwrapped) {\n return res\n }\n if (typeof unwrapped === 'string') {\n return unwrapped\n }\n if (Array.isArray(unwrapped)) {\n for (const item of unwrapped) {\n const normalized = normalizeClass(item)\n if (normalized) {\n res += `${normalized} `\n }\n }\n return res.trim()\n }\n if (typeof unwrapped === 'object') {\n for (const key of Object.keys(unwrapped)) {\n if (unref(unwrapped[key])) {\n res += `${key} `\n }\n }\n return res.trim()\n }\n return res\n}\n\nexport function resolvePropValue(target: any, key: string, fallback: any, preferProps = false) {\n if (target == null) {\n return fallback\n }\n const propsObject = unref(target.__wevuProps)\n if (key === 'data') {\n if (propsObject != null && (propsObject[key] !== undefined || hasOwnProperty(propsObject, key))) {\n return propsObject[key]\n }\n return key in target ? target[key] : fallback\n }\n const hasPropsValue = propsObject != null\n && (propsObject[key] !== undefined || hasOwnProperty(propsObject, key))\n if (preferProps) {\n if (hasPropsValue) {\n return propsObject[key]\n }\n if (key in target) {\n return target[key]\n }\n return fallback\n }\n const stateObject = unref(target.$state)\n const setupStateObject = stateObject?.[WEVU_SETUP_STATE_KEY]\n if (setupStateObject != null && hasOwnProperty(setupStateObject, key)) {\n return target[key]\n }\n if (stateObject != null && hasOwnProperty(stateObject, key)) {\n return stateObject[key]\n }\n if (hasPropsValue) {\n return propsObject[key]\n }\n if (!(key in target)) {\n return fallback\n }\n return target[key]\n}\n"],"mappings":";;;;;AAIA,SAAS,eAAe,QAAgB,KAAa;CACnD,OAAO,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG;AACzD;AAEA,SAAS,YAAY,MAAc,MAAc;CAC/C,IAAI,CAAC,MACH,OAAO;CAET,IAAI,CAAC,MACH,OAAO;CAET,IAAI,OAAO;CACX,IAAI,CAAC,KAAK,SAAS,GAAG,GACpB,QAAQ;CAEV,MAAM,aAAa,KAAK,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,IAAI;CAC1D,OAAO,OAAO;AAChB;AAEA,SAAS,eAAe,OAA4B;CAClD,IAAI,MAAM;CACV,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG;EACpC,MAAM,MAAM,MAAM,MAAM,IAAI;EAC5B,IAAI,OAAO,MACT;EAEF,MAAM,OAAO,IAAI,WAAW,IAAI,IAAI,MAAM,UAAU,GAAG;EACvD,IAAI,MAAM,QAAQ,GAAG,GACnB,KAAK,MAAM,aAAa,KAAK;GAC3B,MAAM,OAAO,MAAM,SAAS;GAC5B,IAAI,QAAQ,MACV;GAEF,MAAM,YAAY,KAAK,GAAG,KAAK,GAAG,MAAM;EAC1C;OAGA,MAAM,YAAY,KAAK,GAAG,KAAK,GAAG,KAAK;CAE3C;CACA,OAAO;AACT;AAEA,SAAgB,eAAe,OAAoB;CACjD,MAAM,YAAY,MAAM,KAAK;CAC7B,IAAI,aAAa,MACf,OAAO;CAET,IAAI,OAAO,cAAc,UACvB,OAAO;CAET,IAAI,MAAM,QAAQ,SAAS,GAAG;EAC5B,IAAI,MAAM;EACV,KAAK,MAAM,QAAQ,WAAW;GAC5B,MAAM,aAAa,eAAe,IAAI;GACtC,IAAI,YACF,MAAM,YAAY,KAAK,UAAU;EAErC;EACA,OAAO;CACT;CACA,IAAI,OAAO,cAAc,UACvB,OAAO,eAAe,SAAS;CAEjC,OAAO;AACT;AAEA,SAAgB,eAAe,OAAoB;CACjD,MAAM,YAAY,MAAM,KAAK;CAC7B,IAAI,MAAM;CACV,IAAI,CAAC,WACH,OAAO;CAET,IAAI,OAAO,cAAc,UACvB,OAAO;CAET,IAAI,MAAM,QAAQ,SAAS,GAAG;EAC5B,KAAK,MAAM,QAAQ,WAAW;GAC5B,MAAM,aAAa,eAAe,IAAI;GACtC,IAAI,YACF,OAAO,GAAG,WAAW;EAEzB;EACA,OAAO,IAAI,KAAK;CAClB;CACA,IAAI,OAAO,cAAc,UAAU;EACjC,KAAK,MAAM,OAAO,OAAO,KAAK,SAAS,GACrC,IAAI,MAAM,UAAU,IAAI,GACtB,OAAO,GAAG,IAAI;EAGlB,OAAO,IAAI,KAAK;CAClB;CACA,OAAO;AACT;AAEA,SAAgB,iBAAiB,QAAa,KAAa,UAAe,cAAc,OAAO;CAC7F,IAAI,UAAU,MACZ,OAAO;CAET,MAAM,cAAc,MAAM,OAAO,WAAW;CAC5C,IAAI,QAAQ,QAAQ;EAClB,IAAI,eAAe,SAAS,YAAY,SAAS,UAAa,eAAe,aAAa,GAAG,IAC3F,OAAO,YAAY;EAErB,OAAO,OAAO,SAAS,OAAO,OAAO;CACvC;CACA,MAAM,gBAAgB,eAAe,SAC/B,YAAY,SAAS,UAAa,eAAe,aAAa,GAAG;CACvE,IAAI,aAAa;EACf,IAAI,eACF,OAAO,YAAY;EAErB,IAAI,OAAO,QACT,OAAO,OAAO;EAEhB,OAAO;CACT;CACA,MAAM,cAAc,MAAM,OAAO,MAAM;CACvC,MAAM,mBAAmB,cAAc;CACvC,IAAI,oBAAoB,QAAQ,eAAe,kBAAkB,GAAG,GAClE,OAAO,OAAO;CAEhB,IAAI,eAAe,QAAQ,eAAe,aAAa,GAAG,GACxD,OAAO,YAAY;CAErB,IAAI,eACF,OAAO,YAAY;CAErB,IAAI,EAAE,OAAO,SACX,OAAO;CAET,OAAO,OAAO;AAChB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { markRaw } from "../../reactivity/reactive.mjs";
|
|
2
2
|
import { isRef } from "../../reactivity/ref.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { getCurrentMiniProgramGlobalObject, getCurrentMiniProgramRuntimeCapabilities } from "../platform/current.mjs";
|
|
4
|
+
import { supportsCurrentMiniProgramRuntimeCapability } from "../platform.mjs";
|
|
4
5
|
import { markNoSetData } from "../noSetData.mjs";
|
|
5
6
|
import { WEVU_EXPOSED_KEY, WEVU_PUBLIC_RUNTIME_KEY, WEVU_READY_CALLED_KEY, WEVU_TEMPLATE_REF_MAP_KEY } from "@weapp-core/constants";
|
|
6
7
|
|
|
@@ -41,7 +42,7 @@ function getExposeProxy(target, exposed) {
|
|
|
41
42
|
enumerable: false,
|
|
42
43
|
writable: false
|
|
43
44
|
});
|
|
44
|
-
} catch
|
|
45
|
+
} catch {
|
|
45
46
|
target.__wevuExposeProxy = proxy;
|
|
46
47
|
target.__wevuExposeRaw = exposed;
|
|
47
48
|
}
|
|
@@ -51,7 +52,7 @@ function mergeComponentRefValue(wrapper, exposed, resolveCurrent) {
|
|
|
51
52
|
if ((!exposed || typeof exposed !== "object") && !resolveCurrent) return wrapper;
|
|
52
53
|
const source = exposed && typeof exposed === "object" ? exposed : Object.create(null);
|
|
53
54
|
const getSource = () => {
|
|
54
|
-
const current = resolveCurrent
|
|
55
|
+
const current = resolveCurrent?.();
|
|
55
56
|
return current && typeof current === "object" ? current : source;
|
|
56
57
|
};
|
|
57
58
|
markRaw(wrapper);
|
|
@@ -94,13 +95,12 @@ function mergeComponentRefValue(wrapper, exposed, resolveCurrent) {
|
|
|
94
95
|
return markNoSetData(merged);
|
|
95
96
|
}
|
|
96
97
|
function resolveComponentPublicInstance(value) {
|
|
97
|
-
|
|
98
|
-
if (!value || typeof value !== "object") return value !== null && value !== void 0 ? value : null;
|
|
98
|
+
if (!value || typeof value !== "object") return value ?? null;
|
|
99
99
|
const instance = value;
|
|
100
100
|
if (instance.__wevu && !instance[WEVU_READY_CALLED_KEY]) return null;
|
|
101
101
|
const exposed = instance[WEVU_EXPOSED_KEY];
|
|
102
102
|
if (exposed && typeof exposed === "object") return getExposeProxy(instance, exposed);
|
|
103
|
-
if (
|
|
103
|
+
if (instance[WEVU_PUBLIC_RUNTIME_KEY]?.proxy) return instance[WEVU_PUBLIC_RUNTIME_KEY].proxy;
|
|
104
104
|
return value;
|
|
105
105
|
}
|
|
106
106
|
function getTemplateRefMap(target) {
|
|
@@ -112,17 +112,15 @@ function updateTemplateRefMapValue(refMap, name, value) {
|
|
|
112
112
|
if (entry) entry.value = value;
|
|
113
113
|
}
|
|
114
114
|
function resolveTemplateRefTarget(target, binding, evaluationTarget = target) {
|
|
115
|
-
|
|
116
|
-
const proxy = (_evaluationTarget$__w = (_evaluationTarget$__w2 = evaluationTarget.__wevu) === null || _evaluationTarget$__w2 === void 0 ? void 0 : _evaluationTarget$__w2.proxy) !== null && _evaluationTarget$__w !== void 0 ? _evaluationTarget$__w : evaluationTarget;
|
|
115
|
+
const proxy = evaluationTarget.__wevu?.proxy ?? evaluationTarget;
|
|
117
116
|
let resolved;
|
|
118
117
|
if (binding.get) try {
|
|
119
118
|
resolved = binding.get.call(proxy);
|
|
120
|
-
} catch
|
|
119
|
+
} catch {
|
|
121
120
|
resolved = void 0;
|
|
122
121
|
}
|
|
123
122
|
if (resolved == null && binding.name) {
|
|
124
|
-
|
|
125
|
-
const setupBinding = (_target$__wevu = target.__wevu) === null || _target$__wevu === void 0 || (_target$__wevu = _target$__wevu.setupState) === null || _target$__wevu === void 0 ? void 0 : _target$__wevu[binding.name];
|
|
123
|
+
const setupBinding = target.__wevu?.setupState?.[binding.name];
|
|
126
124
|
if (isRef(setupBinding) || typeof setupBinding === "function") resolved = setupBinding;
|
|
127
125
|
}
|
|
128
126
|
if (resolved == null && binding.name) resolved = binding.name;
|
|
@@ -145,8 +143,7 @@ function resolveTemplateRefTarget(target, binding, evaluationTarget = target) {
|
|
|
145
143
|
return { type: "skip" };
|
|
146
144
|
}
|
|
147
145
|
function ensureRefsContainer(target) {
|
|
148
|
-
|
|
149
|
-
const runtimeState = (_target$__wevu$state = (_target$__wevu2 = target.__wevu) === null || _target$__wevu2 === void 0 ? void 0 : _target$__wevu2.state) !== null && _target$__wevu$state !== void 0 ? _target$__wevu$state : target;
|
|
146
|
+
const runtimeState = target.__wevu?.state ?? target;
|
|
150
147
|
const existing = runtimeState.$refs;
|
|
151
148
|
if (existing && typeof existing === "object") return existing;
|
|
152
149
|
const refs = markNoSetData(Object.create(null));
|
|
@@ -162,7 +159,7 @@ function createSelectorQuery(target) {
|
|
|
162
159
|
const instance = target;
|
|
163
160
|
if (instance && typeof instance.createSelectorQuery === "function") return instance.createSelectorQuery();
|
|
164
161
|
if (!supportsCurrentMiniProgramRuntimeCapability("globalCreateSelectorQuery")) return null;
|
|
165
|
-
const miniProgramGlobal =
|
|
162
|
+
const miniProgramGlobal = getCurrentMiniProgramGlobalObject();
|
|
166
163
|
if (miniProgramGlobal && typeof miniProgramGlobal.createSelectorQuery === "function") {
|
|
167
164
|
const query = miniProgramGlobal.createSelectorQuery();
|
|
168
165
|
if (!query) return null;
|
|
@@ -181,17 +178,10 @@ function runQuery(target, selector, options, apply, cb) {
|
|
|
181
178
|
apply(options.multiple ? query.selectAll(selector) : query.select(selector));
|
|
182
179
|
return new Promise((resolve) => {
|
|
183
180
|
query.exec((res) => {
|
|
184
|
-
var _result2;
|
|
185
181
|
let result = Array.isArray(res) ? res[0] : null;
|
|
186
|
-
if (options.index != null && Array.isArray(result))
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}
|
|
190
|
-
if (cb) {
|
|
191
|
-
var _result;
|
|
192
|
-
cb((_result = result) !== null && _result !== void 0 ? _result : null);
|
|
193
|
-
}
|
|
194
|
-
resolve((_result2 = result) !== null && _result2 !== void 0 ? _result2 : null);
|
|
182
|
+
if (options.index != null && Array.isArray(result)) result = result[options.index] ?? null;
|
|
183
|
+
if (cb) cb(result ?? null);
|
|
184
|
+
resolve(result ?? null);
|
|
195
185
|
});
|
|
196
186
|
});
|
|
197
187
|
}
|
|
@@ -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 '../capabilities'\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 '../capabilities'\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 { getCurrentMiniProgramGlobalObject, getCurrentMiniProgramRuntimeCapabilities, 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 = getCurrentMiniProgramGlobalObject()\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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"}
|
|
@@ -47,10 +47,7 @@ function settleTemplateRefBatch(batch, failed = false, cause) {
|
|
|
47
47
|
hasError = true;
|
|
48
48
|
firstError = cause;
|
|
49
49
|
}
|
|
50
|
-
} else
|
|
51
|
-
var _completion$onResolve;
|
|
52
|
-
(_completion$onResolve = completion.onResolved) === null || _completion$onResolve === void 0 || _completion$onResolve.call(completion);
|
|
53
|
-
}
|
|
50
|
+
} else completion.onResolved?.();
|
|
54
51
|
} catch (error) {
|
|
55
52
|
if (!hasError) {
|
|
56
53
|
hasError = true;
|
|
@@ -64,7 +61,7 @@ function runTemplateRefBatch(batch) {
|
|
|
64
61
|
const { target, assignmentTarget } = batch;
|
|
65
62
|
try {
|
|
66
63
|
const bindings = target[WEVU_TEMPLATE_REFS_KEY];
|
|
67
|
-
if (!ownsTemplateRefAssignment(batch) || !
|
|
64
|
+
if (!ownsTemplateRefAssignment(batch) || !bindings?.length || !target[WEVU_READY_CALLED_KEY] || !target.__wevu) {
|
|
68
65
|
settleTemplateRefBatch(batch);
|
|
69
66
|
return;
|
|
70
67
|
}
|
|
@@ -75,12 +72,11 @@ function runTemplateRefBatch(batch) {
|
|
|
75
72
|
value: resolveComponentRefValue(target, binding)
|
|
76
73
|
}));
|
|
77
74
|
const applyEntries = (entries) => {
|
|
78
|
-
var _batch$runtime$proxy, _batch$runtime;
|
|
79
75
|
if (!ownsTemplateRefAssignment(batch)) return;
|
|
80
76
|
const refsContainer = ensureRefsContainer(assignmentTarget);
|
|
81
77
|
const nameEntries = /* @__PURE__ */ new Map();
|
|
82
78
|
const nextNames = /* @__PURE__ */ new Set();
|
|
83
|
-
const proxy =
|
|
79
|
+
const proxy = batch.runtime?.proxy ?? target;
|
|
84
80
|
for (const { binding, value } of entries) {
|
|
85
81
|
if (!ownsTemplateRefAssignment(batch)) return;
|
|
86
82
|
const resolved = resolveTemplateRefTarget(assignmentTarget, binding, target);
|
|
@@ -90,7 +86,7 @@ function runTemplateRefBatch(batch) {
|
|
|
90
86
|
if (!ownsTemplateRefAssignment(batch)) return;
|
|
91
87
|
resolved.fn.call(proxy, item);
|
|
92
88
|
}
|
|
93
|
-
else resolved.fn.call(proxy, binding.inFor && Array.isArray(value) ? null : value
|
|
89
|
+
else resolved.fn.call(proxy, binding.inFor && Array.isArray(value) ? null : value ?? null);
|
|
94
90
|
continue;
|
|
95
91
|
}
|
|
96
92
|
if (resolved.type === "ref") {
|
|
@@ -98,9 +94,8 @@ function runTemplateRefBatch(batch) {
|
|
|
98
94
|
continue;
|
|
99
95
|
}
|
|
100
96
|
if (resolved.type === "name") {
|
|
101
|
-
var _nameEntries$get;
|
|
102
97
|
nextNames.add(resolved.name);
|
|
103
|
-
const entry =
|
|
98
|
+
const entry = nameEntries.get(resolved.name) ?? {
|
|
104
99
|
values: [],
|
|
105
100
|
count: 0,
|
|
106
101
|
hasFor: false
|
|
@@ -159,11 +154,10 @@ function runTemplateRefBatch(batch) {
|
|
|
159
154
|
function completeEmptyTemplateRefs(target, onResolved) {
|
|
160
155
|
const owner = templateRefOwners.get(target);
|
|
161
156
|
if (owner) owner.current = void 0;
|
|
162
|
-
onResolved
|
|
157
|
+
onResolved?.();
|
|
163
158
|
}
|
|
164
159
|
function scheduleTemplateRefUpdate(target, onResolved, assignmentTarget = target, onRejected) {
|
|
165
|
-
|
|
166
|
-
if (!(bindings === null || bindings === void 0 ? void 0 : bindings.length)) {
|
|
160
|
+
if (!target[WEVU_TEMPLATE_REFS_KEY]?.length) {
|
|
167
161
|
completeEmptyTemplateRefs(target, onResolved);
|
|
168
162
|
return;
|
|
169
163
|
}
|
|
@@ -192,7 +186,6 @@ function scheduleTemplateRefUpdate(target, onResolved, assignmentTarget = target
|
|
|
192
186
|
});
|
|
193
187
|
}
|
|
194
188
|
function clearTemplateRefs(target, assignmentTarget = target) {
|
|
195
|
-
var _target$__wevu$proxy, _target$__wevu;
|
|
196
189
|
const owner = templateRefOwners.get(target);
|
|
197
190
|
if (owner) {
|
|
198
191
|
owner.generation += 1;
|
|
@@ -203,7 +196,7 @@ function clearTemplateRefs(target, assignmentTarget = target) {
|
|
|
203
196
|
const bindings = target[WEVU_TEMPLATE_REFS_KEY];
|
|
204
197
|
if (!bindings || !bindings.length) return;
|
|
205
198
|
const refsContainer = ensureRefsContainer(assignmentTarget);
|
|
206
|
-
const proxy =
|
|
199
|
+
const proxy = target.__wevu?.proxy ?? target;
|
|
207
200
|
const nextNames = /* @__PURE__ */ new Set();
|
|
208
201
|
const templateRefMap = getTemplateRefMap(assignmentTarget);
|
|
209
202
|
runTeardownSteps([...bindings.map((binding) => () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templateRefs.mjs","names":[],"sources":["../../../src/runtime/templateRefs.ts"],"sourcesContent":["import type { TemplateRefBinding } from './capabilities'\nimport type { InternalRuntimeState } from './types'\nimport {\n WEVU_READY_CALLED_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 { runTeardownSteps } from './teardown'\nimport {\n buildTemplateRefValue,\n createSelectorQuery,\n ensureRefsContainer,\n getTemplateRefMap,\n isComponentRef,\n resolveComponentRefValue,\n resolveTemplateRefTarget,\n updateTemplateRefMapValue,\n} from './templateRefs/helpers'\n\nexport type { TemplateRefBinding } from './capabilities'\n\ntype TemplateRefUpdateCallback = () => void\ntype TemplateRefUpdateRejection = (cause: unknown) => void\n\ninterface TemplateRefCompletion {\n onResolved?: TemplateRefUpdateCallback\n onRejected?: TemplateRefUpdateRejection\n}\n\ninterface TemplateRefOwner {\n generation: number\n current?: TemplateRefBatch\n pending?: TemplateRefBatch\n}\n\ninterface TemplateRefBatch {\n target: InternalRuntimeState\n assignmentTarget: InternalRuntimeState\n runtime: InternalRuntimeState['__wevu']\n assignmentRuntime: InternalRuntimeState['__wevu']\n owner: TemplateRefOwner\n assignmentOwner: TemplateRefOwner\n assignmentGeneration: number\n completions: TemplateRefCompletion[]\n settled: boolean\n}\n\nconst templateRefOwners = new WeakMap<InternalRuntimeState, TemplateRefOwner>()\n\nfunction getTemplateRefOwner(target: InternalRuntimeState) {\n let owner = templateRefOwners.get(target)\n if (!owner) {\n owner = { generation: 0 }\n templateRefOwners.set(target, owner)\n }\n return owner\n}\n\nfunction createTemplateRefBatch(target: InternalRuntimeState, assignmentTarget: InternalRuntimeState) {\n const owner = getTemplateRefOwner(target)\n const assignmentOwner = getTemplateRefOwner(assignmentTarget)\n const batch: TemplateRefBatch = {\n target,\n assignmentTarget,\n runtime: target.__wevu,\n assignmentRuntime: assignmentTarget.__wevu,\n owner,\n assignmentOwner,\n assignmentGeneration: assignmentOwner.generation,\n completions: [],\n settled: false,\n }\n owner.current = batch\n return batch\n}\n\nfunction ownsTemplateRefAssignment(batch: TemplateRefBatch) {\n return !batch.settled\n && batch.owner.current === batch\n && batch.target.__wevu === batch.runtime\n && batch.assignmentTarget.__wevu === batch.assignmentRuntime\n && batch.assignmentOwner.generation === batch.assignmentGeneration\n}\n\nfunction settleTemplateRefBatch(batch: TemplateRefBatch, failed = false, cause?: unknown) {\n if (batch.settled) {\n return\n }\n batch.settled = true\n if (batch.owner.current === batch) {\n batch.owner.current = undefined\n }\n let hasError = failed && !batch.completions.length\n let firstError = cause\n for (const completion of batch.completions) {\n try {\n if (failed) {\n if (completion.onRejected) {\n completion.onRejected(cause)\n }\n else if (!hasError) {\n hasError = true\n firstError = cause\n }\n }\n else {\n completion.onResolved?.()\n }\n }\n catch (error) {\n if (!hasError) {\n hasError = true\n firstError = error\n }\n }\n }\n batch.completions.length = 0\n if (hasError) {\n throw firstError\n }\n}\n\nfunction runTemplateRefBatch(batch: TemplateRefBatch) {\n const { target, assignmentTarget } = batch\n try {\n const bindings = target[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!ownsTemplateRefAssignment(batch) || !bindings?.length || !target[WEVU_READY_CALLED_KEY] || !target.__wevu) {\n settleTemplateRefBatch(batch)\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: unknown }>) => {\n if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n const refsContainer = ensureRefsContainer(assignmentTarget)\n const nameEntries = new Map<string, { values: unknown[], count: number, hasFor: boolean }>()\n const nextNames = new Set<string>()\n const proxy = batch.runtime?.proxy ?? target\n for (const { binding, value } of entries) {\n if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n const resolved = resolveTemplateRefTarget(assignmentTarget, binding, target)\n if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n\n if (resolved.type === 'function') {\n if (binding.inFor && Array.isArray(value) && value.length) {\n for (const item of value) {\n if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n resolved.fn.call(proxy, item)\n }\n }\n else {\n resolved.fn.call(proxy, binding.inFor && Array.isArray(value) ? null : value ?? null)\n }\n continue\n }\n\n if (resolved.type === 'ref') {\n resolved.ref.value = value\n continue\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 if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n let nextValue: unknown\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 if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n updateTemplateRefMapValue(templateRefMap, name, nextValue)\n }\n\n for (const key of Object.keys(refsContainer)) {\n if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n if (!nextNames.has(key)) {\n delete refsContainer[key]\n }\n }\n }\n\n const query = nodeBindings.length ? createSelectorQuery(target) : null\n if (!query) {\n applyEntries(componentEntries)\n settleTemplateRefBatch(batch)\n return\n }\n\n for (const binding of nodeBindings) {\n const nodesRef = binding.inFor ? query.selectAll(binding.selector) : query.select(binding.selector)\n nodesRef.boundingClientRect()\n }\n\n query.exec((res) => {\n if (batch.settled) {\n return\n }\n try {\n // 过期查询仍释放自己的完成通知,但不能向新一代 runtime 或 slot owner 回写。\n if (ownsTemplateRefAssignment(batch)) {\n const entries = nodeBindings.map((binding, index) => ({\n binding,\n value: buildTemplateRefValue(target, binding, Array.isArray(res) ? res[index] : null),\n }))\n applyEntries([...componentEntries, ...entries])\n }\n }\n catch (cause) {\n settleTemplateRefBatch(batch, true, cause)\n return\n }\n settleTemplateRefBatch(batch)\n })\n }\n catch (cause) {\n // 完成通知本身抛错时不能再次结算,也不能吞掉用户回调错误。\n if (batch.settled) {\n throw cause\n }\n settleTemplateRefBatch(batch, true, cause)\n }\n}\n\nfunction completeEmptyTemplateRefs(target: InternalRuntimeState, onResolved?: TemplateRefUpdateCallback) {\n const owner = templateRefOwners.get(target)\n if (owner) {\n owner.current = undefined\n }\n onResolved?.()\n}\n\nexport function updateTemplateRefs(\n target: InternalRuntimeState,\n onResolved?: TemplateRefUpdateCallback,\n assignmentTarget: InternalRuntimeState = target,\n onRejected?: TemplateRefUpdateRejection,\n) {\n const bindings = target[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings?.length) {\n completeEmptyTemplateRefs(target, onResolved)\n return\n }\n const batch = createTemplateRefBatch(target, assignmentTarget)\n if (onResolved || onRejected) {\n batch.completions.push({ onResolved, onRejected })\n }\n runTemplateRefBatch(batch)\n}\n\nexport function scheduleTemplateRefUpdate(\n target: InternalRuntimeState,\n onResolved?: TemplateRefUpdateCallback,\n assignmentTarget: InternalRuntimeState = target,\n onRejected?: TemplateRefUpdateRejection,\n) {\n const bindings = target[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings?.length) {\n completeEmptyTemplateRefs(target, onResolved)\n return\n }\n const owner = getTemplateRefOwner(target)\n const pending = owner.pending\n if (pending && pending.assignmentTarget === assignmentTarget && ownsTemplateRefAssignment(pending)) {\n if (onResolved || onRejected) {\n pending.completions.push({ onResolved, onRejected })\n }\n return\n }\n const batch = createTemplateRefBatch(target, assignmentTarget)\n if (onResolved || onRejected) {\n batch.completions.push({ onResolved, onRejected })\n }\n owner.pending = batch\n target[WEVU_TEMPLATE_REFS_PENDING_KEY] = true\n nextTick(() => {\n if (owner.pending === batch) {\n owner.pending = undefined\n target[WEVU_TEMPLATE_REFS_PENDING_KEY] = false\n }\n runTemplateRefBatch(batch)\n })\n}\n\nexport function clearTemplateRefs(\n target: InternalRuntimeState,\n assignmentTarget: InternalRuntimeState = target,\n) {\n const owner = templateRefOwners.get(target)\n if (owner) {\n owner.generation += 1\n owner.current = undefined\n owner.pending = undefined\n target[WEVU_TEMPLATE_REFS_PENDING_KEY] = false\n }\n const bindings = target[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 runTeardownSteps([\n ...bindings.map(binding => () => {\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 return\n }\n if (resolved.type === 'ref') {\n resolved.ref.value = emptyValue\n return\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 ])\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"templateRefs.mjs","names":[],"sources":["../../../src/runtime/templateRefs.ts"],"sourcesContent":["import type { TemplateRefBinding } from './capabilities'\nimport type { InternalRuntimeState } from './types'\nimport {\n WEVU_READY_CALLED_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 { runTeardownSteps } from './teardown'\nimport {\n buildTemplateRefValue,\n createSelectorQuery,\n ensureRefsContainer,\n getTemplateRefMap,\n isComponentRef,\n resolveComponentRefValue,\n resolveTemplateRefTarget,\n updateTemplateRefMapValue,\n} from './templateRefs/helpers'\n\nexport type { TemplateRefBinding } from './capabilities'\n\ntype TemplateRefUpdateCallback = () => void\ntype TemplateRefUpdateRejection = (cause: unknown) => void\n\ninterface TemplateRefCompletion {\n onResolved?: TemplateRefUpdateCallback\n onRejected?: TemplateRefUpdateRejection\n}\n\ninterface TemplateRefOwner {\n generation: number\n current?: TemplateRefBatch\n pending?: TemplateRefBatch\n}\n\ninterface TemplateRefBatch {\n target: InternalRuntimeState\n assignmentTarget: InternalRuntimeState\n runtime: InternalRuntimeState['__wevu']\n assignmentRuntime: InternalRuntimeState['__wevu']\n owner: TemplateRefOwner\n assignmentOwner: TemplateRefOwner\n assignmentGeneration: number\n completions: TemplateRefCompletion[]\n settled: boolean\n}\n\nconst templateRefOwners = new WeakMap<InternalRuntimeState, TemplateRefOwner>()\n\nfunction getTemplateRefOwner(target: InternalRuntimeState) {\n let owner = templateRefOwners.get(target)\n if (!owner) {\n owner = { generation: 0 }\n templateRefOwners.set(target, owner)\n }\n return owner\n}\n\nfunction createTemplateRefBatch(target: InternalRuntimeState, assignmentTarget: InternalRuntimeState) {\n const owner = getTemplateRefOwner(target)\n const assignmentOwner = getTemplateRefOwner(assignmentTarget)\n const batch: TemplateRefBatch = {\n target,\n assignmentTarget,\n runtime: target.__wevu,\n assignmentRuntime: assignmentTarget.__wevu,\n owner,\n assignmentOwner,\n assignmentGeneration: assignmentOwner.generation,\n completions: [],\n settled: false,\n }\n owner.current = batch\n return batch\n}\n\nfunction ownsTemplateRefAssignment(batch: TemplateRefBatch) {\n return !batch.settled\n && batch.owner.current === batch\n && batch.target.__wevu === batch.runtime\n && batch.assignmentTarget.__wevu === batch.assignmentRuntime\n && batch.assignmentOwner.generation === batch.assignmentGeneration\n}\n\nfunction settleTemplateRefBatch(batch: TemplateRefBatch, failed = false, cause?: unknown) {\n if (batch.settled) {\n return\n }\n batch.settled = true\n if (batch.owner.current === batch) {\n batch.owner.current = undefined\n }\n let hasError = failed && !batch.completions.length\n let firstError = cause\n for (const completion of batch.completions) {\n try {\n if (failed) {\n if (completion.onRejected) {\n completion.onRejected(cause)\n }\n else if (!hasError) {\n hasError = true\n firstError = cause\n }\n }\n else {\n completion.onResolved?.()\n }\n }\n catch (error) {\n if (!hasError) {\n hasError = true\n firstError = error\n }\n }\n }\n batch.completions.length = 0\n if (hasError) {\n throw firstError\n }\n}\n\nfunction runTemplateRefBatch(batch: TemplateRefBatch) {\n const { target, assignmentTarget } = batch\n try {\n const bindings = target[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!ownsTemplateRefAssignment(batch) || !bindings?.length || !target[WEVU_READY_CALLED_KEY] || !target.__wevu) {\n settleTemplateRefBatch(batch)\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: unknown }>) => {\n if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n const refsContainer = ensureRefsContainer(assignmentTarget)\n const nameEntries = new Map<string, { values: unknown[], count: number, hasFor: boolean }>()\n const nextNames = new Set<string>()\n const proxy = batch.runtime?.proxy ?? target\n for (const { binding, value } of entries) {\n if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n const resolved = resolveTemplateRefTarget(assignmentTarget, binding, target)\n if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n\n if (resolved.type === 'function') {\n if (binding.inFor && Array.isArray(value) && value.length) {\n for (const item of value) {\n if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n resolved.fn.call(proxy, item)\n }\n }\n else {\n resolved.fn.call(proxy, binding.inFor && Array.isArray(value) ? null : value ?? null)\n }\n continue\n }\n\n if (resolved.type === 'ref') {\n resolved.ref.value = value\n continue\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 if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n let nextValue: unknown\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 if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n updateTemplateRefMapValue(templateRefMap, name, nextValue)\n }\n\n for (const key of Object.keys(refsContainer)) {\n if (!ownsTemplateRefAssignment(batch)) {\n return\n }\n if (!nextNames.has(key)) {\n delete refsContainer[key]\n }\n }\n }\n\n const query = nodeBindings.length ? createSelectorQuery(target) : null\n if (!query) {\n applyEntries(componentEntries)\n settleTemplateRefBatch(batch)\n return\n }\n\n for (const binding of nodeBindings) {\n const nodesRef = binding.inFor ? query.selectAll(binding.selector) : query.select(binding.selector)\n nodesRef.boundingClientRect()\n }\n\n query.exec((res) => {\n if (batch.settled) {\n return\n }\n try {\n // 过期查询仍释放自己的完成通知,但不能向新一代 runtime 或 slot owner 回写。\n if (ownsTemplateRefAssignment(batch)) {\n const entries = nodeBindings.map((binding, index) => ({\n binding,\n value: buildTemplateRefValue(target, binding, Array.isArray(res) ? res[index] : null),\n }))\n applyEntries([...componentEntries, ...entries])\n }\n }\n catch (cause) {\n settleTemplateRefBatch(batch, true, cause)\n return\n }\n settleTemplateRefBatch(batch)\n })\n }\n catch (cause) {\n // 完成通知本身抛错时不能再次结算,也不能吞掉用户回调错误。\n if (batch.settled) {\n throw cause\n }\n settleTemplateRefBatch(batch, true, cause)\n }\n}\n\nfunction completeEmptyTemplateRefs(target: InternalRuntimeState, onResolved?: TemplateRefUpdateCallback) {\n const owner = templateRefOwners.get(target)\n if (owner) {\n owner.current = undefined\n }\n onResolved?.()\n}\n\nexport function updateTemplateRefs(\n target: InternalRuntimeState,\n onResolved?: TemplateRefUpdateCallback,\n assignmentTarget: InternalRuntimeState = target,\n onRejected?: TemplateRefUpdateRejection,\n) {\n const bindings = target[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings?.length) {\n completeEmptyTemplateRefs(target, onResolved)\n return\n }\n const batch = createTemplateRefBatch(target, assignmentTarget)\n if (onResolved || onRejected) {\n batch.completions.push({ onResolved, onRejected })\n }\n runTemplateRefBatch(batch)\n}\n\nexport function scheduleTemplateRefUpdate(\n target: InternalRuntimeState,\n onResolved?: TemplateRefUpdateCallback,\n assignmentTarget: InternalRuntimeState = target,\n onRejected?: TemplateRefUpdateRejection,\n) {\n const bindings = target[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings?.length) {\n completeEmptyTemplateRefs(target, onResolved)\n return\n }\n const owner = getTemplateRefOwner(target)\n const pending = owner.pending\n if (pending && pending.assignmentTarget === assignmentTarget && ownsTemplateRefAssignment(pending)) {\n if (onResolved || onRejected) {\n pending.completions.push({ onResolved, onRejected })\n }\n return\n }\n const batch = createTemplateRefBatch(target, assignmentTarget)\n if (onResolved || onRejected) {\n batch.completions.push({ onResolved, onRejected })\n }\n owner.pending = batch\n target[WEVU_TEMPLATE_REFS_PENDING_KEY] = true\n nextTick(() => {\n if (owner.pending === batch) {\n owner.pending = undefined\n target[WEVU_TEMPLATE_REFS_PENDING_KEY] = false\n }\n runTemplateRefBatch(batch)\n })\n}\n\nexport function clearTemplateRefs(\n target: InternalRuntimeState,\n assignmentTarget: InternalRuntimeState = target,\n) {\n const owner = templateRefOwners.get(target)\n if (owner) {\n owner.generation += 1\n owner.current = undefined\n owner.pending = undefined\n target[WEVU_TEMPLATE_REFS_PENDING_KEY] = false\n }\n const bindings = target[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 runTeardownSteps([\n ...bindings.map(binding => () => {\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 return\n }\n if (resolved.type === 'ref') {\n resolved.ref.value = emptyValue\n return\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 ])\n}\n"],"mappings":"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"}
|
|
@@ -12,13 +12,12 @@ function normalizeLocale(locale) {
|
|
|
12
12
|
return normalized.split("-")[0] || "en";
|
|
13
13
|
}
|
|
14
14
|
function withSafeAreaInsets(info = {}) {
|
|
15
|
-
var _info$safeArea;
|
|
16
15
|
if (info.safeAreaInsets) return info;
|
|
17
16
|
const windowWidth = normalizeDimension(info.windowWidth, normalizeDimension(info.screenWidth));
|
|
18
17
|
const windowHeight = normalizeDimension(info.windowHeight, normalizeDimension(info.screenHeight));
|
|
19
18
|
const screenWidth = normalizeDimension(info.screenWidth, windowWidth);
|
|
20
19
|
const screenHeight = normalizeDimension(info.screenHeight, windowHeight);
|
|
21
|
-
const safeArea =
|
|
20
|
+
const safeArea = info.safeArea ?? {
|
|
22
21
|
bottom: windowHeight,
|
|
23
22
|
left: 0,
|
|
24
23
|
right: windowWidth,
|
|
@@ -36,9 +35,8 @@ function withSafeAreaInsets(info = {}) {
|
|
|
36
35
|
};
|
|
37
36
|
}
|
|
38
37
|
function $on(eventName, handler) {
|
|
39
|
-
var _eventListeners$get;
|
|
40
38
|
if (typeof eventName !== "string" || typeof handler !== "function") return;
|
|
41
|
-
const listeners =
|
|
39
|
+
const listeners = eventListeners.get(eventName) ?? /* @__PURE__ */ new Set();
|
|
42
40
|
listeners.add({
|
|
43
41
|
handler,
|
|
44
42
|
original: handler
|
|
@@ -61,13 +59,12 @@ function $off(eventName, handler) {
|
|
|
61
59
|
if (listeners.size === 0) eventListeners.delete(eventName);
|
|
62
60
|
}
|
|
63
61
|
function $once(eventName, handler) {
|
|
64
|
-
var _eventListeners$get2;
|
|
65
62
|
if (typeof eventName !== "string" || typeof handler !== "function") return;
|
|
66
63
|
const onceHandler = (...args) => {
|
|
67
64
|
$off(eventName, handler);
|
|
68
65
|
handler(...args);
|
|
69
66
|
};
|
|
70
|
-
const listeners =
|
|
67
|
+
const listeners = eventListeners.get(eventName) ?? /* @__PURE__ */ new Set();
|
|
71
68
|
listeners.add({
|
|
72
69
|
handler: onceHandler,
|
|
73
70
|
original: handler
|
|
@@ -87,24 +84,19 @@ function createUniAppHost(host) {
|
|
|
87
84
|
if (cached) return cached;
|
|
88
85
|
const uni = Object.create(host);
|
|
89
86
|
hostAdapters.set(host, uni);
|
|
90
|
-
const getSystemInfoSnapshot = () => {
|
|
91
|
-
var _host$getSystemInfoSy, _host$getSystemInfoSy2;
|
|
92
|
-
return withSafeAreaInsets((_host$getSystemInfoSy = (_host$getSystemInfoSy2 = host.getSystemInfoSync) === null || _host$getSystemInfoSy2 === void 0 ? void 0 : _host$getSystemInfoSy2.call(host)) !== null && _host$getSystemInfoSy !== void 0 ? _host$getSystemInfoSy : {});
|
|
93
|
-
};
|
|
87
|
+
const getSystemInfoSnapshot = () => withSafeAreaInsets(host.getSystemInfoSync?.() ?? {});
|
|
94
88
|
Object.assign(uni, {
|
|
95
89
|
$emit,
|
|
96
90
|
$off,
|
|
97
91
|
$on,
|
|
98
92
|
$once,
|
|
99
93
|
getLocale() {
|
|
100
|
-
var _host$getAppBaseInfo$, _host$getAppBaseInfo;
|
|
101
94
|
if (typeof host.getLocale === "function") return normalizeLocale(host.getLocale());
|
|
102
|
-
return normalizeLocale(
|
|
95
|
+
return normalizeLocale(host.getAppBaseInfo?.().language ?? getSystemInfoSnapshot().language);
|
|
103
96
|
},
|
|
104
97
|
getSystemInfoSync: getSystemInfoSnapshot,
|
|
105
98
|
getWindowInfo() {
|
|
106
|
-
|
|
107
|
-
return withSafeAreaInsets((_host$getWindowInfo = (_host$getWindowInfo2 = host.getWindowInfo) === null || _host$getWindowInfo2 === void 0 ? void 0 : _host$getWindowInfo2.call(host)) !== null && _host$getWindowInfo !== void 0 ? _host$getWindowInfo : getSystemInfoSnapshot());
|
|
99
|
+
return withSafeAreaInsets(host.getWindowInfo?.() ?? getSystemInfoSnapshot());
|
|
108
100
|
},
|
|
109
101
|
rpx2px(value) {
|
|
110
102
|
const width = normalizeDimension(getSystemInfoSnapshot().windowWidth);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniAppHost.mjs","names":[],"sources":["../../../src/runtime/uniAppHost.ts"],"sourcesContent":["export type UniAppEventHandler = (...args: any[]) => void\n\ninterface UniAppEventListener {\n handler: UniAppEventHandler\n original: UniAppEventHandler\n}\n\ninterface UniAppSafeArea {\n bottom?: number\n left?: number\n right?: number\n top?: number\n}\n\ninterface UniAppSystemInfo {\n language?: string\n safeArea?: UniAppSafeArea\n safeAreaInsets?: UniAppSafeArea\n screenHeight?: number\n screenWidth?: number\n windowHeight?: number\n windowWidth?: number\n [key: string]: any\n}\n\ntype UniAppHost = Record<string, any>\n\nconst eventListeners = new Map<string, Set<UniAppEventListener>>()\nconst hostAdapters = new WeakMap<object, UniAppHost>()\n\nfunction normalizeDimension(value: unknown, fallback = 0) {\n const number = Number(value)\n return Number.isFinite(number) && number >= 0 ? number : fallback\n}\n\nfunction normalizeLocale(locale: unknown) {\n const normalized = String(locale || 'en').trim().replace('_', '-').toLowerCase()\n if (\n normalized === 'zh-tw'\n || normalized === 'zh-hk'\n || normalized === 'zh-mo'\n || normalized.startsWith('zh-hant')\n ) {\n return 'zh-Hant'\n }\n if (normalized.startsWith('zh')) {\n return 'zh-Hans'\n }\n return normalized.split('-')[0] || 'en'\n}\n\nfunction withSafeAreaInsets(info: UniAppSystemInfo = {}) {\n if (info.safeAreaInsets) {\n return info\n }\n const windowWidth = normalizeDimension(info.windowWidth, normalizeDimension(info.screenWidth))\n const windowHeight = normalizeDimension(info.windowHeight, normalizeDimension(info.screenHeight))\n const screenWidth = normalizeDimension(info.screenWidth, windowWidth)\n const screenHeight = normalizeDimension(info.screenHeight, windowHeight)\n const safeArea = info.safeArea ?? {\n bottom: windowHeight,\n left: 0,\n right: windowWidth,\n top: 0,\n }\n return {\n ...info,\n safeArea,\n safeAreaInsets: {\n bottom: Math.max(0, screenHeight - normalizeDimension(safeArea.bottom, windowHeight)),\n left: normalizeDimension(safeArea.left),\n right: Math.max(0, screenWidth - normalizeDimension(safeArea.right, windowWidth)),\n top: normalizeDimension(safeArea.top),\n },\n }\n}\n\nfunction $on(eventName: string, handler: UniAppEventHandler) {\n if (typeof eventName !== 'string' || typeof handler !== 'function') {\n return\n }\n const listeners = eventListeners.get(eventName) ?? new Set<UniAppEventListener>()\n listeners.add({ handler, original: handler })\n eventListeners.set(eventName, listeners)\n}\n\nfunction $off(eventName?: string, handler?: UniAppEventHandler) {\n if (eventName === undefined) {\n eventListeners.clear()\n return\n }\n if (typeof eventName !== 'string') {\n return\n }\n if (typeof handler !== 'function') {\n eventListeners.delete(eventName)\n return\n }\n const listeners = eventListeners.get(eventName)\n if (!listeners) {\n return\n }\n for (const listener of listeners) {\n if (listener.original === handler || listener.handler === handler) {\n listeners.delete(listener)\n }\n }\n if (listeners.size === 0) {\n eventListeners.delete(eventName)\n }\n}\n\nfunction $once(eventName: string, handler: UniAppEventHandler) {\n if (typeof eventName !== 'string' || typeof handler !== 'function') {\n return\n }\n const onceHandler: UniAppEventHandler = (...args) => {\n $off(eventName, handler)\n handler(...args)\n }\n const listeners = eventListeners.get(eventName) ?? new Set<UniAppEventListener>()\n listeners.add({ handler: onceHandler, original: handler })\n eventListeners.set(eventName, listeners)\n}\n\nfunction $emit(eventName: string, ...args: any[]) {\n const listeners = eventListeners.get(eventName)\n if (!listeners) {\n return\n }\n for (const { handler } of [...listeners]) {\n handler(...args)\n }\n}\n\n/**\n * 在原生小程序宿主上补齐 uni-app 专属 API,并保持未适配 API 继续继承宿主实现。\n */\nexport function createUniAppHost(host: UniAppHost): UniAppHost {\n const cached = hostAdapters.get(host)\n if (cached) {\n return cached\n }\n const uni = Object.create(host) as UniAppHost\n hostAdapters.set(host, uni)\n const getSystemInfoSnapshot = () => withSafeAreaInsets(host.getSystemInfoSync?.() ?? {})\n\n Object.assign(uni, {\n $emit,\n $off,\n $on,\n $once,\n getLocale() {\n if (typeof host.getLocale === 'function') {\n return normalizeLocale(host.getLocale())\n }\n const language = host.getAppBaseInfo?.().language ?? getSystemInfoSnapshot().language\n return normalizeLocale(language)\n },\n getSystemInfoSync: getSystemInfoSnapshot,\n getWindowInfo() {\n return withSafeAreaInsets(host.getWindowInfo?.() ?? getSystemInfoSnapshot())\n },\n rpx2px(value: number) {\n const width = normalizeDimension(getSystemInfoSnapshot().windowWidth)\n return Number.isFinite(value) && width > 0 ? value * width / 750 : 0\n },\n })\n\n return uni\n}\n"],"mappings":";AA2BA,MAAM,iCAAiB,IAAI,IAAsC;AACjE,MAAM,+BAAe,IAAI,QAA4B;AAErD,SAAS,mBAAmB,OAAgB,WAAW,GAAG;CACxD,MAAM,SAAS,OAAO,KAAK;CAC3B,OAAO,OAAO,SAAS,MAAM,KAAK,UAAU,IAAI,SAAS;AAC3D;AAEA,SAAS,gBAAgB,QAAiB;CACxC,MAAM,aAAa,OAAO,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,YAAY;CAC/E,IACE,eAAe,WACZ,eAAe,WACf,eAAe,WACf,WAAW,WAAW,SAAS,GAElC,OAAO;CAET,IAAI,WAAW,WAAW,IAAI,GAC5B,OAAO;CAET,OAAO,WAAW,MAAM,GAAG,CAAC,CAAC,MAAM;AACrC;AAEA,SAAS,mBAAmB,OAAyB,CAAC,GAAG
|
|
1
|
+
{"version":3,"file":"uniAppHost.mjs","names":[],"sources":["../../../src/runtime/uniAppHost.ts"],"sourcesContent":["export type UniAppEventHandler = (...args: any[]) => void\n\ninterface UniAppEventListener {\n handler: UniAppEventHandler\n original: UniAppEventHandler\n}\n\ninterface UniAppSafeArea {\n bottom?: number\n left?: number\n right?: number\n top?: number\n}\n\ninterface UniAppSystemInfo {\n language?: string\n safeArea?: UniAppSafeArea\n safeAreaInsets?: UniAppSafeArea\n screenHeight?: number\n screenWidth?: number\n windowHeight?: number\n windowWidth?: number\n [key: string]: any\n}\n\ntype UniAppHost = Record<string, any>\n\nconst eventListeners = new Map<string, Set<UniAppEventListener>>()\nconst hostAdapters = new WeakMap<object, UniAppHost>()\n\nfunction normalizeDimension(value: unknown, fallback = 0) {\n const number = Number(value)\n return Number.isFinite(number) && number >= 0 ? number : fallback\n}\n\nfunction normalizeLocale(locale: unknown) {\n const normalized = String(locale || 'en').trim().replace('_', '-').toLowerCase()\n if (\n normalized === 'zh-tw'\n || normalized === 'zh-hk'\n || normalized === 'zh-mo'\n || normalized.startsWith('zh-hant')\n ) {\n return 'zh-Hant'\n }\n if (normalized.startsWith('zh')) {\n return 'zh-Hans'\n }\n return normalized.split('-')[0] || 'en'\n}\n\nfunction withSafeAreaInsets(info: UniAppSystemInfo = {}) {\n if (info.safeAreaInsets) {\n return info\n }\n const windowWidth = normalizeDimension(info.windowWidth, normalizeDimension(info.screenWidth))\n const windowHeight = normalizeDimension(info.windowHeight, normalizeDimension(info.screenHeight))\n const screenWidth = normalizeDimension(info.screenWidth, windowWidth)\n const screenHeight = normalizeDimension(info.screenHeight, windowHeight)\n const safeArea = info.safeArea ?? {\n bottom: windowHeight,\n left: 0,\n right: windowWidth,\n top: 0,\n }\n return {\n ...info,\n safeArea,\n safeAreaInsets: {\n bottom: Math.max(0, screenHeight - normalizeDimension(safeArea.bottom, windowHeight)),\n left: normalizeDimension(safeArea.left),\n right: Math.max(0, screenWidth - normalizeDimension(safeArea.right, windowWidth)),\n top: normalizeDimension(safeArea.top),\n },\n }\n}\n\nfunction $on(eventName: string, handler: UniAppEventHandler) {\n if (typeof eventName !== 'string' || typeof handler !== 'function') {\n return\n }\n const listeners = eventListeners.get(eventName) ?? new Set<UniAppEventListener>()\n listeners.add({ handler, original: handler })\n eventListeners.set(eventName, listeners)\n}\n\nfunction $off(eventName?: string, handler?: UniAppEventHandler) {\n if (eventName === undefined) {\n eventListeners.clear()\n return\n }\n if (typeof eventName !== 'string') {\n return\n }\n if (typeof handler !== 'function') {\n eventListeners.delete(eventName)\n return\n }\n const listeners = eventListeners.get(eventName)\n if (!listeners) {\n return\n }\n for (const listener of listeners) {\n if (listener.original === handler || listener.handler === handler) {\n listeners.delete(listener)\n }\n }\n if (listeners.size === 0) {\n eventListeners.delete(eventName)\n }\n}\n\nfunction $once(eventName: string, handler: UniAppEventHandler) {\n if (typeof eventName !== 'string' || typeof handler !== 'function') {\n return\n }\n const onceHandler: UniAppEventHandler = (...args) => {\n $off(eventName, handler)\n handler(...args)\n }\n const listeners = eventListeners.get(eventName) ?? new Set<UniAppEventListener>()\n listeners.add({ handler: onceHandler, original: handler })\n eventListeners.set(eventName, listeners)\n}\n\nfunction $emit(eventName: string, ...args: any[]) {\n const listeners = eventListeners.get(eventName)\n if (!listeners) {\n return\n }\n for (const { handler } of [...listeners]) {\n handler(...args)\n }\n}\n\n/**\n * 在原生小程序宿主上补齐 uni-app 专属 API,并保持未适配 API 继续继承宿主实现。\n */\nexport function createUniAppHost(host: UniAppHost): UniAppHost {\n const cached = hostAdapters.get(host)\n if (cached) {\n return cached\n }\n const uni = Object.create(host) as UniAppHost\n hostAdapters.set(host, uni)\n const getSystemInfoSnapshot = () => withSafeAreaInsets(host.getSystemInfoSync?.() ?? {})\n\n Object.assign(uni, {\n $emit,\n $off,\n $on,\n $once,\n getLocale() {\n if (typeof host.getLocale === 'function') {\n return normalizeLocale(host.getLocale())\n }\n const language = host.getAppBaseInfo?.().language ?? getSystemInfoSnapshot().language\n return normalizeLocale(language)\n },\n getSystemInfoSync: getSystemInfoSnapshot,\n getWindowInfo() {\n return withSafeAreaInsets(host.getWindowInfo?.() ?? getSystemInfoSnapshot())\n },\n rpx2px(value: number) {\n const width = normalizeDimension(getSystemInfoSnapshot().windowWidth)\n return Number.isFinite(value) && width > 0 ? value * width / 750 : 0\n },\n })\n\n return uni\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updatePerformance.mjs","names":[],"sources":["../../../src/runtime/updatePerformance.ts"],"sourcesContent":["import type { InternalRuntimeState } from './types'\nimport { getCurrentInstance, onDetached, onUnload } from './hooks'\n\nexport type UpdatePerformanceListenerResult = Record<string, any>\nexport type UpdatePerformanceListener = (result: UpdatePerformanceListenerResult) => void\nexport type UseUpdatePerformanceListenerStopHandle = () => void\n\nfunction resolveUpdatePerformanceSetter(\n instance: InternalRuntimeState,\n): ((listener?: UpdatePerformanceListener) => void) | undefined {\n const nativeInstance = instance as Record<string, any>\n const candidate = nativeInstance.setUpdatePerformanceListener\n if (typeof candidate !== 'function') {\n return undefined\n }\n return (listener?: UpdatePerformanceListener) => {\n candidate.call(nativeInstance, listener)\n }\n}\n\n/**\n * 在 setup 中注册更新性能监听,并在卸载时自动清理。\n *\n * - 底层能力:`instance.setUpdatePerformanceListener(listener)`。\n * - 清理策略:卸载时回传 `undefined` 作为监听器,平台不支持时静默降级。\n */\nexport function useUpdatePerformanceListener(\n listener: UpdatePerformanceListener,\n): UseUpdatePerformanceListenerStopHandle {\n const instance = getCurrentInstance()\n if (!instance) {\n throw new Error('useUpdatePerformanceListener() 必须在 setup() 的同步阶段调用')\n }\n if (typeof listener !== 'function') {\n throw new TypeError('useUpdatePerformanceListener() 需要传入监听函数')\n }\n\n const setListener = resolveUpdatePerformanceSetter(instance)\n if (!setListener) {\n throw new Error('当前实例不支持 setUpdatePerformanceListener,请检查基础库版本或组件上下文')\n }\n\n setListener(listener)\n\n let stopped = false\n const stop = () => {\n if (stopped) {\n return\n }\n stopped = true\n try {\n setListener(undefined)\n }\n catch {\n // 忽略平台差异导致的清理异常,避免影响卸载流程\n }\n }\n\n onUnload(stop)\n onDetached(stop)\n\n return stop\n}\n"],"mappings":";;;;AAOA,SAAS,+BACP,UAC8D;CAC9D,MAAM,iBAAiB;CACvB,MAAM,YAAY,eAAe;CACjC,IAAI,OAAO,cAAc,YACvB;CAEF,QAAQ,aAAyC;EAC/C,UAAU,KAAK,gBAAgB,QAAQ;CACzC;AACF;;;;;;;AAQA,SAAgB,6BACd,UACwC;CACxC,MAAM,WAAW,mBAAmB;CACpC,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,oDAAoD;CAEtE,IAAI,OAAO,aAAa,YACtB,MAAM,IAAI,UAAU,yCAAyC;CAG/D,MAAM,cAAc,+BAA+B,QAAQ;CAC3D,IAAI,CAAC,aACH,MAAM,IAAI,MAAM,qDAAqD;CAGvE,YAAY,QAAQ;CAEpB,IAAI,UAAU;CACd,MAAM,aAAa;EACjB,IAAI,SACF;EAEF,UAAU;EACV,IAAI;GACF,YAAY,MAAS;EACvB,
|
|
1
|
+
{"version":3,"file":"updatePerformance.mjs","names":[],"sources":["../../../src/runtime/updatePerformance.ts"],"sourcesContent":["import type { InternalRuntimeState } from './types'\nimport { getCurrentInstance, onDetached, onUnload } from './hooks'\n\nexport type UpdatePerformanceListenerResult = Record<string, any>\nexport type UpdatePerformanceListener = (result: UpdatePerformanceListenerResult) => void\nexport type UseUpdatePerformanceListenerStopHandle = () => void\n\nfunction resolveUpdatePerformanceSetter(\n instance: InternalRuntimeState,\n): ((listener?: UpdatePerformanceListener) => void) | undefined {\n const nativeInstance = instance as Record<string, any>\n const candidate = nativeInstance.setUpdatePerformanceListener\n if (typeof candidate !== 'function') {\n return undefined\n }\n return (listener?: UpdatePerformanceListener) => {\n candidate.call(nativeInstance, listener)\n }\n}\n\n/**\n * 在 setup 中注册更新性能监听,并在卸载时自动清理。\n *\n * - 底层能力:`instance.setUpdatePerformanceListener(listener)`。\n * - 清理策略:卸载时回传 `undefined` 作为监听器,平台不支持时静默降级。\n */\nexport function useUpdatePerformanceListener(\n listener: UpdatePerformanceListener,\n): UseUpdatePerformanceListenerStopHandle {\n const instance = getCurrentInstance()\n if (!instance) {\n throw new Error('useUpdatePerformanceListener() 必须在 setup() 的同步阶段调用')\n }\n if (typeof listener !== 'function') {\n throw new TypeError('useUpdatePerformanceListener() 需要传入监听函数')\n }\n\n const setListener = resolveUpdatePerformanceSetter(instance)\n if (!setListener) {\n throw new Error('当前实例不支持 setUpdatePerformanceListener,请检查基础库版本或组件上下文')\n }\n\n setListener(listener)\n\n let stopped = false\n const stop = () => {\n if (stopped) {\n return\n }\n stopped = true\n try {\n setListener(undefined)\n }\n catch {\n // 忽略平台差异导致的清理异常,避免影响卸载流程\n }\n }\n\n onUnload(stop)\n onDetached(stop)\n\n return stop\n}\n"],"mappings":";;;;AAOA,SAAS,+BACP,UAC8D;CAC9D,MAAM,iBAAiB;CACvB,MAAM,YAAY,eAAe;CACjC,IAAI,OAAO,cAAc,YACvB;CAEF,QAAQ,aAAyC;EAC/C,UAAU,KAAK,gBAAgB,QAAQ;CACzC;AACF;;;;;;;AAQA,SAAgB,6BACd,UACwC;CACxC,MAAM,WAAW,mBAAmB;CACpC,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,oDAAoD;CAEtE,IAAI,OAAO,aAAa,YACtB,MAAM,IAAI,UAAU,yCAAyC;CAG/D,MAAM,cAAc,+BAA+B,QAAQ;CAC3D,IAAI,CAAC,aACH,MAAM,IAAI,MAAM,qDAAqD;CAGvE,YAAY,QAAQ;CAEpB,IAAI,UAAU;CACd,MAAM,aAAa;EACjB,IAAI,SACF;EAEF,UAAU;EACV,IAAI;GACF,YAAY,MAAS;EACvB,QACM,CAEN;CACF;CAEA,SAAS,IAAI;CACb,WAAW,IAAI;CAEf,OAAO;AACT"}
|