@types/wechat-miniprogram
Version:
TypeScript definitions for wechat-miniprogram
1,414 lines (1,309 loc) • 42 kB
TypeScript
declare namespace WechatMiniprogram {
interface Target<DataSet extends IAnyObject = IAnyObject> {
/** 事件组件的 id */
id: string;
/** 当前组件的类型 */
tagName?: string | undefined;
/** 事件组件上由 `data-` 开头的自定义属性组成的集合 */
dataset: DataSet;
/** 距离页面顶部的偏移量 */
offsetTop: number;
/** 距离页面左边的偏移量 */
offsetLeft: number;
}
/** 基础事件参数 */
interface BaseEvent<
Mark extends IAnyObject = IAnyObject,
CurrentTargetDataset extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = CurrentTargetDataset,
> {
/** 事件类型 */
type: string;
/** 页面打开到触发事件所经过的毫秒数 */
timeStamp: number;
/** 事件冒泡路径上所有由 `mark:` 开头的自定义属性组成的集合 */
mark?: Mark | undefined;
/** 触发事件的源组件 */
target: Target<TargetDataset>;
/** 事件绑定的当前组件 */
currentTarget: Target<CurrentTargetDataset>;
}
/** 自定义事件 */
interface CustomEvent<
Detail extends IAnyObject = IAnyObject,
Mark extends IAnyObject = IAnyObject,
CurrentTargetDataset extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = CurrentTargetDataset,
> extends BaseEvent<Mark, CurrentTargetDataset, TargetDataset> {
/** 额外的信息 */
detail: Detail;
}
/** Touch 对象 */
interface TouchDetail {
/** 距离页面可显示区域 (屏幕除去导航条) 左上角距离,横向为 X 轴 */
clientX: number;
/** 距离页面可显示区域 (屏幕除去导航条) 左上角距离,纵向为 Y 轴 */
clientY: number;
/** 触摸点的标识符 */
identifier: number;
/** 距离文档左上角的距离,文档的左上角为原点,横向为 X 轴 */
pageX: number;
/** 距离文档左上角的距离,文档的左上角为原点,纵向为 Y 轴 */
pageY: number;
}
/** canvas Touch 对象 */
interface TouchCanvasDetail {
/** 触摸点的标识符 */
identifier: number;
/** 距离 Canvas 左上角的距离,Canvas 的左上角为原点 ,横向为X轴 */
x: number;
/** 距离 Canvas 左上角的距离,Canvas 的左上角为原点 纵向为Y轴 */
y: number;
}
/** 触摸事件 */
interface Touch<
Detail extends IAnyObject = IAnyObject,
T extends TouchDetail | TouchCanvasDetail = TouchDetail,
Mark extends IAnyObject = IAnyObject,
CurrentTargetDataset extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = CurrentTargetDataset,
> extends CustomEvent<Detail, Mark, CurrentTargetDataset, TargetDataset> {
/** 触摸事件,当前停留在屏幕中的触摸点信息的数组 */
touches: T[];
/** 触摸事件,当前变化的触摸点信息的数组 */
changedTouches: T[];
}
/** 触摸事件响应 */
type TouchEvent<
Detail extends IAnyObject = IAnyObject,
Mark extends IAnyObject = IAnyObject,
CurrentTargetDataset extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = CurrentTargetDataset,
> = Touch<Detail, TouchDetail, Mark, CurrentTargetDataset, TargetDataset>;
/** canvas 触摸事件响应 */
interface TouchCanvas<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> extends Touch<never, TouchCanvasDetail, Mark, never, TargetDataset> {
// canvas 中的触摸事件不可冒泡,所以没有 currentTarget。
currentTarget: never;
}
/**
* 图片加载成功时触发
*
* 最低基础库: 2.1.0
*/
type CoverImageLoad<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** 图片宽度 */
width: number;
/** 图片高度 */
height: number;
},
Mark,
TargetDataset
>;
/**
* 图片加载失败时触发
*
* 最低基础库: 2.1.0
*/
type CoverImageError = CustomEvent<GeneralCallbackResult>;
/**
* 拖动过程中触发的事件,event.detail = {x, y, source}
*
* 最低基础库: 1.9.90
*/
type MovableViewChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
x: number;
y: number;
/**
* 产生移动的原因
*
* - `touch` 拖动
* - `touch-out-of-bounds` 超出移动范围
* - `out-of-bounds` 超出移动范围后的回弹
* - `friction` 惯性
* - `空字符串` setData
*/
source:
| "touch"
| "touch-out-of-bounds"
| "out-of-bounds"
| "friction"
| "";
},
Mark,
TargetDataset
>;
/**
* 缩放过程中触发的事件
*
* event.detail = {x, y, scale}
*
* x 和 y 字段在 2.1.0 之后支持
*
* 最低基础库: 1.9.90
*/
type MovableViewScale<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** 最低基础库: 2.1.0 */
x: number;
/** 最低基础库: 2.1.0 */
y: number;
scale: number;
},
Mark,
TargetDataset
>;
/**
* 滑动开始事件 (同时开启 enhanced 属性后生效)
*
* detail { scrollTop, scrollLeft }
*
* 最低基础库: 2.12.0
*/
type ScrollViewDragStart<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
scrollTop: number;
scrollLeft: number;
},
Mark,
TargetDataset
>;
/**
* 滑动事件 (同时开启 enhanced 属性后生效)
*
* detail { scrollTop, scrollLeft }
*
* 最低基础库: 2.12.0
*/
type ScrollViewDragging<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
scrollTop: number;
scrollLeft: number;
},
Mark,
TargetDataset
>;
/**
* 滑动结束事件 (同时开启 enhanced 属性后生效)
*
* detail { scrollTop, scrollLeft }
*
* 最低基础库: 2.12.0
*/
type ScrollViewDragEnd<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
scrollTop: number;
scrollLeft: number;
},
Mark,
TargetDataset
>;
/** 滚动到顶部/左边时触发 */
type ScrollViewScrollToUpper<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
direction: "top" | "left";
},
Mark,
TargetDataset
>;
/** 滚动到底部/右边时触发 */
type ScrollViewScrollToLower<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
direction: "bottom" | "right";
},
Mark,
TargetDataset
>;
/**
* 滚动时触发
*
* event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
*/
type ScrollViewScroll<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
scrollLeft: number;
scrollTop: number;
scrollHeight: number;
scrollWidth: number;
deltaX: number;
deltaY: number;
},
Mark,
TargetDataset
>;
type ScrollViewRefresherPulling<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<never, Mark, TargetDataset>;
type ScrollViewRefresherRefresh<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<never, Mark, TargetDataset>;
type ScrollViewRefresherRestore<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<never, Mark, TargetDataset>;
type ScrollViewRefresherAbort<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<never, Mark, TargetDataset>;
/**
* current 改变时会触发 change 事件
*
* event.detail = {current, source}
*
* **Tip**: 如果在 bindchange 的事件回调函数中使用 setData 改变 current 值,则有可能导致 setData 被不停地调用,因而通常情况下请在改变 current 值前检测 source 字段来判断是否是由于用户触摸引起。
*/
type SwiperChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
current: number;
/**
* 表示导致变更的原因
*
* - `autoplay` 自动播放导致 swiper 变化;
* - `touch` 用户划动引起 swiper 变化;
* - 其它原因将用空字符串表示。
*
* 最低基础库: 1.4.0
*/
source: "" | "autoplay" | "touch";
/** 该 swiper-item 的标识符 */
currentItemId: string;
},
Mark,
TargetDataset
>;
/**
* swiper-item 的位置发生改变时会触发 transition 事件
*
* event.detail = {dx: dx, dy: dy}
*
* 最低基础库: 2.4.3
*/
type SwiperTransition<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
dx: number;
dy: number;
},
Mark,
TargetDataset
>;
/**
* 动画结束时会触发 animationfinish 事件
*
* 最低基础库: 1.9.0
*/
type SwiperAnimationFinish<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = SwiperChange<Mark, TargetDataset>;
/**
* progress 动画完成事件
*
* 最低基础库 2.4.1
*/
type ProgressActiveEnd<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
curPercent: number;
},
Mark,
TargetDataset
>;
/**
* 用户点击该按钮时,会返回获取到的用户信息,回调的 detail 数据与 `wx. getUserInfo` 返回的一致,`open-type="getUserInfo"` 时有效
*
* 最低基础库: 1.3.0
*/
type ButtonGetUserInfo = CustomEvent<
GeneralCallbackResult & GetUserInfoSuccessCallbackResult
>;
/**
* 客服消息回调,`open-type="contact"` 时有效
*
* 最低基础库: 1.5.0
*/
type ButtonContact = CustomEvent<GeneralCallbackResult>;
/**
* 获取用户手机号回调,`open-type=getPhoneNumber` 时有效
*
* 最低基础库: 1.2.0
*/
type ButtonGetPhoneNumber = CustomEvent<
GeneralCallbackResult & Partial<GetWeRunDataSuccessCallbackResult>
>;
/**
* 当使用开放能力时,发生错误的回调,`open-type=launchApp` 时有效
*
* 最低基础库: 1.9.5
*/
type ButtonError = CustomEvent<GeneralCallbackResult>;
/**
* 在打开授权设置页后回调,`open-type=openSetting` 时有效
*
* 最低基础库: 2.0.7
*/
type ButtonOpenSetting = CustomEvent<
GeneralCallbackResult & OpenSettingSuccessCallbackResult
>;
/**
* 打开 APP 成功的回调,`open-type=launchApp` 时有效
*
* 最低基础库: 2.4.4
*/
type ButtonLaunchApp = CustomEvent<GeneralCallbackResult>;
/**
* checkbox-group 中选中项发生改变时触发 change 事件
*
* detail = { value: ['选中的checkbox 的 value 的数组'] }
*/
type CheckboxGroupChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** 选中的 checkbox 的 value 的数组 */
value: string[];
},
Mark,
TargetDataset
>;
/**
* 编辑器初始化完成时触发
*
* 最低基础库: 2.7.0
*/
type EditorReady<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<never, Mark, TargetDataset>;
/**
* 编辑器聚焦时触发
*
* event.detail = {html, text, delta}
*
* 最低基础库: 2.7.0
*/
type EditorFocus<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
html: string;
text: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
delta: any[];
},
Mark,
TargetDataset
>;
/**
* 编辑器失去焦点时触发
*
* detail = {html, text, delta}
*
* 最低基础库: 2.7.0
*/
type EditorBlur<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = EditorFocus<Mark, TargetDataset>;
/**
* 编辑器内容改变时触发
*
* detail = {html, text, delta}
*
* 最低基础库: 2.7.0
*/
type EditorInput<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = EditorFocus<Mark, TargetDataset>;
/**
* 通过 Context 方法改变编辑器内样式时触发,返回选区已设置的样式
*
* 最低基础库: 2.7.0
*/
type EditorStatusChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
Partial<{
align: "left" | "center" | "right" | "justify";
bold: "strong";
italic: "em";
underline: true;
strike: "del";
lineHeight: string;
letterSpacing: string;
marginTop: string;
marginBottom: string;
fontFamily: string;
fontSize: string;
color: string;
backgroundColor: string;
list: "checked" | "unchecked" | "ordered" | "bullet";
indent: number;
header: number;
script: "sub" | "super";
direction: "rtl";
}>,
Mark,
TargetDataset
>;
/**
* 携带 form 中的数据触发 submit 事件
*
* event.detail = {value : {'name': 'value'} , formId: ''}
*/
type FormSubmit<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
formId?: unknown | undefined;
target: Target;
/** 表单中的数据,需要在表单组件中加上 name 来作为 key。 */
value: IAnyObject;
},
Mark,
TargetDataset
>;
/** 表单重置时会触发 reset 事件 */
type FormReset<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
target: Target;
},
Mark,
TargetDataset
>;
/** 键盘输入时触发
*
* event.detail = {value, cursor, keyCode}
*
* 处理函数可以直接 return 一个字符串,将替换输入框的内容。
*/
type Input<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** 输入框内容 */
value: string;
/** 光标位置 */
cursor: number;
/** keyCode 为键值 (目前工具还不支持返回keyCode参数) `2.1.0` 起支持 */
keyCode?: number | undefined;
},
Mark,
TargetDataset
>;
/**
* 输入框聚焦时触发
*
* event.detail = { value, height }
*/
type InputFocus<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** 输入框内容 */
value: string;
/** 键盘高度, 在基础库 `1.9.90` 起支持 */
height: number;
},
Mark,
TargetDataset
>;
/**
* 输入框失去焦点时触发
*
* event.detail = {value: value}
*/
type InputBlur<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** 输入框内容 */
value: string;
},
Mark,
TargetDataset
>;
/**
* 点击完成按钮时触发
*
* event.detail = {value: value}
*/
type InputConfirm<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** 输入框内容 */
value: string;
},
Mark,
TargetDataset
>;
/**
* 键盘高度发生变化的时候触发此事件
*
* event.detail = {height: height, duration: duration}
*
* **tip**: 键盘高度发生变化,keyboardheightchange 事件可能会多次触发,开发者对于相同的 height 值应该忽略掉
*
* 最低基础库: `2.7.0`
*/
type InputKeyboardHeightChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** 键盘高度 */
height: number;
duration: number;
},
Mark,
TargetDataset
>;
/**
* 取消选择时触发
*
* 最低基础库: 1.9.90
*/
type PickerCancel<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<never, Mark, TargetDataset>;
/**
* value 改变时触发 change 事件
*
* event.detail = {value}
*
* 当 mode = region 时 (最低基础库: 1.4.0)
*
* value 改变时触发 change 事件,event.detail = {value, code, postcode},其中字段 code 是统计用区划代码,postcode 是邮政编码
*/
type PickerChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/**
* 当 mode = selector 时, 返回当前选择的 value
*
* 当 mode = multiSelector 时, 返回一个索引数组
*
* 当 mode = time | date 时, 返回 `"12:01"` | `"2016-09-01"`
*
* 当 mode = region 时, 返回 `["广东省", "广州市", "海珠区"]`
*/
value: string | number[] | [string, string, string];
/** 统计用区划代码 当 mode = region 时有效 (最低基础库: 1.4.0) */
code: [string, string, string];
/** 邮政编码 当 mode = region 时有效 (最低基础库: 1.4.0) */
postcode: string;
},
Mark,
TargetDataset
>;
/** 列改变时触发 当 `mode = multiSelector` 时有效 */
type PickerColumnChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** 修改的列 */
column: number;
value: number;
},
Mark,
TargetDataset
>;
/**
* 滚动选择时触发 change 事件
*
* event.detail = {value}
*/
type PickerViewChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** value 为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项 (下标从 0 开始) */
value: number[];
},
Mark,
TargetDataset
>;
/**
* 当滚动选择开始时候触发事件
*
* 最低基础库: 2.3.1
*/
type PickerViewPickStart<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<never, Mark, TargetDataset>;
/**
* 当滚动选择结束时候触发事件
*
* 最低基础库: 2.3.1
*/
type PickerViewPickEnd<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<never, Mark, TargetDataset>;
/** radio-group 切换事件 */
type RadioGroupChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
/** radio-group 中选中项的 value */
{
value: string;
},
Mark,
TargetDataset
>;
/**
* 完成一次拖动后触发的事件
*
* event.detail = {value}
*/
type SliderChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** slider 的数值 0 - 100 */
value: number;
},
Mark,
TargetDataset
>;
/**
* 拖动过程中触发的事件
*
* event.detail = {value}
*
* 最低基础库: 1.7.0
*/
type SliderChanging<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = SliderChange<Mark, TargetDataset>;
/**
* checked 改变时触发 change 事件
*
* event.detail={ value}
*/
type SwitchChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
value: boolean;
},
Mark,
TargetDataset
>;
/**
* 输入框聚焦时触发
*
* event.detail = { value, height },height 为键盘高度
*
* 在基础库 1.9.90 起支持
*/
type TextareaFocus<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = InputFocus<Mark, TargetDataset>;
/**
* 输入框失去焦点时触发
*
* event.detail = {value, cursor}
*
* **tip**: textarea 的 blur 事件会晚于页面上的 tap 事件,如果需要在 button 的点击事件获取 textarea,可以使用 form 的 bindsubmit。
*/
type TextareaBlur<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = InputBlur<Mark, TargetDataset>;
/**
* 输入框行数变化时调用
*
* event.detail = {height: 0, heightRpx: 0, lineCount: 0}
*/
type TextareaLineChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = CustomEvent<
{
/** 输入框高度(px) */
height: number;
/** 输入框高度(rpx) */
heightRpx: number;
/** 行数 */
lineCount: number;
/** 行高 */
lineHeight: number;
},
Mark,
TargetDataset
>;
/**
* 当键盘输入时,触发 input 事件
*
* event.detail = {value, cursor, keyCode}
*
* keyCode 为键值,目前工具还不支持返回 keyCode 参数。
*
* **tip**: 不建议在多行文本上对用户的输入进行修改,所以 **bindinput 处理函数的返回值并不会反映到 textarea 上**
*/
type TextareaInput<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = Input<Mark, TargetDataset>;
/**
* 点击完成时, 触发 confirm 事件
*
* event.detail = {value: value}
*/
type TextareaConfirm<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = InputConfirm<Mark, TargetDataset>;
/**
* 键盘高度发生变化的时候触发此事件
*
* event.detail = {height: height, duration: duration}
*
* **tip**: 键盘高度发生变化,keyboardheightchange事件可能会多次触发,开发者对于相同的height值应该忽略掉
*
* 最低基础库: 2.7.0
*/
type TextareaKeyboardHeightChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject,
> = InputKeyboardHeightChange<Mark, TargetDataset>;
/**
* 功能页返回,且操作成功时触发, detail 格式与具体功能页相关
*
* 最低基础库: 2.1.0
*/
type FunctionalNavigatorSuccess<
Detail extends IAnyObject = IAnyObject,
> = CustomEvent<Detail, never, never>;
/**
* 功能页返回,且操作失败时触发, detail 格式与具体功能页相关
*
* 最低基础库: 2.1.0
*/
type FunctionalNavigatorFail<
Detail extends IAnyObject = IAnyObject,
> = CustomEvent<Detail, never, never>;
/**
* 当 `target="miniProgram"` 时有效,跳转小程序成功
*
* 最低基础库: 2.0.7
*/
type NavigatorSuccess = CustomEvent;
/**
* 当 `target="miniProgram"` 时有效,跳转小程序失败
*
* `tips`: 需要用户确认跳转 从 2.3.0 版本开始,在跳转至其他小程序前,将统一增加弹窗,询问是否跳转,用户确认后才可以跳转其他小程序。如果用户点击取消,则回调 fail cancel。
*
* 最低基础库: 2.0.7
*/
type NavigatorFail = CustomEvent;
/**
* 当 `target="miniProgram"` 时有效,跳转小程序完成
*
* 最低基础库: 2.0.7
*/
type NavigatorComplete = CustomEvent;
/**
* 当发生错误时触发 error 事件
*
* detail = {errMsg:MediaError.code}
*/
type AudioError = CustomEvent<{
/**
* MediaError.code
*
* - 1 获取资源被用户禁止
* - 2 网络错误
* - 3 解码错误
* - 4 不合适资源
*/
errMsg: 1 | 2 | 3 | 4;
}>;
/** 当开始/继续播放时触发play事件 */
type AudioPlay = CustomEvent;
/** 当暂停播放时触发 pause 事件 */
type AudioPause = CustomEvent;
/**
* 当播放进度改变时触发 timeupdate 事件
*
* detail = {currentTime, duration}
*/
type AudioTimeUpdate = CustomEvent<{
currentTime: number;
duration: number;
}>;
/** 当播放到末尾时触发 ended 事件 */
type AudioEnded = CustomEvent;
/** 摄像头在非正常终止时触发,如退出后台等情况 */
type CameraStop = CustomEvent;
/** 用户不允许使用摄像头时触发 */
type CameraError = CustomEvent;
/**
* 相机初始化完成时触发
*
* 最低基础库: 2.7.0
*/
type CameraInitDone = CustomEvent;
/**
* 在扫码识别成功时触发,仅在 mode="scanCode" 时生效
*
* 最低基础库: 2.1.0
*/
type CameraScanCode = CustomEvent;
/** 当错误发生时触发,event.detail = {errMsg} */
type ImageError = CoverImageError;
/** 当图片载入完毕时触发,event.detail = {height, width} */
type ImageLoad = CoverImageLoad;
/**
* 播放状态变化事件,detail = {code}
*
* 最低基础库 1.7.0
*/
type LivePlayerStateChange = CustomEvent<{
/**
* 状态码
*
* - `2001` 已经连接服务器
* - `2002` 已经连接服务器,开始拉流
* - `2003` 网络接收到首个视频数据包(IDR)
* - `2004` 视频播放开始
* - `2005` 视频播放进度
* - `2006` 视频播放结束
* - `2007` 视频播放Loading
* - `2008` 解码器启动
* - `2009` 视频分辨率改变
* - `-2301` 网络断连,且经多次重连抢救无效,更多重试请自行重启播放
* - `-2302` 获取加速拉流地址失败
* - `2101` 当前视频帧解码失败
* - `2102` 当前音频帧解码失败
* - `2103` 网络断连, 已启动自动重连
* - `2104` 网络来包不稳: 可能是下行带宽不足,或由于主播端出流不均匀
* - `2105` 当前视频播放出现卡顿
* - `2106` 硬解启动失败,采用软解
* - `2107` 当前视频帧不连续,可能丢帧
* - `2108` 当前流硬解第一个I帧失败,SDK自动切软解
* - `3001` RTMP -DNS解析失败
* - `3002` RTMP服务器连接失败
* - `3003` RTMP服务器握手失败
* - `3005` RTMP 读/写失败
*/
code: number;
}>;
/**
* 全屏变化事件,detail = {direction, fullScreen}
*
* 最低基础库 1.7.0
*/
type LivePlayerFullScreenChange = CustomEvent<{
direction: "vertical" | "horizontal";
fullScreen: boolean;
}>;
/**
* 网络状态通知,detail = {info}
*
* 最低基础库 1.9.0
*/
type LivePlayerNetStatus = CustomEvent<{
/**
* 网络状态数据
*
* - `videoBitrate` 当前视频编/码器输出的比特率,单位 kbps
* - `audioBitrate` 当前音频编/码器输出的比特率,单位 kbps
* - `videoFPS` 当前视频帧率
* - `videoGOP` 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s
* - `netSpeed` 当前的发送/接收速度
* - `netJitter` 网络抖动情况,抖动越大,网络越不稳定
* - `videoWidth` 视频画面的宽度
* - `videoHeight` 视频画面的高度
*/
info:
| "videoBitrate"
| "audioBitrate"
| "videoFPS"
| "videoGOP"
| "netSpeed"
| "netJitter"
| "videoWidth"
| "videoHeight";
}>;
/**
* 状态变化事件,detail = {code}
*
* 最低基础库: 1.7.0
*/
type LivePusherStateChange = CustomEvent<{
/**
* 状态码
*
* - `1001` 已经连接推流服务器
* - `1002` 已经与服务器握手完毕,开始推流
* - `1003` 打开摄像头成功
* - `1004` 录屏启动成功
* - `1005` 推流动态调整分辨率
* - `1006` 推流动态调整码率
* - `1007` 首帧画面采集完成
* - `1008` 编码器启动
* - `-1301` 打开摄像头失败
* - `-1302` 打开麦克风失败
* - `-1303` 视频编码失败
* - `-1304` 音频编码失败
* - `-1305` 不支持的视频分辨率
* - `-1306` 不支持的音频采样率
* - `-1307` 网络断连,且经多次重连抢救无效,更多重试请自行重启推流
* - `-1308` 开始录屏失败,可能是被用户拒绝
* - `-1309` 录屏失败,不支持的Android系统版本,需要5.0以上的系统
* - `-1310` 录屏被其他应用打断了
* - `-1311` Android Mic打开成功,但是录不到音频数据
* - `-1312` 录屏动态切横竖屏失败
* - `1101` 网络状况不佳: 上行带宽太小,上传数据受阻
* - `1102` 网络断连, 已启动自动重连
* - `1103` 硬编码启动失败,采用软编码
* - `1104` 视频编码失败
* - `1105` 新美颜软编码启动失败,采用老的软编码
* - `1106` 新美颜软编码启动失败,采用老的软编码
* - `3001` RTMP -DNS解析失败
* - `3002` RTMP服务器连接失败
* - `3003` RTMP服务器握手失败
* - `3004` RTMP服务器主动断开,请检查推流地址的合法性或防盗链有效期
* - `3005` RTMP 读/写失败
*/
code: number;
}>;
/**
* 网络状态通知,detail = {info}
*
* 最低基础库: 1.9.0
*/
type LivePusherNetStatus = CustomEvent<{
/**
* 网络状态数据
*
* -`videoBitrate` 当前视频编/码器输出的比特率,单位 kbps
* -`audioBitrate` 当前音频编/码器输出的比特率,单位 kbps
* -`videoFPS` 当前视频帧率
* -`videoGOP` 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s
* -`netSpeed` 当前的发送/接收速度
* -`netJitter` 网络抖动情况,抖动越大,网络越不稳定
* -`videoWidth` 视频画面的宽度
* -`videoHeight` 视频画面的高度
*/
info:
| "videoBitrate"
| "audioBitrate"
| "videoFPS"
| "videoGOP"
| "netSpeed"
| "netJitter"
| "videoWidth"
| "videoHeight";
}>;
/**
* 渲染错误事件,detail = {errMsg, errCode}
*
* `tip`: 开发者工具上暂不支持 live-pusher
*
* 最低基础库: 1.7.4
*/
type LivePusherError = CustomEvent<{
errMsg: string;
/**
* 错误码
*
* - `10001` 用户禁止使用摄像头
* - `10002` 用户禁止使用录音
* - `10003` 背景音资源 (BGM) 加载失败
* - `10004` 等待画面资源 (waiting-image) 加载失败
*/
errCode: number;
}>;
/**
* 背景音开始播放时触发
*
* 最低基础库: 2.4.0
*/
type LivePusherBgmStart = CustomEvent;
/**
* 背景音进度变化时触发,detail = {progress, duration}
*
* 最低基础库: 2.4.0
*/
type LivePusherBgmProgress = CustomEvent<{
progress: number;
duration: number;
}>;
/**
* 背景音播放完成时触发
*
* 最低基础库: 2.4.0
*/
type LivePusherBgmComplete = CustomEvent;
/** 当开始/继续播放时触发play事件 */
type VideoPlay = CustomEvent;
/** 当暂停播放时触发 pause 事件 */
type VideoPause = CustomEvent;
/** 当播放到末尾时触发 ended 事件 */
type VideoEnded = CustomEvent;
/** 播放进度变化时触发,event.detail = {currentTime, duration} 。触发频率 250ms 一次 */
type VideoTimeUpdate = CustomEvent<{
currentTime: number;
duration: number;
}>;
/**
* 视频进入和退出全屏时触发,event.detail = {fullScreen, direction}
*
* 最低基础库: 1.4.0
*/
type VideoFullScreenChange = CustomEvent<{
fullScreen: boolean;
direction: "vertical" | "horizontal";
}>;
/**
* 视频出现缓冲时触发
*
* 最低基础库: 1.7.0
*/
type VideoWaiting = CustomEvent;
/**
* 视频播放出错时触发
*
* 最低基础库: 1.7.0
*/
type VideoError = CustomEvent;
/**
* 加载进度变化时触发,只支持一段加载。
*
* 最低基础库: 2.4.0
*/
type VideoPregress = CustomEvent<{
/** 百分比 */
buffered: number;
}>;
/**
* 加载进度变化时触发,只支持一段加载。
*
* 最低基础库: 2.4.0
*/
type VoipRoomError = CustomEvent;
/**
* 点击地图时触发
*
* 2.9.0 起返回经纬度信息
*/
type MapTap = CustomEvent<{
/** 经度,最低基础库 2.9.0 */
longitude: number;
/** 纬度,最低基础库 2.9.0 */
latitude: number;
}>;
/**
* 点击标记点时触发
*
* e.detail = {markerId}
*/
type MarkerTap = CustomEvent<{
/** 标记点 ID */
markerId: number;
}>;
/**
* 点击 label 时触发
*
* e.detail = {markerId}
*
* 最低基础库: 2.9.0
*/
type LabelTap = MarkerTap;
/**
* 点击控件时触发
*
* e.detail = {controlId}
*/
type ControlTap = CustomEvent<{
/** 控件 ID */
controlId: number;
}>;
/**
* 点击 label 时触发
*
* e.detail = {markerId}
*
* 最低基础库: 1.2.0
*/
type CalloutTap = MarkerTap;
/**
* 在地图渲染更新完成时触发
*
* 最低基础库: 1.6.0
*/
type MapUpdated = CustomEvent;
/**
* 在地图渲染更新完成时触发
*
* 最低基础库: 1.6.0
*/
type RegionChange =
& CustomEvent<{
/** 旋转程度,最低基础库 2.3.0 */
rotate: number;
/** 缩放程度,最低基础库 2.3.0 */
skew: number;
}>
& (
| {
/**
* 视野变化开始、结束时触发
*
* 视野变化开始为 `begin`
*/
type: "begin";
/**
* 导致视野变化的原因
*
* - gesture: 用户手势
* - update: 调用接口导致
*/
causedBy: "gesture" | "update";
}
| {
/**
* 视野变化结束时触发
*
* 视野变化结束为 `end`
*/
type: "end";
/**
* 导致视野变化的原因
*
* - drag: 拖动地图导致
* - scale: 缩放导致
* - update: 调用接口导致
*/
causedBy: "drag" | "scale" | "update";
}
);
/**
* 广告加载成功的回调
*
* 最低基础库: 2.2.1
*/
type AdLoad = CustomEvent;
/**
* 广告加载失败的回调,event.detail = {errCode: 1002}
*
* `tip`: 监听到error回调后,开发者可以针对性的处理,比如隐藏广告组件的父容器,以保证用户体验,但不要移除广告组件,否则将无法收到bindload的回调。
*
* 最低基础库: 2.2.1
*/
type AdError = CustomEvent<{
/**
* 错误码
*
* - `1000` 后端错误调用失败 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复。
* - `1001` 参数错误 使用方法错误 可以前往developers.weixin.qq.com 确认具体教程 (小程序和小游戏分别有各自的教程,可以在顶部选项中,“设计”一栏的右侧进行切换)。
* - `1002` 广告单元无效 可能是拼写错误、或者误用了其他APP的广告ID 请重新前往mp.weixin.qq.com确认广告位ID。
* - `1003` 内部错误 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复。
* - `1004` 无适合的广告 广告不是每一次都会出现,这次没有出现可能是由于该用户不适合浏览广告 属于正常情况,且开发者需要针对这种情况做形态上的兼容。
* - `1005` 广告组件审核中 你的广告正在被审核,无法展现广告 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。
* - `1006` 广告组件被驳回 你的广告审核失败,无法展现广告 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。
* - `1007` 广告组件被驳回 你的广告能力已经被封禁,封禁期间无法展现广告 请前往mp.weixin.qq.com确认小程序广告封禁状态。
* - `1008` 广告单元已关闭 该广告位的广告能力已经被关闭 请前往mp.weixin.qq.com重新打开对应广告位的展现。
*/
errCode: number;
}>;
/**
* 广告关闭的回调
*
* 最低基础库: 2.6.5
*/
type AdClose = CustomEvent;
/**
* 网页向小程序 postMessage 时,会在特定时机 (小程序后退、组件销毁、分享) 触发并收到消息。e.detail = { data }
*
* 最低基础库: 1.6.4
*/
type WebviewMessage = CustomEvent<{
/** 多次 postMessage 的参数组成的数组 */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
data: any[];
}>;
/**
* 网页加载成功时候触发此事件。e.detail = { src }
*
* 最低基础库: 1.6.4
*/
type WebviewLoad = CustomEvent<{
src: string;
}>;
/**
* 网页加载失败的时候触发此事件。e.detail = { src }
*
* 最低基础库: 1.6.4
*/
type WebviewError = CustomEvent<{
src: string;
}>;
}