react-toolkits 2.4.12 → 2.4.13
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 +6 -0
- package/lib/index.js +5 -5
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/locale/context.ts","../src/components/locale/zh_CN.ts","../src/components/locale/hooks.ts","../src/components/locale/index.tsx","../src/components/contextProvider/constants.ts","../src/components/contextProvider/context.ts","../src/components/contextProvider/Provider.tsx","../src/components/contextProvider/index.ts","../src/components/filterFormWrapper/index.tsx","../src/components/highlight/index.tsx","../src/components/logo/Logo.tsx","../src/components/logo/index.tsx","../src/components/navMenu/stores.ts","../src/components/navMenu/utils.tsx","../src/components/navMenu/NavMenu.tsx","../src/components/navMenu/index.ts","../src/pages/signIn/index.tsx","../src/hooks/token.ts","../src/components/userWidget/index.tsx","../src/utils/storage.ts","../src/components/layout/stores.ts","../src/components/layout/ContentWrapper.tsx","../src/components/layout/GameSelect.tsx","../src/components/layout/style.css","../src/components/layout/Layout.tsx","../src/components/layout/index.tsx","../src/utils/request.ts","../src/hooks/permission.ts","../src/components/permissionButton/PermissionButton.tsx","../src/components/permissionButton/index.tsx","../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/index.tsx","../src/components/expandableParagraph/index.tsx","../src/components/infiniteList/InfiniteList.tsx","../src/components/permissionGuard/index.tsx","../src/pages/notFound/index.tsx","../src/pages/operationLogList/index.tsx","../src/pages/permission/index.tsx"],"names":["LocaleContext","context_default","init_context","__esmMin","createContext","locale","zh_CN_default","init_zh_CN","useTranslation","localeFromContext","useContext","useMemo","key","data","has","template","get","init_hooks","LocaleProvider","locale_default","init_locale","props","children","memoizedContextValue","jsx","defaultState","init_constants","ToolkitsContext","useToolkitsContext","contextStore","ContextProvider","Provider_default","init_Provider","createStore","rest","config","childNode","useEffect","init_contextProvider","FilterFormWrapper","filterFormWrapper_default","init_filterFormWrapper","extras","isConfirming","onConfirm","onReset","buttonsAlign","showReset","t","colorFillAlter","lineWidth","lineType","colorBorder","borderRadiusLG","theme","jsxs","Space","Button","item","Fragment","renderToString","node","container","root","createRoot","resolve","flushSync","splitByTags","Highlight","highlight_default","init_highlight","str","regex","part","texts","htmlString","setHtmlString","useState","result","text","index","Logo","Logo_default","init_Logo","logoUrl","init_logo","useNavStore","init_stores","create","persist","set","keys","createJSONStorage","state","checkChildren","permissions","child","transformItems","items","i","restProps","route","label","code","isPass","withLink","flatItems","keypath","init_utils","Link","NavMenu","NavMenu_default","init_NavMenu","init_permission","memo","location","useLocation","flattenItems","codes","isLoading","usePermissions","internalItems","openKeys","selectedKeys","setOpenKeys","setSelectedKeys","onOpenChange","useCallback","lastOpenKey","match","Spin","Menu","init_navMenu","NotRegisteredFlag","SSO_URL","useRedirectToSignIn","SignIn","signIn_default","init_signIn","init_token","init_request","init_background","clearToken","useTokenStore","navigate","useNavigate","signInUrl","notRegistered","queryParams","token","setToken","signInPageTitle","localeDropdownMenu","signInSuccessRedirectUrl","idaasRedirectUrl","useSWRImmutable","url","request","hashMode","path","Navigate","background_default","Alert","Typography","Form","Input","Divider","useTokenValidation","skip","usePermissionApiV2","redirectToSignIn","error","RequestError","store","jwtDecode","UserWidget","userWidget_default","init_userWidget","getUser","user","LogoutOutlined","Dropdown","e","UserOutlined","mixedStorage","init_storage","name","value","useLayoutStore","useGameStore","collapsed","id","initialized","refetchGames","matchedGame","response","switching","ContentWrapper","ContentWrapper_default","init_ContentWrapper","Antd","hideGameSelect","game","Empty","Text","GameSelect","GameSelect_default","init_GameSelect","filter","onGameChange","games","setGame","options","onChange","Select","init_style","Header","Sider","Content","Layout","Layout_default","init_Layout","headerExtra","navWidth","colorBgContainer","appTitle","setCollapsed","MenuUnfoldOutlined","MenuFoldOutlined","extra","Suspense","init_layout","opts","_opts","body","params","responseType","isGlobal","parsed","qs","queryString","headers","isJsonBody","requestOpts","responseInterceptor","json","pick","__publicField","isValidating","useSWR","acc","curr","usePermission","PermissionButton","PermissionButton_default","init_PermissionButton","showLoading","disabled","Tooltip","init_permissionButton","useQueryListStore","payload","force","prevKey","nextPayload","nextKey","unstable_serialize","mutate","page","QueryListAction","InternalQueryList","QueryList","QueryList_default","init_QueryList","ref","internalProps","onePage","method","defaultSize","refreshInterval","tableExtra","form","renderForm","afterSuccess","getTotal","getDataSource","tableProps","notification","App","_form","accessible","action","useRef","originalData","isValid","setIsValid","keyMap","getPayload","refetch","size","formValue","_body","_params","_headers","newHeaders","serializedKey","shouldPoll","dataSource","total","pagination","currentPage","currentSize","timer","useImperativeHandle","Result","formRenderer","cloneElement","extraRenderer","Table","forwardRef","init_queryList","useModal","content","modalProps","uuid","modalStore","useModalStore","open","confirmLoading","setConfirmLoading","isRenderFunction","show","hide","internalModal","Modal","init_modal","useFormModal","formProps","internalExtraValues","setInternalExtraValues","internalForm","hanldeConfirm","values","afterClose","modal","operation","initialValues","extraValues","init_formModal","useAllPermissions","useAllPermissionsV2","useAllRoles","useRole","useCreateRole","useSWRMutation","arg","useUpdateRole","useRemoveRole","useCreateUser","useUpdateUser","useRemoveUser","PermissionCollapse","permissionCollapse_default","init_permissionCollapse","readonly","expand","activeKey","setActiveKey","checkedMap","setCheckedMap","internalValue","setInternalValue","onCollapseChange","getCheckedValue","checkedValue","tempValue","onCheckChange","category","Collapse","Checkbox","permission","Row","Col","PermissionListV1","permissionListV1_default","init_permissionListV1","Skeleton","Option","PermissionListV2","permissionListV2_default","init_permissionListV2","gameList","setGameList","globalPermissions","gamePermissions","list","addGame","prev","removeGame","_","newValue","Card","selectedValue","pev","temp","gameId","PermissionList","permissionList_default","init_permissionList","init_types","userList_exports","__export","userList_default","UserList","init_userList","isCreate","message","jump","roles","update","title","role","produce","draft","remove","showCreateModal","createModal","showUpdateModal","updateModal","columns","Tag","UserAddOutlined","roleList_exports","roleList_default","RoleList","init_roleList","viewable","handleUpdateBtnClick","record","UsergroupAddOutlined","roleDetail_exports","roleDetail_default","RoleDetail","init_roleDetail","useParams","Breadcrumb","Descriptions","DynamicTags","initialTags","addable","removable","addCallback","removeCallback","tags","setTags","inputVisible","setInputVisible","inputValue","setInputValue","editInputIndex","setEditInputIndex","editInputValue","setEditInputValue","inputRef","editInputRef","handleClose","removedTag","newTags","tag","showInput","handleInputChange","handleInputConfirm","handleEditInputChange","handleEditInputConfirm","tagInputStyle","tagPlusStyle","PlusOutlined","dynamicTags_default","ExpandableParagraph","expanded","setExpanded","info","expandableParagraph_default","InfiniteList","getRowKey","hasMore","transformArg","formValues","setFormValues","getKey","pageIndex","previousPageData","rowKey","args","setSize","isListValidating","useSWRInfinite","isLoadingMore","isReachingEnd","isEmpty","loadMore","InfiniteList_default","PermissionGuard","permissionGuard_default","NotFound","notFoundRedirectUrl","notFound_default","OperationLogList","dayjs","operationLogList_default","lazy","PermissionRoutes","Routes","Route","permission_default"],"mappings":"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","file":"index.js","sourcesContent":["import { createContext } from 'react'\nimport type { Locale } from '.'\n\nexport type LocaleContextProps = Locale\n\nconst LocaleContext = createContext<LocaleContextProps | undefined>(undefined)\n\nexport default LocaleContext\n","import type { Locale } from '.'\n\nconst locale: Locale = {\n global: {\n noEntitlement: '无权限,请联系管理员。',\n name: '名称',\n creationTime: '创建时间',\n operation: '操作',\n update: '更新',\n edit: '编辑',\n delete: '删除',\n selectAll: '全选',\n game: '游戏',\n user: '用户',\n role: '角色',\n username: '用户名',\n password: '密码',\n label: '标签',\n method: '方法',\n route: '路由',\n request: '请求',\n response: '响应',\n add: '添加',\n signIn: '登录',\n },\n SignIn: {\n title: '登录方式',\n thirdParty: '第三方登录',\n signInWithIDass: 'IDass 登录',\n notRegistered: '您还未在平台注册,请联系管理员',\n welcome: '欢迎',\n },\n NotFound: {\n subTitle: '访问的页面不存在',\n buttonText: '返回首页',\n },\n FilterFormWrapper: {\n confirmText: '查询',\n resetText: '重置',\n },\n FormModal: {\n confirmText: '确认',\n cancelText: '取消',\n },\n GameSelect: {\n label: '当前游戏',\n placeholder: '请选择游戏',\n },\n RequireGame: {\n description: '请选择游戏',\n },\n UserWidget: {\n signOutText: '登出',\n },\n UserList: {\n createTitle: '创建用户',\n createSuccessfully: '用户创建成功',\n updateTitle: '更新用户',\n updateSuccessfully: '用户更新成功',\n deleteTitle: '删除用户',\n deleteContent: '确定要删除用户 <%= user %> 吗?',\n deleteSuccessfully: '用户删除成功',\n },\n RoleList: {\n createTitle: '创建角色',\n createSuccessfully: '角色创建成功',\n updateTitle: '更新角色',\n updateSuccessfully: '角色更新成功',\n deleteTitle: '删除角色',\n deleteContent: '确定要删除角色 <%= role %> 吗?',\n deleteSuccessfully: '角色删除成功',\n },\n PermissionList: {\n failedDescription: '获取权限列表失败',\n baseSectionTitle: '平台基础权限',\n gameSectionTitle: '游戏权限',\n gameSectionDescription: '请先选择游戏',\n gameSelectPlaceholder: '请先选择游戏',\n removeText: '移除',\n addText: '添加游戏权限',\n },\n RoleDetail: {\n title: '角色详情',\n },\n InfiniteList: {\n loadingText: '加载中',\n reachEndText: '已经到底了',\n loadMoreText: '加载更多',\n },\n}\n\nexport default locale\n","import { get, has, template } from 'lodash-es'\nimport { useContext, useMemo } from 'react'\nimport type { Locale } from '.'\nimport type { LocaleContextProps } from './context'\nimport LocaleContext from './context'\nimport defaultLocale from './zh_CN'\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 localeFromContext = useContext<LocaleContextProps | undefined>(LocaleContext)\n\n const locale = {\n ...defaultLocale,\n ...localeFromContext,\n }\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","import type { FC, PropsWithChildren } from 'react'\nimport { useMemo } from 'react'\nimport LocaleContext from './context'\n\nexport 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 notRegistered: 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\nexport interface LocaleProviderProps {\n locale: Locale\n}\n\nconst LocaleProvider: FC<PropsWithChildren<LocaleProviderProps>> = props => {\n const { locale = {} as Locale, children } = props\n const memoizedContextValue = useMemo(() => ({ ...locale }), [locale])\n\n return <LocaleContext.Provider value={memoizedContextValue}>{children}</LocaleContext.Provider>\n}\n\nexport default LocaleProvider\n","import type { ContextState } from './context'\n\nexport const defaultState: ContextState = {\n appTitle: '',\n usePermissionApiV2: false,\n signInUrl: '',\n signInSuccessRedirectUrl: '/',\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ReactNode } from 'react'\nimport { createContext } from 'react'\nimport type { RequestOptions } from '../../utils/request'\nimport type { Locale } from '../locale'\nimport { defaultState } from './constants'\n\nexport interface ContextState {\n appTitle: ReactNode\n signInPageTitle?: ReactNode\n usePermissionApiV2: boolean // 使用 V2 版本的权限接口\n locale?: Locale\n localeDropdownMenu?: ReactNode\n signInUrl: string // 登录地址\n signInSuccessRedirectUrl: string // 登录成功后的重定向地址\n notFoundRedirectUrl?: string // 404 重定向地址\n responseInterceptor?: (response: Response, opts: RequestOptions) => Promise<any>\n}\n\nconst ToolkitsContext = createContext<ContextState>(defaultState)\n\nexport default ToolkitsContext\n","import type { FC, PropsWithChildren } from 'react'\nimport { useContext, useEffect } from 'react'\nimport { createStore } from 'zustand'\nimport LocaleProvider from '../locale'\nimport { defaultState } from './constants'\nimport type { ContextState } from './context'\nimport ToolkitsContext from './context'\n\nexport const contextStore = createStore<ContextState>(() => defaultState)\n\n// 最接近的祖先 ContextProvider 内包含的上下文。\nexport function useToolkitsContext() {\n return useContext(ToolkitsContext)\n}\n\nconst ContextProvider: FC<PropsWithChildren<Partial<ContextState>>> = props => {\n const { children, locale, ...rest } = props\n const parentConfig = useToolkitsContext()\n\n const config = {\n ...parentConfig,\n ...rest,\n }\n\n const childNode = locale ? <LocaleProvider locale={locale}>{children}</LocaleProvider> : children\n\n useEffect(() => {\n contextStore.setState(config)\n }, [config])\n\n return <ToolkitsContext.Provider value={config}>{childNode}</ToolkitsContext.Provider>\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ContextProvider.displayName = 'ContextProvider'\n}\n\nexport default ContextProvider\n","import type { ContextState } from './context'\nimport ContextProvider, { contextStore, useToolkitsContext } from './Provider'\n\nexport { ContextProvider, contextStore, useToolkitsContext }\nexport type { ContextState }\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","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 HighlightTextsProps extends PropsWithChildren {\n texts: Array<string | number>\n}\n\nconst Highlight = (props: HighlightTextsProps) => {\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","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","import type { ItemType, MenuDividerType, MenuItemGroupType, MenuItemType, SubMenuType } from 'antd/es/menu/interface'\nimport type { ReactNode } from 'react'\nimport { Link } from 'react-router-dom'\nimport type { Merge } from 'ts-essentials'\nimport type { MenuItemGroupType2, MenuItemType2, NavMenuItem, SubMenuType2 } from './types'\n\nconst withLink = (label?: ReactNode, route?: string): ReactNode => {\n if (route) {\n return <Link to={route}>{label}</Link>\n }\n\n return label\n}\n\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\nexport function transformItems(items: NavMenuItem[], permissions?: Record<string, boolean>) {\n const result: ItemType[] = []\n\n for (let i = 0; i < items.length; i++) {\n if (items[i] === null) {\n result[i] = null\n } else if ((items[i] as MenuDividerType).type === 'divider') {\n result[i] = { ...items[i] } as MenuDividerType\n } else {\n if ((items[i] as SubMenuType2 | MenuItemGroupType2).children) {\n const { children, ...restProps } = items[i] as SubMenuType2 | MenuItemGroupType2\n\n result[i] = checkChildren(children ?? [], permissions)\n ? ({\n ...restProps,\n children: transformItems(children ?? [], permissions),\n } as SubMenuType | MenuItemGroupType)\n : null\n } else {\n const { route, label, code, ...restProps } = items[i] as MenuItemType2\n const isPass = !code || !permissions || permissions[code]\n\n result[i] = isPass\n ? ({\n ...restProps,\n label: withLink(label, route),\n } as MenuItemType)\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 { 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}\n\nconst NavMenu = memo(function NavMenu(props: NavMenuProps) {\n const { items } = 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, true)\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 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 { Alert, Button, Divider, Form, Input, Space, Spin, Typography } from 'antd'\nimport { type FC } from 'react'\nimport { Navigate, useLocation, useNavigate } from 'react-router-dom'\nimport useSWRImmutable from 'swr/immutable'\nimport { useToolkitsContext } from '../../components/contextProvider'\nimport { useTranslation } from '../../components/locale'\nimport { Logo } from '../../components/logo'\nimport { useTokenStore } from '../../hooks/token'\nimport { request } from '../../utils/request'\nimport backgroundUrl from './background.svg'\n\nconst NotRegisteredFlag = 'notRegistered'\n\nconst SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\n\nexport const useRedirectToSignIn = () => {\n const clearToken = useTokenStore(state => state.clearToken)\n const navigate = useNavigate()\n const { signInUrl } = useToolkitsContext()\n\n return (notRegistered?: boolean) => {\n clearToken()\n navigate(signInUrl, { state: { [NotRegisteredFlag]: notRegistered } })\n }\n}\n\nconst SignIn: FC = () => {\n const location = useLocation()\n // 当路由模式为 hash 模式时,Idaas 重定向会忽略 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 const { signInPageTitle, localeDropdownMenu, signInSuccessRedirectUrl } = useToolkitsContext()\n const idaasRedirectUrl = encodeURIComponent(window.location.href)\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 = signInSuccessRedirectUrl\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 {localeDropdownMenu && <div className=\"absolute top-16 right-16 z-10\">{localeDropdownMenu}</div>}\n <div className=\"absolute left-14 top-6\">\n <Space align=\"center\">\n <Logo width={48} />\n {signInPageTitle}\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 {location.state?.[NotRegisteredFlag] && (\n <Alert banner closable message={t('SignIn.notRegistered')} type=\"error\" />\n )}\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 block shape=\"round\" href={`${SSO_URL}/login?service=${idaasRedirectUrl}`} target=\"_self\">\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","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 { useRedirectToSignIn } from '../pages/signIn'\nimport { request, RequestError } 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(skip = false) {\n const { usePermissionApiV2 } = useToolkitsContext()\n const redirectToSignIn = useRedirectToSignIn()\n\n return useSWRImmutable(\n !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 isGlobal: true,\n }),\n {\n onError: error => {\n if (error instanceof RequestError) {\n if (error.status === 401) {\n redirectToSignIn()\n } else if (error.status === 412) {\n redirectToSignIn(true)\n }\n }\n },\n },\n )\n}\n","import { 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 { useTranslation } from '../locale'\nimport { useTokenStore } from '../../hooks/token'\nimport { useToolkitsContext } from '../contextProvider'\n\nconst UserWidget: FC = () => {\n const navigate = useNavigate()\n const { clearToken, getUser } = useTokenStore()\n const user = getUser()\n const { t } = useTranslation()\n const { signInUrl } = useToolkitsContext()\n\n const items: MenuProps['items'] = [\n {\n key: '1',\n label: (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid\n <a\n data-cy=\"user-widget-logout\"\n onClick={() => {\n clearToken()\n if (signInUrl) {\n navigate(signInUrl)\n }\n }}\n >\n {t('UserWidget.signOutText')}\n </a>\n ),\n icon: <LogoutOutlined />,\n },\n ]\n\n return (\n <div data-cy=\"user-widget\">\n <Dropdown\n menu={{\n selectable: true,\n items,\n }}\n placement=\"bottomRight\"\n >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid */}\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","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 type { Game, GameState } 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\nexport const useGameStore = create<GameState>()(\n persist(\n (set, get) => ({\n initialized: false,\n isLoading: false,\n switching: false,\n game: null,\n games: [],\n async setGame(id) {\n const { initialized, refetchGames } = get()\n\n if (!initialized) {\n await refetchGames()\n }\n\n const matchedGame = (get().games ?? []).find(item => item.game_id === id)\n set({ game: matchedGame ?? null })\n },\n async refetchGames() {\n if (!get().isLoading) {\n try {\n set({ isLoading: true })\n const response = await request<{ list: Game[] }>('/api/game/list')\n set({ games: response.data?.list ?? [] })\n } finally {\n set({\n initialized: true,\n isLoading: false,\n })\n }\n }\n },\n setSwitching: (switching: boolean) => set({ switching }),\n }),\n {\n name: 'game',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({ game: state.game }),\n },\n ),\n)\n","import * as Antd from 'antd'\nimport { Empty } from 'antd'\nimport { type FC, type PropsWithChildren } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { useTranslation } from '../locale'\nimport { useGameStore } from './stores'\n\nconst { Spin } = Antd\n\ninterface ContentWrapperProps extends PropsWithChildren {\n hideGameSelect?: boolean\n}\n\nconst ContentWrapper: FC<ContentWrapperProps> = props => {\n const { hideGameSelect, children } = props\n const { usePermissionApiV2 } = useToolkitsContext()\n const { game, isLoading } = useGameStore()\n const { t } = useTranslation()\n\n if (isLoading) {\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 (usePermissionApiV2 && !hideGameSelect && !game) {\n return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={t('RequireGame.description')} />\n }\n\n return children\n}\n\nexport default ContentWrapper\n","import { Select, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect } from 'react'\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, refetchGames, setGame } = useGameStore()\n\n useEffect(() => {\n refetchGames()\n }, [])\n\n const options = games\n ?.filter(item => filter?.(item) ?? true)\n ?.map(item => ({\n label: item.name,\n value: item.game_id,\n }))\n\n const onChange = async (id: number) => {\n setGame(id)\n onGameChange?.(games.find(item => item.game_id === id)!)\n }\n\n return (\n <Space>\n <Text>{t('GameSelect.label')}</Text>\n <Select<number>\n showSearch\n optionFilterProp=\"label\"\n value={game?.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 { Link } from 'react-router-dom'\nimport { useToolkitsContext } from '../contextProvider'\nimport { Logo } from '../logo'\nimport type { NavMenuItem } from '../navMenu'\nimport { NavMenu } from '../navMenu'\nimport UserWidget from '../userWidget'\nimport ContentWrapper from './ContentWrapper'\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 items?: NavMenuItem[]\n hideGameSelect?: boolean\n headerExtra?: {\n left?: HeaderExtra[]\n right?: HeaderExtra[]\n }\n navWidth?: string | number\n}\n\nconst Layout: FC<PropsWithChildren<LayoutProps>> = props => {\n const { items, headerExtra, hideGameSelect, children, navWidth, filter, onGameChange } = props\n const {\n token: { colorBgContainer, colorBorder },\n } = theme.useToken()\n const { appTitle, usePermissionApiV2, localeDropdownMenu, signInSuccessRedirectUrl } = useToolkitsContext()\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 <Link to={signInSuccessRedirectUrl} className=\"flex gap-2 px-6 py-4 overflow-hidden\">\n <Logo width={32} height={32} />\n {!collapsed && <div className=\"h-8 flex items-center expand\">{appTitle}</div>}\n </Link>\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 <Button\n type=\"text\"\n icon={collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}\n style={{ fontSize: '16px' }}\n onClick={onCollapse}\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 {localeDropdownMenu}\n <UserWidget />\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 <ContentWrapper>{children}</ContentWrapper>\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 { 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 isGlobal?: boolean\n}\n\nexport type RequestResponse<T> = Pick<Response, 'headers' | 'status' | 'statusText' | 'url'> & { data: T }\n\nexport async function request<T = any>(url: string, opts: RequestOptions = {}): Promise<RequestResponse<T>> {\n const _opts = Object.assign(opts, { responseType: opts.responseType ?? 'json' })\n const { body, params, responseType, isGlobal, ...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 (contextStore.getState().usePermissionApiV2) {\n if (isGlobal) {\n headers.set('App-ID', 'global')\n } else {\n const game = useGameStore.getState().game\n if (game) {\n headers.set('App-ID', String(game.game_id))\n }\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().responseInterceptor\n\n if (typeof responseInterceptor === 'function') {\n return await responseInterceptor(response, _opts)\n } else {\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 return {\n ...pick(response, ['headers', 'status', 'statusText', 'url']),\n data,\n }\n }\n}\n","import useSWR from 'swr'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport { request } from '../utils/request'\n\ntype PermissionCheckResult = { has_all: true } | { [k: string]: boolean }\n\nexport function usePermissions(codes: string[], isGlobal?: boolean) {\n const { usePermissionApiV2 } = useToolkitsContext()\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 method: 'POST',\n body: {\n permissions: codes,\n },\n isGlobal,\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, isGlobal?: boolean) {\n const { data, isValidating, isLoading } = usePermissions(code ? [code] : [], isGlobal)\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 { useTranslation } from '../locale'\nimport { usePermissions } from '../../hooks/permission'\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], isGlobal)\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 type { MutatorCallback, MutatorOptions } from 'swr'\nimport { mutate, unstable_serialize } from 'swr'\nimport { create } from 'zustand'\nimport type { QueryListPayload } from './QueryList'\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, force?: boolean): void\n mutate<Data = any, T = Data>(\n route: string,\n data?: T | Promise<T> | MutatorCallback<T>,\n opts?: boolean | MutatorOptions<Data, T>,\n ): Promise<T | undefined>\n jump(route: string, page?: number, force?: boolean): void\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, force = true) {\n const prevKey = get().keyMap.get(route)\n const prevPayload = get().getPayload(route)\n const nextPayload = { ...prevPayload, ...payload }\n const nextKey = unstable_serialize(nextPayload)\n\n if (prevKey === nextKey) {\n get().mutate(route, force)\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 // 不传 page 参数时,刷新当前页\n jump(route, page, force = true) {\n get().refetch(route, { page: page ?? get().getPayload(route).page }, force)\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 { 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, Response> {\n response: Response | undefined\n dataSource: Item[] | undefined\n form: FormInstance<Value>\n}\n\nexport interface QueryListProps<Item extends AnyObject = AnyObject, Value = any, Response = 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>) => ReactNode)\n form?: FormInstance<Value>\n renderForm?: (form: FormInstance<Value>) => ReactElement\n extra?: (opts: { form: FormInstance<Value>; data: Response | undefined }) => ReactNode\n afterSuccess?: (action: QueryListAction, response: Response) => void\n getTotal?: (response: Response | undefined) => number | undefined\n getDataSource?: (response: Response | 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 Response = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Response>,\n ref: Ref<QueryListRef<Item, Value, Response>>,\n) => {\n const internalProps = {\n method: 'GET',\n defaultSize: 10,\n refreshInterval: 0,\n getTotal: (response: Response | undefined) => (response as ListResponse<Item>)?.total,\n getDataSource: (response: Response | undefined) => (response 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 extra,\n renderForm,\n afterSuccess,\n body,\n params,\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, isGlobal)\n const action = useRef<QueryListAction>(QueryListAction.Init)\n const originalData = useRef<Response>()\n const { game } = useGameStore()\n const { usePermissionApiV2 } = useToolkitsContext()\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'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n ...body,\n }\n : undefined\n }, [onePage, method, page, size, formValue, body])\n\n const _params = useMemo(\n () =>\n typeof params === 'function'\n ? params(payload)\n : method === 'GET'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n ...params,\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', 'global')\n } else if (game) {\n newHeaders.set('App-ID', String(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<Response>(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(response) {\n shouldPoll.current = true\n afterSuccess?.(action.current, response)\n },\n onError(error) {\n shouldPoll.current = false\n // FIXME: 暂时在此处处理错误,后续需要优化。\n\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 // 在表单字段注册到 Form 实例前调用 validateFields 会得到错误的结果,所以需要延迟调用。\n const timer = setTimeout(async () => {\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 }, 0)\n\n return () => {\n clearTimeout(timer)\n }\n }, [form, game])\n\n useImperativeHandle(ref, () => ({\n response: 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 const extraRenderer = extra && <div className=\"mt-2 mb-4\">{extra({ form: _form, data: originalData.current })}</div>\n\n return (\n <div>\n {formRenderer}\n {extraRenderer}\n {typeof tableExtra === 'function' ? tableExtra(_form) : 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 Response = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Response> & { ref?: Ref<QueryListRef<Item, Value, Response>> },\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/gameSelect'\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, { isGlobal: true }).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, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useAllRoles() {\n const { accessible } = usePermission('200005', true)\n return useSWR(accessible ? '/api/usystem/role/all' : null, url =>\n request<RoleEnumItem[]>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useRole(name: string) {\n const { usePermissionApiV2 } = useToolkitsContext()\n return useSWR(`/api/usystem/role/${usePermissionApiV2 ? 'infoV2' : 'info'}?name=${name}`, (url: string) =>\n request<RoleV1 | RoleV2>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useCreateRole() {\n const { usePermissionApiV2 } = useToolkitsContext()\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 isGlobal: true,\n }),\n )\n}\n\nexport function useUpdateRole() {\n const { usePermissionApiV2 } = useToolkitsContext()\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 isGlobal: true,\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 isGlobal: true,\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 isGlobal: true,\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 isGlobal: true,\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 isGlobal: true,\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 => 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 key={game.id} value={game.id} disabled={gameList.some(({ gameId }) => gameId === game.id)}>\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()\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 { jump, 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 jump(route, 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 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 { jump, 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 jump(route, 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', true)\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const { usePermissionApiV2 } = useToolkitsContext()\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 { isGlobal: true },\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: <Link to=\"..\">{t('global.role')}</Link>,\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 type { ContextState } from './components/contextProvider'\nimport { ContextProvider, contextStore, useToolkitsContext } from './components/contextProvider'\nimport type { DynamicTagsProps } from './components/dynamicTags'\nimport DynamicTags from './components/dynamicTags'\nimport ExpandableParagraph from './components/expandableParagraph'\nimport type { FilterFormWrapperProps } from './components/filterFormWrapper'\nimport FilterFormWrapper from './components/filterFormWrapper'\nimport type { HighlightTextsProps } from './components/highlight'\nimport Highlight from './components/highlight'\nimport type { InfiniteListProps } from './components/infiniteList'\nimport { InfiniteList } from './components/infiniteList'\nimport type { Game } from './components/layout'\nimport { Layout, useGameStore } from './components/layout'\nimport type { NavMenuItem } from './components/navMenu'\nimport { NavMenu } from './components/navMenu'\nimport type { PermissionButtonProps } from './components/permissionButton'\nimport { PermissionButton } from './components/permissionButton'\nimport type { PermissionGuardProps } from './components/permissionGuard'\nimport PermissionGuard from './components/permissionGuard'\nimport type { QueryListProps, QueryListRef } from './components/queryList'\nimport { QueryList, QueryListAction, useQueryListStore } from './components/queryList'\nimport UserWidget from './components/userWidget'\nimport type { UseFormModalProps } from './hooks/formModal'\nimport { useFormModal } from './hooks/formModal'\nimport { useModal, useModalStore } from './hooks/modal'\nimport { usePermission, usePermissions } from './hooks/permission'\nimport type { TokenState } from './hooks/token'\nimport { useTokenStore, useTokenValidation } from './hooks/token'\nimport NotFound from './pages/notFound'\nimport OperationLogList from './pages/operationLogList'\nimport PermissionRoutes from './pages/permission'\nimport SignIn, { useRedirectToSignIn } from './pages/signIn'\nimport './styles/index.css'\nimport type { RequestOptions, RequestResponse } from './utils/request'\nimport { RequestError, request } from './utils/request'\nimport { mixedStorage } from './utils/storage'\n\nexport {\n ContextProvider,\n DynamicTags,\n ExpandableParagraph,\n FilterFormWrapper,\n Highlight,\n InfiniteList,\n Layout,\n NavMenu,\n NotFound,\n OperationLogList,\n PermissionButton,\n PermissionGuard,\n PermissionRoutes,\n QueryList,\n QueryListAction,\n RequestError,\n SignIn,\n UserWidget,\n contextStore,\n mixedStorage,\n request,\n useFormModal,\n useGameStore,\n useModal,\n useModalStore,\n usePermission,\n usePermissions,\n useQueryListStore,\n useRedirectToSignIn,\n useTokenStore,\n useTokenValidation,\n useToolkitsContext,\n type ContextState,\n type DynamicTagsProps,\n type FilterFormWrapperProps,\n type Game,\n type HighlightTextsProps,\n type InfiniteListProps,\n type NavMenuItem,\n type PermissionButtonProps,\n type PermissionGuardProps,\n type QueryListProps,\n type QueryListRef,\n type RequestOptions,\n type RequestResponse,\n type TokenState,\n type UseFormModalProps,\n}\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\ntype 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, useState } from 'react'\nimport useSWRInfinite from 'swr/infinite'\nimport { usePermission } from '../../hooks/permission'\nimport { request } from '../../utils/request'\nimport FilterFormWrapper from '../filterFormWrapper'\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 {\n data,\n size,\n setSize,\n isValidating: isListValidating,\n } = useSWRInfinite(\n getKey,\n arg => {\n return request<Response>(arg, {\n headers: typeof headers === 'function' ? headers(form) : headers,\n isGlobal,\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 { useTranslation } from '../locale'\nimport { usePermission } from '../../hooks/permission'\n\nexport interface PermissionGuardProps {\n code: string\n isGlobal?: boolean\n}\n\nconst PermissionGuard: FC<PropsWithChildren<PermissionGuardProps>> = props => {\n const { code, isGlobal, children } = props\n const { accessible, isValidating } = usePermission(code, isGlobal)\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 PermissionGuard\n","import { Button, Result } from 'antd'\nimport { useNavigate } from 'react-router-dom'\nimport { useToolkitsContext } from '../../components/contextProvider'\nimport { useTranslation } from '../../components/locale'\n\nconst NotFound = () => {\n const navigate = useNavigate()\n const { t } = useTranslation()\n const { notFoundRedirectUrl } = useToolkitsContext()\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 notFoundRedirectUrl && (\n <Button\n type=\"primary\"\n onClick={() => {\n navigate(notFoundRedirectUrl)\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 rowKey=\"id\"\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\nconst PermissionRoutes = () => {\n return (\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}\n\nexport default PermissionRoutes\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/locale/context.ts","../src/components/locale/zh_CN.ts","../src/components/locale/hooks.ts","../src/components/locale/index.tsx","../src/components/contextProvider/constants.ts","../src/components/contextProvider/context.ts","../src/components/contextProvider/Provider.tsx","../src/components/contextProvider/index.ts","../src/components/filterFormWrapper/index.tsx","../src/components/highlight/index.tsx","../src/components/logo/Logo.tsx","../src/components/logo/index.tsx","../src/components/navMenu/stores.ts","../src/components/navMenu/utils.tsx","../src/components/navMenu/NavMenu.tsx","../src/components/navMenu/index.ts","../src/pages/signIn/index.tsx","../src/hooks/token.ts","../src/components/userWidget/index.tsx","../src/utils/storage.ts","../src/components/layout/stores.ts","../src/components/layout/ContentWrapper.tsx","../src/components/layout/GameSelect.tsx","../src/components/layout/style.css","../src/components/layout/Layout.tsx","../src/components/layout/index.tsx","../src/utils/request.ts","../src/hooks/permission.ts","../src/components/permissionButton/PermissionButton.tsx","../src/components/permissionButton/index.tsx","../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/index.tsx","../src/components/expandableParagraph/index.tsx","../src/components/infiniteList/InfiniteList.tsx","../src/components/permissionGuard/index.tsx","../src/pages/notFound/index.tsx","../src/pages/operationLogList/index.tsx","../src/pages/permission/index.tsx"],"names":["LocaleContext","context_default","init_context","__esmMin","createContext","locale","zh_CN_default","init_zh_CN","useTranslation","localeFromContext","useContext","useMemo","key","data","has","template","get","init_hooks","LocaleProvider","locale_default","init_locale","props","children","memoizedContextValue","jsx","defaultState","init_constants","ToolkitsContext","useToolkitsContext","contextStore","ContextProvider","Provider_default","init_Provider","createStore","rest","config","childNode","useEffect","init_contextProvider","FilterFormWrapper","filterFormWrapper_default","init_filterFormWrapper","extras","isConfirming","onConfirm","onReset","buttonsAlign","showReset","t","colorFillAlter","lineWidth","lineType","colorBorder","borderRadiusLG","theme","jsxs","Space","Button","item","Fragment","renderToString","node","container","root","createRoot","resolve","flushSync","splitByTags","Highlight","highlight_default","init_highlight","str","regex","part","texts","htmlString","setHtmlString","useState","result","text","index","Logo","Logo_default","init_Logo","logoUrl","init_logo","useNavStore","init_stores","create","persist","set","keys","createJSONStorage","state","checkChildren","permissions","child","transformItems","items","i","restProps","route","label","code","isPass","withLink","flatItems","keypath","init_utils","Link","NavMenu","NavMenu_default","init_NavMenu","init_permission","memo","location","useLocation","flattenItems","codes","isLoading","usePermissions","internalItems","openKeys","selectedKeys","setOpenKeys","setSelectedKeys","onOpenChange","useCallback","lastOpenKey","match","Spin","Menu","init_navMenu","NotRegisteredFlag","SSO_URL","useRedirectToSignIn","SignIn","signIn_default","init_signIn","init_token","init_request","init_background","clearToken","useTokenStore","navigate","useNavigate","signInUrl","notRegistered","queryParams","token","setToken","signInPageTitle","localeDropdownMenu","signInSuccessRedirectUrl","idaasRedirectUrl","useSWRImmutable","url","request","hashMode","path","Navigate","background_default","Alert","Typography","Form","Input","Divider","useTokenValidation","skip","usePermissionApiV2","redirectToSignIn","error","RequestError","store","jwtDecode","UserWidget","userWidget_default","init_userWidget","getUser","user","LogoutOutlined","Dropdown","e","UserOutlined","mixedStorage","init_storage","name","value","useLayoutStore","useGameStore","collapsed","id","initialized","refetchGames","matchedGame","response","switching","ContentWrapper","ContentWrapper_default","init_ContentWrapper","Antd","hideGameSelect","game","Empty","Text","GameSelect","GameSelect_default","init_GameSelect","filter","onGameChange","games","setGame","options","onChange","Select","init_style","Header","Sider","Content","Layout","Layout_default","init_Layout","headerExtra","navWidth","colorBgContainer","appTitle","setCollapsed","MenuUnfoldOutlined","MenuFoldOutlined","extra","Suspense","init_layout","opts","_opts","body","params","responseType","isGlobal","parsed","qs","queryString","headers","isJsonBody","requestOpts","responseInterceptor","json","pick","__publicField","isValidating","useSWR","acc","curr","usePermission","PermissionButton","PermissionButton_default","init_PermissionButton","showLoading","disabled","Tooltip","init_permissionButton","useQueryListStore","payload","force","prevPayload","nextPayload","isEqual","mutate","page","QueryListAction","InternalQueryList","QueryList","QueryList_default","init_QueryList","ref","internalProps","onePage","method","defaultSize","refreshInterval","tableExtra","form","renderForm","afterSuccess","getTotal","getDataSource","tableProps","notification","App","_form","accessible","action","useRef","originalData","isValid","setIsValid","keyMap","getPayload","refetch","size","formValue","_body","_params","_headers","newHeaders","serializedKey","unstable_serialize","shouldPoll","dataSource","total","pagination","currentPage","currentSize","timer","useImperativeHandle","Result","formRenderer","cloneElement","extraRenderer","Table","forwardRef","init_queryList","useModal","content","modalProps","uuid","modalStore","useModalStore","open","confirmLoading","setConfirmLoading","isRenderFunction","show","hide","internalModal","Modal","init_modal","useFormModal","formProps","internalExtraValues","setInternalExtraValues","internalForm","hanldeConfirm","values","afterClose","modal","operation","initialValues","extraValues","init_formModal","useAllPermissions","useAllPermissionsV2","useAllRoles","useRole","useCreateRole","useSWRMutation","arg","useUpdateRole","useRemoveRole","useCreateUser","useUpdateUser","useRemoveUser","PermissionCollapse","permissionCollapse_default","init_permissionCollapse","readonly","expand","activeKey","setActiveKey","checkedMap","setCheckedMap","internalValue","setInternalValue","onCollapseChange","getCheckedValue","checkedValue","tempValue","onCheckChange","category","Collapse","Checkbox","permission","Row","Col","PermissionListV1","permissionListV1_default","init_permissionListV1","Skeleton","Option","PermissionListV2","permissionListV2_default","init_permissionListV2","gameList","setGameList","globalPermissions","gamePermissions","list","addGame","prev","removeGame","_","newValue","Card","selectedValue","pev","temp","gameId","PermissionList","permissionList_default","init_permissionList","init_types","userList_exports","__export","userList_default","UserList","init_userList","isCreate","message","jump","roles","update","title","role","produce","draft","remove","showCreateModal","createModal","showUpdateModal","updateModal","columns","Tag","UserAddOutlined","roleList_exports","roleList_default","RoleList","init_roleList","viewable","handleUpdateBtnClick","record","UsergroupAddOutlined","roleDetail_exports","roleDetail_default","RoleDetail","init_roleDetail","useParams","Breadcrumb","Descriptions","DynamicTags","initialTags","addable","removable","addCallback","removeCallback","tags","setTags","inputVisible","setInputVisible","inputValue","setInputValue","editInputIndex","setEditInputIndex","editInputValue","setEditInputValue","inputRef","editInputRef","handleClose","removedTag","newTags","tag","showInput","handleInputChange","handleInputConfirm","handleEditInputChange","handleEditInputConfirm","tagInputStyle","tagPlusStyle","PlusOutlined","dynamicTags_default","ExpandableParagraph","expanded","setExpanded","info","expandableParagraph_default","InfiniteList","getRowKey","hasMore","transformArg","formValues","setFormValues","getKey","pageIndex","previousPageData","rowKey","args","setSize","isListValidating","useSWRInfinite","isLoadingMore","isReachingEnd","isEmpty","loadMore","InfiniteList_default","PermissionGuard","permissionGuard_default","NotFound","notFoundRedirectUrl","notFound_default","OperationLogList","dayjs","operationLogList_default","lazy","PermissionRoutes","Routes","Route","permission_default"],"mappings":"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","file":"index.js","sourcesContent":["import { createContext } from 'react'\nimport type { Locale } from '.'\n\nexport type LocaleContextProps = Locale\n\nconst LocaleContext = createContext<LocaleContextProps | undefined>(undefined)\n\nexport default LocaleContext\n","import type { Locale } from '.'\n\nconst locale: Locale = {\n global: {\n noEntitlement: '无权限,请联系管理员。',\n name: '名称',\n creationTime: '创建时间',\n operation: '操作',\n update: '更新',\n edit: '编辑',\n delete: '删除',\n selectAll: '全选',\n game: '游戏',\n user: '用户',\n role: '角色',\n username: '用户名',\n password: '密码',\n label: '标签',\n method: '方法',\n route: '路由',\n request: '请求',\n response: '响应',\n add: '添加',\n signIn: '登录',\n },\n SignIn: {\n title: '登录方式',\n thirdParty: '第三方登录',\n signInWithIDass: 'IDass 登录',\n notRegistered: '您还未在平台注册,请联系管理员',\n welcome: '欢迎',\n },\n NotFound: {\n subTitle: '访问的页面不存在',\n buttonText: '返回首页',\n },\n FilterFormWrapper: {\n confirmText: '查询',\n resetText: '重置',\n },\n FormModal: {\n confirmText: '确认',\n cancelText: '取消',\n },\n GameSelect: {\n label: '当前游戏',\n placeholder: '请选择游戏',\n },\n RequireGame: {\n description: '请选择游戏',\n },\n UserWidget: {\n signOutText: '登出',\n },\n UserList: {\n createTitle: '创建用户',\n createSuccessfully: '用户创建成功',\n updateTitle: '更新用户',\n updateSuccessfully: '用户更新成功',\n deleteTitle: '删除用户',\n deleteContent: '确定要删除用户 <%= user %> 吗?',\n deleteSuccessfully: '用户删除成功',\n },\n RoleList: {\n createTitle: '创建角色',\n createSuccessfully: '角色创建成功',\n updateTitle: '更新角色',\n updateSuccessfully: '角色更新成功',\n deleteTitle: '删除角色',\n deleteContent: '确定要删除角色 <%= role %> 吗?',\n deleteSuccessfully: '角色删除成功',\n },\n PermissionList: {\n failedDescription: '获取权限列表失败',\n baseSectionTitle: '平台基础权限',\n gameSectionTitle: '游戏权限',\n gameSectionDescription: '请先选择游戏',\n gameSelectPlaceholder: '请先选择游戏',\n removeText: '移除',\n addText: '添加游戏权限',\n },\n RoleDetail: {\n title: '角色详情',\n },\n InfiniteList: {\n loadingText: '加载中',\n reachEndText: '已经到底了',\n loadMoreText: '加载更多',\n },\n}\n\nexport default locale\n","import { get, has, template } from 'lodash-es'\nimport { useContext, useMemo } from 'react'\nimport type { Locale } from '.'\nimport type { LocaleContextProps } from './context'\nimport LocaleContext from './context'\nimport defaultLocale from './zh_CN'\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 localeFromContext = useContext<LocaleContextProps | undefined>(LocaleContext)\n\n const locale = {\n ...defaultLocale,\n ...localeFromContext,\n }\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","import type { FC, PropsWithChildren } from 'react'\nimport { useMemo } from 'react'\nimport LocaleContext from './context'\n\nexport 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 notRegistered: 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\nexport interface LocaleProviderProps {\n locale: Locale\n}\n\nconst LocaleProvider: FC<PropsWithChildren<LocaleProviderProps>> = props => {\n const { locale = {} as Locale, children } = props\n const memoizedContextValue = useMemo(() => ({ ...locale }), [locale])\n\n return <LocaleContext.Provider value={memoizedContextValue}>{children}</LocaleContext.Provider>\n}\n\nexport default LocaleProvider\n","import type { ContextState } from './context'\n\nexport const defaultState: ContextState = {\n appTitle: '',\n usePermissionApiV2: false,\n signInUrl: '',\n signInSuccessRedirectUrl: '/',\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ReactNode } from 'react'\nimport { createContext } from 'react'\nimport type { RequestOptions } from '../../utils/request'\nimport type { Locale } from '../locale'\nimport { defaultState } from './constants'\n\nexport interface ContextState {\n appTitle: ReactNode\n signInPageTitle?: ReactNode\n usePermissionApiV2: boolean // 使用 V2 版本的权限接口\n locale?: Locale\n localeDropdownMenu?: ReactNode\n signInUrl: string // 登录地址\n signInSuccessRedirectUrl: string // 登录成功后的重定向地址\n notFoundRedirectUrl?: string // 404 重定向地址\n responseInterceptor?: (response: Response, opts: RequestOptions) => Promise<any>\n}\n\nconst ToolkitsContext = createContext<ContextState>(defaultState)\n\nexport default ToolkitsContext\n","import type { FC, PropsWithChildren } from 'react'\nimport { useContext, useEffect } from 'react'\nimport { createStore } from 'zustand'\nimport LocaleProvider from '../locale'\nimport { defaultState } from './constants'\nimport type { ContextState } from './context'\nimport ToolkitsContext from './context'\n\nexport const contextStore = createStore<ContextState>(() => defaultState)\n\n// 最接近的祖先 ContextProvider 内包含的上下文。\nexport function useToolkitsContext() {\n return useContext(ToolkitsContext)\n}\n\nconst ContextProvider: FC<PropsWithChildren<Partial<ContextState>>> = props => {\n const { children, locale, ...rest } = props\n const parentConfig = useToolkitsContext()\n\n const config = {\n ...parentConfig,\n ...rest,\n }\n\n const childNode = locale ? <LocaleProvider locale={locale}>{children}</LocaleProvider> : children\n\n useEffect(() => {\n contextStore.setState(config)\n }, [config])\n\n return <ToolkitsContext.Provider value={config}>{childNode}</ToolkitsContext.Provider>\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ContextProvider.displayName = 'ContextProvider'\n}\n\nexport default ContextProvider\n","import type { ContextState } from './context'\nimport ContextProvider, { contextStore, useToolkitsContext } from './Provider'\n\nexport { ContextProvider, contextStore, useToolkitsContext }\nexport type { ContextState }\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","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 HighlightTextsProps extends PropsWithChildren {\n texts: Array<string | number>\n}\n\nconst Highlight = (props: HighlightTextsProps) => {\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","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","import type { ItemType, MenuDividerType, MenuItemGroupType, MenuItemType, SubMenuType } from 'antd/es/menu/interface'\nimport type { ReactNode } from 'react'\nimport { Link } from 'react-router-dom'\nimport type { Merge } from 'ts-essentials'\nimport type { MenuItemGroupType2, MenuItemType2, NavMenuItem, SubMenuType2 } from './types'\n\nconst withLink = (label?: ReactNode, route?: string): ReactNode => {\n if (route) {\n return <Link to={route}>{label}</Link>\n }\n\n return label\n}\n\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\nexport function transformItems(items: NavMenuItem[], permissions?: Record<string, boolean>) {\n const result: ItemType[] = []\n\n for (let i = 0; i < items.length; i++) {\n if (items[i] === null) {\n result[i] = null\n } else if ((items[i] as MenuDividerType).type === 'divider') {\n result[i] = { ...items[i] } as MenuDividerType\n } else {\n if ((items[i] as SubMenuType2 | MenuItemGroupType2).children) {\n const { children, ...restProps } = items[i] as SubMenuType2 | MenuItemGroupType2\n\n result[i] = checkChildren(children ?? [], permissions)\n ? ({\n ...restProps,\n children: transformItems(children ?? [], permissions),\n } as SubMenuType | MenuItemGroupType)\n : null\n } else {\n const { route, label, code, ...restProps } = items[i] as MenuItemType2\n const isPass = !code || !permissions || permissions[code]\n\n result[i] = isPass\n ? ({\n ...restProps,\n label: withLink(label, route),\n } as MenuItemType)\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 { 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}\n\nconst NavMenu = memo(function NavMenu(props: NavMenuProps) {\n const { items } = 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, true)\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 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 { Alert, Button, Divider, Form, Input, Space, Spin, Typography } from 'antd'\nimport { type FC } from 'react'\nimport { Navigate, useLocation, useNavigate } from 'react-router-dom'\nimport useSWRImmutable from 'swr/immutable'\nimport { useToolkitsContext } from '../../components/contextProvider'\nimport { useTranslation } from '../../components/locale'\nimport { Logo } from '../../components/logo'\nimport { useTokenStore } from '../../hooks/token'\nimport { request } from '../../utils/request'\nimport backgroundUrl from './background.svg'\n\nconst NotRegisteredFlag = 'notRegistered'\n\nconst SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\n\nexport const useRedirectToSignIn = () => {\n const clearToken = useTokenStore(state => state.clearToken)\n const navigate = useNavigate()\n const { signInUrl } = useToolkitsContext()\n\n return (notRegistered?: boolean) => {\n clearToken()\n navigate(signInUrl, { state: { [NotRegisteredFlag]: notRegistered } })\n }\n}\n\nconst SignIn: FC = () => {\n const location = useLocation()\n // 当路由模式为 hash 模式时,Idaas 重定向会忽略 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 const { signInPageTitle, localeDropdownMenu, signInSuccessRedirectUrl } = useToolkitsContext()\n const idaasRedirectUrl = encodeURIComponent(window.location.href)\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 = signInSuccessRedirectUrl\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 {localeDropdownMenu && <div className=\"absolute top-16 right-16 z-10\">{localeDropdownMenu}</div>}\n <div className=\"absolute left-14 top-6\">\n <Space align=\"center\">\n <Logo width={48} />\n {signInPageTitle}\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 {location.state?.[NotRegisteredFlag] && (\n <Alert banner closable message={t('SignIn.notRegistered')} type=\"error\" />\n )}\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 block shape=\"round\" href={`${SSO_URL}/login?service=${idaasRedirectUrl}`} target=\"_self\">\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","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 { useRedirectToSignIn } from '../pages/signIn'\nimport { request, RequestError } 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(skip = false) {\n const { usePermissionApiV2 } = useToolkitsContext()\n const redirectToSignIn = useRedirectToSignIn()\n\n return useSWRImmutable(\n !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 isGlobal: true,\n }),\n {\n onError: error => {\n if (error instanceof RequestError) {\n if (error.status === 401) {\n redirectToSignIn()\n } else if (error.status === 412) {\n redirectToSignIn(true)\n }\n }\n },\n },\n )\n}\n","import { 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 { useTranslation } from '../locale'\nimport { useTokenStore } from '../../hooks/token'\nimport { useToolkitsContext } from '../contextProvider'\n\nconst UserWidget: FC = () => {\n const navigate = useNavigate()\n const { clearToken, getUser } = useTokenStore()\n const user = getUser()\n const { t } = useTranslation()\n const { signInUrl } = useToolkitsContext()\n\n const items: MenuProps['items'] = [\n {\n key: '1',\n label: (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid\n <a\n data-cy=\"user-widget-logout\"\n onClick={() => {\n clearToken()\n if (signInUrl) {\n navigate(signInUrl)\n }\n }}\n >\n {t('UserWidget.signOutText')}\n </a>\n ),\n icon: <LogoutOutlined />,\n },\n ]\n\n return (\n <div data-cy=\"user-widget\">\n <Dropdown\n menu={{\n selectable: true,\n items,\n }}\n placement=\"bottomRight\"\n >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid */}\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","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 type { Game, GameState } 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\nexport const useGameStore = create<GameState>()(\n persist(\n (set, get) => ({\n initialized: false,\n isLoading: false,\n switching: false,\n game: null,\n games: [],\n async setGame(id) {\n const { initialized, refetchGames } = get()\n\n if (!initialized) {\n await refetchGames()\n }\n\n const matchedGame = (get().games ?? []).find(item => item.game_id === id)\n set({ game: matchedGame ?? null })\n },\n async refetchGames() {\n if (!get().isLoading) {\n try {\n set({ isLoading: true })\n const response = await request<{ list: Game[] }>('/api/game/list')\n set({ games: response.data?.list ?? [] })\n } finally {\n set({\n initialized: true,\n isLoading: false,\n })\n }\n }\n },\n setSwitching: (switching: boolean) => set({ switching }),\n }),\n {\n name: 'game',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({ game: state.game }),\n },\n ),\n)\n","import * as Antd from 'antd'\nimport { Empty } from 'antd'\nimport { type FC, type PropsWithChildren } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { useTranslation } from '../locale'\nimport { useGameStore } from './stores'\n\nconst { Spin } = Antd\n\ninterface ContentWrapperProps extends PropsWithChildren {\n hideGameSelect?: boolean\n}\n\nconst ContentWrapper: FC<ContentWrapperProps> = props => {\n const { hideGameSelect, children } = props\n const { usePermissionApiV2 } = useToolkitsContext()\n const { game, isLoading } = useGameStore()\n const { t } = useTranslation()\n\n if (isLoading) {\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 (usePermissionApiV2 && !hideGameSelect && !game) {\n return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={t('RequireGame.description')} />\n }\n\n return children\n}\n\nexport default ContentWrapper\n","import { Select, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect } from 'react'\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, refetchGames, setGame } = useGameStore()\n\n useEffect(() => {\n refetchGames()\n }, [])\n\n const options = games\n ?.filter(item => filter?.(item) ?? true)\n ?.map(item => ({\n label: item.name,\n value: item.game_id,\n }))\n\n const onChange = async (id: number) => {\n setGame(id)\n onGameChange?.(games.find(item => item.game_id === id)!)\n }\n\n return (\n <Space>\n <Text>{t('GameSelect.label')}</Text>\n <Select<number>\n showSearch\n optionFilterProp=\"label\"\n value={game?.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 { Link } from 'react-router-dom'\nimport { useToolkitsContext } from '../contextProvider'\nimport { Logo } from '../logo'\nimport type { NavMenuItem } from '../navMenu'\nimport { NavMenu } from '../navMenu'\nimport UserWidget from '../userWidget'\nimport ContentWrapper from './ContentWrapper'\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 items?: NavMenuItem[]\n hideGameSelect?: boolean\n headerExtra?: {\n left?: HeaderExtra[]\n right?: HeaderExtra[]\n }\n navWidth?: string | number\n}\n\nconst Layout: FC<PropsWithChildren<LayoutProps>> = props => {\n const { items, headerExtra, hideGameSelect, children, navWidth, filter, onGameChange } = props\n const {\n token: { colorBgContainer, colorBorder },\n } = theme.useToken()\n const { appTitle, usePermissionApiV2, localeDropdownMenu, signInSuccessRedirectUrl } = useToolkitsContext()\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 <Link to={signInSuccessRedirectUrl} className=\"flex gap-2 px-6 py-4 overflow-hidden\">\n <Logo width={32} height={32} />\n {!collapsed && <div className=\"h-8 flex items-center expand\">{appTitle}</div>}\n </Link>\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 <Button\n type=\"text\"\n icon={collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}\n style={{ fontSize: '16px' }}\n onClick={onCollapse}\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 {localeDropdownMenu}\n <UserWidget />\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 <ContentWrapper>{children}</ContentWrapper>\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 { 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 isGlobal?: boolean\n}\n\nexport type RequestResponse<T> = Pick<Response, 'headers' | 'status' | 'statusText' | 'url'> & { data: T }\n\nexport async function request<T = any>(url: string, opts: RequestOptions = {}): Promise<RequestResponse<T>> {\n const _opts = Object.assign(opts, { responseType: opts.responseType ?? 'json' })\n const { body, params, responseType, isGlobal, ...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 (contextStore.getState().usePermissionApiV2) {\n if (isGlobal) {\n headers.set('App-ID', 'global')\n } else {\n const game = useGameStore.getState().game\n if (game) {\n headers.set('App-ID', String(game.game_id))\n }\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().responseInterceptor\n\n if (typeof responseInterceptor === 'function') {\n return await responseInterceptor(response, _opts)\n } else {\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 return {\n ...pick(response, ['headers', 'status', 'statusText', 'url']),\n data,\n }\n }\n}\n","import useSWR from 'swr'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport { request } from '../utils/request'\n\ntype PermissionCheckResult = { has_all: true } | { [k: string]: boolean }\n\nexport function usePermissions(codes: string[], isGlobal?: boolean) {\n const { usePermissionApiV2 } = useToolkitsContext()\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 method: 'POST',\n body: {\n permissions: codes,\n },\n isGlobal,\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, isGlobal?: boolean) {\n const { data, isValidating, isLoading } = usePermissions(code ? [code] : [], isGlobal)\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 { useTranslation } from '../locale'\nimport { usePermissions } from '../../hooks/permission'\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], isGlobal)\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 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, force?: boolean): void\n mutate<Data = any, T = Data>(\n route: string,\n data?: T | Promise<T> | MutatorCallback<T>,\n opts?: boolean | MutatorOptions<Data, T>,\n ): Promise<T | undefined>\n jump(route: string, page?: number, force?: boolean): void\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, force = true) {\n const prevPayload = get().getPayload(route)\n const nextPayload = { ...prevPayload, ...payload }\n\n // FIXME: 后续使用 unstable_serialize 来比较前后的 key,因为仅仅比较 payload 会有问题\n if (isEqual(prevPayload, nextPayload)) {\n get().mutate(route, force)\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 // 不传 page 参数时,刷新当前页\n jump(route, page, force = true) {\n get().refetch(route, { page: page ?? get().getPayload(route).page }, force)\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 { 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, Response> {\n response: Response | undefined\n dataSource: Item[] | undefined\n form: FormInstance<Value>\n}\n\nexport interface QueryListProps<Item extends AnyObject = AnyObject, Value = any, Response = 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>) => ReactNode)\n form?: FormInstance<Value>\n renderForm?: (form: FormInstance<Value>) => ReactElement\n extra?: (opts: { form: FormInstance<Value>; data: Response | undefined }) => ReactNode\n afterSuccess?: (action: QueryListAction, response: Response) => void\n getTotal?: (response: Response | undefined) => number | undefined\n getDataSource?: (response: Response | 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 Response = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Response>,\n ref: Ref<QueryListRef<Item, Value, Response>>,\n) => {\n const internalProps = {\n method: 'GET',\n defaultSize: 10,\n refreshInterval: 0,\n getTotal: (response: Response | undefined) => (response as ListResponse<Item>)?.total,\n getDataSource: (response: Response | undefined) => (response 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 extra,\n renderForm,\n afterSuccess,\n body,\n params,\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, isGlobal)\n const action = useRef<QueryListAction>(QueryListAction.Init)\n const originalData = useRef<Response>()\n const { game } = useGameStore()\n const { usePermissionApiV2 } = useToolkitsContext()\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'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n ...body,\n }\n : undefined\n }, [onePage, method, page, size, formValue, body])\n\n const _params = useMemo(\n () =>\n typeof params === 'function'\n ? params(payload)\n : method === 'GET'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n ...params,\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', 'global')\n } else if (game) {\n newHeaders.set('App-ID', String(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<Response>(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(response) {\n shouldPoll.current = true\n afterSuccess?.(action.current, response)\n },\n onError(error) {\n shouldPoll.current = false\n // FIXME: 暂时在此处处理错误,后续需要优化。\n\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 // 在表单字段注册到 Form 实例前调用 validateFields 会得到错误的结果,所以需要延迟调用。\n const timer = setTimeout(async () => {\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 }, 0)\n\n return () => {\n clearTimeout(timer)\n }\n }, [form, game])\n\n useImperativeHandle(ref, () => ({\n response: 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 const extraRenderer = extra && <div className=\"mt-2 mb-4\">{extra({ form: _form, data: originalData.current })}</div>\n\n return (\n <div>\n {formRenderer}\n {extraRenderer}\n {typeof tableExtra === 'function' ? tableExtra(_form) : 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 Response = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Response> & { ref?: Ref<QueryListRef<Item, Value, Response>> },\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/gameSelect'\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, { isGlobal: true }).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, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useAllRoles() {\n const { accessible } = usePermission('200005', true)\n return useSWR(accessible ? '/api/usystem/role/all' : null, url =>\n request<RoleEnumItem[]>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useRole(name: string) {\n const { usePermissionApiV2 } = useToolkitsContext()\n return useSWR(`/api/usystem/role/${usePermissionApiV2 ? 'infoV2' : 'info'}?name=${name}`, (url: string) =>\n request<RoleV1 | RoleV2>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useCreateRole() {\n const { usePermissionApiV2 } = useToolkitsContext()\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 isGlobal: true,\n }),\n )\n}\n\nexport function useUpdateRole() {\n const { usePermissionApiV2 } = useToolkitsContext()\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 isGlobal: true,\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 isGlobal: true,\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 isGlobal: true,\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 isGlobal: true,\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 isGlobal: true,\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 => 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 key={game.id} value={game.id} disabled={gameList.some(({ gameId }) => gameId === game.id)}>\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()\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 { jump, 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 jump(route, 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 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 { jump, 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 jump(route, 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', true)\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const { usePermissionApiV2 } = useToolkitsContext()\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 { isGlobal: true },\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: <Link to=\"..\">{t('global.role')}</Link>,\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 type { ContextState } from './components/contextProvider'\nimport { ContextProvider, contextStore, useToolkitsContext } from './components/contextProvider'\nimport type { DynamicTagsProps } from './components/dynamicTags'\nimport DynamicTags from './components/dynamicTags'\nimport ExpandableParagraph from './components/expandableParagraph'\nimport type { FilterFormWrapperProps } from './components/filterFormWrapper'\nimport FilterFormWrapper from './components/filterFormWrapper'\nimport type { HighlightTextsProps } from './components/highlight'\nimport Highlight from './components/highlight'\nimport type { InfiniteListProps } from './components/infiniteList'\nimport { InfiniteList } from './components/infiniteList'\nimport type { Game } from './components/layout'\nimport { Layout, useGameStore } from './components/layout'\nimport type { NavMenuItem } from './components/navMenu'\nimport { NavMenu } from './components/navMenu'\nimport type { PermissionButtonProps } from './components/permissionButton'\nimport { PermissionButton } from './components/permissionButton'\nimport type { PermissionGuardProps } from './components/permissionGuard'\nimport PermissionGuard from './components/permissionGuard'\nimport type { QueryListProps, QueryListRef } from './components/queryList'\nimport { QueryList, QueryListAction, useQueryListStore } from './components/queryList'\nimport UserWidget from './components/userWidget'\nimport type { UseFormModalProps } from './hooks/formModal'\nimport { useFormModal } from './hooks/formModal'\nimport { useModal, useModalStore } from './hooks/modal'\nimport { usePermission, usePermissions } from './hooks/permission'\nimport type { TokenState } from './hooks/token'\nimport { useTokenStore, useTokenValidation } from './hooks/token'\nimport NotFound from './pages/notFound'\nimport OperationLogList from './pages/operationLogList'\nimport PermissionRoutes from './pages/permission'\nimport SignIn, { useRedirectToSignIn } from './pages/signIn'\nimport './styles/index.css'\nimport type { RequestOptions, RequestResponse } from './utils/request'\nimport { RequestError, request } from './utils/request'\nimport { mixedStorage } from './utils/storage'\n\nexport {\n ContextProvider,\n DynamicTags,\n ExpandableParagraph,\n FilterFormWrapper,\n Highlight,\n InfiniteList,\n Layout,\n NavMenu,\n NotFound,\n OperationLogList,\n PermissionButton,\n PermissionGuard,\n PermissionRoutes,\n QueryList,\n QueryListAction,\n RequestError,\n SignIn,\n UserWidget,\n contextStore,\n mixedStorage,\n request,\n useFormModal,\n useGameStore,\n useModal,\n useModalStore,\n usePermission,\n usePermissions,\n useQueryListStore,\n useRedirectToSignIn,\n useTokenStore,\n useTokenValidation,\n useToolkitsContext,\n type ContextState,\n type DynamicTagsProps,\n type FilterFormWrapperProps,\n type Game,\n type HighlightTextsProps,\n type InfiniteListProps,\n type NavMenuItem,\n type PermissionButtonProps,\n type PermissionGuardProps,\n type QueryListProps,\n type QueryListRef,\n type RequestOptions,\n type RequestResponse,\n type TokenState,\n type UseFormModalProps,\n}\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\ntype 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, useState } from 'react'\nimport useSWRInfinite from 'swr/infinite'\nimport { usePermission } from '../../hooks/permission'\nimport { request } from '../../utils/request'\nimport FilterFormWrapper from '../filterFormWrapper'\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 {\n data,\n size,\n setSize,\n isValidating: isListValidating,\n } = useSWRInfinite(\n getKey,\n arg => {\n return request<Response>(arg, {\n headers: typeof headers === 'function' ? headers(form) : headers,\n isGlobal,\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 { useTranslation } from '../locale'\nimport { usePermission } from '../../hooks/permission'\n\nexport interface PermissionGuardProps {\n code: string\n isGlobal?: boolean\n}\n\nconst PermissionGuard: FC<PropsWithChildren<PermissionGuardProps>> = props => {\n const { code, isGlobal, children } = props\n const { accessible, isValidating } = usePermission(code, isGlobal)\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 PermissionGuard\n","import { Button, Result } from 'antd'\nimport { useNavigate } from 'react-router-dom'\nimport { useToolkitsContext } from '../../components/contextProvider'\nimport { useTranslation } from '../../components/locale'\n\nconst NotFound = () => {\n const navigate = useNavigate()\n const { t } = useTranslation()\n const { notFoundRedirectUrl } = useToolkitsContext()\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 notFoundRedirectUrl && (\n <Button\n type=\"primary\"\n onClick={() => {\n navigate(notFoundRedirectUrl)\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 rowKey=\"id\"\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\nconst PermissionRoutes = () => {\n return (\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}\n\nexport default PermissionRoutes\n"]}
|