@zhin.js/console 1.0.8 → 1.0.10
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/CHANGELOG.md +95 -0
- package/client/index.html +16 -0
- package/client/src/components/PluginConfigForm/BasicFieldRenderers.tsx +6 -7
- package/client/src/components/PluginConfigForm/CollectionFieldRenderers.tsx +8 -8
- package/client/src/components/PluginConfigForm/CompositeFieldRenderers.tsx +3 -3
- package/client/src/components/PluginConfigForm/index.tsx +8 -7
- package/client/src/components/ThemeToggle.tsx +3 -3
- package/client/src/layouts/dashboard.tsx +14 -15
- package/client/src/main.tsx +60 -59
- package/client/src/pages/dashboard-plugin-detail.tsx +17 -17
- package/client/src/pages/dashboard-plugins.tsx +8 -8
- package/client/tsconfig.json +5 -6
- package/dist/_commonjsHelpers-C6fGbg64.js +6 -0
- package/dist/client.js +9 -0
- package/dist/index.html +31 -0
- package/dist/index.js +15 -0
- package/dist/lucide-react.js +28876 -0
- package/dist/radix-ui-themes.js +9321 -0
- package/dist/radix-ui.js +11213 -0
- package/dist/react-dom-client.js +10042 -0
- package/dist/react-dom.js +180 -0
- package/dist/react-jsx-dev-runtime.js +51 -0
- package/dist/react-jsx-runtime.js +68 -0
- package/dist/react-router.js +8141 -0
- package/dist/react.js +421 -0
- package/dist/style.css +2 -0
- package/lib/bin.d.ts.map +1 -1
- package/lib/bin.js +2 -26
- package/lib/bin.js.map +1 -1
- package/lib/build.d.ts +2 -32
- package/lib/build.d.ts.map +1 -1
- package/lib/build.js +67 -144
- package/lib/build.js.map +1 -1
- package/lib/dev.d.ts.map +1 -1
- package/lib/dev.js +2 -1
- package/lib/dev.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +0 -1
- package/lib/index.js.map +1 -1
- package/lib/websocket.d.ts.map +1 -1
- package/lib/websocket.js.map +1 -1
- package/package.json +29 -13
- package/app/bin.ts +0 -52
- package/app/build.ts +0 -211
- package/app/dev.ts +0 -83
- package/app/index.ts +0 -193
- package/app/websocket.ts +0 -109
- package/client/public/vendor/react-dom.production.min.js +0 -1
- package/client/public/vendor/react.production.min.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react'
|
|
2
2
|
import { useParams, useNavigate } from 'react-router'
|
|
3
3
|
import * as Themes from '@radix-ui/themes'
|
|
4
|
-
import {
|
|
4
|
+
import { ArrowLeft, AlertCircle, Package, Terminal, Box as IconBox, Layers, Database, Clock, FileText } from 'lucide-react'
|
|
5
5
|
import {PluginConfigForm} from '../components/PluginConfigForm'
|
|
6
6
|
|
|
7
7
|
const { Flex, Box, Spinner, Text, Callout, Heading, Badge, Grid, Card, Button, Code, Separator, ScrollArea, Dialog } = Themes
|
|
@@ -95,12 +95,12 @@ export default function DashboardPluginDetail() {
|
|
|
95
95
|
return (
|
|
96
96
|
<Box>
|
|
97
97
|
<Button variant="ghost" onClick={() => navigate('/plugins')} mb="4" size="2">
|
|
98
|
-
<
|
|
98
|
+
<ArrowLeft className="w-4 h-4" />
|
|
99
99
|
返回
|
|
100
100
|
</Button>
|
|
101
101
|
<Callout.Root color="red">
|
|
102
102
|
<Callout.Icon>
|
|
103
|
-
<
|
|
103
|
+
<AlertCircle />
|
|
104
104
|
</Callout.Icon>
|
|
105
105
|
<Callout.Text>
|
|
106
106
|
加载失败: {error || '插件不存在'}
|
|
@@ -115,13 +115,13 @@ export default function DashboardPluginDetail() {
|
|
|
115
115
|
{/* 头部 */}
|
|
116
116
|
<Flex direction="column" gap="3" mb="4">
|
|
117
117
|
<Button variant="ghost" onClick={() => navigate('/plugins')} size="2">
|
|
118
|
-
<
|
|
118
|
+
<ArrowLeft className="w-4 h-4" />
|
|
119
119
|
返回
|
|
120
120
|
</Button>
|
|
121
121
|
|
|
122
122
|
<Flex align="center" gap="3">
|
|
123
123
|
<Flex align="center" justify="center" className="w-12 h-12 rounded-xl bg-blue-500/10 dark:bg-blue-400/10">
|
|
124
|
-
<
|
|
124
|
+
<Package className="w-6 h-6 text-blue-600 dark:text-blue-400" />
|
|
125
125
|
</Flex>
|
|
126
126
|
<Flex direction="column" gap="1">
|
|
127
127
|
<Flex align="center" gap="2">
|
|
@@ -149,7 +149,7 @@ export default function DashboardPluginDetail() {
|
|
|
149
149
|
<Grid columns={{ initial: '2', sm: '3', md: '6' }} gap="2" mb="4">
|
|
150
150
|
<Card size="1">
|
|
151
151
|
<Flex direction="column" align="center" gap="1" p="2">
|
|
152
|
-
<
|
|
152
|
+
<Terminal className="w-4 h-4 text-blue-600 dark:text-blue-400" />
|
|
153
153
|
<Text size="4" weight="bold">{plugin.statistics.commandCount}</Text>
|
|
154
154
|
<Text size="1" color="gray">命令</Text>
|
|
155
155
|
</Flex>
|
|
@@ -157,7 +157,7 @@ export default function DashboardPluginDetail() {
|
|
|
157
157
|
|
|
158
158
|
<Card size="1">
|
|
159
159
|
<Flex direction="column" align="center" gap="1" p="2">
|
|
160
|
-
<
|
|
160
|
+
<IconBox className="w-4 h-4 text-green-600 dark:text-green-400" />
|
|
161
161
|
<Text size="4" weight="bold">{plugin.statistics.componentCount}</Text>
|
|
162
162
|
<Text size="1" color="gray">组件</Text>
|
|
163
163
|
</Flex>
|
|
@@ -165,7 +165,7 @@ export default function DashboardPluginDetail() {
|
|
|
165
165
|
|
|
166
166
|
<Card size="1">
|
|
167
167
|
<Flex direction="column" align="center" gap="1" p="2">
|
|
168
|
-
<
|
|
168
|
+
<Layers className="w-4 h-4 text-purple-600 dark:text-purple-400" />
|
|
169
169
|
<Text size="4" weight="bold">{plugin.statistics.middlewareCount}</Text>
|
|
170
170
|
<Text size="1" color="gray">中间件</Text>
|
|
171
171
|
</Flex>
|
|
@@ -173,7 +173,7 @@ export default function DashboardPluginDetail() {
|
|
|
173
173
|
|
|
174
174
|
<Card size="1">
|
|
175
175
|
<Flex direction="column" align="center" gap="1" p="2">
|
|
176
|
-
<
|
|
176
|
+
<Database className="w-4 h-4 text-orange-600 dark:text-orange-400" />
|
|
177
177
|
<Text size="4" weight="bold">{plugin.statistics.contextCount}</Text>
|
|
178
178
|
<Text size="1" color="gray">上下文</Text>
|
|
179
179
|
</Flex>
|
|
@@ -181,7 +181,7 @@ export default function DashboardPluginDetail() {
|
|
|
181
181
|
|
|
182
182
|
<Card size="1">
|
|
183
183
|
<Flex direction="column" align="center" gap="1" p="2">
|
|
184
|
-
<
|
|
184
|
+
<Clock className="w-4 h-4 text-amber-600 dark:text-amber-400" />
|
|
185
185
|
<Text size="4" weight="bold">{plugin.statistics.cronCount}</Text>
|
|
186
186
|
<Text size="1" color="gray">定时任务</Text>
|
|
187
187
|
</Flex>
|
|
@@ -189,7 +189,7 @@ export default function DashboardPluginDetail() {
|
|
|
189
189
|
|
|
190
190
|
<Card size="1">
|
|
191
191
|
<Flex direction="column" align="center" gap="1" p="2">
|
|
192
|
-
<
|
|
192
|
+
<FileText className="w-4 h-4 text-cyan-600 dark:text-cyan-400" />
|
|
193
193
|
<Text size="4" weight="bold">{plugin.statistics.definitionCount}</Text>
|
|
194
194
|
<Text size="1" color="gray">数据模型</Text>
|
|
195
195
|
</Flex>
|
|
@@ -203,7 +203,7 @@ export default function DashboardPluginDetail() {
|
|
|
203
203
|
<Card size="2">
|
|
204
204
|
<Flex direction="column" gap="2" p="3">
|
|
205
205
|
<Flex align="center" gap="2">
|
|
206
|
-
<
|
|
206
|
+
<Terminal className="w-4 h-4 text-blue-600 dark:text-blue-400" />
|
|
207
207
|
<Heading size="3">命令</Heading>
|
|
208
208
|
<Badge size="1">{plugin.commands.length}</Badge>
|
|
209
209
|
</Flex>
|
|
@@ -228,7 +228,7 @@ export default function DashboardPluginDetail() {
|
|
|
228
228
|
<Card size="2">
|
|
229
229
|
<Flex direction="column" gap="2" p="3">
|
|
230
230
|
<Flex align="center" gap="2">
|
|
231
|
-
<
|
|
231
|
+
<Box className="w-4 h-4 text-green-600 dark:text-green-400" />
|
|
232
232
|
<Heading size="3">组件</Heading>
|
|
233
233
|
<Badge size="1">{plugin.components.length}</Badge>
|
|
234
234
|
</Flex>
|
|
@@ -257,7 +257,7 @@ export default function DashboardPluginDetail() {
|
|
|
257
257
|
<Card size="2">
|
|
258
258
|
<Flex direction="column" gap="2" p="3">
|
|
259
259
|
<Flex align="center" gap="2">
|
|
260
|
-
<
|
|
260
|
+
<Layers className="w-4 h-4 text-purple-600 dark:text-purple-400" />
|
|
261
261
|
<Heading size="3">中间件</Heading>
|
|
262
262
|
<Badge size="1">{plugin.middlewares.length}</Badge>
|
|
263
263
|
</Flex>
|
|
@@ -281,7 +281,7 @@ export default function DashboardPluginDetail() {
|
|
|
281
281
|
<Card size="2">
|
|
282
282
|
<Flex direction="column" gap="2" p="3">
|
|
283
283
|
<Flex align="center" gap="2">
|
|
284
|
-
<
|
|
284
|
+
<Database className="w-4 h-4 text-orange-600 dark:text-orange-400" />
|
|
285
285
|
<Heading size="3">上下文</Heading>
|
|
286
286
|
<Badge size="1">{plugin.contexts.length}</Badge>
|
|
287
287
|
</Flex>
|
|
@@ -305,7 +305,7 @@ export default function DashboardPluginDetail() {
|
|
|
305
305
|
<Card size="2">
|
|
306
306
|
<Flex direction="column" gap="2" p="3">
|
|
307
307
|
<Flex align="center" gap="2">
|
|
308
|
-
<
|
|
308
|
+
<Clock className="w-4 h-4 text-amber-600 dark:text-amber-400" />
|
|
309
309
|
<Heading size="3">定时任务</Heading>
|
|
310
310
|
<Badge size="1">{plugin.crons.length}</Badge>
|
|
311
311
|
</Flex>
|
|
@@ -334,7 +334,7 @@ export default function DashboardPluginDetail() {
|
|
|
334
334
|
<Card size="2">
|
|
335
335
|
<Flex direction="column" gap="2" p="3">
|
|
336
336
|
<Flex align="center" gap="2">
|
|
337
|
-
<
|
|
337
|
+
<FileText className="w-4 h-4 text-cyan-600 dark:text-cyan-400" />
|
|
338
338
|
<Heading size="3">数据模型</Heading>
|
|
339
339
|
<Badge size="1">{plugin.definitions.length}</Badge>
|
|
340
340
|
</Flex>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react'
|
|
2
2
|
import { useNavigate } from 'react-router'
|
|
3
3
|
import * as Themes from '@radix-ui/themes'
|
|
4
|
-
import {
|
|
4
|
+
import { AlertCircle, Package, Terminal, Box as IconBox, Layers, Database, Clock, FileText } from 'lucide-react'
|
|
5
5
|
|
|
6
6
|
const { Flex, Box, Spinner, Text, Callout, Heading, Badge, Grid, Card, Separator } = Themes
|
|
7
7
|
|
|
@@ -62,7 +62,7 @@ export default function DashboardPlugins() {
|
|
|
62
62
|
<Flex align="center" justify="center" className="h-full">
|
|
63
63
|
<Callout.Root color="red">
|
|
64
64
|
<Callout.Icon>
|
|
65
|
-
<
|
|
65
|
+
<AlertCircle />
|
|
66
66
|
</Callout.Icon>
|
|
67
67
|
<Callout.Text>
|
|
68
68
|
加载失败: {error}
|
|
@@ -97,7 +97,7 @@ export default function DashboardPlugins() {
|
|
|
97
97
|
<Flex justify="between" align="center">
|
|
98
98
|
<Flex align="center" gap="2">
|
|
99
99
|
<Flex align="center" justify="center" className="w-8 h-8 rounded-lg bg-blue-500/10 dark:bg-blue-400/10">
|
|
100
|
-
<
|
|
100
|
+
<Package className="w-4 h-4 text-blue-600 dark:text-blue-400" />
|
|
101
101
|
</Flex>
|
|
102
102
|
<Heading size="3">{plugin.name}</Heading>
|
|
103
103
|
</Flex>
|
|
@@ -119,25 +119,25 @@ export default function DashboardPlugins() {
|
|
|
119
119
|
{/* 统计信息 - 紧凑网格 */}
|
|
120
120
|
<Grid columns={{ initial: '1', sm: '2', lg: '4' }} gap="1">
|
|
121
121
|
<Flex gap="2" justify="center" align="center" className="rounded-md bg-blue-500/5 dark:bg-blue-400/5 p-1.5">
|
|
122
|
-
<
|
|
122
|
+
<Terminal className="w-3 h-3 text-blue-600 dark:text-blue-400" />
|
|
123
123
|
<Text size="2" weight="bold" className="mt-0.5">{plugin.commandCount}</Text>
|
|
124
124
|
<Text size="1" color="gray">命令</Text>
|
|
125
125
|
</Flex>
|
|
126
126
|
|
|
127
127
|
<Flex gap="2" justify="center" align="center" className="rounded-md bg-green-500/5 dark:bg-green-400/5 p-1.5">
|
|
128
|
-
<
|
|
128
|
+
<IconBox className="w-3 h-3 text-green-600 dark:text-green-400" />
|
|
129
129
|
<Text size="2" weight="bold" className="mt-0.5">{plugin.componentCount}</Text>
|
|
130
130
|
<Text size="1" color="gray">组件</Text>
|
|
131
131
|
</Flex>
|
|
132
132
|
|
|
133
133
|
<Flex gap="2" justify="center" align="center" className="rounded-md bg-purple-500/5 dark:bg-purple-400/5 p-1.5">
|
|
134
|
-
<
|
|
134
|
+
<Layers className="w-3 h-3 text-purple-600 dark:text-purple-400" />
|
|
135
135
|
<Text size="2" weight="bold" className="mt-0.5">{plugin.middlewareCount}</Text>
|
|
136
136
|
<Text size="1" color="gray">中间件</Text>
|
|
137
137
|
</Flex>
|
|
138
138
|
|
|
139
139
|
<Flex gap="2" justify="center" align="center" className="rounded-md bg-orange-500/5 dark:bg-orange-400/5 p-1.5">
|
|
140
|
-
<
|
|
140
|
+
<Database className="w-3 h-3 text-orange-600 dark:text-orange-400" />
|
|
141
141
|
<Text size="2" weight="bold" className="mt-0.5">{plugin.contextCount}</Text>
|
|
142
142
|
<Text size="1" color="gray">上下文</Text>
|
|
143
143
|
</Flex>
|
|
@@ -152,7 +152,7 @@ export default function DashboardPlugins() {
|
|
|
152
152
|
<Card className="mt-6">
|
|
153
153
|
<Flex direction="column" align="center" gap="3" py="8">
|
|
154
154
|
<Flex align="center" justify="center" className="w-16 h-16 rounded-full bg-gray-100 dark:bg-gray-800">
|
|
155
|
-
<
|
|
155
|
+
<Package className="w-8 h-8 text-gray-400" />
|
|
156
156
|
</Flex>
|
|
157
157
|
<Flex direction="column" align="center" gap="1">
|
|
158
158
|
<Heading size="4">暂无插件</Heading>
|
package/client/tsconfig.json
CHANGED
|
@@ -6,12 +6,11 @@
|
|
|
6
6
|
"moduleResolution": "bundler",
|
|
7
7
|
"module": "ESNext",
|
|
8
8
|
"jsx": "react-jsx",
|
|
9
|
+
"jsxImportSource": "react",
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
"skipLibCheck": true,
|
|
9
12
|
"paths": {
|
|
10
|
-
"@/*": ["src/*"]
|
|
11
|
-
"lucide-react": ["../node_modules/lucide-react"],
|
|
12
|
-
"react": ["../node_modules/@types/react"],
|
|
13
|
-
"react-dom": ["../node_modules/@types/react-dom"]
|
|
13
|
+
"@/*": ["src/*"]
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
}
|
|
17
|
-
|
|
16
|
+
}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import*as H from"./react.js";import Fr,{useMemo as ft,useCallback as F,useEffect as fe,useState as nr}from"./react.js";import{jsx as Ue}from"./react-jsx-runtime.js";import{createBrowserRouter as qr,RouterProvider as $r,Outlet as Gr}from"./react-router.js";import{Link as si,Outlet as ii,useNavigate as ai,useOutlet as ci,useParams as li}from"./react-router.js";function or(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(r=or(e[t]))&&(n&&(n+=" "),n+=r)}else for(r in e)e[r]&&(n&&(n+=" "),n+=r);return n}function Lr(){for(var e,t,r=0,n="",o=arguments.length;r<o;r++)(e=arguments[r])&&(t=or(e))&&(n&&(n+=" "),n+=t);return n}const pt="-",Ur=e=>{const t=Vr(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:n}=e;return{getClassGroupId:i=>{const c=i.split(pt);return c[0]===""&&c.length!==1&&c.shift(),sr(c,t)||Br(i)},getConflictingClassGroupIds:(i,c)=>{const a=r[i]||[];return c&&n[i]?[...a,...n[i]]:a}}},sr=(e,t)=>{if(e.length===0)return t.classGroupId;const r=e[0],n=t.nextPart.get(r),o=n?sr(e.slice(1),n):void 0;if(o)return o;if(t.validators.length===0)return;const s=e.join(pt);return t.validators.find(({validator:i})=>i(s))?.classGroupId},Nt=/^\[(.+)\]$/,Br=e=>{if(Nt.test(e)){const t=Nt.exec(e)[1],r=t?.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}},Vr=e=>{const{theme:t,classGroups:r}=e,n={nextPart:new Map,validators:[]};for(const o in r)tt(r[o],n,o,t);return n},tt=(e,t,r,n)=>{e.forEach(o=>{if(typeof o=="string"){const s=o===""?t:jt(t,o);s.classGroupId=r;return}if(typeof o=="function"){if(Hr(o)){tt(o(n),t,r,n);return}t.validators.push({validator:o,classGroupId:r});return}Object.entries(o).forEach(([s,i])=>{tt(i,jt(t,s),r,n)})})},jt=(e,t)=>{let r=e;return t.split(pt).forEach(n=>{r.nextPart.has(n)||r.nextPart.set(n,{nextPart:new Map,validators:[]}),r=r.nextPart.get(n)}),r},Hr=e=>e.isThemeGetter,Kr=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=new Map,n=new Map;const o=(s,i)=>{r.set(s,i),t++,t>e&&(t=0,n=r,r=new Map)};return{get(s){let i=r.get(s);if(i!==void 0)return i;if((i=n.get(s))!==void 0)return o(s,i),i},set(s,i){r.has(s)?r.set(s,i):o(s,i)}}},rt="!",nt=":",Xr=nt.length,Jr=e=>{const{prefix:t,experimentalParseClassName:r}=e;let n=o=>{const s=[];let i=0,c=0,a=0,d;for(let k=0;k<o.length;k++){let m=o[k];if(i===0&&c===0){if(m===nt){s.push(o.slice(a,k)),a=k+Xr;continue}if(m==="/"){d=k;continue}}m==="["?i++:m==="]"?i--:m==="("?c++:m===")"&&c--}const l=s.length===0?o:o.substring(a),u=Qr(l),g=u!==l,y=d&&d>a?d-a:void 0;return{modifiers:s,hasImportantModifier:g,baseClassName:u,maybePostfixModifierPosition:y}};if(t){const o=t+nt,s=n;n=i=>i.startsWith(o)?s(i.substring(o.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:i,maybePostfixModifierPosition:void 0}}if(r){const o=n;n=s=>r({className:s,parseClassName:o})}return n},Qr=e=>e.endsWith(rt)?e.substring(0,e.length-1):e.startsWith(rt)?e.substring(1):e,Yr=e=>{const t=Object.fromEntries(e.orderSensitiveModifiers.map(n=>[n,!0]));return n=>{if(n.length<=1)return n;const o=[];let s=[];return n.forEach(i=>{i[0]==="["||t[i]?(o.push(...s.sort(),i),s=[]):s.push(i)}),o.push(...s.sort()),o}},Zr=e=>({cache:Kr(e.cacheSize),parseClassName:Jr(e),sortModifiers:Yr(e),...Ur(e)}),en=/\s+/,tn=(e,t)=>{const{parseClassName:r,getClassGroupId:n,getConflictingClassGroupIds:o,sortModifiers:s}=t,i=[],c=e.trim().split(en);let a="";for(let d=c.length-1;d>=0;d-=1){const l=c[d],{isExternal:u,modifiers:g,hasImportantModifier:y,baseClassName:k,maybePostfixModifierPosition:m}=r(l);if(u){a=l+(a.length>0?" "+a:a);continue}let x=!!m,_=n(x?k.substring(0,m):k);if(!_){if(!x){a=l+(a.length>0?" "+a:a);continue}if(_=n(k),!_){a=l+(a.length>0?" "+a:a);continue}x=!1}const O=s(g).join(":"),v=y?O+rt:O,b=v+_;if(i.includes(b))continue;i.push(b);const w=o(_,x);for(let C=0;C<w.length;++C){const R=w[C];i.push(v+R)}a=l+(a.length>0?" "+a:a)}return a};function rn(){let e=0,t,r,n="";for(;e<arguments.length;)(t=arguments[e++])&&(r=ir(t))&&(n&&(n+=" "),n+=r);return n}const ir=e=>{if(typeof e=="string")return e;let t,r="";for(let n=0;n<e.length;n++)e[n]&&(t=ir(e[n]))&&(r&&(r+=" "),r+=t);return r};function nn(e,...t){let r,n,o,s=i;function i(a){const d=t.reduce((l,u)=>u(l),e());return r=Zr(d),n=r.cache.get,o=r.cache.set,s=c,c(a)}function c(a){const d=n(a);if(d)return d;const l=tn(a,r);return o(a,l),l}return function(){return s(rn.apply(null,arguments))}}const T=e=>{const t=r=>r[e]||[];return t.isThemeGetter=!0,t},ar=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,cr=/^\((?:(\w[\w-]*):)?(.+)\)$/i,on=/^\d+\/\d+$/,sn=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,an=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,cn=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,ln=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,un=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ne=e=>on.test(e),E=e=>!!e&&!Number.isNaN(Number(e)),V=e=>!!e&&Number.isInteger(Number(e)),Be=e=>e.endsWith("%")&&E(e.slice(0,-1)),G=e=>sn.test(e),dn=()=>!0,fn=e=>an.test(e)&&!cn.test(e),lr=()=>!1,pn=e=>ln.test(e),hn=e=>un.test(e),mn=e=>!p(e)&&!h(e),gn=e=>se(e,fr,lr),p=e=>ar.test(e),X=e=>se(e,pr,fn),Ve=e=>se(e,Sn,E),Dt=e=>se(e,ur,lr),yn=e=>se(e,dr,hn),xe=e=>se(e,hr,pn),h=e=>cr.test(e),ce=e=>ie(e,pr),bn=e=>ie(e,kn),Wt=e=>ie(e,ur),wn=e=>ie(e,fr),vn=e=>ie(e,dr),Ce=e=>ie(e,hr,!0),se=(e,t,r)=>{const n=ar.exec(e);return n?n[1]?t(n[1]):r(n[2]):!1},ie=(e,t,r=!1)=>{const n=cr.exec(e);return n?n[1]?t(n[1]):r:!1},ur=e=>e==="position"||e==="percentage",dr=e=>e==="image"||e==="url",fr=e=>e==="length"||e==="size"||e==="bg-size",pr=e=>e==="length",Sn=e=>e==="number",kn=e=>e==="family-name",hr=e=>e==="shadow",xn=()=>{const e=T("color"),t=T("font"),r=T("text"),n=T("font-weight"),o=T("tracking"),s=T("leading"),i=T("breakpoint"),c=T("container"),a=T("spacing"),d=T("radius"),l=T("shadow"),u=T("inset-shadow"),g=T("text-shadow"),y=T("drop-shadow"),k=T("blur"),m=T("perspective"),x=T("aspect"),_=T("ease"),O=T("animate"),v=()=>["auto","avoid","all","avoid-page","page","left","right","column"],b=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],w=()=>[...b(),h,p],C=()=>["auto","hidden","clip","visible","scroll"],R=()=>["auto","contain","none"],f=()=>[h,p,a],A=()=>[ne,"full","auto",...f()],ae=()=>[V,"none","subgrid",h,p],ye=()=>["auto",{span:["full",V,h,p]},V,h,p],be=()=>[V,"auto",h,p],Pt=()=>["auto","min","max","fr",h,p],$e=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],re=()=>["start","end","center","stretch","center-safe","end-safe"],$=()=>["auto",...f()],K=()=>[ne,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...f()],S=()=>[e,h,p],At=()=>[...b(),Wt,Dt,{position:[h,p]}],Tt=()=>["no-repeat",{repeat:["","x","y","space","round"]}],Mt=()=>["auto","cover","contain",wn,gn,{size:[h,p]}],Ge=()=>[Be,ce,X],z=()=>["","none","full",d,h,p],N=()=>["",E,ce,X],we=()=>["solid","dashed","dotted","double"],It=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],M=()=>[E,Be,Wt,Dt],zt=()=>["","none",k,h,p],ve=()=>["none",E,h,p],Se=()=>["none",E,h,p],Le=()=>[E,h,p],ke=()=>[ne,"full",...f()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[G],breakpoint:[G],color:[dn],container:[G],"drop-shadow":[G],ease:["in","out","in-out"],font:[mn],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[G],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[G],shadow:[G],spacing:["px",E],text:[G],"text-shadow":[G],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ne,p,h,x]}],container:["container"],columns:[{columns:[E,p,h,c]}],"break-after":[{"break-after":v()}],"break-before":[{"break-before":v()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:w()}],overflow:[{overflow:C()}],"overflow-x":[{"overflow-x":C()}],"overflow-y":[{"overflow-y":C()}],overscroll:[{overscroll:R()}],"overscroll-x":[{"overscroll-x":R()}],"overscroll-y":[{"overscroll-y":R()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:A()}],"inset-x":[{"inset-x":A()}],"inset-y":[{"inset-y":A()}],start:[{start:A()}],end:[{end:A()}],top:[{top:A()}],right:[{right:A()}],bottom:[{bottom:A()}],left:[{left:A()}],visibility:["visible","invisible","collapse"],z:[{z:[V,"auto",h,p]}],basis:[{basis:[ne,"full","auto",c,...f()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[E,ne,"auto","initial","none",p]}],grow:[{grow:["",E,h,p]}],shrink:[{shrink:["",E,h,p]}],order:[{order:[V,"first","last","none",h,p]}],"grid-cols":[{"grid-cols":ae()}],"col-start-end":[{col:ye()}],"col-start":[{"col-start":be()}],"col-end":[{"col-end":be()}],"grid-rows":[{"grid-rows":ae()}],"row-start-end":[{row:ye()}],"row-start":[{"row-start":be()}],"row-end":[{"row-end":be()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Pt()}],"auto-rows":[{"auto-rows":Pt()}],gap:[{gap:f()}],"gap-x":[{"gap-x":f()}],"gap-y":[{"gap-y":f()}],"justify-content":[{justify:[...$e(),"normal"]}],"justify-items":[{"justify-items":[...re(),"normal"]}],"justify-self":[{"justify-self":["auto",...re()]}],"align-content":[{content:["normal",...$e()]}],"align-items":[{items:[...re(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...re(),{baseline:["","last"]}]}],"place-content":[{"place-content":$e()}],"place-items":[{"place-items":[...re(),"baseline"]}],"place-self":[{"place-self":["auto",...re()]}],p:[{p:f()}],px:[{px:f()}],py:[{py:f()}],ps:[{ps:f()}],pe:[{pe:f()}],pt:[{pt:f()}],pr:[{pr:f()}],pb:[{pb:f()}],pl:[{pl:f()}],m:[{m:$()}],mx:[{mx:$()}],my:[{my:$()}],ms:[{ms:$()}],me:[{me:$()}],mt:[{mt:$()}],mr:[{mr:$()}],mb:[{mb:$()}],ml:[{ml:$()}],"space-x":[{"space-x":f()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":f()}],"space-y-reverse":["space-y-reverse"],size:[{size:K()}],w:[{w:[c,"screen",...K()]}],"min-w":[{"min-w":[c,"screen","none",...K()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[i]},...K()]}],h:[{h:["screen","lh",...K()]}],"min-h":[{"min-h":["screen","lh","none",...K()]}],"max-h":[{"max-h":["screen","lh",...K()]}],"font-size":[{text:["base",r,ce,X]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[n,h,Ve]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Be,p]}],"font-family":[{font:[bn,p,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[o,h,p]}],"line-clamp":[{"line-clamp":[E,"none",h,Ve]}],leading:[{leading:[s,...f()]}],"list-image":[{"list-image":["none",h,p]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",h,p]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:S()}],"text-color":[{text:S()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...we(),"wavy"]}],"text-decoration-thickness":[{decoration:[E,"from-font","auto",h,X]}],"text-decoration-color":[{decoration:S()}],"underline-offset":[{"underline-offset":[E,"auto",h,p]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:f()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",h,p]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",h,p]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:At()}],"bg-repeat":[{bg:Tt()}],"bg-size":[{bg:Mt()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},V,h,p],radial:["",h,p],conic:[V,h,p]},vn,yn]}],"bg-color":[{bg:S()}],"gradient-from-pos":[{from:Ge()}],"gradient-via-pos":[{via:Ge()}],"gradient-to-pos":[{to:Ge()}],"gradient-from":[{from:S()}],"gradient-via":[{via:S()}],"gradient-to":[{to:S()}],rounded:[{rounded:z()}],"rounded-s":[{"rounded-s":z()}],"rounded-e":[{"rounded-e":z()}],"rounded-t":[{"rounded-t":z()}],"rounded-r":[{"rounded-r":z()}],"rounded-b":[{"rounded-b":z()}],"rounded-l":[{"rounded-l":z()}],"rounded-ss":[{"rounded-ss":z()}],"rounded-se":[{"rounded-se":z()}],"rounded-ee":[{"rounded-ee":z()}],"rounded-es":[{"rounded-es":z()}],"rounded-tl":[{"rounded-tl":z()}],"rounded-tr":[{"rounded-tr":z()}],"rounded-br":[{"rounded-br":z()}],"rounded-bl":[{"rounded-bl":z()}],"border-w":[{border:N()}],"border-w-x":[{"border-x":N()}],"border-w-y":[{"border-y":N()}],"border-w-s":[{"border-s":N()}],"border-w-e":[{"border-e":N()}],"border-w-t":[{"border-t":N()}],"border-w-r":[{"border-r":N()}],"border-w-b":[{"border-b":N()}],"border-w-l":[{"border-l":N()}],"divide-x":[{"divide-x":N()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":N()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...we(),"hidden","none"]}],"divide-style":[{divide:[...we(),"hidden","none"]}],"border-color":[{border:S()}],"border-color-x":[{"border-x":S()}],"border-color-y":[{"border-y":S()}],"border-color-s":[{"border-s":S()}],"border-color-e":[{"border-e":S()}],"border-color-t":[{"border-t":S()}],"border-color-r":[{"border-r":S()}],"border-color-b":[{"border-b":S()}],"border-color-l":[{"border-l":S()}],"divide-color":[{divide:S()}],"outline-style":[{outline:[...we(),"none","hidden"]}],"outline-offset":[{"outline-offset":[E,h,p]}],"outline-w":[{outline:["",E,ce,X]}],"outline-color":[{outline:S()}],shadow:[{shadow:["","none",l,Ce,xe]}],"shadow-color":[{shadow:S()}],"inset-shadow":[{"inset-shadow":["none",u,Ce,xe]}],"inset-shadow-color":[{"inset-shadow":S()}],"ring-w":[{ring:N()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:S()}],"ring-offset-w":[{"ring-offset":[E,X]}],"ring-offset-color":[{"ring-offset":S()}],"inset-ring-w":[{"inset-ring":N()}],"inset-ring-color":[{"inset-ring":S()}],"text-shadow":[{"text-shadow":["none",g,Ce,xe]}],"text-shadow-color":[{"text-shadow":S()}],opacity:[{opacity:[E,h,p]}],"mix-blend":[{"mix-blend":[...It(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":It()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[E]}],"mask-image-linear-from-pos":[{"mask-linear-from":M()}],"mask-image-linear-to-pos":[{"mask-linear-to":M()}],"mask-image-linear-from-color":[{"mask-linear-from":S()}],"mask-image-linear-to-color":[{"mask-linear-to":S()}],"mask-image-t-from-pos":[{"mask-t-from":M()}],"mask-image-t-to-pos":[{"mask-t-to":M()}],"mask-image-t-from-color":[{"mask-t-from":S()}],"mask-image-t-to-color":[{"mask-t-to":S()}],"mask-image-r-from-pos":[{"mask-r-from":M()}],"mask-image-r-to-pos":[{"mask-r-to":M()}],"mask-image-r-from-color":[{"mask-r-from":S()}],"mask-image-r-to-color":[{"mask-r-to":S()}],"mask-image-b-from-pos":[{"mask-b-from":M()}],"mask-image-b-to-pos":[{"mask-b-to":M()}],"mask-image-b-from-color":[{"mask-b-from":S()}],"mask-image-b-to-color":[{"mask-b-to":S()}],"mask-image-l-from-pos":[{"mask-l-from":M()}],"mask-image-l-to-pos":[{"mask-l-to":M()}],"mask-image-l-from-color":[{"mask-l-from":S()}],"mask-image-l-to-color":[{"mask-l-to":S()}],"mask-image-x-from-pos":[{"mask-x-from":M()}],"mask-image-x-to-pos":[{"mask-x-to":M()}],"mask-image-x-from-color":[{"mask-x-from":S()}],"mask-image-x-to-color":[{"mask-x-to":S()}],"mask-image-y-from-pos":[{"mask-y-from":M()}],"mask-image-y-to-pos":[{"mask-y-to":M()}],"mask-image-y-from-color":[{"mask-y-from":S()}],"mask-image-y-to-color":[{"mask-y-to":S()}],"mask-image-radial":[{"mask-radial":[h,p]}],"mask-image-radial-from-pos":[{"mask-radial-from":M()}],"mask-image-radial-to-pos":[{"mask-radial-to":M()}],"mask-image-radial-from-color":[{"mask-radial-from":S()}],"mask-image-radial-to-color":[{"mask-radial-to":S()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[E]}],"mask-image-conic-from-pos":[{"mask-conic-from":M()}],"mask-image-conic-to-pos":[{"mask-conic-to":M()}],"mask-image-conic-from-color":[{"mask-conic-from":S()}],"mask-image-conic-to-color":[{"mask-conic-to":S()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:At()}],"mask-repeat":[{mask:Tt()}],"mask-size":[{mask:Mt()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",h,p]}],filter:[{filter:["","none",h,p]}],blur:[{blur:zt()}],brightness:[{brightness:[E,h,p]}],contrast:[{contrast:[E,h,p]}],"drop-shadow":[{"drop-shadow":["","none",y,Ce,xe]}],"drop-shadow-color":[{"drop-shadow":S()}],grayscale:[{grayscale:["",E,h,p]}],"hue-rotate":[{"hue-rotate":[E,h,p]}],invert:[{invert:["",E,h,p]}],saturate:[{saturate:[E,h,p]}],sepia:[{sepia:["",E,h,p]}],"backdrop-filter":[{"backdrop-filter":["","none",h,p]}],"backdrop-blur":[{"backdrop-blur":zt()}],"backdrop-brightness":[{"backdrop-brightness":[E,h,p]}],"backdrop-contrast":[{"backdrop-contrast":[E,h,p]}],"backdrop-grayscale":[{"backdrop-grayscale":["",E,h,p]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[E,h,p]}],"backdrop-invert":[{"backdrop-invert":["",E,h,p]}],"backdrop-opacity":[{"backdrop-opacity":[E,h,p]}],"backdrop-saturate":[{"backdrop-saturate":[E,h,p]}],"backdrop-sepia":[{"backdrop-sepia":["",E,h,p]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":f()}],"border-spacing-x":[{"border-spacing-x":f()}],"border-spacing-y":[{"border-spacing-y":f()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",h,p]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[E,"initial",h,p]}],ease:[{ease:["linear","initial",_,h,p]}],delay:[{delay:[E,h,p]}],animate:[{animate:["none",O,h,p]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[m,h,p]}],"perspective-origin":[{"perspective-origin":w()}],rotate:[{rotate:ve()}],"rotate-x":[{"rotate-x":ve()}],"rotate-y":[{"rotate-y":ve()}],"rotate-z":[{"rotate-z":ve()}],scale:[{scale:Se()}],"scale-x":[{"scale-x":Se()}],"scale-y":[{"scale-y":Se()}],"scale-z":[{"scale-z":Se()}],"scale-3d":["scale-3d"],skew:[{skew:Le()}],"skew-x":[{"skew-x":Le()}],"skew-y":[{"skew-y":Le()}],transform:[{transform:[h,p,"","none","gpu","cpu"]}],"transform-origin":[{origin:w()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ke()}],"translate-x":[{"translate-x":ke()}],"translate-y":[{"translate-y":ke()}],"translate-z":[{"translate-z":ke()}],"translate-none":["translate-none"],accent:[{accent:S()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:S()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",h,p]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":f()}],"scroll-mx":[{"scroll-mx":f()}],"scroll-my":[{"scroll-my":f()}],"scroll-ms":[{"scroll-ms":f()}],"scroll-me":[{"scroll-me":f()}],"scroll-mt":[{"scroll-mt":f()}],"scroll-mr":[{"scroll-mr":f()}],"scroll-mb":[{"scroll-mb":f()}],"scroll-ml":[{"scroll-ml":f()}],"scroll-p":[{"scroll-p":f()}],"scroll-px":[{"scroll-px":f()}],"scroll-py":[{"scroll-py":f()}],"scroll-ps":[{"scroll-ps":f()}],"scroll-pe":[{"scroll-pe":f()}],"scroll-pt":[{"scroll-pt":f()}],"scroll-pr":[{"scroll-pr":f()}],"scroll-pb":[{"scroll-pb":f()}],"scroll-pl":[{"scroll-pl":f()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",h,p]}],fill:[{fill:["none",...S()]}],"stroke-w":[{stroke:[E,ce,X,Ve]}],stroke:[{stroke:["none",...S()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Cn=nn(xn);function I(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var En=typeof Symbol=="function"&&Symbol.observable||"@@observable",Ft=En,He=()=>Math.random().toString(36).substring(7).split("").join("."),_n={INIT:`@@redux/INIT${He()}`,REPLACE:`@@redux/REPLACE${He()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${He()}`},Te=_n;function ht(e){if(typeof e!="object"||e===null)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function mt(e,t,r){if(typeof e!="function")throw new Error(I(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(I(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(I(1));return r(mt)(e,t)}let n=e,o=t,s=new Map,i=s,c=0,a=!1;function d(){i===s&&(i=new Map,s.forEach((x,_)=>{i.set(_,x)}))}function l(){if(a)throw new Error(I(3));return o}function u(x){if(typeof x!="function")throw new Error(I(4));if(a)throw new Error(I(5));let _=!0;d();const O=c++;return i.set(O,x),function(){if(_){if(a)throw new Error(I(6));_=!1,d(),i.delete(O),s=null}}}function g(x){if(!ht(x))throw new Error(I(7));if(typeof x.type>"u")throw new Error(I(8));if(typeof x.type!="string")throw new Error(I(17));if(a)throw new Error(I(9));try{a=!0,o=n(o,x)}finally{a=!1}return(s=i).forEach(O=>{O()}),x}function y(x){if(typeof x!="function")throw new Error(I(10));n=x,g({type:Te.REPLACE})}function k(){const x=u;return{subscribe(_){if(typeof _!="object"||_===null)throw new Error(I(11));function O(){const b=_;b.next&&b.next(l())}return O(),{unsubscribe:x(O)}},[Ft](){return this}}}return g({type:Te.INIT}),{dispatch:g,subscribe:u,getState:l,replaceReducer:y,[Ft]:k}}function Rn(e){Object.keys(e).forEach(t=>{const r=e[t];if(typeof r(void 0,{type:Te.INIT})>"u")throw new Error(I(12));if(typeof r(void 0,{type:Te.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(I(13))})}function gt(e){const t=Object.keys(e),r={};for(let s=0;s<t.length;s++){const i=t[s];typeof e[i]=="function"&&(r[i]=e[i])}const n=Object.keys(r);let o;try{Rn(r)}catch(s){o=s}return function(i={},c){if(o)throw o;let a=!1;const d={};for(let l=0;l<n.length;l++){const u=n[l],g=r[u],y=i[u],k=g(y,c);if(typeof k>"u")throw c&&c.type,new Error(I(14));d[u]=k,a=a||k!==y}return a=a||n.length!==Object.keys(i).length,a?d:i}}function Me(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function On(...e){return t=>(r,n)=>{const o=t(r,n);let s=()=>{throw new Error(I(15))};const i={getState:o.getState,dispatch:(a,...d)=>s(a,...d)},c=e.map(a=>a(i));return s=Me(...c)(o.dispatch),{...o,dispatch:s}}}function Pn(e){return ht(e)&&"type"in e&&typeof e.type=="string"}var mr=Symbol.for("immer-nothing"),qt=Symbol.for("immer-draftable"),j=Symbol.for("immer-state");function q(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var oe=Object.getPrototypeOf;function Z(e){return!!e&&!!e[j]}function B(e){return e?gr(e)||Array.isArray(e)||!!e[qt]||!!e.constructor?.[qt]||me(e)||De(e):!1}var An=Object.prototype.constructor.toString();function gr(e){if(!e||typeof e!="object")return!1;const t=oe(e);if(t===null)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object?!0:typeof r=="function"&&Function.toString.call(r)===An}function Ie(e,t){je(e)===0?Reflect.ownKeys(e).forEach(r=>{t(r,e[r],e)}):e.forEach((r,n)=>t(n,r,e))}function je(e){const t=e[j];return t?t.type_:Array.isArray(e)?1:me(e)?2:De(e)?3:0}function ot(e,t){return je(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function yr(e,t,r){const n=je(e);n===2?e.set(t,r):n===3?e.add(r):e[t]=r}function Tn(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function me(e){return e instanceof Map}function De(e){return e instanceof Set}function J(e){return e.copy_||e.base_}function st(e,t){if(me(e))return new Map(e);if(De(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const r=gr(e);if(t===!0||t==="class_only"&&!r){const n=Object.getOwnPropertyDescriptors(e);delete n[j];let o=Reflect.ownKeys(n);for(let s=0;s<o.length;s++){const i=o[s],c=n[i];c.writable===!1&&(c.writable=!0,c.configurable=!0),(c.get||c.set)&&(n[i]={configurable:!0,writable:!0,enumerable:c.enumerable,value:e[i]})}return Object.create(oe(e),n)}else{const n=oe(e);if(n!==null&&r)return{...e};const o=Object.create(n);return Object.assign(o,e)}}function yt(e,t=!1){return We(e)||Z(e)||!B(e)||(je(e)>1&&Object.defineProperties(e,{set:{value:Ee},add:{value:Ee},clear:{value:Ee},delete:{value:Ee}}),Object.freeze(e),t&&Object.values(e).forEach(r=>yt(r,!0))),e}function Ee(){q(2)}function We(e){return Object.isFrozen(e)}var Mn={};function ee(e){const t=Mn[e];return t||q(0,e),t}var pe;function br(){return pe}function In(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function $t(e,t){t&&(ee("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function it(e){at(e),e.drafts_.forEach(zn),e.drafts_=null}function at(e){e===pe&&(pe=e.parent_)}function Gt(e){return pe=In(pe,e)}function zn(e){const t=e[j];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Lt(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return e!==void 0&&e!==r?(r[j].modified_&&(it(t),q(4)),B(e)&&(e=ze(t,e),t.parent_||Ne(t,e)),t.patches_&&ee("Patches").generateReplacementPatches_(r[j].base_,e,t.patches_,t.inversePatches_)):e=ze(t,r,[]),it(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==mr?e:void 0}function ze(e,t,r){if(We(t))return t;const n=t[j];if(!n)return Ie(t,(o,s)=>Ut(e,n,t,o,s,r)),t;if(n.scope_!==e)return t;if(!n.modified_)return Ne(e,n.base_,!0),n.base_;if(!n.finalized_){n.finalized_=!0,n.scope_.unfinalizedDrafts_--;const o=n.copy_;let s=o,i=!1;n.type_===3&&(s=new Set(o),o.clear(),i=!0),Ie(s,(c,a)=>Ut(e,n,o,c,a,r,i)),Ne(e,o,!1),r&&e.patches_&&ee("Patches").generatePatches_(n,r,e.patches_,e.inversePatches_)}return n.copy_}function Ut(e,t,r,n,o,s,i){if(Z(o)){const c=s&&t&&t.type_!==3&&!ot(t.assigned_,n)?s.concat(n):void 0,a=ze(e,o,c);if(yr(r,n,a),Z(a))e.canAutoFreeze_=!1;else return}else i&&r.add(o);if(B(o)&&!We(o)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;ze(e,o),(!t||!t.scope_.parent_)&&typeof n!="symbol"&&(me(r)?r.has(n):Object.prototype.propertyIsEnumerable.call(r,n))&&Ne(e,o)}}function Ne(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&yt(t,r)}function Nn(e,t){const r=Array.isArray(e),n={type_:r?1:0,scope_:t?t.scope_:br(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let o=n,s=bt;r&&(o=[n],s=he);const{revoke:i,proxy:c}=Proxy.revocable(o,s);return n.draft_=c,n.revoke_=i,c}var bt={get(e,t){if(t===j)return e;const r=J(e);if(!ot(r,t))return jn(e,r,t);const n=r[t];return e.finalized_||!B(n)?n:n===Ke(e.base_,t)?(Xe(e),e.copy_[t]=lt(n,e)):n},has(e,t){return t in J(e)},ownKeys(e){return Reflect.ownKeys(J(e))},set(e,t,r){const n=wr(J(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const o=Ke(J(e),t),s=o?.[j];if(s&&s.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(Tn(r,o)&&(r!==void 0||ot(e.base_,t)))return!0;Xe(e),ct(e)}return e.copy_[t]===r&&(r!==void 0||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty(e,t){return Ke(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,Xe(e),ct(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const r=J(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{writable:!0,configurable:e.type_!==1||t!=="length",enumerable:n.enumerable,value:r[t]}},defineProperty(){q(11)},getPrototypeOf(e){return oe(e.base_)},setPrototypeOf(){q(12)}},he={};Ie(bt,(e,t)=>{he[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});he.deleteProperty=function(e,t){return he.set.call(this,e,t,void 0)};he.set=function(e,t,r){return bt.set.call(this,e[0],t,r,e[0])};function Ke(e,t){const r=e[j];return(r?J(r):e)[t]}function jn(e,t,r){const n=wr(t,r);return n?"value"in n?n.value:n.get?.call(e.draft_):void 0}function wr(e,t){if(!(t in e))return;let r=oe(e);for(;r;){const n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=oe(r)}}function ct(e){e.modified_||(e.modified_=!0,e.parent_&&ct(e.parent_))}function Xe(e){e.copy_||(e.copy_=st(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Dn=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(t,r,n)=>{if(typeof t=="function"&&typeof r!="function"){const s=r;r=t;const i=this;return function(a=s,...d){return i.produce(a,l=>r.call(this,l,...d))}}typeof r!="function"&&q(6),n!==void 0&&typeof n!="function"&&q(7);let o;if(B(t)){const s=Gt(this),i=lt(t,void 0);let c=!0;try{o=r(i),c=!1}finally{c?it(s):at(s)}return $t(s,n),Lt(o,s)}else if(!t||typeof t!="object"){if(o=r(t),o===void 0&&(o=t),o===mr&&(o=void 0),this.autoFreeze_&&yt(o,!0),n){const s=[],i=[];ee("Patches").generateReplacementPatches_(t,o,s,i),n(s,i)}return o}else q(1,t)},this.produceWithPatches=(t,r)=>{if(typeof t=="function")return(i,...c)=>this.produceWithPatches(i,a=>t(a,...c));let n,o;return[this.produce(t,r,(i,c)=>{n=i,o=c}),n,o]},typeof e?.autoFreeze=="boolean"&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){B(e)||q(8),Z(e)&&(e=Wn(e));const t=Gt(this),r=lt(e,void 0);return r[j].isManual_=!0,at(t),r}finishDraft(e,t){const r=e&&e[j];(!r||!r.isManual_)&&q(9);const{scope_:n}=r;return $t(n,t),Lt(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const o=t[r];if(o.path.length===0&&o.op==="replace"){e=o.value;break}}r>-1&&(t=t.slice(r+1));const n=ee("Patches").applyPatches_;return Z(e)?n(e,t):this.produce(e,o=>n(o,t))}};function lt(e,t){const r=me(e)?ee("MapSet").proxyMap_(e,t):De(e)?ee("MapSet").proxySet_(e,t):Nn(e,t);return(t?t.scope_:br()).drafts_.push(r),r}function Wn(e){return Z(e)||q(10,e),vr(e)}function vr(e){if(!B(e)||We(e))return e;const t=e[j];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=st(e,t.scope_.immer_.useStrictShallowCopy_)}else r=st(e,!0);return Ie(r,(n,o)=>{yr(r,n,vr(o))}),t&&(t.finalized_=!1),r}var Fn=new Dn,Sr=Fn.produce;function kr(e){return({dispatch:r,getState:n})=>o=>s=>typeof s=="function"?s(r,n,e):o(s)}var qn=kr(),$n=kr,Gn=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Me:Me.apply(null,arguments)},Ln=e=>e&&typeof e.match=="function";function de(e,t){function r(...n){if(t){let o=t(...n);if(!o)throw new Error(U(0));return{type:e,payload:o.payload,..."meta"in o&&{meta:o.meta},..."error"in o&&{error:o.error}}}return{type:e,payload:n[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=n=>Pn(n)&&n.type===e,r}var xr=class le extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,le.prototype)}static get[Symbol.species](){return le}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new le(...t[0].concat(this)):new le(...t.concat(this))}};function Bt(e){return B(e)?Sr(e,()=>{}):e}function _e(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function Un(e){return typeof e=="boolean"}var Bn=()=>function(t){const{thunk:r=!0,immutableCheck:n=!0,serializableCheck:o=!0,actionCreatorCheck:s=!0}=t??{};let i=new xr;return r&&(Un(r)?i.push(qn):i.push($n(r.extraArgument))),i},Vn="RTK_autoBatch",Vt=e=>t=>{setTimeout(t,e)},Hn=(e={type:"raf"})=>t=>(...r)=>{const n=t(...r);let o=!0,s=!1,i=!1;const c=new Set,a=e.type==="tick"?queueMicrotask:e.type==="raf"?typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame:Vt(10):e.type==="callback"?e.queueNotification:Vt(e.timeout),d=()=>{i=!1,s&&(s=!1,c.forEach(l=>l()))};return Object.assign({},n,{subscribe(l){const u=()=>o&&l(),g=n.subscribe(u);return c.add(l),()=>{g(),c.delete(l)}},dispatch(l){try{return o=!l?.meta?.[Vn],s=!o,s&&(i||(i=!0,a(d))),n.dispatch(l)}finally{o=!0}}})},Kn=e=>function(r){const{autoBatch:n=!0}=r??{};let o=new xr(e);return n&&o.push(Hn(typeof n=="object"?n:void 0)),o};function Xn(e){const t=Bn(),{reducer:r=void 0,middleware:n,devTools:o=!0,preloadedState:s=void 0,enhancers:i=void 0}=e||{};let c;if(typeof r=="function")c=r;else if(ht(r))c=gt(r);else throw new Error(U(1));let a;typeof n=="function"?a=n(t):a=t();let d=Me;o&&(d=Gn({trace:!1,...typeof o=="object"&&o}));const l=On(...a),u=Kn(l);let g=typeof i=="function"?i(u):u();const y=d(...g);return mt(c,s,y)}function Cr(e){const t={},r=[];let n;const o={addCase(s,i){const c=typeof s=="string"?s:s.type;if(!c)throw new Error(U(28));if(c in t)throw new Error(U(29));return t[c]=i,o},addAsyncThunk(s,i){return i.pending&&(t[s.pending.type]=i.pending),i.rejected&&(t[s.rejected.type]=i.rejected),i.fulfilled&&(t[s.fulfilled.type]=i.fulfilled),i.settled&&r.push({matcher:s.settled,reducer:i.settled}),o},addMatcher(s,i){return r.push({matcher:s,reducer:i}),o},addDefaultCase(s){return n=s,o}};return e(o),[t,r,n]}function Jn(e){return typeof e=="function"}function Qn(e,t){let[r,n,o]=Cr(t),s;if(Jn(e))s=()=>Bt(e());else{const c=Bt(e);s=()=>c}function i(c=s(),a){let d=[r[a.type],...n.filter(({matcher:l})=>l(a)).map(({reducer:l})=>l)];return d.filter(l=>!!l).length===0&&(d=[o]),d.reduce((l,u)=>{if(u)if(Z(l)){const y=u(l,a);return y===void 0?l:y}else{if(B(l))return Sr(l,g=>u(g,a));{const g=u(l,a);if(g===void 0){if(l===null)return l;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}}return l},c)}return i.getInitialState=s,i}var Yn=(e,t)=>Ln(e)?e.match(t):e(t);function Zn(...e){return t=>e.some(r=>Yn(r,t))}var eo="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",to=(e=21)=>{let t="",r=e;for(;r--;)t+=eo[Math.random()*64|0];return t},ro=["name","message","stack","code"],Je=class{constructor(e,t){this.payload=e,this.meta=t}_type},Ht=class{constructor(e,t){this.payload=e,this.meta=t}_type},no=e=>{if(typeof e=="object"&&e!==null){const t={};for(const r of ro)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},Kt="External signal was aborted",wt=(()=>{function e(t,r,n){const o=de(t+"/fulfilled",(a,d,l,u)=>({payload:a,meta:{...u||{},arg:l,requestId:d,requestStatus:"fulfilled"}})),s=de(t+"/pending",(a,d,l)=>({payload:void 0,meta:{...l||{},arg:d,requestId:a,requestStatus:"pending"}})),i=de(t+"/rejected",(a,d,l,u,g)=>({payload:u,error:(n&&n.serializeError||no)(a||"Rejected"),meta:{...g||{},arg:l,requestId:d,rejectedWithValue:!!u,requestStatus:"rejected",aborted:a?.name==="AbortError",condition:a?.name==="ConditionError"}}));function c(a,{signal:d}={}){return(l,u,g)=>{const y=n?.idGenerator?n.idGenerator(a):to(),k=new AbortController;let m,x;function _(v){x=v,k.abort()}d&&(d.aborted?_(Kt):d.addEventListener("abort",()=>_(Kt),{once:!0}));const O=(async function(){let v;try{let w=n?.condition?.(a,{getState:u,extra:g});if(so(w)&&(w=await w),w===!1||k.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const C=new Promise((R,f)=>{m=()=>{f({name:"AbortError",message:x||"Aborted"})},k.signal.addEventListener("abort",m)});l(s(y,a,n?.getPendingMeta?.({requestId:y,arg:a},{getState:u,extra:g}))),v=await Promise.race([C,Promise.resolve(r(a,{dispatch:l,getState:u,extra:g,requestId:y,signal:k.signal,abort:_,rejectWithValue:(R,f)=>new Je(R,f),fulfillWithValue:(R,f)=>new Ht(R,f)})).then(R=>{if(R instanceof Je)throw R;return R instanceof Ht?o(R.payload,y,a,R.meta):o(R,y,a)})])}catch(w){v=w instanceof Je?i(null,y,a,w.payload,w.meta):i(w,y,a)}finally{m&&k.signal.removeEventListener("abort",m)}return n&&!n.dispatchConditionRejection&&i.match(v)&&v.meta.condition||l(v),v})();return Object.assign(O,{abort:_,requestId:y,arg:a,unwrap(){return O.then(oo)}})}}return Object.assign(c,{pending:s,rejected:i,fulfilled:o,settled:Zn(i,o),typePrefix:t})}return e.withTypes=()=>e,e})();function oo(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function so(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var io=Symbol.for("rtk-slice-createasyncthunk");function ao(e,t){return`${e}/${t}`}function co({creators:e}={}){const t=e?.asyncThunk?.[io];return function(n){const{name:o,reducerPath:s=o}=n;if(!o)throw new Error(U(11));const i=(typeof n.reducers=="function"?n.reducers(uo()):n.reducers)||{},c=Object.keys(i),a={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},d={addCase(v,b){const w=typeof v=="string"?v:v.type;if(!w)throw new Error(U(12));if(w in a.sliceCaseReducersByType)throw new Error(U(13));return a.sliceCaseReducersByType[w]=b,d},addMatcher(v,b){return a.sliceMatchers.push({matcher:v,reducer:b}),d},exposeAction(v,b){return a.actionCreators[v]=b,d},exposeCaseReducer(v,b){return a.sliceCaseReducersByName[v]=b,d}};c.forEach(v=>{const b=i[v],w={reducerName:v,type:ao(o,v),createNotation:typeof n.reducers=="function"};po(b)?mo(w,b,d,t):fo(w,b,d)});function l(){const[v={},b=[],w=void 0]=typeof n.extraReducers=="function"?Cr(n.extraReducers):[n.extraReducers],C={...v,...a.sliceCaseReducersByType};return Qn(n.initialState,R=>{for(let f in C)R.addCase(f,C[f]);for(let f of a.sliceMatchers)R.addMatcher(f.matcher,f.reducer);for(let f of b)R.addMatcher(f.matcher,f.reducer);w&&R.addDefaultCase(w)})}const u=v=>v,g=new Map,y=new WeakMap;let k;function m(v,b){return k||(k=l()),k(v,b)}function x(){return k||(k=l()),k.getInitialState()}function _(v,b=!1){function w(R){let f=R[v];return typeof f>"u"&&b&&(f=_e(y,w,x)),f}function C(R=u){const f=_e(g,b,()=>new WeakMap);return _e(f,R,()=>{const A={};for(const[ae,ye]of Object.entries(n.selectors??{}))A[ae]=lo(ye,R,()=>_e(y,R,x),b);return A})}return{reducerPath:v,getSelectors:C,get selectors(){return C(w)},selectSlice:w}}const O={name:o,reducer:m,actions:a.actionCreators,caseReducers:a.sliceCaseReducersByName,getInitialState:x,..._(s),injectInto(v,{reducerPath:b,...w}={}){const C=b??s;return v.inject({reducerPath:C,reducer:m},w),{...O,..._(C,!0)}}};return O}}function lo(e,t,r,n){function o(s,...i){let c=t(s);return typeof c>"u"&&n&&(c=r()),e(c,...i)}return o.unwrapped=e,o}var Fe=co();function uo(){function e(t,r){return{_reducerDefinitionType:"asyncThunk",payloadCreator:t,...r}}return e.withTypes=()=>e,{reducer(t){return Object.assign({[t.name](...r){return t(...r)}}[t.name],{_reducerDefinitionType:"reducer"})},preparedReducer(t,r){return{_reducerDefinitionType:"reducerWithPrepare",prepare:t,reducer:r}},asyncThunk:e}}function fo({type:e,reducerName:t,createNotation:r},n,o){let s,i;if("reducer"in n){if(r&&!ho(n))throw new Error(U(17));s=n.reducer,i=n.prepare}else s=n;o.addCase(e,s).exposeCaseReducer(t,s).exposeAction(t,i?de(e,i):de(e))}function po(e){return e._reducerDefinitionType==="asyncThunk"}function ho(e){return e._reducerDefinitionType==="reducerWithPrepare"}function mo({type:e,reducerName:t},r,n,o){if(!o)throw new Error(U(18));const{payloadCreator:s,fulfilled:i,pending:c,rejected:a,settled:d,options:l}=r,u=o(e,s,l);n.exposeAction(t,u),i&&n.addCase(u.fulfilled,i),c&&n.addCase(u.pending,c),a&&n.addCase(u.rejected,a),d&&n.addMatcher(u.settled,d),n.exposeCaseReducer(t,{fulfilled:i||Re,pending:c||Re,rejected:a||Re,settled:d||Re})}function Re(){}function U(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var vt="persist:",St="persist/FLUSH",qe="persist/REHYDRATE",kt="persist/PAUSE",xt="persist/PERSIST",Ct="persist/PURGE",Et="persist/REGISTER",go=-1;function Pe(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Pe=function(r){return typeof r}:Pe=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Pe(e)}function Xt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function yo(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Xt(r,!0).forEach(function(n){bo(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Xt(r).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function bo(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function wo(e,t,r,n){n.debug;var o=yo({},r);return e&&Pe(e)==="object"&&Object.keys(e).forEach(function(s){s!=="_persist"&&t[s]===r[s]&&(o[s]=e[s])}),o}function vo(e){var t=e.blacklist||null,r=e.whitelist||null,n=e.transforms||[],o=e.throttle||0,s="".concat(e.keyPrefix!==void 0?e.keyPrefix:vt).concat(e.key),i=e.storage,c;e.serialize===!1?c=function(w){return w}:typeof e.serialize=="function"?c=e.serialize:c=So;var a=e.writeFailHandler||null,d={},l={},u=[],g=null,y=null,k=function(w){Object.keys(w).forEach(function(C){_(C)&&d[C]!==w[C]&&u.indexOf(C)===-1&&u.push(C)}),Object.keys(d).forEach(function(C){w[C]===void 0&&_(C)&&u.indexOf(C)===-1&&d[C]!==void 0&&u.push(C)}),g===null&&(g=setInterval(m,o)),d=w};function m(){if(u.length===0){g&&clearInterval(g),g=null;return}var b=u.shift(),w=n.reduce(function(C,R){return R.in(C,b,d)},d[b]);if(w!==void 0)try{l[b]=c(w)}catch(C){console.error("redux-persist/createPersistoid: error serializing state",C)}else delete l[b];u.length===0&&x()}function x(){Object.keys(l).forEach(function(b){d[b]===void 0&&delete l[b]}),y=i.setItem(s,c(l)).catch(O)}function _(b){return!(r&&r.indexOf(b)===-1&&b!=="_persist"||t&&t.indexOf(b)!==-1)}function O(b){a&&a(b)}var v=function(){for(;u.length!==0;)m();return y||Promise.resolve()};return{update:k,flush:v}}function So(e){return JSON.stringify(e)}function ko(e){var t=e.transforms||[],r="".concat(e.keyPrefix!==void 0?e.keyPrefix:vt).concat(e.key),n=e.storage;e.debug;var o;return e.deserialize===!1?o=function(i){return i}:typeof e.deserialize=="function"?o=e.deserialize:o=xo,n.getItem(r).then(function(s){if(s)try{var i={},c=o(s);return Object.keys(c).forEach(function(a){i[a]=t.reduceRight(function(d,l){return l.out(d,a,c)},o(c[a]))}),i}catch(a){throw a}else return})}function xo(e){return JSON.parse(e)}function Co(e){var t=e.storage,r="".concat(e.keyPrefix!==void 0?e.keyPrefix:vt).concat(e.key);return t.removeItem(r,Eo)}function Eo(e){}function Jt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function L(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Jt(r,!0).forEach(function(n){_o(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Jt(r).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function _o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ro(e,t){if(e==null)return{};var r=Oo(e,t),n,o;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o<s.length;o++)n=s[o],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Oo(e,t){if(e==null)return{};var r={},n=Object.keys(e),o,s;for(s=0;s<n.length;s++)o=n[s],!(t.indexOf(o)>=0)&&(r[o]=e[o]);return r}var Po=5e3;function Er(e,t){var r=e.version!==void 0?e.version:go;e.debug;var n=e.stateReconciler===void 0?wo:e.stateReconciler,o=e.getStoredState||ko,s=e.timeout!==void 0?e.timeout:Po,i=null,c=!1,a=!0,d=function(u){return u._persist.rehydrated&&i&&!a&&i.update(u),u};return function(l,u){var g=l||{},y=g._persist,k=Ro(g,["_persist"]),m=k;if(u.type===xt){var x=!1,_=function(f,A){x||(u.rehydrate(e.key,f,A),x=!0)};if(s&&setTimeout(function(){!x&&_(void 0,new Error('redux-persist: persist timed out for persist key "'.concat(e.key,'"')))},s),a=!1,i||(i=vo(e)),y)return L({},t(m,u),{_persist:y});if(typeof u.rehydrate!="function"||typeof u.register!="function")throw new Error("redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.");return u.register(e.key),o(e).then(function(R){var f=e.migrate||function(A,ae){return Promise.resolve(A)};f(R,r).then(function(A){_(A)},function(A){_(void 0,A)})},function(R){_(void 0,R)}),L({},t(m,u),{_persist:{version:r,rehydrated:!1}})}else{if(u.type===Ct)return c=!0,u.result(Co(e)),L({},t(m,u),{_persist:y});if(u.type===St)return u.result(i&&i.flush()),L({},t(m,u),{_persist:y});if(u.type===kt)a=!0;else if(u.type===qe){if(c)return L({},m,{_persist:L({},y,{rehydrated:!0})});if(u.key===e.key){var O=t(m,u),v=u.payload,b=n!==!1&&v!==void 0?n(v,l,O,e):O,w=L({},b,{_persist:L({},y,{rehydrated:!0})});return d(w)}}}if(!y)return t(l,u);var C=t(m,u);return C===m?l:d(L({},C,{_persist:y}))}}function Qt(e){return Mo(e)||To(e)||Ao()}function Ao(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function To(e){if(Symbol.iterator in Object(e)||Object.prototype.toString.call(e)==="[object Arguments]")return Array.from(e)}function Mo(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}function Yt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function ut(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Yt(r,!0).forEach(function(n){Io(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Yt(r).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function Io(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var _r={registry:[],bootstrapped:!1},zo=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_r,r=arguments.length>1?arguments[1]:void 0;switch(r.type){case Et:return ut({},t,{registry:[].concat(Qt(t.registry),[r.key])});case qe:var n=t.registry.indexOf(r.key),o=Qt(t.registry);return o.splice(n,1),ut({},t,{registry:o,bootstrapped:o.length===0});default:return t}};function No(e,t,r){var n=mt(zo,_r,void 0),o=function(a){n.dispatch({type:Et,key:a})},s=function(a,d,l){var u={type:qe,payload:d,err:l,key:a};e.dispatch(u),n.dispatch(u)},i=ut({},n,{purge:function(){var a=[];return e.dispatch({type:Ct,result:function(l){a.push(l)}}),Promise.all(a)},flush:function(){var a=[];return e.dispatch({type:St,result:function(l){a.push(l)}}),Promise.all(a)},pause:function(){e.dispatch({type:kt})},persist:function(){e.dispatch({type:xt,register:o,rehydrate:s})}});return i.persist(),i}function Rr(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=r.whitelist||null,o=r.blacklist||null;function s(i){return!!(n&&n.indexOf(i)===-1||o&&o.indexOf(i)!==-1)}return{in:function(c,a,d){return!s(a)&&e?e(c,a,d):c},out:function(c,a,d){return!s(a)&&t?t(c,a,d):c}}}function Ae(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ae=function(r){return typeof r}:Ae=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Ae(e)}function Qe(){}var jo={getItem:Qe,setItem:Qe,removeItem:Qe};function Do(e){if((typeof self>"u"?"undefined":Ae(self))!=="object"||!(e in self))return!1;try{var t=self[e],r="redux-persist ".concat(e," test");t.setItem(r,"test"),t.getItem(r),t.removeItem(r)}catch{return!1}return!0}function Wo(e){var t="".concat(e,"Storage");return Do(t)?self[t]:jo}function Fo(e){var t=Wo(e);return{getItem:function(n){return new Promise(function(o,s){o(t.getItem(n))})},setItem:function(n,o){return new Promise(function(s,i){s(t.setItem(n,o))})},removeItem:function(n){return new Promise(function(o,s){o(t.removeItem(n))})}}}const qo=Fo("local"),$o={sidebarOpen:!0,activeMenu:"home"},Or=Fe({name:"ui",initialState:$o,reducers:{toggleSidebar:e=>{e.sidebarOpen=!e.sidebarOpen},setSidebarOpen:(e,t)=>{e.sidebarOpen=t.payload},setActiveMenu:(e,t)=>{e.activeMenu=t.payload}}}),{toggleSidebar:Ms,setSidebarOpen:Is,setActiveMenu:zs}=Or.actions,Go=Or.reducer,Lo={routes:[]},Uo=(e,t)=>{const r=t.split("/").filter(Boolean);for(let n=r.length-1;n>0;n--){const o="/"+r.slice(0,n).join("/"),s=e.find(i=>i.path===o);if(s)return s}return e.find(n=>n.path==="/")||null},Bo=(e,t)=>e==="/"?t:t.replace(e+"/",""),Pr=Fe({name:"route",initialState:Lo,reducers:{addRoute:(e,t)=>{const r=t.payload,n=Uo(e.routes,r.path);if(n){n.children||(n.children=[]);const o=Bo(n.path,r.path);n.children.push({...r,path:o})}else e.routes.push(r);e.routes.sort((o,s)=>(o.meta?.order||999)-(s.meta?.order||999))},removeRoute:(e,t)=>{const r=t.payload,n=o=>{const s=o.findIndex(i=>i.path===r);if(s>=0)return o.splice(s,1),!0;for(const i of o)if(i.children&&n(i.children))return!0;return!1};n(e.routes)},updateRoute:(e,t)=>{const{path:r,updates:n}=t.payload,o=s=>{const i=s.findIndex(c=>c.path===r);if(i>=0)return s[i]={...s[i],...n},!0;for(const c of s)if(c.children&&o(c.children))return!0;return!1};o(e.routes)},setRoutes:(e,t)=>{e.routes=t.payload,e.routes.sort((r,n)=>(r.meta?.order||999)-(n.meta?.order||999))},clearRoutes:e=>{e.routes=[]}}}),{addRoute:Vo,removeRoute:Ho,updateRoute:Ko,setRoutes:Ns,clearRoutes:Xo}=Pr.actions,Jo=Pr.reducer,Qo={entries:[],loadedScripts:[]},_t=wt("script/loadScript",async e=>new Promise((t,r)=>{const n=document.createElement("script");n.type="module",n.src=e,n.dataset.dynamicEntry="true",n.onload=()=>t(e),n.onerror=o=>{console.error("[Script] Load failed:",e),r(o)},document.body.appendChild(n)})),Ar=wt("script/loadScripts",async(e,{dispatch:t})=>(await Promise.allSettled(e.map(n=>t(_t(n)).unwrap()))).filter(n=>n.status==="fulfilled").map(n=>n.value)),Tr=wt("script/unloadScript",async e=>(document.querySelectorAll(`script[src="${e}"][data-dynamic-entry="true"]`).forEach(r=>r.remove()),e)),Mr=Fe({name:"script",initialState:Qo,reducers:{syncEntries:(e,t)=>{e.entries=t.payload},addEntry:(e,t)=>{e.entries.includes(t.payload)||e.entries.push(t.payload)},removeEntry:(e,t)=>{e.entries=e.entries.filter(r=>r!==t.payload),e.loadedScripts=e.loadedScripts.filter(r=>r!==t.payload)}},extraReducers:e=>{e.addCase(_t.fulfilled,(t,r)=>{t.loadedScripts.includes(r.payload)||t.loadedScripts.push(r.payload)}),e.addCase(Ar.fulfilled,(t,r)=>{r.payload.forEach(n=>{t.loadedScripts.includes(n)||t.loadedScripts.push(n)})}),e.addCase(Tr.fulfilled,(t,r)=>{t.loadedScripts=t.loadedScripts.filter(n=>n!==r.payload)})}}),{syncEntries:js,addEntry:Ds,removeEntry:Ws}=Mr.actions,Yo=Mr.reducer,Zo={configs:{},schemas:{},loading:{},errors:{},connected:!1},Ir=Fe({name:"config",initialState:Zo,reducers:{setConnected:(e,t)=>{e.connected=t.payload},setLoading:(e,t)=>{const{pluginName:r,loading:n}=t.payload;e.loading[r]=n},setError:(e,t)=>{const{pluginName:r,error:n}=t.payload;e.errors[r]=n},updateConfig:(e,t)=>{const{pluginName:r,config:n}=t.payload;e.configs[r]=n,e.loading[r]=!1,e.errors[r]=null},updateSchema:(e,t)=>{const{pluginName:r,schema:n}=t.payload;e.schemas[r]=n},updateConfigs:(e,t)=>{e.configs={...e.configs,...t.payload}},updateSchemas:(e,t)=>{e.schemas={...e.schemas,...t.payload}},removeConfig:(e,t)=>{const r=t.payload;delete e.configs[r],delete e.schemas[r],delete e.loading[r],delete e.errors[r]},clearConfigs:e=>{e.configs={},e.schemas={},e.loading={},e.errors={}}}}),{setConnected:Ye,setLoading:Oe,setError:ue,updateConfig:es,updateSchema:ts,updateConfigs:zr,updateSchemas:Nr,removeConfig:Fs,clearConfigs:qs}=Ir.actions,rs=Ir.reducer,ns=(e,t)=>e.config.configs[t],os=(e,t)=>e.config.schemas[t],ss=(e,t)=>e.config.loading[t]||!1,is=(e,t)=>e.config.errors[t]||null,Rt=e=>e.config.connected,as=e=>e.config.configs,cs=e=>e.config.schemas,dt={ui:Go,route:Jo,script:Yo,config:rs};var Ze={exports:{}},et={};/**
|
|
2
|
+
* @license React
|
|
3
|
+
* use-sync-external-store-with-selector.production.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/var Zt;function ls(){if(Zt)return et;Zt=1;var e=Fr;function t(a,d){return a===d&&(a!==0||1/a===1/d)||a!==a&&d!==d}var r=typeof Object.is=="function"?Object.is:t,n=e.useSyncExternalStore,o=e.useRef,s=e.useEffect,i=e.useMemo,c=e.useDebugValue;return et.useSyncExternalStoreWithSelector=function(a,d,l,u,g){var y=o(null);if(y.current===null){var k={hasValue:!1,value:null};y.current=k}else k=y.current;y=i(function(){function x(w){if(!_){if(_=!0,O=w,w=u(w),g!==void 0&&k.hasValue){var C=k.value;if(g(C,w))return v=C}return v=w}if(C=v,r(O,w))return C;var R=u(w);return g!==void 0&&g(C,R)?(O=w,C):(O=w,v=R)}var _=!1,O,v,b=l===void 0?null:l;return[function(){return x(d())},b===null?void 0:function(){return x(b())}]},[d,l,u,g]);var m=n(a,y[0],y[1]);return s(function(){k.hasValue=!0,k.value=m},[m]),c(m),m},et}var er;function us(){return er||(er=1,Ze.exports=ls()),Ze.exports}var ds=us(),fs=Symbol.for("react-redux-context"),ps=typeof globalThis<"u"?globalThis:{};function hs(){if(!H.createContext)return{};const e=ps[fs]??=new Map;let t=e.get(H.createContext);return t||(t=H.createContext(null),e.set(H.createContext,t)),t}var te=hs();function Ot(e=te){return function(){return H.useContext(e)}}var jr=Ot();function Dr(e=te){const t=e===te?jr:Ot(e),r=()=>{const{store:n}=t();return n};return Object.assign(r,{withTypes:()=>r}),r}var ms=Dr();function gs(e=te){const t=e===te?ms:Dr(e),r=()=>t().dispatch;return Object.assign(r,{withTypes:()=>r}),r}var ys=gs(),bs=(e,t)=>e===t;function ws(e=te){const t=e===te?jr:Ot(e),r=(n,o={})=>{const{equalityFn:s=bs}=typeof o=="function"?{equalityFn:o}:o,i=t(),{store:c,subscription:a,getServerState:d}=i;H.useRef(!0);const l=H.useCallback({[n.name](g){return n(g)}}[n.name],[n]),u=ds.useSyncExternalStoreWithSelector(a.addNestedSub,c.getState,d||c.getState,l,s);return H.useDebugValue(u),u};return Object.assign(r,{withTypes:()=>r}),r}var vs=ws();const Ss=Rr(e=>{const{routes:t,...r}=e;return r},e=>({...e,routes:[]}),{whitelist:["route"]}),ks=Rr(e=>{const{entries:t,loadedScripts:r,...n}=e;return n},e=>({...e,entries:[],loadedScripts:[]}),{whitelist:["script"]}),Wr={key:"root",storage:qo,transforms:[Ss,ks]},xs=Er(Wr,gt(dt)),P=Xn({reducer:xs,middleware:e=>e({serializableCheck:{ignoredActions:[St,qe,kt,xt,Ct,Et,"route/addRoute","route/updateRoute","route/setRoutes"],ignoredPaths:["route.routes"]}})}),$s=No(P);typeof window<"u"&&(window.__REDUX_STORE__=P);function Gs(e,t){dt[e]=t;const r=Er(Wr,gt(dt));P.replaceReducer(r)}const Cs=ys,W=vs,Ls=e=>P.dispatch(Vo(e)),Us=e=>P.dispatch(Ho(e)),Bs=(e,t)=>P.dispatch(Ko({path:e,updates:t})),Vs=e=>P.getState().route.routes.find(t=>t.path===e),Hs=()=>P.getState().route.routes,Ks=()=>P.dispatch(Xo());function Xs(){const e=W(r=>r.route.routes);console.log(e);const t=ft(()=>{const r=s=>{const i={path:s.path,element:s.element,Component:s.Component};return s.children&&s.children.length>0&&(i.children=s.children.map(c=>r(c))),i},n=e.map(r);return qr([{path:"/",element:Ue(Gr,{}),children:n},{path:"*",element:Ue("div",{children:"404 - Page Not Found"})}])},[e]);return Ue($r,{router:t})}var D=(e=>(e.DISCONNECTED="disconnected",e.CONNECTING="connecting",e.CONNECTED="connected",e.RECONNECTING="reconnecting",e.ERROR="error",e))(D||{});class Q extends Error{constructor(t,r,n){super(t),this.code=r,this.originalError=n,this.name="WebSocketError"}}class Es extends Q{constructor(t){super(`Request ${t} timed out`,"REQUEST_TIMEOUT")}}class tr extends Q{constructor(t,r){super(t,"CONNECTION_ERROR",r)}}class rr extends Q{constructor(t,r){super(t,"MESSAGE_ERROR",r)}}class _s{static handle(t){try{switch(t.type){case"sync":this.handleScriptSync(t);break;case"add":this.handleScriptAdd(t);break;case"delete":this.handleScriptDelete(t);break;case"config:updated":this.handleConfigUpdated(t);break;case"config:batch":this.handleConfigBatch(t);break;case"config:error":this.handleConfigError(t);break;case"schema:updated":this.handleSchemaUpdated(t);break;case"schema:batch":this.handleSchemaBatch(t);break;case"init-data":case"data-update":this.handleSystemMessage(t);break;default:console.warn("[WebSocket] Unknown message type:",t.type)}}catch(r){console.error("[WebSocket] Message handling error:",r)}}static handleScriptSync(t){if(t.data?.key==="entries"){const r=Array.isArray(t.data.value)?t.data.value:[t.data.value];P.dispatch({type:"script/syncEntries",payload:r}),P.dispatch(Ar(r))}}static handleScriptAdd(t){t.data?.key==="entries"&&(P.dispatch({type:"script/addEntry",payload:t.data.value}),P.dispatch(_t(t.data.value)))}static handleScriptDelete(t){t.data?.key==="entries"&&(P.dispatch({type:"script/removeEntry",payload:t.data.value}),P.dispatch(Tr(t.data.value)))}static handleConfigUpdated(t){t.pluginName&&t.data!==void 0&&P.dispatch(es({pluginName:t.pluginName,config:t.data}))}static handleConfigBatch(t){t.data&&P.dispatch(zr(t.data))}static handleConfigError(t){t.pluginName&&t.error&&P.dispatch(ue({pluginName:t.pluginName,error:t.error}))}static handleSchemaUpdated(t){t.pluginName&&t.data!==void 0&&P.dispatch(ts({pluginName:t.pluginName,schema:t.data}))}static handleSchemaBatch(t){t.data&&P.dispatch(Nr(t.data))}static handleSystemMessage(t){}}class Rs{ws=null;config;callbacks;state=D.DISCONNECTED;reconnectAttempts=0;reconnectTimer=null;requestId=0;pendingRequests=new Map;constructor(t={},r={}){this.config={url:this.buildWebSocketUrl(t.url),reconnectInterval:t.reconnectInterval??3e3,maxReconnectAttempts:t.maxReconnectAttempts??10,requestTimeout:t.requestTimeout??1e4},this.callbacks=r}connect(){if(!(this.state===D.CONNECTED||this.state===D.CONNECTING)){this.setState(D.CONNECTING);try{this.ws=new WebSocket(this.config.url),this.attachEventHandlers()}catch(t){this.handleConnectionError(new tr("Failed to create WebSocket",t))}}}disconnect(){this.clearReconnectTimer(),this.clearPendingRequests(),this.ws&&(this.ws.close(),this.ws=null),this.setState(D.DISCONNECTED),P.dispatch(Ye(!1))}send(t){if(!this.isConnected())throw new Q("WebSocket is not connected","NOT_CONNECTED");try{this.ws.send(JSON.stringify(t))}catch(r){throw new rr("Failed to send message",r)}}async sendRequest(t){if(!this.isConnected())throw new Q("WebSocket is not connected","NOT_CONNECTED");return new Promise((r,n)=>{const o=++this.requestId,s={...t,requestId:o},i=setTimeout(()=>{this.pendingRequests.delete(o),n(new Es(o))},this.config.requestTimeout);this.pendingRequests.set(o,{resolve:r,reject:n,timer:i});try{this.ws.send(JSON.stringify(s))}catch(c){this.pendingRequests.delete(o),clearTimeout(i),n(new rr("Failed to send request",c))}})}isConnected(){return this.ws?.readyState===WebSocket.OPEN}getState(){return this.state}async getConfig(t){return this.sendRequest({type:"config:get",pluginName:t})}async setConfig(t,r){await this.sendRequest({type:"config:set",pluginName:t,data:r})}async getSchema(t){return this.sendRequest({type:"schema:get",pluginName:t})}async getAllConfigs(){return this.sendRequest({type:"config:get-all"})}async getAllSchemas(){return this.sendRequest({type:"schema:get-all"})}buildWebSocketUrl(t){if(t)return t;const r=window.location.protocol==="https:"?"wss:":"ws:",n=window.location.host;return`${r}//${n}/server`}setState(t){const r=this.state;this.state=t,console.log(`[WebSocket] State changed: ${r} -> ${t}`)}attachEventHandlers(){this.ws&&(this.ws.onopen=()=>{this.handleConnectionOpen()},this.ws.onmessage=t=>{this.handleMessage(t)},this.ws.onclose=t=>{this.handleConnectionClose(t)},this.ws.onerror=t=>{this.handleConnectionError(new tr("WebSocket error",t))})}handleConnectionOpen(){this.setState(D.CONNECTED),this.reconnectAttempts=0,P.dispatch(Ye(!0)),this.initializeData(),this.callbacks.onConnect?.()}handleMessage(t){try{const r=JSON.parse(t.data);if(r.requestId&&this.pendingRequests.has(r.requestId)){this.handleRequestResponse(r);return}_s.handle(r),this.callbacks.onMessage?.(r)}catch(r){console.error("[WebSocket] Message parsing error:",r)}}handleRequestResponse(t){const{requestId:r}=t,n=this.pendingRequests.get(r);n&&(this.pendingRequests.delete(r),clearTimeout(n.timer),t.error?n.reject(new Q(t.error,"SERVER_ERROR")):n.resolve(t.data))}handleConnectionClose(t){this.ws=null,P.dispatch(Ye(!1)),this.state!==D.DISCONNECTED&&(this.setState(D.RECONNECTING),this.callbacks.onDisconnect?.(),this.scheduleReconnect())}handleConnectionError(t){this.setState(D.ERROR),console.error("[WebSocket] Connection error:",t),this.callbacks.onError?.(t)}scheduleReconnect(){if(this.reconnectAttempts>=this.config.maxReconnectAttempts){console.error("[WebSocket] Max reconnect attempts reached"),this.setState(D.ERROR);return}this.reconnectAttempts++;const t=this.config.reconnectInterval*this.reconnectAttempts;console.log(`[WebSocket] Reconnecting in ${t}ms (attempt ${this.reconnectAttempts}/${this.config.maxReconnectAttempts})`),this.reconnectTimer=setTimeout(()=>{this.state===D.RECONNECTING&&this.connect()},t)}clearReconnectTimer(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)}clearPendingRequests(){for(const[t,{reject:r,timer:n}]of this.pendingRequests)clearTimeout(n),r(new Q("Connection closed","CONNECTION_CLOSED"));this.pendingRequests.clear()}async initializeData(){try{const[t,r]=await Promise.all([this.getAllConfigs().catch(n=>(console.warn("[WebSocket] Failed to load configs:",n),{})),this.getAllSchemas().catch(n=>(console.warn("[WebSocket] Failed to load schemas:",n),{}))]);P.dispatch(zr(t)),P.dispatch(Nr(r))}catch(t){console.error("[WebSocket] Data initialization failed:",t)}}}let Y=null;function ge(){return Y||(Y=new Rs,typeof window<"u"&&Y.connect()),Y}function Os(){Y&&(Y.disconnect(),Y=null)}function Js(){Os()}function Qs(e={}){const{autoConnect:t=!0}=e,r=ge(),n=W(Rt),o=W(g=>g.script?.entries||[]),s=W(g=>g.script?.loadedScripts||[]),i=F(()=>{r.connect()},[r]),c=F(()=>{r.disconnect()},[r]),a=F(g=>{r.send(g)},[r]),d=F(async g=>r.sendRequest(g),[r]),l=F(()=>r.isConnected(),[r]),u=F(()=>r.isConnected()?"connected":"disconnected",[r]);return fe(()=>{t&&!n&&i()},[t,n,i]),{connected:n,entries:o,loadedScripts:s,connect:i,disconnect:c,send:a,sendRequest:d,isConnected:l,getState:u,manager:r}}function Ys(e,t={}){const{autoLoad:r=!0,autoLoadSchema:n=!0}=t,o=Cs(),s=ge(),i=W(m=>ns(m,e)),c=W(m=>os(m,e)),a=W(m=>ss(m,e)),d=W(m=>is(m,e)),l=W(Rt),u=F(async()=>{o(Oe({pluginName:e,loading:!0})),o(ue({pluginName:e,error:null}));try{return await s.getConfig(e)}catch(m){console.log("getConfig",m);const x=m instanceof Error?m.message:"Unknown error";throw o(ue({pluginName:e,error:x})),m}finally{o(Oe({pluginName:e,loading:!1}))}},[e,s,o]),g=F(async m=>{o(Oe({pluginName:e,loading:!0})),o(ue({pluginName:e,error:null}));try{await s.setConfig(e,m)}catch(x){console.log("setConfig",x);const _=x instanceof Error?x.message:"Unknown error";throw o(ue({pluginName:e,error:_})),x}finally{o(Oe({pluginName:e,loading:!1}))}},[e,s,o]),y=F(async()=>{try{return await s.getSchema(e)}catch(m){throw console.error(`Failed to get schema for plugin ${e}:`,m),m}},[e,s]),k=F(async()=>{const m=[];r&&m.push(u()),n&&m.push(y()),await Promise.all(m)},[r,n,u,y]);return fe(()=>{l&&r&&!i&&!a&&u().catch(console.error)},[l,r,i,a,u]),fe(()=>{l&&n&&!c&&y().catch(console.error)},[l,n,c,y]),ft(()=>({config:i,schema:c,loading:a,error:d,connected:l,getConfig:u,setConfig:g,getSchema:y,reload:k}),[i,c,a,d,l,u,g,y,k])}function Zs(){const e=ge(),t=W(as),r=W(cs),n=W(Rt),o=F(async()=>{try{const[s,i]=await Promise.all([e.getAllConfigs(),e.getAllSchemas()]);return{configs:s,schemas:i}}catch(s){throw console.error("Failed to refresh all configs:",s),s}},[e]);return ft(()=>({configs:t,schemas:r,connected:n,refreshAll:o}),[t,r,n,o])}function ei(){const e=ge(),[t,r]=nr(e.getState());return fe(()=>{const o=setInterval(()=>{const s=e.getState();s!==t&&r(s)},1e3);return()=>clearInterval(o)},[e,t]),t}function ti(e,t){const[r,n]=nr([]);return fe(()=>{ge()},[e,t]),r}function ri(...e){return Cn(Lr(e))}export{tr as ConnectionError,D as ConnectionState,Xs as DynamicRouter,si as Link,rr as MessageError,_s as MessageHandler,ii as Outlet,Es as RequestTimeoutError,Q as WebSocketError,Rs as WebSocketManager,Ds as addEntry,Ls as addPage,Gs as addReducer,Vo as addRoute,qs as clearConfigs,Ks as clearPages,Xo as clearRoutes,ri as cn,Os as destroyWebSocketManager,Hs as getAllPages,Vs as getPage,ge as getWebSocketManager,_t as loadScript,Ar as loadScripts,$s as persistor,Fs as removeConfig,Ws as removeEntry,Us as removePage,Ho as removeRoute,Js as resetWebSocketManager,as as selectAllConfigs,cs as selectAllSchemas,ns as selectConfig,Rt as selectConfigConnected,is as selectConfigError,ss as selectConfigLoading,os as selectSchema,zs as setActiveMenu,Ye as setConnected,ue as setError,Oe as setLoading,Ns as setRoutes,Is as setSidebarOpen,P as store,js as syncEntries,Ms as toggleSidebar,Tr as unloadScript,es as updateConfig,zr as updateConfigs,Bs as updatePage,Ko as updateRoute,ts as updateSchema,Nr as updateSchemas,Zs as useAllConfigs,Ys as useConfig,Ys as useConfigLegacy,Cs as useDispatch,ai as useNavigate,ci as useOutlet,li as useParams,W as useSelector,Qs as useWebSocket,ti as useWebSocketMessages,ei as useWebSocketState};
|
package/dist/index.html
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang='en'>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset='UTF-8'>
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Zhin</title>
|
|
7
|
+
|
|
8
|
+
<script type="importmap">
|
|
9
|
+
{
|
|
10
|
+
"imports": {
|
|
11
|
+
"react": "./react.js",
|
|
12
|
+
"react-dom": "./react-dom.js",
|
|
13
|
+
"react-dom/client": "./react-dom-client.js",
|
|
14
|
+
"react-router": "./react-router.js",
|
|
15
|
+
"react/jsx-runtime": "./react-jsx-runtime.js",
|
|
16
|
+
"react/jsx-dev-runtime": "./react-jsx-dev-runtime.js",
|
|
17
|
+
"lucide-react": "./lucide-react.js",
|
|
18
|
+
"radix-ui": "./radix-ui.js",
|
|
19
|
+
"@radix-ui/themes": "./radix-ui-themes.js",
|
|
20
|
+
"@zhin.js/client": "./client.js"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
</script>
|
|
24
|
+
<script type="module" crossorigin src="/index.js"></script>
|
|
25
|
+
<link rel="stylesheet" crossorigin href="/style.css">
|
|
26
|
+
</head>
|
|
27
|
+
<body>
|
|
28
|
+
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
29
|
+
<div id="root"></div>
|
|
30
|
+
</body>
|
|
31
|
+
</html>
|