UNPKG

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