/** * 小程序工具库。 * * @packageDocumentation */ /// import { default as React_2 } from 'react'; declare let $mp: ReturnType | undefined; /** * 任意对象。 * * @public */ declare type AnyObject_2 = Record; declare const brands: readonly ["微信", "QQ", "支付宝", "京东", "百度", "字节跳动", "钉钉"]; declare type CreateSubmitResult = ((action: (payload: SubmitActionPayload) => Promise) => Promise) & Pick, 'fail' | 'success'>; /** @private */ export declare const currentPageListeners: (keyof MiniProgramBusListeners)[]; /** * 去除类型 T 中的 undefined。 * * @public * @example * ```typescript * type X = string | undefined * type Y = Defined // => string * ``` */ declare type Defined = Exclude; /** * 确保当前在小程序环境并执行回调。 * * @param cb 要执行的回调,第一个参数为小程序 API 挂载的全局变量 * @returns 返回回调的执行结果 */ export declare function ensureInMiniProgram(cb: (mp: Exclude) => T): T; /** * 事件巴士,管理事件的发布与订阅。 * * @template TListeners 事件名称及其对应的回调描述 * @example * ```typescript * const bus = new EventBus<{ * success: (payload: { message: string }) => any * }>() * bus.on('success', ({ message }) => console.log(message)) * bus.emit('success', { message: '提交成功' }) * // => 控制台输出: 提交成功 * ``` */ declare class EventBus { private options?; /** * 构造函数。 */ constructor(options?: EventBusOptions | undefined); /** * 回调列表。 */ private callbacks; /** * 订阅多个事件。 * * @param eventNames 事件名称 * @param callback 事件触发回调 * @returns 返回取消订阅的函数 */ on(eventNames: TListenerName[], callback: (firstPayload: { [K in TListenerName]: Parameters[0]; }, payload: { [K in TListenerName]: Parameters; }) => any): EventBusOffListener; /** * 订阅单个事件。 * * @param eventName 事件名称 * @param callback 事件触发回调 * @returns 返回取消订阅的函数 */ on(eventName: TListenerName, callback: TListeners[TListenerName]): EventBusOffListener; /** * 订阅事件,但只订阅一次即取消订阅。 * * @param eventName 事件名称 * @param callback 事件触发回调 * @returns 返回取消订阅的函数 */ once(eventName: TListenerName, callback: TListeners[TListenerName]): EventBusOffListener; /** * 取消订阅事件,若没有指定回调,则取消所有回调。 * * @param eventName 事件名称 * @param callback 事件触发回调 */ off(eventName: TListenerName, callbackOrTag?: TListeners[TListenerName] | string | number): void; /** * 发布事件。 * * @param eventNameAndContext 事件名称和上下文 * @param args 传给事件回调的参数 * @returns 返回各事件回调的返回结果组成的数组 */ emit(eventName: TListenerName | EventBusListenerDescriptor, ...args: Parameters): Array>; /** * 局部执行。 * * @param fn 执行函数 * @returns 可以返回一个或多个取消订阅的函数 */ run(fn: (bus: this) => void | EventBusOffListener | EventBusOffListener[]): EventBusOffListener; /** * 清空事件订阅。 */ clear(): void; /** * 销毁。 */ destroy(): void; } declare type EventBusBeforeEmit = { [TListenerName in keyof TListeners]?: (this: EventBus, context: any) => any; }; declare type EventBusBeforeOn = { [TListenerName in keyof TListeners]?: (this: EventBus, callback: EventBusListener) => TListeners[TListenerName]; }; declare type EventBusListener any = (...args: any[]) => any> = TCallback & { __EVENT_BUS_TAG__?: EventBusListenerTag; }; declare interface EventBusListenerDescriptor { name: TListenerName; context?: any; tag?: EventBusListenerTag; filter?: (callback: EventBusListener, index: number, callbacks: EventBusListener[]) => boolean; } declare type EventBusListeners = Record; declare type EventBusListenerTag = string | number; declare type EventBusOffListener = () => any; declare interface EventBusOptions { beforeOn?: EventBusBeforeOn; beforeEmit?: EventBusBeforeEmit; } /** * 获取当前页面的路径(不含查询参数),始终以 `/` 开头。 * * @param pageInstance 页面实例,默认当前页面 * @returns 返回当前页面的路径 */ export declare function getCurrentPagePath(pageInstance?: WechatMiniprogram.Page.Instance): string; /** * 获取当前页面的查询参数,已经对每个值执行了 decodeURIComponent。 * * @param pageInstance 页面实例,默认当前页面 * @returns 返回当前页面的查询参数 */ export declare function getCurrentPageQuery>(pageInstance?: WechatMiniprogram.Page.Instance): T; /** * 获取当前页面的地址(包含查询参数)。 * * @param pageInstance 页面实例,默认当前页面 * @returns 返回当前页面的地址 */ export declare function getCurrentPageUrl(pageInstance?: WechatMiniprogram.Page.Instance): string; export declare function getMiniProgramConfig(): Readonly; /** * 获取场景参数。 * * @param parser 解析器 */ export declare function getSceneParams = Record>(parser?: GetSceneParamsParser): T; export declare type GetSceneParamsParser = 'searchParams' | 'json' | ((data: string) => T); /** * 获取顶栏信息。 * * @returns 返回获取到的顶栏信息 */ export declare function getTopBarInfo(): GetTopBarInfoResult; export declare interface GetTopBarInfoResult { /** * 状态栏高度。 */ statusBarHeight: number; /** * 菜单按钮宽度。 */ menuButtonWidth: number; /** * 菜单按钮高度。 */ menuButtonHeight: number; /** * 菜单按钮垂直外边距。 */ menuButtonVerticalMargin: number; /** * 菜单按钮水平外边距。 * * **注意: QQ 小程序下该项为 0,请自行选取默认值** */ menuButtonHorizontalMargin: number; /** * 导航栏高度。 */ navigationBarHeight: number; /** * 顶栏高度。 */ topBarHeight: number; } /** * 检查是否在指定品牌的小程序中,若在,返回承载其 API 的全局对象,若不在,返回 false。 * * @param brand 指定的小程序品牌,若未指定,则表示所有小程序品牌 * @returns 返回检查结果 */ declare function inMiniProgram(brand?: MiniProgramBrand | MiniProgramBrand[]): MiniProgramApi | false; declare type MiniProgramApi = WechatMiniprogram.Wx & { /** 小程序品牌 */ readonly $brand: MiniProgramBrand; }; declare type MiniProgramBrand = typeof brands[number]; export declare const miniProgramBus: EventBus; export declare interface MiniProgramBusListeners { appLaunch: Defined['onLaunch']>; appShow: Defined['onShow']>; appHide: Defined['onHide']>; appError: Defined['onError']>; appThemeChange: Defined['onThemeChange']>; appUnhandledRejectionThrow: Defined['onUnhandledRejection']>; pageNotFound: Defined['onPageNotFound']>; pageLoad: Defined['onLoad']>; pageShow: Defined['onShow']>; pageHide: Defined['onHide']>; pageReady: Defined['onReady']>; pageUnload: Defined['onUnload']>; pagePullDownRefresh: Defined['onPullDownRefresh']>; pageReachBottom: Defined['onReachBottom']>; pageShareAppMessage: Defined['onShareAppMessage']>; pageShareTimeline: Defined['onShareTimeline']>; pageAddToFavorites: Defined['onAddToFavorites']>; pageResize: Defined['onResize']>; pageTabItemTap: Defined['onTabItemTap']>; currentPageShow: Defined['onShow']>; currentPageHide: Defined['onHide']>; currentPageReady: Defined['onReady']>; currentPageUnload: Defined['onUnload']>; currentPagePullDownRefresh: Defined['onPullDownRefresh']>; currentPageReachBottom: Defined['onReachBottom']>; currentPageShareAppMessage: Defined['onShareAppMessage']>; currentPageShareTimeline: Defined['onShareTimeline']>; currentPageAddToFavorites: Defined['onAddToFavorites']>; currentPageResize: Defined['onResize']>; currentPageTabItemTap: Defined['onTabItemTap']>; routeChange: (payload: MiniProgramBusRouteChangePayload) => any; } export declare type MiniProgramBusRouteChangeAction = 'replace' | 'pop' | 'push'; export declare interface MiniProgramBusRouteChangePageInfo { url: string; path: string; query: AnyObject_2; } export declare interface MiniProgramBusRouteChangePayload { from: MiniProgramBusRouteChangePageInfo | undefined; to: MiniProgramBusRouteChangePageInfo; action: MiniProgramBusRouteChangeAction; } export declare interface MiniProgramConfig { webUrlToMiniProgramUrl?: (url: string) => string; } /** * 关闭当前页面,返回上一页面或多级页面。 * * @param delta 返回的页面数,如果 delta 大于现有页面数,则返回到首页 */ export declare function navigatePageBack(delta?: number): Promise; /** * 跳转至某个页面,跳转失败时会尝试切换到 Tab 页。 * * **注意:在页面真正切换后 Promise 才会被 resolve,因而此时的页面上下文已经是新页面。** * * @param url 要跳转去的页面地址 * @param query 查询参数 * @param redirect 是否关闭当前页面后跳转 */ export declare function navigatePageTo(url: string, query?: AnyObject_2, redirect?: boolean): Promise; /** @private */ export declare const pageListeners: (keyof MiniProgramBusListeners)[]; /** @private */ export declare const pageListenerToCurrentPageListener: Partial>; /** * 打补丁。 */ export declare function patchMiniProgram(): void; export declare namespace patchMiniProgram { var __CURRENT_PAGE_ID__: number; } /** * 关闭当前页面,跳转至某个页面,跳转失败时会尝试切换到 Tab 页。 * * @param url 要跳转去的页面地址 * @param query 查询参数 */ export declare function redirectPageTo(url: string, query?: AnyObject_2): Promise; export declare function setMiniProgramConfig(config: Partial): Readonly; /** * 对提交类行为的封装。 */ export declare const submit: CreateSubmitResult; declare interface SubmitActionPayload { /** * 开始提示。 * * @param message 提示信息 */ start(message?: T): Promise; /** * 失败提示。 * * @param message 提示信息 * @param duration 持续时间(毫秒),默认 1500 */ fail(message: T, duration?: number): Promise; /** * 成功提示。 * * @param message 提示信息 * @param duration 持续时间(毫秒),默认 1500 */ success(message: T, duration?: number): Promise; } export declare function usePullDownRefresh(callback: () => any): void; /** * 获取场景参数。 * * @param parser 解析器 */ export declare function useSceneParams = Record>(parser?: GetSceneParamsParser): T; export declare function useShareAppMessage(callback: Defined['onShareAppMessage']>): void; /** * 对提交类行为的封装。 */ export declare function useSubmit(action: (payload: SubmitActionPayload) => Promise, deps: React_2.DependencyList): () => Promise; /** * 获取顶栏信息。 * * @returns 返回获取到的顶栏信息 */ export declare function useTopBarInfo(): GetTopBarInfoResult; export { }