import { PropType, CSSProperties, HTMLAttributes } from 'vue';
import type { ExtractInternalPropTypes, ExtractPublicPropTypes } from '../../../_utils';
export interface ScrollTo {
(x: number, y: number): void;
(options: {
left?: number;
top?: number;
behavior?: ScrollBehavior;
debounce?: boolean;
}): void;
(options: {
el: HTMLElement;
behavior?: ScrollBehavior;
debounce?: boolean;
}): void;
(options: {
index: number;
elSize: number;
behavior?: ScrollBehavior;
debounce?: boolean;
}): void;
(options: {
position: 'top' | 'bottom';
behavior?: ScrollBehavior;
debounce?: boolean;
}): void;
}
export interface ScrollbarInst {
scrollTo: ScrollTo;
sync: () => void;
containerRef: HTMLElement | null;
contentRef: HTMLElement | null;
containerScrollTop: number;
}
declare const scrollbarProps: {
readonly size: {
readonly type: NumberConstructor;
readonly default: 5;
};
readonly duration: {
readonly type: NumberConstructor;
readonly default: 0;
};
readonly scrollable: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly xScrollable: {
readonly type: BooleanConstructor;
readonly default: false;
};
readonly container: PropType<() => HTMLElement | null | undefined>;
readonly content: PropType<() => HTMLElement | null | undefined>;
readonly containerStyle: PropType;
readonly contentClass: StringConstructor;
readonly contentStyle: PropType;
readonly horizontalRailStyle: PropType;
readonly verticalRailStyle: PropType;
readonly onScroll: PropType<(e: Event) => void>;
readonly onWheel: PropType<(e: WheelEvent) => void>;
readonly onResize: PropType<(e: ResizeObserverEntry) => void>;
readonly internalOnUpdateScrollLeft: PropType<(scrollLeft: number) => void>;
readonly theme: PropType>;
readonly themeOverrides: PropType>>;
readonly builtinThemeOverrides: PropType>>;
};
export declare type ScrollbarProps = ExtractPublicPropTypes;
export declare type ScrollbarInternalProps = ExtractInternalPropTypes;
declare const Scrollbar: import("vue").DefineComponent<{
readonly size: {
readonly type: NumberConstructor;
readonly default: 5;
};
readonly duration: {
readonly type: NumberConstructor;
readonly default: 0;
};
readonly scrollable: {
readonly type: BooleanConstructor;
readonly default: true;
};
readonly xScrollable: {
readonly type: BooleanConstructor;
readonly default: false;
};
readonly container: PropType<() => HTMLElement | null | undefined>;
readonly content: PropType<() => HTMLElement | null | undefined>;
readonly containerStyle: PropType;
readonly contentClass: StringConstructor;
readonly contentStyle: PropType;
readonly horizontalRailStyle: PropType;
readonly verticalRailStyle: PropType;
readonly onScroll: PropType<(e: Event) => void>;
readonly onWheel: PropType<(e: WheelEvent) => void>;
readonly onResize: PropType<(e: ResizeObserverEntry) => void>;
readonly internalOnUpdateScrollLeft: PropType<(scrollLeft: number) => void>;
readonly theme: PropType>;
readonly themeOverrides: PropType>>;
readonly builtinThemeOverrides: PropType>>;
}, {
sync: () => void;
scrollTo: ScrollTo;
mergedClsPrefix: import("vue").ComputedRef;
containerScrollTop: import("vue").Ref;
containerRef: import("vue").Ref;
contentRef: import("vue").Ref;
yRailRef: import("vue").Ref;
xRailRef: import("vue").Ref;
needYBar: import("vue").ComputedRef;
needXBar: import("vue").ComputedRef;
yBarSizePx: import("vue").ComputedRef;
xBarSizePx: import("vue").ComputedRef;
yBarTopPx: import("vue").ComputedRef;
xBarLeftPx: import("vue").ComputedRef;
isShowXBar: import("vue").Ref;
isShowYBar: import("vue").Ref;
isIos: boolean;
handleScroll: (e: Event) => void;
handleContentResize: () => void;
handleContainerResize: (e: ResizeObserverEntry) => void;
handleMouseEnterWrapper: () => void;
handleMouseLeaveWrapper: () => void;
handleYScrollMouseDown: (e: MouseEvent) => void;
handleXScrollMouseDown: (e: MouseEvent) => void;
cssVars: import("vue").ComputedRef<{
'--scrollbar-bezier': string;
'--scrollbar-color': string;
'--scrollbar-color-hover': string;
'--scrollbar-border-radius': string;
'--scrollbar-width': string;
'--scrollbar-height': string;
}>;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
readonly size?: unknown;
readonly duration?: unknown;
readonly scrollable?: unknown;
readonly xScrollable?: unknown;
readonly container?: unknown;
readonly content?: unknown;
readonly containerStyle?: unknown;
readonly contentClass?: unknown;
readonly contentStyle?: unknown;
readonly horizontalRailStyle?: unknown;
readonly verticalRailStyle?: unknown;
readonly onScroll?: unknown;
readonly onWheel?: unknown;
readonly onResize?: unknown;
readonly internalOnUpdateScrollLeft?: unknown;
readonly theme?: unknown;
readonly themeOverrides?: unknown;
readonly builtinThemeOverrides?: unknown;
} & {
size: number;
duration: number;
scrollable: boolean;
xScrollable: boolean;
} & {
content?: (() => HTMLElement | null | undefined) | undefined;
onScroll?: ((e: Event) => void) | undefined;
onWheel?: ((e: WheelEvent) => void) | undefined;
theme?: import("../../../_mixins").Theme<"Scrollbar", {
color: string;
colorHover: string;
}, any> | undefined;
themeOverrides?: import("../../../_mixins/use-theme").ExtractThemeOverrides> | undefined;
builtinThemeOverrides?: import("../../../_mixins/use-theme").ExtractThemeOverrides> | undefined;
onResize?: ((e: ResizeObserverEntry) => void) | undefined;
container?: (() => HTMLElement | null | undefined) | undefined;
containerStyle?: string | CSSProperties | undefined;
contentClass?: string | undefined;
contentStyle?: string | CSSProperties | undefined;
horizontalRailStyle?: string | CSSProperties | undefined;
verticalRailStyle?: string | CSSProperties | undefined;
internalOnUpdateScrollLeft?: ((scrollLeft: number) => void) | undefined;
}>, {
size: number;
duration: number;
scrollable: boolean;
xScrollable: boolean;
}>;
declare type NativeScrollbarProps = Omit;
declare type MergedProps = Partial;
export default Scrollbar;
export declare const XScrollbar: new () => {
$props: MergedProps;
};