UNPKG

seitu

Version:
72 lines • 2.21 kB
import { i as Subscribable, n as Readable } from "../../index-B0IeflOl.mjs"; import { MaybeRefOrGetter, ShallowRef } from "vue"; //#region src/vue/composables/index.d.ts interface UseSubscriptionOptions<S extends Subscribable<any> & Readable<any>, R = S['~']['output']> { selector?: (value: S['~']['output']) => R; isEqual?: (prev: R, next: R) => boolean; } /** * Subscribe to a reactive value. Pass a handle or a ref/getter that returns one. * * @example Inline subscription * ```vue * <script setup lang="ts"> * import { createWebStorageValue } from 'seitu/web' * import { useSubscription } from 'seitu/vue' * import * as z from 'zod' * * const value = useSubscription( * createWebStorageValue({ type: 'sessionStorage', key: 'test', defaultValue: 0, schema: z.number() }), * ) * </script> * * <template> * <div>{{ value }}</div> * </template> * ``` * * @example Instance outside of the subscription * ```vue * <script setup lang="ts"> * import { createWebStorage } from 'seitu/web' * import { useSubscription } from 'seitu/vue' * import * as z from 'zod' * * const sessionStorage = createWebStorage({ * type: 'sessionStorage', * schemas: { count: z.number(), name: z.string() }, * defaultValues: { count: 0, name: '' }, * }) * * const value = useSubscription(sessionStorage) * </script> * * <template> * <div>{{ value.count }}</div> * </template> * ``` * * @example With selector * ```vue * <script setup lang="ts"> * import { createWebStorage } from 'seitu/web' * import { useSubscription } from 'seitu/vue' * import * as z from 'zod' * * const sessionStorage = createWebStorage({ * type: 'sessionStorage', * schemas: { count: z.number(), name: z.string() }, * defaultValues: { count: 0, name: '' }, * }) * * const count = useSubscription(sessionStorage, { selector: v => v.count }) * </script> * * <template> * <div>{{ count }}</div> * </template> * ``` */ declare function useSubscription<S extends Subscribable<any> & Readable<any>, R = S['~']['output']>(source: MaybeRefOrGetter<S>, options?: UseSubscriptionOptions<S, R>): Readonly<ShallowRef<R>>; //#endregion export { UseSubscriptionOptions, useSubscription };