UNPKG

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