UNPKG

5.34 kBTypeScriptView Raw
1import { CSSProperties, LegacyRef } from 'react'
2
3export interface StandardProps<T = any, TouchEvent extends BaseTouchEvent<any> = ITouchEvent> extends EventProps<TouchEvent> {
4 /** 组件的唯一标示, 保持整个页面唯一 */
5 id?: string
6 /** 同 `class`,在 React/Nerv 里一般使用 `className` 作为 `class` 的代称 */
7 className?: string
8 /** 组件的内联样式, 可以动态设置的内联样式 */
9 style?: string | CSSProperties
10 /** 如果列表中项目的位置会动态改变或者有新的项目添加到列表中,
11 * 需要使用 `wx:key` 来指定列表中项目的唯一的标识符。
12 */
13 key?: string | number
14 /** 组件是否显示, 所有组件默认显示 */
15 hidden?: boolean
16 /** 动画属性 */
17 animation?: { actions: TaroGeneral.IAnyObject[] }
18 /** 引用 */
19 ref?: LegacyRef<T>
20 /**
21 * 渲染 HTML
22 * @see /docs/html
23 */
24 dangerouslySetInnerHTML?: {
25 __html: string
26 }
27}
28
29export interface FormItemProps {
30 /** 表单数据标识 */
31 name?: string
32}
33
34export interface EventProps<TouchEvent extends BaseTouchEvent<any> = ITouchEvent> {
35 /** 手指触摸动作开始 */
36 onTouchStart?: (event: TouchEvent) => void
37
38 /** 手指触摸后移动 */
39 onTouchMove?: (event: TouchEvent) => void
40
41 /** 手指触摸动作被打断,如来电提醒,弹窗 */
42 onTouchCancel?: (event: TouchEvent) => void
43
44 /** 手指触摸动作结束 */
45 onTouchEnd?: (event: TouchEvent) => void
46
47 /** 手指触摸后马上离开 */
48 onClick?: (event: ITouchEvent) => void
49
50 /** 手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发 */
51 onLongPress?: (event: CommonEvent) => void
52
53 /** 手指触摸后,超过350ms再离开(推荐使用 longpress 事件代替) */
54 onLongClick?: (event: CommonEvent) => void
55
56 /** 会在 WXSS transition 或 Taro.createAnimation 动画结束后触发 */
57 onTransitionEnd?: (event: CommonEvent) => void
58
59 /** 会在一个 WXSS animation 动画开始时触发 */
60 onAnimationStart?: (event: CommonEvent) => void
61
62 /** 会在一个 WXSS animation 一次迭代结束时触发 */
63 onAnimationIteration?: (event: CommonEvent) => void
64
65 /** 会在一个 WXSS animation 动画完成时触发 */
66 onAnimationEnd?: (event: CommonEvent) => void
67
68 /** 在支持 3D Touch 的 iPhone 设备,重按时会触发 */
69 onTouchForceChange?: (event: CommonEvent) => void
70}
71
72export type BaseEventOrigFunction<T> = (event: BaseEventOrig<T>) => void
73
74export type TouchEventFunction = (event: ITouchEvent) => void
75
76export type CanvasTouchEventFunction = (event: CanvasTouchEvent) => void
77
78export type CommonEvent<T = any> = BaseEventOrig<T>
79
80export type CommonEventFunction<T = any> = BaseEventOrigFunction<T>
81
82export interface BaseEventOrig<T = any> {
83 /** 事件类型 */
84 type: string
85
86 /** 事件生成时的时间戳 */
87 timeStamp: number
88
89 /** 触发事件的组件的一些属性值集合 */
90 target: Target
91
92 /** 当前组件的一些属性值集合 */
93 currentTarget: currentTarget
94
95 /** 额外的信息 */
96 detail: T
97
98 /** 阻止元素发生默认的行为 */
99 preventDefault: () => void
100
101 /** 阻止事件冒泡到父元素,阻止任何父事件处理程序被执行 */
102 stopPropagation: () => void
103}
104
105interface BaseTouchEvent<TouchDetail, T = any> extends BaseEventOrig<T> {
106 /** 触摸事件,当前停留在屏幕中的触摸点信息的数组 */
107 touches: Array<TouchDetail>
108
109 /** 触摸事件,当前变化的触摸点信息的数组 */
110 changedTouches: Array<TouchDetail>
111}
112
113export type CanvasTouchEvent = BaseTouchEvent<CanvasTouch, never>
114
115export type ITouchEvent = BaseTouchEvent<ITouch>
116
117export interface CanvasTouch {
118 identifier: number
119 x: number
120 y: number
121}
122
123export interface ITouch extends Touch {
124 /** 触摸点的标识符 */
125 identifier: number
126 /** 距离文档左上角的距离,文档的左上角为原点 ,横向为X轴,纵向为Y轴 */
127 pageX: number
128 /** 距离文档左上角的距离,文档的左上角为原点 ,横向为X轴,纵向为Y轴 */
129 pageY: number
130 /** 距离页面可显示区域(屏幕除去导航条)左上角距离,横向为X轴,纵向为Y轴 */
131 clientX: number
132 /** 距离页面可显示区域(屏幕除去导航条)左上角距离,横向为X轴,纵向为Y轴 */
133 clientY: number
134}
135
136export interface Target {
137 /** 事件源组件的id */
138 id: string
139 /** 当前组件的类型 */
140 tagName: string
141 /** 事件源组件上由data-开头的自定义属性组成的集合 */
142 dataset: {
143 [key: string]: any
144 }
145}
146
147export type currentTarget = Target
148
149/** 网络状态数据 */
150export interface NetStatus {
151 /* 当前视频编/码器输出的比特率,单位 kbps */
152 videoBitrate?: number
153 /* 当前音频编/码器输出的比特率,单位 kbps */
154 audioBitrate?: number
155 /* 当前视频帧率 */
156 videoFPS?: number | string
157 /* 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s */
158 videoGOP?: number
159 /* 当前的发送/接收速度 */
160 netSpeed?: number
161 /* 网络抖动情况,为 0 时表示没有任何抖动,值越大表明网络抖动越大,网络越不稳定 */
162 netJitter?: number
163 /* 视频画面的宽度 */
164 videoWidth?: number | string
165 /* 视频画面的高度 */
166 videoHeight?: number | string
167}