50 lines
2.2 KiB
TypeScript
50 lines
2.2 KiB
TypeScript
import type { Ref } from 'vue';
|
|
export interface ScrollProps {
|
|
scrollTarget?: string;
|
|
scrollThreshold?: string | number;
|
|
}
|
|
export interface ThresholdMetCallbackData {
|
|
isScrollingUp: boolean;
|
|
currentThreshold: number;
|
|
savedScroll: Ref<number>;
|
|
}
|
|
export declare const makeScrollProps: <Defaults extends {
|
|
scrollTarget?: unknown;
|
|
scrollThreshold?: unknown;
|
|
} = {}>(defaults?: Defaults | undefined) => {
|
|
scrollTarget: unknown extends Defaults["scrollTarget"] ? {
|
|
type: StringConstructor;
|
|
} : Omit<{
|
|
type: StringConstructor;
|
|
}, "default" | "type"> & {
|
|
type: import("vue").PropType<unknown extends Defaults["scrollTarget"] ? string : string | Defaults["scrollTarget"]>;
|
|
default: unknown extends Defaults["scrollTarget"] ? string : string | Defaults["scrollTarget"];
|
|
};
|
|
scrollThreshold: unknown extends Defaults["scrollThreshold"] ? {
|
|
type: (NumberConstructor | StringConstructor)[];
|
|
default: number;
|
|
} : Omit<{
|
|
type: (NumberConstructor | StringConstructor)[];
|
|
default: number;
|
|
}, "default" | "type"> & {
|
|
type: import("vue").PropType<unknown extends Defaults["scrollThreshold"] ? string | number : string | number | Defaults["scrollThreshold"]>;
|
|
default: unknown extends Defaults["scrollThreshold"] ? string | number : Defaults["scrollThreshold"] | NonNullable<string | number>;
|
|
};
|
|
};
|
|
export interface ScrollArguments {
|
|
canScroll?: Readonly<Ref<boolean>>;
|
|
layoutSize?: Readonly<Ref<number>>;
|
|
}
|
|
export declare function useScroll(props: ScrollProps, args?: ScrollArguments): {
|
|
scrollThreshold: import("vue").ComputedRef<number>;
|
|
currentScroll: import("vue").ShallowRef<number, number>;
|
|
currentThreshold: import("vue").ShallowRef<number, number>;
|
|
isScrollActive: import("vue").ShallowRef<boolean, boolean>;
|
|
scrollRatio: import("vue").ComputedRef<number>;
|
|
isScrollingUp: import("vue").ShallowRef<boolean, boolean>;
|
|
savedScroll: import("vue").ShallowRef<number, number>;
|
|
isAtBottom: import("vue").ShallowRef<boolean, boolean>;
|
|
reachedBottomWhileScrollingDown: import("vue").ShallowRef<boolean, boolean>;
|
|
hasEnoughScrollableSpace: import("vue").ShallowRef<boolean, boolean>;
|
|
};
|