UNPKG

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