@zero-bits/taro-components 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +413 -0
- package/es/components/Permission/PermissionProvider.d.ts +23 -0
- package/es/components/Permission/PermissionProvider.js +1 -0
- package/es/components/Permission/index.d.ts +5 -0
- package/es/components/Permission/index.js +1 -0
- package/es/components/Permission/store.d.ts +40 -0
- package/es/components/Permission/store.js +1 -0
- package/es/components/Text/index.d.ts +54 -0
- package/es/components/Text/index.js +1 -0
- package/es/components/View/index.d.ts +111 -0
- package/es/components/View/index.js +1 -0
- package/es/components/index.d.ts +3 -0
- package/es/components/index.js +1 -0
- package/es/context/index.d.ts +6 -0
- package/es/context/index.js +1 -0
- package/es/hooks/index.d.ts +2 -0
- package/es/hooks/index.js +1 -0
- package/es/hooks/usePermission.d.ts +11 -0
- package/es/hooks/usePermission.js +1 -0
- package/es/hooks/useWeappUpdate.d.ts +4 -0
- package/es/hooks/useWeappUpdate.js +1 -0
- package/es/index.d.ts +2 -0
- package/es/index.js +1 -0
- package/es/styles/index.css +120 -0
- package/es/types/index.d.ts +84 -0
- package/es/types/index.js +1 -0
- package/lib/components/Permission/PermissionProvider.d.ts +23 -0
- package/lib/components/Permission/PermissionProvider.js +1 -0
- package/lib/components/Permission/index.d.ts +5 -0
- package/lib/components/Permission/index.js +1 -0
- package/lib/components/Permission/store.d.ts +40 -0
- package/lib/components/Permission/store.js +1 -0
- package/lib/components/Text/index.d.ts +54 -0
- package/lib/components/Text/index.js +1 -0
- package/lib/components/View/index.d.ts +111 -0
- package/lib/components/View/index.js +1 -0
- package/lib/components/index.d.ts +3 -0
- package/lib/components/index.js +1 -0
- package/lib/context/index.d.ts +6 -0
- package/lib/context/index.js +1 -0
- package/lib/hooks/index.d.ts +2 -0
- package/lib/hooks/index.js +1 -0
- package/lib/hooks/usePermission.d.ts +11 -0
- package/lib/hooks/usePermission.js +1 -0
- package/lib/hooks/useWeappUpdate.d.ts +4 -0
- package/lib/hooks/useWeappUpdate.js +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +1 -0
- package/lib/styles/index.css +120 -0
- package/lib/types/index.d.ts +84 -0
- package/lib/types/index.js +1 -0
- package/package.json +68 -0
package/README.md
ADDED
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
# @zero-bits/taro
|
|
2
|
+
|
|
3
|
+
这是一个针对 Taro 环境深度定制的企业级基础库,包含极其强大的 **OnionRequest (洋葱模型网络请求引擎)** 以及 **Permission (全局权限状态控制组件)**。
|
|
4
|
+
|
|
5
|
+
## 目录
|
|
6
|
+
- [OnionRequest 请求引擎](#onionrequest-请求引擎)
|
|
7
|
+
- [1. 引擎初始化配置](#1-引擎初始化配置)
|
|
8
|
+
- [2. 在业务中的极简用法](#2-在业务中的极简用法)
|
|
9
|
+
- [3. 文件上传与二进制流支持](#3-文件上传与二进制流支持)
|
|
10
|
+
- [4. 请求主动强杀 (Abort)](#4-请求主动强杀-abort)
|
|
11
|
+
- [Permission 权限组件](#permission-权限组件)
|
|
12
|
+
- [1. 创建全局 Store](#1-创建全局-store)
|
|
13
|
+
- [2. 挂载 Provider](#2-挂载-provider)
|
|
14
|
+
- [3. 在组件中使用权限状态](#3-在组件中使用权限状态)
|
|
15
|
+
- [Alova CQRS 请求钩子引擎 (Hooks)](#alova-cqrs-请求钩子引擎-hooks)
|
|
16
|
+
- [1. 钩子工厂初始化](#1-钩子工厂初始化)
|
|
17
|
+
- [2. useQuery (声明式读取)](#2-usequery-声明式读取)
|
|
18
|
+
- [3. useMutation (命令式写入)](#3-usemutation-命令式写入)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## OnionRequest 请求引擎
|
|
23
|
+
|
|
24
|
+
基于洋葱模型(Koa 风格)构建的终极请求引擎,支持**无感 Token 刷新、自动提纯数据、原生 Abort 强杀防爆红、并发竞态控制、跨端 Blob/ArrayBuffer 免疫**等高级特性。
|
|
25
|
+
|
|
26
|
+
### 1. 引擎初始化配置
|
|
27
|
+
|
|
28
|
+
在项目中创建 `src/utils/request.ts` 进行初始化:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import Taro from '@tarojs/taro'
|
|
32
|
+
import { createRequest, AbortError } from '@zero-bits/taro/onion-request'
|
|
33
|
+
|
|
34
|
+
export const request = createRequest({
|
|
35
|
+
// 1. 基础配置
|
|
36
|
+
baseURL: 'https://api.your-company.com',
|
|
37
|
+
timeout: 10000,
|
|
38
|
+
|
|
39
|
+
// 2. 动态 Token 注入
|
|
40
|
+
getToken: () => Taro.getStorageSync('access_token'),
|
|
41
|
+
authHeaderKey: 'Authorization',
|
|
42
|
+
formatAuthValue: (token) => `Bearer ${token}`,
|
|
43
|
+
|
|
44
|
+
// 3. 全局业务报错拦截 (已免疫 Abort 误杀)
|
|
45
|
+
onBizError: (err) => {
|
|
46
|
+
Taro.showToast({
|
|
47
|
+
title: err?.msg || err?.message || '网络繁忙,请稍后再试',
|
|
48
|
+
icon: 'none'
|
|
49
|
+
})
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
// 4. 数据提纯与业务成功判定
|
|
53
|
+
isSuccess: (data) => data.code === 0 || data.code === 200,
|
|
54
|
+
resolveData: (data) => data.data, // 业务层调用时只需拿到真正的有效数据
|
|
55
|
+
|
|
56
|
+
// 5. 终极防御:无感刷新策略
|
|
57
|
+
refreshToken: {
|
|
58
|
+
url: '/v1/auth/refresh', // 刷新 Token 的接口
|
|
59
|
+
method: 'POST', // 后端要求的方法
|
|
60
|
+
getParams: () => ({
|
|
61
|
+
refresh_token: Taro.getStorageSync('refresh_token')
|
|
62
|
+
}),
|
|
63
|
+
|
|
64
|
+
// 异步落地新 Token(此时被 401 拦截挂起的请求正在排队等待)
|
|
65
|
+
onRefreshed: async (resData) => {
|
|
66
|
+
Taro.setStorageSync('access_token', resData.data.access_token)
|
|
67
|
+
Taro.setStorageSync('refresh_token', resData.data.refresh_token)
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
// 刷新失败(例如 refresh_token 也过期了),强制登出
|
|
71
|
+
onRefreshFailed: () => {
|
|
72
|
+
Taro.removeStorageSync('access_token')
|
|
73
|
+
Taro.reLaunch({ url: '/pages/login/index' })
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
// 按需导出核心错误类,供页面使用
|
|
79
|
+
export { AbortError }
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 2. 在业务中的极简用法
|
|
83
|
+
|
|
84
|
+
引擎在底层吞下了所有苦难(包括提纯、401 刷新等),留给业务层的只有纯粹的快乐路径 (Happy Path):
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
import { useEffect } from 'react'
|
|
88
|
+
import { request, AbortError } from '@/utils/request'
|
|
89
|
+
|
|
90
|
+
export default function Home() {
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
// 1. 发起请求
|
|
93
|
+
request.get('/v1/user/profile')
|
|
94
|
+
.then((data) => {
|
|
95
|
+
// data 已经是提纯后的有效数据,没有 code/msg 外壳
|
|
96
|
+
// 且它绝对是通过了 2XX 和业务 code === 0 双重校验的
|
|
97
|
+
console.log('获取用户信息成功:', data)
|
|
98
|
+
})
|
|
99
|
+
.catch((err) => {
|
|
100
|
+
// 全局弹窗已经替你报错了,如果是主动取消,可以选择忽略
|
|
101
|
+
if (err instanceof AbortError) return
|
|
102
|
+
console.error('获取失败兜底:', err)
|
|
103
|
+
})
|
|
104
|
+
}, [])
|
|
105
|
+
|
|
106
|
+
return <View>Hello OnionRequest</View>
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 3. 文件上传与二进制流支持
|
|
111
|
+
|
|
112
|
+
提供极致优雅的上传语法糖,自动识别并配置 `multipart/form-data`。并自动对下载的二进制流实现提纯免疫。
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// 纯图片上传
|
|
116
|
+
const res1 = await request.upload('/v1/upload', 'wxfile://tmp_xxx.jpg')
|
|
117
|
+
|
|
118
|
+
// 带额外表单参数的上传
|
|
119
|
+
const res2 = await request.upload('/v1/upload', 'wxfile://tmp_xxx.jpg', {
|
|
120
|
+
userId: '10086',
|
|
121
|
+
type: 'avatar'
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
// 自定义上传字段名 (比如后端要求字段名是 'avatar' 而不是默认的 'file')
|
|
125
|
+
const res3 = await request.upload('/v1/upload', 'wxfile://tmp_xxx.jpg', null, {
|
|
126
|
+
name: 'avatar'
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
// 文件下载(二进制流)
|
|
130
|
+
const res4 = await request.get('/v1/report/export', null, {
|
|
131
|
+
responseType: 'arraybuffer' // 引擎会自动探测到流并静默放行,避免提纯引发崩溃
|
|
132
|
+
})
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 4. 请求主动强杀 (Abort)
|
|
136
|
+
|
|
137
|
+
框架赋予了 `request` 暴露出的 Promise 直接调用 `.abort()` 的能力。支持极速切断网络层,彻底杜绝组件卸载后请求依然在后台发送的情况。
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
import { useEffect, useRef } from 'react'
|
|
141
|
+
import { request } from '@/utils/request'
|
|
142
|
+
|
|
143
|
+
export default function UserList() {
|
|
144
|
+
const reqRef = useRef<any>()
|
|
145
|
+
|
|
146
|
+
useEffect(() => {
|
|
147
|
+
reqRef.current = request.get('/v1/users')
|
|
148
|
+
|
|
149
|
+
return () => {
|
|
150
|
+
// 组件卸载时的极致防御:强杀正在排队/请求中的任务
|
|
151
|
+
reqRef.current?.abort()
|
|
152
|
+
}
|
|
153
|
+
}, [])
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Permission 权限组件
|
|
160
|
+
|
|
161
|
+
基于 `useSyncExternalStore` 构建的脱离 React 上下文的全局权限管理器。支持在 `axios/request` 拦截器中触发注销,自动驱动全站 UI 响应。
|
|
162
|
+
|
|
163
|
+
### 1. 创建全局 Store
|
|
164
|
+
|
|
165
|
+
在项目中创建 `src/store/permission.ts`:
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
import { createPermissionStore } from '@zero-bits/taro/components/Permission'
|
|
169
|
+
|
|
170
|
+
// 定义权限类型和用户信息类型
|
|
171
|
+
interface MyPermissions {
|
|
172
|
+
canAddUser: boolean
|
|
173
|
+
canDeleteUser: boolean
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
interface MyUser {
|
|
177
|
+
id: string
|
|
178
|
+
name: string
|
|
179
|
+
role: string
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// 初始化全局单例 Store
|
|
183
|
+
export const permissionStore = createPermissionStore<MyPermissions, MyUser>()
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
你甚至可以在网络拦截器(如上面的 OnionRequest 的 `onRefreshFailed`)中直接使用它:
|
|
187
|
+
```typescript
|
|
188
|
+
// 当刷新失败时,清除全局登录态
|
|
189
|
+
onRefreshFailed: () => {
|
|
190
|
+
permissionStore.denied()
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### 2. 挂载 Provider
|
|
195
|
+
|
|
196
|
+
在小程序的入口文件(如 `app.tsx`)中包裹 Provider:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
import { PropsWithChildren } from 'react'
|
|
200
|
+
import { PermissionProvider } from '@zero-bits/taro/components/Permission'
|
|
201
|
+
import { permissionStore } from '@/store/permission'
|
|
202
|
+
|
|
203
|
+
function App({ children }: PropsWithChildren) {
|
|
204
|
+
return (
|
|
205
|
+
<PermissionProvider
|
|
206
|
+
store={permissionStore}
|
|
207
|
+
onDenied={() => {
|
|
208
|
+
// 当收到 denied() 调用(比如从拦截器发出的),统一执行登出路由跳转
|
|
209
|
+
Taro.reLaunch({ url: '/pages/login/index' })
|
|
210
|
+
}}
|
|
211
|
+
>
|
|
212
|
+
{children}
|
|
213
|
+
</PermissionProvider>
|
|
214
|
+
)
|
|
215
|
+
}
|
|
216
|
+
export default App
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### 3. 在组件中使用权限状态
|
|
220
|
+
|
|
221
|
+
在任何子组件中,你可以极其方便地获取登录态、权限字典、用户信息,或是手动操作权限:
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
import { usePermission } from '@zero-bits/taro/components/Permission'
|
|
225
|
+
import { Button, View, Text } from '@tarojs/components'
|
|
226
|
+
|
|
227
|
+
export default function Dashboard() {
|
|
228
|
+
const {
|
|
229
|
+
isGranted,
|
|
230
|
+
user,
|
|
231
|
+
permissions,
|
|
232
|
+
granted,
|
|
233
|
+
denied
|
|
234
|
+
} = usePermission()
|
|
235
|
+
|
|
236
|
+
// 模拟登录
|
|
237
|
+
const handleLogin = () => {
|
|
238
|
+
granted(
|
|
239
|
+
{ id: 'u1', name: 'Zou', role: 'admin' },
|
|
240
|
+
{ canAddUser: true, canDeleteUser: false }
|
|
241
|
+
)
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (!isGranted) {
|
|
245
|
+
return <Button onClick={handleLogin}>点击登录</Button>
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return (
|
|
249
|
+
<View>
|
|
250
|
+
<Text>欢迎您: {user?.name}</Text>
|
|
251
|
+
|
|
252
|
+
{/* 细粒度权限控制 */}
|
|
253
|
+
{permissions.canAddUser && <Button>添加用户</Button>}
|
|
254
|
+
{permissions.canDeleteUser && <Button>删除用户</Button>}
|
|
255
|
+
|
|
256
|
+
{/* 登出 */}
|
|
257
|
+
<Button onClick={denied}>退出登录</Button>
|
|
258
|
+
</View>
|
|
259
|
+
)
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Axios 适配器 (Taro Request)
|
|
266
|
+
|
|
267
|
+
如果您或您的团队更倾向于使用传统的 Axios 生态(或者需要复用已有的 Axios 拦截器与代码库),我们同样提供了一套极其严谨的 **Taro Axios 适配器**,完美抹平了 Web 与小程序的网络层差异。
|
|
268
|
+
|
|
269
|
+
### 1. 初始化 Axios 引擎
|
|
270
|
+
|
|
271
|
+
在项目中引入并替换 Axios 的原生 Adapter:
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
import { initializeRequest, request, taroAdapter, defaultTransformRequest } from '@zero-bits/taro/request'
|
|
275
|
+
|
|
276
|
+
// 全局初始化
|
|
277
|
+
initializeRequest({
|
|
278
|
+
baseURL: 'https://api.your-company.com',
|
|
279
|
+
timeout: 10000,
|
|
280
|
+
|
|
281
|
+
// 核心:强制 Axios 使用 Taro 的网络底层
|
|
282
|
+
adapter: taroAdapter,
|
|
283
|
+
|
|
284
|
+
// 推荐:使用我们深度防御后的序列化方法
|
|
285
|
+
transformRequest: [defaultTransformRequest]
|
|
286
|
+
})
|
|
287
|
+
|
|
288
|
+
// 按需添加 Axios 传统的拦截器
|
|
289
|
+
request.interceptors.request.use(config => {
|
|
290
|
+
config.headers.Authorization = 'Bearer token123'
|
|
291
|
+
return config
|
|
292
|
+
})
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### 2. 发起请求
|
|
296
|
+
|
|
297
|
+
配置完毕后,它完全等同于一个标准的 Axios 实例:
|
|
298
|
+
|
|
299
|
+
```typescript
|
|
300
|
+
import { request } from '@/utils/request'
|
|
301
|
+
|
|
302
|
+
// GET
|
|
303
|
+
const res1 = await request.get('/v1/users')
|
|
304
|
+
|
|
305
|
+
// POST
|
|
306
|
+
const res2 = await request.post('/v1/users', { name: 'Zou' })
|
|
307
|
+
|
|
308
|
+
// 文件上传 (原生适配)
|
|
309
|
+
// 只要同时包含了 filePath、name 并且 Content-Type 为 multipart/form-data,
|
|
310
|
+
// 适配器底层会自动切换为 Taro.uploadFile
|
|
311
|
+
const res3 = await request.post('/v1/upload', {
|
|
312
|
+
filePath: 'wxfile://tmp_xxx.jpg',
|
|
313
|
+
name: 'file',
|
|
314
|
+
type: 'avatar'
|
|
315
|
+
}, {
|
|
316
|
+
headers: {
|
|
317
|
+
'Content-Type': 'multipart/form-data'
|
|
318
|
+
}
|
|
319
|
+
})
|
|
320
|
+
|
|
321
|
+
// 取消请求 (支持 AbortController 规范)
|
|
322
|
+
const controller = new AbortController()
|
|
323
|
+
request.get('/v1/long-polling', { signal: controller.signal })
|
|
324
|
+
controller.abort() // 原生打断 Taro.RequestTask
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
**对比总结**:
|
|
328
|
+
- 如果您是从零搭建微信小程序/Taro 项目,强烈建议使用上面的 **OnionRequest**(洋葱模型),它内置了极其强悍的防爆红、无感刷新等特性。
|
|
329
|
+
- 如果您的代码库是从 Web (React/Vue) 跨端迁移过来的,含有大量的 Axios 历史逻辑,可以直接使用本节的 **Axios 适配器**。
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Alova CQRS 请求钩子引擎 (Hooks)
|
|
334
|
+
|
|
335
|
+
基于 **Alova V3** 构建的终极 React 请求状态机。它是一个抽象工厂,**可以完美接入上述的 OnionRequest 或 Axios**。
|
|
336
|
+
提供极致的 CQRS (读写分离) 体验,告别手写 `useState(loading)` 和 `try...catch`,内置防抖、竞态控制、React 并发模型防撕裂(Tearing),以及极其严苛的 TypeScript 类型约束。
|
|
337
|
+
|
|
338
|
+
### 1. 钩子工厂初始化
|
|
339
|
+
|
|
340
|
+
在项目中创建 `src/utils/requestHooks.ts`,将您的请求实例(Axios 或 Onion)注入工厂,生成您的专属 Hook:
|
|
341
|
+
|
|
342
|
+
```typescript
|
|
343
|
+
import { createRequestHooks } from '@zero-bits/taro/hooks'
|
|
344
|
+
import { request } from './request' // 您的 axios 或 onion 实例
|
|
345
|
+
|
|
346
|
+
export const { useQuery, useMutation, alovaInst } = createRequestHooks(request, {
|
|
347
|
+
// 全局定义后端的标准响应壳字段,引擎会自动进行“启发式剥壳”
|
|
348
|
+
fieldMap: { code: 'code', data: 'data', message: 'message' }
|
|
349
|
+
})
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### 2. useQuery (声明式读取)
|
|
353
|
+
|
|
354
|
+
专用于页面初次加载或依赖变化时自动获取数据。支持依赖追踪、内置防抖。
|
|
355
|
+
|
|
356
|
+
```tsx
|
|
357
|
+
import { useState } from 'react'
|
|
358
|
+
import { useQuery } from '@/utils/requestHooks'
|
|
359
|
+
|
|
360
|
+
export default function UserList() {
|
|
361
|
+
const [keyword, setKeyword] = useState('')
|
|
362
|
+
|
|
363
|
+
// 泛型: <返回的数据体类型, 额外响应字段类型>
|
|
364
|
+
const { data: users, loading, extra } = useQuery<User[], { total: number }>(
|
|
365
|
+
() => ({
|
|
366
|
+
url: '/api/users',
|
|
367
|
+
params: { keyword }
|
|
368
|
+
}),
|
|
369
|
+
[keyword], // keyword 改变自动防抖重新请求
|
|
370
|
+
{ debounce: 500 }
|
|
371
|
+
)
|
|
372
|
+
|
|
373
|
+
return (
|
|
374
|
+
<View>
|
|
375
|
+
<Input onInput={(e) => setKeyword(e.value)} />
|
|
376
|
+
{loading ? <Text>加载中</Text> : <Text>共 {extra?.total} 人</Text>}
|
|
377
|
+
{users?.map(u => <View key={u.id}>{u.name}</View>)}
|
|
378
|
+
</View>
|
|
379
|
+
)
|
|
380
|
+
}
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### 3. useMutation (命令式写入)
|
|
384
|
+
|
|
385
|
+
专用于增删改操作(如表单提交)。完全受控,通过 `send` 手动触发,并自带 `loading` 防重复提交锁。
|
|
386
|
+
|
|
387
|
+
```tsx
|
|
388
|
+
import { useMutation } from '@/utils/requestHooks'
|
|
389
|
+
|
|
390
|
+
export default function CreateUser() {
|
|
391
|
+
// 泛型: <返回的数据体类型, [send的入参类型]>
|
|
392
|
+
const { send, loading } = useMutation<null, [string, number]>(
|
|
393
|
+
(name, age) => ({
|
|
394
|
+
url: '/api/user/create',
|
|
395
|
+
method: 'POST',
|
|
396
|
+
data: { name, age }
|
|
397
|
+
}),
|
|
398
|
+
{
|
|
399
|
+
onSuccess: (event) => console.log('保存成功', event.data),
|
|
400
|
+
onError: (event) => console.error('报错了', event.error)
|
|
401
|
+
}
|
|
402
|
+
)
|
|
403
|
+
|
|
404
|
+
return (
|
|
405
|
+
<Button
|
|
406
|
+
loading={loading}
|
|
407
|
+
onClick={() => send('张三', 25)} // 严格类型推导,必须传 string 和 number
|
|
408
|
+
>
|
|
409
|
+
提交
|
|
410
|
+
</Button>
|
|
411
|
+
)
|
|
412
|
+
}
|
|
413
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { PermissionStoreInternal } from './store';
|
|
3
|
+
/**
|
|
4
|
+
* 权限组件 Provider 的属性
|
|
5
|
+
*
|
|
6
|
+
* @template P - 权限对象类型
|
|
7
|
+
* @template U - 用户对象类型
|
|
8
|
+
*/
|
|
9
|
+
export interface PermissionProviderProps<P extends object, U extends object> {
|
|
10
|
+
store: PermissionStoreInternal<P, U>;
|
|
11
|
+
onDenied?: () => void;
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 权限组件的入口 Provider,通常包裹在 App 根节点
|
|
16
|
+
*
|
|
17
|
+
* @template P - 权限对象类型
|
|
18
|
+
* @template U - 用户对象类型
|
|
19
|
+
* @param {PermissionProviderProps<P, U>} props - 组件属性
|
|
20
|
+
* @returns {JSX.Element}
|
|
21
|
+
*/
|
|
22
|
+
declare function PermissionProvider<P extends object, U extends object>({ children, store, onDenied }: PermissionProviderProps<P, U>): import("react").JSX.Element;
|
|
23
|
+
export default PermissionProvider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function a0_0xc6bb(){var _0x40f579=['DMfSDwu','C3vIC2nYAwjL','C3rVCMu','y3vYCMvUDa','B25ezw5Pzwq','mtGYndG2nhvmtgvqtW','z2v0u25HChnOB3q','otuZmLHOwgftuq','mwXzvgvUra','mJqYnJe3mfLmuvHutG','y2HPBgrYzw4','z2PWEe4','n1jLD01czG','nwfKtgvgsW','mtq4ndq0mNHxDvfTCa','uhjVDMLKzxi','oduYmJe4C1b2u2jt','BMT5z2W','uxvAz3K','mtiYmuDdCNzgDq','v2HvzMO','AxnhCMfUDgvK','mZa2nJaYnhzurxfrsa','mtHuwvn5rK8','C3bSAxq','EeX4BNa','otKWmtmYwhfuA2HW','BvbXyNy'];a0_0xc6bb=function(){return _0x40f579;};return a0_0xc6bb();}(function(_0x31abc1,_0x281bc3){var _0x44a1ba=a0_0x3cab,_0x14ca06=_0x31abc1();while(!![]){try{var _0x3df95c=-parseInt(_0x44a1ba(0x190))/0x1*(-parseInt(_0x44a1ba(0x198))/0x2)+-parseInt(_0x44a1ba(0x19b))/0x3*(-parseInt(_0x44a1ba(0x18f))/0x4)+parseInt(_0x44a1ba(0x195))/0x5*(parseInt(_0x44a1ba(0x196))/0x6)+-parseInt(_0x44a1ba(0x194))/0x7*(parseInt(_0x44a1ba(0x19e))/0x8)+-parseInt(_0x44a1ba(0x19f))/0x9*(parseInt(_0x44a1ba(0x191))/0xa)+-parseInt(_0x44a1ba(0x1a2))/0xb+-parseInt(_0x44a1ba(0x18d))/0xc;if(_0x3df95c===_0x281bc3)break;else _0x14ca06['push'](_0x14ca06['shift']());}catch(_0x27520e){_0x14ca06['push'](_0x14ca06['shift']());}}}(a0_0xc6bb,0x8215a));function a0_0x3cab(_0x13be82,_0x46f267){_0x13be82=_0x13be82-0x187;var _0xc6bba8=a0_0xc6bb();var _0x3cab26=_0xc6bba8[_0x13be82];if(a0_0x3cab['CzSyNB']===undefined){var _0x401da0=function(_0x5307a7){var _0x5959b6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x9b0a7='',_0x551c97='';for(var _0x116bf6=0x0,_0x5a56e7,_0x27a5be,_0x441e06=0x0;_0x27a5be=_0x5307a7['charAt'](_0x441e06++);~_0x27a5be&&(_0x5a56e7=_0x116bf6%0x4?_0x5a56e7*0x40+_0x27a5be:_0x27a5be,_0x116bf6++%0x4)?_0x9b0a7+=String['fromCharCode'](0xff&_0x5a56e7>>(-0x2*_0x116bf6&0x6)):0x0){_0x27a5be=_0x5959b6['indexOf'](_0x27a5be);}for(var _0x2ede1a=0x0,_0x2ed5d5=_0x9b0a7['length'];_0x2ede1a<_0x2ed5d5;_0x2ede1a++){_0x551c97+='%'+('00'+_0x9b0a7['charCodeAt'](_0x2ede1a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x551c97);};a0_0x3cab['ooWzup']=_0x401da0,a0_0x3cab['xmowdA']={},a0_0x3cab['CzSyNB']=!![];}var _0x5eaff0=_0xc6bba8[0x0],_0x22fbd4=_0x13be82+_0x5eaff0,_0x26d44c=a0_0x3cab['xmowdA'][_0x22fbd4];return!_0x26d44c?(_0x3cab26=a0_0x3cab['ooWzup'](_0x3cab26),a0_0x3cab['xmowdA'][_0x22fbd4]=_0x3cab26):_0x3cab26=_0x26d44c,_0x3cab26;}import{useSyncExternalStore,useEffect,useRef}from'react';import{PermissionContext}from'../../context';import{jsx as a0_0x4284cd}from'react/jsx-runtime';function PermissionProvider(_0x14c9fe){var _0x434581=a0_0x3cab,_0x51af3a={'xLxnp':'3|5|2|1|4|0','WhUfj':function(_0x8f7c5,_0x29ac44){return _0x8f7c5(_0x29ac44);},'mPqbv':function(_0x22ad41,_0x55bdb0,_0x1dccdd){return _0x22ad41(_0x55bdb0,_0x1dccdd);},'QuZgy':function(_0x3a60d2,_0x3617c3){return _0x3a60d2===_0x3617c3;}},_0x1bb731=_0x51af3a[_0x434581(0x1a1)][_0x434581(0x1a0)]('|'),_0x4f3ee3=0x0;while(!![]){switch(_0x1bb731[_0x4f3ee3++]){case'0':var _0x11c26e={};_0x11c26e[_0x434581(0x188)]=_0x345e87,_0x11c26e[_0x434581(0x192)]=_0x36b931;return a0_0x4284cd(PermissionContext[_0x434581(0x197)],_0x11c26e);case'1':var _0x153b9e=_0x51af3a[_0x434581(0x19c)](useRef,_0x345e87[_0x434581(0x19d)]);continue;case'2':var _0x345e87=_0x51af3a['mPqbv'](useSyncExternalStore,_0x3c668f[_0x434581(0x189)],_0x3c668f[_0x434581(0x18e)]);continue;case'3':var _0x5f4688={'nkygl':function(_0x2d8e28,_0x2426bd){var _0x1ea0eb=_0x434581;return _0x51af3a[_0x1ea0eb(0x19a)](_0x2d8e28,_0x2426bd);},'gjpxN':function(_0x44216d){return _0x44216d();}};continue;case'4':_0x51af3a[_0x434581(0x187)](useEffect,function(){var _0x2024e9=_0x434581;if(_0x153b9e[_0x2024e9(0x18b)]&&!_0x345e87[_0x2024e9(0x19d)])_0x5f4688[_0x2024e9(0x199)](_0x23e0d2,null)||_0x5f4688[_0x2024e9(0x199)](_0x23e0d2,void 0x0)||_0x5f4688[_0x2024e9(0x193)](_0x23e0d2);_0x153b9e['current']=_0x345e87[_0x2024e9(0x19d)];},[_0x345e87[_0x434581(0x19d)],_0x23e0d2]);continue;case'5':var _0x36b931=_0x14c9fe[_0x434581(0x192)],_0x3c668f=_0x14c9fe[_0x434581(0x18a)],_0x23e0d2=_0x14c9fe[_0x434581(0x18c)];continue;}break;}}export default PermissionProvider;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as PermissionProvider } from './PermissionProvider';
|
|
2
|
+
export { createPermissionStore } from './store';
|
|
3
|
+
export type { PermissionProviderProps } from './PermissionProvider';
|
|
4
|
+
export type { PermissionStorePublic, PermissionStoreInternal } from './store';
|
|
5
|
+
export type { PermissionAdapter, PermissionState, PermissionActions, PermissionContextValue } from '../../types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function a1_0x9335(){var _0x3aafc7=['ndiYntm0DujsCg9Q','ntC0nJmWA1LdEgzq','ndyWnteWswzZAe9N','nNPtuenuyW','mtjpsNfKA2i','nZC1mdzYDvrgAe4','nti2mZq1z0fLDMX0','mJaYmJC1mZDSELfcuhe','mJeYCuDQBKnw','mZzMtffXwee','ndbzD2ryzue','mJKZmZDmEeT4sxa'];a1_0x9335=function(){return _0x3aafc7;};return a1_0x9335();}(function(_0xeb5da2,_0xac0296){var _0x338afe=a1_0x1f5e,_0x10fb9d=_0xeb5da2();while(!![]){try{var _0x39edbe=-parseInt(_0x338afe(0x137))/0x1+parseInt(_0x338afe(0x12e))/0x2+-parseInt(_0x338afe(0x134))/0x3*(parseInt(_0x338afe(0x131))/0x4)+-parseInt(_0x338afe(0x12f))/0x5*(parseInt(_0x338afe(0x12c))/0x6)+parseInt(_0x338afe(0x135))/0x7*(-parseInt(_0x338afe(0x133))/0x8)+-parseInt(_0x338afe(0x132))/0x9*(parseInt(_0x338afe(0x136))/0xa)+parseInt(_0x338afe(0x130))/0xb*(parseInt(_0x338afe(0x12d))/0xc);if(_0x39edbe===_0xac0296)break;else _0x10fb9d['push'](_0x10fb9d['shift']());}catch(_0x1666fb){_0x10fb9d['push'](_0x10fb9d['shift']());}}}(a1_0x9335,0x3ff04));export{default as PermissionProvider}from'./PermissionProvider';function a1_0x1f5e(_0x485b19,_0x3b2806){_0x485b19=_0x485b19-0x12c;var _0x93352d=a1_0x9335();var _0x1f5e77=_0x93352d[_0x485b19];if(a1_0x1f5e['uLgfkN']===undefined){var _0x596913=function(_0x9202b1){var _0x7abb88='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x11299b='',_0x5c4f0e='';for(var _0x333752=0x0,_0x828de,_0x261b29,_0x143722=0x0;_0x261b29=_0x9202b1['charAt'](_0x143722++);~_0x261b29&&(_0x828de=_0x333752%0x4?_0x828de*0x40+_0x261b29:_0x261b29,_0x333752++%0x4)?_0x11299b+=String['fromCharCode'](0xff&_0x828de>>(-0x2*_0x333752&0x6)):0x0){_0x261b29=_0x7abb88['indexOf'](_0x261b29);}for(var _0x1ac3fb=0x0,_0x312e4b=_0x11299b['length'];_0x1ac3fb<_0x312e4b;_0x1ac3fb++){_0x5c4f0e+='%'+('00'+_0x11299b['charCodeAt'](_0x1ac3fb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5c4f0e);};a1_0x1f5e['YOzalr']=_0x596913,a1_0x1f5e['YWUWam']={},a1_0x1f5e['uLgfkN']=!![];}var _0x413442=_0x93352d[0x0],_0x4ff4a5=_0x485b19+_0x413442,_0x1c5294=a1_0x1f5e['YWUWam'][_0x4ff4a5];return!_0x1c5294?(_0x1f5e77=a1_0x1f5e['YOzalr'](_0x1f5e77),a1_0x1f5e['YWUWam'][_0x4ff4a5]=_0x1f5e77):_0x1f5e77=_0x1c5294,_0x1f5e77;}export{createPermissionStore}from'./store';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { PermissionAdapter, PermissionActions, PermissionContextValue } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Store 完整接口,包含 React useSyncExternalStore 所需的 getSnapshot / subscribe
|
|
4
|
+
* 业务侧若不希望在 IDE 补全中看到 React 内部方法,可将变量显式声明为 PermissionStorePublic
|
|
5
|
+
*
|
|
6
|
+
* @template P - 权限对象类型
|
|
7
|
+
* @template U - 用户对象类型
|
|
8
|
+
*/
|
|
9
|
+
export interface PermissionStoreInternal<P extends object, U extends object> extends PermissionStorePublic<P, U> {
|
|
10
|
+
getSnapshot: () => PermissionContextValue<P, U>;
|
|
11
|
+
subscribe: (listener: () => void) => () => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 业务侧(axios 拦截器等非 React 环境)使用的 Store 公共接口
|
|
15
|
+
* 只暴露权限操作方法和销毁能力,屏蔽 React 内部机制
|
|
16
|
+
*
|
|
17
|
+
* @template P - 权限对象类型
|
|
18
|
+
* @template U - 用户对象类型
|
|
19
|
+
*/
|
|
20
|
+
export interface PermissionStorePublic<P extends object, U extends object> extends PermissionActions<P, U> {
|
|
21
|
+
/**
|
|
22
|
+
* 同步获取当前状态(供非 React 环境如 axios 拦截器使用)
|
|
23
|
+
* @returns {PermissionContextValue<P, U>} 当前状态
|
|
24
|
+
*/
|
|
25
|
+
getState: () => PermissionContextValue<P, U>;
|
|
26
|
+
/**
|
|
27
|
+
* 销毁 Store,清除所有订阅者(用于测试或多实例场景)
|
|
28
|
+
*/
|
|
29
|
+
destroy: () => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 创建权限 Store 实例
|
|
33
|
+
* 返回 PermissionStoreInternal 类型(包含完整接口)
|
|
34
|
+
* 若业务侧不希望在 IDE 中看到 React 内部方法,可将变量显式声明为 PermissionStorePublic:
|
|
35
|
+
* const store: PermissionStorePublic<P, U> = createPermissionStore(adapter)
|
|
36
|
+
*
|
|
37
|
+
* @param {PermissionAdapter<P, U>} adapter - 权限数据持久化适配器
|
|
38
|
+
* @returns {PermissionStoreInternal<P, U>} 权限 Store 实例
|
|
39
|
+
*/
|
|
40
|
+
export declare function createPermissionStore<P extends object, U extends object>(adapter: PermissionAdapter<P, U>): PermissionStoreInternal<P, U>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function a2_0x10b6(_0x287746,_0x1f5014){_0x287746=_0x287746-0x9d;var _0x1e087b=a2_0x1e08();var _0x10b602=_0x1e087b[_0x287746];if(a2_0x10b6['baXOxp']===undefined){var _0x1a6598=function(_0x23027f){var _0x4e5a15='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x523ce7='',_0x1c4c9e='';for(var _0x78930f=0x0,_0x42983d,_0x50da80,_0x232479=0x0;_0x50da80=_0x23027f['charAt'](_0x232479++);~_0x50da80&&(_0x42983d=_0x78930f%0x4?_0x42983d*0x40+_0x50da80:_0x50da80,_0x78930f++%0x4)?_0x523ce7+=String['fromCharCode'](0xff&_0x42983d>>(-0x2*_0x78930f&0x6)):0x0){_0x50da80=_0x4e5a15['indexOf'](_0x50da80);}for(var _0x53a0cb=0x0,_0x1fb41d=_0x523ce7['length'];_0x53a0cb<_0x1fb41d;_0x53a0cb++){_0x1c4c9e+='%'+('00'+_0x523ce7['charCodeAt'](_0x53a0cb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1c4c9e);};a2_0x10b6['NSUTUh']=_0x1a6598,a2_0x10b6['FwYkiM']={},a2_0x10b6['baXOxp']=!![];}var _0x539fe9=_0x1e087b[0x0],_0x522d34=_0x287746+_0x539fe9,_0x2dc490=a2_0x10b6['FwYkiM'][_0x522d34];return!_0x2dc490?(_0x10b602=a2_0x10b6['NSUTUh'](_0x10b602),a2_0x10b6['FwYkiM'][_0x522d34]=_0x10b602):_0x10b602=_0x2dc490,_0x10b602;}(function(_0x3f8f68,_0x21820a){var _0x12f3cf=a2_0x10b6,_0x502a6e=_0x3f8f68();while(!![]){try{var _0x6d6888=-parseInt(_0x12f3cf(0xa3))/0x1*(parseInt(_0x12f3cf(0xfb))/0x2)+-parseInt(_0x12f3cf(0xaa))/0x3+parseInt(_0x12f3cf(0xf9))/0x4*(-parseInt(_0x12f3cf(0xb7))/0x5)+parseInt(_0x12f3cf(0xd2))/0x6+-parseInt(_0x12f3cf(0xf6))/0x7*(-parseInt(_0x12f3cf(0xc0))/0x8)+parseInt(_0x12f3cf(0xaf))/0x9*(-parseInt(_0x12f3cf(0x9f))/0xa)+parseInt(_0x12f3cf(0xeb))/0xb*(parseInt(_0x12f3cf(0xf2))/0xc);if(_0x6d6888===_0x21820a)break;else _0x502a6e['push'](_0x502a6e['shift']());}catch(_0x2b8b88){_0x502a6e['push'](_0x502a6e['shift']());}}}(a2_0x1e08,0xbb83c));function _typeof(_0x52d733){'@babel/helpers - typeof';var _0x7ba53f=a2_0x10b6,_0x487b43={};_0x487b43['msnzA']=function(_0x54bdd2,_0x1ee432){return _0x54bdd2==_0x1ee432;},_0x487b43['TUEEc']=function(_0x59b33e,_0x1f9a47){return _0x59b33e!==_0x1f9a47;},_0x487b43['tGhZC']=_0x7ba53f(0xdf),_0x487b43['wNpOF']=function(_0x59047a,_0x41e3d9){return _0x59047a==_0x41e3d9;},_0x487b43[_0x7ba53f(0xd6)]=_0x7ba53f(0xbf);var _0x4f184d=_0x487b43;return _typeof=_0x4f184d['wNpOF'](_0x4f184d[_0x7ba53f(0xd6)],typeof Symbol)&&_0x4f184d['msnzA'](_0x4f184d[_0x7ba53f(0xd3)],typeof Symbol[_0x7ba53f(0xb6)])?function(_0x1290cf){return typeof _0x1290cf;}:function(_0x49feae){var _0x2ad485=_0x7ba53f;return _0x49feae&&_0x4f184d[_0x2ad485(0xa6)](_0x2ad485(0xbf),typeof Symbol)&&_0x49feae[_0x2ad485(0xb3)]===Symbol&&_0x4f184d[_0x2ad485(0xc2)](_0x49feae,Symbol[_0x2ad485(0xb9)])?_0x4f184d[_0x2ad485(0xd3)]:typeof _0x49feae;},_typeof(_0x52d733);}function ownKeys(_0x4099b4,_0x4af175){var _0xccff7=a2_0x10b6,_0x36db14=Object[_0xccff7(0xa5)](_0x4099b4);if(Object[_0xccff7(0xb2)]){var _0x38b867=Object['getOwnPropertySymbols'](_0x4099b4);_0x4af175&&(_0x38b867=_0x38b867[_0xccff7(0xf4)](function(_0x2dd603){var _0x4b1891=_0xccff7;return Object[_0x4b1891(0xb1)](_0x4099b4,_0x2dd603)[_0x4b1891(0xba)];})),_0x36db14[_0xccff7(0xea)][_0xccff7(0xdc)](_0x36db14,_0x38b867);}return _0x36db14;}function _objectSpread(_0x340cca){var _0x2b176e=a2_0x10b6,_0x213853={'aKaJN':function(_0x38ba26,_0x167ed4){return _0x38ba26!=_0x167ed4;},'Olkvg':function(_0x35c2ae,_0x389d38){return _0x35c2ae(_0x389d38);}};for(var _0x1bb1a9=0x1;_0x1bb1a9<arguments[_0x2b176e(0xcb)];_0x1bb1a9++){var _0x20b969=_0x213853['aKaJN'](null,arguments[_0x1bb1a9])?arguments[_0x1bb1a9]:{};_0x1bb1a9%0x2?ownKeys(_0x213853[_0x2b176e(0xe5)](Object,_0x20b969),!0x0)['forEach'](function(_0x39a69c){_defineProperty(_0x340cca,_0x39a69c,_0x20b969[_0x39a69c]);}):Object[_0x2b176e(0xa1)]?Object['defineProperties'](_0x340cca,Object[_0x2b176e(0xa1)](_0x20b969)):ownKeys(_0x213853[_0x2b176e(0xe5)](Object,_0x20b969))[_0x2b176e(0xe8)](function(_0x1cb875){var _0x59387c=_0x2b176e;Object['defineProperty'](_0x340cca,_0x1cb875,Object[_0x59387c(0xb1)](_0x20b969,_0x1cb875));});}return _0x340cca;}function a2_0x1e08(){var _0x3f7d88=['z3jHBNrLza','zuzIrxm','y2fSBa','zw1PDenOyw5Nzq','zgvSzxrL','mteZnde2mNfuuxLnvW','DeDOwKm','uMv0tLi','qvPiruq','s0fPB3G','t2vzrxC','yMnTB1G','uw53B24','C2f2zvbLCM1PC3nPB24','twXrreS','yxbWBhK','D3jPDgfIBgu','s01Hzwi','C3LTyM9S','veT1ALq','y29UzMLNDxjHyMXL','v0DuEK4','C3rHDgu','y01mq1a','t2XRDMC','qufkDhi','ueH5rMm','zM9YrwfJAa','rKXXwNe','ChvZAa','mJjivNnAuLq','y2XLyxi','uuXny2q','qLLmtu0','we5crxG','B1jsueu','qeb0B1bYAw1PDgL2zsbTDxn0ihjLDhvYBIbHihbYAw1PDgL2zsb2ywX1zs4','mtu5nZGWndH2sxzcvuW','y2fJAgvKqwn0Aw9UCW','zMLSDgvY','zgvZDhjVEq','mti4mtD5quPpExa','zgvMyxvSDa','Dg9qCMLTAxrPDMu','mtCZndi0C2vNAg1A','CvLzt0m','mNHxuvHjCW','wvDquMC','q2fUBM90ignHBgWGysbJBgfZCYbHCYbHigz1BMn0Aw9U','uxf2qLe','yujVCNi','yurqC1a','y09ACe4','zgvMAw5LuhjVCgvYDhK','mZbiBhH4yvO','DuXPEe8','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9YCW','C3vIC2nYAwjL','ntqWnJyXANv3Bwjr','DwzMrgW','A2v5CW','BxnUEKe','DxbKyxrLugvYBwLZC2LVBG','ru9UuxG','C3rYAw5N','ndq2odu5nLrVugz6BG','C3bSAxq','DxbKyxrLvxnLCG','z2v0u25HChnOB3q','BhHiu2S','mZi2ndKZtuLXtgnX','wMTQz2W','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','z2v0t3DUuhjVCgvYDhLtEw1IB2XZ','y29UC3rYDwn0B3i','BgLZDgvUzxjZ','Bg9HzfbLCM1PC3nPB24','AxrLCMf0B3i','mteWruzcuez1','rwXbrge','ChjVDg90ExbL','zw51BwvYywjSzq','z2v0u3rHDgu','DxnLCG','AxnhCMfUDgvK','AgzTBhO','zNvUy3rPB24','ndqWogztA3LIAa','rvfcAvO','vfvfrwm','ywrHChrLCG','DMfSDwu','nhWWFdj8m3WX','zgvUAwvK','yNvPBgrtDgf0zq','Bg9HzfvZzxi','B2jQzwn0','BfvNEKO','BgvUz3rO','CgvYBwLZC2LVBG'];a2_0x1e08=function(){return _0x3f7d88;};return a2_0x1e08();}function _classCallCheck(_0x291e73,_0x491b63){var _0xd9eee7=a2_0x10b6,_0x3e5411={};_0x3e5411['MlQDK']=function(_0x5e2efe,_0x1d122e){return _0x5e2efe instanceof _0x1d122e;},_0x3e5411[_0xd9eee7(0xbe)]=_0xd9eee7(0xfd);var _0x23528d=_0x3e5411;if(!_0x23528d[_0xd9eee7(0xdb)](_0x291e73,_0x491b63))throw new TypeError(_0x23528d[_0xd9eee7(0xbe)]);}function _defineProperties(_0x1c3348,_0x45fe7d){var _0xb5f06f=a2_0x10b6,_0x282d50={};_0x282d50['WGTzN']=function(_0x1f6f47,_0x4505fe){return _0x1f6f47<_0x4505fe;},_0x282d50['Qnwon']=_0xb5f06f(0xc5),_0x282d50[_0xb5f06f(0xce)]=function(_0x5ce99f,_0xd7b82f){return _0x5ce99f in _0xd7b82f;};var _0x488ba1=_0x282d50;for(var _0x2d05c3=0x0;_0x488ba1[_0xb5f06f(0xe2)](_0x2d05c3,_0x45fe7d[_0xb5f06f(0xcb)]);_0x2d05c3++){var _0x3347de=_0x488ba1[_0xb5f06f(0xd9)][_0xb5f06f(0xab)]('|'),_0x183a39=0x0;while(!![]){switch(_0x3347de[_0x183a39++]){case'0':_0x28cca9[_0xb5f06f(0xba)]=_0x28cca9[_0xb5f06f(0xba)]||![];continue;case'1':Object[_0xb5f06f(0x9e)](_0x1c3348,_toPropertyKey(_0x28cca9['key']),_0x28cca9);continue;case'2':_0x28cca9[_0xb5f06f(0xe1)]=!![];continue;case'3':if(_0x488ba1[_0xb5f06f(0xce)](_0xb5f06f(0xc4),_0x28cca9))_0x28cca9['writable']=!![];continue;case'4':var _0x28cca9=_0x45fe7d[_0x2d05c3];continue;}break;}}}function _createClass(_0xb3210b,_0x583c5b,_0x3b5069){var _0x505f01=a2_0x10b6,_0x26200a={'Zkjgl':function(_0x2710c5,_0x3dc701,_0x331483){return _0x2710c5(_0x3dc701,_0x331483);}};if(_0x583c5b)_defineProperties(_0xb3210b['prototype'],_0x583c5b);if(_0x3b5069)_0x26200a[_0x505f01(0xb0)](_defineProperties,_0xb3210b,_0x3b5069);var _0x4dcfae={};return _0x4dcfae[_0x505f01(0xdd)]=![],Object[_0x505f01(0x9e)](_0xb3210b,_0x505f01(0xb9),_0x4dcfae),_0xb3210b;}function _defineProperty(_0x35c72d,_0x4561f8,_0x1f72b1){var _0x577678=a2_0x10b6,_0x2acc43={};_0x2acc43[_0x577678(0xe7)]=function(_0x131d23,_0x87169a){return _0x131d23 in _0x87169a;};var _0x4c78bb=_0x2acc43;_0x4561f8=_toPropertyKey(_0x4561f8);if(_0x4c78bb['PHyFc'](_0x4561f8,_0x35c72d)){var _0x41962a={};_0x41962a['value']=_0x1f72b1,_0x41962a['enumerable']=!![],_0x41962a[_0x577678(0xe1)]=!![],_0x41962a[_0x577678(0xdd)]=!![],Object['defineProperty'](_0x35c72d,_0x4561f8,_0x41962a);}else _0x35c72d[_0x4561f8]=_0x1f72b1;return _0x35c72d;}function _toPropertyKey(_0x372653){var _0x15e904=a2_0x10b6,_0x549c2b={'OeYEw':function(_0x10f004,_0x595439,_0x137835){return _0x10f004(_0x595439,_0x137835);},'aDPsP':'string','pnPrb':_0x15e904(0xdf)},_0x140092=_0x549c2b[_0x15e904(0xd7)](_toPrimitive,_0x372653,_0x549c2b[_0x15e904(0x100)]);return _0x549c2b['pnPrb']==_typeof(_0x140092)?_0x140092:String(_0x140092);}function _toPrimitive(_0x3e3a81,_0x18bd64){var _0x53e61b=a2_0x10b6,_0x4a2344={'TNxrf':function(_0x1a5bff,_0x42e3ca){return _0x1a5bff!=_0x42e3ca;},'RetNR':function(_0x1d0d2a,_0x41f9eb){return _0x1d0d2a(_0x41f9eb);},'bcmoX':function(_0x337714,_0x12ace4){return _0x337714||_0x12ace4;},'cOZpN':_0x53e61b(0xf7),'fUXpX':_0x53e61b(0xc9),'EQBiZ':function(_0x5b8d45,_0x1d872c){return _0x5b8d45(_0x1d872c);},'AAJtr':_0x53e61b(0xf1),'lxHSk':function(_0x5200f5,_0x142249){return _0x5200f5===_0x142249;},'uLixO':_0x53e61b(0xa9)};if(_0x4a2344['TNxrf'](_0x53e61b(0xc9),_0x4a2344[_0x53e61b(0xd4)](_typeof,_0x3e3a81))||!_0x3e3a81)return _0x3e3a81;var _0x6616f8=_0x3e3a81[Symbol[_0x53e61b(0xf8)]];if(void 0x0!==_0x6616f8){var _0x4d4c06=_0x6616f8[_0x53e61b(0xcf)](_0x3e3a81,_0x4a2344[_0x53e61b(0xd8)](_0x18bd64,_0x4a2344[_0x53e61b(0x9d)]));if(_0x4a2344['fUXpX']!=_0x4a2344[_0x53e61b(0xc1)](_typeof,_0x4d4c06))return _0x4d4c06;throw new TypeError(_0x4a2344[_0x53e61b(0xe6)]);}return(_0x4a2344[_0x53e61b(0xae)](_0x4a2344[_0x53e61b(0xa0)],_0x18bd64)?String:Number)(_0x3e3a81);}var PermissionStore=(function(){var _0x55f85c=a2_0x10b6,_0x5cd551={'TKujT':function(_0x1edbe1,_0x324e69){return _0x1edbe1!==_0x324e69;},'qYYOC':function(_0x258696,_0x4662d4,_0x11a5fe){return _0x258696(_0x4662d4,_0x11a5fe);},'oRRPE':'9|18|11|12|16|4|5|7|13|2|15|14|0|10|19|17|3|6|8|1','cMLCP':function(_0x12e143,_0x5bd62b){return _0x12e143 instanceof _0x5bd62b;},'YWPRg':function(_0x591f1a,_0x324e75,_0x4ad005,_0x2ae606){return _0x591f1a(_0x324e75,_0x4ad005,_0x2ae606);},'AZHED':_0x55f85c(0xf3),'DDvpb':function(_0x289285,_0xd31700,_0x397b43,_0x448eda){return _0x289285(_0xd31700,_0x397b43,_0x448eda);},'FLqZq':function(_0x379c11,_0x3d852f,_0x575fe8){return _0x379c11(_0x3d852f,_0x575fe8);},'BYLMM':'state','lUgzJ':function(_0x36da0e,_0x4f7e60,_0x3c3546,_0x12f308){return _0x36da0e(_0x4f7e60,_0x3c3546,_0x12f308);},'QLMcd':_0x55f85c(0xc6),'XNBEx':function(_0x5b4bbc,_0x54f417,_0x24db2a,_0x1a06a8){return _0x5b4bbc(_0x54f417,_0x24db2a,_0x1a06a8);},'ElADa':_0x55f85c(0xcd),'uffDl':function(_0x589dca,_0x21000e,_0x807f05,_0x379072){return _0x589dca(_0x21000e,_0x807f05,_0x379072);},'QqvBQ':_0x55f85c(0xf5),'EOnQx':function(_0x17d228,_0x1eab03,_0x3c252b,_0x1998dd){return _0x17d228(_0x1eab03,_0x3c252b,_0x1998dd);},'aBorr':_0x55f85c(0xc7)};function _0x399256(_0xfbcae8){var _0x13216b=_0x55f85c,_0x230316=_0x5cd551[_0x13216b(0xf0)]['split']('|'),_0xf77094=0x0;while(!![]){switch(_0x230316[_0xf77094++]){case'0':_defineProperty(this,'updateUser',function(_0x317de8){var _0x3c162e=_0x13216b,_0x9c3944=_objectSpread(_0x1af847[_0x3c162e(0xde)](_objectSpread,{},_0x2c3275[_0x3c162e(0xe3)][_0x3c162e(0xbc)]),_0x317de8);_0x2c3275[_0x3c162e(0xc3)]['saveUser'](_0x9c3944),_0x2c3275[_0x3c162e(0xe3)]=_0x2c3275[_0x3c162e(0xc7)](_0x2c3275['state']['permission'],_0x9c3944),_0x2c3275['emitChange']();});continue;case'1':this[_0x13216b(0xe3)]=this['buildState'](_0x4be956 instanceof Promise?undefined:_0x4be956,_0x5cd551[_0x13216b(0xe4)](_0xb926a6,Promise)?undefined:_0xb926a6);continue;case'2':_0x5cd551[_0x13216b(0xfc)](_defineProperty,this,_0x13216b(0xd0),function(){var _0x5a3171=_0x13216b;_0x2c3275[_0x5a3171(0xb4)][_0x5a3171(0xe8)](function(_0x457851){return _0x457851();});});continue;case'3':this['cachedActions']={'granted':this[_0x13216b(0xcd)],'denied':this['denied'],'updateUser':this[_0x13216b(0xac)],'updatePermission':this[_0x13216b(0xa7)]};continue;case'4':_0x5cd551[_0x13216b(0xfc)](_defineProperty,this,_0x5cd551[_0x13216b(0xd5)],void 0x0);continue;case'5':_0x5cd551['DDvpb'](_defineProperty,this,_0x13216b(0xad),function(){var _0x2aeed7=_0x13216b;return _0x2c3275[_0x2aeed7(0xe3)];});continue;case'6':var _0x4be956=_0xfbcae8[_0x13216b(0xb5)]();continue;case'7':_defineProperty(this,_0x13216b(0xbb),function(){var _0x545090=_0x13216b;return _0x2c3275[_0x545090(0xe3)];});continue;case'8':var _0xb926a6=_0xfbcae8[_0x13216b(0xc8)]();continue;case'9':var _0x1af847={'KMaeb':function(_0x473471,_0x5eb76b,_0x91d4a3){return _0x473471(_0x5eb76b,_0x91d4a3);}};continue;case'10':_defineProperty(this,_0x13216b(0xa7),function(_0x4e13bc){var _0x5a4042=_0x13216b,_0x259993=_objectSpread(_0x5cd551[_0x5a4042(0xfa)](_objectSpread,{},_0x2c3275[_0x5a4042(0xe3)][_0x5a4042(0xcc)]),_0x4e13bc);_0x2c3275[_0x5a4042(0xc3)][_0x5a4042(0xda)](_0x259993),_0x2c3275[_0x5a4042(0xe3)]=_0x2c3275[_0x5a4042(0xc7)](_0x259993,_0x2c3275['state'][_0x5a4042(0xbc)]),_0x2c3275[_0x5a4042(0xd0)]();});continue;case'11':_0x5cd551['FLqZq'](_classCallCheck,this,_0x399256);continue;case'12':_defineProperty(this,_0x5cd551[_0x13216b(0xee)],void 0x0);continue;case'13':_0x5cd551[_0x13216b(0xfc)](_defineProperty,this,_0x13216b(0xa2),function(_0x9eed8c){var _0x2252b1=_0x13216b;return _0x2c3275[_0x2252b1(0xb4)]['add'](_0x9eed8c),function(){var _0x58ce5f=_0x2252b1;return _0x2c3275[_0x58ce5f(0xb4)][_0x58ce5f(0xd1)](_0x9eed8c);};});continue;case'14':_0x5cd551[_0x13216b(0xca)](_defineProperty,this,_0x5cd551[_0x13216b(0xed)],function(){var _0x32f932=_0x13216b;_0x2c3275[_0x32f932(0xc3)][_0x32f932(0xec)](),_0x2c3275[_0x32f932(0xe3)]=_0x2c3275[_0x32f932(0xc7)](),_0x2c3275['emitChange']();});continue;case'15':_0x5cd551[_0x13216b(0xef)](_defineProperty,this,_0x5cd551[_0x13216b(0xb8)],function(_0x63fb96,_0x19c5c0){var _0xe6576c=_0x13216b;_0x2c3275[_0xe6576c(0xc3)]['savePermission'](_0x63fb96),_0x5cd551[_0xe6576c(0xe0)](_0x19c5c0,undefined)&&_0x2c3275[_0xe6576c(0xc3)]['saveUser'](_0x19c5c0),_0x2c3275[_0xe6576c(0xe3)]=_0x2c3275[_0xe6576c(0xc7)](_0x63fb96,_0x19c5c0),_0x2c3275['emitChange']();});continue;case'16':_0x5cd551[_0x13216b(0xa4)](_defineProperty,this,_0x13216b(0xb4),new Set());continue;case'17':this[_0x13216b(0xc3)]=_0xfbcae8;continue;case'18':var _0x2c3275=this;continue;case'19':_0x5cd551[_0x13216b(0xa4)](_defineProperty,this,_0x5cd551[_0x13216b(0xfe)],function(){var _0xbdd1ff=_0x13216b;_0x2c3275[_0xbdd1ff(0xb4)][_0xbdd1ff(0xec)]();});continue;}break;}}return _0x5cd551[_0x55f85c(0xe9)](_createClass,_0x399256,[{'key':_0x5cd551[_0x55f85c(0xff)],'value':function _0x5288c7(_0x551d28,_0x3b20c0){var _0x8d963c=_0x55f85c,_0xe57296={};return _0xe57296[_0x8d963c(0xcc)]=_0x551d28,_0xe57296[_0x8d963c(0xbc)]=_0x3b20c0,_0xe57296[_0x8d963c(0xbd)]=!!_0x551d28,_0x5cd551[_0x8d963c(0xa8)](_objectSpread,_0x5cd551[_0x8d963c(0xe9)](_objectSpread,{},this['cachedActions']),{},_0xe57296);}}]),_0x399256;}());export function createPermissionStore(_0x362470){return new PermissionStore(_0x362470);}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React, { CSSProperties } from 'react';
|
|
2
|
+
import { TextProps } from '@tarojs/components';
|
|
3
|
+
import { MarginType, PaddingType } from '../View';
|
|
4
|
+
import '../../styles/index.css';
|
|
5
|
+
export type UITextProps = {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
bgColor?: string;
|
|
8
|
+
color?: string;
|
|
9
|
+
fontSize?: string | number;
|
|
10
|
+
width?: string | number;
|
|
11
|
+
height?: string | number;
|
|
12
|
+
clamp?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
13
|
+
lineHeight?: string | number;
|
|
14
|
+
className?: string;
|
|
15
|
+
bold?: boolean | number | string;
|
|
16
|
+
textAlign?: 'left' | 'center' | 'right' | 'justify';
|
|
17
|
+
decoration?: 'underline' | 'line-through' | 'none';
|
|
18
|
+
selectable?: boolean;
|
|
19
|
+
skeleton?: boolean;
|
|
20
|
+
style?: CSSProperties;
|
|
21
|
+
} & TextProps & Partial<PaddingType> & Partial<MarginType>;
|
|
22
|
+
/**
|
|
23
|
+
* taro weapp Text Component (Tailwind 版)
|
|
24
|
+
* - clamp: number|undefined 溢出显示行数
|
|
25
|
+
* - width: px|string|undefined 宽度
|
|
26
|
+
* - height: px|string|undefined 高度
|
|
27
|
+
* - fontSize: px|string|undefined 字体大小
|
|
28
|
+
* - lineHeight: px|string|undefined 行高
|
|
29
|
+
* - bold: boolean|number|string 字体粗细
|
|
30
|
+
* - color: string 字体颜色
|
|
31
|
+
* - bgColor: string 背景颜色
|
|
32
|
+
* - textAlign: 'left' | 'center' | 'right' | 'justify' 文本对齐方式
|
|
33
|
+
* - decoration: 'underline' | 'line-through' | 'none' 文本装饰
|
|
34
|
+
* - selectable: boolean 是否可选择
|
|
35
|
+
* - skeleton: boolean 是否为骨架屏
|
|
36
|
+
* - style: CSSProperties 自定义样式
|
|
37
|
+
* - children: ReactNode 子元素
|
|
38
|
+
* - margin: px|string|undefined 外边距
|
|
39
|
+
* - mTop: px|string|undefined 上外边距
|
|
40
|
+
* - mBottom: px|string|undefined 下外边距
|
|
41
|
+
* - mLeft: px|string|undefined 左外边距
|
|
42
|
+
* - mRight: px|string|undefined 右外边距
|
|
43
|
+
* - mHorizontal: px|string|undefined 水平外边距
|
|
44
|
+
* - mVertical: px|string|undefined 垂直外边距
|
|
45
|
+
* - padding: px|string|undefined 内边距
|
|
46
|
+
* - pTop: px|string|undefined 上内边距
|
|
47
|
+
* - pBottom: px|string|undefined 下内边距
|
|
48
|
+
* - pLeft: px|string|undefined 左内边距
|
|
49
|
+
* - pRight: px|string|undefined 右内边距
|
|
50
|
+
* - pHorizontal: px|string|undefined 水平内边距
|
|
51
|
+
* - pVertical: px|string|undefined 垂直内边距
|
|
52
|
+
* - rest: Text组件的其他属性
|
|
53
|
+
*/
|
|
54
|
+
export declare const Text: React.ForwardRefExoticComponent<Omit<UITextProps, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var a3_0x4bf507=a3_0x46e4;(function(_0x45c2ea,_0x37bf2f){var _0x4d0ee0=a3_0x46e4,_0x3c9716=_0x45c2ea();while(!![]){try{var _0x551136=-parseInt(_0x4d0ee0(0x152))/0x1*(parseInt(_0x4d0ee0(0x19b))/0x2)+parseInt(_0x4d0ee0(0x179))/0x3+-parseInt(_0x4d0ee0(0x14b))/0x4*(-parseInt(_0x4d0ee0(0x18d))/0x5)+parseInt(_0x4d0ee0(0x183))/0x6*(-parseInt(_0x4d0ee0(0x198))/0x7)+-parseInt(_0x4d0ee0(0x190))/0x8*(parseInt(_0x4d0ee0(0x15b))/0x9)+parseInt(_0x4d0ee0(0x192))/0xa*(parseInt(_0x4d0ee0(0x188))/0xb)+parseInt(_0x4d0ee0(0x193))/0xc;if(_0x551136===_0x37bf2f)break;else _0x3c9716['push'](_0x3c9716['shift']());}catch(_0x93a6f5){_0x3c9716['push'](_0x3c9716['shift']());}}}(a3_0x5ef0,0x867b0));var _excluded=[a3_0x4bf507(0x175),a3_0x4bf507(0x1ae),a3_0x4bf507(0x16e),a3_0x4bf507(0x17b),a3_0x4bf507(0x199),a3_0x4bf507(0x176),'fontSize',a3_0x4bf507(0x196),a3_0x4bf507(0x189),'padding',a3_0x4bf507(0x15f),a3_0x4bf507(0x160),a3_0x4bf507(0x13d),a3_0x4bf507(0x177),a3_0x4bf507(0x18a),a3_0x4bf507(0x170),a3_0x4bf507(0x168),a3_0x4bf507(0x186),a3_0x4bf507(0x14e),a3_0x4bf507(0x18c),a3_0x4bf507(0x156),a3_0x4bf507(0x162),a3_0x4bf507(0x1af),a3_0x4bf507(0x19e),a3_0x4bf507(0x142),a3_0x4bf507(0x16d),a3_0x4bf507(0x14c),'selectable',a3_0x4bf507(0x19c)];function _typeof(_0x4af5c7){'@babel/helpers - typeof';var _0xcb7fd9=a3_0x4bf507,_0x4de4d8={'EzAGn':function(_0x30099b,_0x4dd12d){return _0x30099b==_0x4dd12d;},'UFZdJ':_0xcb7fd9(0x163),'QhXMX':function(_0x487dfe,_0x237c0a){return _0x487dfe===_0x237c0a;},'WfYVg':_0xcb7fd9(0x17d),'KXdTH':function(_0x1768d8,_0x27dde6){return _0x1768d8(_0x27dde6);}};return _typeof=_0x4de4d8['UFZdJ']==typeof Symbol&&_0x4de4d8[_0xcb7fd9(0x143)](_0x4de4d8[_0xcb7fd9(0x146)],typeof Symbol[_0xcb7fd9(0x16b)])?function(_0x2be94d){return typeof _0x2be94d;}:function(_0x58e07e){var _0x570816=_0xcb7fd9;return _0x58e07e&&_0x4de4d8[_0x570816(0x143)](_0x4de4d8['UFZdJ'],typeof Symbol)&&_0x4de4d8[_0x570816(0x14d)](_0x58e07e['constructor'],Symbol)&&_0x58e07e!==Symbol[_0x570816(0x147)]?_0x570816(0x17d):typeof _0x58e07e;},_0x4de4d8[_0xcb7fd9(0x197)](_typeof,_0x4af5c7);}function a3_0x5ef0(){var _0x1b3b81=['mxW0Fdj8m3W1Fda','t2TgzLG','C2vSzwn0ywjSzq','y2XHC3noyw1L','rxPbr24','wLffAfC','B2jQzwn0','v2zzvMC','ChjVDg90ExbL','vgv4Da','zgvMyxvSDa','zgLZCgXHEu5HBwu','mti0mejYsLnqCq','zgvJB3jHDgLVBG','uwHytvG','BuXLzNq','y3bjD1i','CfvouKm','wfznrLC','mJu2mNDxEKTRvq','AxbnqKq','Be9iANO','ueT4qxO','CfrVCa','AxrXtxq','sfrPCxy','zgjLA2G','BM9YBwfS','ouXvC1bYDG','vvbbshu','v1bcBfu','EwLmswm','C3r5Bgu','yMDdB2XVCG','zM9UDfnPEMu','CejVDhrVBq','zNvUy3rPB24','EuvMA2y','qvn5CK4','A090swG','BM9rzLC','BvrVCa','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9YCW','AgHrCu4','AxrLCMf0B3i','Aw5KzxHpzG','Dgv4DefSAwDU','D2LKDgG','zMLSDgvY','CfzLCNrPy2fS','zgvMAw5LuhjVCgvYDgLLCW','CKrut1y','veTbzwq','Dg9qCMLTAxrPDMu','y2HPBgrYzw4','yM9Sza','BvzLCNrPy2fS','C0fOv3G','odG4ouzmyxnLDq','CKnVuNm','AgvPz2H0','EgPzEu8','C3LTyM9S','DuDjrgS','yxbWBhK','yM9VBgvHBG','A2v5CW','CNvPrxa','ndjNywDVq3O','CMH1rNu','C3bSAxq','BujVDhrVBq','CLbhzha','ndu4n2z3zez4BG','BwfYz2LU','CeHVCML6B250ywW','zgvMAw5LuhjVCgvYDhK','BvjPz2H0','ndGWnvz2DuHJvW','CMXyyw4','zM9YrwfJAa','mZq4nZu3nMzTyMn4Cq','z2v0t3DUuhjVCgvYDhLtEw1IB2XZ','mtC2mZbLA0vOrNu','mJi5ndi2odb3AKnZA2e','zxzmDxi','ruvKvMG','y29SB3i','s1HKveG','mtaZnJi3m1HfywnutW','BgLUzuHLAwDODa','D3jPDgfIBgu','nZiYwhzQs3D0','C2TLBgv0B24','CMvM','CfjPz2H0','CgfKzgLUzW','y3fctgO','EgHIugC','uwLxr1K','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','y29UzMLNDxjHyMXL','uu9VrgK','vKD3DgK','vgjiDva','ChjVCgvYDhLjC0vUDw1LCMfIBgu','BNvTyMvY','BgvUz3rO','Dhrbufe','y29Uy2f0','yNzQqw0','y2XHBxa','CeXLzNq','zurXseq','s3zmCxa','Cgn0r1u','yMTbEuG','C3rYAw5N','Be9Ltw8','zw51BwvYywjSzq','BuHVCML6B250ywW','tfDntuy'];a3_0x5ef0=function(){return _0x1b3b81;};return a3_0x5ef0();}function ownKeys(_0x2f4835,_0x1c9e1d){var _0x114255=a3_0x4bf507,_0x263d2c=Object[_0x114255(0x181)](_0x2f4835);if(Object[_0x114255(0x191)]){var _0x570b97=Object[_0x114255(0x191)](_0x2f4835);_0x1c9e1d&&(_0x570b97=_0x570b97[_0x114255(0x16f)](function(_0x12e354){var _0x549e86=_0x114255;return Object[_0x549e86(0x1a3)](_0x2f4835,_0x12e354)[_0x549e86(0x13c)];})),_0x263d2c['push'][_0x114255(0x17f)](_0x263d2c,_0x570b97);}return _0x263d2c;}function _objectSpread(_0x321059){var _0x903fdc=a3_0x4bf507,_0x1fbca6={'rDTOV':function(_0x364adc,_0x1fb6a0,_0x46dc9a,_0x300d79){return _0x364adc(_0x1fb6a0,_0x46dc9a,_0x300d79);},'itqMt':function(_0x395464,_0x1494ff){return _0x395464<_0x1494ff;},'xjYyO':function(_0x555d59,_0x3528a9){return _0x555d59!=_0x3528a9;},'kOtIh':function(_0xa94719,_0x3fb521,_0x46a6fa){return _0xa94719(_0x3fb521,_0x46a6fa);},'noQfW':function(_0x2e927a,_0x374056){return _0x2e927a(_0x374056);}};for(var _0x4e359b=0x1;_0x1fbca6[_0x903fdc(0x157)](_0x4e359b,arguments[_0x903fdc(0x1aa)]);_0x4e359b++){var _0xdf38fc=_0x1fbca6[_0x903fdc(0x17c)](null,arguments[_0x4e359b])?arguments[_0x4e359b]:{};_0x4e359b%0x2?_0x1fbca6[_0x903fdc(0x166)](ownKeys,_0x1fbca6['noQfW'](Object,_0xdf38fc),!0x0)['forEach'](function(_0x176f5d){var _0x4ee607=_0x903fdc;_0x1fbca6[_0x4ee607(0x172)](_defineProperty,_0x321059,_0x176f5d,_0xdf38fc[_0x176f5d]);}):Object[_0x903fdc(0x169)]?Object[_0x903fdc(0x171)](_0x321059,Object[_0x903fdc(0x169)](_0xdf38fc)):ownKeys(_0x1fbca6[_0x903fdc(0x167)](Object,_0xdf38fc))[_0x903fdc(0x18f)](function(_0x40acf4){var _0x4725e5=_0x903fdc;Object[_0x4725e5(0x18b)](_0x321059,_0x40acf4,Object[_0x4725e5(0x1a3)](_0xdf38fc,_0x40acf4));});}return _0x321059;}function _defineProperty(_0x490f38,_0x4636d5,_0x36b515){var _0x3816f0=a3_0x4bf507;_0x4636d5=_toPropertyKey(_0x4636d5);if(_0x4636d5 in _0x490f38){var _0x228f4f={};_0x228f4f['value']=_0x36b515,_0x228f4f[_0x3816f0(0x13c)]=!![],_0x228f4f[_0x3816f0(0x1a4)]=!![],_0x228f4f[_0x3816f0(0x19a)]=!![],Object[_0x3816f0(0x18b)](_0x490f38,_0x4636d5,_0x228f4f);}else _0x490f38[_0x4636d5]=_0x36b515;return _0x490f38;}function _toPropertyKey(_0x2f602e){var _0x3e6780=a3_0x4bf507,_0x233154={'HTiqv':function(_0x3fdd12,_0x34c9c1){return _0x3fdd12==_0x34c9c1;},'KvLqp':_0x3e6780(0x17d),'paPif':function(_0x223e4c,_0x2d16f8){return _0x223e4c(_0x2d16f8);}},_0x4ac1c7=_toPrimitive(_0x2f602e,_0x3e6780(0x13a));return _0x233154[_0x3e6780(0x158)](_0x233154[_0x3e6780(0x1b1)],_typeof(_0x4ac1c7))?_0x4ac1c7:_0x233154['paPif'](String,_0x4ac1c7);}function _toPrimitive(_0xceaa99,_0x5b2db1){var _0x5a4bdf=a3_0x4bf507,_0x376ec8={'OkFfX':function(_0x4b98cc,_0x555b7a){return _0x4b98cc!=_0x555b7a;},'TbHuP':_0x5a4bdf(0x145),'EEdVh':function(_0x3013d4,_0x3928c3){return _0x3013d4(_0x3928c3);},'yEfkf':function(_0x13a62d,_0x1e7faa){return _0x13a62d!==_0x1e7faa;},'yvNvM':function(_0x200b7d,_0x426355){return _0x200b7d||_0x426355;},'lOeMo':_0x5a4bdf(0x149),'PKxAz':'@@toPrimitive\x20must\x20return\x20a\x20primitive\x20value.','rjUHk':function(_0x3ecadd,_0x31ec12){return _0x3ecadd===_0x31ec12;},'bvjAm':_0x5a4bdf(0x13a)};if(_0x376ec8[_0x5a4bdf(0x140)](_0x376ec8[_0x5a4bdf(0x1a7)],_0x376ec8[_0x5a4bdf(0x195)](_typeof,_0xceaa99))||!_0xceaa99)return _0xceaa99;var _0x421f3a=_0xceaa99[Symbol[_0x5a4bdf(0x174)]];if(_0x376ec8[_0x5a4bdf(0x164)](void 0x0,_0x421f3a)){var _0x5e07f0=_0x421f3a['call'](_0xceaa99,_0x376ec8['yvNvM'](_0x5b2db1,_0x376ec8[_0x5a4bdf(0x13b)]));if(_0x376ec8[_0x5a4bdf(0x1a7)]!=_0x376ec8[_0x5a4bdf(0x195)](_typeof,_0x5e07f0))return _0x5e07f0;throw new TypeError(_0x376ec8[_0x5a4bdf(0x155)]);}return(_0x376ec8['rjUHk'](_0x376ec8[_0x5a4bdf(0x1ad)],_0x5b2db1)?String:Number)(_0xceaa99);}function _objectWithoutProperties(_0x276d3e,_0x1db9c9){var _0x1d03bb=a3_0x4bf507,_0x28311e={'cpIwR':function(_0x4ec6c7,_0x5ea77f){return _0x4ec6c7==_0x5ea77f;},'ASyrN':function(_0x336c55,_0x1c3f27,_0x3b0208){return _0x336c55(_0x1c3f27,_0x3b0208);},'WPBlU':function(_0x2f87a8,_0x445a73){return _0x2f87a8<_0x445a73;}};if(_0x28311e[_0x1d03bb(0x14f)](_0x276d3e,null))return{};var _0x1a9bba=_0x28311e[_0x1d03bb(0x165)](_objectWithoutPropertiesLoose,_0x276d3e,_0x1db9c9),_0x5ea3f1,_0x25d990;if(Object[_0x1d03bb(0x191)]){var _0xeb67d0=Object['getOwnPropertySymbols'](_0x276d3e);for(_0x25d990=0x0;_0x28311e[_0x1d03bb(0x15d)](_0x25d990,_0xeb67d0['length']);_0x25d990++){_0x5ea3f1=_0xeb67d0[_0x25d990];if(_0x1db9c9['indexOf'](_0x5ea3f1)>=0x0)continue;if(!Object[_0x1d03bb(0x147)][_0x1d03bb(0x1a8)]['call'](_0x276d3e,_0x5ea3f1))continue;_0x1a9bba[_0x5ea3f1]=_0x276d3e[_0x5ea3f1];}}return _0x1a9bba;}function _objectWithoutPropertiesLoose(_0x144f22,_0x3f76c0){var _0x532ebd=a3_0x4bf507,_0x5334dd={};_0x5334dd[_0x532ebd(0x173)]=function(_0x3f763b,_0x5d61ed){return _0x3f763b==_0x5d61ed;},_0x5334dd['cqBLj']=function(_0x438131,_0x3ac27d){return _0x438131>=_0x3ac27d;};var _0x1e8e34=_0x5334dd;if(_0x1e8e34[_0x532ebd(0x173)](_0x144f22,null))return{};var _0x278c41={},_0x27b751=Object[_0x532ebd(0x181)](_0x144f22),_0x35fd2a,_0xb5ca52;for(_0xb5ca52=0x0;_0xb5ca52<_0x27b751['length'];_0xb5ca52++){_0x35fd2a=_0x27b751[_0xb5ca52];if(_0x1e8e34[_0x532ebd(0x1a0)](_0x3f76c0[_0x532ebd(0x16c)](_0x35fd2a),0x0))continue;_0x278c41[_0x35fd2a]=_0x144f22[_0x35fd2a];}return _0x278c41;}import a3_0x1de047,{forwardRef}from'react';import{Text as a3_0x5b6373}from'@tarojs/components';import a3_0x276991 from'classnames';import'../../styles/index.css';import{jsx as a3_0x388eb7}from'react/jsx-runtime';var px=function px(_0x6aea38){var _0x310a66=a3_0x4bf507,_0x5bd83c={'ruiEp':function(_0x53a55c,_0x2f071c){return _0x53a55c===_0x2f071c;},'rlXan':_0x310a66(0x1a9),'xhbPg':function(_0x261840,_0x47a204){return _0x261840(_0x47a204);}};if(_0x5bd83c[_0x310a66(0x182)](_0x6aea38,undefined)||_0x5bd83c['ruiEp'](_0x6aea38,null)||_0x6aea38==='')return undefined;return _0x5bd83c[_0x310a66(0x182)](typeof _0x6aea38,_0x5bd83c[_0x310a66(0x18e)])||!_0x5bd83c[_0x310a66(0x1a1)](isNaN,Number(_0x6aea38))?''[_0x310a66(0x1ac)](_0x6aea38,'px'):_0x5bd83c[_0x310a66(0x1a1)](String,_0x6aea38);};export var Text=forwardRef(function(_0x50217e,_0x2cd7cd){var _0x34c846=a3_0x4bf507,_0x1be5e2={'bkAyH':function(_0x5ea79a,_0x3f5aa5,_0x359ec4){return _0x5ea79a(_0x3f5aa5,_0x359ec4);},'ZQEhW':function(_0xefb131,_0x3273e6,_0x301fb4,_0x152c90){return _0xefb131(_0x3273e6,_0x301fb4,_0x152c90);},'LWMMF':function(_0x14554f,_0x59bf0a,_0x38e8a9){return _0x14554f(_0x59bf0a,_0x38e8a9);},'evLur':function(_0x56b964,_0xe6f2ca){return _0x56b964(_0xe6f2ca);},'QOoDi':function(_0xfab24e,_0x192dc3){return _0xfab24e(_0x192dc3);},'TjrUn':function(_0x1e2e97,_0x228518){return _0x1e2e97(_0x228518);},'lOHjz':function(_0x28fb14,_0x369062){return _0x28fb14!==_0x369062;},'ipMBD':function(_0x4e53f5,_0x620d9){return _0x4e53f5(_0x620d9);},'pctGU':function(_0x19307a,_0x478828){return _0x19307a!==_0x478828;},'vJUST':function(_0x4fe02f,_0x3f4b2d){return _0x4fe02f(_0x3f4b2d);},'aqZRk':function(_0x3f6793,_0x5eb61a){return _0x3f6793!==_0x5eb61a;},'VGwti':function(_0x54ab35,_0x1bb4c4){return _0x54ab35!==_0x1bb4c4;},'UPAHu':function(_0x288c3a,_0x503eb2){return _0x288c3a(_0x503eb2);},'pUNRC':function(_0x191f9b,_0x24d48d){return _0x191f9b(_0x24d48d);},'dbekh':function(_0x52882c,_0x369eeb){return _0x52882c!==_0x369eeb;},'uGIDk':function(_0x306d32,_0x336517){return _0x306d32(_0x336517);},'rhuFu':function(_0x233645,_0x2fb9c1){return _0x233645!==_0x2fb9c1;},'WWSKP':function(_0x55557a,_0x5ba6f4){return _0x55557a(_0x5ba6f4);},'yiLIc':function(_0x4dfeb9,_0x28b848){return _0x4dfeb9!==_0x28b848;},'SICmO':function(_0x4ed2aa,_0x2d154a){return _0x4ed2aa(_0x2d154a);},'QiWGY':'transparent','rPGdp':function(_0x3e2446,_0x1ab6e7){return _0x3e2446===_0x1ab6e7;},'sAhWx':_0x34c846(0x180),'rCoRs':_0x34c846(0x15a),'XVMFW':function(_0x25ddb2,_0x5086b4){return _0x25ddb2(_0x5086b4);},'hhQqN':_0x34c846(0x145),'NfOXP':function(_0x2a9400,_0x400419,_0x2efcbf){return _0x2a9400(_0x400419,_0x2efcbf);},'ttAPQ':function(_0x4942ba,_0x4739ed){return _0x4942ba===_0x4739ed;},'eDqHD':function(_0x3bda34,_0x1c620e){return _0x3bda34===_0x1c620e;}},_0x4712b7=_0x34c846(0x13f)[_0x34c846(0x185)]('|'),_0x3d86fa=0x0;while(!![]){switch(_0x4712b7[_0x3d86fa++]){case'0':var _0x13f93a={};_0x13f93a[_0x34c846(0x19d)]=_0x2cd7cd,_0x13f93a[_0x34c846(0x15f)]=_0x10a956,_0x13f93a[_0x34c846(0x142)]=_0x239d5a,_0x13f93a[_0x34c846(0x141)]=_0x475278;var _0x1dc297={};_0x1dc297[_0x34c846(0x175)]=_0x55dfd8;return _0x1be5e2[_0x34c846(0x1b3)](a3_0x388eb7,a3_0x5b6373,_0x1be5e2[_0x34c846(0x144)](_objectSpread,_0x1be5e2[_0x34c846(0x1b3)](_objectSpread,_0x13f93a,_0x34e087),{},_0x1dc297));case'1':var _0x55dfd8=_0x50217e[_0x34c846(0x175)],_0x16804e=_0x50217e[_0x34c846(0x1ae)],_0x5c6240=_0x50217e[_0x34c846(0x16e)],_0x2cf18e=_0x50217e[_0x34c846(0x17b)],_0x4d201d=_0x50217e[_0x34c846(0x199)],_0x5895a7=_0x50217e['bold'],_0x29a570=_0x50217e[_0x34c846(0x161)],_0x326e61=_0x50217e[_0x34c846(0x196)],_0x2f0307=_0x50217e[_0x34c846(0x189)],_0xb81a00=_0x50217e[_0x34c846(0x19f)],_0xcc286c=_0x50217e[_0x34c846(0x15f)],_0x9a3134=_0xcc286c===void 0x0?{}:_0xcc286c,_0x1da9e2=_0x50217e['bgColor'],_0x3154f1=_0x50217e[_0x34c846(0x13d)],_0x302a7b=_0x50217e['mVertical'],_0x4b55c7=_0x50217e[_0x34c846(0x18a)],_0xbf768f=_0x50217e[_0x34c846(0x170)],_0x33455a=_0x50217e['mTop'],_0x3e9bce=_0x50217e[_0x34c846(0x186)],_0x480aad=_0x50217e[_0x34c846(0x14e)],_0x5466b9=_0x50217e[_0x34c846(0x18c)],_0x41b1d5=_0x50217e[_0x34c846(0x156)],_0x1b57c6=_0x50217e['pBottom'],_0x753ab7=_0x50217e['pLeft'],_0x5e5731=_0x50217e[_0x34c846(0x19e)],_0x4f48db=_0x50217e['className'],_0x3cab7f=_0x50217e[_0x34c846(0x16d)],_0x1258ab=_0x50217e[_0x34c846(0x14c)],_0x475278=_0x50217e[_0x34c846(0x141)],_0x30b2c3=_0x50217e[_0x34c846(0x19c)],_0x34e087=_0x1be5e2[_0x34c846(0x13e)](_objectWithoutProperties,_0x50217e,_excluded);continue;case'2':var _0x531607=_0x1be5e2['bkAyH'](_objectSpread,{'width':_0x1be5e2[_0x34c846(0x194)](px,_0x5c6240),'height':_0x1be5e2[_0x34c846(0x1a5)](px,_0x2cf18e),'margin':_0x1be5e2['TjrUn'](px,_0x2f0307),'marginTop':_0x1be5e2[_0x34c846(0x194)](px,_0x1be5e2[_0x34c846(0x154)](_0x33455a,null)&&_0x1be5e2[_0x34c846(0x154)](_0x33455a,void 0x0)?_0x33455a:_0x302a7b),'marginBottom':_0x1be5e2[_0x34c846(0x153)](px,_0x1be5e2[_0x34c846(0x154)](_0x3e9bce,null)&&_0x1be5e2[_0x34c846(0x1b2)](_0x3e9bce,void 0x0)?_0x3e9bce:_0x302a7b),'marginLeft':_0x1be5e2['vJUST'](px,_0x1be5e2['aqZRk'](_0x480aad,null)&&_0x1be5e2[_0x34c846(0x1a6)](_0x480aad,void 0x0)?_0x480aad:_0x3154f1),'marginRight':_0x1be5e2['evLur'](px,_0x1be5e2[_0x34c846(0x154)](_0x5466b9,null)&&_0x5466b9!==void 0x0?_0x5466b9:_0x3154f1),'padding':_0x1be5e2[_0x34c846(0x15c)](px,_0xb81a00),'paddingTop':_0x1be5e2[_0x34c846(0x150)](px,_0x1be5e2[_0x34c846(0x159)](_0x41b1d5,null)&&_0x1be5e2['VGwti'](_0x41b1d5,void 0x0)?_0x41b1d5:_0xbf768f),'paddingBottom':_0x1be5e2[_0x34c846(0x17e)](px,_0x1be5e2[_0x34c846(0x184)](_0x1b57c6,null)&&_0x1be5e2[_0x34c846(0x1a6)](_0x1b57c6,void 0x0)?_0x1b57c6:_0xbf768f),'paddingLeft':_0x1be5e2['WWSKP'](px,_0x753ab7!==null&&_0x1be5e2[_0x34c846(0x1b2)](_0x753ab7,void 0x0)?_0x753ab7:_0x4b55c7),'paddingRight':px(_0x1be5e2[_0x34c846(0x15e)](_0x5e5731,null)&&_0x1be5e2[_0x34c846(0x154)](_0x5e5731,void 0x0)?_0x5e5731:_0x4b55c7),'fontSize':_0x1be5e2['SICmO'](px,_0x29a570),'color':_0x30b2c3?_0x1be5e2[_0x34c846(0x1a2)]:_0x326e61,'backgroundColor':_0x1da9e2,'lineHeight':_0x1be5e2['pUNRC'](px,_0x4d201d),'fontWeight':_0x1be5e2[_0x34c846(0x187)](typeof _0x5895a7,_0x1be5e2[_0x34c846(0x178)])?_0x5895a7?_0x34c846(0x176):_0x1be5e2[_0x34c846(0x17a)]:_0x5895a7,'textAlign':_0x3cab7f,'textDecoration':_0x1258ab},_0x1be5e2[_0x34c846(0x187)](_0x1be5e2[_0x34c846(0x151)](_typeof,_0x9a3134),_0x1be5e2[_0x34c846(0x16a)])?_0x9a3134:{});continue;case'3':var _0x10a956={};continue;case'4':var _0x239d5a=_0x1be5e2['NfOXP'](a3_0x276991,_0x4f48db,{'zero-line-clamp-1':_0x16804e===0x1,'zero-line-clamp-2':_0x1be5e2['ttAPQ'](_0x16804e,0x2),'zero-line-clamp-3':_0x1be5e2[_0x34c846(0x187)](_0x16804e,0x3),'zero-line-clamp-4':_0x1be5e2[_0x34c846(0x1b0)](_0x16804e,0x4),'zero-line-clamp-5':_0x16804e===0x5,'zero-line-clamp-6':_0x1be5e2[_0x34c846(0x1ab)](_0x16804e,0x6),'zero-animate-pulse\x20zero-bg-gray-200\x20zero-text-transparent':_0x30b2c3});continue;case'5':for(var _0x3b5dda in _0x531607){_0x531607[_0x3b5dda]!==undefined&&_0x531607[_0x3b5dda]!==null&&(_0x10a956[_0x3b5dda]=_0x531607[_0x3b5dda]);}continue;}break;}});function a3_0x46e4(_0x55d268,_0x263a3f){_0x55d268=_0x55d268-0x13a;var _0x5ef06b=a3_0x5ef0();var _0x46e4f3=_0x5ef06b[_0x55d268];if(a3_0x46e4['FpAOGz']===undefined){var _0x3d0871=function(_0x30264a){var _0x595caf='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x33bc80='',_0x129671='';for(var _0x2964d8=0x0,_0x518d1e,_0x12247b,_0x1d7cb9=0x0;_0x12247b=_0x30264a['charAt'](_0x1d7cb9++);~_0x12247b&&(_0x518d1e=_0x2964d8%0x4?_0x518d1e*0x40+_0x12247b:_0x12247b,_0x2964d8++%0x4)?_0x33bc80+=String['fromCharCode'](0xff&_0x518d1e>>(-0x2*_0x2964d8&0x6)):0x0){_0x12247b=_0x595caf['indexOf'](_0x12247b);}for(var _0xd7cda0=0x0,_0x160c18=_0x33bc80['length'];_0xd7cda0<_0x160c18;_0xd7cda0++){_0x129671+='%'+('00'+_0x33bc80['charCodeAt'](_0xd7cda0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x129671);};a3_0x46e4['hIYJVz']=_0x3d0871,a3_0x46e4['sBnprg']={},a3_0x46e4['FpAOGz']=!![];}var _0x592ac0=_0x5ef06b[0x0],_0x1b49a1=_0x55d268+_0x592ac0,_0x2f5386=a3_0x46e4['sBnprg'][_0x1b49a1];return!_0x2f5386?(_0x46e4f3=a3_0x46e4['hIYJVz'](_0x46e4f3),a3_0x46e4['sBnprg'][_0x1b49a1]=_0x46e4f3):_0x46e4f3=_0x2f5386,_0x46e4f3;}a3_0x5b6373[a3_0x4bf507(0x14a)]=a3_0x4bf507(0x148);
|