import { ComponentInternalInstance } from 'vue'; export type ScrollIntoViewPosition = 'start' | 'center' | 'end' | 'nearest'; export interface ScrollIntoViewValueOptions { position?: ScrollIntoViewPosition; startOffset?: number; endOffset?: number; } export interface ScrollIntoViewOptions { position?: ScrollIntoViewPosition; startOffset?: number; endOffset?: number; duration?: number; } /** ``` page ╱ ╭───────────────╮ viewport ╭─│─ ─ ─ ─ ─ ─ ─ ─│─╮ ╱ │ │ ╭───────────╮ │ │ │ │ │ element │ │ │ │ │ ╰───────────╯ │ │ ╰─│─ ─ ─ ─ ─ ─ ─ ─│─╯ │ │ │ │ ╰───────────────╯ ``` # 参数 - viewportHeight: viewport 高度 - viewportScrollTop: viewport 垂直滚动值 - elementHeight: element 高度 - elementOffsetTop: element 距离页面顶部距离 # 选项 - position: element 在视窗中的位置(start, center, end, nearest) - startOffset: element 距离视窗顶部的偏移量 - endOffset: element 距离视窗底部的偏移量 # 结果值 - viewportScrollTop: viewport 新的垂直滚动值 */ export declare function getScrollIntoViewValue(viewportHeight: number, viewportScrollTop: number, elementHeight: number, elementOffsetTop: number, options?: ScrollIntoViewValueOptions): number; export interface NodeRect { top: number; right: number; bottom: number; left: number; height: number; width: number; } /** * uni boundingClientRect的 Promise 版本 * @param selector 组件选择器 * @param instance 父组件实例 * @returns Promise */ export declare function getBoundingClientRect(selector: string, instance: ComponentInternalInstance | null): Promise; /** * 获取可使用窗口尺寸 * @returns Promise<{width: number; height: number}> */ export declare function getViewportSize(): Promise<{ width: number; height: number; }>; export interface ViewportScrollInfo { scrollLeft: number; scrollTop: number; } /** * 获取可使用窗口尺寸、滚动信息 */ export declare function getViewportScrollInfo(): Promise; interface MatchScrollVisibleOptions { offset?: number; errorValue?: number; } /** * @description: 匹配元素列表中第一个位于滚动盒子可视区域的元素 */ export declare function matchScrollVisible(rects: NodeRect[], callback: (index: number) => unknown, options?: MatchScrollVisibleOptions): Promise; export declare function toTouchEvent(event: MouseEvent | TouchEvent, windowTop: number): TouchEvent | { touches: { clientX: number; clientY: number; }[]; altKey: boolean; button: number; buttons: number; clientX: number; clientY: number; ctrlKey: boolean; metaKey: boolean; movementX: number; movementY: number; offsetX: number; offsetY: number; pageX: number; pageY: number; relatedTarget: EventTarget | null; screenX: number; screenY: number; shiftKey: boolean; x: number; y: number; getModifierState(keyArg: string): boolean; initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget | null): void; detail: number; view: Window | null; which: number; initUIEvent(typeArg: string, bubblesArg?: boolean | undefined, cancelableArg?: boolean | undefined, viewArg?: Window | null | undefined, detailArg?: number | undefined): void; bubbles: boolean; cancelBubble: boolean; cancelable: boolean; composed: boolean; currentTarget: EventTarget | null; defaultPrevented: boolean; eventPhase: number; isTrusted: boolean; returnValue: boolean; srcElement: EventTarget | null; target: EventTarget | null; timeStamp: number; type: string; composedPath(): EventTarget[]; initEvent(type: string, bubbles?: boolean | undefined, cancelable?: boolean | undefined): void; preventDefault(): void; stopImmediatePropagation(): void; stopPropagation(): void; NONE: 0; CAPTURING_PHASE: 1; AT_TARGET: 2; BUBBLING_PHASE: 3; }; export {};