react-toolkits 2.22.22 → 2.22.27
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 +30 -0
- package/lib/{chunk-XQWJ5ZAA.js → chunk-2MBSA3L6.js} +2 -2
- package/lib/{chunk-XQWJ5ZAA.js.map → chunk-2MBSA3L6.js.map} +1 -1
- package/lib/chunk-AQQVGA3G.js +2 -0
- package/lib/chunk-AQQVGA3G.js.map +1 -0
- package/lib/{chunk-GUZYFAYW.js → chunk-CZVEA2JJ.js} +2 -2
- package/lib/{chunk-GUZYFAYW.js.map → chunk-CZVEA2JJ.js.map} +1 -1
- package/lib/chunk-OLBC35WM.js +3 -0
- package/lib/chunk-OLBC35WM.js.map +1 -0
- package/lib/{chunk-WF6CQ4VD.js → chunk-PRIFREWM.js} +2 -2
- package/lib/{chunk-WF6CQ4VD.js.map → chunk-PRIFREWM.js.map} +1 -1
- package/lib/{chunk-4LG4V23K.js → chunk-TPXP7CV6.js} +2 -2
- package/lib/{chunk-4LG4V23K.js.map → chunk-TPXP7CV6.js.map} +1 -1
- package/lib/chunk-UCD6QQ6P.js +2 -0
- package/lib/{chunk-A32VE3TQ.js.map → chunk-UCD6QQ6P.js.map} +1 -1
- package/lib/{chunk-GD42VZYO.js → chunk-VJ2323FK.js} +2 -2
- package/lib/{chunk-GD42VZYO.js.map → chunk-VJ2323FK.js.map} +1 -1
- package/lib/{chunk-LGVGDPRR.js → chunk-YQM2SZ3L.js} +2 -2
- package/lib/{chunk-LGVGDPRR.js.map → chunk-YQM2SZ3L.js.map} +1 -1
- package/lib/{createMenuItem-STIQZAS2.js → createMenuItem-4NN325FZ.js} +2 -2
- package/lib/{createMenuItem-STIQZAS2.js.map → createMenuItem-4NN325FZ.js.map} +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -1
- package/lib/{menuItemList-FO2YJKSU.js → menuItemList-YQ7GEN7E.js} +2 -2
- package/lib/{menuItemList-FO2YJKSU.js.map → menuItemList-YQ7GEN7E.js.map} +1 -1
- package/lib/{roleDetail-BTJNVKA3.js → roleDetail-SK2DKOBC.js} +2 -2
- package/lib/{roleDetail-BTJNVKA3.js.map → roleDetail-SK2DKOBC.js.map} +1 -1
- package/lib/{roleList-JLF5HIXG.js → roleList-XW5OFLBW.js} +2 -2
- package/lib/{roleList-JLF5HIXG.js.map → roleList-XW5OFLBW.js.map} +1 -1
- package/lib/{updateMenuItem-W62ZGTDH.js → updateMenuItem-CZWG6ZF3.js} +2 -2
- package/lib/{updateMenuItem-W62ZGTDH.js.map → updateMenuItem-CZWG6ZF3.js.map} +1 -1
- package/lib/{userDetail-UNBXTXAK.js → userDetail-QKKXCSJZ.js} +2 -2
- package/lib/{userDetail-UNBXTXAK.js.map → userDetail-QKKXCSJZ.js.map} +1 -1
- package/lib/{userList-PD5SOROE.js → userList-RTKPCUD7.js} +2 -2
- package/lib/{userList-PD5SOROE.js.map → userList-RTKPCUD7.js.map} +1 -1
- package/package.json +3 -3
- package/lib/chunk-A32VE3TQ.js +0 -2
- package/lib/chunk-F6U4XQKJ.js +0 -2
- package/lib/chunk-F6U4XQKJ.js.map +0 -1
- package/lib/chunk-KXTBMJYF.js +0 -3
- package/lib/chunk-KXTBMJYF.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# react-toolkits
|
|
2
2
|
|
|
3
|
+
## 2.22.27
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- b153e15: refactor(react-toolkits): enhance useUpdateUser mutation with permission handling
|
|
8
|
+
|
|
9
|
+
## 2.22.26
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 5b4f144: refactor(react-toolkits): update useKy hook to utilize apiBase from toolkits store
|
|
14
|
+
|
|
15
|
+
## 2.22.25
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- b30c2d0: Release
|
|
20
|
+
|
|
21
|
+
## 2.22.24
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- ea32c92: Trigger publish
|
|
26
|
+
|
|
27
|
+
## 2.22.23
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- f26f246: git add .
|
|
32
|
+
|
|
3
33
|
## 2.22.22
|
|
4
34
|
|
|
5
35
|
### Patch Changes
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {l as l$1,m}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {l as l$1,m}from'./chunk-OLBC35WM.js';import {useQueryClient,useMutation}from'@tanstack/react-query';function y(){let u=l$1(),t=useQueryClient();return useMutation({mutationKey:m.menus.create,mutationFn:n=>u.post("/api/usystem/menu/set",{...n,id:0,is_model:!0}),onSuccess:()=>{t.invalidateQueries({queryKey:m.menus.all}),t.invalidateQueries({queryKey:m.menus.navbar()});}})}function l(){let u=l$1(),t=useQueryClient();return useMutation({mutationKey:m.menus.update,mutationFn:n=>u.post("/api/usystem/menu/set",{...n,is_model:!0}),onSuccess:()=>{t.invalidateQueries({queryKey:m.menus.all}),t.invalidateQueries({queryKey:m.menus.navbar()});}})}function c(){let u=l$1(),t=useQueryClient();return useMutation({mutationKey:m.menus.delete,mutationFn:n=>u.post("/api/usystem/menu/delete",null,{searchParams:{id:n}}),onSuccess:()=>{t.invalidateQueries({queryKey:m.menus.all}),t.invalidateQueries({queryKey:m.menus.navbar()});}})}export{y as a,l as b,c};//# sourceMappingURL=chunk-2MBSA3L6.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-2MBSA3L6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/modules/menu/services/index.ts"],"names":["useCreateMenu","ky","useKy","queryClient","useQueryClient","useMutation","queryKeys","arg","useUpdateMenu","useRemoveMenu","id"],"mappings":"4GAMO,SAASA,GAAgB,CAC9B,IAAMC,CAAKC,CAAAA,GAAAA,GACLC,CAAcC,CAAAA,cAAAA,GAEpB,OAAOC,WAAAA,CAAY,CACjB,WAAaC,CAAAA,CAAAA,CAAU,KAAM,CAAA,MAAA,CAC7B,WAAaC,CAAkCN,EAAAA,CAAAA,CAAG,KAAK,uBAAyB,CAAA,CAAE,GAAGM,CAAK,CAAA,EAAA,CAAI,CAAG,CAAA,QAAA,CAAU,EAAK,CAAC,CAAA,CACjH,UAAW,IAAM,CACfJ,EAAY,iBAAkB,CAAA,CAAE,QAAUG,CAAAA,CAAAA,CAAU,MAAM,GAAI,CAAC,EAC/DH,CAAY,CAAA,iBAAA,CAAkB,CAAE,QAAUG,CAAAA,CAAAA,CAAU,KAAM,CAAA,MAAA,EAAS,CAAC,EACtE,CACF,CAAC,CACH,CAEO,SAASE,CAAAA,EAAgB,CAC9B,IAAMP,EAAKC,GAAM,EAAA,CACXC,EAAcC,cAAe,EAAA,CAEnC,OAAOC,WAAY,CAAA,CACjB,WAAaC,CAAAA,CAAAA,CAAU,MAAM,MAC7B,CAAA,UAAA,CAAaC,GAAsBN,CAAG,CAAA,IAAA,CAAK,wBAAyB,CAAE,GAAGM,CAAK,CAAA,QAAA,CAAU,EAAK,CAAC,CAAA,CAC9F,UAAW,IAAM,CACfJ,EAAY,iBAAkB,CAAA,CAAE,QAAUG,CAAAA,CAAAA,CAAU,MAAM,GAAI,CAAC,EAC/DH,CAAY,CAAA,iBAAA,CAAkB,CAAE,QAAUG,CAAAA,CAAAA,CAAU,KAAM,CAAA,MAAA,EAAS,CAAC,EACtE,CACF,CAAC,CACH,CAEO,SAASG,CAAAA,EAAgB,CAC9B,IAAMR,EAAKC,GAAM,EAAA,CACXC,EAAcC,cAAe,EAAA,CAEnC,OAAOC,WAAY,CAAA,CACjB,WAAaC,CAAAA,CAAAA,CAAU,MAAM,MAC7B,CAAA,UAAA,CAAaI,GAAeT,CAAG,CAAA,IAAA,CAAK,2BAA4B,IAAM,CAAA,CAAE,YAAc,CAAA,CAAE,GAAAS,CAAG,CAAE,CAAC,CAC9F,CAAA,SAAA,CAAW,IAAM,CACfP,CAAAA,CAAY,iBAAkB,CAAA,CAAE,SAAUG,CAAU,CAAA,KAAA,CAAM,GAAI,CAAC,CAAA,CAC/DH,EAAY,iBAAkB,CAAA,CAAE,QAAUG,CAAAA,CAAAA,CAAU,MAAM,MAAO,EAAE,CAAC,EACtE,CACF,CAAC,CACH","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/modules/menu/services/index.ts"],"names":["useCreateMenu","ky","useKy","queryClient","useQueryClient","useMutation","queryKeys","arg","useUpdateMenu","useRemoveMenu","id"],"mappings":"4GAMO,SAASA,GAAgB,CAC9B,IAAMC,CAAKC,CAAAA,GAAAA,GACLC,CAAcC,CAAAA,cAAAA,GAEpB,OAAOC,WAAAA,CAAY,CACjB,WAAaC,CAAAA,CAAAA,CAAU,KAAM,CAAA,MAAA,CAC7B,WAAaC,CAAkCN,EAAAA,CAAAA,CAAG,KAAK,uBAAyB,CAAA,CAAE,GAAGM,CAAK,CAAA,EAAA,CAAI,CAAG,CAAA,QAAA,CAAU,EAAK,CAAC,CAAA,CACjH,UAAW,IAAM,CACfJ,EAAY,iBAAkB,CAAA,CAAE,QAAUG,CAAAA,CAAAA,CAAU,MAAM,GAAI,CAAC,EAC/DH,CAAY,CAAA,iBAAA,CAAkB,CAAE,QAAUG,CAAAA,CAAAA,CAAU,KAAM,CAAA,MAAA,EAAS,CAAC,EACtE,CACF,CAAC,CACH,CAEO,SAASE,CAAAA,EAAgB,CAC9B,IAAMP,EAAKC,GAAM,EAAA,CACXC,EAAcC,cAAe,EAAA,CAEnC,OAAOC,WAAY,CAAA,CACjB,WAAaC,CAAAA,CAAAA,CAAU,MAAM,MAC7B,CAAA,UAAA,CAAaC,GAAsBN,CAAG,CAAA,IAAA,CAAK,wBAAyB,CAAE,GAAGM,CAAK,CAAA,QAAA,CAAU,EAAK,CAAC,CAAA,CAC9F,UAAW,IAAM,CACfJ,EAAY,iBAAkB,CAAA,CAAE,QAAUG,CAAAA,CAAAA,CAAU,MAAM,GAAI,CAAC,EAC/DH,CAAY,CAAA,iBAAA,CAAkB,CAAE,QAAUG,CAAAA,CAAAA,CAAU,KAAM,CAAA,MAAA,EAAS,CAAC,EACtE,CACF,CAAC,CACH,CAEO,SAASG,CAAAA,EAAgB,CAC9B,IAAMR,EAAKC,GAAM,EAAA,CACXC,EAAcC,cAAe,EAAA,CAEnC,OAAOC,WAAY,CAAA,CACjB,WAAaC,CAAAA,CAAAA,CAAU,MAAM,MAC7B,CAAA,UAAA,CAAaI,GAAeT,CAAG,CAAA,IAAA,CAAK,2BAA4B,IAAM,CAAA,CAAE,YAAc,CAAA,CAAE,GAAAS,CAAG,CAAE,CAAC,CAC9F,CAAA,SAAA,CAAW,IAAM,CACfP,CAAAA,CAAY,iBAAkB,CAAA,CAAE,SAAUG,CAAU,CAAA,KAAA,CAAM,GAAI,CAAC,CAAA,CAC/DH,EAAY,iBAAkB,CAAA,CAAE,QAAUG,CAAAA,CAAAA,CAAU,MAAM,MAAO,EAAE,CAAC,EACtE,CACF,CAAC,CACH","file":"chunk-2MBSA3L6.js","sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query'\n\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\nimport type { MenuListItem } from '@/types'\n\nexport function useCreateMenu() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.menus.create,\n mutationFn: (arg: Omit<MenuListItem, 'id'>) => ky.post('/api/usystem/menu/set', { ...arg, id: 0, is_model: true }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.all })\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.navbar() })\n },\n })\n}\n\nexport function useUpdateMenu() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.menus.update,\n mutationFn: (arg: MenuListItem) => ky.post('/api/usystem/menu/set', { ...arg, is_model: true }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.all })\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.navbar() })\n },\n })\n}\n\nexport function useRemoveMenu() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.menus.delete,\n mutationFn: (id: number) => ky.post('/api/usystem/menu/delete', null, { searchParams: { id } }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.all })\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.navbar() })\n },\n })\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {l,m,i,h as h$1}from'./chunk-OLBC35WM.js';import {useQuery,useQueryClient,useMutation}from'@tanstack/react-query';function v(){let e=l();return useQuery({queryKey:m.roles.all,queryFn:()=>e.get("/api/usystem/role/all")})}function K(e){let t=i(n=>n.permissionVersion),i$1=l(),s=t==="v2"?"v2":"v1";return useQuery({queryKey:m.roles.detail(e,s),queryFn:()=>i$1.get(`/api/usystem/role/${s==="v2"?"infoV2":"info"}?name=${e}`)})}function P(){let{permissionVersion:e}=i(n=>n),t=l(),i$1=useQueryClient(),s=e==="v2"?"v2":"v1";return useMutation({mutationKey:m.roles.create(s),mutationFn:({name:n,permissions:u})=>t.post(s==="v2"?"/api/usystem/role/createV2":"/api/usystem/role/create",{name:n,permissions:u}),onSuccess:()=>{i$1.invalidateQueries({queryKey:m.roles.all});}})}function k(){let{permissionVersion:e}=i(n=>n),t=l(),i$1=useQueryClient(),s=e==="v2"?"v2":"v1";return useMutation({mutationKey:m.roles.update(s),mutationFn:({id:n,name:u,permissions:l})=>t.post(s==="v2"?"/api/usystem/role/updateV2":"/api/usystem/role/update",{id:n,name:u,permissions:l}),onSuccess:()=>{i$1.invalidateQueries({queryKey:m.roles.all});}})}function x(){let e=l(),t=useQueryClient();return useMutation({mutationKey:m.roles.delete,mutationFn:({id:i,name:s})=>e.post("/api/usystem/role/delete",{id:i,name:s}),onSuccess:()=>{t.invalidateQueries({queryKey:m.roles.all});}})}function C(){let e=l(),t=useQueryClient();return useMutation({mutationKey:m.users.create,mutationFn:i=>e.post("/api/usystem/user/create",i),onSuccess:()=>{t.invalidateQueries({queryKey:m.users.all});}})}function F(){let e=l(),t=useQueryClient(),{permissionVersion:i$1}=i();return useMutation({mutationKey:m.users.update,mutationFn:s=>{let n=l=>"permissions"in l,u=s;if(n(s)&&i$1==="v4"){let l=s.permissions.map(c=>({game_group:[h$1],game_ids:c.game_ids,role:c.role}));u={...s,permissions:l};}return e.post("/api/usystem/user/update",u)},onSuccess:()=>{t.invalidateQueries({queryKey:m.users.all});}})}function h(){let e=l(),t=useQueryClient();return useMutation({mutationKey:m.users.delete,mutationFn:({id:i,name:s})=>e.post("/api/usystem/user/delete",{id:i,name:s}),onSuccess:()=>{t.invalidateQueries({queryKey:m.users.all});}})}function Q(){let e=l();return useQuery({queryKey:m.permissions.allPermissions,queryFn:()=>e.get("/api/usystem/user/allPermssions")})}function W(){let e=l();return useQuery({queryKey:m.permissions.allPermissionsV2,queryFn:()=>e.get("/api/usystem/user/allPermssionsV2")})}export{v as a,K as b,P as c,k as d,x as e,C as f,F as g,h,Q as i,W as j};//# sourceMappingURL=chunk-AQQVGA3G.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-AQQVGA3G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/permission/services/index.ts"],"names":["useAllRoles","ky","useKy","useQuery","queryKeys","useRole","name","permissionVersion","useToolkitsStore","state","version","useCreateRole","s","queryClient","useQueryClient","useMutation","permissions","useUpdateRole","id","useRemoveRole","useCreateUser","arg","useUpdateUser","hasPermissions","obj","requestData","transformedPermissions","item","WILDCARD","useRemoveUser","useAllPermissions","useAllPermissionsV2"],"mappings":"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","file":"chunk-AQQVGA3G.js","sourcesContent":["import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\n\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { PermissionVersion, WILDCARD } from '@/constants'\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\n\nimport type { PermissionEnumItem, RoleEnumItem, RoleV1, RoleV2 } from '../types'\n\nexport function useAllRoles() {\n const ky = useKy()\n return useQuery({\n queryKey: queryKeys.roles.all,\n queryFn: () => ky.get<RoleEnumItem[]>('/api/usystem/role/all'),\n })\n}\n\nexport function useRole(name: string) {\n const permissionVersion = useToolkitsStore(state => state.permissionVersion)\n const ky = useKy()\n const version = permissionVersion === PermissionVersion.V2 ? 'v2' : 'v1'\n\n return useQuery({\n queryKey: queryKeys.roles.detail(name, version),\n queryFn: () => ky.get<RoleV1 | RoleV2>(`/api/usystem/role/${version === 'v2' ? 'infoV2' : 'info'}?name=${name}`),\n })\n}\n\nexport function useCreateRole() {\n const { permissionVersion } = useToolkitsStore(s => s)\n const ky = useKy()\n const queryClient = useQueryClient()\n const version = permissionVersion === PermissionVersion.V2 ? 'v2' : 'v1'\n\n return useMutation({\n mutationKey: queryKeys.roles.create(version),\n mutationFn: ({ name, permissions }: { name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }) =>\n ky.post(version === 'v2' ? '/api/usystem/role/createV2' : '/api/usystem/role/create', { name, permissions }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.roles.all })\n },\n })\n}\n\nexport function useUpdateRole() {\n const { permissionVersion } = useToolkitsStore(s => s)\n const ky = useKy()\n const queryClient = useQueryClient()\n const version = permissionVersion === PermissionVersion.V2 ? 'v2' : 'v1'\n\n return useMutation({\n mutationKey: queryKeys.roles.update(version),\n mutationFn: ({\n id,\n name,\n permissions,\n }: {\n id: number\n name: string\n permissions: RoleV1['permissions'] | RoleV2['permissions']\n }) =>\n ky.post(version === 'v2' ? '/api/usystem/role/updateV2' : '/api/usystem/role/update', { id, name, permissions }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.roles.all })\n },\n })\n}\n\nexport function useRemoveRole() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.roles.delete,\n mutationFn: ({ id, name }: { id: number; name: string }) => ky.post('/api/usystem/role/delete', { id, name }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.roles.all })\n },\n })\n}\n\nexport function useCreateUser() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.users.create,\n mutationFn: (\n arg:\n | { name: string; roles: string[] }\n | {\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n },\n ) => ky.post('/api/usystem/user/create', arg),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all })\n },\n })\n}\n\ntype UpdateUserWithRoles = { id: string; name: string; roles: string[] }\n\ntype UpdateUserPermission = {\n game_group?: string[]\n game_ids: string[]\n role: string\n}\n\ntype UpdateUserWithPermissions = {\n id: string\n name: string\n permissions: UpdateUserPermission[]\n}\n\nexport function useUpdateUser() {\n const ky = useKy()\n const queryClient = useQueryClient()\n const { permissionVersion } = useToolkitsStore()\n\n return useMutation({\n mutationKey: queryKeys.users.update,\n mutationFn: (arg: UpdateUserWithRoles | UpdateUserWithPermissions) => {\n // 使用类型守卫判断是否包含 permissions\n const hasPermissions = (obj: typeof arg): obj is UpdateUserWithPermissions => 'permissions' in obj\n\n let requestData: UpdateUserWithRoles | UpdateUserWithPermissions = arg\n\n if (hasPermissions(arg) && permissionVersion === PermissionVersion.V4) {\n const transformedPermissions = arg.permissions.map(item => ({\n game_group: [WILDCARD],\n game_ids: item.game_ids,\n role: item.role,\n }))\n requestData = { ...arg, permissions: transformedPermissions }\n }\n\n return ky.post('/api/usystem/user/update', requestData)\n },\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all })\n },\n })\n}\n\nexport function useRemoveUser() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.users.delete,\n mutationFn: ({ id, name }: { id: string; name: string }) => ky.post('/api/usystem/user/delete', { id, name }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all })\n },\n })\n}\n\nexport function useAllPermissions() {\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.permissions.allPermissions,\n queryFn: () => ky.get<PermissionEnumItem[]>('/api/usystem/user/allPermssions'),\n })\n}\n\nexport function useAllPermissionsV2() {\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.permissions.allPermissionsV2,\n queryFn: () => ky.get<PermissionEnumItem[]>('/api/usystem/user/allPermssionsV2'),\n })\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {l,i,m,e}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {l,i,m,e}from'./chunk-OLBC35WM.js';import {useQuery}from'@tanstack/react-query';function K(e,s){let t=l(),{permissionVersion:n}=i(),r=typeof e<"u"?typeof e=="string"?[e]:e:[],y=n!=="v1"?"v2":"v1",{data:o,...c}=useQuery({queryKey:m.permissions.check(r,y),queryFn:()=>t.post(n!=="v1"?"/api/usystem/user/checkV2":"/api/usystem/user/check",{permissions:r},s),enabled:r.length>0,retry:!1}),p=!0;return typeof e=="string"?p=o?.has_all?!0:o?.[e]??!1:Array.isArray(e)&&e.length>0&&(p=r.reduce((g,f)=>(g[f]=o?.has_all?!0:o?.[f]??!1,g),{})),{...c,data:p}}function v(){let{loginPath:e$1,gameId:s}=i(),t=l();return useQuery({queryKey:m.menus.navbar(s?String(s):void 0),queryFn:()=>t.get("/api/usystem/menu/navbar",{headers:{[e]:s?encodeURIComponent(String(s)):"global"}}),enabled:window.location.pathname!==e$1})}var w=()=>{let{gameApiV2:e$1,permissionVersion:s}=i(),t=l();return useQuery({queryKey:m.games.all,queryFn:async()=>{let n={headers:{[e]:"global"}};return e$1?(await t.get("/api/game/list",n))?.list??[]:await t.get("/api/usystem/game/all",n)??[]},enabled:s!=="v1",retry:!1})};export{K as a,v as b,w as c};//# sourceMappingURL=chunk-CZVEA2JJ.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-CZVEA2JJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/services/index.ts"],"names":["usePermission","code","config","ky","useKy","permissionVersion","useToolkitsStore","permissionCodes","version","data","rest","useQuery","queryKeys","newData","acc","curr","useMenuList","loginPath","gameId","APP_ID_HEADER","useGames","gameApiV2","requestConfig"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/services/index.ts"],"names":["usePermission","code","config","ky","useKy","permissionVersion","useToolkitsStore","permissionCodes","version","data","rest","useQuery","queryKeys","newData","acc","curr","useMenuList","loginPath","gameId","APP_ID_HEADER","useGames","gameApiV2","requestConfig"],"mappings":"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","file":"chunk-CZVEA2JJ.js","sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport type { Options as KyOptions } from 'ky'\n\nimport type { Game } from '@/components/layout/types'\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { APP_ID_HEADER, PermissionVersion } from '@/constants'\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\nimport type { MenuListItem } from '@/types'\n\nexport function usePermission(code?: string | string[], config?: KyOptions) {\n const ky = useKy()\n const { permissionVersion } = useToolkitsStore()\n const permissionCodes: string[] = typeof code !== 'undefined' ? (typeof code === 'string' ? [code] : code) : []\n const version = permissionVersion !== PermissionVersion.V1 ? 'v2' : 'v1'\n\n const { data, ...rest } = useQuery({\n queryKey: queryKeys.permissions.check(permissionCodes, version),\n queryFn: () =>\n ky.post<Record<string, boolean> & { has_all?: boolean }>(\n permissionVersion !== PermissionVersion.V1 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check',\n {\n permissions: permissionCodes,\n },\n config,\n ),\n enabled: permissionCodes.length > 0,\n retry: false,\n })\n\n let newData: boolean | Record<string, boolean> = true\n\n if (typeof code === 'string') {\n newData = data?.has_all ? true : (data?.[code] ?? false)\n } else if (Array.isArray(code) && code.length > 0) {\n newData = permissionCodes.reduce<Record<string, boolean>>((acc, curr) => {\n acc[curr] = data?.has_all ? true : (data?.[curr] ?? false)\n return acc\n }, {})\n }\n\n return {\n ...rest,\n data: newData,\n }\n}\n\nexport function useMenuList() {\n const { loginPath, gameId } = useToolkitsStore()\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.menus.navbar(gameId ? String(gameId) : undefined),\n queryFn: () =>\n ky.get<MenuListItem[]>('/api/usystem/menu/navbar', {\n headers: { [APP_ID_HEADER]: gameId ? encodeURIComponent(String(gameId)) : 'global' },\n }),\n enabled: window.location.pathname !== loginPath,\n })\n}\n\nexport const useGames = () => {\n const { gameApiV2, permissionVersion } = useToolkitsStore()\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.games.all,\n queryFn: async () => {\n const requestConfig = {\n headers: {\n [APP_ID_HEADER]: 'global',\n },\n }\n\n if (gameApiV2) {\n const response = await ky.get<{ list: Game[] }>('/api/game/list', requestConfig)\n return response?.list ?? []\n }\n\n const response = await ky.get<Game[]>('/api/usystem/game/all', requestConfig)\n return response ?? []\n },\n enabled: permissionVersion !== PermissionVersion.V1,\n retry: false,\n })\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {create,useStore,createStore}from'zustand';import {App}from'antd';import {createContext,useContext,useMemo,useRef}from'react';import {persist,createJSONStorage}from'zustand/middleware';import {jwtDecode}from'jwt-decode';import {jsx}from'react/jsx-runtime';import ne from'ky';import {useNavigate}from'react-router-dom';function K(){return create((e,t)=>({open:new Map,usedIds:new Set,isOpen:o=>t().open.get(o)??!1,show(o){e({open:new Map(t().open).set(o,!0)});},hide(o){e({open:new Map(t().open).set(o,!1)});},hideAll(){e({open:new Map});},checkUniqueness(o){let{usedIds:a}=t();return !a.has(o)},registerIds(o){let{usedIds:a}=t();return a.has(o)?!1:(e({usedIds:new Set(a).add(o)}),!0)},cleanup(o){let{open:a,usedIds:n}=t(),T=new Map(a),p=new Set(n);T.delete(o),p.delete(o),e({open:T,usedIds:p});}}))}var j=0,H=()=>{let e=Date.now(),t=Math.floor(Math.random()*1e3),o=++j%1e3;return e*1e6+t*1e3+o};var P={getItem:e=>sessionStorage.getItem(e)||localStorage.getItem(e),setItem:(e,t)=>{sessionStorage.setItem(e,t),localStorage.setItem(e,t);},removeItem(e){sessionStorage.removeItem(e),localStorage.removeItem(e);}};var we="https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1",S="App-ID",Ee="/console/",I=(n=>(n.V1="v1",n.V2="v2",n.V3="v3",n.V4="v4",n))(I||{}),Ue="*";var W={global:{noEntitlement:"No permission, please contact the administrator.",name:"Name",creationTime:"Creation Time",operation:"Operation",update:"Update",edit:"Edit",delete:"Delete",selectAll:"Select All",game:"Game",user:"User",role:"Role",username:"Username",password:"Password",label:"Label",method:"Method",route:"Route",request:"Request",response:"Response",add:"Add",signIn:"Sign In",projectGroup:"Project Group",view:"View",back:"Back"},SignIn:{title:"Sign In Method",signInWithIDass:"Sign in with IDass",unregistered:"You are not yet registered on the platform, please contact the administrator",welcome:"Welcome"},NotFound:{subTitle:"The page you visited does not exist",buttonText:"Return to homepage"},FilterFormWrapper:{confirmText:"Search",resetText:"Reset"},FormModal:{confirmText:"Confirm",cancelText:"Cancel"},GameSelect:{label:"Current Game",placeholder:"Please select a game"},RequireGame:{description:"Please select a game"},UserWidget:{signOutText:"Sign Out"},User:{createTitle:"Create User",createSuccessfully:"User created successfully",updateTitle:"Update User",updateSuccessfully:"User updated successfully",deleteTitle:"Delete User",deleteContent:"Are you sure you want to delete user <%= user %>?",deleteSuccessfully:"User deleted successfully"},Role:{createTitle:"Create Role",createSuccessfully:"Role created successfully",updateTitle:"Update Role",updateSuccessfully:"Role updated successfully",deleteTitle:"Delete Role",deleteContent:"Are you sure you want to delete role <%= role %>?",deleteSuccessfully:"Role deleted successfully"},PermissionList:{failedDescription:"Failed to get permission list",baseSectionTitle:"Platform Basic Permissions",gameSectionTitle:"Game Permissions",gameSectionDescription:"Please select a game first",gameSelectPlaceholder:"Please select a game first",removeText:"Remove",addText:"Add Game Permissions"},RoleDetail:{title:"Role Details"},InfiniteList:{loadingText:"Loading...",reachEndText:"You've reached the end",loadMoreText:"Load more"}},v=W;var w=e=>({locale:v,gameApiV2:!1,isGlobal:!1,loginPath:"/sign_in",mainPagePath:"/",permissionVersion:"v1",setContext(t){e(o=>({...o,...t}));}});var E=e=>({setGameId:t=>{e({gameId:t});}});var Y=e=>{if(!e)return null;try{return jwtDecode(e)}catch{return null}},U=e=>({token:void 0,user:null,setToken:t=>{let o=Y(t);e({token:t,user:o});}});var A=e=>createStore()(persist((...t)=>{let[o,,a]=t;return {...U(...t),...E(...t),...w(...t),clear:()=>{let n=a.getInitialState();o(n),a.persist.clearStorage();},...e}},{name:"toolkits",storage:createJSONStorage(()=>P),partialize:t=>({token:t.token,gameId:t.gameId,collapsed:t.collapsed,user:t.user})}));var k=createContext(null);function b(e){let t=useContext(k);if(!t)throw new Error("Missing ToolkitsProvider in the tree");return useStore(t,e||(o=>o))}var q=e=>{let{children:t,...o}=e,a=useRef(),n=useContext(k)?.getState();if(a.current||(a.current=A({...n,...o})),!a.current.getState().loginPath)throw new Error('ToolkitsProvider: \u8BF7\u914D\u7F6E "loginPath"');return jsx(k.Provider,{value:a.current,children:jsx(App,{children:t})})},oe=(e,t)=>{let o=a=>jsx(q,{...t,children:jsx(e,{...a})});return o.displayName=`withContext(${e.displayName||e.name||"Component"})`,o},se=q;var C=[0,1,200],h={OK:200,UNAUTHORIZED:401,FORBIDDEN:403,UNREGISTERED:412},le=3e4;var G=e=>!e||typeof e!="object"?"Unknown error":e.msg||e.message||e.error||"Unknown error",ce=e=>{let{value:t,allowedCodes:o}=e;return t==null||typeof t!="number"?!1:o.includes(t)},ue=(e,t)=>{if(t<h.OK||t>=300)return !1;if(!e||typeof e!="object")return !0;let o=[{field:"code",value:e.code,allowedCodes:C},{field:"status",value:e.status,allowedCodes:C},{field:"errno",value:e.errno,allowedCodes:C}];return o.some(n=>n.value!==void 0&&n.value!==null)?o.every(n=>n.value===void 0||n.value===null||ce(n)):!0},pe=async(e,t)=>{switch(t){case"blob":return e.blob();case"text":return e.text();case"arrayBuffer":return e.arrayBuffer();case"formData":return e.formData();case"json":default:return e.json()}},de=e=>{let{baseURL:t}=e||{},{notification:o}=App.useApp(),a=useNavigate(),{token:n,isGlobal:T,gameId:p,permissionVersion:O,loginPath:y,clear:R,apiBase:N}=b(),F=()=>{R(),a(y);},M=()=>{if(R(),y){let s=new URL(y,window.location.origin);s.searchParams.set("unregistered","true"),a(s.toString());}},_=()=>{o.error({message:"\u8BBF\u95EE\u88AB\u7981\u6B62",description:"\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u8D44\u6E90\u3002"});},B=s=>async(r,i,l)=>{if(s==="blob"||s==="arrayBuffer"||s==="text"||s==="formData")return l;let c;try{c=await l.clone().json();}catch{return l}if(ue(c,l.status)){let f=c.data!==void 0?c.data:c;return new Response(JSON.stringify(f),{status:l.status,statusText:l.statusText,headers:l.headers})}let d=G(c);o.error({message:"Request failed",description:d});let m=new Error(d);throw m.response=l,m.data=c,m},V=(s,r)=>{switch(s){case h.UNAUTHORIZED:F();break;case h.UNREGISTERED:M();break;case h.FORBIDDEN:_();break;default:{let i=G(r)||`HTTP ${s} Error`;o.error({message:"Request failed",description:i});break}}},x=useMemo(()=>ne.create({prefixUrl:t??N,retry:0,timeout:le,headers:{Accept:"application/json","Content-Type":"application/json"},hooks:{beforeRequest:[s=>{n&&s.headers.set("Authorization",`Bearer ${n}`),!s.headers.has(S)&&O!=="v1"&&(T||!p?s.headers.set(S,"global"):s.headers.set(S,encodeURIComponent(String(p))));}],beforeError:[async s=>{let{response:r}=s;if(r){let i=r.status,l;try{let c=r.headers.get("content-type")||"";(c.includes("application/json")||c.startsWith("text/"))&&(l=await r.clone().json());}catch{}V(i,l);}else o.error({message:"Network Error",description:s.message||"Network request failed"});return s}]}}),[t,n,T,p,O,o,y,R]),u=async(s,r,i,l)=>{let{responseType:c,...d}=l||{},m={...d,hooks:{...d.hooks,afterResponse:[...d.hooks?.afterResponse||[],B(c)]}},f;return i?f=await x(r,{method:s,json:i,...m}):f=await x(r,{method:s,...m}),pe(f,c)};return {get:(s,r)=>u("GET",s,void 0,r),post:(s,r,i)=>u("POST",s,r,i),put:(s,r,i)=>u("PUT",s,r,i),delete:(s,r)=>u("DELETE",s,void 0,r),patch:(s,r,i)=>u("PATCH",s,r,i),options:(s,r)=>u("OPTIONS",s,void 0,r),head:(s,r)=>u("HEAD",s,void 0,r),request:s=>{let{url:r,...i}=s;return u(i.method||"GET",r,void 0,i)},instance:x}};var ct={permissions:{check:(e,t)=>["permissions","check",e,t],allPermissions:["permissions","all"],allPermissionsV2:["permissions","allV2"]},users:{all:["users"],detail:e=>["users","detail",e],create:["users","create"],update:["users","update"],delete:["users","delete"]},roles:{all:["roles"],detail:(e,t)=>["roles","detail",e,t],create:e=>["roles","create",e],update:e=>["roles","update",e],delete:["roles","delete"]},menus:{all:["menus"],navbar:e=>["menus","navbar",e],detail:e=>["menus","detail",e],create:["menus","create"],update:["menus","update"],delete:["menus","delete"]},enums:{gameGroups:["enums","gameGroups"],gameIds:e=>["enums","gameIds",e]},games:{all:["games","all"]}};
|
|
2
|
+
export{K as a,H as b,P as c,we as d,S as e,Ee as f,I as g,Ue as h,b as i,oe as j,se as k,de as l,ct as m};//# sourceMappingURL=chunk-OLBC35WM.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-OLBC35WM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/createVisibilityStore.ts","../src/utils/generateId.ts","../src/utils/mixedStorage.ts","../src/constants/index.ts","../src/locale/en_GB.ts","../src/stores/context.ts","../src/stores/game.ts","../src/stores/token.ts","../src/stores/index.ts","../src/components/toolkitsProvider/ToolkitsProvider.tsx","../src/libs/ky.ts","../src/queryKeys.ts"],"names":["createVisibilityStore","create","set","get","uuid","usedIds","open","newOpen","newUsedIds","globalCounter","generateId","timestamp","random","counter","mixedStorage","name","value","SSO_URL","APP_ID_HEADER","FRONTEND_ROUTE_PREFIX","PermissionVersion","WILDCARD","locale","en_GB_default","createContextSlice","state","prev","createGameSlice","id","decodeToken","token","jwtDecode","createTokenSlice","user","createToolkitsStore","initProps","createStore","persist","args","store","initialState","createJSONStorage","ToolkitsContext","createContext","useToolkitsStore","selector","useContext","useStore","ToolkitsProvider","props","children","restProps","storeRef","useRef","parentState","jsx","App","withContext","Component","providerProps","WrappedComponent","ToolkitsProvider_default","SUCCESS_RESPONSE_CODES","HTTP_STATUS","REQUEST_TIMEOUT","extractErrorMessage","data","isStatusCodeSuccess","config","allowedCodes","isSuccessResponse","status","statusChecks","processResponseByType","response","responseType","useKy","baseURL","notification","navigate","useNavigate","isGlobal","gameId","permissionVersion","loginPath","clear","apiBase","handleUnauthorized","handleUnregistered","url","handleForbidden","createResponseHandler","_request","_options","responseData","errorMessage","error","handleHttpStatusError","instance","useMemo","ky","request","contentType","makeRequest","method","requestOptions","kyOptions","finalOptions","options","requestOpts","queryKeys","permissions","version","gameGroups"],"mappings":"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","file":"chunk-OLBC35WM.js","sourcesContent":["import { create } from 'zustand'\n\nexport interface VisibilityState {\n open: Map<number, boolean>\n usedIds: Set<number>\n isOpen: (uuid: number) => boolean\n show: (uuid: number) => void\n hide: (uuid: number) => void\n hideAll: () => void\n checkUniqueness: (uuid: number) => boolean\n registerIds: (uuid: number) => boolean\n cleanup: (uuid: number) => void\n}\n\n/**\n * 创建一个可见性管理的 Zustand store\n * 用于管理 Modal、Drawer 等组件的显示/隐藏状态\n * 每次调用都会创建一个独立的 store 实例,确保不同组件间的状态隔离\n */\nexport function createVisibilityStore() {\n return create<VisibilityState>((set, get) => ({\n open: new Map(),\n usedIds: new Set(),\n isOpen: uuid => get().open.get(uuid) ?? false,\n show(uuid) {\n set({\n open: new Map(get().open).set(uuid, true),\n })\n },\n hide(uuid) {\n set({ open: new Map(get().open).set(uuid, false) })\n },\n hideAll() {\n set({ open: new Map() })\n },\n checkUniqueness(uuid) {\n const { usedIds } = get()\n return !usedIds.has(uuid)\n },\n registerIds(uuid) {\n const { usedIds } = get()\n if (usedIds.has(uuid)) {\n return false // ID 已被使用\n }\n set({ usedIds: new Set(usedIds).add(uuid) })\n return true // 注册成功\n },\n cleanup(uuid) {\n const { open, usedIds } = get()\n const newOpen = new Map(open)\n const newUsedIds = new Set(usedIds)\n newOpen.delete(uuid)\n newUsedIds.delete(uuid)\n set({ open: newOpen, usedIds: newUsedIds })\n },\n }))\n}\n","/**\n * 生成唯一 ID 的函数\n * 使用时间戳 + 随机数 + 计数器的组合来确保唯一性\n */\nlet globalCounter = 0\n\nexport const generateId = (): number => {\n const timestamp = Date.now()\n const random = Math.floor(Math.random() * 1000)\n const counter = ++globalCounter % 1000\n\n // 组合:时间戳(毫秒) * 1000000 + 随机数 * 1000 + 计数器\n // 这样可以确保即使在同一毫秒内生成多个ID也不会重复\n return timestamp * 1000000 + random * 1000 + counter\n}\n","import type { StateStorage } from 'zustand/middleware'\n\n// 通过 SessionStorage 隔离数据,防止多开页面时的数据冲突。\n// 当 SessionStorage 不存在时,使用 LocalStorage。\nexport const mixedStorage: StateStorage = {\n getItem: (name: string): string | null => {\n return sessionStorage.getItem(name) || localStorage.getItem(name)\n },\n setItem: (name: string, value: string) => {\n sessionStorage.setItem(name, value)\n localStorage.setItem(name, value)\n },\n removeItem(name: string) {\n sessionStorage.removeItem(name)\n localStorage.removeItem(name)\n },\n}\n","export const SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\n\nexport const APP_ID_HEADER = 'App-ID'\n\nexport const FRONTEND_ROUTE_PREFIX = '/console/'\n\nexport enum PermissionVersion {\n V1 = 'v1',\n V2 = 'v2',\n V3 = 'v3',\n V4 = 'v4',\n}\n\nexport const WILDCARD = '*'\n","import type { Locale } from '.'\n\nconst locale: Locale = {\n global: {\n noEntitlement: 'No permission, please contact the administrator.',\n name: 'Name',\n creationTime: 'Creation Time',\n operation: 'Operation',\n update: 'Update',\n edit: 'Edit',\n delete: 'Delete',\n selectAll: 'Select All',\n game: 'Game',\n user: 'User',\n role: 'Role',\n username: 'Username',\n password: 'Password',\n label: 'Label',\n method: 'Method',\n route: 'Route',\n request: 'Request',\n response: 'Response',\n add: 'Add',\n signIn: 'Sign In',\n projectGroup: 'Project Group',\n view: 'View',\n back: 'Back',\n },\n SignIn: {\n title: 'Sign In Method',\n signInWithIDass: 'Sign in with IDass',\n unregistered: 'You are not yet registered on the platform, please contact the administrator',\n welcome: 'Welcome',\n },\n NotFound: {\n subTitle: 'The page you visited does not exist',\n buttonText: 'Return to homepage',\n },\n FilterFormWrapper: {\n confirmText: 'Search',\n resetText: 'Reset',\n },\n FormModal: {\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n },\n GameSelect: {\n label: 'Current Game',\n placeholder: 'Please select a game',\n },\n RequireGame: {\n description: 'Please select a game',\n },\n UserWidget: {\n signOutText: 'Sign Out',\n },\n User: {\n createTitle: 'Create User',\n createSuccessfully: 'User created successfully',\n updateTitle: 'Update User',\n updateSuccessfully: 'User updated successfully',\n deleteTitle: 'Delete User',\n deleteContent: 'Are you sure you want to delete user <%= user %>?',\n deleteSuccessfully: 'User deleted successfully',\n },\n Role: {\n createTitle: 'Create Role',\n createSuccessfully: 'Role created successfully',\n updateTitle: 'Update Role',\n updateSuccessfully: 'Role updated successfully',\n deleteTitle: 'Delete Role',\n deleteContent: 'Are you sure you want to delete role <%= role %>?',\n deleteSuccessfully: 'Role deleted successfully',\n },\n PermissionList: {\n failedDescription: 'Failed to get permission list',\n baseSectionTitle: 'Platform Basic Permissions',\n gameSectionTitle: 'Game Permissions',\n gameSectionDescription: 'Please select a game first',\n gameSelectPlaceholder: 'Please select a game first',\n removeText: 'Remove',\n addText: 'Add Game Permissions',\n },\n RoleDetail: {\n title: 'Role Details',\n },\n InfiniteList: {\n loadingText: 'Loading...',\n reachEndText: \"You've reached the end\",\n loadMoreText: 'Load more',\n },\n}\n\nexport default locale\n","// import type { AxiosInterceptorManager, AxiosResponse, InternalAxiosRequestConfig } from 'axios'\nimport type { StateCreator } from 'zustand'\n\nimport { PermissionVersion } from '@/constants'\nimport type { Locale } from '@/locale'\nimport enGb from '@/locale/en_GB'\n\nexport interface ContextSlice {\n locale: Locale\n permissionVersion: PermissionVersion // 权限版本\n gameApiV2: boolean\n loginPath: string // 登录页路径\n isGlobal: boolean // 为 true 时,APP-ID header 为 'global',否则为当前的游戏的 id。\n navWidth?: number // 侧边栏宽度\n collapsed?: boolean\n collapsible?: boolean // 菜单是否可折叠\n mainPagePath: string // 首页地址\n setContext(state: Partial<Omit<ContextSlice, 'setContext'>>): void\n apiBase?: string //\n}\n\nexport const createContextSlice: StateCreator<ContextSlice, [], [], ContextSlice> = set => ({\n locale: enGb,\n gameApiV2: false,\n isGlobal: false,\n loginPath: '/sign_in',\n mainPagePath: '/',\n permissionVersion: PermissionVersion.V1,\n setContext(state) {\n set(prev => ({ ...prev, ...state }))\n },\n})\n","import type { StateCreator } from 'zustand'\n\nexport interface GameSlice {\n gameId?: string | number\n setGameId: (id?: string | number) => void\n}\n\nexport const createGameSlice: StateCreator<GameSlice, [], [], GameSlice> = set => ({\n setGameId: id => {\n set({ gameId: id })\n },\n})\n","import { jwtDecode } from 'jwt-decode'\nimport type { StateCreator } from 'zustand'\n\n/**\n * JWT Token 解码后的用户信息\n */\nexport interface UserInfo {\n authorityId: string\n exp: number\n}\n\nexport interface TokenSlice {\n /** JWT Token */\n token?: string\n user: UserInfo | null\n setToken: (token: string) => void\n}\n\nconst decodeToken = (token?: string): UserInfo | null => {\n if (!token) return null\n\n try {\n return jwtDecode<UserInfo>(token)\n } catch {\n return null\n }\n}\n\nexport const createTokenSlice: StateCreator<TokenSlice, [], []> = set => ({\n token: undefined,\n user: null,\n setToken: token => {\n const user = decodeToken(token)\n set({ token, user })\n },\n})\n","import { createStore } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\n\nimport { mixedStorage } from '@/utils'\n\nimport { type ContextSlice, createContextSlice } from './context'\nimport type { GameSlice } from './game'\nimport { createGameSlice } from './game'\nimport type { TokenSlice } from './token'\nimport { createTokenSlice } from './token'\n\nexport type ToolkitsState = TokenSlice &\n GameSlice &\n ContextSlice & {\n clear: () => void\n }\n\nexport const createToolkitsStore = (initProps?: Partial<ContextSlice>) => {\n return createStore<ToolkitsState>()(\n persist(\n (...args) => {\n const [set, , store] = args\n return {\n ...createTokenSlice(...args),\n ...createGameSlice(...args),\n ...createContextSlice(...args),\n clear: () => {\n const initialState = store.getInitialState()\n set(initialState)\n store.persist.clearStorage()\n },\n ...initProps,\n }\n },\n {\n name: 'toolkits',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({\n token: state.token,\n gameId: state.gameId,\n collapsed: state.collapsed,\n user: state.user,\n }),\n },\n ),\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { App } from 'antd'\nimport type { ComponentType, FC, PropsWithChildren } from 'react'\nimport { createContext, useContext, useRef } from 'react'\nimport { useStore } from 'zustand'\n\nimport type { ToolkitsState } from '@/stores'\nimport { createToolkitsStore } from '@/stores'\nimport type { ContextSlice } from '@/stores/context'\n\ntype ToolkitsStore = ReturnType<typeof createToolkitsStore>\n\nconst ToolkitsContext = createContext<ToolkitsStore | null>(null)\n\n// 重载函数签名:支持有 selector 和无 selector 两种调用方式\nexport function useToolkitsStore(): ToolkitsState\nexport function useToolkitsStore<T>(selector: (state: ToolkitsState) => T): T\nexport function useToolkitsStore<T>(selector?: (state: ToolkitsState) => T): T | ToolkitsState {\n const store = useContext(ToolkitsContext)\n if (!store) throw new Error('Missing ToolkitsProvider in the tree')\n\n // 总是调用 useStore,根据是否有 selector 决定使用什么选择器\n return useStore(store, selector || ((state: ToolkitsState) => state as T))\n}\n\nexport type ToolkitsProviderProps = PropsWithChildren<Partial<Omit<ContextSlice, 'setContext'>>>\n\nconst ToolkitsProvider: FC<ToolkitsProviderProps> = props => {\n const { children, ...restProps } = props\n const storeRef = useRef<ToolkitsStore>()\n const parentState = useContext(ToolkitsContext)?.getState()\n\n if (!storeRef.current) {\n storeRef.current = createToolkitsStore({ ...parentState, ...restProps })\n }\n\n if (!storeRef.current.getState().loginPath) {\n throw new Error('ToolkitsProvider: 请配置 \"loginPath\"')\n }\n\n return (\n <ToolkitsContext.Provider value={storeRef.current}>\n <App>{children}</App>\n </ToolkitsContext.Provider>\n )\n}\n\nexport const withContext = (Component: ComponentType, providerProps: Omit<ToolkitsProviderProps, 'children'>) => {\n const WrappedComponent = (props: any) => {\n return (\n <ToolkitsProvider {...providerProps}>\n <Component {...props} />\n </ToolkitsProvider>\n )\n }\n\n WrappedComponent.displayName = `withContext(${Component.displayName || Component.name || 'Component'})`\n\n return WrappedComponent\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ToolkitsProvider.displayName = 'ToolkitsProvider'\n}\n\nexport default ToolkitsProvider\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { App } from 'antd'\nimport ky, { type KyInstance, type Options as KyOptions } from 'ky'\nimport { useMemo } from 'react'\nimport { useNavigate } from 'react-router-dom'\n\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { APP_ID_HEADER, PermissionVersion } from '@/constants'\n\n// 响应成功状态码常量\nconst SUCCESS_RESPONSE_CODES = [0, 1, 200] as const\n\n// HTTP 状态码常量\nconst HTTP_STATUS = {\n OK: 200,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n UNREGISTERED: 412,\n} as const\n\n// 请求超时时间(毫秒)\nconst REQUEST_TIMEOUT = 30000\n\n// 成功响应状态码字段类型\ntype StatusField = 'code' | 'status' | 'errno'\n\n// 状态码检查配置\ninterface StatusCheckConfig {\n field: StatusField\n value: unknown\n allowedCodes: readonly number[]\n}\n\n// 响应类型枚举\nexport enum ResponseType {\n JSON = 'json',\n BLOB = 'blob',\n TEXT = 'text',\n ARRAY_BUFFER = 'arrayBuffer',\n FORM_DATA = 'formData',\n}\n\n// 通用请求选项接口\ninterface RequestOptions extends KyOptions {\n responseType?: ResponseType\n}\n\n// useKy Hook 配置选项\nexport interface UseKyOptions {\n baseURL?: string\n}\n\n// HTTP客户端方法接口 - 支持泛型响应类型\ninterface KyMethods {\n get: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n post: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>\n put: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>\n delete: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n patch: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>\n options: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n head: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n request: <T = any>(options: RequestOptions & { url: string }) => Promise<T>\n instance: KyInstance\n}\n\n// 错误消息提取工具函数\nconst extractErrorMessage = (data: any): string => {\n if (!data || typeof data !== 'object') {\n return 'Unknown error'\n }\n\n return data.msg || data.message || data.error || 'Unknown error'\n}\n\n/**\n * 检查单个状态码字段是否成功\n * @param config 状态码检查配置\n * @returns 是否成功\n */\nconst isStatusCodeSuccess = (config: StatusCheckConfig): boolean => {\n const { value, allowedCodes } = config\n\n if (value === undefined || value === null) {\n return false\n }\n\n if (typeof value !== 'number') {\n return false\n }\n\n return allowedCodes.includes(value)\n}\n\n/**\n * 判断响应是否成功\n * @param data 响应数据\n * @param status HTTP状态码\n * @returns 是否成功\n */\nconst isSuccessResponse = (data: any, status: number): boolean => {\n // 如果HTTP状态码不在2xx范围,直接返回失败\n if (status < HTTP_STATUS.OK || status >= 300) {\n return false\n }\n\n // 如果没有响应数据或不是对象,认为成功(可能是空响应)\n if (!data || typeof data !== 'object') {\n return true\n }\n\n // 定义状态码检查配置\n const statusChecks: StatusCheckConfig[] = [\n { field: 'code', value: data.code, allowedCodes: SUCCESS_RESPONSE_CODES },\n { field: 'status', value: data.status, allowedCodes: SUCCESS_RESPONSE_CODES },\n { field: 'errno', value: data.errno, allowedCodes: SUCCESS_RESPONSE_CODES },\n ]\n\n // 检查是否有任何业务状态码字段存在且表示成功\n const hasBusinessStatusCode = statusChecks.some(config => config.value !== undefined && config.value !== null)\n\n // 如果存在业务状态码字段,则必须检查它们是否都表示成功\n if (hasBusinessStatusCode) {\n return statusChecks.every(\n config => config.value === undefined || config.value === null || isStatusCodeSuccess(config),\n )\n }\n\n // 如果没有业务状态码字段,HTTP 2xx 就认为成功\n return true\n}\n\n/**\n * 根据响应类型处理响应数据\n * @param response 响应对象\n * @param responseType 响应类型\n * @returns 处理后的响应数据\n */\nconst processResponseByType = async (response: Response, responseType?: ResponseType): Promise<any> => {\n switch (responseType) {\n case ResponseType.BLOB:\n return response.blob()\n case ResponseType.TEXT:\n return response.text()\n case ResponseType.ARRAY_BUFFER:\n return response.arrayBuffer()\n case ResponseType.FORM_DATA:\n return response.formData()\n case ResponseType.JSON:\n default:\n return response.json()\n }\n}\n\n/**\n * HTTP客户端Hook (基于 Ky) - 内部使用版本\n * @param config 配置选项\n * @returns HTTP客户端方法集合\n */\nexport const useKy = (config?: UseKyOptions): KyMethods => {\n const { baseURL } = config || {}\n const { notification } = App.useApp()\n const navigate = useNavigate()\n\n // 获取工具包状态\n const { token, isGlobal, gameId, permissionVersion, loginPath, clear, apiBase } = useToolkitsStore()\n\n // 处理未授权错误\n const handleUnauthorized = () => {\n clear()\n navigate(loginPath)\n }\n\n // 处理未注册错误\n const handleUnregistered = () => {\n clear()\n if (loginPath) {\n // 添加未注册参数到登录页 URL\n const url = new URL(loginPath, window.location.origin)\n url.searchParams.set('unregistered', 'true')\n navigate(url.toString())\n }\n }\n\n // 处理禁止访问错误\n const handleForbidden = () => {\n notification.error({\n message: '访问被禁止',\n description: '您没有权限访问此资源。',\n })\n }\n\n // 创建响应处理函数\n const createResponseHandler = (responseType?: ResponseType) => {\n return async (_request: any, _options: any, response: Response): Promise<Response> => {\n // 非 JSON 类型直接交由调用方按响应类型读取\n if (\n responseType === ResponseType.BLOB ||\n responseType === ResponseType.ARRAY_BUFFER ||\n responseType === ResponseType.TEXT ||\n responseType === ResponseType.FORM_DATA\n ) {\n return response\n }\n\n // 默认 JSON\n let data: any\n try {\n data = await response.clone().json()\n } catch {\n // 非 JSON 或空响应体,直接返回原响应\n return response\n }\n\n if (isSuccessResponse(data, response.status)) {\n const responseData = data.data !== undefined ? data.data : data\n return new Response(JSON.stringify(responseData), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n })\n }\n\n const errorMessage = extractErrorMessage(data)\n\n notification.error({\n message: 'Request failed',\n description: errorMessage,\n })\n\n const error = new Error(errorMessage)\n ;(error as any).response = response\n ;(error as any).data = data\n throw error\n }\n }\n\n // 处理HTTP状态码错误\n const handleHttpStatusError = (status: number, data: any) => {\n switch (status) {\n case HTTP_STATUS.UNAUTHORIZED:\n handleUnauthorized()\n break\n\n case HTTP_STATUS.UNREGISTERED:\n handleUnregistered()\n break\n\n case HTTP_STATUS.FORBIDDEN:\n handleForbidden()\n break\n\n default: {\n // 安全地提取错误消息\n const errorMessage = extractErrorMessage(data) || `HTTP ${status} Error`\n notification.error({\n message: 'Request failed',\n description: errorMessage,\n })\n break\n }\n }\n }\n\n // 创建ky实例\n const instance = useMemo(() => {\n return ky.create({\n prefixUrl: baseURL ?? apiBase,\n retry: 0,\n timeout: REQUEST_TIMEOUT,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n hooks: {\n beforeRequest: [\n request => {\n // 设置认证 headers\n if (token) {\n request.headers.set('Authorization', `Bearer ${token}`)\n }\n\n // 设置应用 ID headers\n if (!request.headers.has(APP_ID_HEADER) && permissionVersion !== PermissionVersion.V1) {\n if (isGlobal || !gameId) {\n request.headers.set(APP_ID_HEADER, 'global')\n } else {\n // 对 gameId 进行 URL 编码以避免非 ASCII 字符导致的 XMLHttpRequest 错误\n request.headers.set(APP_ID_HEADER, encodeURIComponent(String(gameId)))\n }\n }\n },\n ],\n beforeError: [\n async error => {\n const { response } = error\n\n if (response) {\n const status = response.status\n let data: any\n\n try {\n const contentType = response.headers.get('content-type') || ''\n if (contentType.includes('application/json') || contentType.startsWith('text/')) {\n data = await response.clone().json()\n }\n } catch {\n // 忽略 JSON 解析错误\n }\n\n handleHttpStatusError(status, data)\n } else {\n // 网络错误或请求超时等情况\n notification.error({\n message: 'Network Error',\n description: error.message || 'Network request failed',\n })\n }\n\n return error\n },\n ],\n },\n })\n }, [baseURL, token, isGlobal, gameId, permissionVersion, notification, loginPath, clear])\n\n // 通用请求处理函数\n const makeRequest = async <T = any>(\n method: string,\n url: string,\n data?: any,\n requestOptions?: RequestOptions,\n ): Promise<T> => {\n const { responseType, ...kyOptions } = requestOptions || {}\n\n // 创建带有响应类型处理器的请求选项\n const finalOptions: KyOptions = {\n ...kyOptions,\n hooks: {\n ...kyOptions.hooks,\n afterResponse: [...(kyOptions.hooks?.afterResponse || []), createResponseHandler(responseType)],\n },\n }\n\n let response: Response\n\n if (data) {\n response = await instance(url, { method, json: data, ...finalOptions })\n } else {\n response = await instance(url, { method, ...finalOptions })\n }\n\n // 根据响应类型返回相应数据\n return processResponseByType(response, responseType)\n }\n\n // HTTP方法\n const get = <T = any>(url: string, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('GET', url, undefined, options)\n }\n\n const post = <T = any>(url: string, data?: any, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('POST', url, data, options)\n }\n\n const put = <T = any>(url: string, data?: any, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('PUT', url, data, options)\n }\n\n const del = <T = any>(url: string, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('DELETE', url, undefined, options)\n }\n\n const patch = <T = any>(url: string, data?: any, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('PATCH', url, data, options)\n }\n\n const options = <T = any>(url: string, requestOptions?: RequestOptions): Promise<T> => {\n return makeRequest<T>('OPTIONS', url, undefined, requestOptions)\n }\n\n const head = <T = any>(url: string, requestOptions?: RequestOptions): Promise<T> => {\n return makeRequest<T>('HEAD', url, undefined, requestOptions)\n }\n\n const request = <T = any>(requestOptions: RequestOptions & { url: string }): Promise<T> => {\n const { url, ...requestOpts } = requestOptions\n return makeRequest<T>(requestOpts.method || 'GET', url, undefined, requestOpts)\n }\n\n return {\n get,\n post,\n put,\n delete: del,\n patch,\n options,\n head,\n request,\n instance,\n }\n}\n","// 查询键工厂 - 使用简单的对象和函数来生成查询键\nexport const queryKeys = {\n // 权限相关\n permissions: {\n check: (permissions: string[], version: 'v1' | 'v2') => ['permissions', 'check', permissions, version] as const,\n allPermissions: ['permissions', 'all'] as const,\n allPermissionsV2: ['permissions', 'allV2'] as const,\n },\n // 用户相关\n users: {\n all: ['users'] as const,\n detail: (id: string) => ['users', 'detail', id] as const,\n create: ['users', 'create'] as const,\n update: ['users', 'update'] as const,\n delete: ['users', 'delete'] as const,\n },\n // 角色相关\n roles: {\n all: ['roles'] as const,\n detail: (name: string, version: 'v1' | 'v2') => ['roles', 'detail', name, version] as const,\n create: (version: 'v1' | 'v2') => ['roles', 'create', version] as const,\n update: (version: 'v1' | 'v2') => ['roles', 'update', version] as const,\n delete: ['roles', 'delete'] as const,\n },\n // 菜单相关\n menus: {\n all: ['menus'] as const,\n navbar: (gameId?: string) => ['menus', 'navbar', gameId] as const,\n detail: (id: number) => ['menus', 'detail', id] as const,\n create: ['menus', 'create'] as const,\n update: ['menus', 'update'] as const,\n delete: ['menus', 'delete'] as const,\n },\n // 枚举相关\n enums: {\n gameGroups: ['enums', 'gameGroups'] as const,\n gameIds: (gameGroups: string[]) => ['enums', 'gameIds', gameGroups] as const,\n },\n // 游戏相关\n games: {\n all: ['games', 'all'] as const,\n },\n}\n\nexport type QueryKeys = typeof queryKeys\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a as a$1,f,g}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a as a$1,f,g}from'./chunk-AQQVGA3G.js';import {d}from'./chunk-YQM2SZ3L.js';import {a}from'./chunk-UCD6QQ6P.js';import {i,l,m,h}from'./chunk-OLBC35WM.js';import {MinusCircleOutlined}from'@ant-design/icons';import {useQuery}from'@tanstack/react-query';import {App,Form,Input,Select,Row,Col,Empty,Button,Typography}from'antd';import {last,first}from'lodash-es';import {Fragment as Fragment$1}from'react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';var {Text:A}=Typography,K=(r,t)=>{last(r)===h?t?.([h]):first(r)===h?t?.(r.slice(1)):t?.(r);},Y=r=>{let{onChange:t,...l$1}=r,s=l(),{data:g,isLoading:p}=useQuery({queryKey:m.enums.gameGroups,queryFn:()=>s.get("/api/enum/get?enum=game_group&type=all")}),d=[{label:"\u901A\u7528",value:h}].concat(g?.map(a=>({label:a,value:a}))??[]);return jsx(Select,{...l$1,allowClear:!0,showSearch:!0,mode:"tags",optionFilterProp:"label",loading:p,options:d,onChange:a=>K(a,t)})},k=r=>{let{groups:t,onChange:l$1,...s}=r,g=l(),{permissionVersion:p}=i(),d=p==="v3",a=p==="v4",{data:c,isLoading:h}=useQuery({queryKey:m.enums.gameIds(a?[]:t??[]),queryFn:()=>g.get(`/api/enum/game_group/get_game_ids${a?"":`?game_groups=${t?.join(",")}`}`).then(o=>o?.list),enabled:a||d&&!!t?.length}),y=c?.map(o=>({label:o.name,value:o.id}));return jsx(Select,{...s,allowClear:!0,showSearch:!0,optionFilterProp:"label",mode:"tags",loading:h,options:y,onChange:o=>K(o,l$1)})},de=({mode:r,onSuccess:t})=>{let{message:l}=App.useApp(),{t:s}=a(),{data:g$1,isLoading:p}=a$1(),d$1=f(),a$2=g(),c=r==="create",h=s(c?"User.createTitle":"User.updateTitle"),y=jsxs(Fragment,{children:[jsx(Form.Item,{label:s("global.name"),name:"name",rules:[{required:!0}],children:jsx(Input,{disabled:!c})}),jsx(Form.Item,{label:s("global.role"),name:"roles",children:jsx(Select,{allowClear:!0,showSearch:!0,mode:"multiple",loading:p,optionFilterProp:"label",options:g$1?.map(C=>({label:C.name,value:C.name}))})})]});return d({title:h,width:"600px",formProps:{autoComplete:"off",labelCol:{flex:"80px"}},content:y,onConfirm:async(C,L)=>{c?(await d$1.mutateAsync(C),l.success(s("User.createSuccessfully"))):(await a$2.mutateAsync({...C,id:L?.id}),l.success(s("User.updateSuccessfully"))),t?.();}})},Ce=({mode:r,onSuccess:t})=>{let{message:l}=App.useApp(),{t:s}=a(),{data:g$1,isLoading:p}=a$1(),d$1=f(),a$2=g(),c=r==="create",h=s(c?"User.createTitle":"User.updateTitle"),{permissionVersion:y}=i(),o=y==="v3",C=jsxs(Fragment,{children:[jsx(Form.Item,{label:s("global.name"),name:"name",rules:[{required:!0}],children:jsx(Input,{disabled:!c})}),jsx(Form.List,{name:"permissions",children:(F,{add:U,remove:B})=>jsxs(Row,{gutter:8,children:[o&&jsx(Col,{span:8,className:"text-center mb-4",children:jsx(A,{strong:!0,children:s("global.projectGroup")})}),jsx(Col,{span:o?10:14,className:"text-center mb-4",children:jsx(A,{strong:!0,children:s("global.game")})}),jsx(Col,{span:o?6:10,className:"text-center mb-4",children:jsx(A,{strong:!0,children:s("global.role")})}),F.map(n=>jsxs(Fragment$1,{children:[o&&jsx(Col,{span:8,children:jsx(Form.Item,{noStyle:!0,shouldUpdate:!0,children:({setFieldValue:i})=>jsx(Form.Item,{name:[n.name,"game_group"],children:jsx(Y,{onChange:()=>{i(["permissions",n.name,"game_ids"],[]);}})})})}),jsx(Col,{span:o?10:14,children:o?jsx(Form.Item,{noStyle:!0,shouldUpdate:(i,f)=>i.permissions[n.name]?.game_group!==f.permissions[n.name]?.game_group,children:({getFieldValue:i})=>{let f=i(["permissions",n.name,"game_group"]);return jsx(Form.Item,{name:[n.name,"game_ids"],dependencies:[["permissions",n.name,"game_group"]],rules:[{required:!!f?.length,message:"\u8BF7\u9009\u62E9\u6E38\u620F"}],children:jsx(k,{groups:f})})}}):jsx(Form.Item,{name:[n.name,"game_ids"],rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u6E38\u620F"}],children:jsx(k,{})})}),jsx(Col,{span:o?6:10,children:jsxs("div",{className:"flex",children:[jsx("div",{className:"flex-1",children:jsx(Form.Item,{name:[n.name,"role"],rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u89D2\u8272"},({getFieldValue:i})=>({validator(f,D){return i("permissions").filter((v,E)=>!!v&&E!==n.name).some(v=>v.role===D)?Promise.reject(new Error("\u8BF7\u52FF\u91CD\u590D\u9009\u62E9\u89D2\u8272")):Promise.resolve()}})],children:jsx(Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",loading:p,options:g$1?.map(i=>({label:i.name,value:i.name}))})})}),jsx("div",{className:"w-8 text-center",children:jsx(Form.Item,{children:jsx(MinusCircleOutlined,{onClick:()=>{B(n.name);}})})})]})})]},n.key)),F.length===0&&jsx(Col,{span:24,children:jsx(Empty,{className:"mb-6"})}),jsx(Col,{span:24,children:jsx(Button,{block:!0,type:"dashed",onClick:()=>U(),children:s("global.add")})})]})})]});return d({title:h,width:"1000px",formProps:{autoComplete:"off",labelCol:{flex:"80px"}},content:C,onConfirm:async(F,U)=>{c?(await d$1.mutateAsync(F),l.success(s("User.createSuccessfully"))):(await a$2.mutateAsync({...F,id:U?.id}),l.success(s("User.updateSuccessfully"))),t?.();}})};export{de as a,Ce as b};//# sourceMappingURL=chunk-PRIFREWM.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-PRIFREWM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/modules/permission/hooks/user-hooks.tsx"],"names":["Text","Typography","handleWildcardSelection","value","onChange","last","WILDCARD","first","GroupSelect","props","rest","ky","useKy","data","isLoading","useQuery","queryKeys","options","group","jsx","Select","GameSelect","groups","permissionVersion","useToolkitsStore","isV3","isV4","response","useUserModal","mode","onSuccess","message","App","t","useTranslation","roles","isRolesLoading","useAllRoles","create","useCreateUser","update","useUpdateUser","isCreateMode","title","content","jsxs","Fragment","Form","Input","role","useFormModal","values","extraValues","useUserModalV2","fields","add","remove","Row","Col","field","setFieldValue","prevValues","nextValues","getFieldValue","_groups","_rule","item","index","MinusCircleOutlined","Empty","Button"],"mappings":"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","file":"chunk-WF6CQ4VD.js","sourcesContent":["import { MinusCircleOutlined } from '@ant-design/icons'\nimport { useQuery } from '@tanstack/react-query'\nimport { App, Button, Col, Empty, Form, Input, Row, Select, Typography } from 'antd'\nimport { first, last } from 'lodash-es'\nimport { Fragment } from 'react'\nimport { type FC } from 'react'\n\nimport { useToolkitsStore } from '@/components'\nimport { PermissionVersion, WILDCARD } from '@/constants'\nimport { useFormModal } from '@/hooks/modal'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { queryKeys } from '@/queryKeys'\n\nimport { useAllRoles, useCreateUser, useUpdateUser } from '../services'\n\nconst { Text } = Typography\n\n/**\n * 处理通配符选择逻辑\n * - 如果最后选择的是通配符,则只保留通配符\n * - 如果第一个是通配符但又选择了其他项,则移除通配符\n */\nconst handleWildcardSelection = (value: string[], onChange?: (value: string[]) => void) => {\n if (last(value) === WILDCARD) {\n onChange?.([WILDCARD])\n } else if (first(value) === WILDCARD) {\n onChange?.(value.slice(1))\n } else {\n onChange?.(value)\n }\n}\n\ninterface GroupSelectProps {\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nconst GroupSelect: FC<GroupSelectProps> = props => {\n const { onChange, ...rest } = props\n const ky = useKy()\n\n const { data, isLoading } = useQuery({\n queryKey: queryKeys.enums.gameGroups,\n queryFn: () => ky.get<string[]>('/api/enum/get?enum=game_group&type=all'),\n })\n\n const options = [{ label: '通用', value: WILDCARD }].concat(\n data?.map(group => ({ label: group, value: group })) ?? [],\n )\n\n return (\n <Select\n {...rest}\n allowClear\n showSearch\n mode=\"tags\"\n optionFilterProp=\"label\"\n loading={isLoading}\n options={options}\n onChange={value => handleWildcardSelection(value, onChange)}\n />\n )\n}\n\ninterface GameSelectProps {\n groups?: string[]\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\n/**\n * 游戏选择组件\n * - V3: 依赖 groups 参数,需要先选择项目组才能加载游戏列表\n * - V4: 不依赖 groups,直接加载所有游戏列表\n */\nconst GameSelect: FC<GameSelectProps> = props => {\n const { groups, onChange, ...rest } = props\n const ky = useKy()\n const { permissionVersion } = useToolkitsStore()\n const isV3 = permissionVersion === PermissionVersion.V3\n const isV4 = permissionVersion === PermissionVersion.V4\n\n const { data, isLoading } = useQuery({\n queryKey: queryKeys.enums.gameIds(isV4 ? [] : (groups ?? [])),\n queryFn: () =>\n ky\n .get<{\n list: {\n id: string\n name: string\n }[]\n }>(`/api/enum/game_group/get_game_ids${isV4 ? '' : `?game_groups=${groups?.join(',')}`}`)\n .then(response => response?.list),\n enabled: isV4 || (isV3 && !!groups?.length),\n })\n\n const options = data?.map((group: { id: string; name: string }) => ({ label: group.name, value: group.id }))\n\n return (\n <Select\n {...rest}\n allowClear\n showSearch\n optionFilterProp=\"label\"\n mode=\"tags\"\n loading={isLoading}\n options={options}\n onChange={value => handleWildcardSelection(value, onChange)}\n />\n )\n}\n\ninterface UserModalFormSchema {\n name: string\n roles: string[]\n}\n\nexport const useUserModal = ({ mode, onSuccess }: { mode: 'create' | 'update'; onSuccess?: () => void }) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { data: roles, isLoading: isRolesLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n\n const isCreateMode = mode === 'create'\n\n const title = isCreateMode ? t('User.createTitle') : t('User.updateTitle')\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreateMode} />\n </Form.Item>\n <Form.Item label={t('global.role')} name=\"roles\">\n <Select\n allowClear\n showSearch\n mode=\"multiple\"\n loading={isRolesLoading}\n optionFilterProp=\"label\"\n options={roles?.map(role => ({ label: role.name, value: role.name }))}\n />\n </Form.Item>\n </>\n )\n\n const onConfirm = async (values: UserModalFormSchema, extraValues: { id: string }) => {\n if (isCreateMode) {\n await create.mutateAsync(values)\n message.success(t('User.createSuccessfully'))\n } else {\n await update.mutateAsync({ ...values, id: extraValues?.id })\n message.success(t('User.updateSuccessfully'))\n }\n onSuccess?.()\n }\n\n return useFormModal<UserModalFormSchema, { id: string }>({\n title,\n width: '600px',\n formProps: {\n autoComplete: 'off',\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n\ninterface UserModalV2FormSchema {\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n}\n\n/**\n * 用户弹窗 V2 版本(用于 V3 和 V4 权限系统)\n * - V3: 显示项目组选择,游戏列表依赖项目组\n * - V4: 隐藏项目组选择,游戏列表独立加载\n */\nexport const useUserModalV2 = ({ mode, onSuccess }: { mode: 'create' | 'update'; onSuccess?: () => void }) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { data: roles, isLoading: isRolesLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n const isCreateMode = mode === 'create'\n const title = isCreateMode ? t('User.createTitle') : t('User.updateTitle')\n const { permissionVersion } = useToolkitsStore()\n const isV3 = permissionVersion === PermissionVersion.V3\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreateMode} />\n </Form.Item>\n <Form.List name=\"permissions\">\n {(fields, { add, remove }) => (\n <Row gutter={8}>\n {isV3 && (\n <Col span={8} className=\"text-center mb-4\">\n <Text strong>{t('global.projectGroup')}</Text>\n </Col>\n )}\n <Col span={isV3 ? 10 : 14} className=\"text-center mb-4\">\n <Text strong>{t('global.game')}</Text>\n </Col>\n <Col span={isV3 ? 6 : 10} className=\"text-center mb-4\">\n <Text strong>{t('global.role')}</Text>\n </Col>\n {fields.map(field => (\n <Fragment key={field.key}>\n {isV3 && (\n <Col span={8}>\n <Form.Item noStyle shouldUpdate>\n {({ setFieldValue }) => (\n <Form.Item name={[field.name, 'game_group']}>\n <GroupSelect\n onChange={() => {\n setFieldValue(['permissions', field.name, 'game_ids'], [])\n }}\n />\n </Form.Item>\n )}\n </Form.Item>\n </Col>\n )}\n <Col span={isV3 ? 10 : 14}>\n {isV3 ? (\n <Form.Item\n noStyle\n shouldUpdate={(prevValues, nextValues) =>\n prevValues.permissions[field.name]?.game_group !==\n nextValues.permissions[field.name]?.game_group\n }\n >\n {({ getFieldValue }) => {\n const _groups = getFieldValue(['permissions', field.name, 'game_group'])\n\n return (\n <Form.Item\n name={[field.name, 'game_ids']}\n dependencies={[['permissions', field.name, 'game_group']]}\n rules={[{ required: !!_groups?.length, message: '请选择游戏' }]}\n >\n <GameSelect groups={_groups} />\n </Form.Item>\n )\n }}\n </Form.Item>\n ) : (\n <Form.Item name={[field.name, 'game_ids']} rules={[{ required: true, message: '请选择游戏' }]}>\n <GameSelect />\n </Form.Item>\n )}\n </Col>\n <Col span={isV3 ? 6 : 10}>\n <div className=\"flex\">\n <div className=\"flex-1\">\n <Form.Item\n name={[field.name, 'role']}\n rules={[\n { required: true, message: '请选择角色' },\n ({ getFieldValue }) => ({\n validator(_rule, value) {\n const items = getFieldValue('permissions') as UserModalV2FormSchema['permissions']\n const otherItems = items.filter((item, index) => !!item && index !== field.name)\n if (otherItems.some(item => item.role === value)) {\n return Promise.reject(new Error('请勿重复选择角色'))\n }\n return Promise.resolve()\n },\n }),\n ]}\n >\n <Select\n allowClear\n showSearch\n optionFilterProp=\"label\"\n loading={isRolesLoading}\n options={roles?.map(role => ({ label: role.name, value: role.name }))}\n />\n </Form.Item>\n </div>\n <div className=\"w-8 text-center\">\n <Form.Item>\n <MinusCircleOutlined\n onClick={() => {\n remove(field.name)\n }}\n />\n </Form.Item>\n </div>\n </div>\n </Col>\n </Fragment>\n ))}\n {fields.length === 0 && (\n <Col span={24}>\n <Empty className=\"mb-6\" />\n </Col>\n )}\n <Col span={24}>\n <Button block type=\"dashed\" onClick={() => add()}>\n {t('global.add')}\n </Button>\n </Col>\n </Row>\n )}\n </Form.List>\n </>\n )\n\n const onConfirm = async (values: UserModalV2FormSchema, extraValues: { id: string }) => {\n if (isCreateMode) {\n await create.mutateAsync(values)\n message.success(t('User.createSuccessfully'))\n } else {\n await update.mutateAsync({ ...values, id: extraValues?.id })\n message.success(t('User.updateSuccessfully'))\n }\n onSuccess?.()\n }\n\n return useFormModal<UserModalV2FormSchema, { id: string }>({\n title,\n width: '1000px',\n formProps: {\n autoComplete: 'off',\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/modules/permission/hooks/user-hooks.tsx"],"names":["Text","Typography","handleWildcardSelection","value","onChange","last","WILDCARD","first","GroupSelect","props","rest","ky","useKy","data","isLoading","useQuery","queryKeys","options","group","jsx","Select","GameSelect","groups","permissionVersion","useToolkitsStore","isV3","isV4","response","useUserModal","mode","onSuccess","message","App","t","useTranslation","roles","isRolesLoading","useAllRoles","create","useCreateUser","update","useUpdateUser","isCreateMode","title","content","jsxs","Fragment","Form","Input","role","useFormModal","values","extraValues","useUserModalV2","fields","add","remove","Row","Col","field","setFieldValue","prevValues","nextValues","getFieldValue","_groups","_rule","item","index","MinusCircleOutlined","Empty","Button"],"mappings":"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","file":"chunk-PRIFREWM.js","sourcesContent":["import { MinusCircleOutlined } from '@ant-design/icons'\nimport { useQuery } from '@tanstack/react-query'\nimport { App, Button, Col, Empty, Form, Input, Row, Select, Typography } from 'antd'\nimport { first, last } from 'lodash-es'\nimport { Fragment } from 'react'\nimport { type FC } from 'react'\n\nimport { useToolkitsStore } from '@/components'\nimport { PermissionVersion, WILDCARD } from '@/constants'\nimport { useFormModal } from '@/hooks/modal'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { queryKeys } from '@/queryKeys'\n\nimport { useAllRoles, useCreateUser, useUpdateUser } from '../services'\n\nconst { Text } = Typography\n\n/**\n * 处理通配符选择逻辑\n * - 如果最后选择的是通配符,则只保留通配符\n * - 如果第一个是通配符但又选择了其他项,则移除通配符\n */\nconst handleWildcardSelection = (value: string[], onChange?: (value: string[]) => void) => {\n if (last(value) === WILDCARD) {\n onChange?.([WILDCARD])\n } else if (first(value) === WILDCARD) {\n onChange?.(value.slice(1))\n } else {\n onChange?.(value)\n }\n}\n\ninterface GroupSelectProps {\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nconst GroupSelect: FC<GroupSelectProps> = props => {\n const { onChange, ...rest } = props\n const ky = useKy()\n\n const { data, isLoading } = useQuery({\n queryKey: queryKeys.enums.gameGroups,\n queryFn: () => ky.get<string[]>('/api/enum/get?enum=game_group&type=all'),\n })\n\n const options = [{ label: '通用', value: WILDCARD }].concat(\n data?.map(group => ({ label: group, value: group })) ?? [],\n )\n\n return (\n <Select\n {...rest}\n allowClear\n showSearch\n mode=\"tags\"\n optionFilterProp=\"label\"\n loading={isLoading}\n options={options}\n onChange={value => handleWildcardSelection(value, onChange)}\n />\n )\n}\n\ninterface GameSelectProps {\n groups?: string[]\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\n/**\n * 游戏选择组件\n * - V3: 依赖 groups 参数,需要先选择项目组才能加载游戏列表\n * - V4: 不依赖 groups,直接加载所有游戏列表\n */\nconst GameSelect: FC<GameSelectProps> = props => {\n const { groups, onChange, ...rest } = props\n const ky = useKy()\n const { permissionVersion } = useToolkitsStore()\n const isV3 = permissionVersion === PermissionVersion.V3\n const isV4 = permissionVersion === PermissionVersion.V4\n\n const { data, isLoading } = useQuery({\n queryKey: queryKeys.enums.gameIds(isV4 ? [] : (groups ?? [])),\n queryFn: () =>\n ky\n .get<{\n list: {\n id: string\n name: string\n }[]\n }>(`/api/enum/game_group/get_game_ids${isV4 ? '' : `?game_groups=${groups?.join(',')}`}`)\n .then(response => response?.list),\n enabled: isV4 || (isV3 && !!groups?.length),\n })\n\n const options = data?.map((group: { id: string; name: string }) => ({ label: group.name, value: group.id }))\n\n return (\n <Select\n {...rest}\n allowClear\n showSearch\n optionFilterProp=\"label\"\n mode=\"tags\"\n loading={isLoading}\n options={options}\n onChange={value => handleWildcardSelection(value, onChange)}\n />\n )\n}\n\ninterface UserModalFormSchema {\n name: string\n roles: string[]\n}\n\nexport const useUserModal = ({ mode, onSuccess }: { mode: 'create' | 'update'; onSuccess?: () => void }) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { data: roles, isLoading: isRolesLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n\n const isCreateMode = mode === 'create'\n\n const title = isCreateMode ? t('User.createTitle') : t('User.updateTitle')\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreateMode} />\n </Form.Item>\n <Form.Item label={t('global.role')} name=\"roles\">\n <Select\n allowClear\n showSearch\n mode=\"multiple\"\n loading={isRolesLoading}\n optionFilterProp=\"label\"\n options={roles?.map(role => ({ label: role.name, value: role.name }))}\n />\n </Form.Item>\n </>\n )\n\n const onConfirm = async (values: UserModalFormSchema, extraValues: { id: string }) => {\n if (isCreateMode) {\n await create.mutateAsync(values)\n message.success(t('User.createSuccessfully'))\n } else {\n await update.mutateAsync({ ...values, id: extraValues?.id })\n message.success(t('User.updateSuccessfully'))\n }\n onSuccess?.()\n }\n\n return useFormModal<UserModalFormSchema, { id: string }>({\n title,\n width: '600px',\n formProps: {\n autoComplete: 'off',\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n\ninterface UserModalV2FormSchema {\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n}\n\n/**\n * 用户弹窗 V2 版本(用于 V3 和 V4 权限系统)\n * - V3: 显示项目组选择,游戏列表依赖项目组\n * - V4: 隐藏项目组选择,游戏列表独立加载\n */\nexport const useUserModalV2 = ({ mode, onSuccess }: { mode: 'create' | 'update'; onSuccess?: () => void }) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { data: roles, isLoading: isRolesLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n const isCreateMode = mode === 'create'\n const title = isCreateMode ? t('User.createTitle') : t('User.updateTitle')\n const { permissionVersion } = useToolkitsStore()\n const isV3 = permissionVersion === PermissionVersion.V3\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreateMode} />\n </Form.Item>\n <Form.List name=\"permissions\">\n {(fields, { add, remove }) => (\n <Row gutter={8}>\n {isV3 && (\n <Col span={8} className=\"text-center mb-4\">\n <Text strong>{t('global.projectGroup')}</Text>\n </Col>\n )}\n <Col span={isV3 ? 10 : 14} className=\"text-center mb-4\">\n <Text strong>{t('global.game')}</Text>\n </Col>\n <Col span={isV3 ? 6 : 10} className=\"text-center mb-4\">\n <Text strong>{t('global.role')}</Text>\n </Col>\n {fields.map(field => (\n <Fragment key={field.key}>\n {isV3 && (\n <Col span={8}>\n <Form.Item noStyle shouldUpdate>\n {({ setFieldValue }) => (\n <Form.Item name={[field.name, 'game_group']}>\n <GroupSelect\n onChange={() => {\n setFieldValue(['permissions', field.name, 'game_ids'], [])\n }}\n />\n </Form.Item>\n )}\n </Form.Item>\n </Col>\n )}\n <Col span={isV3 ? 10 : 14}>\n {isV3 ? (\n <Form.Item\n noStyle\n shouldUpdate={(prevValues, nextValues) =>\n prevValues.permissions[field.name]?.game_group !==\n nextValues.permissions[field.name]?.game_group\n }\n >\n {({ getFieldValue }) => {\n const _groups = getFieldValue(['permissions', field.name, 'game_group'])\n\n return (\n <Form.Item\n name={[field.name, 'game_ids']}\n dependencies={[['permissions', field.name, 'game_group']]}\n rules={[{ required: !!_groups?.length, message: '请选择游戏' }]}\n >\n <GameSelect groups={_groups} />\n </Form.Item>\n )\n }}\n </Form.Item>\n ) : (\n <Form.Item name={[field.name, 'game_ids']} rules={[{ required: true, message: '请选择游戏' }]}>\n <GameSelect />\n </Form.Item>\n )}\n </Col>\n <Col span={isV3 ? 6 : 10}>\n <div className=\"flex\">\n <div className=\"flex-1\">\n <Form.Item\n name={[field.name, 'role']}\n rules={[\n { required: true, message: '请选择角色' },\n ({ getFieldValue }) => ({\n validator(_rule, value) {\n const items = getFieldValue('permissions') as UserModalV2FormSchema['permissions']\n const otherItems = items.filter((item, index) => !!item && index !== field.name)\n if (otherItems.some(item => item.role === value)) {\n return Promise.reject(new Error('请勿重复选择角色'))\n }\n return Promise.resolve()\n },\n }),\n ]}\n >\n <Select\n allowClear\n showSearch\n optionFilterProp=\"label\"\n loading={isRolesLoading}\n options={roles?.map(role => ({ label: role.name, value: role.name }))}\n />\n </Form.Item>\n </div>\n <div className=\"w-8 text-center\">\n <Form.Item>\n <MinusCircleOutlined\n onClick={() => {\n remove(field.name)\n }}\n />\n </Form.Item>\n </div>\n </div>\n </Col>\n </Fragment>\n ))}\n {fields.length === 0 && (\n <Col span={24}>\n <Empty className=\"mb-6\" />\n </Col>\n )}\n <Col span={24}>\n <Button block type=\"dashed\" onClick={() => add()}>\n {t('global.add')}\n </Button>\n </Col>\n </Row>\n )}\n </Form.List>\n </>\n )\n\n const onConfirm = async (values: UserModalV2FormSchema, extraValues: { id: string }) => {\n if (isCreateMode) {\n await create.mutateAsync(values)\n message.success(t('User.createSuccessfully'))\n } else {\n await update.mutateAsync({ ...values, id: extraValues?.id })\n message.success(t('User.updateSuccessfully'))\n }\n onSuccess?.()\n }\n\n return useFormModal<UserModalV2FormSchema, { id: string }>({\n title,\n width: '1000px',\n formProps: {\n autoComplete: 'off',\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a}from'./chunk-UCD6QQ6P.js';import {a as a$1}from'./chunk-CZVEA2JJ.js';import {l}from'./chunk-OLBC35WM.js';import {Form,Spin,Table,Result,theme,Space,Button}from'antd';import {forwardRef,useMemo,useRef,useState,useEffect,useCallback,cloneElement,useImperativeHandle,Fragment}from'react';import {jsx,jsxs}from'react/jsx-runtime';import {flushSync}from'react-dom';import {createRoot}from'react-dom/client';import {isEqual}from'lodash-es';import {create}from'zustand';import {devtools,subscribeWithSelector}from'zustand/middleware';import {useQuery}from'@tanstack/react-query';var Oe=d=>{let{extras:i,isConfirming:e,onConfirm:o,onReset:t,children:a$1,buttonsAlign:r="left",showReset:l}=d,{t:u}=a(),{token:{colorFillAlter:b,lineWidth:P,lineType:m,colorBorder:A,borderRadiusLG:O}}=theme.useToken();return jsx("div",{style:{maxWidth:"none",background:b,borderWidth:P,borderStyle:m,borderColor:A,borderRadius:O,padding:24,marginBottom:24},children:jsxs("div",{className:`flex ${r==="bottom"?"flex-col":"flex-row"}`,children:[jsx("div",{className:`${r==="left"?"flex-grow-0":"flex-1"}`,children:a$1}),jsx("div",{className:`${r==="bottom"?"text-end":"text-start"} ml-4`,children:jsxs(Space,{children:[jsx(Button,{type:"primary",disabled:e,onClick:o,children:u("FilterFormWrapper.confirmText")}),i?.map(F=>jsx(Fragment,{children:F.children},F.key)),l&&jsx(Button,{onClick:t,children:u("FilterFormWrapper.resetText")})]})})]})})},j=Oe;var We=d=>{let i=/(<[^>]*>)/;return d.split(i).filter(e=>e!=="")};function je(d){let i=document.createElement("div"),e=createRoot(i);return new Promise(o=>{setTimeout(()=>{flushSync(()=>{e.render(d);}),o(i.innerHTML);});})}var ke=d=>{let{texts:i,children:e}=d,[o,t]=useState("");return useEffect(()=>{je(e).then(a=>{let r=We(a);for(let l of i)for(let u=0;u<r.length;u++)r[u]=r[u].replace(String(l),`<span style='color: #DC143C;'>${l}</span>`);t(r.join(""));});},[e,i]),jsx("div",{dangerouslySetInnerHTML:{__html:o}})},ze=ke;var ie=Object.freeze({page:1,size:10,filters:Object.freeze({})}),Ue=()=>create()(devtools(subscribeWithSelector((d,i)=>({instances:new Map,registerInstance(e,o,t,a){d(r=>{let l=r.instances.get(e);if(l){if(l.refetch!==a){let P={...l,refetch:a},m=new Map(r.instances);return m.set(e,P),{instances:m}}return r}let u={id:e,url:o,queryKey:t,payload:ie,refetch:a},b=new Map(r.instances);return b.set(e,u),{instances:b}});},unregisterInstance(e){d(o=>{let t=new Map(o.instances);return t.delete(e)?{instances:t}:o});},updatePayload(e,o){d(t=>{let a=t.instances.get(e);if(!a)return t;let r={...a.payload,...o};if(!isEqual(a.payload,r)){let l={...a,payload:r},u=new Map(t.instances);return u.set(e,l),{instances:u}}return t});},getPayload(e){return i().instances.get(e)?.payload??ie},async refetch(e,o){let t=i().instances.get(e);if(!t){console.warn(`QueryList instance with id "${e}" not found`);return}let a=!1;if(o){let r=t.payload,l={...r,...o};isEqual(r,l)||(i().updatePayload(e,o),a=!0);}if(!a)try{await t.refetch();}catch(r){throw console.error(`Failed to refetch QueryList instance "${e}":`,r),r}},getInstance(e){return i().instances.get(e)},getAllInstances(){return Array.from(i().instances.values())}})),{name:"query-list-store"})),$e=Ue(),f=$e;var pe=(t=>(t[t.Confirm=0]="Confirm",t[t.Reset=1]="Reset",t[t.Jump=2]="Jump",t[t.Init=3]="Init",t))(pe||{}),st=5*60*1e3,ot=30*1e3,ue=["GET","HEAD"],de=["POST","PUT","PATCH","DELETE"],at={display:"flex",justifyContent:"center",alignItems:"center",height:300},it=0,ct=()=>`queryList_${Date.now()}_${++it}`,lt=(d,i)=>{let{t:e}=a(),{form:o,identifier:t,code:a$2,onePage:r,buttonsAlign:l$1,showReset:u,defaultSize:b=10,refreshInterval:P=0,tableExtra:m,renderForm:A,afterSuccess:O,afterError:_,footer:F,pageSizeOptions:N,request:V,dataAdapter:B,...fe}=d,[s]=Form.useForm(o),p=useMemo(()=>t||ct(),[t]),x=useRef(3),{data:D,isLoading:me}=a$1(a$2),[ye,L]=useState(!1),H=useRef(!1),q=useRef(!1),ge=f(n=>n.getPayload(p)),he=l(),{page:Q,size:R=b,filters:g}=ge,be=typeof V=="function"?V({page:Q,size:R,filters:g}):V,{url:E,method:K="GET",body:Le,searchParams:Ie,headers:Pe,cacheTime:Fe=st,staleTime:xe=ot}=be,S=K.toUpperCase();[...ue,...de].includes(S)||console.warn(`QueryList: \u4E0D\u652F\u6301\u7684 HTTP \u8BF7\u6C42\u65B9\u6CD5 "${K}"\uFF0C\u5C06\u4F7F\u7528 GET \u65B9\u6CD5`);let Qe=ue.includes(S),Re=de.includes(S),U={...g,...!r&&{page:Q,size:R}},h=Le||(Re?U:void 0),$=Ie||U,G=Pe,Y=useRef(!1),J=["queryList",E,p,S,Q,R,g,h,$,G],{data:y,isLoading:X,refetch:M}=useQuery({queryKey:J,queryFn:async()=>{try{let n={method:S,searchParams:$,headers:G};h&&!Qe&&(h instanceof FormData||typeof h=="string"?n.body=h:n.json=h);let c=await he.request({url:E,...n});return Y.current=!0,O?.(x.current,s,c),c}catch(n){let c=n instanceof Error?n:new Error(String(n));throw _?.(c,x.current,s),c}},retry:(n,c)=>!(n>=3||c?.message?.includes("401")),retryDelay:n=>Math.min(1e3*2**n,3e4),refetchOnWindowFocus:!1,refetchInterval:Y.current?P:0,gcTime:Fe,staleTime:xe,enabled:D&&ye}),Z=useMemo(()=>{let n=B,c={total:y?.total,items:y?.list};return typeof n=="function"?{...c,...n(y)}:{...c,...n}},[B,y]);useEffect(()=>(f.getState().registerInstance(p,E,J,M),()=>{f.getState().unregisterInstance(p);}),[p,E]);let W=Z.items,ee=Z.total,Se=useMemo(()=>r?!1:{pageSizeOptions:N,showSizeChanger:!0,showQuickJumper:!0,current:Q,pageSize:R,total:ee,onChange:async(n,c)=>{x.current=2,f.getState().refetch(p,{page:n,size:c});}},[r,N,Q,R,ee,p]),te=useCallback(async()=>{x.current=0;try{await s.validateFields(),L(!0),f.getState().refetch(p,{page:1,filters:s.getFieldsValue()});}catch{L(!1);}},[s,p]),Te=useCallback(async()=>{x.current=1,s.resetFields();try{await s.validateFields({validateOnly:!0}),L(!0),f.getState().refetch(p,{page:1,filters:s.getFieldsValue()});}catch{L(!1);}},[s,p]),Ae=typeof A=="function"?jsx(j,{showReset:u,buttonsAlign:l$1,isConfirming:X,onReset:Te,onConfirm:te,children:cloneElement(A(s),{onKeyUp:n=>{n.key==="Enter"&&te();}})}):jsx(Form,{form:s}),De=typeof m=="function"?m(s,y):m,Ee=F?()=>F(y):void 0;return useEffect(()=>{if(!H.current||q.current)return;let n=s.getFieldsValue();g&&!isEqual(n,g)&&(q.current=!0,s.setFieldsValue(g),setTimeout(()=>{q.current=!1;},0));},[g,s]),useEffect(()=>{if(!D||H.current)return;let n=async()=>{console.log("QueryList init starting");try{s.resetFields();let C=await s.validateFields({validateOnly:!0});console.log("QueryList init validation success:",C),f.getState().updatePayload(p,{page:1,filters:C}),L(!0),console.log("QueryList init completed, isValid set to true");}catch(C){console.log("QueryList init validation failed:",C),L(!1);}finally{H.current=!0;}},c=requestAnimationFrame(()=>{Promise.resolve().then(n);});return ()=>{c&&cancelAnimationFrame(c);}},[D,p,s]),useImperativeHandle(i,()=>({data:y,dataSource:W,form:s,refetch:M}),[y,W,s,M]),me?jsx(Spin,{style:at}):D?jsxs("div",{children:[Ae,De,jsx(Table,{...fe,dataSource:W,loading:X,pagination:Se,footer:Ee})]}):jsx(Result,{status:403,subTitle:e("global.noEntitlement")})},ut=forwardRef(lt),dt=ut;export{j as a,ze as b,f as c,pe as d,dt as e};//# sourceMappingURL=chunk-TPXP7CV6.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-TPXP7CV6.js.map
|