react-toolkits 2.9.21 → 2.9.23
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 +12 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +20 -8
- package/lib/index.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# react-toolkits
|
|
2
2
|
|
|
3
|
+
## 2.9.23
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 08918ad: feat: add loading prop for NavMenu
|
|
8
|
+
|
|
9
|
+
## 2.9.22
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 47fc2c2: fix: should refetch api when click confirm button
|
|
14
|
+
|
|
3
15
|
## 2.9.21
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/lib/index.d.ts
CHANGED
|
@@ -202,6 +202,7 @@ type NavMenuItem = Exclude<ItemType, SubMenuType | MenuItemGroupType | MenuItemT
|
|
|
202
202
|
interface NavMenuProps {
|
|
203
203
|
items?: NavMenuItem[];
|
|
204
204
|
theme?: MenuProps['theme'];
|
|
205
|
+
loading?: boolean;
|
|
205
206
|
}
|
|
206
207
|
declare const NavMenu: react.NamedExoticComponent<NavMenuProps>;
|
|
207
208
|
|
|
@@ -234,6 +235,7 @@ type HeaderExtra = {
|
|
|
234
235
|
};
|
|
235
236
|
interface LayoutProps extends Pick<GameSelectProps, 'filter' | 'onGameChange'> {
|
|
236
237
|
menuCollapsible?: boolean;
|
|
238
|
+
isMenuLoading?: boolean;
|
|
237
239
|
title?: ReactNode;
|
|
238
240
|
items?: NavMenuItem[];
|
|
239
241
|
hideGameSelect?: boolean;
|
package/lib/index.js
CHANGED
|
@@ -387,11 +387,13 @@ var init_NavMenu = __esm({
|
|
|
387
387
|
init_stores();
|
|
388
388
|
init_utils();
|
|
389
389
|
NavMenu = memo(function NavMenu2(props) {
|
|
390
|
-
const { items, theme: theme4 } = props;
|
|
390
|
+
const { items, theme: theme4, loading } = props;
|
|
391
391
|
const location = useLocation();
|
|
392
392
|
const flattenItems = useMemo(() => flatItems(items ?? []), [items]);
|
|
393
393
|
const codes = useMemo(() => flattenItems.map((item) => item.code).filter(Boolean), [flattenItems]);
|
|
394
|
-
const { data: permissions, isLoading } = usePermissions(codes, {
|
|
394
|
+
const { data: permissions, isLoading: isChecking } = usePermissions(codes, {
|
|
395
|
+
headers: { APP_ID_HEADER_NAME: "global" }
|
|
396
|
+
});
|
|
395
397
|
const internalItems = useMemo(() => transformItems(items ?? [], permissions), [items, permissions]);
|
|
396
398
|
const { openKeys, selectedKeys, setOpenKeys, setSelectedKeys } = useNavStore();
|
|
397
399
|
const onOpenChange = useCallback(
|
|
@@ -411,7 +413,7 @@ var init_NavMenu = __esm({
|
|
|
411
413
|
setOpenKeys(keypath);
|
|
412
414
|
}
|
|
413
415
|
}, [flattenItems, location]);
|
|
414
|
-
if (
|
|
416
|
+
if (loading || isChecking) {
|
|
415
417
|
return /* @__PURE__ */ jsx("div", { className: "flex justify-center items-center", style: { height: "calc(100vh - 64px)" }, children: /* @__PURE__ */ jsx(Spin, {}) });
|
|
416
418
|
}
|
|
417
419
|
return /* @__PURE__ */ jsx(
|
|
@@ -730,6 +732,7 @@ var init_Layout = __esm({
|
|
|
730
732
|
Layout2 = (props) => {
|
|
731
733
|
const {
|
|
732
734
|
menuCollapsible,
|
|
735
|
+
isMenuLoading,
|
|
733
736
|
title,
|
|
734
737
|
items,
|
|
735
738
|
headerExtra,
|
|
@@ -769,7 +772,7 @@ var init_Layout = __esm({
|
|
|
769
772
|
/* @__PURE__ */ jsx(Logo_default, { width: 32, height: 32 }),
|
|
770
773
|
(!menuCollapsible || !collapsed) && /* @__PURE__ */ jsx("div", { className: "h-8 flex items-center expand", children: title })
|
|
771
774
|
] }),
|
|
772
|
-
/* @__PURE__ */ jsx(NavMenu_default, { items })
|
|
775
|
+
/* @__PURE__ */ jsx(NavMenu_default, { items, loading: isMenuLoading })
|
|
773
776
|
]
|
|
774
777
|
}
|
|
775
778
|
),
|
|
@@ -2428,7 +2431,8 @@ var InfiniteList = (props) => {
|
|
|
2428
2431
|
data,
|
|
2429
2432
|
size,
|
|
2430
2433
|
setSize,
|
|
2431
|
-
isValidating: isListValidating
|
|
2434
|
+
isValidating: isListValidating,
|
|
2435
|
+
mutate: mutate2
|
|
2432
2436
|
} = useSWRInfinite(
|
|
2433
2437
|
getKey,
|
|
2434
2438
|
(arg) => {
|
|
@@ -2451,8 +2455,12 @@ var InfiniteList = (props) => {
|
|
|
2451
2455
|
setFormValues(values);
|
|
2452
2456
|
try {
|
|
2453
2457
|
await form.validateFields();
|
|
2454
|
-
|
|
2455
|
-
|
|
2458
|
+
if (size === 1) {
|
|
2459
|
+
mutate2();
|
|
2460
|
+
} else {
|
|
2461
|
+
setSize(1);
|
|
2462
|
+
setIsValid(true);
|
|
2463
|
+
}
|
|
2456
2464
|
} catch (_) {
|
|
2457
2465
|
setSize(0);
|
|
2458
2466
|
setIsValid(false);
|
|
@@ -2465,7 +2473,11 @@ var InfiniteList = (props) => {
|
|
|
2465
2473
|
try {
|
|
2466
2474
|
form.resetFields();
|
|
2467
2475
|
await form.validateFields({ validateOnly: true });
|
|
2468
|
-
|
|
2476
|
+
if (size === 1) {
|
|
2477
|
+
mutate2();
|
|
2478
|
+
} else {
|
|
2479
|
+
setSize(1);
|
|
2480
|
+
}
|
|
2469
2481
|
} catch (_) {
|
|
2470
2482
|
setSize(0);
|
|
2471
2483
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/locale/en_GB.ts","../src/components/contextProvider/Provider.tsx","../src/components/contextProvider/index.ts","../src/components/locale/hooks.ts","../src/components/locale/index.ts","../src/components/filterFormWrapper/FilterFormWrapper.tsx","../src/components/filterFormWrapper/index.ts","../src/components/highlight/Highlight.tsx","../src/components/highlight/index.ts","../src/constants.ts","../src/components/logo/Logo.tsx","../src/components/logo/index.ts","../src/components/navMenu/stores.ts","../src/components/navMenu/utils.tsx","../src/components/navMenu/NavMenu.tsx","../src/components/navMenu/index.ts","../src/components/requireGame/RequireGame.tsx","../src/components/requireGame/index.ts","../src/hooks/token.ts","../src/components/userWidget/UserWidget.tsx","../src/components/userWidget/index.ts","../src/utils/storage.ts","../src/components/layout/stores.ts","../src/components/layout/GameSelect.tsx","../src/components/layout/style.css","../src/components/layout/Layout.tsx","../src/components/layout/index.ts","../src/utils/request.ts","../src/hooks/permission.ts","../src/components/permissionButton/PermissionButton.tsx","../src/components/permissionButton/index.ts","../src/components/queryList/stores.ts","../src/components/queryList/QueryList.tsx","../src/components/queryList/index.ts","../src/hooks/modal.tsx","../src/hooks/formModal.tsx","../src/features/permission/hooks/index.ts","../src/features/permission/components/permissionCollapse/index.tsx","../src/features/permission/components/permissionListV1/index.tsx","../src/features/permission/components/permissionListV2/index.tsx","../src/features/permission/components/permissionList/index.tsx","../src/features/permission/types/index.ts","../src/features/permission/index.ts","../src/pages/permission/userList/index.tsx","../src/pages/permission/roleList/index.tsx","../src/pages/permission/roleDetail/index.tsx","../src/index.ts","../src/components/dynamicTags/DynamicTags.tsx","../src/components/expandableParagraph/ExpandableParagraph.tsx","../src/components/infiniteList/InfiniteList.tsx","../src/components/requirePermission/RequirePermission.tsx","../src/pages/notFound/index.tsx","../src/pages/operationLogList/index.tsx","../src/pages/permission/index.tsx","../src/pages/signIn/index.tsx"],"names":["locale","theme","jsx","jsxs","Space","Fragment","useState","useEffect","route","NavMenu","useMemo","Spin","Antd","create","persist","get","init_stores","createJSONStorage","Typography","id","Layout","Button","useSWR","QueryListAction","data","Form","useRef","Result","Table","init_hooks","useCallback","Text","Option","Select","Divider","Skeleton","Card","Empty","init_permission","useModal","App","mutate","Input","Row","Col","Tag","Link","produce","qs","useNavigate","UserList","RoleList","RoleDetail","useSWRImmutable","Navigate"],"mappings":"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","file":"index.js","sourcesContent":["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 },\n SignIn: {\n title: 'Sign In Method',\n thirdParty: 'Third party sign in',\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 UserList: {\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 RoleList: {\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FC, PropsWithChildren } from 'react'\nimport { createContext, useContext, useRef } from 'react'\nimport { createStore, useStore } from 'zustand'\nimport type { RequestOptions } from '../../utils/request'\nimport type { Locale } from '../locale'\nimport enGb from '../locale/en_GB'\n\nexport interface ContextProps {\n locale: Locale\n usePermissionApiV2: boolean // 使用 V2 版本的权限接口\n gameApiV2: boolean\n interceptor?: {\n response?: (response: Response, opts: RequestOptions) => Promise<any>\n }\n}\n\nexport interface ContextState extends ContextProps {\n setContext: (props: Partial<ContextProps>) => void\n}\n\nconst createContextStore = (initProps?: Partial<ContextProps>) => {\n const DEFAULT_PROPS: ContextProps = {\n locale: enGb,\n usePermissionApiV2: false,\n gameApiV2: false,\n }\n\n return createStore<ContextState>()(set => ({\n ...DEFAULT_PROPS,\n ...initProps,\n setContext: props => {\n set({ ...props })\n },\n }))\n}\n\ntype ContextStore = ReturnType<typeof createContextStore>\n\n// 全局的 store 实例,等于最内层的 ContextProvider 所包含的实例。\nexport let contextStore: ContextStore\n\nconst ToolkitsContext = createContext<ContextStore | null>(null)\n\nexport function useToolkitsContext<T>(selector: (state: ContextState) => T) {\n const store = useContext(ToolkitsContext)\n if (!store) throw new Error('Missing ToolkitsContext.Provider in the tree')\n return useStore(store, selector)\n}\n\ntype ContextProviderProps = PropsWithChildren<Partial<ContextProps>>\n\n// TODO: 合并父级的 state\nconst ContextProvider: FC<ContextProviderProps> = props => {\n const { children, ...restProps } = props\n const storeRef = useRef<ContextStore>()\n\n if (!storeRef.current) {\n storeRef.current = createContextStore(restProps)\n }\n\n contextStore = storeRef.current\n\n return <ToolkitsContext.Provider value={storeRef.current}>{children}</ToolkitsContext.Provider>\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ContextProvider.displayName = 'ContextProvider'\n}\n\nexport default ContextProvider\n","export { default as ContextProvider, contextStore, useToolkitsContext } from './Provider'\nexport type { ContextState } from './Provider'\n","import { get, has, template } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport type { Locale } from './index'\n\ntype Join<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never\n\ntype Paths<T, D extends number = 10> = [D] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K]>> : never\n }[keyof T]\n : ''\n\nexport function useTranslation() {\n const locale = useToolkitsContext(state => state.locale)\n\n const t = useMemo(\n () => (key: Paths<Locale>, data?: Record<string, unknown>) =>\n has(locale, key) ? template(get(locale, key as string))(data) : key,\n [locale],\n )\n\n return { t }\n}\n","export type Locale = {\n global: {\n noEntitlement: string\n name: string\n creationTime: string\n operation: string\n update: string\n edit: string\n delete: string\n selectAll: string\n game: string\n user: string\n role: string\n username: string\n password: string\n label: string\n method: string\n route: string\n request: string\n response: string\n add: string\n signIn: string\n }\n SignIn: {\n title: string\n thirdParty: string\n signInWithIDass: string\n unregistered: string\n welcome: string\n }\n NotFound: {\n subTitle: string\n buttonText: string\n }\n FilterFormWrapper: {\n confirmText: string\n resetText: string\n }\n FormModal: {\n confirmText: string\n cancelText: string\n }\n GameSelect: {\n label: string\n placeholder: string\n }\n RequireGame: {\n description: string\n }\n UserWidget: {\n signOutText: string\n }\n UserList: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n RoleList: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n PermissionList: {\n failedDescription: string\n baseSectionTitle: string\n gameSectionTitle: string\n gameSectionDescription: string\n gameSelectPlaceholder: string\n removeText: string\n addText: string\n }\n RoleDetail: {\n title: string\n }\n InfiniteList: {\n loadingText: string\n reachEndText: string\n loadMoreText: string\n }\n}\n\nexport { useTranslation } from './hooks'\n","import { Button, Space, theme } from 'antd'\nimport type { Key, PropsWithChildren, ReactNode } from 'react'\nimport { Fragment } from 'react'\nimport { useTranslation } from '../locale'\n\nexport interface FilterFormWrapperProps extends PropsWithChildren {\n onConfirm?: () => void | Promise<void>\n onReset?: () => void\n extras?: { key: Key; children: ReactNode }[]\n isConfirming?: boolean\n buttonsAlign?: 'left' | 'right' | 'bottom'\n showReset?: boolean\n}\n\nconst FilterFormWrapper = (props: FilterFormWrapperProps) => {\n const { extras, isConfirming, onConfirm, onReset, children, buttonsAlign = 'left', showReset } = props\n const { t } = useTranslation()\n const {\n token: { colorFillAlter, lineWidth, lineType, colorBorder, borderRadiusLG },\n } = theme.useToken()\n\n const style = {\n maxWidth: 'none',\n background: colorFillAlter,\n borderWidth: lineWidth,\n borderStyle: lineType,\n borderColor: colorBorder,\n borderRadius: borderRadiusLG,\n padding: 24,\n marginBottom: 24,\n }\n\n return (\n <div style={style}>\n <div className={`flex ${buttonsAlign === 'bottom' ? 'flex-col' : 'flex-row'}`}>\n <div className={`${buttonsAlign === 'left' ? 'flex-grow-0' : 'flex-1'}`}>{children}</div>\n <div className={`${buttonsAlign === 'bottom' ? 'text-end' : 'text-start'} ml-4`}>\n <Space>\n <Button type=\"primary\" loading={isConfirming} onClick={onConfirm}>\n {t('FilterFormWrapper.confirmText')}\n </Button>\n {extras?.map(item => <Fragment key={item.key}>{item.children}</Fragment>)}\n {showReset && <Button onClick={onReset}>{t('FilterFormWrapper.resetText')}</Button>}\n </Space>\n </div>\n </div>\n </div>\n )\n}\n\nexport default FilterFormWrapper\n","export { default as FilterFormWrapper } from './FilterFormWrapper'\nexport type { FilterFormWrapperProps } from './FilterFormWrapper'\n","import type { PropsWithChildren, ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\nimport { flushSync } from 'react-dom'\nimport { createRoot } from 'react-dom/client'\n\nconst splitByTags = (str: string) => {\n const regex = /(<[^>]*>)/\n return str.split(regex).filter(part => part !== '')\n}\n\nfunction renderToString(node: ReactNode): Promise<string> {\n const container = document.createElement('div')\n const root = createRoot(container)\n\n return new Promise(resolve => {\n setTimeout(() => {\n flushSync(() => {\n root.render(node)\n })\n resolve(container.innerHTML)\n })\n })\n}\n\nexport interface HighlightProps extends PropsWithChildren {\n texts: Array<string | number>\n}\n\nconst Highlight = (props: HighlightProps) => {\n const { texts, children } = props\n const [htmlString, setHtmlString] = useState<string>('')\n\n useEffect(() => {\n renderToString(children).then(str => {\n const result = splitByTags(str)\n\n for (const text of texts) {\n for (let index = 0; index < result.length; index++) {\n // TODO: 忽略 HTML tag\n result[index] = result[index].replace(String(text), `<span style='color: #DC143C;'>${text}</span>`)\n }\n }\n\n setHtmlString(result.join(''))\n })\n }, [children, texts])\n\n return <div dangerouslySetInnerHTML={{ __html: htmlString }}></div>\n}\n\nexport default Highlight\n","export { default as Highlight } from './Highlight'\nexport type { HighlightProps } from './Highlight'\n","export const SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\n\nexport const APP_ID_HEADER_NAME = 'App-ID'\n","import type { DetailedHTMLProps, FC, ImgHTMLAttributes } from 'react'\nimport logoUrl from './logo.png'\n\nexport type LogoProps = Omit<DetailedHTMLProps<ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, 'src' | 'alt'>\n\nconst Logo: FC<LogoProps> = props => {\n return <img src={logoUrl} alt=\"logo\" {...props} />\n}\n\nexport default Logo\n","export { default as Logo } from './Logo'\nexport type { LogoProps } from './Logo'\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\n\nexport interface NavState {\n openKeys: string[]\n selectedKeys: string[]\n setOpenKeys: (keys: string[]) => void\n setSelectedKeys: (keys: string[]) => void\n}\n\nexport const useNavStore = create<NavState>()(\n persist(\n set => ({\n openKeys: [],\n setOpenKeys: keys => set({ openKeys: keys }),\n selectedKeys: [],\n setSelectedKeys: keys => set({ selectedKeys: keys }),\n }),\n {\n name: 'nav',\n storage: createJSONStorage(() => localStorage),\n partialize: state => ({\n openKeys: state.openKeys,\n selectedKeys: state.selectedKeys,\n }),\n },\n ),\n)\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ItemType, MenuDividerType } from 'antd/es/menu/interface'\nimport { Link } from 'react-router-dom'\nimport type { Merge } from 'ts-essentials'\nimport type { MenuItemGroupType2, MenuItemType2, NavMenuItem, SubMenuType2 } from './types'\n\n// 比对菜单配置与权限,任意子菜单项通过权限检查时返回 true,否则返回 false\nexport function checkChildren(children?: NavMenuItem[], permissions?: Record<string, boolean>): boolean {\n return (children ?? []).some(child => {\n if (child === null) {\n return false\n } else if ((child as MenuDividerType).type === 'divider') {\n return true\n } else {\n if ((child as SubMenuType2 | MenuItemGroupType2).children) {\n return checkChildren((child as SubMenuType2 | MenuItemGroupType2).children ?? [], permissions)\n } else {\n return !permissions || !(child as MenuItemType2).code || permissions[(child as MenuItemType2).code as string]\n }\n }\n })\n}\n\n// 将自定义的菜单配置转换为 antd 的菜单配置,同时根据权限过滤菜单项、添加 react-router-dom Link 等。\nexport function transformItems(items?: NavMenuItem[], permissions?: Record<string, boolean>) {\n const result: ItemType[] = []\n\n if (items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i] === null || (items[i] as MenuDividerType).type === 'divider') {\n result[i] = items[i] as null | MenuDividerType\n } else if ((items[i] as SubMenuType2 | MenuItemGroupType2).children) {\n const { children, ...rest } = items[i] as SubMenuType2 | MenuItemGroupType2\n result[i] = checkChildren(children, permissions)\n ? {\n ...rest,\n children: transformItems(children, permissions),\n }\n : null\n } else {\n const { route, label, code, ...rest } = items[i] as MenuItemType2\n const isPass = !code || !permissions || permissions[code]\n const labelNode = route ? <Link to={route}>{label}</Link> : label\n\n result[i] = isPass\n ? {\n ...rest,\n label: labelNode,\n }\n : null\n }\n }\n }\n\n return result\n}\n\n// 拍平导航配置,并且注入 keypath 字段\nexport function flatItems(\n items: NavMenuItem[],\n result: Merge<MenuItemType2, { keypath?: string[] }>[] = [],\n keypath: string[] = [],\n) {\n for (const item of items) {\n const children = (item as SubMenuType2 | MenuItemGroupType2)?.children as NavMenuItem[]\n\n if (Array.isArray(children)) {\n const keys =\n (item as MenuItemGroupType2)!.type !== 'group' && item!.key ? [...keypath, item!.key as string] : keypath\n flatItems(children, result, keys)\n } else if (item) {\n result.push(Object.assign(item as MenuItemType2, { keypath }))\n }\n }\n\n return result\n}\n","import type { MenuProps } from 'antd'\nimport { Menu, Spin } from 'antd'\nimport { memo, useCallback, useEffect, useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { usePermissions } from '../../hooks/permission'\nimport { useNavStore } from './stores'\nimport type { NavMenuItem } from './types'\nimport { flatItems, transformItems } from './utils'\n\nexport interface NavMenuProps {\n items?: NavMenuItem[]\n theme?: MenuProps['theme']\n}\n\nconst NavMenu = memo(function NavMenu(props: NavMenuProps) {\n const { items, theme } = props\n const location = useLocation()\n const flattenItems = useMemo(() => flatItems(items ?? []), [items])\n const codes = useMemo(() => flattenItems.map(item => item.code).filter(Boolean) as string[], [flattenItems])\n const { data: permissions, isLoading } = usePermissions(codes, { headers: { APP_ID_HEADER_NAME: 'global' } })\n const internalItems = useMemo(() => transformItems(items ?? [], permissions), [items, permissions])\n const { openKeys, selectedKeys, setOpenKeys, setSelectedKeys } = useNavStore()\n\n const onOpenChange = useCallback(\n (keys: string[]) => {\n const lastOpenKey = keys?.find(key => openKeys?.indexOf(key) === -1)\n const match = flattenItems.find(item => lastOpenKey === item.key)\n setOpenKeys((match?.keypath ?? [lastOpenKey]) as string[])\n },\n [flattenItems, openKeys, setOpenKeys],\n )\n\n useEffect(() => {\n const match = flattenItems.find(item => location.pathname === item.route)\n\n if (match) {\n const key = match.key as string\n const keypath = match.keypath as string[]\n setSelectedKeys([key])\n setOpenKeys(keypath)\n }\n }, [flattenItems, location])\n\n if (isLoading) {\n return (\n <div className=\"flex justify-center items-center\" style={{ height: 'calc(100vh - 64px)' }}>\n <Spin />\n </div>\n )\n }\n\n return (\n <Menu\n theme={theme}\n style={{ borderRight: 'none' }}\n items={internalItems}\n mode=\"inline\"\n openKeys={openKeys}\n selectedKeys={selectedKeys}\n onOpenChange={onOpenChange}\n />\n )\n})\n\nif (process.env.NODE_ENV === 'development') {\n NavMenu.displayName = 'NavMenu'\n}\n\nexport default NavMenu\n","export { default as NavMenu } from './NavMenu'\nexport type { NavMenuItem } from './types'\n","import * as Antd from 'antd'\nimport { Empty } from 'antd'\nimport { type FC, type PropsWithChildren } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { useGameStore } from '../layout'\nimport { useTranslation } from '../locale'\n\nconst { Spin } = Antd\n\ninterface RequireGameProps extends PropsWithChildren {\n hideGameSelect?: boolean\n}\n\nconst RequireGame: FC<RequireGameProps> = props => {\n const { hideGameSelect, children } = props\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n const { game, isLoading } = useGameStore()\n const { t } = useTranslation()\n\n if (isLoading) {\n return (\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n >\n <Spin />\n </div>\n )\n }\n\n if (usePermissionApiV2 && !hideGameSelect && !game) {\n return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={t('RequireGame.description')} />\n }\n\n return children\n}\n\nexport default RequireGame\n","export { default as RequireGame } from './RequireGame'\n","import { jwtDecode } from 'jwt-decode'\nimport useSWRImmutable from 'swr/immutable'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport { APP_ID_HEADER_NAME } from '../constants'\nimport { request } from '../utils/request'\n\ninterface UserInfo {\n authorityId: string\n exp: number\n}\n\nexport interface TokenState {\n token: string\n getUser: () => UserInfo | null\n setToken: (token: string) => void\n clearToken: () => void\n}\n\nexport const useTokenStore = create<TokenState>()(\n persist(\n (set, get, store) => ({\n token: '',\n getUser: () => {\n try {\n return jwtDecode(get().token) as UserInfo\n } catch (_) {\n return null\n }\n },\n setToken: token => set({ token }),\n clearToken: () => {\n get().setToken('')\n store.persist.clearStorage()\n },\n }),\n {\n name: 'token',\n partialize: state => ({ token: state.token }),\n },\n ),\n)\n\nexport function useTokenValidation(options?: { skip: false }) {\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n\n return useSWRImmutable(\n !options?.skip ? (usePermissionApiV2 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check') : null,\n (url: string) =>\n request(url, {\n method: 'POST',\n body: {\n permissions: ['100001'],\n },\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n","/* eslint-disable jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid */\nimport { LogoutOutlined, UserOutlined } from '@ant-design/icons'\nimport type { MenuProps } from 'antd'\nimport { Dropdown, Space } from 'antd'\nimport type { FC } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTokenStore } from '../../hooks/token'\nimport { useTranslation } from '../locale'\n\nexport interface UserWidgetProps {\n logoutRedirectUrl: string\n}\n\nconst UserWidget: FC<UserWidgetProps> = props => {\n const { logoutRedirectUrl } = props\n const { t } = useTranslation()\n const navigate = useNavigate()\n const { clearToken, getUser } = useTokenStore()\n const user = getUser()\n\n const items: MenuProps['items'] = [\n {\n key: '1',\n icon: <LogoutOutlined />,\n label: (\n <a\n onClick={() => {\n clearToken()\n navigate(logoutRedirectUrl)\n }}\n >\n {t('UserWidget.signOutText')}\n </a>\n ),\n },\n ]\n\n return (\n <div>\n <Dropdown\n menu={{\n selectable: true,\n items,\n }}\n placement=\"bottomRight\"\n >\n <a\n onClick={e => {\n e.preventDefault()\n }}\n >\n <Space align=\"center\">\n <span>{user?.authorityId}</span>\n <UserOutlined style={{ fontSize: '16px' }} />\n </Space>\n </a>\n </Dropdown>\n </div>\n )\n}\n\nexport default UserWidget\n","export { default as UserWidget } from './UserWidget'\nexport type { UserWidgetProps } from './UserWidget'\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: async (name: string) => {\n sessionStorage.removeItem(name)\n localStorage.removeItem(name)\n },\n}\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { request } from '../../utils/request'\nimport { mixedStorage } from '../../utils/storage'\nimport { contextStore } from '../contextProvider'\nimport type { Game } from './types'\n\nexport interface LayoutState {\n collapsed: boolean\n setCollapsed: (collapsed: boolean) => void\n}\n\nexport const useLayoutStore = create<LayoutState>()(\n persist(\n set => ({\n collapsed: false,\n setCollapsed: collapsed => set({ collapsed }),\n }),\n {\n name: 'layout',\n storage: createJSONStorage(() => localStorage),\n partialize: state => ({ collapsed: state.collapsed }),\n },\n ),\n)\n\ninterface GameState {\n initialized: boolean\n game: Game | null\n games: Game[]\n isLoading: boolean\n fetchGames: (options?: { apiV2?: boolean; forceUpdate?: boolean }) => Promise<Game[] | undefined>\n}\n\nexport const useGameStore = create<GameState>()(\n persist(\n (set, get) => ({\n initialized: false,\n isLoading: false,\n game: null,\n games: [],\n async fetchGames({ apiV2 = contextStore.getState().gameApiV2, forceUpdate = false } = {}) {\n if (!forceUpdate && get().initialized) {\n return get().games\n }\n\n try {\n set({ isLoading: true })\n let games: Game[]\n if (!apiV2) {\n const response = await request<Game[]>('/api/usystem/game/all')\n games = response.data ?? []\n } else {\n const response = await request<{ list: Game[] }>('/api/game/list')\n games = response.data?.list ?? []\n }\n set({ games })\n return games\n } finally {\n set({\n initialized: true,\n isLoading: false,\n })\n }\n },\n }),\n {\n name: 'game',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({ game: state.game }),\n },\n ),\n)\n","import { Select, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { useTranslation } from '../locale'\nimport { useGameStore } from './stores'\nimport type { Game } from './types'\n\nconst { Text } = Typography\n\nexport interface GameSelectProps {\n filter?: (game: Game) => boolean\n onGameChange?: (game: Game) => void\n}\n\nconst GameSelect: FC<GameSelectProps> = props => {\n const { filter, onGameChange } = props\n const { t } = useTranslation()\n const { game, games, isLoading, fetchGames } = useGameStore()\n const apiV2 = useToolkitsContext(state => state.gameApiV2)\n\n useEffect(() => {\n fetchGames({ apiV2 })\n }, [])\n\n const options = games\n ?.filter(item => filter?.(item) ?? true)\n ?.map(item => ({\n label: item.name,\n value: apiV2 ? item.game_id : item.id,\n }))\n\n const onChange = async (id: string | number) => {\n const match = games.find(item => String(apiV2 ? item.game_id : item.id) === String(id))!\n useGameStore.setState({ game: match })\n onGameChange?.(match)\n }\n\n return (\n <Space>\n <Text>{t('GameSelect.label')}</Text>\n <Select<string | number>\n showSearch\n optionFilterProp=\"label\"\n value={apiV2 ? game?.game_id : game?.id}\n placeholder={t('GameSelect.placeholder')}\n loading={isLoading}\n style={{ width: '200px' }}\n options={options}\n onChange={onChange}\n />\n </Space>\n )\n}\n\nexport default GameSelect\n","\n.expand {\n animation-duration: 0.2s;\n animation-name: expand;\n}\n\n@keyframes expand {\n 0%, 50% {\n width: 0;\n opacity: 0;\n }\n\n 75% {\n width: 100%;\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n","import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'\nimport * as Antd from 'antd'\nimport { Button, Divider, Space } from 'antd'\nimport type { FC, Key, PropsWithChildren, ReactNode } from 'react'\nimport { Suspense } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { Logo } from '../logo'\nimport type { NavMenuItem } from '../navMenu'\nimport { NavMenu } from '../navMenu'\nimport { RequireGame } from '../requireGame'\nimport { UserWidget } from '../userWidget'\nimport type { GameSelectProps } from './GameSelect'\nimport GameSelect from './GameSelect'\nimport { useLayoutStore } from './stores'\nimport './style.css'\n\nconst { Spin, theme } = Antd\nconst { Header, Sider, Content } = Antd.Layout\n\ntype HeaderExtra = { key: Key; children: ReactNode }\n\nexport interface LayoutProps extends Pick<GameSelectProps, 'filter' | 'onGameChange'> {\n menuCollapsible?: boolean\n title?: ReactNode\n items?: NavMenuItem[]\n hideGameSelect?: boolean\n navWidth?: string | number\n logoutRedirectUrl: string\n headerExtra?: {\n left?: HeaderExtra[]\n right?: HeaderExtra[]\n }\n}\n\nconst Layout: FC<PropsWithChildren<LayoutProps>> = props => {\n const {\n menuCollapsible,\n title,\n items,\n headerExtra,\n hideGameSelect,\n children,\n navWidth,\n logoutRedirectUrl,\n filter,\n onGameChange,\n } = props\n const {\n token: { colorBgContainer, colorBorder },\n } = theme.useToken()\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n const { collapsed, setCollapsed } = useLayoutStore()\n\n const onCollapse = async () => {\n setCollapsed(!collapsed)\n }\n\n return (\n <Antd.Layout>\n <Sider\n collapsible\n theme=\"light\"\n trigger={null}\n collapsed={collapsed}\n width={navWidth}\n style={{\n height: '100vh',\n overflow: 'auto',\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colorBorder,\n }}\n >\n <div className=\"flex gap-2 px-6 py-4 overflow-hidden\">\n <Logo width={32} height={32} />\n {(!menuCollapsible || !collapsed) && <div className=\"h-8 flex items-center expand\">{title}</div>}\n </div>\n <NavMenu items={items} />\n </Sider>\n <Antd.Layout>\n <Header\n style={{\n padding: '0 24px',\n background: colorBgContainer,\n }}\n >\n <div className=\"flex justify-between items-center h-full\">\n <Space size=\"small\" split={<Divider type=\"vertical\" />} className=\"mr-6\">\n {menuCollapsible && (\n <Button\n type=\"text\"\n icon={collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}\n style={{ fontSize: '16px' }}\n onClick={onCollapse}\n />\n )}\n {usePermissionApiV2 && !hideGameSelect && <GameSelect filter={filter} onGameChange={onGameChange} />}\n {headerExtra?.left?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n </Space>\n <Space size=\"small\" split={<Divider type=\"vertical\" />}>\n {headerExtra?.right?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n <UserWidget logoutRedirectUrl={logoutRedirectUrl} />\n </Space>\n </div>\n </Header>\n <Content\n style={{\n overflow: 'auto',\n padding: '24px 16px',\n maxHeight: 'calc(100vh - 64px)',\n }}\n >\n <Suspense\n fallback={\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: '200px',\n }}\n />\n }\n >\n <RequireGame hideGameSelect={hideGameSelect}>{children}</RequireGame>\n </Suspense>\n </Content>\n </Antd.Layout>\n </Antd.Layout>\n )\n}\n\nexport default Layout\n","export { default as Layout } from './Layout'\nexport * from './stores'\nexport type * from './types'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { pick } from 'lodash-es'\nimport type { StringifyOptions } from 'query-string'\nimport qs from 'query-string'\nimport { contextStore } from '../components/contextProvider'\nimport { useGameStore } from '../components/layout'\nimport { APP_ID_HEADER_NAME } from '../constants'\nimport { useTokenStore } from '../hooks/token'\n\nexport class RequestError extends Error {\n status!: number\n code?: number\n\n constructor(opts: { message?: string; status: number; code?: number }) {\n super(opts?.message)\n this.status = opts.status\n this.code = opts.code\n }\n}\n\ntype JsonResponse<T> = (\n | {\n code: number\n status?: never\n }\n | {\n code?: never\n status: number\n }\n) & {\n data: T\n msg: string\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n body?: Record<string | number, any> | FormData | null\n params?: Record<string | number, any> | URLSearchParams | null\n responseType?: 'json' | 'blob' | 'text'\n}\n\nexport type RequestResponse<T> = Pick<Response, 'headers' | 'status' | 'statusText' | 'url'> & { data: T }\n\nexport async function request<T = any, R = RequestResponse<T>>(url: string, opts: RequestOptions = {}): Promise<R> {\n const _opts = Object.assign(opts, { responseType: opts.responseType ?? 'json' })\n const { body, params, responseType, ...rest } = _opts\n\n if (!url) {\n throw new RequestError({\n status: 400,\n message: 'URL is required',\n })\n }\n\n // 处理查询参数,如果 url 中已经有查询参数,需要合并。\n const parsed = qs.parseUrl(url)\n const queryParams = Object.assign({}, parsed.query, params)\n const options: StringifyOptions = {\n skipNull: true,\n skipEmptyString: true,\n strict: true,\n encode: true,\n }\n const queryString = qs.stringify(queryParams, options)\n url = queryString ? `${parsed.url}?${queryString}` : url\n\n const headers = new Headers(_opts.headers)\n\n const token = useTokenStore?.getState()?.token\n\n if (token) {\n headers.set('Authorization', `Bearer ${token}`)\n }\n\n // TODO: 把自动注入 App-ID 移除掉,后续自己在项目中实现。\n if (!headers.has(APP_ID_HEADER_NAME) && contextStore.getState().usePermissionApiV2) {\n const game = useGameStore.getState().game\n if (game) {\n headers.set(APP_ID_HEADER_NAME, String(contextStore.getState().gameApiV2 ? game.game_id : game.id))\n }\n }\n\n if (responseType === 'blob') {\n headers.append('Accept', 'application/octet-stream')\n } else if (responseType === 'json') {\n headers.append('Accept', 'application/json')\n }\n\n const isJsonBody = !!(body && typeof body === 'object' && !(body instanceof FormData))\n\n if (isJsonBody) {\n headers.set('Content-Type', 'application/json')\n }\n\n const requestOpts = Object.assign(rest, {\n headers,\n body: isJsonBody ? JSON.stringify(body) : body,\n }) as RequestInit\n\n const response = await fetch(url, requestOpts)\n\n if (!response.ok) {\n throw new RequestError({ status: response.status })\n }\n\n const responseInterceptor = contextStore.getState().interceptor?.response\n\n if (typeof responseInterceptor === 'function') {\n return await responseInterceptor(response, _opts)\n }\n\n let data: T\n\n if (responseType === 'blob') {\n data = (await response.blob()) as T\n } else if (responseType === 'json') {\n const json = (await response.json()) as JsonResponse<T>\n if (json.code === 0 || json.code === 200 || json.status === 0) {\n data = json.data\n } else {\n throw new RequestError({\n code: json.code,\n status: response.status,\n message: json.msg,\n })\n }\n } else {\n data = (await response.text()) as T\n }\n\n const result = {\n ...pick(response, ['headers', 'status', 'statusText', 'url']),\n data,\n } as R\n\n return result\n}\n","import useSWR from 'swr'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport type { RequestOptions } from '../utils/request'\nimport { request } from '../utils/request'\n\ntype PermissionCheckResult = { has_all: true } | { [k: string]: boolean }\n\nexport function usePermissions(codes: string[], options?: Omit<RequestOptions, 'method' | 'body'>) {\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n const { data, isValidating, isLoading } = useSWR(\n codes.length > 0 ? [usePermissionApiV2 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check', codes] : null,\n ([url]) =>\n request<PermissionCheckResult>(url, {\n ...options,\n method: 'POST',\n body: {\n permissions: codes,\n },\n }).then(response => {\n if (response.data?.has_all) {\n return codes.reduce(\n (acc, curr) => {\n acc[curr] = true\n return acc\n },\n {} as Record<string, boolean>,\n )\n }\n\n return codes.reduce(\n (acc, curr) => {\n acc[curr] = (response.data as Record<string, boolean>)?.[curr] ?? false\n return acc\n },\n {} as Record<string, boolean>,\n )\n }),\n {\n revalidateOnFocus: false,\n },\n )\n\n return { data, isValidating, isLoading }\n}\n\nexport function usePermission(code: string | undefined, options?: Omit<RequestOptions, 'method' | 'body'>) {\n const { data, isValidating, isLoading } = usePermissions(code ? [code] : [], options)\n\n if (code === undefined) {\n return {\n accessible: true,\n isValidating: false,\n isLoading: false,\n }\n }\n\n return {\n accessible: data?.[code] ?? false,\n isValidating,\n isLoading,\n }\n}\n","import type { ButtonProps } from 'antd'\nimport { Button, Tooltip } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { APP_ID_HEADER_NAME } from '../../constants'\nimport { usePermissions } from '../../hooks/permission'\nimport { useTranslation } from '../locale'\n\nexport interface PermissionButtonProps extends ButtonProps {\n code: string | string[]\n showLoading?: boolean\n isGlobal?: boolean\n}\n\nconst PermissionButton: FC<PropsWithChildren<PermissionButtonProps>> = props => {\n const { children, code, showLoading, isGlobal, disabled, ...restProps } = props\n const { data, isLoading } = usePermissions(Array.isArray(code) ? code : [code], {\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n })\n const { t } = useTranslation()\n\n if (isLoading) {\n return (\n <Button loading={showLoading} disabled={!showLoading} {...restProps}>\n {children}\n </Button>\n )\n }\n\n if (!Object.values(data ?? {})?.some(Boolean)) {\n return (\n <Tooltip defaultOpen={false} title={t('global.noEntitlement')}>\n <Button disabled {...restProps}>\n {children}\n </Button>\n </Tooltip>\n )\n }\n\n return (\n <Button disabled={disabled} {...restProps}>\n {children}\n </Button>\n )\n}\n\nexport default PermissionButton\n","export { default as PermissionButton } from './PermissionButton'\nexport type { PermissionButtonProps } from './PermissionButton'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isEqual } from 'lodash-es'\nimport type { MutatorCallback, MutatorOptions } from 'swr'\nimport { mutate } from 'swr'\nimport { create } from 'zustand'\nimport type { QueryListPayload } from './QueryList'\n\ninterface QueryListMutator {\n <Data = any, MutationData = Data>(\n route: string,\n data?: MutationData | Promise<MutationData> | MutatorCallback<MutationData>,\n opts?: boolean | MutatorOptions<Data, MutationData>,\n ): Promise<Array<MutationData | undefined>>\n <Data = any, MutationData = Data>(\n route: string,\n data?: MutationData | Promise<MutationData> | MutatorCallback<MutationData>,\n opts?: boolean | MutatorOptions<Data, MutationData>,\n ): Promise<MutationData | undefined>\n}\n\ninterface QueryListState {\n keyMap: Map<string, string | null>\n payloadMap: Map<string, QueryListPayload>\n getPayload(route: string): QueryListPayload\n setPayload(route: string, payload: QueryListPayload): void\n refetch(route: string, payload?: QueryListPayload): void\n mutate: QueryListMutator\n}\n\nexport const useQueryListStore = create<QueryListState>((set, get) => ({\n keyMap: new Map(),\n payloadMap: new Map(),\n getPayload(route) {\n return get().payloadMap.get(route) ?? { page: 1 }\n },\n setPayload(route, payload) {\n set(state => ({\n payloadMap: new Map(state.payloadMap).set(route, payload),\n }))\n },\n refetch(route, payload) {\n const prevPayload = get().getPayload(route)\n const nextPayload = { ...prevPayload, ...payload }\n // FIXME: 后续使用 unstable_serialize 来比较前后的 key,因为仅仅比较 payload 会有问题\n if (isEqual(prevPayload, nextPayload)) {\n get().mutate(route, undefined)\n } else {\n get().setPayload(route, nextPayload)\n }\n },\n mutate(route, data, opts) {\n const key = get().keyMap.get(route)\n return mutate(key, data, opts)\n },\n}))\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { App, Form, Result, Spin, Table } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { TableProps } from 'antd/es/table'\nimport type { ReactElement, ReactNode, Ref } from 'react'\nimport { cloneElement, forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport useSWR, { unstable_serialize } from 'swr'\nimport { APP_ID_HEADER_NAME } from '../../constants'\nimport { usePermission } from '../../hooks/permission'\nimport type { RequestOptions } from '../../utils/request'\nimport { request } from '../../utils/request'\nimport { useToolkitsContext } from '../contextProvider'\nimport type { FilterFormWrapperProps } from '../filterFormWrapper'\nimport { FilterFormWrapper } from '../filterFormWrapper'\nimport { useGameStore } from '../layout'\nimport { useTranslation } from '../locale'\nimport { useQueryListStore } from './stores'\n\nexport interface ListResponse<T = any> {\n list: T[]\n total: number\n}\n\nexport interface QueryListPayload<FormValues = any> {\n page?: number\n size?: number\n formValue?: FormValues\n}\n\nexport enum QueryListAction {\n Confirm,\n Reset,\n Jump,\n Init,\n}\n\nexport interface QueryListDataType<Item> {\n dataSource: Item[]\n total: number\n}\n\nexport interface QueryListRef<Item, Value, Data> {\n data: Data | undefined\n dataSource: Item[] | undefined\n form: FormInstance<Value>\n}\n\nexport interface QueryListProps<Item extends AnyObject = AnyObject, Value = any, Data = any>\n extends Omit<TableProps<Item>, 'pagination' | 'dataSource' | 'loading'>,\n Pick<FilterFormWrapperProps, 'buttonsAlign' | 'showReset'> {\n code?: string\n isGlobal?: boolean\n route: string\n method?: 'GET' | 'POST'\n refreshInterval?: number\n // 无分页\n onePage?: boolean\n defaultSize?: number\n headers?: RequestOptions['headers']\n body?: RequestOptions['body'] | ((payload: QueryListPayload<Value>) => RequestOptions['body'])\n params?: RequestOptions['params'] | ((payload: QueryListPayload<Value>) => RequestOptions['params'])\n tableExtra?: ReactNode | ((form: FormInstance<Value>, data?: Data) => ReactNode)\n form?: FormInstance<Value>\n renderForm?: (form: FormInstance<Value>) => ReactElement\n afterSuccess?: (action: QueryListAction, data: Data, form: FormInstance<Value>) => void\n getTotal?: (data: Data | undefined) => number | undefined\n getDataSource?: (data: Data | undefined, form: FormInstance<Value>) => Item[] | undefined\n}\n\nconst InternalQueryList = <\n Item extends AnyObject = AnyObject,\n Value = any,\n // 默认接口返回值类型为 ListResponse<Item>,当符合时无需设置 getTotal、getDataSource 就可以让组件正确获取 total 与 dataSource。\n Data = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Data>,\n ref: Ref<QueryListRef<Item, Value, Data>>,\n) => {\n const internalProps = {\n method: 'GET',\n defaultSize: 10,\n refreshInterval: 0,\n getTotal: (data: Data | undefined) => (data as ListResponse<Item>)?.total,\n getDataSource: (data: Data | undefined) => (data as ListResponse<Item>)?.list,\n ...props,\n }\n\n const {\n route,\n code,\n headers,\n isGlobal,\n onePage,\n method,\n buttonsAlign,\n showReset,\n defaultSize,\n refreshInterval,\n tableExtra,\n form,\n body,\n params,\n renderForm,\n afterSuccess,\n getTotal,\n getDataSource,\n ...tableProps\n } = internalProps\n\n const { notification } = App.useApp()\n const { t } = useTranslation()\n const [_form] = Form.useForm<Value>(form)\n const { accessible, isLoading } = usePermission(code, {\n headers: isGlobal ? { [APP_ID_HEADER_NAME]: 'global' } : undefined,\n })\n const action = useRef<QueryListAction>(QueryListAction.Init)\n const { game } = useGameStore()\n const { gameApiV2, usePermissionApiV2 } = useToolkitsContext(state => state)\n const [isValid, setIsValid] = useState(false)\n const { keyMap, getPayload, refetch } = useQueryListStore()\n const { page, size = defaultSize, formValue } = getPayload(route)\n const payload = { page, size, formValue }\n\n const _body = useMemo(() => {\n return typeof body === 'function'\n ? body(payload)\n : method === 'POST' && typeof body === 'undefined'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n }\n : body\n }, [onePage, method, page, size, formValue, body])\n\n const _params = useMemo(\n () =>\n typeof params === 'function'\n ? params(payload)\n : method === 'GET' && typeof params === 'undefined'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n }\n : undefined,\n [onePage, method, page, size, formValue, params],\n )\n\n const _headers = useMemo(() => {\n const newHeaders = new Headers(headers)\n\n if (usePermissionApiV2) {\n if (isGlobal) {\n newHeaders.set(APP_ID_HEADER_NAME, 'global')\n } else if (game) {\n newHeaders.set(APP_ID_HEADER_NAME, String(gameApiV2 ? game.game_id : game.id))\n }\n }\n return newHeaders\n }, [usePermissionApiV2, isGlobal, game, headers])\n\n const key = useMemo(() => {\n if (!accessible || !isValid) {\n return null\n }\n\n const httpOption = {\n route,\n method,\n body: _body,\n params: _params,\n headers: _headers,\n }\n\n const serializedKey = unstable_serialize(httpOption)\n keyMap.set(route, serializedKey)\n return serializedKey\n }, [method, route, _body, _params, _headers, isValid, accessible])\n\n const shouldPoll = useRef(false)\n\n const { data, isValidating } = useSWR(\n key,\n async () => {\n const response = await request<Data>(route, {\n method,\n body: _body,\n params: _params,\n headers: _headers,\n })\n\n return response.data\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n refreshInterval: shouldPoll.current ? refreshInterval : 0,\n onSuccess(_data) {\n shouldPoll.current = true\n afterSuccess?.(action.current, _data, _form)\n },\n onError(error) {\n shouldPoll.current = false\n // FIXME: 暂时在此处处理错误,后续需要优化。\n notification.error({\n message: '请求出错',\n description: error.message,\n })\n },\n },\n )\n\n const dataSource = useMemo(() => getDataSource(data, _form), [data, form, getDataSource])\n const total = useMemo(() => getTotal(data), [data, getTotal])\n\n const pagination = useMemo(\n () =>\n !onePage && {\n showSizeChanger: true,\n showQuickJumper: true,\n current: page,\n pageSize: size,\n total,\n onChange: async (currentPage: number, currentSize: number) => {\n action.current = QueryListAction.Jump\n refetch(route, {\n page: currentPage,\n size: currentSize,\n })\n },\n },\n [page, size, onePage, total],\n )\n\n const onConfirm = async () => {\n action.current = QueryListAction.Confirm\n try {\n await _form.validateFields()\n setIsValid(true)\n refetch(route, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n const onReset = async () => {\n action.current = QueryListAction.Reset\n _form.resetFields()\n\n try {\n await _form.validateFields({ validateOnly: true })\n setIsValid(true)\n refetch(route, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n useEffect(() => {\n const init = async () => {\n if (!accessible) {\n return\n }\n\n try {\n _form.resetFields()\n const value = await _form.validateFields({ validateOnly: true })\n refetch(route, {\n page: 1,\n formValue: value,\n })\n setIsValid(true)\n } catch (err) {\n setIsValid(false)\n }\n }\n\n init()\n }, [accessible, form, game])\n\n useImperativeHandle(ref, () => ({\n data,\n dataSource,\n form: _form,\n }))\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n const formRenderer = typeof renderForm === 'function' && (\n <FilterFormWrapper\n showReset={showReset}\n buttonsAlign={buttonsAlign}\n isConfirming={isValidating}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {cloneElement(renderForm(_form), {\n onKeyUp: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n onConfirm()\n }\n },\n })}\n </FilterFormWrapper>\n )\n\n return (\n <div>\n {formRenderer}\n {typeof tableExtra === 'function' ? tableExtra(_form, data) : tableExtra}\n <Table {...tableProps} dataSource={dataSource} loading={isValidating} pagination={pagination} />\n </div>\n )\n}\n\nconst QueryList = forwardRef(InternalQueryList) as <\n Item extends AnyObject = AnyObject,\n Value extends object | undefined = undefined,\n Data = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Data> & { ref?: Ref<QueryListRef<Item, Value, Data>> },\n) => ReactElement\n\nexport default QueryList\n","export { default as QueryList, QueryListAction } from './QueryList'\nexport type { QueryListProps, QueryListRef } from './QueryList'\nexport { useQueryListStore } from './stores'\n","import type { ModalProps } from 'antd'\nimport { Modal } from 'antd'\nimport { type ReactNode, useMemo, useState } from 'react'\nimport { create } from 'zustand'\n\ninterface ModalState {\n open: Map<number, boolean>\n getOpen: (uuid: number) => boolean\n show: (uuid: number) => void\n hide: (uuid: number) => void\n hideAll: () => void\n}\n\nexport const useModalStore = create<ModalState>((set, get) => ({\n open: new Map(),\n getOpen: uuid => get().open.get(uuid) ?? false,\n show(uuid) {\n set({ open: new Map(get().open).set(uuid, true) })\n },\n hide(uuid) {\n set({ open: new Map(get().open).set(uuid, false) })\n },\n hideAll() {\n set({ open: new Map() })\n },\n}))\n\nexport interface UseModalOperation {\n hide: () => void\n}\n\nexport interface UseModalProps extends Omit<ModalProps, 'open' | 'confirmLoading' | 'onOk' | 'onCancel'> {\n content?: ReactNode | ((operation: UseModalOperation) => ReactNode)\n onConfirm?: () => void | Promise<void>\n}\n\nlet id = 0\n\nexport function useModal(props: UseModalProps) {\n const { content, onConfirm, ...modalProps } = props\n const uuid = useMemo(() => ++id, [])\n const modalStore = useModalStore()\n const open = modalStore.getOpen(uuid)\n const [confirmLoading, setConfirmLoading] = useState(false)\n\n const isRenderFunction = typeof content === 'function'\n\n const show = () => {\n modalStore.show(uuid)\n }\n\n const hide = () => {\n modalStore.hide(uuid)\n }\n\n const onCancel: ModalProps['onCancel'] = () => {\n hide()\n }\n\n const onOk = async () => {\n try {\n setConfirmLoading(true)\n await onConfirm?.()\n } finally {\n setConfirmLoading(false)\n }\n }\n\n const internalModal = (\n <Modal {...modalProps} open={open} confirmLoading={confirmLoading} onOk={onOk} onCancel={onCancel}>\n {isRenderFunction ? content({ hide }) : content}\n </Modal>\n )\n\n return {\n uuid,\n show,\n hide,\n modal: internalModal,\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance, FormProps } from 'antd'\nimport { Form } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { ReactNode } from 'react'\nimport { useState } from 'react'\nimport type { UseModalOperation, UseModalProps } from './modal'\nimport { useModal } from './modal'\n\ntype RecursivePartial<T> =\n NonNullable<T> extends object\n ? {\n [P in keyof T]?: NonNullable<T[P]> extends (infer U)[]\n ? RecursivePartial<U>[]\n : NonNullable<T[P]> extends object\n ? RecursivePartial<T[P]>\n : T[P]\n }\n : T\n\nexport interface UseFormModalProps<Values extends AnyObject = AnyObject, ExtraValues = any>\n extends Omit<UseModalProps, 'afterClose' | 'onConfirm' | 'content'> {\n formProps?: Omit<FormProps, 'form'>\n form?: FormInstance<Values>\n content?: ReactNode | ((extraValues: ExtraValues, operation: UseModalOperation) => ReactNode)\n onConfirm?: (values: Values, extraValues: ExtraValues) => void | Promise<void>\n}\n\nexport function useFormModal<Values extends AnyObject = AnyObject, ExtraValues = any>(\n props: UseFormModalProps<Values, ExtraValues>,\n) {\n const { content, form, formProps, onConfirm, ...modalProps } = props\n const [internalExtraValues, setInternalExtraValues] = useState<ExtraValues>({} as ExtraValues)\n let [internalForm] = Form.useForm<Values>()\n internalForm = form || internalForm\n\n const isRenderFunction = typeof content === 'function'\n\n const hanldeConfirm = async () => {\n const values = await internalForm.validateFields()\n await onConfirm?.(values, internalExtraValues as ExtraValues)\n hide()\n }\n\n const afterClose = () => {\n internalForm.resetFields()\n }\n\n const { uuid, show, hide, modal } = useModal({\n ...modalProps,\n content: operation => (\n <Form {...formProps} form={internalForm}>\n {isRenderFunction ? content(internalExtraValues as ExtraValues, operation) : content}\n </Form>\n ),\n onConfirm: hanldeConfirm,\n afterClose,\n })\n\n const onShow = ({\n initialValues,\n extraValues,\n }: {\n initialValues?: RecursivePartial<Values>\n extraValues?: ExtraValues\n } = {}) => {\n if (extraValues) {\n setInternalExtraValues(extraValues)\n }\n\n if (initialValues) {\n internalForm.setFieldsValue(initialValues)\n }\n\n show()\n }\n\n return {\n uuid,\n show: onShow,\n hide,\n modal,\n }\n}\n","import useSWR from 'swr'\nimport useSWRMutation from 'swr/mutation'\nimport { useToolkitsContext } from '../../../components/contextProvider'\nimport type { Game } from '../../../components/layout'\nimport { APP_ID_HEADER_NAME } from '../../../constants'\nimport { usePermission } from '../../../hooks/permission'\nimport { request } from '../../../utils/request'\nimport type { PermissionEnumItem, RoleEnumItem, RoleV1, RoleV2 } from '../types'\n\nexport function useAllPermissions() {\n return useSWR('/api/usystem/user/allPermssions', url =>\n request<PermissionEnumItem[]>(url, { headers: { [APP_ID_HEADER_NAME]: 'global' } }).then(response => response.data),\n )\n}\n\nexport function useAllPermissionsV2() {\n return useSWR('/api/usystem/user/allPermissionsV2', url =>\n request<{\n game: Game[]\n permission: PermissionEnumItem[]\n }>(url, { headers: { [APP_ID_HEADER_NAME]: 'global' } }).then(response => response.data),\n )\n}\n\nexport function useAllRoles() {\n const { accessible } = usePermission('200005', { headers: { [APP_ID_HEADER_NAME]: 'global' } })\n return useSWR(accessible ? '/api/usystem/role/all' : null, url =>\n request<RoleEnumItem[]>(url, { headers: { [APP_ID_HEADER_NAME]: 'global' } }).then(response => response.data),\n )\n}\n\nexport function useRole(name: string) {\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n return useSWR(`/api/usystem/role/${usePermissionApiV2 ? 'infoV2' : 'info'}?name=${name}`, (url: string) =>\n request<RoleV1 | RoleV2>(url, { headers: { [APP_ID_HEADER_NAME]: 'global' } }).then(response => response.data),\n )\n}\n\nexport function useCreateRole() {\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n\n return useSWRMutation(\n usePermissionApiV2 ? '/api/usystem/role/createV2' : '/api/usystem/role/create',\n (\n url: string,\n {\n arg,\n }: {\n arg: { name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n\nexport function useUpdateRole() {\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n\n return useSWRMutation(\n usePermissionApiV2 ? '/api/usystem/role/updateV2' : '/api/usystem/role/update',\n (\n url: string,\n {\n arg,\n }: {\n arg: { id: number; name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n\nexport function useRemoveRole() {\n return useSWRMutation(\n '/api/usystem/role/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: number; name: string }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n\nexport function useCreateUser() {\n return useSWRMutation(\n '/api/usystem/user/create',\n (\n url,\n {\n arg,\n }: {\n arg: { name: string; roles: string[] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n\nexport function useUpdateUser() {\n return useSWRMutation(\n '/api/usystem/user/update',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string; roles: string[] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n\nexport function useRemoveUser() {\n return useSWRMutation(\n '/api/usystem/user/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n","import { Checkbox, Col, Collapse, Row } from 'antd'\nimport type { CheckboxChangeEvent } from 'antd/es/checkbox'\nimport type { FC } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport type { PermissionEnumItem } from '../../types'\n\ninterface PermissionCollapseProps {\n expand?: boolean\n permissions?: PermissionEnumItem[]\n readonly?: boolean\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nconst PermissionCollapse: FC<PermissionCollapseProps> = props => {\n const { permissions, readonly, expand, value, onChange } = props\n const [activeKey, setActiveKey] = useState<string[]>([])\n const [checkedMap, setCheckedMap] = useState<Record<string, boolean>>({})\n const [internalValue, setInternalValue] = useState<string[]>(value ?? [])\n const { t } = useTranslation()\n\n const onCollapseChange = useCallback((key: string | string[]) => {\n setActiveKey(key as string[])\n }, [])\n\n const getCheckedValue = (checkedValue: boolean, codes: string[]) => {\n let tempValue: string[] = []\n\n if (checkedValue) {\n tempValue = [...new Set(internalValue.concat(codes))]\n } else {\n tempValue = internalValue.slice()\n\n codes.forEach(code => {\n const index = tempValue.findIndex(item => item === code)\n if (index > -1) {\n tempValue.splice(index, 1)\n }\n })\n }\n\n return tempValue\n }\n\n const onCheckChange = (e: CheckboxChangeEvent, codes: string[]) => {\n const checkedValue = getCheckedValue(e.target.checked, codes)\n setInternalValue(checkedValue)\n onChange?.(checkedValue)\n }\n\n useEffect(() => {\n setInternalValue(value ?? [])\n }, [value])\n\n useEffect(() => {\n if (expand) {\n setActiveKey((permissions ?? []).map(({ category }) => category))\n }\n }, [expand, permissions])\n\n useEffect(() => {\n const checkedValue = (permissions ?? []).reduce(\n (acc, curr) => {\n acc[curr.category] = curr.permissions.every(item => internalValue?.includes(item.value))\n return acc\n },\n {} as Record<string, boolean>,\n )\n\n setCheckedMap(checkedValue)\n }, [internalValue, permissions])\n\n return (\n <Collapse\n style={{ width: '100%' }}\n collapsible=\"header\"\n activeKey={activeKey}\n items={(permissions ?? []).map(item => ({\n key: item.category,\n label: item.category,\n extra: !readonly && (\n <Checkbox\n checked={checkedMap[item.category]}\n onChange={e => {\n onCheckChange(\n e,\n item.permissions.map(permission => permission.value),\n )\n }}\n >\n {t('global.selectAll')}\n </Checkbox>\n ),\n children: (\n <Checkbox.Group style={{ width: '100%' }} value={internalValue} disabled={readonly}>\n <Row gutter={[10, 10]} style={{ width: '100%' }}>\n {item.permissions.map(permission => (\n <Col key={permission.value} span={6}>\n <Checkbox\n value={permission.value}\n onChange={e => {\n onCheckChange(e, [permission.value])\n }}\n >\n {permission.label}\n </Checkbox>\n </Col>\n ))}\n </Row>\n </Checkbox.Group>\n ),\n }))}\n onChange={onCollapseChange}\n />\n )\n}\n\nexport default PermissionCollapse\n","import { Skeleton, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissions } from '../../hooks'\nimport type { RoleV1 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from '../permissionList'\n\nconst { Text } = Typography\n\ninterface PermissionListV1Props extends PermissionListPropsBase {\n value?: RoleV1['permissions']\n onChange?: (checkedValue: RoleV1['permissions']) => void\n}\n\nconst PermissionListV1: FC<PermissionListV1Props> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: permissions, isLoading, error } = useAllPermissions()\n const { t } = useTranslation()\n\n if (error) {\n return (\n <div className=\"flex justify-center\">\n <Text type=\"danger\">{t('PermissionList.failedDescription')}</Text>\n </div>\n )\n }\n\n return (\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value}\n permissions={permissions}\n readonly={readonly}\n expand={expand}\n onChange={onChange}\n />\n </Skeleton>\n )\n}\n\nexport default PermissionListV1\n","import { Button, Card, Divider, Empty, Select, Skeleton, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect, useState } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissionsV2 } from '../../hooks'\nimport type { RoleV2 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from '../permissionList'\n\nconst { Text } = Typography\nconst { Option } = Select\n\ninterface PermissionListV2Props extends PermissionListPropsBase {\n value?: RoleV2['permissions']\n onChange?: (checkedValue: RoleV2['permissions']) => void\n}\n\nconst PermissionListV2: FC<PermissionListV2Props> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: { permission, game: games } = {}, isLoading, error } = useAllPermissionsV2()\n const [gameList, setGameList] = useState<{ gameId: string; permissions: string[] }[]>([])\n const globalPermissions = permission?.filter(item => item.is_common)\n const gamePermissions = permission?.filter(item => !item.is_common)\n const { t } = useTranslation()\n\n useEffect(() => {\n const list: { gameId: string; permissions: string[] }[] = []\n\n Object.keys(value ?? {}).forEach(key => {\n if (key !== 'global') {\n list.push({ gameId: key, permissions: value?.[key] ?? [] })\n }\n })\n\n setGameList(list)\n }, [value])\n\n if (error) {\n return (\n <div className=\"flex justify-center\">\n <Text type=\"danger\">{t('PermissionList.failedDescription')}</Text>\n </div>\n )\n }\n\n const addGame = () => {\n setGameList(prev => [...prev, { gameId: '', permissions: [] }])\n }\n\n const removeGame = (index: number) => {\n setGameList(prev => prev.filter((_, i) => i !== index))\n }\n\n return (\n <div className=\"flex flex-col w-full\">\n <div className=\"mb-12\">\n <Divider dashed>{t('PermissionList.baseSectionTitle')}</Divider>\n </div>\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value?.global}\n readonly={readonly}\n permissions={globalPermissions}\n expand={expand}\n onChange={newValue => {\n onChange?.({\n ...value,\n global: newValue,\n })\n }}\n />\n </Skeleton>\n <div className=\"my-12\">\n <Divider dashed>{t('PermissionList.gameSectionTitle')}</Divider>\n </div>\n {gameList.map((item, index) => (\n <Card\n title={\n <Space>\n <Text>{t('global.game')}</Text>\n {readonly ? (\n <Text>{games?.find(game => String(game.id) === item.gameId)?.name}</Text>\n ) : (\n <Select\n disabled={readonly}\n value={gameList[index].gameId || undefined}\n style={{ width: '160px' }}\n placeholder={t('PermissionList.gameSelectPlaceholder')}\n onChange={selectedValue => {\n setGameList(pev => {\n const temp = pev.slice()\n temp[index].gameId = selectedValue\n return temp\n })\n }}\n >\n {games?.map(game => (\n <Option\n key={game.id}\n value={game.id}\n disabled={gameList.some(({ gameId }) => gameId === String(game.id))}\n >\n {game.name}\n </Option>\n ))}\n </Select>\n )}\n </Space>\n }\n key={index}\n className=\"mb-6\"\n extra={\n !readonly && (\n <Button\n type=\"link\"\n onClick={() => {\n removeGame(index)\n }}\n >\n {t('PermissionList.removeText')}\n </Button>\n )\n }\n >\n {gameList[index].gameId ? (\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value?.[gameList[index].gameId]}\n readonly={readonly}\n expand={expand}\n permissions={gamePermissions}\n onChange={newValue => {\n onChange?.({\n ...value,\n [gameList[index].gameId]: newValue,\n })\n }}\n />\n </Skeleton>\n ) : (\n <Empty description={t('PermissionList.gameSectionDescription')} />\n )}\n </Card>\n ))}\n {!readonly && (\n <Button block type=\"dashed\" onClick={addGame}>\n {t('PermissionList.addText')}\n </Button>\n )}\n </div>\n )\n}\n\nexport default PermissionListV2\n","import type { FC } from 'react'\nimport { useToolkitsContext } from '../../../../components/contextProvider'\nimport type { RoleV1, RoleV2 } from '../../types'\nimport PermissionListV1 from '../permissionListV1'\nimport PermissionListV2 from '../permissionListV2'\n\nexport interface PermissionListPropsBase {\n expand?: boolean\n readonly?: boolean\n}\n\ninterface PermissionListProps extends PermissionListPropsBase {\n value?: RoleV1['permissions'] | RoleV2['permissions']\n onChange?: (checkedValue: RoleV1['permissions'] | RoleV2['permissions']) => void\n}\n\nconst PermissionList: FC<PermissionListProps> = (props: PermissionListProps) => {\n const { value } = props\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n\n return (\n <>\n {usePermissionApiV2 ? (\n <PermissionListV2 {...props} value={value as RoleV2['permissions']} />\n ) : (\n <PermissionListV1 {...props} value={value as RoleV1['permissions']} />\n )}\n </>\n )\n}\n\nexport default PermissionList\n","export interface PermissionEnumItem {\n category: string\n is_common?: boolean\n permissions: {\n label: string\n value: string\n route: string\n }[]\n}\n\nexport interface RoleEnumItem {\n id: string\n name: string\n}\n\nexport type RoleListItem = RoleV1 | RoleV2\n\nexport interface RoleV1 {\n id: number\n name: string\n ctime: string\n permissions: string[]\n}\n\nexport interface RoleV2 {\n id: number\n name: string\n ctime: string\n permissions: Record<string, string[]>\n}\n\nexport interface UserListItem {\n id: string\n name: string\n ctime: string\n roles: string[]\n}\n","export { default as PermissionList } from './components/permissionList'\nexport * from './hooks'\nexport * from './types'\n","import { UserAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Col, Form, Input, Row, Select, Space, Tag } from 'antd'\nimport { produce } from 'immer'\nimport type { FC } from 'react'\nimport { Link } from 'react-router-dom'\nimport { Highlight } from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { QueryList } from '../../../components/queryList'\nimport { useQueryListStore } from '../../../components/queryList/stores'\nimport type { UserListItem } from '../../../features/permission'\nimport { useAllRoles, useCreateUser, useRemoveUser, useUpdateUser } from '../../../features/permission'\nimport type { UseFormModalProps } from '../../../hooks/formModal'\nimport { useFormModal } from '../../../hooks/formModal'\n\nconst { Option } = Select\n\nexport const route = '/api/usystem/user/list'\n\ninterface FormSchema {\n id: string\n name: string\n roles: string[]\n}\n\ninterface ExtraValues {\n id: string\n}\n\nconst useModal = (isCreate?: boolean) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { refetch, mutate } = useQueryListStore()\n const { data: roles, isLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n\n const title = isCreate ? t('UserList.createTitle') : t('UserList.updateTitle')\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} />\n </Form.Item>\n <Form.Item label={t('global.role')} name=\"roles\">\n <Select allowClear mode=\"multiple\" loading={isLoading}>\n {(roles ?? []).map(role => (\n <Option value={role.name} key={role.id}>\n {role.name}\n </Option>\n ))}\n </Select>\n </Form.Item>\n </>\n )\n\n const onConfirm: UseFormModalProps<FormSchema, ExtraValues>['onConfirm'] = async (values, extraValues) => {\n if (isCreate) {\n await create.trigger(values)\n refetch(route, { page: 1 })\n message.success(t('UserList.createSuccessfully'))\n } else {\n await update.trigger(values)\n mutate<{ List: UserListItem[]; Total: number }>(\n route,\n prev => {\n return produce(prev, draft => {\n if (draft?.List) {\n const index = draft.List?.findIndex(item => item.id === extraValues?.id)\n if (index !== -1) {\n draft.List[index].roles = values.roles\n }\n }\n })\n },\n { revalidate: false },\n )\n message.success(t('UserList.updateSuccessfully'))\n }\n }\n\n return useFormModal({\n title,\n formProps: {\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n\nconst UserList: FC = () => {\n const { modal, message } = App.useApp()\n const remove = useRemoveUser()\n const { mutate } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useModal(true)\n const { show: showUpdateModal, modal: updateModal } = useModal()\n const { t } = useTranslation()\n\n const columns: TableColumnsType<UserListItem> = [\n {\n title: t('global.name'),\n dataIndex: 'name',\n key: 'name',\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\n title: t('global.role'),\n dataIndex: 'roles',\n key: 'roles',\n width: '40%',\n render(value: string[]) {\n return (\n <Row gutter={[4, 4]}>\n {(value || []).map((item: string) => (\n <Col key={item}>\n {item === 'root' ? (\n <Tag color=\"#f50\">{item}</Tag>\n ) : (\n <Tag color=\"#ff5a00\">\n <Link to={`../role/${item}`}>{item}</Link>\n </Tag>\n )}\n </Col>\n ))}\n </Row>\n )\n },\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'Ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (value: UserListItem) => (\n <Space>\n <PermissionButton\n isGlobal\n size=\"small\"\n type=\"link\"\n code=\"100003\"\n onClick={() => {\n showUpdateModal({\n initialValues: {\n name: value.name,\n roles: value.roles,\n },\n extraValues: {\n id: value.id,\n },\n })\n }}\n >\n {t('global.update')}\n </PermissionButton>\n <PermissionButton\n isGlobal\n danger\n size=\"small\"\n code=\"100004\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('UserList.deleteTitle'),\n content: (\n <Highlight texts={[value.name]}>{t('UserList.deleteContent', { user: value.name })}</Highlight>\n ),\n async onOk() {\n await remove.trigger({\n id: value.id,\n name: value.name,\n })\n mutate<{ List: UserListItem[]; Total: number }>(route, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === value.id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('UserList.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n ),\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.user')}\n extra={\n <PermissionButton\n isGlobal\n type=\"primary\"\n icon={<UserAddOutlined />}\n code=\"100002\"\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('UserList.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<UserListItem, undefined, { List: UserListItem[]; Total: number }>\n isGlobal\n code=\"100001\"\n route={route}\n rowKey=\"id\"\n columns={columns}\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default UserList\n","import { UsergroupAddOutlined } from '@ant-design/icons'\nimport type { FormProps, TableColumnsType } from 'antd'\nimport { App, Card, Form, Input, Space } from 'antd'\nimport { produce } from 'immer'\nimport { Link } from 'react-router-dom'\nimport { useToolkitsContext } from '../../../components/contextProvider'\nimport { Highlight } from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { QueryList } from '../../../components/queryList'\nimport { useQueryListStore } from '../../../components/queryList/stores'\nimport { APP_ID_HEADER_NAME } from '../../../constants'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../../../features/permission'\nimport { PermissionList, useCreateRole, useRemoveRole, useUpdateRole } from '../../../features/permission'\nimport type { UseFormModalProps } from '../../../hooks/formModal'\nimport { useFormModal } from '../../../hooks/formModal'\nimport { usePermission } from '../../../hooks/permission'\nimport { request } from '../../../utils/request'\n\nconst route = '/api/usystem/role/list'\n\ninterface FormSchema {\n name: string\n permissions: RoleListItem['permissions']\n}\n\nconst useModal = (isCreate?: boolean) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { refetch, mutate } = useQueryListStore()\n const create = useCreateRole()\n const update = useUpdateRole()\n\n const title = isCreate ? t('RoleList.createTitle') : t('RoleList.updateTitle')\n\n const formProps: FormProps = {\n layout: 'vertical',\n }\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} addonBefore=\"role_\" />\n </Form.Item>\n <Form.Item name=\"permissions\">\n <PermissionList />\n </Form.Item>\n </>\n )\n\n const onConfirm: UseFormModalProps<FormSchema, { id: number }>['onConfirm'] = async (values, extraValues) => {\n if (isCreate) {\n await create.trigger({\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n refetch(route, { page: 1 })\n message.success(t('RoleList.createSuccessfully'))\n } else {\n await update.trigger({\n id: extraValues?.id as number,\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n mutate<{ List: RoleListItem[]; Total: number }>(\n route,\n prev =>\n produce(prev, draft => {\n const match = draft?.List?.find(item => item.id === extraValues?.id)\n\n if (match) {\n match.permissions = values.permissions\n }\n }),\n { revalidate: false },\n )\n message.success(t('RoleList.updateSuccessfully'))\n }\n }\n\n return useFormModal<{\n name: string\n permissions: RoleV1['permissions'] | RoleV2['permissions']\n }>({\n title,\n width: '50vw',\n formProps,\n content,\n onConfirm,\n })\n}\n\nconst RoleList = () => {\n const { accessible: viewable } = usePermission('200005', { headers: { [APP_ID_HEADER_NAME]: 'global' } })\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n const { mutate } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useModal(true)\n const { show: showUpdateModal, modal: updateModal } = useModal()\n const remove = useRemoveRole()\n\n const handleUpdateBtnClick = async (record: RoleListItem) => {\n const { data: role } = await request<RoleV1 | RoleV2>(\n `/api/usystem/role/info${usePermissionApiV2 ? 'V2' : ''}?name=${record.name}`,\n { headers: { [APP_ID_HEADER_NAME]: 'global' } },\n )\n showUpdateModal({\n initialValues: {\n permissions: role?.permissions,\n name: role?.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: role?.id,\n },\n })\n }\n\n const columns: TableColumnsType<RoleListItem> = [\n {\n title: t('global.name'),\n key: 'name',\n render(value: RoleListItem) {\n if (viewable) {\n return (\n <Link to={`${value.name}`} relative=\"path\">\n {value.name}\n </Link>\n )\n } else {\n return <>{value.name}</>\n }\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (_, record) => {\n return (\n <Space size=\"small\">\n <PermissionButton\n isGlobal\n code=\"200003\"\n size=\"small\"\n type=\"link\"\n onClick={async () => {\n handleUpdateBtnClick(record)\n }}\n >\n {t('global.edit')}\n </PermissionButton>\n <PermissionButton\n isGlobal\n danger\n code=\"200004\"\n size=\"small\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('RoleList.deleteTitle'),\n content: (\n <Highlight texts={[record.name]}>{t('RoleList.deleteContent', { role: record.name })}</Highlight>\n ),\n async onOk() {\n await remove.trigger({\n id: record.id,\n name: record.name,\n })\n mutate<{ List: RoleListItem[]; Total: number }>(route, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === record.id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('RoleList.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n )\n },\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.role')}\n extra={\n <PermissionButton\n isGlobal\n type=\"primary\"\n code=\"200002\"\n icon={<UsergroupAddOutlined />}\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('RoleList.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<RoleListItem, undefined, { List: RoleListItem[]; Total: number }>\n isGlobal\n rowKey=\"name\"\n columns={columns}\n code=\"200001\"\n route={route}\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default RoleList\n","import { Breadcrumb, Card, Descriptions, Skeleton } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionList, useRole } from '../../../features/permission'\n\nconst RoleDetail = () => {\n const params = useParams()\n const { data, isLoading } = useRole(params.name as string)\n const { t } = useTranslation()\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: 24 }}\n items={[\n {\n key: '1',\n title: (\n <Link to=\"..\" relative=\"path\">\n {t('global.role')}\n </Link>\n ),\n },\n {\n key: '2',\n title: params.name,\n },\n ]}\n />\n <Card title={t('RoleDetail.title')}>\n <Skeleton loading={isLoading}>\n <Descriptions column={3} layout=\"vertical\">\n <Descriptions.Item label={t('global.name')}>{data?.name}</Descriptions.Item>\n <Descriptions.Item label=\"ID\">{data?.id}</Descriptions.Item>\n <Descriptions.Item label={t('global.creationTime')}>{data?.ctime}</Descriptions.Item>\n </Descriptions>\n <PermissionList readonly value={data?.permissions} />\n </Skeleton>\n </Card>\n </>\n )\n}\n\nexport default RoleDetail\n","import './styles/index.css'\nexport * from './components/contextProvider'\nexport * from './components/dynamicTags'\nexport * from './components/expandableParagraph'\nexport * from './components/filterFormWrapper'\nexport * from './components/highlight'\nexport * from './components/infiniteList'\nexport * from './components/layout'\nexport * from './components/navMenu'\nexport * from './components/permissionButton'\nexport * from './components/queryList'\nexport * from './components/requireGame'\nexport * from './components/requirePermission'\nexport * from './components/userWidget'\nexport * from './constants'\nexport * from './hooks/formModal'\nexport * from './hooks/modal'\nexport * from './hooks/permission'\nexport * from './hooks/token'\nexport { default as NotFound } from './pages/notFound'\nexport { default as OperationLogList } from './pages/operationLogList'\nexport { default as permissionRoutes } from './pages/permission'\nexport { default as SignIn } from './pages/signIn'\nexport * from './utils/request'\nexport * from './utils/storage'\n","import { PlusOutlined } from '@ant-design/icons'\nimport type { InputRef } from 'antd'\nimport { Input, Space, Tag, theme } from 'antd'\nimport type { CSSProperties, ChangeEvent, FC } from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { useTranslation } from '../locale'\n\nexport interface DynamicTagsProps {\n initialTags?: string[]\n addable?: boolean\n removable?: boolean\n // 返回 Promise。如果返回 Promise.resolve(true),则添加; 如果返回 Promise.resolve(false) 或 Promise.reject,则不添加\n addCallback?: (addedTag: string) => Promise<boolean>\n // 返回 Promise。如果返回 Promise.resolve(true),则删除; 如果返回 Promise.resolve(false) 或 Promise.reject,则不删除\n removeCallback?: (removedTag: string) => Promise<boolean>\n}\n\nconst DynamicTags: FC<DynamicTagsProps> = props => {\n const { initialTags, addable, removable, addCallback, removeCallback } = props\n const { t } = useTranslation()\n const { token } = theme.useToken()\n const [tags, setTags] = useState<string[]>([])\n const [inputVisible, setInputVisible] = useState(false)\n const [inputValue, setInputValue] = useState('')\n const [editInputIndex, setEditInputIndex] = useState(-1)\n const [editInputValue, setEditInputValue] = useState<string>('')\n const inputRef = useRef<InputRef>(null)\n const editInputRef = useRef<InputRef>(null)\n\n useEffect(() => {\n setTags(initialTags ?? [])\n }, [initialTags])\n\n useEffect(() => {\n if (inputVisible) {\n inputRef.current?.focus()\n }\n }, [inputVisible])\n\n useEffect(() => {\n editInputRef.current?.focus()\n }, [inputValue])\n\n const handleClose = async (removedTag: string) => {\n const success = await removeCallback?.(removedTag)\n\n if (success) {\n const newTags = tags.filter(tag => tag !== removedTag)\n setTags(newTags)\n }\n }\n\n const showInput = () => {\n setInputVisible(true)\n }\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputConfirm = async () => {\n if (inputValue && tags.indexOf(inputValue) === -1) {\n const success = await addCallback?.(inputValue)\n\n if (success) {\n setTags([...tags, inputValue])\n }\n }\n\n setInputVisible(false)\n setInputValue('')\n }\n\n const handleEditInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setEditInputValue(e.target.value)\n }\n\n const handleEditInputConfirm = () => {\n const newTags = [...tags]\n newTags[editInputIndex] = editInputValue\n setTags(newTags)\n setEditInputIndex(-1)\n setInputValue('')\n }\n\n const tagInputStyle: CSSProperties = {\n width: 78,\n verticalAlign: 'top',\n }\n\n const tagPlusStyle: CSSProperties = {\n background: token.colorBgContainer,\n borderStyle: 'dashed',\n }\n\n return (\n <Space wrap size={[0, 8]}>\n <Space wrap size={[0, 8]}>\n {tags.map((tag, index) => {\n if (editInputIndex === index) {\n return (\n <Input\n ref={editInputRef}\n key={tag}\n size=\"small\"\n style={tagInputStyle}\n value={editInputValue}\n onChange={handleEditInputChange}\n onBlur={handleEditInputConfirm}\n onPressEnter={handleEditInputConfirm}\n />\n )\n }\n\n return (\n <Tag\n key={tag}\n closable={removable}\n style={{ userSelect: 'none' }}\n onClose={async e => {\n e.preventDefault()\n await handleClose(tag)\n }}\n >\n <span\n onDoubleClick={e => {\n if (index !== 0) {\n setEditInputIndex(index)\n setEditInputValue(tag)\n e.preventDefault()\n }\n }}\n >\n {tag}\n </span>\n </Tag>\n )\n })}\n </Space>\n {addable &&\n (inputVisible ? (\n <Input\n ref={inputRef}\n type=\"text\"\n size=\"small\"\n style={tagInputStyle}\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputConfirm}\n onPressEnter={handleInputConfirm}\n />\n ) : (\n <Tag style={tagPlusStyle} onClick={showInput}>\n <PlusOutlined />\n {t('global.add')}\n </Tag>\n ))}\n </Space>\n )\n}\n\nexport default DynamicTags\n","import { Typography } from 'antd'\nimport type { ParagraphProps } from 'antd/es/typography/Paragraph'\nimport type { FC } from 'react'\nimport { useState } from 'react'\n\nexport type ExpandableParagraphProps = Omit<ParagraphProps, 'ellipsis' | 'className'>\n\nconst ExpandableParagraph: FC<ExpandableParagraphProps> = props => {\n const { children, ...restProps } = props\n const [expanded, setExpanded] = useState(false)\n\n return (\n <Typography.Paragraph\n {...restProps}\n className=\"mb-0\"\n ellipsis={{\n rows: 2,\n expandable: 'collapsible',\n expanded,\n onExpand: (_, info) => {\n setExpanded(info.expanded)\n },\n }}\n >\n {children}\n </Typography.Paragraph>\n )\n}\n\nexport default ExpandableParagraph\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { Button, Form, Result, Spin, Table } from 'antd'\nimport type { TableProps } from 'antd/es/table'\nimport qs from 'query-string'\nimport type { Key, ReactNode } from 'react'\nimport { useEffect, useMemo, useState } from 'react'\nimport useSWRInfinite from 'swr/infinite'\nimport { APP_ID_HEADER_NAME } from '../../constants'\nimport { usePermission } from '../../hooks/permission'\nimport { request } from '../../utils/request'\nimport { useToolkitsContext } from '../contextProvider'\nimport { FilterFormWrapper } from '../filterFormWrapper'\nimport { useGameStore } from '../layout'\nimport { useTranslation } from '../locale'\n\ninterface InfiniteListExtra<Values> {\n key: Key\n children: ReactNode | ((form: FormInstance<Values>) => ReactNode)\n}\n\nexport interface InfiniteListProps<Item, Values, Response>\n extends Pick<TableProps<Item>, 'columns' | 'rowKey' | 'tableLayout' | 'expandable' | 'rowSelection' | 'bordered'> {\n action: string\n getRowKey: (response: Response) => any\n getDataSource: (data: Response[] | undefined) => Item[]\n code?: string\n headers?: Record<string, string> | ((form: FormInstance<Values>) => Record<string, string>)\n renderForm?: (form: FormInstance<Values>) => ReactNode\n transformArg: (values: Values, rowKey?: string) => Record<any, any>\n hasMore?: (data: Response[] | undefined) => boolean\n isGlobal?: boolean\n extras?: InfiniteListExtra<Values>[]\n}\n\nconst InfiniteList = <Item extends object, Values extends object | undefined = undefined, Response = any>(\n props: InfiniteListProps<Item, Values, Response>,\n) => {\n const {\n code,\n action,\n extras,\n headers,\n isGlobal,\n getRowKey,\n getDataSource,\n hasMore,\n renderForm,\n transformArg,\n ...tableProps\n } = props\n const { t } = useTranslation()\n const [form] = Form.useForm<Values>()\n const { accessible, isLoading } = usePermission(code)\n const [isValid, setIsValid] = useState(false)\n const [formValues, setFormValues] = useState<Values>()\n\n const getKey = (pageIndex: number, previousPageData: Response) => {\n if (!isValid) return null\n\n const rowKey = pageIndex !== 0 ? getRowKey(previousPageData) : undefined\n const args = transformArg(formValues as Values, rowKey)\n const queryString = qs.stringify(args)\n\n return queryString ? `${action}?${qs.stringify(args)}` : action\n }\n\n const { game } = useGameStore()\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n\n const _headers = useMemo(() => {\n const newHeaders = new Headers(typeof headers === 'function' ? headers(form) : headers)\n\n if (usePermissionApiV2) {\n if (isGlobal) {\n newHeaders.set(APP_ID_HEADER_NAME, 'global')\n } else if (game) {\n newHeaders.set(APP_ID_HEADER_NAME, String(game.id))\n }\n }\n return newHeaders\n }, [usePermissionApiV2, isGlobal, game, headers])\n\n const {\n data,\n size,\n setSize,\n isValidating: isListValidating,\n } = useSWRInfinite(\n getKey,\n arg => {\n return request<Response>(arg, {\n headers: _headers,\n }).then(response => response.data)\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n revalidateFirstPage: false,\n },\n )\n\n const dataSource = getDataSource(data)\n const isLoadingMore = isListValidating || (size > 0 && data && typeof data[size - 1] === 'undefined')\n const isReachingEnd = typeof hasMore !== 'undefined' ? !hasMore(data) : true\n const isEmpty = !dataSource || dataSource.length === 0\n\n const onConfirm = async () => {\n const values = await form.getFieldsValue()\n setFormValues(values)\n\n try {\n await form.validateFields()\n setSize(1)\n setIsValid(true)\n } catch (_) {\n setSize(0)\n setIsValid(false)\n }\n }\n\n const loadMore = () => {\n setSize(size + 1)\n }\n\n const onReset = async () => {\n try {\n form.resetFields()\n await form.validateFields({ validateOnly: true })\n setSize(1)\n } catch (_) {\n setSize(0)\n }\n }\n\n useEffect(() => {\n if (accessible) {\n form\n .validateFields({ validateOnly: true })\n .then(values => {\n setFormValues(values)\n setIsValid(true)\n })\n .catch(() => {\n setIsValid(false)\n })\n }\n }, [accessible])\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n return (\n <>\n {renderForm ? (\n <FilterFormWrapper\n extras={extras?.map(extra => ({\n key: extra.key,\n children: typeof extra.children === 'function' ? extra.children(form) : extra.children,\n }))}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {renderForm(form)}\n </FilterFormWrapper>\n ) : (\n <Form form={form} />\n )}\n <Table {...tableProps} dataSource={dataSource} loading={isLoadingMore} pagination={false} />\n {!isEmpty && (\n <Button\n block\n loading={isLoadingMore}\n type=\"link\"\n htmlType=\"button\"\n disabled={isLoadingMore || isReachingEnd}\n onClick={loadMore}\n >\n {isLoadingMore\n ? t('InfiniteList.loadingText')\n : isReachingEnd\n ? t('InfiniteList.reachEndText')\n : t('InfiniteList.loadMoreText')}\n </Button>\n )}\n </>\n )\n}\n\nexport default InfiniteList\n","import { Result, Spin } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { APP_ID_HEADER_NAME } from '../../constants'\nimport { usePermission } from '../../hooks/permission'\nimport { useTranslation } from '../locale'\n\nexport interface RequirePermissionProps {\n code: string\n isGlobal?: boolean\n}\n\nconst RequirePermission: FC<PropsWithChildren<RequirePermissionProps>> = props => {\n const { code, isGlobal, children } = props\n const { accessible, isValidating } = usePermission(\n code,\n isGlobal ? { headers: { [APP_ID_HEADER_NAME]: 'global' } } : undefined,\n )\n const { t } = useTranslation()\n\n if (isValidating) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status=\"403\" subTitle={t('global.noEntitlement')} />\n }\n\n return <>{children}</>\n}\n\nexport default RequirePermission\n","import { Button, Result } from 'antd'\nimport type { FC } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from '../../components/locale'\n\ninterface NotFoundProps {\n redirectUrl?: string\n}\n\nconst NotFound: FC<NotFoundProps> = props => {\n const { redirectUrl } = props\n const navigate = useNavigate()\n const { t } = useTranslation()\n\n return (\n <div className=\"h-screen flex justify-center items-center\">\n <Result\n status=\"404\"\n title=\"404\"\n subTitle={t('NotFound.subTitle')}\n extra={\n redirectUrl && (\n <Button\n type=\"primary\"\n onClick={() => {\n navigate(redirectUrl)\n }}\n >\n {t('NotFound.buttonText')}\n </Button>\n )\n }\n />\n </div>\n )\n}\n\nexport default NotFound\n","import { Card, Form, Input, Select } from 'antd'\nimport type { ColumnsType } from 'antd/es/table'\nimport dayjs from 'dayjs'\nimport type { FC } from 'react'\nimport { ExpandableParagraph } from '../../components/expandableParagraph'\nimport { useTranslation } from '../../components/locale'\nimport { QueryList } from '../../components/queryList'\nimport type { OperationLogListItem } from './types'\n\nconst { Option } = Select\n\nconst OperationLogList: FC = () => {\n const { t } = useTranslation()\n\n const columns: ColumnsType<OperationLogListItem> = [\n {\n key: 'username',\n title: t('global.username'),\n dataIndex: 'uname',\n width: 100,\n },\n {\n key: 'label',\n title: t('global.label'),\n dataIndex: 'label',\n width: 150,\n },\n {\n key: 'method',\n title: t('global.method'),\n dataIndex: 'method',\n width: 100,\n },\n {\n key: 'route',\n title: t('global.route'),\n dataIndex: 'route',\n width: 200,\n },\n {\n key: 'request',\n title: t('global.request'),\n dataIndex: 'request',\n render(value: string) {\n return <ExpandableParagraph>{value}</ExpandableParagraph>\n },\n },\n {\n key: 'response',\n title: t('global.response'),\n dataIndex: 'response',\n render(value: string) {\n return <ExpandableParagraph>{value}</ExpandableParagraph>\n },\n },\n {\n key: 'creation_time',\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n width: 200,\n render(value: string) {\n return dayjs(value).format('YYYY-MM-DD HH:mm:ss')\n },\n },\n ]\n\n return (\n <Card title=\"操作日志\">\n <QueryList<\n OperationLogListItem,\n {\n uname?: string\n route?: string\n method?: 'get' | 'post'\n label?: string\n },\n {\n List: OperationLogListItem[]\n Total: number\n }\n >\n isGlobal\n rowKey=\"id\"\n code=\"300001\"\n columns={columns}\n tableLayout=\"fixed\"\n route=\"/api/usystem/log/list\"\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n renderForm={form => (\n <Form form={form} layout=\"inline\">\n <Form.Item label={t('global.username')} name=\"uname\">\n <Input allowClear />\n </Form.Item>\n <Form.Item label={t('global.route')} name=\"route\">\n <Input allowClear />\n </Form.Item>\n <Form.Item label={t('global.method')} name=\"method\">\n <Select allowClear style={{ width: '100px' }}>\n <Option value=\"get\">GET</Option>\n <Option value=\"post\">POST</Option>\n </Select>\n </Form.Item>\n <Form.Item label={t('global.label')} name=\"label\">\n <Input allowClear />\n </Form.Item>\n </Form>\n )}\n />\n </Card>\n )\n}\n\nexport default OperationLogList\n","import { lazy } from 'react'\nimport { Navigate, Route, Routes } from 'react-router-dom'\n\nconst UserList = lazy(() => import('./userList'))\nconst RoleList = lazy(() => import('./roleList'))\nconst RoleDetail = lazy(() => import('./roleDetail'))\n\nexport default (\n <Routes>\n <Route index element={<Navigate to=\"user\" />} />\n <Route path=\"user\" element={<UserList />} />\n <Route path=\"role\" element={<RoleList />} />\n <Route path=\"role/:name\" element={<RoleDetail />} />\n </Routes>\n)\n","import { Alert, Button, Divider, Form, Input, Space, Spin, Typography } from 'antd'\nimport type { FC, ReactNode } from 'react'\nimport { Navigate } from 'react-router-dom'\nimport useSWRImmutable from 'swr/immutable'\nimport { useTranslation } from '../../components/locale'\nimport { Logo } from '../../components/logo'\nimport { SSO_URL } from '../../constants'\nimport { useTokenStore } from '../../hooks/token'\nimport { request } from '../../utils/request'\nimport backgroundUrl from './background.svg'\n\ninterface SignInProps {\n title?: ReactNode\n successRedirectUrl: string\n extra?: ReactNode\n unregistered?: boolean\n}\n\nconst SignIn: FC<SignInProps> = props => {\n const { title, successRedirectUrl, extra, unregistered } = props\n // 当路由模式为 hash 模式时,Idaas 重定向会把 ticket 放到 hash 前面,此时的登录页的地址为标准的 URL 结构 \"/?ticket=xxx#/sign_in\"。\n // 然而 react-router-dom 无法从这种地址中获取到查询字符串,需要使用原生的 window.location.search。\n const queryParams = new URLSearchParams(window.location.search)\n const { token, setToken } = useTokenStore()\n const { t } = useTranslation()\n\n const { isLoading } = useSWRImmutable(\n queryParams.has('ticket') ? `/api/usystem/user/login?ticket=${queryParams.get('ticket')}` : null,\n url => request<{ token: string }>(url),\n {\n onSuccess: data => {\n setToken(data.data.token)\n },\n },\n )\n\n if (isLoading) {\n return (\n <div className=\"w-screen h-screen flex justify-center items-center\">\n <Spin />\n </div>\n )\n }\n\n if (token) {\n const hashMode = !!window.location.hash\n const path = successRedirectUrl\n\n if (!hashMode) {\n return <Navigate replace to={path} />\n }\n\n // 移除 ticket\n window.location.href = `${window.location.origin}${window.location.pathname}#${path}`\n\n return null\n }\n\n return (\n <div className=\"w-screen h-screen relative flex overflow-hidden\">\n <div className=\"absolute top-16 right-16 z-10\">{extra}</div>\n <div className=\"absolute left-14 top-6\">\n <Space align=\"center\">\n <Logo width={48} />\n {title}\n </Space>\n </div>\n <div className=\"flex-1 flex justify-center items-center bg-slate-50\">\n <img src={backgroundUrl} alt=\"background\" className=\"w-10/12\" />\n </div>\n <div className=\"w-[650px] relative top-0 left-0 right-0 bottom-0\">\n <div className=\"absolute top-1/2 -translate-y-1/2 left-0 right-0\">\n <div className=\"-translate-y-10 px-36\">\n <div className=\"flex flex-col justify-center\">\n <div className=\"h-10\">\n {unregistered && <Alert banner closable message={t('SignIn.unregistered')} type=\"error\" />}\n </div>\n <Typography.Title level={2}>{t('SignIn.welcome')}</Typography.Title>\n <div className=\"mt-4\">\n <Form layout=\"vertical\" autoComplete=\"off\">\n <Form.Item label={t('global.username')} name=\"username\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label={t('global.password')} name=\"password\" rules={[{ required: true }]}>\n <Input.Password />\n </Form.Item>\n <Form.Item>\n <Button block type=\"primary\" shape=\"round\" htmlType=\"submit\">\n {t('global.signIn')}\n </Button>\n </Form.Item>\n </Form>\n </div>\n <Divider plain dashed>\n {t('SignIn.thirdParty')}\n </Divider>\n <div className=\"flex justify-center items-center\">\n <Button\n block\n shape=\"round\"\n href={`${SSO_URL}/logout?service=${SSO_URL}/login?service=${window.location.href}`}\n target=\"_self\"\n >\n <Logo width={18} />\n {t('SignIn.signInWithIDass')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default SignIn\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/locale/en_GB.ts","../src/components/contextProvider/Provider.tsx","../src/components/contextProvider/index.ts","../src/components/locale/hooks.ts","../src/components/locale/index.ts","../src/components/filterFormWrapper/FilterFormWrapper.tsx","../src/components/filterFormWrapper/index.ts","../src/components/highlight/Highlight.tsx","../src/components/highlight/index.ts","../src/constants.ts","../src/components/logo/Logo.tsx","../src/components/logo/index.ts","../src/components/navMenu/stores.ts","../src/components/navMenu/utils.tsx","../src/components/navMenu/NavMenu.tsx","../src/components/navMenu/index.ts","../src/components/requireGame/RequireGame.tsx","../src/components/requireGame/index.ts","../src/hooks/token.ts","../src/components/userWidget/UserWidget.tsx","../src/components/userWidget/index.ts","../src/utils/storage.ts","../src/components/layout/stores.ts","../src/components/layout/GameSelect.tsx","../src/components/layout/style.css","../src/components/layout/Layout.tsx","../src/components/layout/index.ts","../src/utils/request.ts","../src/hooks/permission.ts","../src/components/permissionButton/PermissionButton.tsx","../src/components/permissionButton/index.ts","../src/components/queryList/stores.ts","../src/components/queryList/QueryList.tsx","../src/components/queryList/index.ts","../src/hooks/modal.tsx","../src/hooks/formModal.tsx","../src/features/permission/hooks/index.ts","../src/features/permission/components/permissionCollapse/index.tsx","../src/features/permission/components/permissionListV1/index.tsx","../src/features/permission/components/permissionListV2/index.tsx","../src/features/permission/components/permissionList/index.tsx","../src/features/permission/types/index.ts","../src/features/permission/index.ts","../src/pages/permission/userList/index.tsx","../src/pages/permission/roleList/index.tsx","../src/pages/permission/roleDetail/index.tsx","../src/index.ts","../src/components/dynamicTags/DynamicTags.tsx","../src/components/expandableParagraph/ExpandableParagraph.tsx","../src/components/infiniteList/InfiniteList.tsx","../src/components/requirePermission/RequirePermission.tsx","../src/pages/notFound/index.tsx","../src/pages/operationLogList/index.tsx","../src/pages/permission/index.tsx","../src/pages/signIn/index.tsx"],"names":["locale","theme","jsx","jsxs","Space","Fragment","useState","useEffect","route","NavMenu","useMemo","Spin","Antd","create","persist","get","init_stores","createJSONStorage","Typography","id","Layout","Button","useSWR","QueryListAction","data","Form","useRef","Result","Table","init_hooks","useCallback","Text","Option","Select","Divider","Skeleton","Card","Empty","init_permission","useModal","App","mutate","Input","Row","Col","Tag","Link","produce","qs","useNavigate","UserList","RoleList","RoleDetail","useSWRImmutable","Navigate"],"mappings":"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","file":"index.js","sourcesContent":["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 },\n SignIn: {\n title: 'Sign In Method',\n thirdParty: 'Third party sign in',\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 UserList: {\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 RoleList: {\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FC, PropsWithChildren } from 'react'\nimport { createContext, useContext, useRef } from 'react'\nimport { createStore, useStore } from 'zustand'\nimport type { RequestOptions } from '../../utils/request'\nimport type { Locale } from '../locale'\nimport enGb from '../locale/en_GB'\n\nexport interface ContextProps {\n locale: Locale\n usePermissionApiV2: boolean // 使用 V2 版本的权限接口\n gameApiV2: boolean\n interceptor?: {\n response?: (response: Response, opts: RequestOptions) => Promise<any>\n }\n}\n\nexport interface ContextState extends ContextProps {\n setContext: (props: Partial<ContextProps>) => void\n}\n\nconst createContextStore = (initProps?: Partial<ContextProps>) => {\n const DEFAULT_PROPS: ContextProps = {\n locale: enGb,\n usePermissionApiV2: false,\n gameApiV2: false,\n }\n\n return createStore<ContextState>()(set => ({\n ...DEFAULT_PROPS,\n ...initProps,\n setContext: props => {\n set({ ...props })\n },\n }))\n}\n\ntype ContextStore = ReturnType<typeof createContextStore>\n\n// 全局的 store 实例,等于最内层的 ContextProvider 所包含的实例。\nexport let contextStore: ContextStore\n\nconst ToolkitsContext = createContext<ContextStore | null>(null)\n\nexport function useToolkitsContext<T>(selector: (state: ContextState) => T) {\n const store = useContext(ToolkitsContext)\n if (!store) throw new Error('Missing ToolkitsContext.Provider in the tree')\n return useStore(store, selector)\n}\n\ntype ContextProviderProps = PropsWithChildren<Partial<ContextProps>>\n\n// TODO: 合并父级的 state\nconst ContextProvider: FC<ContextProviderProps> = props => {\n const { children, ...restProps } = props\n const storeRef = useRef<ContextStore>()\n\n if (!storeRef.current) {\n storeRef.current = createContextStore(restProps)\n }\n\n contextStore = storeRef.current\n\n return <ToolkitsContext.Provider value={storeRef.current}>{children}</ToolkitsContext.Provider>\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ContextProvider.displayName = 'ContextProvider'\n}\n\nexport default ContextProvider\n","export { default as ContextProvider, contextStore, useToolkitsContext } from './Provider'\nexport type { ContextState } from './Provider'\n","import { get, has, template } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport type { Locale } from './index'\n\ntype Join<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never\n\ntype Paths<T, D extends number = 10> = [D] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K]>> : never\n }[keyof T]\n : ''\n\nexport function useTranslation() {\n const locale = useToolkitsContext(state => state.locale)\n\n const t = useMemo(\n () => (key: Paths<Locale>, data?: Record<string, unknown>) =>\n has(locale, key) ? template(get(locale, key as string))(data) : key,\n [locale],\n )\n\n return { t }\n}\n","export type Locale = {\n global: {\n noEntitlement: string\n name: string\n creationTime: string\n operation: string\n update: string\n edit: string\n delete: string\n selectAll: string\n game: string\n user: string\n role: string\n username: string\n password: string\n label: string\n method: string\n route: string\n request: string\n response: string\n add: string\n signIn: string\n }\n SignIn: {\n title: string\n thirdParty: string\n signInWithIDass: string\n unregistered: string\n welcome: string\n }\n NotFound: {\n subTitle: string\n buttonText: string\n }\n FilterFormWrapper: {\n confirmText: string\n resetText: string\n }\n FormModal: {\n confirmText: string\n cancelText: string\n }\n GameSelect: {\n label: string\n placeholder: string\n }\n RequireGame: {\n description: string\n }\n UserWidget: {\n signOutText: string\n }\n UserList: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n RoleList: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n PermissionList: {\n failedDescription: string\n baseSectionTitle: string\n gameSectionTitle: string\n gameSectionDescription: string\n gameSelectPlaceholder: string\n removeText: string\n addText: string\n }\n RoleDetail: {\n title: string\n }\n InfiniteList: {\n loadingText: string\n reachEndText: string\n loadMoreText: string\n }\n}\n\nexport { useTranslation } from './hooks'\n","import { Button, Space, theme } from 'antd'\nimport type { Key, PropsWithChildren, ReactNode } from 'react'\nimport { Fragment } from 'react'\nimport { useTranslation } from '../locale'\n\nexport interface FilterFormWrapperProps extends PropsWithChildren {\n onConfirm?: () => void | Promise<void>\n onReset?: () => void\n extras?: { key: Key; children: ReactNode }[]\n isConfirming?: boolean\n buttonsAlign?: 'left' | 'right' | 'bottom'\n showReset?: boolean\n}\n\nconst FilterFormWrapper = (props: FilterFormWrapperProps) => {\n const { extras, isConfirming, onConfirm, onReset, children, buttonsAlign = 'left', showReset } = props\n const { t } = useTranslation()\n const {\n token: { colorFillAlter, lineWidth, lineType, colorBorder, borderRadiusLG },\n } = theme.useToken()\n\n const style = {\n maxWidth: 'none',\n background: colorFillAlter,\n borderWidth: lineWidth,\n borderStyle: lineType,\n borderColor: colorBorder,\n borderRadius: borderRadiusLG,\n padding: 24,\n marginBottom: 24,\n }\n\n return (\n <div style={style}>\n <div className={`flex ${buttonsAlign === 'bottom' ? 'flex-col' : 'flex-row'}`}>\n <div className={`${buttonsAlign === 'left' ? 'flex-grow-0' : 'flex-1'}`}>{children}</div>\n <div className={`${buttonsAlign === 'bottom' ? 'text-end' : 'text-start'} ml-4`}>\n <Space>\n <Button type=\"primary\" loading={isConfirming} onClick={onConfirm}>\n {t('FilterFormWrapper.confirmText')}\n </Button>\n {extras?.map(item => <Fragment key={item.key}>{item.children}</Fragment>)}\n {showReset && <Button onClick={onReset}>{t('FilterFormWrapper.resetText')}</Button>}\n </Space>\n </div>\n </div>\n </div>\n )\n}\n\nexport default FilterFormWrapper\n","export { default as FilterFormWrapper } from './FilterFormWrapper'\nexport type { FilterFormWrapperProps } from './FilterFormWrapper'\n","import type { PropsWithChildren, ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\nimport { flushSync } from 'react-dom'\nimport { createRoot } from 'react-dom/client'\n\nconst splitByTags = (str: string) => {\n const regex = /(<[^>]*>)/\n return str.split(regex).filter(part => part !== '')\n}\n\nfunction renderToString(node: ReactNode): Promise<string> {\n const container = document.createElement('div')\n const root = createRoot(container)\n\n return new Promise(resolve => {\n setTimeout(() => {\n flushSync(() => {\n root.render(node)\n })\n resolve(container.innerHTML)\n })\n })\n}\n\nexport interface HighlightProps extends PropsWithChildren {\n texts: Array<string | number>\n}\n\nconst Highlight = (props: HighlightProps) => {\n const { texts, children } = props\n const [htmlString, setHtmlString] = useState<string>('')\n\n useEffect(() => {\n renderToString(children).then(str => {\n const result = splitByTags(str)\n\n for (const text of texts) {\n for (let index = 0; index < result.length; index++) {\n // TODO: 忽略 HTML tag\n result[index] = result[index].replace(String(text), `<span style='color: #DC143C;'>${text}</span>`)\n }\n }\n\n setHtmlString(result.join(''))\n })\n }, [children, texts])\n\n return <div dangerouslySetInnerHTML={{ __html: htmlString }}></div>\n}\n\nexport default Highlight\n","export { default as Highlight } from './Highlight'\nexport type { HighlightProps } from './Highlight'\n","export const SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\n\nexport const APP_ID_HEADER_NAME = 'App-ID'\n","import type { DetailedHTMLProps, FC, ImgHTMLAttributes } from 'react'\nimport logoUrl from './logo.png'\n\nexport type LogoProps = Omit<DetailedHTMLProps<ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, 'src' | 'alt'>\n\nconst Logo: FC<LogoProps> = props => {\n return <img src={logoUrl} alt=\"logo\" {...props} />\n}\n\nexport default Logo\n","export { default as Logo } from './Logo'\nexport type { LogoProps } from './Logo'\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\n\nexport interface NavState {\n openKeys: string[]\n selectedKeys: string[]\n setOpenKeys: (keys: string[]) => void\n setSelectedKeys: (keys: string[]) => void\n}\n\nexport const useNavStore = create<NavState>()(\n persist(\n set => ({\n openKeys: [],\n setOpenKeys: keys => set({ openKeys: keys }),\n selectedKeys: [],\n setSelectedKeys: keys => set({ selectedKeys: keys }),\n }),\n {\n name: 'nav',\n storage: createJSONStorage(() => localStorage),\n partialize: state => ({\n openKeys: state.openKeys,\n selectedKeys: state.selectedKeys,\n }),\n },\n ),\n)\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ItemType, MenuDividerType } from 'antd/es/menu/interface'\nimport { Link } from 'react-router-dom'\nimport type { Merge } from 'ts-essentials'\nimport type { MenuItemGroupType2, MenuItemType2, NavMenuItem, SubMenuType2 } from './types'\n\n// 比对菜单配置与权限,任意子菜单项通过权限检查时返回 true,否则返回 false\nexport function checkChildren(children?: NavMenuItem[], permissions?: Record<string, boolean>): boolean {\n return (children ?? []).some(child => {\n if (child === null) {\n return false\n } else if ((child as MenuDividerType).type === 'divider') {\n return true\n } else {\n if ((child as SubMenuType2 | MenuItemGroupType2).children) {\n return checkChildren((child as SubMenuType2 | MenuItemGroupType2).children ?? [], permissions)\n } else {\n return !permissions || !(child as MenuItemType2).code || permissions[(child as MenuItemType2).code as string]\n }\n }\n })\n}\n\n// 将自定义的菜单配置转换为 antd 的菜单配置,同时根据权限过滤菜单项、添加 react-router-dom Link 等。\nexport function transformItems(items?: NavMenuItem[], permissions?: Record<string, boolean>) {\n const result: ItemType[] = []\n\n if (items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i] === null || (items[i] as MenuDividerType).type === 'divider') {\n result[i] = items[i] as null | MenuDividerType\n } else if ((items[i] as SubMenuType2 | MenuItemGroupType2).children) {\n const { children, ...rest } = items[i] as SubMenuType2 | MenuItemGroupType2\n result[i] = checkChildren(children, permissions)\n ? {\n ...rest,\n children: transformItems(children, permissions),\n }\n : null\n } else {\n const { route, label, code, ...rest } = items[i] as MenuItemType2\n const isPass = !code || !permissions || permissions[code]\n const labelNode = route ? <Link to={route}>{label}</Link> : label\n\n result[i] = isPass\n ? {\n ...rest,\n label: labelNode,\n }\n : null\n }\n }\n }\n\n return result\n}\n\n// 拍平导航配置,并且注入 keypath 字段\nexport function flatItems(\n items: NavMenuItem[],\n result: Merge<MenuItemType2, { keypath?: string[] }>[] = [],\n keypath: string[] = [],\n) {\n for (const item of items) {\n const children = (item as SubMenuType2 | MenuItemGroupType2)?.children as NavMenuItem[]\n\n if (Array.isArray(children)) {\n const keys =\n (item as MenuItemGroupType2)!.type !== 'group' && item!.key ? [...keypath, item!.key as string] : keypath\n flatItems(children, result, keys)\n } else if (item) {\n result.push(Object.assign(item as MenuItemType2, { keypath }))\n }\n }\n\n return result\n}\n","import type { MenuProps } from 'antd'\nimport { Menu, Spin } from 'antd'\nimport { memo, useCallback, useEffect, useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { usePermissions } from '../../hooks/permission'\nimport { useNavStore } from './stores'\nimport type { NavMenuItem } from './types'\nimport { flatItems, transformItems } from './utils'\n\nexport interface NavMenuProps {\n items?: NavMenuItem[]\n theme?: MenuProps['theme']\n loading?: boolean\n}\n\nconst NavMenu = memo(function NavMenu(props: NavMenuProps) {\n const { items, theme, loading } = props\n const location = useLocation()\n const flattenItems = useMemo(() => flatItems(items ?? []), [items])\n const codes = useMemo(() => flattenItems.map(item => item.code).filter(Boolean) as string[], [flattenItems])\n const { data: permissions, isLoading: isChecking } = usePermissions(codes, {\n headers: { APP_ID_HEADER_NAME: 'global' },\n })\n const internalItems = useMemo(() => transformItems(items ?? [], permissions), [items, permissions])\n const { openKeys, selectedKeys, setOpenKeys, setSelectedKeys } = useNavStore()\n\n const onOpenChange = useCallback(\n (keys: string[]) => {\n const lastOpenKey = keys?.find(key => openKeys?.indexOf(key) === -1)\n const match = flattenItems.find(item => lastOpenKey === item.key)\n setOpenKeys((match?.keypath ?? [lastOpenKey]) as string[])\n },\n [flattenItems, openKeys, setOpenKeys],\n )\n\n useEffect(() => {\n const match = flattenItems.find(item => location.pathname === item.route)\n\n if (match) {\n const key = match.key as string\n const keypath = match.keypath as string[]\n setSelectedKeys([key])\n setOpenKeys(keypath)\n }\n }, [flattenItems, location])\n\n if (loading || isChecking) {\n return (\n <div className=\"flex justify-center items-center\" style={{ height: 'calc(100vh - 64px)' }}>\n <Spin />\n </div>\n )\n }\n\n return (\n <Menu\n theme={theme}\n style={{ borderRight: 'none' }}\n items={internalItems}\n mode=\"inline\"\n openKeys={openKeys}\n selectedKeys={selectedKeys}\n onOpenChange={onOpenChange}\n />\n )\n})\n\nif (process.env.NODE_ENV === 'development') {\n NavMenu.displayName = 'NavMenu'\n}\n\nexport default NavMenu\n","export { default as NavMenu } from './NavMenu'\nexport type { NavMenuItem } from './types'\n","import * as Antd from 'antd'\nimport { Empty } from 'antd'\nimport { type FC, type PropsWithChildren } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { useGameStore } from '../layout'\nimport { useTranslation } from '../locale'\n\nconst { Spin } = Antd\n\ninterface RequireGameProps extends PropsWithChildren {\n hideGameSelect?: boolean\n}\n\nconst RequireGame: FC<RequireGameProps> = props => {\n const { hideGameSelect, children } = props\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n const { game, isLoading } = useGameStore()\n const { t } = useTranslation()\n\n if (isLoading) {\n return (\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n >\n <Spin />\n </div>\n )\n }\n\n if (usePermissionApiV2 && !hideGameSelect && !game) {\n return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={t('RequireGame.description')} />\n }\n\n return children\n}\n\nexport default RequireGame\n","export { default as RequireGame } from './RequireGame'\n","import { jwtDecode } from 'jwt-decode'\nimport useSWRImmutable from 'swr/immutable'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport { APP_ID_HEADER_NAME } from '../constants'\nimport { request } from '../utils/request'\n\ninterface UserInfo {\n authorityId: string\n exp: number\n}\n\nexport interface TokenState {\n token: string\n getUser: () => UserInfo | null\n setToken: (token: string) => void\n clearToken: () => void\n}\n\nexport const useTokenStore = create<TokenState>()(\n persist(\n (set, get, store) => ({\n token: '',\n getUser: () => {\n try {\n return jwtDecode(get().token) as UserInfo\n } catch (_) {\n return null\n }\n },\n setToken: token => set({ token }),\n clearToken: () => {\n get().setToken('')\n store.persist.clearStorage()\n },\n }),\n {\n name: 'token',\n partialize: state => ({ token: state.token }),\n },\n ),\n)\n\nexport function useTokenValidation(options?: { skip: false }) {\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n\n return useSWRImmutable(\n !options?.skip ? (usePermissionApiV2 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check') : null,\n (url: string) =>\n request(url, {\n method: 'POST',\n body: {\n permissions: ['100001'],\n },\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n","/* eslint-disable jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid */\nimport { LogoutOutlined, UserOutlined } from '@ant-design/icons'\nimport type { MenuProps } from 'antd'\nimport { Dropdown, Space } from 'antd'\nimport type { FC } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTokenStore } from '../../hooks/token'\nimport { useTranslation } from '../locale'\n\nexport interface UserWidgetProps {\n logoutRedirectUrl: string\n}\n\nconst UserWidget: FC<UserWidgetProps> = props => {\n const { logoutRedirectUrl } = props\n const { t } = useTranslation()\n const navigate = useNavigate()\n const { clearToken, getUser } = useTokenStore()\n const user = getUser()\n\n const items: MenuProps['items'] = [\n {\n key: '1',\n icon: <LogoutOutlined />,\n label: (\n <a\n onClick={() => {\n clearToken()\n navigate(logoutRedirectUrl)\n }}\n >\n {t('UserWidget.signOutText')}\n </a>\n ),\n },\n ]\n\n return (\n <div>\n <Dropdown\n menu={{\n selectable: true,\n items,\n }}\n placement=\"bottomRight\"\n >\n <a\n onClick={e => {\n e.preventDefault()\n }}\n >\n <Space align=\"center\">\n <span>{user?.authorityId}</span>\n <UserOutlined style={{ fontSize: '16px' }} />\n </Space>\n </a>\n </Dropdown>\n </div>\n )\n}\n\nexport default UserWidget\n","export { default as UserWidget } from './UserWidget'\nexport type { UserWidgetProps } from './UserWidget'\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: async (name: string) => {\n sessionStorage.removeItem(name)\n localStorage.removeItem(name)\n },\n}\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { request } from '../../utils/request'\nimport { mixedStorage } from '../../utils/storage'\nimport { contextStore } from '../contextProvider'\nimport type { Game } from './types'\n\nexport interface LayoutState {\n collapsed: boolean\n setCollapsed: (collapsed: boolean) => void\n}\n\nexport const useLayoutStore = create<LayoutState>()(\n persist(\n set => ({\n collapsed: false,\n setCollapsed: collapsed => set({ collapsed }),\n }),\n {\n name: 'layout',\n storage: createJSONStorage(() => localStorage),\n partialize: state => ({ collapsed: state.collapsed }),\n },\n ),\n)\n\ninterface GameState {\n initialized: boolean\n game: Game | null\n games: Game[]\n isLoading: boolean\n fetchGames: (options?: { apiV2?: boolean; forceUpdate?: boolean }) => Promise<Game[] | undefined>\n}\n\nexport const useGameStore = create<GameState>()(\n persist(\n (set, get) => ({\n initialized: false,\n isLoading: false,\n game: null,\n games: [],\n async fetchGames({ apiV2 = contextStore.getState().gameApiV2, forceUpdate = false } = {}) {\n if (!forceUpdate && get().initialized) {\n return get().games\n }\n\n try {\n set({ isLoading: true })\n let games: Game[]\n if (!apiV2) {\n const response = await request<Game[]>('/api/usystem/game/all')\n games = response.data ?? []\n } else {\n const response = await request<{ list: Game[] }>('/api/game/list')\n games = response.data?.list ?? []\n }\n set({ games })\n return games\n } finally {\n set({\n initialized: true,\n isLoading: false,\n })\n }\n },\n }),\n {\n name: 'game',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({ game: state.game }),\n },\n ),\n)\n","import { Select, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { useTranslation } from '../locale'\nimport { useGameStore } from './stores'\nimport type { Game } from './types'\n\nconst { Text } = Typography\n\nexport interface GameSelectProps {\n filter?: (game: Game) => boolean\n onGameChange?: (game: Game) => void\n}\n\nconst GameSelect: FC<GameSelectProps> = props => {\n const { filter, onGameChange } = props\n const { t } = useTranslation()\n const { game, games, isLoading, fetchGames } = useGameStore()\n const apiV2 = useToolkitsContext(state => state.gameApiV2)\n\n useEffect(() => {\n fetchGames({ apiV2 })\n }, [])\n\n const options = games\n ?.filter(item => filter?.(item) ?? true)\n ?.map(item => ({\n label: item.name,\n value: apiV2 ? item.game_id : item.id,\n }))\n\n const onChange = async (id: string | number) => {\n const match = games.find(item => String(apiV2 ? item.game_id : item.id) === String(id))!\n useGameStore.setState({ game: match })\n onGameChange?.(match)\n }\n\n return (\n <Space>\n <Text>{t('GameSelect.label')}</Text>\n <Select<string | number>\n showSearch\n optionFilterProp=\"label\"\n value={apiV2 ? game?.game_id : game?.id}\n placeholder={t('GameSelect.placeholder')}\n loading={isLoading}\n style={{ width: '200px' }}\n options={options}\n onChange={onChange}\n />\n </Space>\n )\n}\n\nexport default GameSelect\n","\n.expand {\n animation-duration: 0.2s;\n animation-name: expand;\n}\n\n@keyframes expand {\n 0%, 50% {\n width: 0;\n opacity: 0;\n }\n\n 75% {\n width: 100%;\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n","import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'\nimport * as Antd from 'antd'\nimport { Button, Divider, Space } from 'antd'\nimport type { FC, Key, PropsWithChildren, ReactNode } from 'react'\nimport { Suspense } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { Logo } from '../logo'\nimport type { NavMenuItem } from '../navMenu'\nimport { NavMenu } from '../navMenu'\nimport { RequireGame } from '../requireGame'\nimport { UserWidget } from '../userWidget'\nimport type { GameSelectProps } from './GameSelect'\nimport GameSelect from './GameSelect'\nimport { useLayoutStore } from './stores'\nimport './style.css'\n\nconst { Spin, theme } = Antd\nconst { Header, Sider, Content } = Antd.Layout\n\ntype HeaderExtra = { key: Key; children: ReactNode }\n\nexport interface LayoutProps extends Pick<GameSelectProps, 'filter' | 'onGameChange'> {\n menuCollapsible?: boolean\n isMenuLoading?: boolean\n title?: ReactNode\n items?: NavMenuItem[]\n hideGameSelect?: boolean\n navWidth?: string | number\n logoutRedirectUrl: string\n headerExtra?: {\n left?: HeaderExtra[]\n right?: HeaderExtra[]\n }\n}\n\nconst Layout: FC<PropsWithChildren<LayoutProps>> = props => {\n const {\n menuCollapsible,\n isMenuLoading,\n title,\n items,\n headerExtra,\n hideGameSelect,\n children,\n navWidth,\n logoutRedirectUrl,\n filter,\n onGameChange,\n } = props\n const {\n token: { colorBgContainer, colorBorder },\n } = theme.useToken()\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n const { collapsed, setCollapsed } = useLayoutStore()\n\n const onCollapse = async () => {\n setCollapsed(!collapsed)\n }\n\n return (\n <Antd.Layout>\n <Sider\n collapsible\n theme=\"light\"\n trigger={null}\n collapsed={collapsed}\n width={navWidth}\n style={{\n height: '100vh',\n overflow: 'auto',\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colorBorder,\n }}\n >\n <div className=\"flex gap-2 px-6 py-4 overflow-hidden\">\n <Logo width={32} height={32} />\n {(!menuCollapsible || !collapsed) && <div className=\"h-8 flex items-center expand\">{title}</div>}\n </div>\n <NavMenu items={items} loading={isMenuLoading} />\n </Sider>\n <Antd.Layout>\n <Header\n style={{\n padding: '0 24px',\n background: colorBgContainer,\n }}\n >\n <div className=\"flex justify-between items-center h-full\">\n <Space size=\"small\" split={<Divider type=\"vertical\" />} className=\"mr-6\">\n {menuCollapsible && (\n <Button\n type=\"text\"\n icon={collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}\n style={{ fontSize: '16px' }}\n onClick={onCollapse}\n />\n )}\n {usePermissionApiV2 && !hideGameSelect && <GameSelect filter={filter} onGameChange={onGameChange} />}\n {headerExtra?.left?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n </Space>\n <Space size=\"small\" split={<Divider type=\"vertical\" />}>\n {headerExtra?.right?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n <UserWidget logoutRedirectUrl={logoutRedirectUrl} />\n </Space>\n </div>\n </Header>\n <Content\n style={{\n overflow: 'auto',\n padding: '24px 16px',\n maxHeight: 'calc(100vh - 64px)',\n }}\n >\n <Suspense\n fallback={\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: '200px',\n }}\n />\n }\n >\n <RequireGame hideGameSelect={hideGameSelect}>{children}</RequireGame>\n </Suspense>\n </Content>\n </Antd.Layout>\n </Antd.Layout>\n )\n}\n\nexport default Layout\n","export { default as Layout } from './Layout'\nexport * from './stores'\nexport type * from './types'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { pick } from 'lodash-es'\nimport type { StringifyOptions } from 'query-string'\nimport qs from 'query-string'\nimport { contextStore } from '../components/contextProvider'\nimport { useGameStore } from '../components/layout'\nimport { APP_ID_HEADER_NAME } from '../constants'\nimport { useTokenStore } from '../hooks/token'\n\nexport class RequestError extends Error {\n status!: number\n code?: number\n\n constructor(opts: { message?: string; status: number; code?: number }) {\n super(opts?.message)\n this.status = opts.status\n this.code = opts.code\n }\n}\n\ntype JsonResponse<T> = (\n | {\n code: number\n status?: never\n }\n | {\n code?: never\n status: number\n }\n) & {\n data: T\n msg: string\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n body?: Record<string | number, any> | FormData | null\n params?: Record<string | number, any> | URLSearchParams | null\n responseType?: 'json' | 'blob' | 'text'\n}\n\nexport type RequestResponse<T> = Pick<Response, 'headers' | 'status' | 'statusText' | 'url'> & { data: T }\n\nexport async function request<T = any, R = RequestResponse<T>>(url: string, opts: RequestOptions = {}): Promise<R> {\n const _opts = Object.assign(opts, { responseType: opts.responseType ?? 'json' })\n const { body, params, responseType, ...rest } = _opts\n\n if (!url) {\n throw new RequestError({\n status: 400,\n message: 'URL is required',\n })\n }\n\n // 处理查询参数,如果 url 中已经有查询参数,需要合并。\n const parsed = qs.parseUrl(url)\n const queryParams = Object.assign({}, parsed.query, params)\n const options: StringifyOptions = {\n skipNull: true,\n skipEmptyString: true,\n strict: true,\n encode: true,\n }\n const queryString = qs.stringify(queryParams, options)\n url = queryString ? `${parsed.url}?${queryString}` : url\n\n const headers = new Headers(_opts.headers)\n\n const token = useTokenStore?.getState()?.token\n\n if (token) {\n headers.set('Authorization', `Bearer ${token}`)\n }\n\n // TODO: 把自动注入 App-ID 移除掉,后续自己在项目中实现。\n if (!headers.has(APP_ID_HEADER_NAME) && contextStore.getState().usePermissionApiV2) {\n const game = useGameStore.getState().game\n if (game) {\n headers.set(APP_ID_HEADER_NAME, String(contextStore.getState().gameApiV2 ? game.game_id : game.id))\n }\n }\n\n if (responseType === 'blob') {\n headers.append('Accept', 'application/octet-stream')\n } else if (responseType === 'json') {\n headers.append('Accept', 'application/json')\n }\n\n const isJsonBody = !!(body && typeof body === 'object' && !(body instanceof FormData))\n\n if (isJsonBody) {\n headers.set('Content-Type', 'application/json')\n }\n\n const requestOpts = Object.assign(rest, {\n headers,\n body: isJsonBody ? JSON.stringify(body) : body,\n }) as RequestInit\n\n const response = await fetch(url, requestOpts)\n\n if (!response.ok) {\n throw new RequestError({ status: response.status })\n }\n\n const responseInterceptor = contextStore.getState().interceptor?.response\n\n if (typeof responseInterceptor === 'function') {\n return await responseInterceptor(response, _opts)\n }\n\n let data: T\n\n if (responseType === 'blob') {\n data = (await response.blob()) as T\n } else if (responseType === 'json') {\n const json = (await response.json()) as JsonResponse<T>\n if (json.code === 0 || json.code === 200 || json.status === 0) {\n data = json.data\n } else {\n throw new RequestError({\n code: json.code,\n status: response.status,\n message: json.msg,\n })\n }\n } else {\n data = (await response.text()) as T\n }\n\n const result = {\n ...pick(response, ['headers', 'status', 'statusText', 'url']),\n data,\n } as R\n\n return result\n}\n","import useSWR from 'swr'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport type { RequestOptions } from '../utils/request'\nimport { request } from '../utils/request'\n\ntype PermissionCheckResult = { has_all: true } | { [k: string]: boolean }\n\nexport function usePermissions(codes: string[], options?: Omit<RequestOptions, 'method' | 'body'>) {\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n const { data, isValidating, isLoading } = useSWR(\n codes.length > 0 ? [usePermissionApiV2 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check', codes] : null,\n ([url]) =>\n request<PermissionCheckResult>(url, {\n ...options,\n method: 'POST',\n body: {\n permissions: codes,\n },\n }).then(response => {\n if (response.data?.has_all) {\n return codes.reduce(\n (acc, curr) => {\n acc[curr] = true\n return acc\n },\n {} as Record<string, boolean>,\n )\n }\n\n return codes.reduce(\n (acc, curr) => {\n acc[curr] = (response.data as Record<string, boolean>)?.[curr] ?? false\n return acc\n },\n {} as Record<string, boolean>,\n )\n }),\n {\n revalidateOnFocus: false,\n },\n )\n\n return { data, isValidating, isLoading }\n}\n\nexport function usePermission(code: string | undefined, options?: Omit<RequestOptions, 'method' | 'body'>) {\n const { data, isValidating, isLoading } = usePermissions(code ? [code] : [], options)\n\n if (code === undefined) {\n return {\n accessible: true,\n isValidating: false,\n isLoading: false,\n }\n }\n\n return {\n accessible: data?.[code] ?? false,\n isValidating,\n isLoading,\n }\n}\n","import type { ButtonProps } from 'antd'\nimport { Button, Tooltip } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { APP_ID_HEADER_NAME } from '../../constants'\nimport { usePermissions } from '../../hooks/permission'\nimport { useTranslation } from '../locale'\n\nexport interface PermissionButtonProps extends ButtonProps {\n code: string | string[]\n showLoading?: boolean\n isGlobal?: boolean\n}\n\nconst PermissionButton: FC<PropsWithChildren<PermissionButtonProps>> = props => {\n const { children, code, showLoading, isGlobal, disabled, ...restProps } = props\n const { data, isLoading } = usePermissions(Array.isArray(code) ? code : [code], {\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n })\n const { t } = useTranslation()\n\n if (isLoading) {\n return (\n <Button loading={showLoading} disabled={!showLoading} {...restProps}>\n {children}\n </Button>\n )\n }\n\n if (!Object.values(data ?? {})?.some(Boolean)) {\n return (\n <Tooltip defaultOpen={false} title={t('global.noEntitlement')}>\n <Button disabled {...restProps}>\n {children}\n </Button>\n </Tooltip>\n )\n }\n\n return (\n <Button disabled={disabled} {...restProps}>\n {children}\n </Button>\n )\n}\n\nexport default PermissionButton\n","export { default as PermissionButton } from './PermissionButton'\nexport type { PermissionButtonProps } from './PermissionButton'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isEqual } from 'lodash-es'\nimport type { MutatorCallback, MutatorOptions } from 'swr'\nimport { mutate } from 'swr'\nimport { create } from 'zustand'\nimport type { QueryListPayload } from './QueryList'\n\ninterface QueryListMutator {\n <Data = any, MutationData = Data>(\n route: string,\n data?: MutationData | Promise<MutationData> | MutatorCallback<MutationData>,\n opts?: boolean | MutatorOptions<Data, MutationData>,\n ): Promise<Array<MutationData | undefined>>\n <Data = any, MutationData = Data>(\n route: string,\n data?: MutationData | Promise<MutationData> | MutatorCallback<MutationData>,\n opts?: boolean | MutatorOptions<Data, MutationData>,\n ): Promise<MutationData | undefined>\n}\n\ninterface QueryListState {\n keyMap: Map<string, string | null>\n payloadMap: Map<string, QueryListPayload>\n getPayload(route: string): QueryListPayload\n setPayload(route: string, payload: QueryListPayload): void\n refetch(route: string, payload?: QueryListPayload): void\n mutate: QueryListMutator\n}\n\nexport const useQueryListStore = create<QueryListState>((set, get) => ({\n keyMap: new Map(),\n payloadMap: new Map(),\n getPayload(route) {\n return get().payloadMap.get(route) ?? { page: 1 }\n },\n setPayload(route, payload) {\n set(state => ({\n payloadMap: new Map(state.payloadMap).set(route, payload),\n }))\n },\n refetch(route, payload) {\n const prevPayload = get().getPayload(route)\n const nextPayload = { ...prevPayload, ...payload }\n // FIXME: 后续使用 unstable_serialize 来比较前后的 key,因为仅仅比较 payload 会有问题\n if (isEqual(prevPayload, nextPayload)) {\n get().mutate(route, undefined)\n } else {\n get().setPayload(route, nextPayload)\n }\n },\n mutate(route, data, opts) {\n const key = get().keyMap.get(route)\n return mutate(key, data, opts)\n },\n}))\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { App, Form, Result, Spin, Table } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { TableProps } from 'antd/es/table'\nimport type { ReactElement, ReactNode, Ref } from 'react'\nimport { cloneElement, forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport useSWR, { unstable_serialize } from 'swr'\nimport { APP_ID_HEADER_NAME } from '../../constants'\nimport { usePermission } from '../../hooks/permission'\nimport type { RequestOptions } from '../../utils/request'\nimport { request } from '../../utils/request'\nimport { useToolkitsContext } from '../contextProvider'\nimport type { FilterFormWrapperProps } from '../filterFormWrapper'\nimport { FilterFormWrapper } from '../filterFormWrapper'\nimport { useGameStore } from '../layout'\nimport { useTranslation } from '../locale'\nimport { useQueryListStore } from './stores'\n\nexport interface ListResponse<T = any> {\n list: T[]\n total: number\n}\n\nexport interface QueryListPayload<FormValues = any> {\n page?: number\n size?: number\n formValue?: FormValues\n}\n\nexport enum QueryListAction {\n Confirm,\n Reset,\n Jump,\n Init,\n}\n\nexport interface QueryListDataType<Item> {\n dataSource: Item[]\n total: number\n}\n\nexport interface QueryListRef<Item, Value, Data> {\n data: Data | undefined\n dataSource: Item[] | undefined\n form: FormInstance<Value>\n}\n\nexport interface QueryListProps<Item extends AnyObject = AnyObject, Value = any, Data = any>\n extends Omit<TableProps<Item>, 'pagination' | 'dataSource' | 'loading'>,\n Pick<FilterFormWrapperProps, 'buttonsAlign' | 'showReset'> {\n code?: string\n isGlobal?: boolean\n route: string\n method?: 'GET' | 'POST'\n refreshInterval?: number\n // 无分页\n onePage?: boolean\n defaultSize?: number\n headers?: RequestOptions['headers']\n body?: RequestOptions['body'] | ((payload: QueryListPayload<Value>) => RequestOptions['body'])\n params?: RequestOptions['params'] | ((payload: QueryListPayload<Value>) => RequestOptions['params'])\n tableExtra?: ReactNode | ((form: FormInstance<Value>, data?: Data) => ReactNode)\n form?: FormInstance<Value>\n renderForm?: (form: FormInstance<Value>) => ReactElement\n afterSuccess?: (action: QueryListAction, data: Data, form: FormInstance<Value>) => void\n getTotal?: (data: Data | undefined) => number | undefined\n getDataSource?: (data: Data | undefined, form: FormInstance<Value>) => Item[] | undefined\n}\n\nconst InternalQueryList = <\n Item extends AnyObject = AnyObject,\n Value = any,\n // 默认接口返回值类型为 ListResponse<Item>,当符合时无需设置 getTotal、getDataSource 就可以让组件正确获取 total 与 dataSource。\n Data = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Data>,\n ref: Ref<QueryListRef<Item, Value, Data>>,\n) => {\n const internalProps = {\n method: 'GET',\n defaultSize: 10,\n refreshInterval: 0,\n getTotal: (data: Data | undefined) => (data as ListResponse<Item>)?.total,\n getDataSource: (data: Data | undefined) => (data as ListResponse<Item>)?.list,\n ...props,\n }\n\n const {\n route,\n code,\n headers,\n isGlobal,\n onePage,\n method,\n buttonsAlign,\n showReset,\n defaultSize,\n refreshInterval,\n tableExtra,\n form,\n body,\n params,\n renderForm,\n afterSuccess,\n getTotal,\n getDataSource,\n ...tableProps\n } = internalProps\n\n const { notification } = App.useApp()\n const { t } = useTranslation()\n const [_form] = Form.useForm<Value>(form)\n const { accessible, isLoading } = usePermission(code, {\n headers: isGlobal ? { [APP_ID_HEADER_NAME]: 'global' } : undefined,\n })\n const action = useRef<QueryListAction>(QueryListAction.Init)\n const { game } = useGameStore()\n const { gameApiV2, usePermissionApiV2 } = useToolkitsContext(state => state)\n const [isValid, setIsValid] = useState(false)\n const { keyMap, getPayload, refetch } = useQueryListStore()\n const { page, size = defaultSize, formValue } = getPayload(route)\n const payload = { page, size, formValue }\n\n const _body = useMemo(() => {\n return typeof body === 'function'\n ? body(payload)\n : method === 'POST' && typeof body === 'undefined'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n }\n : body\n }, [onePage, method, page, size, formValue, body])\n\n const _params = useMemo(\n () =>\n typeof params === 'function'\n ? params(payload)\n : method === 'GET' && typeof params === 'undefined'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n }\n : undefined,\n [onePage, method, page, size, formValue, params],\n )\n\n const _headers = useMemo(() => {\n const newHeaders = new Headers(headers)\n\n if (usePermissionApiV2) {\n if (isGlobal) {\n newHeaders.set(APP_ID_HEADER_NAME, 'global')\n } else if (game) {\n newHeaders.set(APP_ID_HEADER_NAME, String(gameApiV2 ? game.game_id : game.id))\n }\n }\n return newHeaders\n }, [usePermissionApiV2, isGlobal, game, headers])\n\n const key = useMemo(() => {\n if (!accessible || !isValid) {\n return null\n }\n\n const httpOption = {\n route,\n method,\n body: _body,\n params: _params,\n headers: _headers,\n }\n\n const serializedKey = unstable_serialize(httpOption)\n keyMap.set(route, serializedKey)\n return serializedKey\n }, [method, route, _body, _params, _headers, isValid, accessible])\n\n const shouldPoll = useRef(false)\n\n const { data, isValidating } = useSWR(\n key,\n async () => {\n const response = await request<Data>(route, {\n method,\n body: _body,\n params: _params,\n headers: _headers,\n })\n\n return response.data\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n refreshInterval: shouldPoll.current ? refreshInterval : 0,\n onSuccess(_data) {\n shouldPoll.current = true\n afterSuccess?.(action.current, _data, _form)\n },\n onError(error) {\n shouldPoll.current = false\n // FIXME: 暂时在此处处理错误,后续需要优化。\n notification.error({\n message: '请求出错',\n description: error.message,\n })\n },\n },\n )\n\n const dataSource = useMemo(() => getDataSource(data, _form), [data, form, getDataSource])\n const total = useMemo(() => getTotal(data), [data, getTotal])\n\n const pagination = useMemo(\n () =>\n !onePage && {\n showSizeChanger: true,\n showQuickJumper: true,\n current: page,\n pageSize: size,\n total,\n onChange: async (currentPage: number, currentSize: number) => {\n action.current = QueryListAction.Jump\n refetch(route, {\n page: currentPage,\n size: currentSize,\n })\n },\n },\n [page, size, onePage, total],\n )\n\n const onConfirm = async () => {\n action.current = QueryListAction.Confirm\n try {\n await _form.validateFields()\n setIsValid(true)\n refetch(route, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n const onReset = async () => {\n action.current = QueryListAction.Reset\n _form.resetFields()\n\n try {\n await _form.validateFields({ validateOnly: true })\n setIsValid(true)\n refetch(route, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n useEffect(() => {\n const init = async () => {\n if (!accessible) {\n return\n }\n\n try {\n _form.resetFields()\n const value = await _form.validateFields({ validateOnly: true })\n refetch(route, {\n page: 1,\n formValue: value,\n })\n setIsValid(true)\n } catch (err) {\n setIsValid(false)\n }\n }\n\n init()\n }, [accessible, form, game])\n\n useImperativeHandle(ref, () => ({\n data,\n dataSource,\n form: _form,\n }))\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n const formRenderer = typeof renderForm === 'function' && (\n <FilterFormWrapper\n showReset={showReset}\n buttonsAlign={buttonsAlign}\n isConfirming={isValidating}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {cloneElement(renderForm(_form), {\n onKeyUp: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n onConfirm()\n }\n },\n })}\n </FilterFormWrapper>\n )\n\n return (\n <div>\n {formRenderer}\n {typeof tableExtra === 'function' ? tableExtra(_form, data) : tableExtra}\n <Table {...tableProps} dataSource={dataSource} loading={isValidating} pagination={pagination} />\n </div>\n )\n}\n\nconst QueryList = forwardRef(InternalQueryList) as <\n Item extends AnyObject = AnyObject,\n Value extends object | undefined = undefined,\n Data = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Data> & { ref?: Ref<QueryListRef<Item, Value, Data>> },\n) => ReactElement\n\nexport default QueryList\n","export { default as QueryList, QueryListAction } from './QueryList'\nexport type { QueryListProps, QueryListRef } from './QueryList'\nexport { useQueryListStore } from './stores'\n","import type { ModalProps } from 'antd'\nimport { Modal } from 'antd'\nimport { type ReactNode, useMemo, useState } from 'react'\nimport { create } from 'zustand'\n\ninterface ModalState {\n open: Map<number, boolean>\n getOpen: (uuid: number) => boolean\n show: (uuid: number) => void\n hide: (uuid: number) => void\n hideAll: () => void\n}\n\nexport const useModalStore = create<ModalState>((set, get) => ({\n open: new Map(),\n getOpen: uuid => get().open.get(uuid) ?? false,\n show(uuid) {\n set({ open: new Map(get().open).set(uuid, true) })\n },\n hide(uuid) {\n set({ open: new Map(get().open).set(uuid, false) })\n },\n hideAll() {\n set({ open: new Map() })\n },\n}))\n\nexport interface UseModalOperation {\n hide: () => void\n}\n\nexport interface UseModalProps extends Omit<ModalProps, 'open' | 'confirmLoading' | 'onOk' | 'onCancel'> {\n content?: ReactNode | ((operation: UseModalOperation) => ReactNode)\n onConfirm?: () => void | Promise<void>\n}\n\nlet id = 0\n\nexport function useModal(props: UseModalProps) {\n const { content, onConfirm, ...modalProps } = props\n const uuid = useMemo(() => ++id, [])\n const modalStore = useModalStore()\n const open = modalStore.getOpen(uuid)\n const [confirmLoading, setConfirmLoading] = useState(false)\n\n const isRenderFunction = typeof content === 'function'\n\n const show = () => {\n modalStore.show(uuid)\n }\n\n const hide = () => {\n modalStore.hide(uuid)\n }\n\n const onCancel: ModalProps['onCancel'] = () => {\n hide()\n }\n\n const onOk = async () => {\n try {\n setConfirmLoading(true)\n await onConfirm?.()\n } finally {\n setConfirmLoading(false)\n }\n }\n\n const internalModal = (\n <Modal {...modalProps} open={open} confirmLoading={confirmLoading} onOk={onOk} onCancel={onCancel}>\n {isRenderFunction ? content({ hide }) : content}\n </Modal>\n )\n\n return {\n uuid,\n show,\n hide,\n modal: internalModal,\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance, FormProps } from 'antd'\nimport { Form } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { ReactNode } from 'react'\nimport { useState } from 'react'\nimport type { UseModalOperation, UseModalProps } from './modal'\nimport { useModal } from './modal'\n\ntype RecursivePartial<T> =\n NonNullable<T> extends object\n ? {\n [P in keyof T]?: NonNullable<T[P]> extends (infer U)[]\n ? RecursivePartial<U>[]\n : NonNullable<T[P]> extends object\n ? RecursivePartial<T[P]>\n : T[P]\n }\n : T\n\nexport interface UseFormModalProps<Values extends AnyObject = AnyObject, ExtraValues = any>\n extends Omit<UseModalProps, 'afterClose' | 'onConfirm' | 'content'> {\n formProps?: Omit<FormProps, 'form'>\n form?: FormInstance<Values>\n content?: ReactNode | ((extraValues: ExtraValues, operation: UseModalOperation) => ReactNode)\n onConfirm?: (values: Values, extraValues: ExtraValues) => void | Promise<void>\n}\n\nexport function useFormModal<Values extends AnyObject = AnyObject, ExtraValues = any>(\n props: UseFormModalProps<Values, ExtraValues>,\n) {\n const { content, form, formProps, onConfirm, ...modalProps } = props\n const [internalExtraValues, setInternalExtraValues] = useState<ExtraValues>({} as ExtraValues)\n let [internalForm] = Form.useForm<Values>()\n internalForm = form || internalForm\n\n const isRenderFunction = typeof content === 'function'\n\n const hanldeConfirm = async () => {\n const values = await internalForm.validateFields()\n await onConfirm?.(values, internalExtraValues as ExtraValues)\n hide()\n }\n\n const afterClose = () => {\n internalForm.resetFields()\n }\n\n const { uuid, show, hide, modal } = useModal({\n ...modalProps,\n content: operation => (\n <Form {...formProps} form={internalForm}>\n {isRenderFunction ? content(internalExtraValues as ExtraValues, operation) : content}\n </Form>\n ),\n onConfirm: hanldeConfirm,\n afterClose,\n })\n\n const onShow = ({\n initialValues,\n extraValues,\n }: {\n initialValues?: RecursivePartial<Values>\n extraValues?: ExtraValues\n } = {}) => {\n if (extraValues) {\n setInternalExtraValues(extraValues)\n }\n\n if (initialValues) {\n internalForm.setFieldsValue(initialValues)\n }\n\n show()\n }\n\n return {\n uuid,\n show: onShow,\n hide,\n modal,\n }\n}\n","import useSWR from 'swr'\nimport useSWRMutation from 'swr/mutation'\nimport { useToolkitsContext } from '../../../components/contextProvider'\nimport type { Game } from '../../../components/layout'\nimport { APP_ID_HEADER_NAME } from '../../../constants'\nimport { usePermission } from '../../../hooks/permission'\nimport { request } from '../../../utils/request'\nimport type { PermissionEnumItem, RoleEnumItem, RoleV1, RoleV2 } from '../types'\n\nexport function useAllPermissions() {\n return useSWR('/api/usystem/user/allPermssions', url =>\n request<PermissionEnumItem[]>(url, { headers: { [APP_ID_HEADER_NAME]: 'global' } }).then(response => response.data),\n )\n}\n\nexport function useAllPermissionsV2() {\n return useSWR('/api/usystem/user/allPermissionsV2', url =>\n request<{\n game: Game[]\n permission: PermissionEnumItem[]\n }>(url, { headers: { [APP_ID_HEADER_NAME]: 'global' } }).then(response => response.data),\n )\n}\n\nexport function useAllRoles() {\n const { accessible } = usePermission('200005', { headers: { [APP_ID_HEADER_NAME]: 'global' } })\n return useSWR(accessible ? '/api/usystem/role/all' : null, url =>\n request<RoleEnumItem[]>(url, { headers: { [APP_ID_HEADER_NAME]: 'global' } }).then(response => response.data),\n )\n}\n\nexport function useRole(name: string) {\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n return useSWR(`/api/usystem/role/${usePermissionApiV2 ? 'infoV2' : 'info'}?name=${name}`, (url: string) =>\n request<RoleV1 | RoleV2>(url, { headers: { [APP_ID_HEADER_NAME]: 'global' } }).then(response => response.data),\n )\n}\n\nexport function useCreateRole() {\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n\n return useSWRMutation(\n usePermissionApiV2 ? '/api/usystem/role/createV2' : '/api/usystem/role/create',\n (\n url: string,\n {\n arg,\n }: {\n arg: { name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n\nexport function useUpdateRole() {\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n\n return useSWRMutation(\n usePermissionApiV2 ? '/api/usystem/role/updateV2' : '/api/usystem/role/update',\n (\n url: string,\n {\n arg,\n }: {\n arg: { id: number; name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n\nexport function useRemoveRole() {\n return useSWRMutation(\n '/api/usystem/role/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: number; name: string }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n\nexport function useCreateUser() {\n return useSWRMutation(\n '/api/usystem/user/create',\n (\n url,\n {\n arg,\n }: {\n arg: { name: string; roles: string[] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n\nexport function useUpdateUser() {\n return useSWRMutation(\n '/api/usystem/user/update',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string; roles: string[] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n\nexport function useRemoveUser() {\n return useSWRMutation(\n '/api/usystem/user/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n headers: { [APP_ID_HEADER_NAME]: 'global' },\n }),\n )\n}\n","import { Checkbox, Col, Collapse, Row } from 'antd'\nimport type { CheckboxChangeEvent } from 'antd/es/checkbox'\nimport type { FC } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport type { PermissionEnumItem } from '../../types'\n\ninterface PermissionCollapseProps {\n expand?: boolean\n permissions?: PermissionEnumItem[]\n readonly?: boolean\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nconst PermissionCollapse: FC<PermissionCollapseProps> = props => {\n const { permissions, readonly, expand, value, onChange } = props\n const [activeKey, setActiveKey] = useState<string[]>([])\n const [checkedMap, setCheckedMap] = useState<Record<string, boolean>>({})\n const [internalValue, setInternalValue] = useState<string[]>(value ?? [])\n const { t } = useTranslation()\n\n const onCollapseChange = useCallback((key: string | string[]) => {\n setActiveKey(key as string[])\n }, [])\n\n const getCheckedValue = (checkedValue: boolean, codes: string[]) => {\n let tempValue: string[] = []\n\n if (checkedValue) {\n tempValue = [...new Set(internalValue.concat(codes))]\n } else {\n tempValue = internalValue.slice()\n\n codes.forEach(code => {\n const index = tempValue.findIndex(item => item === code)\n if (index > -1) {\n tempValue.splice(index, 1)\n }\n })\n }\n\n return tempValue\n }\n\n const onCheckChange = (e: CheckboxChangeEvent, codes: string[]) => {\n const checkedValue = getCheckedValue(e.target.checked, codes)\n setInternalValue(checkedValue)\n onChange?.(checkedValue)\n }\n\n useEffect(() => {\n setInternalValue(value ?? [])\n }, [value])\n\n useEffect(() => {\n if (expand) {\n setActiveKey((permissions ?? []).map(({ category }) => category))\n }\n }, [expand, permissions])\n\n useEffect(() => {\n const checkedValue = (permissions ?? []).reduce(\n (acc, curr) => {\n acc[curr.category] = curr.permissions.every(item => internalValue?.includes(item.value))\n return acc\n },\n {} as Record<string, boolean>,\n )\n\n setCheckedMap(checkedValue)\n }, [internalValue, permissions])\n\n return (\n <Collapse\n style={{ width: '100%' }}\n collapsible=\"header\"\n activeKey={activeKey}\n items={(permissions ?? []).map(item => ({\n key: item.category,\n label: item.category,\n extra: !readonly && (\n <Checkbox\n checked={checkedMap[item.category]}\n onChange={e => {\n onCheckChange(\n e,\n item.permissions.map(permission => permission.value),\n )\n }}\n >\n {t('global.selectAll')}\n </Checkbox>\n ),\n children: (\n <Checkbox.Group style={{ width: '100%' }} value={internalValue} disabled={readonly}>\n <Row gutter={[10, 10]} style={{ width: '100%' }}>\n {item.permissions.map(permission => (\n <Col key={permission.value} span={6}>\n <Checkbox\n value={permission.value}\n onChange={e => {\n onCheckChange(e, [permission.value])\n }}\n >\n {permission.label}\n </Checkbox>\n </Col>\n ))}\n </Row>\n </Checkbox.Group>\n ),\n }))}\n onChange={onCollapseChange}\n />\n )\n}\n\nexport default PermissionCollapse\n","import { Skeleton, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissions } from '../../hooks'\nimport type { RoleV1 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from '../permissionList'\n\nconst { Text } = Typography\n\ninterface PermissionListV1Props extends PermissionListPropsBase {\n value?: RoleV1['permissions']\n onChange?: (checkedValue: RoleV1['permissions']) => void\n}\n\nconst PermissionListV1: FC<PermissionListV1Props> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: permissions, isLoading, error } = useAllPermissions()\n const { t } = useTranslation()\n\n if (error) {\n return (\n <div className=\"flex justify-center\">\n <Text type=\"danger\">{t('PermissionList.failedDescription')}</Text>\n </div>\n )\n }\n\n return (\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value}\n permissions={permissions}\n readonly={readonly}\n expand={expand}\n onChange={onChange}\n />\n </Skeleton>\n )\n}\n\nexport default PermissionListV1\n","import { Button, Card, Divider, Empty, Select, Skeleton, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect, useState } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissionsV2 } from '../../hooks'\nimport type { RoleV2 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from '../permissionList'\n\nconst { Text } = Typography\nconst { Option } = Select\n\ninterface PermissionListV2Props extends PermissionListPropsBase {\n value?: RoleV2['permissions']\n onChange?: (checkedValue: RoleV2['permissions']) => void\n}\n\nconst PermissionListV2: FC<PermissionListV2Props> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: { permission, game: games } = {}, isLoading, error } = useAllPermissionsV2()\n const [gameList, setGameList] = useState<{ gameId: string; permissions: string[] }[]>([])\n const globalPermissions = permission?.filter(item => item.is_common)\n const gamePermissions = permission?.filter(item => !item.is_common)\n const { t } = useTranslation()\n\n useEffect(() => {\n const list: { gameId: string; permissions: string[] }[] = []\n\n Object.keys(value ?? {}).forEach(key => {\n if (key !== 'global') {\n list.push({ gameId: key, permissions: value?.[key] ?? [] })\n }\n })\n\n setGameList(list)\n }, [value])\n\n if (error) {\n return (\n <div className=\"flex justify-center\">\n <Text type=\"danger\">{t('PermissionList.failedDescription')}</Text>\n </div>\n )\n }\n\n const addGame = () => {\n setGameList(prev => [...prev, { gameId: '', permissions: [] }])\n }\n\n const removeGame = (index: number) => {\n setGameList(prev => prev.filter((_, i) => i !== index))\n }\n\n return (\n <div className=\"flex flex-col w-full\">\n <div className=\"mb-12\">\n <Divider dashed>{t('PermissionList.baseSectionTitle')}</Divider>\n </div>\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value?.global}\n readonly={readonly}\n permissions={globalPermissions}\n expand={expand}\n onChange={newValue => {\n onChange?.({\n ...value,\n global: newValue,\n })\n }}\n />\n </Skeleton>\n <div className=\"my-12\">\n <Divider dashed>{t('PermissionList.gameSectionTitle')}</Divider>\n </div>\n {gameList.map((item, index) => (\n <Card\n title={\n <Space>\n <Text>{t('global.game')}</Text>\n {readonly ? (\n <Text>{games?.find(game => String(game.id) === item.gameId)?.name}</Text>\n ) : (\n <Select\n disabled={readonly}\n value={gameList[index].gameId || undefined}\n style={{ width: '160px' }}\n placeholder={t('PermissionList.gameSelectPlaceholder')}\n onChange={selectedValue => {\n setGameList(pev => {\n const temp = pev.slice()\n temp[index].gameId = selectedValue\n return temp\n })\n }}\n >\n {games?.map(game => (\n <Option\n key={game.id}\n value={game.id}\n disabled={gameList.some(({ gameId }) => gameId === String(game.id))}\n >\n {game.name}\n </Option>\n ))}\n </Select>\n )}\n </Space>\n }\n key={index}\n className=\"mb-6\"\n extra={\n !readonly && (\n <Button\n type=\"link\"\n onClick={() => {\n removeGame(index)\n }}\n >\n {t('PermissionList.removeText')}\n </Button>\n )\n }\n >\n {gameList[index].gameId ? (\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value?.[gameList[index].gameId]}\n readonly={readonly}\n expand={expand}\n permissions={gamePermissions}\n onChange={newValue => {\n onChange?.({\n ...value,\n [gameList[index].gameId]: newValue,\n })\n }}\n />\n </Skeleton>\n ) : (\n <Empty description={t('PermissionList.gameSectionDescription')} />\n )}\n </Card>\n ))}\n {!readonly && (\n <Button block type=\"dashed\" onClick={addGame}>\n {t('PermissionList.addText')}\n </Button>\n )}\n </div>\n )\n}\n\nexport default PermissionListV2\n","import type { FC } from 'react'\nimport { useToolkitsContext } from '../../../../components/contextProvider'\nimport type { RoleV1, RoleV2 } from '../../types'\nimport PermissionListV1 from '../permissionListV1'\nimport PermissionListV2 from '../permissionListV2'\n\nexport interface PermissionListPropsBase {\n expand?: boolean\n readonly?: boolean\n}\n\ninterface PermissionListProps extends PermissionListPropsBase {\n value?: RoleV1['permissions'] | RoleV2['permissions']\n onChange?: (checkedValue: RoleV1['permissions'] | RoleV2['permissions']) => void\n}\n\nconst PermissionList: FC<PermissionListProps> = (props: PermissionListProps) => {\n const { value } = props\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n\n return (\n <>\n {usePermissionApiV2 ? (\n <PermissionListV2 {...props} value={value as RoleV2['permissions']} />\n ) : (\n <PermissionListV1 {...props} value={value as RoleV1['permissions']} />\n )}\n </>\n )\n}\n\nexport default PermissionList\n","export interface PermissionEnumItem {\n category: string\n is_common?: boolean\n permissions: {\n label: string\n value: string\n route: string\n }[]\n}\n\nexport interface RoleEnumItem {\n id: string\n name: string\n}\n\nexport type RoleListItem = RoleV1 | RoleV2\n\nexport interface RoleV1 {\n id: number\n name: string\n ctime: string\n permissions: string[]\n}\n\nexport interface RoleV2 {\n id: number\n name: string\n ctime: string\n permissions: Record<string, string[]>\n}\n\nexport interface UserListItem {\n id: string\n name: string\n ctime: string\n roles: string[]\n}\n","export { default as PermissionList } from './components/permissionList'\nexport * from './hooks'\nexport * from './types'\n","import { UserAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Col, Form, Input, Row, Select, Space, Tag } from 'antd'\nimport { produce } from 'immer'\nimport type { FC } from 'react'\nimport { Link } from 'react-router-dom'\nimport { Highlight } from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { QueryList } from '../../../components/queryList'\nimport { useQueryListStore } from '../../../components/queryList/stores'\nimport type { UserListItem } from '../../../features/permission'\nimport { useAllRoles, useCreateUser, useRemoveUser, useUpdateUser } from '../../../features/permission'\nimport type { UseFormModalProps } from '../../../hooks/formModal'\nimport { useFormModal } from '../../../hooks/formModal'\n\nconst { Option } = Select\n\nexport const route = '/api/usystem/user/list'\n\ninterface FormSchema {\n id: string\n name: string\n roles: string[]\n}\n\ninterface ExtraValues {\n id: string\n}\n\nconst useModal = (isCreate?: boolean) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { refetch, mutate } = useQueryListStore()\n const { data: roles, isLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n\n const title = isCreate ? t('UserList.createTitle') : t('UserList.updateTitle')\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} />\n </Form.Item>\n <Form.Item label={t('global.role')} name=\"roles\">\n <Select allowClear mode=\"multiple\" loading={isLoading}>\n {(roles ?? []).map(role => (\n <Option value={role.name} key={role.id}>\n {role.name}\n </Option>\n ))}\n </Select>\n </Form.Item>\n </>\n )\n\n const onConfirm: UseFormModalProps<FormSchema, ExtraValues>['onConfirm'] = async (values, extraValues) => {\n if (isCreate) {\n await create.trigger(values)\n refetch(route, { page: 1 })\n message.success(t('UserList.createSuccessfully'))\n } else {\n await update.trigger(values)\n mutate<{ List: UserListItem[]; Total: number }>(\n route,\n prev => {\n return produce(prev, draft => {\n if (draft?.List) {\n const index = draft.List?.findIndex(item => item.id === extraValues?.id)\n if (index !== -1) {\n draft.List[index].roles = values.roles\n }\n }\n })\n },\n { revalidate: false },\n )\n message.success(t('UserList.updateSuccessfully'))\n }\n }\n\n return useFormModal({\n title,\n formProps: {\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n\nconst UserList: FC = () => {\n const { modal, message } = App.useApp()\n const remove = useRemoveUser()\n const { mutate } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useModal(true)\n const { show: showUpdateModal, modal: updateModal } = useModal()\n const { t } = useTranslation()\n\n const columns: TableColumnsType<UserListItem> = [\n {\n title: t('global.name'),\n dataIndex: 'name',\n key: 'name',\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\n title: t('global.role'),\n dataIndex: 'roles',\n key: 'roles',\n width: '40%',\n render(value: string[]) {\n return (\n <Row gutter={[4, 4]}>\n {(value || []).map((item: string) => (\n <Col key={item}>\n {item === 'root' ? (\n <Tag color=\"#f50\">{item}</Tag>\n ) : (\n <Tag color=\"#ff5a00\">\n <Link to={`../role/${item}`}>{item}</Link>\n </Tag>\n )}\n </Col>\n ))}\n </Row>\n )\n },\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'Ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (value: UserListItem) => (\n <Space>\n <PermissionButton\n isGlobal\n size=\"small\"\n type=\"link\"\n code=\"100003\"\n onClick={() => {\n showUpdateModal({\n initialValues: {\n name: value.name,\n roles: value.roles,\n },\n extraValues: {\n id: value.id,\n },\n })\n }}\n >\n {t('global.update')}\n </PermissionButton>\n <PermissionButton\n isGlobal\n danger\n size=\"small\"\n code=\"100004\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('UserList.deleteTitle'),\n content: (\n <Highlight texts={[value.name]}>{t('UserList.deleteContent', { user: value.name })}</Highlight>\n ),\n async onOk() {\n await remove.trigger({\n id: value.id,\n name: value.name,\n })\n mutate<{ List: UserListItem[]; Total: number }>(route, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === value.id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('UserList.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n ),\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.user')}\n extra={\n <PermissionButton\n isGlobal\n type=\"primary\"\n icon={<UserAddOutlined />}\n code=\"100002\"\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('UserList.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<UserListItem, undefined, { List: UserListItem[]; Total: number }>\n isGlobal\n code=\"100001\"\n route={route}\n rowKey=\"id\"\n columns={columns}\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default UserList\n","import { UsergroupAddOutlined } from '@ant-design/icons'\nimport type { FormProps, TableColumnsType } from 'antd'\nimport { App, Card, Form, Input, Space } from 'antd'\nimport { produce } from 'immer'\nimport { Link } from 'react-router-dom'\nimport { useToolkitsContext } from '../../../components/contextProvider'\nimport { Highlight } from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { QueryList } from '../../../components/queryList'\nimport { useQueryListStore } from '../../../components/queryList/stores'\nimport { APP_ID_HEADER_NAME } from '../../../constants'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../../../features/permission'\nimport { PermissionList, useCreateRole, useRemoveRole, useUpdateRole } from '../../../features/permission'\nimport type { UseFormModalProps } from '../../../hooks/formModal'\nimport { useFormModal } from '../../../hooks/formModal'\nimport { usePermission } from '../../../hooks/permission'\nimport { request } from '../../../utils/request'\n\nconst route = '/api/usystem/role/list'\n\ninterface FormSchema {\n name: string\n permissions: RoleListItem['permissions']\n}\n\nconst useModal = (isCreate?: boolean) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { refetch, mutate } = useQueryListStore()\n const create = useCreateRole()\n const update = useUpdateRole()\n\n const title = isCreate ? t('RoleList.createTitle') : t('RoleList.updateTitle')\n\n const formProps: FormProps = {\n layout: 'vertical',\n }\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} addonBefore=\"role_\" />\n </Form.Item>\n <Form.Item name=\"permissions\">\n <PermissionList />\n </Form.Item>\n </>\n )\n\n const onConfirm: UseFormModalProps<FormSchema, { id: number }>['onConfirm'] = async (values, extraValues) => {\n if (isCreate) {\n await create.trigger({\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n refetch(route, { page: 1 })\n message.success(t('RoleList.createSuccessfully'))\n } else {\n await update.trigger({\n id: extraValues?.id as number,\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n mutate<{ List: RoleListItem[]; Total: number }>(\n route,\n prev =>\n produce(prev, draft => {\n const match = draft?.List?.find(item => item.id === extraValues?.id)\n\n if (match) {\n match.permissions = values.permissions\n }\n }),\n { revalidate: false },\n )\n message.success(t('RoleList.updateSuccessfully'))\n }\n }\n\n return useFormModal<{\n name: string\n permissions: RoleV1['permissions'] | RoleV2['permissions']\n }>({\n title,\n width: '50vw',\n formProps,\n content,\n onConfirm,\n })\n}\n\nconst RoleList = () => {\n const { accessible: viewable } = usePermission('200005', { headers: { [APP_ID_HEADER_NAME]: 'global' } })\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n const { mutate } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useModal(true)\n const { show: showUpdateModal, modal: updateModal } = useModal()\n const remove = useRemoveRole()\n\n const handleUpdateBtnClick = async (record: RoleListItem) => {\n const { data: role } = await request<RoleV1 | RoleV2>(\n `/api/usystem/role/info${usePermissionApiV2 ? 'V2' : ''}?name=${record.name}`,\n { headers: { [APP_ID_HEADER_NAME]: 'global' } },\n )\n showUpdateModal({\n initialValues: {\n permissions: role?.permissions,\n name: role?.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: role?.id,\n },\n })\n }\n\n const columns: TableColumnsType<RoleListItem> = [\n {\n title: t('global.name'),\n key: 'name',\n render(value: RoleListItem) {\n if (viewable) {\n return (\n <Link to={`${value.name}`} relative=\"path\">\n {value.name}\n </Link>\n )\n } else {\n return <>{value.name}</>\n }\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (_, record) => {\n return (\n <Space size=\"small\">\n <PermissionButton\n isGlobal\n code=\"200003\"\n size=\"small\"\n type=\"link\"\n onClick={async () => {\n handleUpdateBtnClick(record)\n }}\n >\n {t('global.edit')}\n </PermissionButton>\n <PermissionButton\n isGlobal\n danger\n code=\"200004\"\n size=\"small\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('RoleList.deleteTitle'),\n content: (\n <Highlight texts={[record.name]}>{t('RoleList.deleteContent', { role: record.name })}</Highlight>\n ),\n async onOk() {\n await remove.trigger({\n id: record.id,\n name: record.name,\n })\n mutate<{ List: RoleListItem[]; Total: number }>(route, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === record.id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('RoleList.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n )\n },\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.role')}\n extra={\n <PermissionButton\n isGlobal\n type=\"primary\"\n code=\"200002\"\n icon={<UsergroupAddOutlined />}\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('RoleList.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<RoleListItem, undefined, { List: RoleListItem[]; Total: number }>\n isGlobal\n rowKey=\"name\"\n columns={columns}\n code=\"200001\"\n route={route}\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default RoleList\n","import { Breadcrumb, Card, Descriptions, Skeleton } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionList, useRole } from '../../../features/permission'\n\nconst RoleDetail = () => {\n const params = useParams()\n const { data, isLoading } = useRole(params.name as string)\n const { t } = useTranslation()\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: 24 }}\n items={[\n {\n key: '1',\n title: (\n <Link to=\"..\" relative=\"path\">\n {t('global.role')}\n </Link>\n ),\n },\n {\n key: '2',\n title: params.name,\n },\n ]}\n />\n <Card title={t('RoleDetail.title')}>\n <Skeleton loading={isLoading}>\n <Descriptions column={3} layout=\"vertical\">\n <Descriptions.Item label={t('global.name')}>{data?.name}</Descriptions.Item>\n <Descriptions.Item label=\"ID\">{data?.id}</Descriptions.Item>\n <Descriptions.Item label={t('global.creationTime')}>{data?.ctime}</Descriptions.Item>\n </Descriptions>\n <PermissionList readonly value={data?.permissions} />\n </Skeleton>\n </Card>\n </>\n )\n}\n\nexport default RoleDetail\n","import './styles/index.css'\nexport * from './components/contextProvider'\nexport * from './components/dynamicTags'\nexport * from './components/expandableParagraph'\nexport * from './components/filterFormWrapper'\nexport * from './components/highlight'\nexport * from './components/infiniteList'\nexport * from './components/layout'\nexport * from './components/navMenu'\nexport * from './components/permissionButton'\nexport * from './components/queryList'\nexport * from './components/requireGame'\nexport * from './components/requirePermission'\nexport * from './components/userWidget'\nexport * from './constants'\nexport * from './hooks/formModal'\nexport * from './hooks/modal'\nexport * from './hooks/permission'\nexport * from './hooks/token'\nexport { default as NotFound } from './pages/notFound'\nexport { default as OperationLogList } from './pages/operationLogList'\nexport { default as permissionRoutes } from './pages/permission'\nexport { default as SignIn } from './pages/signIn'\nexport * from './utils/request'\nexport * from './utils/storage'\n","import { PlusOutlined } from '@ant-design/icons'\nimport type { InputRef } from 'antd'\nimport { Input, Space, Tag, theme } from 'antd'\nimport type { CSSProperties, ChangeEvent, FC } from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { useTranslation } from '../locale'\n\nexport interface DynamicTagsProps {\n initialTags?: string[]\n addable?: boolean\n removable?: boolean\n // 返回 Promise。如果返回 Promise.resolve(true),则添加; 如果返回 Promise.resolve(false) 或 Promise.reject,则不添加\n addCallback?: (addedTag: string) => Promise<boolean>\n // 返回 Promise。如果返回 Promise.resolve(true),则删除; 如果返回 Promise.resolve(false) 或 Promise.reject,则不删除\n removeCallback?: (removedTag: string) => Promise<boolean>\n}\n\nconst DynamicTags: FC<DynamicTagsProps> = props => {\n const { initialTags, addable, removable, addCallback, removeCallback } = props\n const { t } = useTranslation()\n const { token } = theme.useToken()\n const [tags, setTags] = useState<string[]>([])\n const [inputVisible, setInputVisible] = useState(false)\n const [inputValue, setInputValue] = useState('')\n const [editInputIndex, setEditInputIndex] = useState(-1)\n const [editInputValue, setEditInputValue] = useState<string>('')\n const inputRef = useRef<InputRef>(null)\n const editInputRef = useRef<InputRef>(null)\n\n useEffect(() => {\n setTags(initialTags ?? [])\n }, [initialTags])\n\n useEffect(() => {\n if (inputVisible) {\n inputRef.current?.focus()\n }\n }, [inputVisible])\n\n useEffect(() => {\n editInputRef.current?.focus()\n }, [inputValue])\n\n const handleClose = async (removedTag: string) => {\n const success = await removeCallback?.(removedTag)\n\n if (success) {\n const newTags = tags.filter(tag => tag !== removedTag)\n setTags(newTags)\n }\n }\n\n const showInput = () => {\n setInputVisible(true)\n }\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputConfirm = async () => {\n if (inputValue && tags.indexOf(inputValue) === -1) {\n const success = await addCallback?.(inputValue)\n\n if (success) {\n setTags([...tags, inputValue])\n }\n }\n\n setInputVisible(false)\n setInputValue('')\n }\n\n const handleEditInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setEditInputValue(e.target.value)\n }\n\n const handleEditInputConfirm = () => {\n const newTags = [...tags]\n newTags[editInputIndex] = editInputValue\n setTags(newTags)\n setEditInputIndex(-1)\n setInputValue('')\n }\n\n const tagInputStyle: CSSProperties = {\n width: 78,\n verticalAlign: 'top',\n }\n\n const tagPlusStyle: CSSProperties = {\n background: token.colorBgContainer,\n borderStyle: 'dashed',\n }\n\n return (\n <Space wrap size={[0, 8]}>\n <Space wrap size={[0, 8]}>\n {tags.map((tag, index) => {\n if (editInputIndex === index) {\n return (\n <Input\n ref={editInputRef}\n key={tag}\n size=\"small\"\n style={tagInputStyle}\n value={editInputValue}\n onChange={handleEditInputChange}\n onBlur={handleEditInputConfirm}\n onPressEnter={handleEditInputConfirm}\n />\n )\n }\n\n return (\n <Tag\n key={tag}\n closable={removable}\n style={{ userSelect: 'none' }}\n onClose={async e => {\n e.preventDefault()\n await handleClose(tag)\n }}\n >\n <span\n onDoubleClick={e => {\n if (index !== 0) {\n setEditInputIndex(index)\n setEditInputValue(tag)\n e.preventDefault()\n }\n }}\n >\n {tag}\n </span>\n </Tag>\n )\n })}\n </Space>\n {addable &&\n (inputVisible ? (\n <Input\n ref={inputRef}\n type=\"text\"\n size=\"small\"\n style={tagInputStyle}\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputConfirm}\n onPressEnter={handleInputConfirm}\n />\n ) : (\n <Tag style={tagPlusStyle} onClick={showInput}>\n <PlusOutlined />\n {t('global.add')}\n </Tag>\n ))}\n </Space>\n )\n}\n\nexport default DynamicTags\n","import { Typography } from 'antd'\nimport type { ParagraphProps } from 'antd/es/typography/Paragraph'\nimport type { FC } from 'react'\nimport { useState } from 'react'\n\nexport type ExpandableParagraphProps = Omit<ParagraphProps, 'ellipsis' | 'className'>\n\nconst ExpandableParagraph: FC<ExpandableParagraphProps> = props => {\n const { children, ...restProps } = props\n const [expanded, setExpanded] = useState(false)\n\n return (\n <Typography.Paragraph\n {...restProps}\n className=\"mb-0\"\n ellipsis={{\n rows: 2,\n expandable: 'collapsible',\n expanded,\n onExpand: (_, info) => {\n setExpanded(info.expanded)\n },\n }}\n >\n {children}\n </Typography.Paragraph>\n )\n}\n\nexport default ExpandableParagraph\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { Button, Form, Result, Spin, Table } from 'antd'\nimport type { TableProps } from 'antd/es/table'\nimport qs from 'query-string'\nimport type { Key, ReactNode } from 'react'\nimport { useEffect, useMemo, useState } from 'react'\nimport useSWRInfinite from 'swr/infinite'\nimport { APP_ID_HEADER_NAME } from '../../constants'\nimport { usePermission } from '../../hooks/permission'\nimport { request } from '../../utils/request'\nimport { useToolkitsContext } from '../contextProvider'\nimport { FilterFormWrapper } from '../filterFormWrapper'\nimport { useGameStore } from '../layout'\nimport { useTranslation } from '../locale'\n\ninterface InfiniteListExtra<Values> {\n key: Key\n children: ReactNode | ((form: FormInstance<Values>) => ReactNode)\n}\n\nexport interface InfiniteListProps<Item, Values, Response>\n extends Pick<TableProps<Item>, 'columns' | 'rowKey' | 'tableLayout' | 'expandable' | 'rowSelection' | 'bordered'> {\n action: string\n getRowKey: (response: Response) => any\n getDataSource: (data: Response[] | undefined) => Item[]\n code?: string\n headers?: Record<string, string> | ((form: FormInstance<Values>) => Record<string, string>)\n renderForm?: (form: FormInstance<Values>) => ReactNode\n transformArg: (values: Values, rowKey?: string) => Record<any, any>\n hasMore?: (data: Response[] | undefined) => boolean\n isGlobal?: boolean\n extras?: InfiniteListExtra<Values>[]\n}\n\nconst InfiniteList = <Item extends object, Values extends object | undefined = undefined, Response = any>(\n props: InfiniteListProps<Item, Values, Response>,\n) => {\n const {\n code,\n action,\n extras,\n headers,\n isGlobal,\n getRowKey,\n getDataSource,\n hasMore,\n renderForm,\n transformArg,\n ...tableProps\n } = props\n const { t } = useTranslation()\n const [form] = Form.useForm<Values>()\n const { accessible, isLoading } = usePermission(code)\n const [isValid, setIsValid] = useState(false)\n const [formValues, setFormValues] = useState<Values>()\n\n const getKey = (pageIndex: number, previousPageData: Response) => {\n if (!isValid) return null\n\n const rowKey = pageIndex !== 0 ? getRowKey(previousPageData) : undefined\n const args = transformArg(formValues as Values, rowKey)\n const queryString = qs.stringify(args)\n\n return queryString ? `${action}?${qs.stringify(args)}` : action\n }\n\n const { game } = useGameStore()\n const usePermissionApiV2 = useToolkitsContext(state => state.usePermissionApiV2)\n\n const _headers = useMemo(() => {\n const newHeaders = new Headers(typeof headers === 'function' ? headers(form) : headers)\n\n if (usePermissionApiV2) {\n if (isGlobal) {\n newHeaders.set(APP_ID_HEADER_NAME, 'global')\n } else if (game) {\n newHeaders.set(APP_ID_HEADER_NAME, String(game.id))\n }\n }\n return newHeaders\n }, [usePermissionApiV2, isGlobal, game, headers])\n\n const {\n data,\n size,\n setSize,\n isValidating: isListValidating,\n mutate,\n } = useSWRInfinite(\n getKey,\n arg => {\n return request<Response>(arg, {\n headers: _headers,\n }).then(response => response.data)\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n revalidateFirstPage: false,\n },\n )\n\n const dataSource = getDataSource(data)\n const isLoadingMore = isListValidating || (size > 0 && data && typeof data[size - 1] === 'undefined')\n const isReachingEnd = typeof hasMore !== 'undefined' ? !hasMore(data) : true\n const isEmpty = !dataSource || dataSource.length === 0\n\n const onConfirm = async () => {\n const values = await form.getFieldsValue()\n setFormValues(values)\n\n try {\n await form.validateFields()\n\n if (size === 1) {\n mutate()\n } else {\n setSize(1)\n setIsValid(true)\n }\n } catch (_) {\n setSize(0)\n setIsValid(false)\n }\n }\n\n const loadMore = () => {\n setSize(size + 1)\n }\n\n const onReset = async () => {\n try {\n form.resetFields()\n await form.validateFields({ validateOnly: true })\n if (size === 1) {\n mutate()\n } else {\n setSize(1)\n }\n } catch (_) {\n setSize(0)\n }\n }\n\n useEffect(() => {\n if (accessible) {\n form\n .validateFields({ validateOnly: true })\n .then(values => {\n setFormValues(values)\n setIsValid(true)\n })\n .catch(() => {\n setIsValid(false)\n })\n }\n }, [accessible])\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n return (\n <>\n {renderForm ? (\n <FilterFormWrapper\n extras={extras?.map(extra => ({\n key: extra.key,\n children: typeof extra.children === 'function' ? extra.children(form) : extra.children,\n }))}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {renderForm(form)}\n </FilterFormWrapper>\n ) : (\n <Form form={form} />\n )}\n <Table {...tableProps} dataSource={dataSource} loading={isLoadingMore} pagination={false} />\n {!isEmpty && (\n <Button\n block\n loading={isLoadingMore}\n type=\"link\"\n htmlType=\"button\"\n disabled={isLoadingMore || isReachingEnd}\n onClick={loadMore}\n >\n {isLoadingMore\n ? t('InfiniteList.loadingText')\n : isReachingEnd\n ? t('InfiniteList.reachEndText')\n : t('InfiniteList.loadMoreText')}\n </Button>\n )}\n </>\n )\n}\n\nexport default InfiniteList\n","import { Result, Spin } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { APP_ID_HEADER_NAME } from '../../constants'\nimport { usePermission } from '../../hooks/permission'\nimport { useTranslation } from '../locale'\n\nexport interface RequirePermissionProps {\n code: string\n isGlobal?: boolean\n}\n\nconst RequirePermission: FC<PropsWithChildren<RequirePermissionProps>> = props => {\n const { code, isGlobal, children } = props\n const { accessible, isValidating } = usePermission(\n code,\n isGlobal ? { headers: { [APP_ID_HEADER_NAME]: 'global' } } : undefined,\n )\n const { t } = useTranslation()\n\n if (isValidating) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status=\"403\" subTitle={t('global.noEntitlement')} />\n }\n\n return <>{children}</>\n}\n\nexport default RequirePermission\n","import { Button, Result } from 'antd'\nimport type { FC } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from '../../components/locale'\n\ninterface NotFoundProps {\n redirectUrl?: string\n}\n\nconst NotFound: FC<NotFoundProps> = props => {\n const { redirectUrl } = props\n const navigate = useNavigate()\n const { t } = useTranslation()\n\n return (\n <div className=\"h-screen flex justify-center items-center\">\n <Result\n status=\"404\"\n title=\"404\"\n subTitle={t('NotFound.subTitle')}\n extra={\n redirectUrl && (\n <Button\n type=\"primary\"\n onClick={() => {\n navigate(redirectUrl)\n }}\n >\n {t('NotFound.buttonText')}\n </Button>\n )\n }\n />\n </div>\n )\n}\n\nexport default NotFound\n","import { Card, Form, Input, Select } from 'antd'\nimport type { ColumnsType } from 'antd/es/table'\nimport dayjs from 'dayjs'\nimport type { FC } from 'react'\nimport { ExpandableParagraph } from '../../components/expandableParagraph'\nimport { useTranslation } from '../../components/locale'\nimport { QueryList } from '../../components/queryList'\nimport type { OperationLogListItem } from './types'\n\nconst { Option } = Select\n\nconst OperationLogList: FC = () => {\n const { t } = useTranslation()\n\n const columns: ColumnsType<OperationLogListItem> = [\n {\n key: 'username',\n title: t('global.username'),\n dataIndex: 'uname',\n width: 100,\n },\n {\n key: 'label',\n title: t('global.label'),\n dataIndex: 'label',\n width: 150,\n },\n {\n key: 'method',\n title: t('global.method'),\n dataIndex: 'method',\n width: 100,\n },\n {\n key: 'route',\n title: t('global.route'),\n dataIndex: 'route',\n width: 200,\n },\n {\n key: 'request',\n title: t('global.request'),\n dataIndex: 'request',\n render(value: string) {\n return <ExpandableParagraph>{value}</ExpandableParagraph>\n },\n },\n {\n key: 'response',\n title: t('global.response'),\n dataIndex: 'response',\n render(value: string) {\n return <ExpandableParagraph>{value}</ExpandableParagraph>\n },\n },\n {\n key: 'creation_time',\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n width: 200,\n render(value: string) {\n return dayjs(value).format('YYYY-MM-DD HH:mm:ss')\n },\n },\n ]\n\n return (\n <Card title=\"操作日志\">\n <QueryList<\n OperationLogListItem,\n {\n uname?: string\n route?: string\n method?: 'get' | 'post'\n label?: string\n },\n {\n List: OperationLogListItem[]\n Total: number\n }\n >\n isGlobal\n rowKey=\"id\"\n code=\"300001\"\n columns={columns}\n tableLayout=\"fixed\"\n route=\"/api/usystem/log/list\"\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n renderForm={form => (\n <Form form={form} layout=\"inline\">\n <Form.Item label={t('global.username')} name=\"uname\">\n <Input allowClear />\n </Form.Item>\n <Form.Item label={t('global.route')} name=\"route\">\n <Input allowClear />\n </Form.Item>\n <Form.Item label={t('global.method')} name=\"method\">\n <Select allowClear style={{ width: '100px' }}>\n <Option value=\"get\">GET</Option>\n <Option value=\"post\">POST</Option>\n </Select>\n </Form.Item>\n <Form.Item label={t('global.label')} name=\"label\">\n <Input allowClear />\n </Form.Item>\n </Form>\n )}\n />\n </Card>\n )\n}\n\nexport default OperationLogList\n","import { lazy } from 'react'\nimport { Navigate, Route, Routes } from 'react-router-dom'\n\nconst UserList = lazy(() => import('./userList'))\nconst RoleList = lazy(() => import('./roleList'))\nconst RoleDetail = lazy(() => import('./roleDetail'))\n\nexport default (\n <Routes>\n <Route index element={<Navigate to=\"user\" />} />\n <Route path=\"user\" element={<UserList />} />\n <Route path=\"role\" element={<RoleList />} />\n <Route path=\"role/:name\" element={<RoleDetail />} />\n </Routes>\n)\n","import { Alert, Button, Divider, Form, Input, Space, Spin, Typography } from 'antd'\nimport type { FC, ReactNode } from 'react'\nimport { Navigate } from 'react-router-dom'\nimport useSWRImmutable from 'swr/immutable'\nimport { useTranslation } from '../../components/locale'\nimport { Logo } from '../../components/logo'\nimport { SSO_URL } from '../../constants'\nimport { useTokenStore } from '../../hooks/token'\nimport { request } from '../../utils/request'\nimport backgroundUrl from './background.svg'\n\ninterface SignInProps {\n title?: ReactNode\n successRedirectUrl: string\n extra?: ReactNode\n unregistered?: boolean\n}\n\nconst SignIn: FC<SignInProps> = props => {\n const { title, successRedirectUrl, extra, unregistered } = props\n // 当路由模式为 hash 模式时,Idaas 重定向会把 ticket 放到 hash 前面,此时的登录页的地址为标准的 URL 结构 \"/?ticket=xxx#/sign_in\"。\n // 然而 react-router-dom 无法从这种地址中获取到查询字符串,需要使用原生的 window.location.search。\n const queryParams = new URLSearchParams(window.location.search)\n const { token, setToken } = useTokenStore()\n const { t } = useTranslation()\n\n const { isLoading } = useSWRImmutable(\n queryParams.has('ticket') ? `/api/usystem/user/login?ticket=${queryParams.get('ticket')}` : null,\n url => request<{ token: string }>(url),\n {\n onSuccess: data => {\n setToken(data.data.token)\n },\n },\n )\n\n if (isLoading) {\n return (\n <div className=\"w-screen h-screen flex justify-center items-center\">\n <Spin />\n </div>\n )\n }\n\n if (token) {\n const hashMode = !!window.location.hash\n const path = successRedirectUrl\n\n if (!hashMode) {\n return <Navigate replace to={path} />\n }\n\n // 移除 ticket\n window.location.href = `${window.location.origin}${window.location.pathname}#${path}`\n\n return null\n }\n\n return (\n <div className=\"w-screen h-screen relative flex overflow-hidden\">\n <div className=\"absolute top-16 right-16 z-10\">{extra}</div>\n <div className=\"absolute left-14 top-6\">\n <Space align=\"center\">\n <Logo width={48} />\n {title}\n </Space>\n </div>\n <div className=\"flex-1 flex justify-center items-center bg-slate-50\">\n <img src={backgroundUrl} alt=\"background\" className=\"w-10/12\" />\n </div>\n <div className=\"w-[650px] relative top-0 left-0 right-0 bottom-0\">\n <div className=\"absolute top-1/2 -translate-y-1/2 left-0 right-0\">\n <div className=\"-translate-y-10 px-36\">\n <div className=\"flex flex-col justify-center\">\n <div className=\"h-10\">\n {unregistered && <Alert banner closable message={t('SignIn.unregistered')} type=\"error\" />}\n </div>\n <Typography.Title level={2}>{t('SignIn.welcome')}</Typography.Title>\n <div className=\"mt-4\">\n <Form layout=\"vertical\" autoComplete=\"off\">\n <Form.Item label={t('global.username')} name=\"username\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label={t('global.password')} name=\"password\" rules={[{ required: true }]}>\n <Input.Password />\n </Form.Item>\n <Form.Item>\n <Button block type=\"primary\" shape=\"round\" htmlType=\"submit\">\n {t('global.signIn')}\n </Button>\n </Form.Item>\n </Form>\n </div>\n <Divider plain dashed>\n {t('SignIn.thirdParty')}\n </Divider>\n <div className=\"flex justify-center items-center\">\n <Button\n block\n shape=\"round\"\n href={`${SSO_URL}/logout?service=${SSO_URL}/login?service=${window.location.href}`}\n target=\"_self\"\n >\n <Logo width={18} />\n {t('SignIn.signInWithIDass')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default SignIn\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-toolkits",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.9.
|
|
4
|
+
"version": "2.9.23",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"*.css"
|
|
7
7
|
],
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
"tsup": "^8.1.0",
|
|
66
66
|
"typescript": "^5.5.4",
|
|
67
67
|
"@flow97/eslint-config-react": "0.0.4",
|
|
68
|
-
"
|
|
69
|
-
"
|
|
68
|
+
"tsconfig": "0.0.6",
|
|
69
|
+
"tailwind-config": "0.1.2"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"antd": "^5.12.2",
|