react-toolkits 2.14.6 → 2.14.7

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # react-toolkits
2
2
 
3
+ ## 2.14.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 6978c27: refactor(react-toolkits): 重构tsup配置和QueryList组件泛型顺序
8
+
3
9
  ## 2.14.6
4
10
 
5
11
  ### Patch Changes
package/lib/index.css CHANGED
@@ -317,4 +317,3 @@
317
317
  .delay-200 {
318
318
  transition-delay: 200ms;
319
319
  }
320
- /*# sourceMappingURL=index.css.map */
package/lib/index.d.ts CHANGED
@@ -203,14 +203,14 @@ declare enum QueryListAction {
203
203
  Jump = 2,
204
204
  Init = 3
205
205
  }
206
- interface QueryListRef<Item extends AnyObject = AnyObject, Data = any, Values = AnyObject> {
206
+ interface QueryListRef<Item, Values, Data> {
207
207
  data: Data | undefined;
208
208
  dataSource: Item[] | undefined;
209
209
  form: FormInstance<Values>;
210
210
  }
211
- interface QueryListProps<Item extends AnyObject = AnyObject, Data = any, Values = AnyObject> extends Omit<TableProps<Item>, 'pagination' | 'dataSource' | 'loading' | 'footer'>, Pick<FilterFormWrapperProps, 'buttonsAlign' | 'showReset'> {
211
+ interface QueryListProps<Item, Values, Data> extends Omit<TableProps<Item>, 'pagination' | 'dataSource' | 'loading' | 'footer'>, Pick<FilterFormWrapperProps, 'buttonsAlign' | 'showReset'> {
212
+ url: string;
212
213
  code?: string;
213
- url?: string;
214
214
  form?: FormInstance<Values>;
215
215
  method?: 'GET' | 'POST';
216
216
  refreshInterval?: number;
@@ -231,7 +231,7 @@ interface QueryListProps<Item extends AnyObject = AnyObject, Data = any, Values
231
231
  getDataSource?: (data: Data | undefined, form: FormInstance<Values>) => Item[] | undefined;
232
232
  footer?: (data: Data | undefined) => ReactNode;
233
233
  }
234
- declare const QueryList: <Item extends AnyObject = AnyObject, Data = any, Values extends object | undefined = undefined>(props: QueryListProps<Item, Values, Data> & {
234
+ declare const QueryList: <Item extends AnyObject = AnyObject, Values extends object | undefined = undefined, Data = any>(props: QueryListProps<Item, Values, Data> & {
235
235
  ref?: Ref<QueryListRef<Item, Values, Data>>;
236
236
  }) => ReactElement;
237
237
 
package/lib/index.js CHANGED
@@ -3593,5 +3593,3 @@ init_signIn();
3593
3593
  init_utils();
3594
3594
 
3595
3595
  export { APP_ID_HEADER, DynamicTags_default as DynamicTags, ExpandableParagraph_default as ExpandableParagraph, FRONTEND_ROUTE_PREFIX, FilterFormWrapper_default as FilterFormWrapper, Highlight_default as Highlight, InfiniteList_default as InfiniteList, Layout_default as Layout, NavMenu_default as NavMenu, notFound_default as NotFound, operationLogList_default as OperationLogList, PermissionButton_default as PermissionButton, PermissionVersion, QueryList_default as QueryList, QueryListAction, RequireGame_default as RequireGame, RequirePermission_default as RequirePermission, SSO_URL, signIn_default as SignIn, ToolkitsProvider_default as ToolkitsProvider, UserWidget_default as UserWidget, WILDCARD, menu_default as menuRoutes, mixedStorage, permission_default as permissionRoutes, useFindGame, useFormModal, useGames, useMenuList, useModal, useModalStore, usePermission, useQueryListStore, useToolkitsStore, withContext };
3596
- //# sourceMappingURL=index.js.map
3597
- //# sourceMappingURL=index.js.map
package/locale/context.js CHANGED
@@ -5,5 +5,3 @@ var LocaleContext = createContext(void 0);
5
5
  var context_default = LocaleContext;
6
6
 
7
7
  export { context_default as default };
8
- //# sourceMappingURL=context.js.map
9
- //# sourceMappingURL=context.js.map
package/locale/en_GB.js CHANGED
@@ -92,5 +92,3 @@ var locale = {
92
92
  var en_GB_default = locale;
93
93
 
94
94
  export { en_GB_default as default };
95
- //# sourceMappingURL=en_GB.js.map
96
- //# sourceMappingURL=en_GB.js.map
package/locale/hooks.js CHANGED
@@ -35,5 +35,3 @@ function useTranslation() {
35
35
  }
36
36
 
37
37
  export { useTranslation };
38
- //# sourceMappingURL=hooks.js.map
39
- //# sourceMappingURL=hooks.js.map
package/locale/index.js CHANGED
@@ -35,5 +35,3 @@ function useTranslation() {
35
35
  }
36
36
 
37
37
  export { useTranslation };
38
- //# sourceMappingURL=index.js.map
39
- //# sourceMappingURL=index.js.map
package/locale/ja_JP.js CHANGED
@@ -92,5 +92,3 @@ var locale = {
92
92
  var ja_JP_default = locale;
93
93
 
94
94
  export { ja_JP_default as default };
95
- //# sourceMappingURL=ja_JP.js.map
96
- //# sourceMappingURL=ja_JP.js.map
package/locale/ko_KR.js CHANGED
@@ -92,5 +92,3 @@ var locale = {
92
92
  var ko_KR_default = locale;
93
93
 
94
94
  export { ko_KR_default as default };
95
- //# sourceMappingURL=ko_KR.js.map
96
- //# sourceMappingURL=ko_KR.js.map
package/locale/zh_CN.js CHANGED
@@ -92,5 +92,3 @@ var locale = {
92
92
  var zh_CN_default = locale;
93
93
 
94
94
  export { zh_CN_default as default };
95
- //# sourceMappingURL=zh_CN.js.map
96
- //# sourceMappingURL=zh_CN.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-toolkits",
3
3
  "type": "module",
4
- "version": "2.14.6",
4
+ "version": "2.14.7",
5
5
  "sideEffects": [
6
6
  "*.css"
7
7
  ],
@@ -68,8 +68,8 @@
68
68
  "tsup": "^8.3.5",
69
69
  "typescript": "^5.6.3",
70
70
  "@flow97/eslint-config-react": "1.0.5",
71
- "tailwind-config": "0.1.2",
72
- "tsconfig": "0.0.6"
71
+ "tsconfig": "0.0.6",
72
+ "tailwind-config": "0.1.2"
73
73
  },
74
74
  "peerDependencies": {
75
75
  "antd": "^5.12.2",
package/lib/index.css.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/styles/index.css"],"sourcesContent":["*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: \n}\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: \n}\n.container {\n width: 100%\n}\n@media (min-width: 640px) {\n .container {\n max-width: 640px\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 768px\n }\n}\n@media (min-width: 1024px) {\n .container {\n max-width: 1024px\n }\n}\n@media (min-width: 1280px) {\n .container {\n max-width: 1280px\n }\n}\n@media (min-width: 1536px) {\n .container {\n max-width: 1536px\n }\n}\n.fixed {\n position: fixed\n}\n.absolute {\n position: absolute\n}\n.relative {\n position: relative\n}\n.bottom-0 {\n bottom: 0px\n}\n.left-0 {\n left: 0px\n}\n.left-14 {\n left: 3.5rem\n}\n.right-0 {\n right: 0px\n}\n.right-16 {\n right: 4rem\n}\n.top-0 {\n top: 0px\n}\n.top-1\\/2 {\n top: 50%\n}\n.top-16 {\n top: 4rem\n}\n.top-6 {\n top: 1.5rem\n}\n.z-10 {\n z-index: 10\n}\n.my-12 {\n margin-top: 3rem;\n margin-bottom: 3rem\n}\n.mb-0 {\n margin-bottom: 0px\n}\n.mb-12 {\n margin-bottom: 3rem\n}\n.mb-4 {\n margin-bottom: 1rem\n}\n.mb-6 {\n margin-bottom: 1.5rem\n}\n.ml-2 {\n margin-left: 0.5rem\n}\n.ml-4 {\n margin-left: 1rem\n}\n.mr-6 {\n margin-right: 1.5rem\n}\n.mt-4 {\n margin-top: 1rem\n}\n.block {\n display: block\n}\n.inline {\n display: inline\n}\n.flex {\n display: flex\n}\n.hidden {\n display: none\n}\n.h-10 {\n height: 2.5rem\n}\n.h-8 {\n height: 2rem\n}\n.h-full {\n height: 100%\n}\n.h-screen {\n height: 100vh\n}\n.w-10\\/12 {\n width: 83.333333%\n}\n.w-8 {\n width: 2rem\n}\n.w-\\[650px\\] {\n width: 650px\n}\n.w-full {\n width: 100%\n}\n.w-screen {\n width: 100vw\n}\n.flex-1 {\n flex: 1 1 0%\n}\n.flex-grow-0 {\n flex-grow: 0\n}\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\n.-translate-y-10 {\n --tw-translate-y: -2.5rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\n.flex-row {\n flex-direction: row\n}\n.flex-col {\n flex-direction: column\n}\n.items-center {\n align-items: center\n}\n.justify-center {\n justify-content: center\n}\n.justify-between {\n justify-content: space-between\n}\n.gap-8 {\n gap: 2rem\n}\n.overflow-hidden {\n overflow: hidden\n}\n.bg-slate-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1))\n}\n.px-36 {\n padding-left: 9rem;\n padding-right: 9rem\n}\n.px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem\n}\n.text-center {\n text-align: center\n}\n.text-start {\n text-align: start\n}\n.text-end {\n text-align: end\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem\n}\n.font-bold {\n font-weight: 700\n}\n.opacity-0 {\n opacity: 0\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)\n}\n.delay-200 {\n transition-delay: 200ms\n}\n\n"],"mappings":";AAAA;AAAG;AAAU;AACT,yBAAuB;AACvB,yBAAuB;AACvB,oBAAkB;AAClB,oBAAkB;AAClB,eAAa;AACb,eAAa;AACb,eAAa;AACb,gBAAc;AACd,gBAAc;AACd;AACA;AACA;AACA,+BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAwB;AACxB,0BAAwB;AACxB,mBAAiB,IAAI,GAAG,IAAI,IAAI,EAAE;AAClC,2BAAyB,EAAE,EAAE;AAC7B,oBAAkB,EAAE,EAAE;AACtB,eAAa,EAAE,EAAE;AACjB,uBAAqB,EAAE,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACI,yBAAuB;AACvB,yBAAuB;AACvB,oBAAkB;AAClB,oBAAkB;AAClB,eAAa;AACb,eAAa;AACb,eAAa;AACb,gBAAc;AACd,gBAAc;AACd;AACA;AACA;AACA,+BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAwB;AACxB,0BAAwB;AACxB,mBAAiB,IAAI,GAAG,IAAI,IAAI,EAAE;AAClC,2BAAyB,EAAE,EAAE;AAC7B,oBAAkB,EAAE,EAAE;AACtB,eAAa,EAAE,EAAE;AACjB,uBAAqB,EAAE,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA,CAAC;AACG,SAAO;AACX;AACA,OAAO,CAAC,SAAS,EAAE;AACf,GAJH;AAKO,eAAW;AACf;AACJ;AACA,OAAO,CAAC,SAAS,EAAE;AACf,GATH;AAUO,eAAW;AACf;AACJ;AACA,OAAO,CAAC,SAAS,EAAE;AACf,GAdH;AAeO,eAAW;AACf;AACJ;AACA,OAAO,CAAC,SAAS,EAAE;AACf,GAnBH;AAoBO,eAAW;AACf;AACJ;AACA,OAAO,CAAC,SAAS,EAAE;AACf,GAxBH;AAyBO,eAAW;AACf;AACJ;AACA,CAAC;AACG,YAAU;AACd;AACA,CAAC;AACG,YAAU;AACd;AACA,CAAC;AACG,YAAU;AACd;AACA,CAAC;AACG,UAAQ;AACZ;AACA,CAAC;AACG,QAAM;AACV;AACA,CAAC;AACG,QAAM;AACV;AACA,CAAC;AACG,SAAO;AACX;AACA,CAAC;AACG,SAAO;AACX;AACA,CAAC;AACG,OAAK;AACT;AACA,CAAC;AACG,OAAK;AACT;AACA,CAAC;AACG,OAAK;AACT;AACA,CAAC;AACG,OAAK;AACT;AACA,CAAC;AACG,WAAS;AACb;AACA,CAAC;AACG,cAAY;AACZ,iBAAe;AACnB;AACA,CAAC;AACG,iBAAe;AACnB;AACA,CAAC;AACG,iBAAe;AACnB;AACA,CAAC;AACG,iBAAe;AACnB;AACA,CAAC;AACG,iBAAe;AACnB;AACA,CAAC;AACG,eAAa;AACjB;AACA,CAAC;AACG,eAAa;AACjB;AACA,CAAC;AACG,gBAAc;AAClB;AACA,CAAC;AACG,cAAY;AAChB;AACA,CAAC;AACG,WAAS;AACb;AACA,CAAC;AACG,WAAS;AACb;AACA,CAAC;AACG,WAAS;AACb;AACA,CAAC;AACG,WAAS;AACb;AACA,CAAC;AACG,UAAQ;AACZ;AACA,CAAC;AACG,UAAQ;AACZ;AACA,CAAC;AACG,UAAQ;AACZ;AACA,CAAC;AACG,UAAQ;AACZ;AACA,CAAC;AACG,SAAO;AACX;AACA,CAAC;AACG,SAAO;AACX;AACA,CAAC;AACG,SAAO;AACX;AACA,CAAC;AACG,SAAO;AACX;AACA,CAAC;AACG,SAAO;AACX;AACA,CAAC;AACG,QAAM,EAAE,EAAE;AACd;AACA,CAAC;AACG,aAAW;AACf;AACA,CAAC;AACG,oBAAkB;AAClB,aAAW,UAAU,IAAI,iBAAiB,EAAE,IAAI,mBAAmB,OAAO,IAAI,cAAc,MAAM,IAAI,cAAc,MAAM,IAAI,cAAc,OAAO,IAAI,eAAe,OAAO,IAAI;AACrL;AACA,CAAC;AACG,oBAAkB;AAClB,aAAW,UAAU,IAAI,iBAAiB,EAAE,IAAI,mBAAmB,OAAO,IAAI,cAAc,MAAM,IAAI,cAAc,MAAM,IAAI,cAAc,OAAO,IAAI,eAAe,OAAO,IAAI;AACrL;AACA,CAAC;AACG,kBAAgB;AACpB;AACA,CAAC;AACG,kBAAgB;AACpB;AACA,CAAC;AACG,eAAa;AACjB;AACA,CAAC;AACG,mBAAiB;AACrB;AACA,CAAC;AACG,mBAAiB;AACrB;AACA,CAAC;AACG,OAAK;AACT;AACA,CAAC;AACG,YAAU;AACd;AACA,CAAC;AACG,mBAAiB;AACjB,oBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,eAAe,EAAE;AAC7D;AACA,CAAC;AACG,gBAAc;AACd,iBAAe;AACnB;AACA,CAAC;AACG,gBAAc;AACd,iBAAe;AACnB;AACA,CAAC;AACG,eAAa;AACb,kBAAgB;AACpB;AACA,CAAC;AACG,cAAY;AAChB;AACA,CAAC;AACG,cAAY;AAChB;AACA,CAAC;AACG,cAAY;AAChB;AACA,CAAC;AACG,aAAW;AACX,eAAa;AACjB;AACA,CAAC;AACG,eAAa;AACjB;AACA,CAAC;AACG,WAAS;AACb;AACA,CAAC;AACG,UAAQ,IAAI,WAAW,IAAI,iBAAiB,IAAI,eAAe,IAAI,gBAAgB,IAAI,iBAAiB,IAAI,aAAa,IAAI,eAAe,IAAI,YAAY,IAAI;AACpK;AACA,CAAC;AACG,oBAAkB;AACtB;","names":[]}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/index.ts","../src/stores/axios.ts","../src/components/locale/en_GB.ts","../src/constants/index.ts","../src/stores/context.ts","../src/stores/game.ts","../src/stores/token.ts","../src/stores/index.ts","../src/components/logo/Logo.tsx","../src/components/logo/index.ts","../src/pages/signIn/index.tsx","../src/components/interceptors/Interceptors.tsx","../src/components/interceptors/index.ts","../src/components/toolkitsProvider/ToolkitsProvider.tsx","../src/components/toolkitsProvider/index.ts","../src/components/locale/hooks.ts","../src/components/locale/index.ts","../src/components/filterFormWrapper/FilterFormWrapper.tsx","../src/components/filterFormWrapper/index.ts","../src/components/highlight/Highlight.tsx","../src/components/highlight/index.ts","../src/hooks/index.ts","../src/components/layout/hooks.ts","../src/components/navMenu/stores.ts","../src/components/navMenu/utils.tsx","../src/components/navMenu/NavMenu.tsx","../src/components/navMenu/index.ts","../src/components/requireGame/RequireGame.tsx","../src/components/requireGame/index.ts","../src/components/userWidget/UserWidget.tsx","../src/components/userWidget/index.ts","../src/components/layout/GameSelect.tsx","../src/components/layout/Layout.tsx","../src/components/layout/types.ts","../src/components/layout/index.ts","../src/components/modal/stores.ts","../src/components/modal/modal.tsx","../src/components/modal/formModal.tsx","../src/components/modal/index.ts","../src/components/permissionButton/PermissionButton.tsx","../src/components/permissionButton/index.ts","../src/components/queryList/stores.ts","../src/components/queryList/QueryList.tsx","../src/components/queryList/index.ts","../src/features/menu/constants/index.ts","../src/features/menu/hooks/index.ts","../src/features/menu/index.ts","../src/pages/menu/menuItemList/index.tsx","../src/pages/menu/createMenuItem/index.tsx","../src/pages/menu/updateMenuItem/index.tsx","../src/features/permission/hooks/index.tsx","../src/features/permission/components/permissionCollapse/index.tsx","../src/features/permission/components/permissionList/PermissionWithGame.tsx","../src/features/permission/components/permissionList/PermissionWithoutGame.tsx","../src/features/permission/components/permissionList/index.tsx","../src/features/permission/components/index.ts","../src/features/permission/types/index.ts","../src/features/permission/index.ts","../src/pages/permission/userList/index.tsx","../src/pages/permission/userDetail/index.tsx","../src/pages/permission/roleList/index.tsx","../src/pages/permission/roleDetail/index.tsx","../src/components/dynamicTags/DynamicTags.tsx","../src/components/expandableParagraph/ExpandableParagraph.tsx","../src/index.ts","../src/components/infiniteList/InfiniteList.tsx","../src/components/requirePermission/RequirePermission.tsx","../src/pages/menu/index.tsx","../src/pages/notFound/index.tsx","../src/pages/operationLogList/index.tsx","../src/pages/permission/index.tsx"],"names":["PermissionVersion","id","get","axios","useSWR","url","jsx","App","locale","theme","jsxs","Space","Button","Fragment","useState","useEffect","init_hooks","init_stores","create","persist","createJSONStorage","init_utils","NavMenu","useMemo","Spin","Antd","useNavigate","Typography","Layout","Link","Divider","Form","init_modal","QueryListAction","data","useRef","useImperativeHandle","Result","cloneElement","Table","forwardRef","init_constants","useSWRMutation","mutate","Card","Input","Switch","InputNumber","Editor","Text","GameSelect","Select","last","Empty","useCallback","Row","Col","Option","Skeleton","init_types","Tag","useParams","produce","Breadcrumb","Descriptions","MenuItemList","CreateMenuItem","UserList","lazy","UserDetail","RoleList","RoleDetail","Routes","Route","Navigate"],"mappings":"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","file":"index.js","sourcesContent":["import type { StateStorage } from 'zustand/middleware'\n\n// 通过 SessionStorage 隔离数据,防止多开页面时的数据冲突。\n// 当 SessionStorage 不存在时,使用 LocalStorage。\nexport const mixedStorage: StateStorage = {\n getItem: (name: string): string | null => {\n return sessionStorage.getItem(name) || localStorage.getItem(name)\n },\n setItem: (name: string, value: string) => {\n sessionStorage.setItem(name, value)\n localStorage.setItem(name, value)\n },\n removeItem(name: string) {\n sessionStorage.removeItem(name)\n localStorage.removeItem(name)\n },\n}\n","import type { AxiosInstance } from 'axios'\nimport axios from 'axios'\nimport type { StateCreator } from 'zustand'\n\nexport interface AxiosSlice {\n axios: AxiosInstance\n}\n\nexport const createAxiosSlice: StateCreator<AxiosSlice, [], [], AxiosSlice> = () => ({\n axios: axios.create(),\n})\n","import type { Locale } from '.'\n\nconst locale: Locale = {\n global: {\n noEntitlement: 'No permission, please contact the administrator.',\n name: 'Name',\n creationTime: 'Creation Time',\n operation: 'Operation',\n update: 'Update',\n edit: 'Edit',\n delete: 'Delete',\n selectAll: 'Select All',\n game: 'Game',\n user: 'User',\n role: 'Role',\n username: 'Username',\n password: 'Password',\n label: 'Label',\n method: 'Method',\n route: 'Route',\n request: 'Request',\n response: 'Response',\n add: 'Add',\n signIn: 'Sign In',\n projectGroup: 'Project Group',\n view: 'View',\n },\n SignIn: {\n title: 'Sign In Method',\n thirdParty: 'Third party sign in',\n signInWithIDass: 'Sign in with IDass',\n unregistered: 'You are not yet registered on the platform, please contact the administrator',\n welcome: 'Welcome',\n },\n NotFound: {\n subTitle: 'The page you visited does not exist',\n buttonText: 'Return to homepage',\n },\n FilterFormWrapper: {\n confirmText: 'Search',\n resetText: 'Reset',\n },\n FormModal: {\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n },\n GameSelect: {\n label: 'Current Game',\n placeholder: 'Please select a game',\n },\n RequireGame: {\n description: 'Please select a game',\n },\n UserWidget: {\n signOutText: 'Sign Out',\n },\n User: {\n createTitle: 'Create User',\n createSuccessfully: 'User created successfully',\n updateTitle: 'Update User',\n updateSuccessfully: 'User updated successfully',\n deleteTitle: 'Delete User',\n deleteContent: 'Are you sure you want to delete user <%= user %>?',\n deleteSuccessfully: 'User deleted successfully',\n },\n Role: {\n createTitle: 'Create Role',\n createSuccessfully: 'Role created successfully',\n updateTitle: 'Update Role',\n updateSuccessfully: 'Role updated successfully',\n deleteTitle: 'Delete Role',\n deleteContent: 'Are you sure you want to delete role <%= role %>?',\n deleteSuccessfully: 'Role deleted successfully',\n },\n PermissionList: {\n failedDescription: 'Failed to get permission list',\n baseSectionTitle: 'Platform Basic Permissions',\n gameSectionTitle: 'Game Permissions',\n gameSectionDescription: 'Please select a game first',\n gameSelectPlaceholder: 'Please select a game first',\n removeText: 'Remove',\n addText: 'Add Game Permissions',\n },\n RoleDetail: {\n title: 'Role Details',\n },\n InfiniteList: {\n loadingText: 'Loading...',\n reachEndText: \"You've reached the end\",\n loadMoreText: 'Load more',\n },\n}\n\nexport default locale\n","export const SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\n\nexport const APP_ID_HEADER = 'App-ID'\n\nexport const FRONTEND_ROUTE_PREFIX = '/console/'\n\nexport enum PermissionVersion {\n V1 = 'v1',\n V2 = 'v2',\n V3 = 'v3',\n}\n\nexport const WILDCARD = '*'\n","import type { AxiosInterceptorManager, AxiosResponse, InternalAxiosRequestConfig } from 'axios'\nimport type { StateCreator } from 'zustand'\nimport type { Locale } from '../components/locale'\nimport enGb from '../components/locale/en_GB'\nimport { PermissionVersion } from '../constants'\n\nexport interface ContextSlice {\n locale: Locale\n permissionVersion: PermissionVersion // 权限版本\n gameApiV2: boolean\n signInPath: string // 登录页前端路由地址\n isGlobal: boolean // 为 true 时,APP-ID header 为 ‘global’,否则为当前的游戏的 id。\n // 页面标题\n title: {\n text?: string\n fontSize?: number\n }\n navWidth?: number // 侧边栏宽度\n collapsed?: boolean\n collapsible?: boolean // 菜单是否可折叠\n mainPagePath: string // 首页地址\n interceptors?: {\n request?: Parameters<AxiosInterceptorManager<InternalAxiosRequestConfig>['use']>\n response?: Parameters<AxiosInterceptorManager<AxiosResponse>['use']>\n }\n setContext(state: Partial<Omit<ContextSlice, 'setContext'>>): void\n}\n\nexport const createContextSlice: StateCreator<ContextSlice, [], [], ContextSlice> = set => ({\n locale: enGb,\n gameApiV2: false,\n isGlobal: false,\n signInPath: '/sign_in',\n mainPagePath: '/',\n title: {\n fontSize: 18,\n },\n permissionVersion: PermissionVersion.V1,\n setContext(state) {\n set(prev => ({ ...prev, ...state }))\n },\n})\n","import type { StateCreator } from 'zustand'\n\nexport interface GameSlice {\n gameId?: string | number\n setGameId: (id?: string | number) => void\n}\n\nexport const createGameSlice: StateCreator<GameSlice, [], [], GameSlice> = set => ({\n setGameId: id => {\n set({ gameId: id })\n },\n})\n","import { jwtDecode } from 'jwt-decode'\nimport type { StateCreator } from 'zustand'\n\ninterface UserInfo {\n authorityId: string\n exp: number\n}\n\nexport interface TokenSlice {\n token?: string\n getUser: () => UserInfo | null\n setToken: (token: string) => void\n}\n\nexport const createTokenSlice: StateCreator<TokenSlice, [], []> = (set, get) => ({\n getUser: () => {\n const token = get().token\n if (token) {\n try {\n return jwtDecode(token)\n } catch (error) {\n return null\n }\n }\n return null\n },\n setToken: token => set({ token }),\n})\n","import { createStore } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { mixedStorage } from '../utils'\nimport type { AxiosSlice } from './axios'\nimport { createAxiosSlice } from './axios'\nimport { createContextSlice, type ContextSlice } from './context'\nimport type { GameSlice } from './game'\nimport { createGameSlice } from './game'\nimport type { TokenSlice } from './token'\nimport { createTokenSlice } from './token'\n\nexport type ToolkitsState = TokenSlice &\n GameSlice &\n ContextSlice &\n AxiosSlice & {\n clearToken: () => void\n }\n\nexport const createToolkitsStore = (initProps?: Partial<ContextSlice>) => {\n return createStore<ToolkitsState>()(\n persist(\n (...args) => {\n const [_set, get, store] = args\n\n return {\n ...createTokenSlice(...args),\n ...createGameSlice(...args),\n ...createContextSlice(...args),\n ...createAxiosSlice(...args),\n clearToken() {\n get().setToken('')\n store.persist.clearStorage()\n },\n ...initProps,\n }\n },\n {\n name: 'toolkits',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({\n token: state.token,\n gameId: state.gameId,\n collapsed: state.collapsed,\n }),\n },\n ),\n )\n}\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 { Alert, Button, Divider, Form, Input, Space, Spin, Typography } from 'antd'\nimport type { FC, ReactNode } from 'react'\nimport { Navigate } from 'react-router-dom'\nimport useSWR from 'swr'\nimport { create } from 'zustand'\nimport { useTranslation } from '../../components/locale'\nimport { Logo } from '../../components/logo'\nimport { useToolkitsStore } from '../../components/toolkitsProvider'\nimport { SSO_URL } from '../../constants'\nimport type { JsonData } from '../../types'\nimport backgroundUrl from './background.svg'\n\ninterface SignInProps {\n extra?: ReactNode\n}\n\nexport const useSignInStore = create<{\n unregistered: boolean // 是否是未注册用户\n setUnregistered: () => void\n}>()(set => ({\n unregistered: false,\n setUnregistered() {\n set({ unregistered: true })\n },\n}))\n\nconst SignIn: FC<SignInProps> = props => {\n const { extra } = props\n const { unregistered } = useSignInStore()\n const {\n title: { text },\n } = useToolkitsStore(s => s)\n\n // 当路由模式为 hash 模式时,Idaas 重定向会把 ticket 放到 hash 前面,此时的登录页的地址为标准的 URL 结构 \"/?ticket=xxx#/sign_in\"。\n // 然而 react-router-dom 无法从这种地址中获取到查询字符串,需要使用原生的 window.location.search。\n const queryParams = new URLSearchParams(window.location.search)\n const { token, setToken, axios, mainPagePath } = useToolkitsStore(state => state)\n const { t } = useTranslation()\n\n const { isLoading } = useSWR(\n queryParams.has('ticket') ? `/api/usystem/user/login?ticket=${queryParams.get('ticket')}` : null,\n url => axios.get<JsonData<{ token: string }>>(url).then(res => res.data.data),\n {\n onSuccess: data => {\n if (data) {\n setToken(data.token)\n }\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 = mainPagePath\n\n if (!hashMode) {\n return <Navigate replace to={mainPagePath} />\n }\n\n // 移除 ticket\n window.location.href = `${window.location.origin}${window.location.pathname}#${path}`\n\n return null\n }\n\n return (\n <div className=\"w-screen h-screen relative flex overflow-hidden\">\n <div className=\"absolute top-16 right-16 z-10\">{extra}</div>\n <div className=\"absolute left-14 top-6\">\n <Space align=\"center\">\n <Logo width={48} />\n <span className=\"text-2xl font-bold\">{text}</span>\n </Space>\n </div>\n <div className=\"flex-1 flex justify-center items-center bg-slate-50\">\n <img src={backgroundUrl} alt=\"background\" className=\"w-10/12\" />\n </div>\n <div className=\"w-[650px] relative top-0 left-0 right-0 bottom-0\">\n <div className=\"absolute top-1/2 -translate-y-1/2 left-0 right-0\">\n <div className=\"-translate-y-10 px-36\">\n <div className=\"flex flex-col justify-center\">\n <div className=\"h-10\">\n {unregistered && <Alert banner closable message={t('SignIn.unregistered')} type=\"error\" />}\n </div>\n <Typography.Title level={2}>{t('SignIn.welcome')}</Typography.Title>\n <div className=\"mt-4\">\n <Form layout=\"vertical\" autoComplete=\"off\">\n <Form.Item label={t('global.username')} name=\"username\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label={t('global.password')} name=\"password\" rules={[{ required: true }]}>\n <Input.Password />\n </Form.Item>\n <Form.Item>\n <Button block type=\"primary\" shape=\"round\" htmlType=\"submit\">\n {t('global.signIn')}\n </Button>\n </Form.Item>\n </Form>\n </div>\n <Divider plain dashed>\n {t('SignIn.thirdParty')}\n </Divider>\n <div className=\"flex justify-center items-center\">\n <Button\n block\n shape=\"round\"\n href={`${SSO_URL}/logout?service=${SSO_URL}/login?service=${window.location.href}`}\n target=\"_self\"\n >\n <Logo width={18} />\n {t('SignIn.signInWithIDass')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default SignIn\n","import { App } from 'antd'\nimport { AxiosHeaders, isAxiosError } from 'axios'\nimport { type ReactNode } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { APP_ID_HEADER, PermissionVersion } from '../../constants'\nimport { useSignInStore } from '../../pages/signIn'\nimport type { JsonData } from '../../types'\nimport { useToolkitsStore } from '../toolkitsProvider'\n\nlet requestInterceptorId: number\nlet responseInterceptorId: number\n\nconst Interceptors = ({ children }: { children?: ReactNode }) => {\n const { notification } = App.useApp()\n const { axios, interceptors, token, isGlobal, signInPath, gameId, clearToken, permissionVersion } = useToolkitsStore(\n s => s,\n )\n const { setUnregistered } = useSignInStore()\n const navigate = useNavigate()\n\n axios.interceptors.request.eject(requestInterceptorId)\n axios.interceptors.response.eject(responseInterceptorId)\n\n if (interceptors?.request) {\n requestInterceptorId = axios.interceptors.request.use(...interceptors.request)\n } else {\n requestInterceptorId = axios.interceptors.request.use(config => {\n if (config.skipRequestInterceptor) {\n return config\n }\n\n const headers = new AxiosHeaders(config.headers)\n config.responseType = config.responseType || 'json'\n\n if (token) {\n headers.setAuthorization(`Bearer ${token}`)\n }\n\n if (!headers.has(APP_ID_HEADER) && permissionVersion !== PermissionVersion.V1) {\n if (isGlobal || !gameId) {\n headers.set(APP_ID_HEADER, 'global')\n } else {\n headers.set(APP_ID_HEADER, gameId)\n }\n }\n\n headers.set('Accept', config.responseType === 'blob' ? 'application/octet-stream' : 'application/json')\n config.headers = headers\n return config\n })\n }\n\n if (interceptors?.response) {\n responseInterceptorId = axios.interceptors.response.use(...interceptors.response)\n } else {\n responseInterceptorId = axios.interceptors.response.use(\n response => {\n if (response.config.skipResponseInterceptor) {\n return response\n }\n\n const responseType = response.request.responseType || 'json'\n\n if (responseType === 'json') {\n const data = response.data as JsonData\n\n if (data.code === 0 || data.code === 1 || data.code === 200 || data.status === 0 || data.errno === 0) {\n return response\n } else {\n notification.error({\n message: 'Request failed',\n description: data.msg,\n })\n throw new Error(data.msg)\n }\n }\n\n return response\n },\n error => {\n if (isAxiosError(error)) {\n const response = error.response\n\n if (!response) {\n throw error\n }\n\n if (response.status === 401 || response.status === 412) {\n clearToken?.()\n if (response.status === 412) {\n setUnregistered()\n }\n navigate(signInPath)\n } else if (response.status === 403) {\n notification.error({\n message: 'Forbidden',\n description: 'You do not have permission to access this resource.',\n })\n } else {\n notification.error({\n message: 'Request failed',\n description: response.data.msg,\n })\n throw new Error(response.data.msg)\n }\n }\n throw error\n },\n )\n }\n\n return children\n}\n\nexport default Interceptors\n","export { default as Interceptors } from './Interceptors'","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { App } from 'antd'\nimport type { ComponentType, FC, PropsWithChildren } from 'react'\nimport { createContext, useContext, useRef } from 'react'\nimport { useStore } from 'zustand'\nimport type { ToolkitsState } from '../../stores'\nimport { createToolkitsStore } from '../../stores'\nimport type { ContextSlice } from '../../stores/context'\nimport { Interceptors } from '../interceptors'\n\ntype ToolkitsStore = ReturnType<typeof createToolkitsStore>\n\nconst ToolkitsContext = createContext<ToolkitsStore | null>(null)\n\nexport function useToolkitsStore<T>(selector: (state: ToolkitsState) => T): T {\n const store = useContext(ToolkitsContext)\n if (!store) throw new Error('Missing ToolkitsProvider in the tree')\n return useStore(store, selector)\n}\n\nexport type ToolkitsProviderProps = PropsWithChildren<Partial<Omit<ContextSlice, 'setContext'>>>\n\nconst ToolkitsProvider: FC<ToolkitsProviderProps> = props => {\n const { children, ...restProps } = props\n const storeRef = useRef<ToolkitsStore>()\n const parentState = useContext(ToolkitsContext)?.getState()\n\n if (!storeRef.current) {\n storeRef.current = createToolkitsStore({ ...parentState, ...restProps })\n }\n\n if (!storeRef.current.getState().signInPath) {\n throw new Error('ToolkitsProvider: 请配置 \"signInPath\"')\n }\n\n return (\n <ToolkitsContext.Provider value={storeRef.current}>\n <App>\n <Interceptors>{children}</Interceptors>\n </App>\n </ToolkitsContext.Provider>\n )\n}\n\nexport const withContext = (Component: ComponentType, providerProps: Omit<ToolkitsProviderProps, 'children'>) => {\n return (props: any) => {\n return (\n <ToolkitsProvider {...providerProps}>\n <Component {...props} />\n </ToolkitsProvider>\n )\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ToolkitsProvider.displayName = 'ToolkitsProvider'\n}\n\nexport default ToolkitsProvider\n","export { default as ToolkitsProvider, useToolkitsStore, withContext } from './ToolkitsProvider'\nexport type { ToolkitsProviderProps } from './ToolkitsProvider'\n","import { get, has, template } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useToolkitsStore } from '../toolkitsProvider'\nimport type { Locale } from './index'\n\ntype Join<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never\n\ntype Paths<T, D extends number = 10> = [D] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K]>> : never\n }[keyof T]\n : ''\n\nexport function useTranslation() {\n const locale = useToolkitsStore(state => state.locale)\n\n const t = useMemo(\n () => (key: Paths<Locale>, data?: Record<string, unknown>) =>\n has(locale, key) ? template(get(locale, key as string))(data) : key,\n [locale],\n )\n\n return { t }\n}\n","export type Locale = {\n global: {\n noEntitlement: string\n name: string\n creationTime: string\n operation: string\n update: string\n edit: string\n delete: string\n selectAll: string\n game: string\n user: string\n role: string\n username: string\n password: string\n label: string\n method: string\n route: string\n request: string\n response: string\n add: string\n signIn: string\n projectGroup: string\n view: string\n }\n SignIn: {\n title: string\n thirdParty: string\n signInWithIDass: string\n unregistered: string\n welcome: string\n }\n NotFound: {\n subTitle: string\n buttonText: string\n }\n FilterFormWrapper: {\n confirmText: string\n resetText: string\n }\n FormModal: {\n confirmText: string\n cancelText: string\n }\n GameSelect: {\n label: string\n placeholder: string\n }\n RequireGame: {\n description: string\n }\n UserWidget: {\n signOutText: string\n }\n User: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n Role: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n PermissionList: {\n failedDescription: string\n baseSectionTitle: string\n gameSectionTitle: string\n gameSectionDescription: string\n gameSelectPlaceholder: string\n removeText: string\n addText: string\n }\n RoleDetail: {\n title: string\n }\n InfiniteList: {\n loadingText: string\n reachEndText: string\n loadMoreText: string\n }\n}\n\nexport { useTranslation } from './hooks'\n","import { Button, Space, theme } from 'antd'\nimport type { Key, PropsWithChildren, ReactNode } from 'react'\nimport { Fragment } from 'react'\nimport { useTranslation } from '../locale'\n\nexport interface FilterFormWrapperProps extends PropsWithChildren {\n onConfirm?: () => void | Promise<void>\n onReset?: () => void\n extras?: { key: Key; children: ReactNode }[]\n isConfirming?: boolean\n buttonsAlign?: 'left' | 'right' | 'bottom'\n showReset?: boolean\n}\n\nconst FilterFormWrapper = (props: FilterFormWrapperProps) => {\n const { extras, isConfirming, onConfirm, onReset, children, buttonsAlign = 'left', showReset } = props\n const { t } = useTranslation()\n const {\n token: { colorFillAlter, lineWidth, lineType, colorBorder, borderRadiusLG },\n } = theme.useToken()\n\n const style = {\n maxWidth: 'none',\n background: colorFillAlter,\n borderWidth: lineWidth,\n borderStyle: lineType,\n borderColor: colorBorder,\n borderRadius: borderRadiusLG,\n padding: 24,\n marginBottom: 24,\n }\n\n return (\n <div style={style}>\n <div className={`flex ${buttonsAlign === 'bottom' ? 'flex-col' : 'flex-row'}`}>\n <div className={`${buttonsAlign === 'left' ? 'flex-grow-0' : 'flex-1'}`}>{children}</div>\n <div className={`${buttonsAlign === 'bottom' ? 'text-end' : 'text-start'} ml-4`}>\n <Space>\n <Button type=\"primary\" loading={isConfirming} onClick={onConfirm}>\n {t('FilterFormWrapper.confirmText')}\n </Button>\n {extras?.map(item => <Fragment key={item.key}>{item.children}</Fragment>)}\n {showReset && <Button onClick={onReset}>{t('FilterFormWrapper.resetText')}</Button>}\n </Space>\n </div>\n </div>\n </div>\n )\n}\n\nexport default FilterFormWrapper\n","export { default as FilterFormWrapper } from './FilterFormWrapper'\nexport type { FilterFormWrapperProps } from './FilterFormWrapper'\n","import type { PropsWithChildren, ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\nimport { flushSync } from 'react-dom'\nimport { createRoot } from 'react-dom/client'\n\nconst splitByTags = (str: string) => {\n const regex = /(<[^>]*>)/\n return str.split(regex).filter(part => part !== '')\n}\n\nfunction renderToString(node: ReactNode): Promise<string> {\n const container = document.createElement('div')\n const root = createRoot(container)\n\n return new Promise(resolve => {\n setTimeout(() => {\n flushSync(() => {\n root.render(node)\n })\n resolve(container.innerHTML)\n })\n })\n}\n\nexport interface HighlightProps extends PropsWithChildren {\n texts: Array<string | number>\n}\n\nconst Highlight = (props: HighlightProps) => {\n const { texts, children } = props\n const [htmlString, setHtmlString] = useState<string>('')\n\n useEffect(() => {\n renderToString(children).then(str => {\n const result = splitByTags(str)\n\n for (const text of texts) {\n for (let index = 0; index < result.length; index++) {\n // TODO: 忽略 HTML tag\n result[index] = result[index].replace(String(text), `<span style='color: #DC143C;'>${text}</span>`)\n }\n }\n\n setHtmlString(result.join(''))\n })\n }, [children, texts])\n\n return <div dangerouslySetInnerHTML={{ __html: htmlString }}></div>\n}\n\nexport default Highlight\n","export { default as Highlight } from './Highlight'\nexport type { HighlightProps } from './Highlight'\n","import type { AxiosRequestConfig } from 'axios'\nimport type { SWRResponse } from 'swr'\nimport useSWR from 'swr'\nimport { useToolkitsStore } from '../components/toolkitsProvider'\nimport type { JsonData, MenuListItem } from '../types'\nimport { APP_ID_HEADER, PermissionVersion } from './../constants/index'\n\nexport function usePermission(code?: string, config?: AxiosRequestConfig): SWRResponse<boolean>\nexport function usePermission(code?: string[], config?: AxiosRequestConfig): SWRResponse<Record<string, boolean>>\nexport function usePermission(\n code?: string | string[],\n config?: AxiosRequestConfig,\n): SWRResponse<boolean> | SWRResponse<Record<string, boolean>> {\n const { axios, permissionVersion } = useToolkitsStore(s => s)\n const url = permissionVersion !== PermissionVersion.V1 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check'\n const permissionCodes = typeof code !== 'undefined' ? (typeof code === 'string' ? [code] : code) : []\n const body = { permissions: permissionCodes }\n\n const { data, ...rest } = useSWR(permissionCodes.length > 0 ? [url, body, config] : null, args =>\n axios.post<JsonData<Record<string, boolean>>>(...args).then(response => response.data.data),\n )\n\n let newData: boolean | Record<string, boolean> = true\n\n if (typeof code === 'string') {\n newData = data?.has_all ? true : (data?.[code] ?? false)\n } else if (Array.isArray(code) && code.length > 0) {\n newData = permissionCodes.reduce<Record<string, boolean>>((acc, curr) => {\n acc[curr] = data?.has_all ? true : (data?.[curr] ?? false)\n return acc\n }, {})\n }\n\n return {\n ...rest,\n data: newData,\n } as SWRResponse<boolean> | SWRResponse<Record<string, boolean>>\n}\n\nexport function useMenuList() {\n const { signInPath, axios, gameId } = useToolkitsStore(s => s)\n return useSWR(\n window.location.pathname !== signInPath\n ? { url: '/api/usystem/menu/navbar', headers: { [APP_ID_HEADER]: gameId } }\n : null,\n ({ url, headers }) => axios<JsonData<MenuListItem[]>>(url, { headers }).then(response => response.data.data),\n )\n}\n","import useSWR from 'swr'\nimport { PermissionVersion } from '../../constants'\nimport type { JsonData } from '../../types'\nimport { useToolkitsStore } from '../toolkitsProvider'\nimport type { Game } from './types'\n\nexport const useGames = () => {\n const { axios, gameApiV2, permissionVersion } = useToolkitsStore(s => s)\n return useSWR(\n permissionVersion !== PermissionVersion.V1 ? (gameApiV2 ? '/api/game/list' : '/api/usystem/game/all') : null,\n async (url: string) => {\n if (gameApiV2) {\n const response = await axios<JsonData<{ list: Game[] }>>(url)\n return response.data.data.list ?? []\n } else {\n const response = await axios<JsonData<Game[]>>(url)\n return response.data.data ?? []\n }\n },\n )\n}\n\nexport const useFindGame = (id: string | number) => {\n const { data } = useGames()\n const { gameApiV2 } = useToolkitsStore(s => s)\n return data?.find(item => String(gameApiV2 ? item.game_id : item.id) === String(id))\n}\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 } from 'antd/es/menu/interface'\nimport { Link } from 'react-router-dom'\nimport type { Merge } from 'ts-essentials'\nimport type { MenuItemGroupType2, MenuItemType2, NavMenuItem, SubMenuType2 } from './types'\n\n// 将自定义的菜单配置转换为 antd 的菜单配置,添加 react-router-dom Link 等。\nexport function transformItems(items?: NavMenuItem[]) {\n const result: ItemType[] = []\n\n if (items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i] === null || (items[i] as MenuDividerType).type === 'divider') {\n result[i] = items[i] as null | MenuDividerType\n } else if ((items[i] as SubMenuType2 | MenuItemGroupType2).children) {\n const { children, ...rest } = items[i] as SubMenuType2 | MenuItemGroupType2\n result[i] = {\n ...rest,\n children: transformItems(children),\n }\n } else {\n const { route, label, ...rest } = items[i] as MenuItemType2\n const labelNode = route ? <Link to={route}>{label}</Link> : label\n\n result[i] = {\n ...rest,\n label: labelNode,\n }\n }\n }\n }\n\n return result\n}\n\n// 拍平导航配置,并且注入 keypath 字段\nexport function flatItems(\n items: NavMenuItem[],\n result: Merge<MenuItemType2, { keypath?: string[] }>[] = [],\n keypath: string[] = [],\n) {\n for (const item of items) {\n const children = (item as SubMenuType2 | MenuItemGroupType2)?.children as NavMenuItem[]\n\n if (Array.isArray(children)) {\n const keys =\n (item as MenuItemGroupType2).type !== 'group' && item!.key ? [...keypath, item!.key as string] : keypath\n flatItems(children, result, keys)\n } else if (item) {\n result.push(Object.assign(item as MenuItemType2, { keypath }))\n }\n }\n\n return result\n}\n","import type { MenuProps } from 'antd'\nimport { Menu, Spin } from 'antd'\nimport { memo, useCallback, useEffect, useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { useNavStore } from './stores'\nimport type { NavMenuItem } from './types'\nimport { flatItems, transformItems } from './utils'\n\nexport interface NavMenuProps {\n items?: NavMenuItem[]\n theme?: MenuProps['theme']\n loading?: boolean\n}\n\nconst NavMenu = memo(function NavMenu(props: NavMenuProps) {\n const { items, theme, loading } = props\n const location = useLocation()\n const flattenItems = useMemo(() => flatItems(items ?? []), [items])\n const internalItems = useMemo(() => transformItems(items ?? []), [items])\n const { openKeys, selectedKeys, setOpenKeys, setSelectedKeys } = useNavStore()\n\n const onOpenChange = useCallback(\n (keys: string[]) => {\n const lastOpenKey = keys?.find(key => openKeys?.indexOf(key) === -1)\n const match = flattenItems.find(item => lastOpenKey === item.key)\n setOpenKeys((match?.keypath ?? [lastOpenKey]) as string[])\n },\n [flattenItems, openKeys, setOpenKeys],\n )\n\n useEffect(() => {\n const match = flattenItems.find(item => location.pathname === item.route)\n\n if (match) {\n const key = match.key as string\n const keypath = match.keypath as string[]\n setSelectedKeys([key])\n setOpenKeys(keypath)\n }\n }, [flattenItems, location])\n\n if (loading) {\n return (\n <div className=\"flex justify-center items-center\" style={{ height: 'calc(100vh - 64px)' }}>\n <Spin />\n </div>\n )\n }\n\n return (\n <Menu\n theme={theme}\n style={{ borderRight: 'none' }}\n items={internalItems}\n mode=\"inline\"\n openKeys={openKeys}\n selectedKeys={selectedKeys}\n onOpenChange={onOpenChange}\n />\n )\n})\n\nif (process.env.NODE_ENV === 'development') {\n NavMenu.displayName = 'NavMenu'\n}\n\nexport default NavMenu\n","export { default as NavMenu } from './NavMenu'\nexport type { NavMenuItem } from './types'\n","import * as Antd from 'antd'\nimport { Empty } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { Fragment } from 'react'\nimport { PermissionVersion } from '../../constants'\nimport { useGames } from '../layout'\nimport { useTranslation } from '../locale'\nimport { useToolkitsStore } from '../toolkitsProvider'\n\nconst { Spin } = Antd\n\nconst RequireGame: FC<PropsWithChildren> = ({ children }) => {\n const { permissionVersion, gameId, isGlobal } = useToolkitsStore(s => s)\n const { isLoading } = useGames()\n const { t } = useTranslation()\n\n if (isLoading) {\n return (\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 400,\n }}\n >\n <Spin />\n </div>\n )\n }\n\n if (permissionVersion === PermissionVersion.V1 || isGlobal) {\n return children\n }\n\n if (!gameId) {\n return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={t('RequireGame.description')} />\n }\n\n return <Fragment key={gameId}>{children}</Fragment>\n}\n\nexport default RequireGame\n","export { default as RequireGame } from './RequireGame'\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport { LogoutOutlined, UserOutlined } from '@ant-design/icons'\nimport type { MenuProps } from 'antd'\nimport { Dropdown, Space } from 'antd'\nimport type { FC } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from '../locale'\nimport { useToolkitsStore } from '../toolkitsProvider'\n\nconst UserWidget: FC = () => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const { clearToken, getUser, signInPath } = useToolkitsStore(s => s)\n const user = getUser()\n\n const items: MenuProps['items'] = [\n {\n key: '1',\n icon: <LogoutOutlined />,\n label: (\n <a\n onClick={() => {\n clearToken()\n navigate(signInPath)\n }}\n >\n {t('UserWidget.signOutText')}\n </a>\n ),\n },\n ]\n\n return (\n <div>\n <Dropdown\n menu={{\n selectable: true,\n items,\n }}\n placement=\"bottomRight\"\n >\n <a\n onClick={e => {\n e.preventDefault()\n }}\n >\n <Space align=\"center\">\n <span>{user?.authorityId}</span>\n <UserOutlined style={{ fontSize: '16px' }} />\n </Space>\n </a>\n </Dropdown>\n </div>\n )\n}\n\nexport default UserWidget\n","export { default as UserWidget } from './UserWidget'\n","import type { SelectProps } from 'antd'\nimport { Select, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect } from 'react'\nimport { useSWRConfig } from 'swr'\nimport { useTranslation } from '../locale'\nimport { useToolkitsStore } from '../toolkitsProvider'\nimport { useGames } from './hooks'\nimport type { Game } from './types'\n\nconst { Text } = Typography\n\nexport interface GameSelectProps {\n filter?: (game: Game) => boolean\n options?: (data?: Game[]) => SelectProps['options']\n}\n\nconst GameSelect: FC<GameSelectProps> = props => {\n const { filter, options } = props\n const { t } = useTranslation()\n const { gameApiV2, gameId, setGameId } = useToolkitsStore(s => s)\n const { data, isLoading } = useGames()\n const { cache } = useSWRConfig()\n\n const filteredData = data?.filter(item => filter?.(item) ?? true)\n\n const _options =\n typeof options === 'function'\n ? options(filteredData)\n : filteredData?.map(item => ({\n label: item.name,\n value: gameApiV2 ? item.game_id : item.id,\n }))\n\n // 切换游戏时清空 swr 缓存触发重新请求以更新视图。\n const onChange = (value: string | number) => {\n clearCache()\n setGameId(value)\n }\n\n const clearCache = () => {\n for (const key of cache.keys()) {\n if (key !== '/api/game/list' && key !== '/api/usystem/game/all') {\n cache.delete(key)\n }\n }\n }\n\n useEffect(() => {\n if (data && data.length > 0) {\n const firstId = gameApiV2 ? data[0].game_id : data[0].id\n if (data.every(item => String(item.game_id || item.id) !== String(gameId))) {\n // 如果当前游戏 ID 不在数据中,则设置为第一个游戏 ID\n setGameId(firstId)\n }\n }\n }, [data])\n\n return (\n <Space>\n <Text>{t('GameSelect.label')}</Text>\n <Select<string | number>\n showSearch\n optionFilterProp=\"label\"\n value={gameId}\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","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, useState } from 'react'\nimport { Link } from 'react-router-dom'\nimport { PermissionVersion } from '../../constants'\nimport { Logo } from '../logo'\nimport type { NavMenuItem } from '../navMenu'\nimport { NavMenu } from '../navMenu'\nimport { RequireGame } from '../requireGame'\nimport { useToolkitsStore } from '../toolkitsProvider'\nimport { UserWidget } from '../userWidget'\nimport type { GameSelectProps } from './GameSelect'\nimport GameSelect from './GameSelect'\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'> {\n collapsible?: boolean\n isMenuLoading?: boolean\n items?: NavMenuItem[]\n hideGameSelect?: boolean\n navWidth?: string | number\n gameSelectOptions?: GameSelectProps['options']\n headerExtra?: {\n left?: HeaderExtra[]\n right?: HeaderExtra[]\n }\n}\n\nconst Layout: FC<PropsWithChildren<LayoutProps>> = props => {\n const {\n collapsible,\n isMenuLoading,\n items,\n headerExtra,\n children,\n navWidth,\n hideGameSelect,\n filter,\n gameSelectOptions,\n } = props\n const {\n token: { colorBgContainer, colorBorder },\n } = theme.useToken()\n const {\n permissionVersion,\n title: { text, fontSize },\n navWidth: globalNavWidth,\n collapsible: globalCollapsible,\n mainPagePath,\n collapsed,\n setContext,\n } = useToolkitsStore(s => s)\n\n const [internalCollapsed, setInternalCollapsed] = useState(collapsed)\n\n const onCollapse = async () => {\n setInternalCollapsed(!internalCollapsed)\n setContext({ collapsed: !internalCollapsed })\n }\n\n const internalCollapsible = collapsible ?? globalCollapsible ?? false\n\n return (\n <Antd.Layout>\n <Sider\n collapsible={internalCollapsible}\n theme=\"light\"\n trigger={null}\n collapsed={internalCollapsed}\n width={navWidth ?? globalNavWidth}\n style={{\n height: '100vh',\n overflowX: 'hidden',\n overflowY: 'auto',\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colorBorder,\n }}\n >\n <Link to={mainPagePath}>\n <div className=\"flex px-6 py-4 font-bold\">\n <Logo width={32} height={32} />\n <div\n className={`h-8 flex items-center ml-2 collapse-text ${internalCollapsed ? 'opacity-0' : 'animate__fadeIn delay-200'} `}\n style={{ fontSize }}\n >\n {text}\n </div>\n </div>\n </Link>\n <NavMenu items={items} loading={isMenuLoading} />\n </Sider>\n <Antd.Layout>\n <Header\n style={{\n padding: '0 24px',\n background: colorBgContainer,\n }}\n >\n <div className=\"flex justify-between items-center h-full\">\n <Space size=\"small\" split={<Divider type=\"vertical\" />} className=\"mr-6\">\n {internalCollapsible && (\n <Button\n type=\"text\"\n icon={internalCollapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}\n style={{ fontSize: '16px' }}\n onClick={onCollapse}\n />\n )}\n {permissionVersion !== PermissionVersion.V1 && !hideGameSelect && (\n <GameSelect filter={filter} options={gameSelectOptions} />\n )}\n {headerExtra?.left?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n </Space>\n <Space size=\"small\" split={<Divider type=\"vertical\" />}>\n {headerExtra?.right?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n <UserWidget />\n </Space>\n </div>\n </Header>\n <Content\n style={{\n overflow: 'auto',\n padding: '24px 16px',\n maxHeight: 'calc(100vh - 64px)',\n }}\n >\n <Suspense\n fallback={\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: '200px',\n }}\n />\n }\n >\n <RequireGame>{children}</RequireGame>\n </Suspense>\n </Content>\n </Antd.Layout>\n </Antd.Layout>\n )\n}\n\nexport default Layout\n","type Area = 'all' | 'cn' | 'global'\n\ntype ScreenOrientation = 0 | 1 // 0:横屏 1:竖屏\n\nexport interface Game {\n id: number\n game_id: string | number\n game_group: string\n name: string\n screen_type: ScreenOrientation\n area: Area\n icon: string\n auth: string\n ctime: string\n mtime: string\n is_delete: 0 | 1\n is_new_game: 0 | 1\n server_type: string\n}\n","export * from './hooks'\nexport { default as Layout, type LayoutProps } from './Layout'\nexport * from './types'\n","import { create } from 'zustand'\n\ninterface ModalState {\n open: Map<number, boolean>\n isOpen: (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 isOpen: 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","import type { ModalProps } from 'antd'\nimport { Modal } from 'antd'\nimport { type ReactNode, useMemo, useState } from 'react'\nimport { useModalStore } from './stores'\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 afterOpen?: () => void | Promise<void>\n}\n\nlet id = 0\n\nexport function useModal(props: UseModalProps) {\n const { content, onConfirm, afterOpen, ...modalProps } = props\n const _id = useMemo(() => ++id, [])\n const { show, hide, isOpen } = useModalStore()\n const open = isOpen(_id)\n const [confirmLoading, setConfirmLoading] = useState(false)\n const isRenderFunction = typeof content === 'function'\n\n const _show = async () => {\n show(_id)\n await afterOpen?.()\n }\n\n const _hide = () => {\n hide(_id)\n }\n\n const onCancel: ModalProps['onCancel'] = () => {\n _hide()\n }\n\n const onOk = async () => {\n try {\n setConfirmLoading(true)\n await onConfirm?.()\n _hide()\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: _hide }) : content}\n </Modal>\n )\n\n return {\n id: _id,\n show: _show,\n hide: _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 { useModal, type UseModalOperation, type UseModalProps } 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 onSuccess?: () => void\n}\n\nexport function useFormModal<Values extends AnyObject = AnyObject, ExtraValues = any>(\n props: UseFormModalProps<Values, ExtraValues>,\n) {\n const { content, form, formProps, onConfirm, onSuccess, ...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)\n onSuccess?.()\n hide()\n }\n\n const afterClose = () => {\n internalForm.resetFields()\n }\n\n const { id, show, hide, modal } = useModal({\n ...modalProps,\n content: operation => (\n <Form {...formProps} form={internalForm}>\n {isRenderFunction ? content(internalExtraValues, operation) : content}\n </Form>\n ),\n onConfirm: hanldeConfirm,\n afterClose,\n })\n\n const onShow = (options?: { initialValues?: RecursivePartial<Values>; extraValues?: ExtraValues }) => {\n const { initialValues, extraValues } = options || {}\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 id,\n show: onShow,\n hide,\n modal,\n }\n}\n","export { useFormModal, type UseFormModalProps } from './formModal'\nexport { useModal } from './modal'\nexport { useModalStore } from './stores'\n","import type { ButtonProps } from 'antd'\nimport { Button, Tooltip } from 'antd'\nimport type { AxiosRequestConfig } from 'axios'\nimport type { FC, PropsWithChildren } from 'react'\nimport { usePermission } from '../../hooks'\nimport { useTranslation } from '../locale'\n\nexport interface PermissionButtonProps extends ButtonProps {\n code?: string | string[]\n showLoading?: boolean\n config?: AxiosRequestConfig\n}\n\nconst PermissionButton: FC<PropsWithChildren<PermissionButtonProps>> = props => {\n const { children, code, showLoading, disabled, config, ...restProps } = props\n const codes = code ? (Array.isArray(code) ? code : [code]) : []\n const { data, isLoading } = usePermission(codes, config)\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 // 只要有一个权限即可\n if (typeof data === 'boolean' || (data && Object.values(data).some(Boolean))) {\n return (\n <Button disabled={disabled} {...restProps}>\n {children}\n </Button>\n )\n }\n\n return (\n <Tooltip defaultOpen={false} title={t('global.noEntitlement')}>\n <Button disabled {...restProps}>\n {children}\n </Button>\n </Tooltip>\n )\n}\n\nexport default PermissionButton\n","export { default as PermissionButton } from './PermissionButton'\nexport type { PermissionButtonProps } from './PermissionButton'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isEqual } from 'lodash-es'\nimport type { MutatorCallback, MutatorOptions } from 'swr'\nimport { mutate } from 'swr'\nimport { create } from 'zustand'\nimport type { QueryListPayload } from './QueryList'\n\ninterface QueryListMutator {\n <Data = any, MutationData = Data>(\n key: string,\n data?: MutationData | Promise<MutationData> | MutatorCallback<MutationData>,\n opts?: boolean | MutatorOptions<Data, MutationData>,\n ): Promise<Array<MutationData | undefined>>\n <Data = any, MutationData = Data>(\n key: string,\n data?: MutationData | Promise<MutationData> | MutatorCallback<MutationData>,\n opts?: boolean | MutatorOptions<Data, MutationData>,\n ): Promise<MutationData | undefined>\n}\n\ninterface QueryListState {\n keyMap: Map<string, string | null>\n payloadMap: Map<string, QueryListPayload>\n getPayload(key: string): QueryListPayload\n setPayload(key: string, payload: QueryListPayload): void\n refetch(key: string, payload?: QueryListPayload): void\n mutate: QueryListMutator\n}\n\nexport const useQueryListStore = create<QueryListState>((set, get) => ({\n keyMap: new Map(),\n payloadMap: new Map(),\n getPayload(key) {\n return get().payloadMap.get(key) ?? { page: 1 }\n },\n setPayload(key, payload) {\n set(state => ({\n payloadMap: new Map(state.payloadMap).set(key, payload),\n }))\n },\n refetch(key, payload) {\n const prevPayload = get().getPayload(key)\n const nextPayload = { ...prevPayload, ...payload }\n // FIXME: 后续使用 unstable_serialize 来比较前后的 key,因为仅仅比较 payload 会有问题\n if (isEqual(prevPayload, nextPayload)) {\n get().mutate(key, undefined)\n } else {\n get().setPayload(key, nextPayload)\n }\n },\n mutate(key, data, opts) {\n const swrKey = get().keyMap.get(key)\n return mutate(swrKey, data, opts)\n },\n}))\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { Form, Result, Spin, Table } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { TableProps } from 'antd/es/table'\nimport type { AxiosHeaderValue, AxiosRequestConfig } from 'axios'\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'\nimport type { JsonData } from '../../types'\nimport type { FilterFormWrapperProps } from '../filterFormWrapper'\nimport { FilterFormWrapper } from '../filterFormWrapper'\nimport { useTranslation } from '../locale'\nimport { useToolkitsStore } from '../toolkitsProvider'\nimport { useQueryListStore } from './stores'\n\nexport interface ListResponse<T = any> {\n list: T[]\n total: number\n}\n\nexport interface QueryListPayload<Values = any> {\n page?: number\n size?: number\n formValue?: Values\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 extends AnyObject = AnyObject, Data = any, Values = AnyObject> {\n data: Data | undefined\n dataSource: Item[] | undefined\n form: FormInstance<Values>\n}\n\nexport interface QueryListProps<Item extends AnyObject = AnyObject, Data = any, Values = AnyObject>\n extends Omit<TableProps<Item>, 'pagination' | 'dataSource' | 'loading' | 'footer'>,\n Pick<FilterFormWrapperProps, 'buttonsAlign' | 'showReset'> {\n code?: string\n url?: string\n form?: FormInstance<Values>\n method?: 'GET' | 'POST'\n refreshInterval?: number\n onePage?: boolean // 无分页\n defaultSize?: number\n body?:\n | FormData\n | Record<string | number, any>\n | ((payload: QueryListPayload<Values>) => FormData | Record<string | number, any>)\n pageSizeOptions?: number[]\n params?: Record<string | number, any> | ((payload: QueryListPayload<Values>) => Record<string | number, any>)\n tableExtra?: ReactNode | ((form: FormInstance<Values>, data?: Data) => ReactNode)\n headers?: { [key: string]: AxiosHeaderValue } | ((form: FormInstance<Values>) => { [key: string]: AxiosHeaderValue })\n renderForm?: (form: FormInstance<Values>) => ReactElement\n afterSuccess?: (action: QueryListAction, form: FormInstance<Values>, data?: Data) => void\n getTotal?: (data: Data | undefined) => number | undefined\n getDataSource?: (data: Data | undefined, form: FormInstance<Values>) => Item[] | undefined\n footer?: (data: Data | undefined) => ReactNode\n}\n\nconst InternalQueryList = <Item extends AnyObject = AnyObject, Data = any, Values extends AnyObject = any>(\n props: QueryListProps<Item, Data, Values>,\n ref: Ref<QueryListRef<Item, Data, Values>>,\n) => {\n const internalProps = {\n method: 'GET',\n defaultSize: 10,\n refreshInterval: 0,\n getTotal: (data: Data | undefined) => (data as JsonData<ListResponse<Item>>)?.data?.total,\n getDataSource: (data: Data | undefined) => (data as JsonData<ListResponse<Item>>)?.data?.list,\n ...props,\n }\n\n const {\n url,\n code,\n headers,\n onePage,\n method,\n buttonsAlign,\n showReset,\n defaultSize,\n refreshInterval,\n tableExtra,\n form,\n body,\n params,\n renderForm,\n afterSuccess,\n getTotal,\n getDataSource,\n footer,\n pageSizeOptions,\n ...tableProps\n } = internalProps\n\n if (!url) {\n throw new Error('url property is required')\n }\n\n const { t } = useTranslation()\n const [_form] = Form.useForm<Values>(form)\n const action = useRef<QueryListAction>(QueryListAction.Init)\n const { data: accessible, isLoading: isChecking } = usePermission(code)\n const [isValid, setIsValid] = useState(false)\n const { keyMap, getPayload, refetch } = useQueryListStore()\n\n const { page, size = defaultSize, formValue } = getPayload(url)\n const payload = { page, size, formValue }\n\n const _body =\n typeof body === 'function'\n ? body(payload)\n : typeof body === 'undefined'\n ? method === 'POST'\n ? {\n ...formValue,\n page: !onePage ? page : undefined,\n size: !onePage ? size : undefined,\n }\n : undefined\n : body\n\n const _params =\n typeof params === 'function'\n ? params(payload)\n : typeof params === 'undefined'\n ? method === 'GET'\n ? {\n ...formValue,\n page: !onePage ? page : undefined,\n size: !onePage ? size : undefined,\n }\n : undefined\n : params\n\n const _headers = typeof headers === 'function' ? headers(_form) : headers\n\n const shouldPoll = useRef(false)\n\n const requestConfig: AxiosRequestConfig = {\n url,\n method,\n data: _body,\n params: _params,\n headers: _headers,\n }\n\n const key = useMemo(() => {\n if (!accessible || !isValid) {\n return null\n }\n\n const serializedKey = unstable_serialize(requestConfig)\n keyMap.set(url, serializedKey)\n return serializedKey\n }, [accessible, isValid, url, requestConfig])\n\n const { axios } = useToolkitsStore(s => s)\n\n const { data, isLoading } = useSWR(\n key,\n async () => {\n const response = await axios.request<Data>(requestConfig)\n return response.data\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n refreshInterval: shouldPoll.current ? refreshInterval : 0,\n onSuccess(_data) {\n shouldPoll.current = true\n afterSuccess?.(action.current, _form, _data)\n },\n },\n )\n\n const dataSource = getDataSource(data, _form)\n const total = getTotal(data)\n\n const pagination = !onePage && {\n pageSizeOptions,\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(url, {\n page: currentPage,\n size: currentSize,\n })\n },\n }\n\n const onConfirm = async () => {\n action.current = QueryListAction.Confirm\n try {\n await _form.validateFields()\n setIsValid(true)\n refetch(url, {\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(url, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n useEffect(() => {\n // 表单初始化完成后自动触发查询(如果校验通过)\n const init = async () => {\n if (!accessible) {\n return\n }\n\n try {\n _form.resetFields()\n const value = await _form.validateFields({ validateOnly: true })\n refetch(url, {\n page: 1,\n formValue: value,\n })\n setIsValid(true)\n } catch (err) {\n setIsValid(false)\n }\n }\n\n // FIXME: antd-schema 动态渲染时,需要延迟执行 init,否则会导致表单校验不符合预期。\n setTimeout(() => {\n init()\n }, 300)\n }, [accessible, form])\n\n useImperativeHandle(ref, () => ({\n data,\n dataSource,\n form: _form,\n }))\n\n if (isChecking) {\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 =\n typeof renderForm === 'function' ? (\n <FilterFormWrapper\n showReset={showReset}\n buttonsAlign={buttonsAlign}\n isConfirming={isLoading}\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 // 屏蔽 Form 组件的警告(Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?)\n <Form form={_form} />\n )\n\n const renderFooter = footer && (() => footer(data))\n\n return (\n <div>\n {formRenderer}\n {typeof tableExtra === 'function' ? tableExtra(_form, data) : tableExtra}\n <Table\n {...tableProps}\n dataSource={dataSource}\n loading={isLoading}\n pagination={pagination}\n footer={renderFooter}\n />\n </div>\n )\n}\n\nconst QueryList = forwardRef(InternalQueryList) as <\n Item extends AnyObject = AnyObject,\n Data = any,\n Values extends object | undefined = undefined,\n>(\n props: QueryListProps<Item, Values, Data> & { ref?: Ref<QueryListRef<Item, Values, Data>> },\n) => ReactElement\n\nexport default QueryList\n","export { default as QueryList, QueryListAction } from './QueryList'\nexport type { QueryListPayload, QueryListProps, QueryListRef } from './QueryList'\nexport { useQueryListStore } from './stores'\n","export const url = '/api/usystem/menu/list'\n","import useSWRMutation from 'swr/mutation'\nimport { useToolkitsStore } from '../../../components/toolkitsProvider'\nimport type { MenuListItem } from '../../../types'\n\nexport function useCreateMenu() {\n const { axios } = useToolkitsStore(s => s)\n return useSWRMutation('/api/usystem/menu/set', (url, { arg }: { arg: Omit<MenuListItem, 'id'> }) =>\n axios.post(url, { ...arg, id: 0, is_model: true }),\n )\n}\n\nexport function useUpdateMenu() {\n const { axios } = useToolkitsStore(s => s)\n return useSWRMutation('/api/usystem/menu/set', (url, { arg }: { arg: MenuListItem }) =>\n axios.post(url, { ...arg, is_model: true }),\n )\n}\n\nexport function useRemoveMenu() {\n const { axios } = useToolkitsStore(s => s)\n return useSWRMutation('/api/usystem/menu/delete', (url, { arg }: { arg: number }) =>\n axios.post(url, null, { params: { id: arg } }),\n )\n}\n","export * from './constants'\nexport * from './hooks'\n","import type { TableColumnsType } from 'antd'\nimport { App, Button, Card, Popconfirm, Space } from 'antd'\nimport { useNavigate } from 'react-router-dom'\nimport { Highlight } from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { QueryList, useQueryListStore } from '../../../components/queryList'\nimport { withContext } from '../../../components/toolkitsProvider'\nimport { url } from '../../../features/menu'\nimport { useRemoveMenu } from '../../../features/menu/hooks'\nimport { useMenuList } from '../../../hooks'\nimport type { MenuListItem } from '../../../types'\n\nconst MenuItemList = withContext(\n () => {\n const { t } = useTranslation()\n const { message } = App.useApp()\n const remove = useRemoveMenu()\n const { refetch } = useQueryListStore()\n const { mutate } = useMenuList()\n const navigate = useNavigate()\n\n const columns: TableColumnsType<MenuListItem> = [\n {\n title: '菜单名称',\n dataIndex: 'category',\n key: 'category',\n },\n {\n title: '前端路由',\n dataIndex: 'front_route',\n },\n {\n title: 'Order',\n dataIndex: 'order',\n },\n {\n title: 'Is Common',\n dataIndex: 'is_common',\n key: 'is_common',\n render: value => (value ? '是' : '否'),\n },\n {\n title: '模板名称',\n dataIndex: 'model_name',\n key: 'model_name',\n },\n // {\n // title: '是否预设',\n // dataIndex: 'is_model',\n // key: 'is_model',\n // render: value => (value ? '否' : '是'),\n // },\n {\n title: '操作',\n key: 'action',\n width: 150,\n align: 'center',\n render(_, record) {\n if (record.is_model) {\n return (\n <Space size=\"small\">\n <Button\n type=\"link\"\n onClick={() => {\n navigate(`./update/${record.id}`)\n }}\n >\n {t('global.update')}\n </Button>\n <Popconfirm\n title=\"删除菜单\"\n placement=\"topRight\"\n description={<Highlight texts={[record.category]}>确定要删除菜单 {record.category} 吗?</Highlight>}\n onConfirm={async () => {\n await remove.trigger(record.id)\n refetch(url)\n mutate()\n message.success('删除成功')\n }}\n >\n <Button danger type=\"link\" size=\"small\">\n {t('global.delete')}\n </Button>\n </Popconfirm>\n </Space>\n )\n }\n\n return null\n },\n },\n ]\n\n return (\n <>\n <Card\n title=\"菜单管理\"\n extra={\n <Button\n type=\"primary\"\n onClick={() => {\n navigate('./create')\n }}\n >\n 创建菜单项\n </Button>\n }\n >\n <QueryList<MenuListItem, undefined, MenuListItem[]>\n onePage\n code=\"9900001\"\n rowKey=\"id\"\n url={url}\n columns={columns}\n getDataSource={response => response}\n />\n </Card>\n </>\n )\n },\n { isGlobal: true },\n)\n\nexport default MenuItemList\n","import { Editor } from '@monaco-editor/react'\nimport { App, Button, Card, Form, Input, InputNumber, Switch } from 'antd'\nimport { useNavigate } from 'react-router-dom'\nimport { withContext } from '../../../components/toolkitsProvider'\nimport { FRONTEND_ROUTE_PREFIX } from '../../../constants'\nimport { useCreateMenu } from '../../../features/menu'\nimport { useMenuList } from '../../../hooks'\nimport type { MenuListItem } from '../../../types'\n\ntype FormSchema = Omit<MenuListItem, 'id' | 'permissions'> & { permissions: string }\n\nconst CreateMenuItem = withContext(\n () => {\n const { message } = App.useApp()\n const [form] = Form.useForm<FormSchema>()\n const navigate = useNavigate()\n const { trigger } = useCreateMenu()\n const { mutate } = useMenuList()\n\n const onFinish = async (values: FormSchema) => {\n const { permissions, front_route, ...rest } = values\n await trigger({\n ...rest,\n front_route: FRONTEND_ROUTE_PREFIX + front_route,\n permissions: permissions ? JSON.parse(permissions) : undefined,\n })\n mutate()\n message.success('创建成功', 0.8, () => navigate('..', { relative: 'route' }))\n }\n\n return (\n <Card title=\"创建菜单项\">\n <Form\n scrollToFirstError\n form={form}\n labelCol={{ flex: '120px' }}\n initialValues={{ is_common: false, is_model: false, order: 0 }}\n onFinish={onFinish}\n >\n <Form.Item label=\"菜单项名称\" name=\"category\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"前端路由\" name=\"front_route\" rules={[{ required: true }]}>\n <Input prefix={FRONTEND_ROUTE_PREFIX} />\n </Form.Item>\n <Form.Item label=\"模板名称\" name=\"model_name\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"Is Common\" name=\"is_common\" rules={[{ required: true }]} valuePropName=\"checked\">\n <Switch />\n </Form.Item>\n <Form.Item label=\"Order\" name=\"order\">\n <InputNumber className=\"w-full\" />\n </Form.Item>\n <Form.Item label=\"接口规则\" name=\"permissions\">\n <Editor\n theme=\"vs-dark\"\n height=\"300px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Schema\" name=\"scheme\" rules={[{ required: true }]}>\n <Editor\n theme=\"vs-dark\"\n height=\"600px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Ext\" name=\"ext\">\n <Input.TextArea rows={5} />\n </Form.Item>\n <Form.Item>\n <div className=\"flex justify-center gap-8\">\n <Button type=\"primary\" htmlType=\"submit\">\n 提交\n </Button>\n <Button\n onClick={() => {\n navigate('..', { relative: 'path' })\n }}\n >\n 取消\n </Button>\n </div>\n </Form.Item>\n </Form>\n </Card>\n )\n },\n { isGlobal: true },\n)\n\nexport default CreateMenuItem\n","import { Editor } from '@monaco-editor/react'\nimport { App, Button, Card, Form, Input, InputNumber, Switch } from 'antd'\nimport { useEffect } from 'react'\nimport { useNavigate, useParams } from 'react-router-dom'\nimport useSWR from 'swr'\nimport { useToolkitsStore, withContext } from '../../../components/toolkitsProvider'\nimport { FRONTEND_ROUTE_PREFIX } from '../../../constants'\nimport { useUpdateMenu } from '../../../features/menu'\nimport { useMenuList } from '../../../hooks'\nimport type { JsonData, MenuListItem } from '../../../types'\n\ntype FormSchema = Omit<MenuListItem, 'id' | 'permissions'> & { permissions: string }\n\nconst EditMenuItem = withContext(\n () => {\n const { message } = App.useApp()\n const [form] = Form.useForm<FormSchema>()\n const navigate = useNavigate()\n const { trigger } = useUpdateMenu()\n const params = useParams<'id'>()\n const { mutate } = useMenuList()\n const { axios } = useToolkitsStore(s => s)\n\n const { data, isLoading } = useSWR(`/api/usystem/menu/info?id=${params.id}`, url =>\n axios<JsonData<MenuListItem>>(url).then(response => response.data.data),\n )\n\n const onFinish = async (values: FormSchema) => {\n const { permissions, front_route, ...rest } = values\n\n await trigger({\n ...rest,\n permissions: permissions ? JSON.parse(permissions) : undefined,\n front_route: FRONTEND_ROUTE_PREFIX + front_route,\n id: +params.id!,\n })\n mutate()\n message.success('更新成功', 0.8, () => navigate('../..', { relative: 'route' }))\n }\n\n useEffect(() => {\n const { permissions, front_route, ...rest } = data ?? {}\n const permissionsString = JSON.stringify(permissions || [], null, 2)\n const frontRoute = front_route?.replace(FRONTEND_ROUTE_PREFIX, '')\n form.setFieldsValue({\n ...rest,\n permissions: permissionsString,\n front_route: frontRoute,\n })\n }, [data])\n\n return (\n <Card title=\"更新菜单项\" loading={isLoading}>\n <Form\n scrollToFirstError\n form={form}\n labelCol={{ flex: '120px' }}\n initialValues={{ is_common: false, is_model: false, order: 0 }}\n onFinish={onFinish}\n >\n <Form.Item label=\"菜单项名称\" name=\"category\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"前端路由\" name=\"front_route\" rules={[{ required: true }]}>\n <Input prefix={FRONTEND_ROUTE_PREFIX} />\n </Form.Item>\n <Form.Item label=\"模板名称\" name=\"model_name\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"Is Common\" name=\"is_common\" rules={[{ required: true }]} valuePropName=\"checked\">\n <Switch />\n </Form.Item>\n <Form.Item label=\"Order\" name=\"order\">\n <InputNumber className=\"w-full\" />\n </Form.Item>\n <Form.Item label=\"接口规则\" name=\"permissions\">\n <Editor\n theme=\"vs-dark\"\n height=\"300px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Schema\" name=\"scheme\" rules={[{ required: true }]}>\n <Editor\n theme=\"vs-dark\"\n height=\"600px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Ext\" name=\"ext\">\n <Input.TextArea rows={5} />\n </Form.Item>\n <Form.Item>\n <div className=\"flex justify-center gap-8\">\n <Button type=\"primary\" htmlType=\"submit\">\n 提交\n </Button>\n <Button\n onClick={() => {\n navigate('../..', { relative: 'path' })\n }}\n >\n 取消\n </Button>\n </div>\n </Form.Item>\n </Form>\n </Card>\n )\n },\n { isGlobal: true },\n)\n\nexport default EditMenuItem\n","import { MinusCircleOutlined } from '@ant-design/icons'\nimport { Button, Col, Empty, Form, Input, Row, Select, Typography } from 'antd'\nimport { first, last } from 'lodash-es'\nimport { Fragment, type FC } from 'react'\nimport useSWR from 'swr'\nimport useSWRMutation from 'swr/mutation'\nimport type { Game } from '../../../components/layout'\nimport { useTranslation } from '../../../components/locale'\nimport { useFormModal } from '../../../components/modal'\nimport { useToolkitsStore } from '../../../components/toolkitsProvider'\nimport { PermissionVersion, WILDCARD } from '../../../constants'\nimport type { JsonData } from '../../../types'\nimport { PermissionList } from '../components'\nimport type { PermissionEnumItem, RoleEnumItem, RoleListItem, RoleV1, RoleV2 } from '../types'\n\nconst { Text } = Typography\n\nexport function useAllPermissions() {\n const { axios } = useToolkitsStore(s => s)\n return useSWR('/api/usystem/user/allPermssions', url =>\n axios.get<JsonData<PermissionEnumItem[]>>(url).then(response => response.data.data),\n )\n}\n\nexport function useAllPermissionsV2() {\n const { axios } = useToolkitsStore(s => s)\n return useSWR('/api/usystem/user/allPermissionsV2', url =>\n axios\n .get<\n JsonData<{\n game: Game[]\n permission: PermissionEnumItem[]\n }>\n >(url)\n .then(response => response.data.data),\n )\n}\n\nexport function useAllRoles() {\n const { axios } = useToolkitsStore(s => s)\n return useSWR('/api/usystem/role/all', url =>\n axios.get<JsonData<RoleEnumItem[]>>(url).then(response => response.data.data),\n )\n}\n\nexport function useRole(name: string) {\n const { axios } = useToolkitsStore(s => s)\n const permissionVersion = useToolkitsStore(state => state.permissionVersion)\n return useSWR(\n `/api/usystem/role/${permissionVersion === PermissionVersion.V2 ? 'infoV2' : 'info'}?name=${name}`,\n (url: string) => axios.get<JsonData<RoleV1 | RoleV2>>(url).then(response => response.data.data),\n )\n}\n\nexport function useCreateRole() {\n const { axios, permissionVersion } = useToolkitsStore(s => s)\n return useSWRMutation(\n permissionVersion === PermissionVersion.V2 ? '/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 ) => axios.post(url, arg),\n )\n}\n\nexport function useUpdateRole() {\n const { axios, permissionVersion } = useToolkitsStore(s => s)\n return useSWRMutation(\n permissionVersion === PermissionVersion.V2 ? '/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 ) => axios.post(url, arg),\n )\n}\n\nexport function useRemoveRole() {\n const { axios } = useToolkitsStore(s => s)\n return useSWRMutation(\n '/api/usystem/role/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: number; name: string }\n },\n ) => axios.post(url, arg),\n )\n}\n\nexport function useCreateUser() {\n const { axios } = useToolkitsStore(s => s)\n return useSWRMutation(\n '/api/usystem/user/create',\n (\n url,\n {\n arg,\n }: {\n arg:\n | { name: string; roles: string[] }\n | {\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n }\n },\n ) => axios.post(url, arg),\n )\n}\n\nexport function useUpdateUser() {\n const { axios } = useToolkitsStore(s => s)\n return useSWRMutation(\n '/api/usystem/user/update',\n (\n url,\n {\n arg,\n }: {\n arg:\n | { id: string; name: string; roles: string[] }\n | {\n id: string\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n }\n },\n ) => axios.post(url, arg),\n )\n}\n\nexport function useRemoveUser() {\n const { axios } = useToolkitsStore(s => s)\n return useSWRMutation(\n '/api/usystem/user/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string }\n },\n ) => axios.post(url, arg),\n )\n}\n\nexport const useCreateRoleModal = ({ onSuccess }: { onSuccess?: () => void } = {}) => {\n const { t } = useTranslation()\n const { trigger } = useCreateRole()\n\n return useFormModal<{\n name: string\n permissions: RoleListItem['permissions']\n }>({\n title: t('Role.createTitle'),\n width: '50vw',\n formProps: {\n layout: 'vertical',\n },\n content: (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input addonBefore=\"role_\" />\n </Form.Item>\n <Form.Item name=\"permissions\">\n <PermissionList />\n </Form.Item>\n </>\n ),\n onConfirm: async values => {\n await trigger({\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n onSuccess?.()\n },\n })\n}\n\nexport const useUpdateRoleModal = ({ onSuccess }: { onSuccess?: () => void } = {}) => {\n const { t } = useTranslation()\n const { trigger } = useUpdateRole()\n\n return useFormModal<\n {\n name: string\n permissions: RoleV1['permissions'] | RoleV2['permissions']\n },\n { id: number }\n >({\n title: t('Role.updateTitle'),\n width: '50vw',\n formProps: {\n layout: 'vertical',\n },\n content: (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled addonBefore=\"role_\" />\n </Form.Item>\n <Form.Item name=\"permissions\">\n <PermissionList />\n </Form.Item>\n </>\n ),\n onConfirm: async (values, extraValues) => {\n await trigger({\n id: extraValues?.id,\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n onSuccess?.()\n },\n })\n}\n\nexport const useCreateUserModal = ({ onSuccess }: { onSuccess?: () => void } = {}) => {\n const { t } = useTranslation()\n const { data: roles, isLoading } = useAllRoles()\n const { trigger } = useCreateUser()\n\n return useFormModal<{\n name: string\n roles: string[]\n }>({\n title: t('User.createTitle'),\n width: 600,\n formProps: {\n autoComplete: 'off',\n labelCol: { flex: '80px' },\n },\n content: (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label={t('global.role')} name=\"roles\">\n <Select\n allowClear\n showSearch\n mode=\"multiple\"\n loading={isLoading}\n optionFilterProp=\"label\"\n options={roles?.map(role => ({ label: role.name, value: role.name }))}\n />\n </Form.Item>\n </>\n ),\n onConfirm: async values => {\n await trigger(values)\n onSuccess?.()\n },\n })\n}\n\nexport const useUpdateUserModal = ({ onSuccess }: { onSuccess?: () => void } = {}) => {\n const { t } = useTranslation()\n const { data: roles, isLoading } = useAllRoles()\n const { trigger } = useUpdateUser()\n\n return useFormModal<\n {\n name: string\n roles: string[]\n },\n {\n id: string\n }\n >({\n title: t('User.updateTitle'),\n width: 600,\n formProps: {\n autoComplete: 'off',\n labelCol: { flex: '80px' },\n },\n content: (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled />\n </Form.Item>\n <Form.Item label={t('global.role')} name=\"roles\">\n <Select\n allowClear\n showSearch\n mode=\"multiple\"\n loading={isLoading}\n optionFilterProp=\"label\"\n options={roles?.map(role => ({ label: role.name, value: role.name }))}\n />\n </Form.Item>\n </>\n ),\n onConfirm: async (values, extraValues) => {\n await trigger({ ...values, id: extraValues?.id })\n onSuccess?.()\n },\n })\n}\n\ninterface GroupSelectProps {\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nconst GroupSelect: FC<GroupSelectProps> = props => {\n const { onChange, ...rest } = props\n const { axios } = useToolkitsStore(s => s)\n const { data, isLoading } = useSWR('/api/enum/get?enum=game_group&type=all', path =>\n axios.get<JsonData<string[]>>(path).then(response => response.data.data),\n )\n\n const options = [{ label: '通用', value: WILDCARD }].concat(\n data?.map(group => ({ label: group, value: group })) ?? [],\n )\n\n const onValueChange = (value: string[]) => {\n if (last(value) === WILDCARD) {\n onChange?.([WILDCARD])\n } else if (first(value) === WILDCARD) {\n onChange?.(value.slice(1))\n } else {\n onChange?.(value)\n }\n }\n\n return (\n <Select\n {...rest}\n allowClear\n showSearch\n mode=\"tags\"\n optionFilterProp=\"label\"\n loading={isLoading}\n options={options}\n onChange={onValueChange}\n />\n )\n}\n\ninterface GameSelectProps {\n groups?: string[]\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nconst GameSelect: FC<GameSelectProps> = props => {\n const { groups, onChange, ...rest } = props\n const { axios } = useToolkitsStore(s => s)\n const { data, isLoading } = useSWR(\n groups?.length ? `/api/enum/game_group/get_game_ids?game_groups=${groups.join(',')}` : null,\n path =>\n axios\n .get<\n JsonData<{\n list: {\n id: string\n name: string\n }[]\n }>\n >(path)\n .then(response => response.data.data.list),\n )\n\n const options = data?.map(group => ({ label: group.name, value: group.id }))\n\n const onValueChange = (value: string[]) => {\n if (last(value) === WILDCARD) {\n onChange?.([WILDCARD])\n } else if (first(value) === WILDCARD) {\n onChange?.(value.slice(1))\n } else {\n onChange?.(value)\n }\n }\n\n return (\n <Select\n {...rest}\n allowClear\n showSearch\n optionFilterProp=\"label\"\n mode=\"tags\"\n loading={isLoading}\n options={options}\n onChange={onValueChange}\n />\n )\n}\n\nconst UserModalContentV2 = ({ isCreate }: { isCreate?: boolean }) => {\n const { t } = useTranslation()\n const { axios } = useToolkitsStore(s => s)\n const { data: roles, isLoading: isRolesLoading } = useAllRoles()\n\n const { data: groups, isLoading: isGroupsLoading } = useSWR('/api/enum/get?enum=game_group&type=all', path =>\n axios.get<JsonData<string[]>>(path).then(response => response.data.data),\n )\n\n const groupOptions = [{ label: '通用', value: WILDCARD }].concat(\n groups?.map(group => ({ label: group, value: group })) ?? [],\n )\n\n interface FormSchema {\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n }\n\n return (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} />\n </Form.Item>\n <Form.List name=\"permissions\">\n {(fields, { add, remove }) => (\n <Row gutter={8}>\n <Col span={8} className=\"text-center mb-4\">\n <Text strong>{t('global.projectGroup')}</Text>\n </Col>\n <Col span={10} className=\"text-center mb-4\">\n <Text strong>{t('global.game')}</Text>\n </Col>\n <Col span={6} className=\"text-center mb-4\">\n <Text strong>{t('global.role')}</Text>\n </Col>\n {fields.map(field => (\n <Fragment key={field.key}>\n <Col span={8}>\n <Form.Item noStyle shouldUpdate>\n {({ setFieldValue }) => (\n <Form.Item name={[field.name, 'game_group']}>\n <GroupSelect\n onChange={() => {\n setFieldValue(['permissions', field.name, 'game_ids'], [])\n }}\n />\n </Form.Item>\n )}\n </Form.Item>\n </Col>\n <Col span={10}>\n <Form.Item\n noStyle\n shouldUpdate={(prevValues, nextValues) =>\n prevValues.permissions[field.name]?.game_group !== nextValues.permissions[field.name]?.game_group\n }\n >\n {({ getFieldValue }) => {\n const _groups = getFieldValue(['permissions', field.name, 'game_group'])\n\n return (\n <Form.Item\n name={[field.name, 'game_ids']}\n dependencies={[['permissions', field.name, 'game_group']]}\n rules={[{ required: _groups?.length, message: '请选择游戏' }]}\n >\n <GameSelect groups={_groups} />\n </Form.Item>\n )\n }}\n </Form.Item>\n </Col>\n <Col span={6}>\n <div className=\"flex\">\n <div className=\"flex-1\">\n <Form.Item\n name={[field.name, 'role']}\n rules={[\n { required: true, message: '请选择角色' },\n ({ getFieldValue }) => ({\n validator(_rule, value) {\n const items = getFieldValue('permissions') as FormSchema['permissions']\n const otherItems = items.filter((item, index) => !!item && index !== field.name)\n if (otherItems.some(item => item.role === value)) {\n return Promise.reject(new Error('请勿重复选择角色'))\n }\n return Promise.resolve()\n },\n }),\n ]}\n >\n <Select\n allowClear\n showSearch\n optionFilterProp=\"label\"\n loading={isRolesLoading}\n options={roles?.map(role => ({ label: role.name, value: role.name }))}\n />\n </Form.Item>\n </div>\n <div className=\"w-8 text-center\">\n <Form.Item>\n <MinusCircleOutlined\n onClick={() => {\n remove(field.name)\n }}\n />\n </Form.Item>\n </div>\n </div>\n </Col>\n </Fragment>\n ))}\n {fields.length === 0 && (\n <Col span={24}>\n <Empty className=\"mb-6\" />\n </Col>\n )}\n <Col span={24}>\n <Button block type=\"dashed\" onClick={() => add()}>\n {t('global.add')}\n </Button>\n </Col>\n </Row>\n )}\n </Form.List>\n </>\n )\n}\n\nexport const useCreateUserModalV2 = ({ onSuccess }: { onSuccess?: () => void } = {}) => {\n const { t } = useTranslation()\n const { trigger } = useCreateUser()\n\n return useFormModal<{\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n }>({\n title: t('User.createTitle'),\n width: '50vw',\n formProps: {\n autoComplete: 'off',\n labelCol: { flex: '80px' },\n },\n content: <UserModalContentV2 isCreate />,\n onConfirm: async values => {\n await trigger(values)\n onSuccess?.()\n },\n })\n}\n\nexport const useUpdateUserModalV2 = ({ onSuccess }: { onSuccess?: () => void } = {}) => {\n const { t } = useTranslation()\n const { trigger } = useUpdateUser()\n\n return useFormModal<\n {\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n },\n {\n id: string\n }\n >({\n title: t('User.updateTitle'),\n width: '50vw',\n formProps: {\n autoComplete: 'off',\n labelCol: { flex: '80px' },\n },\n content: <UserModalContentV2 />,\n onConfirm: async (values, extraValues) => {\n await trigger({ ...values, id: extraValues?.id })\n onSuccess?.()\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, useTransition } 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 const [, startTransition] = useTransition()\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 startTransition(() => {\n // 改变展开状态\n setActiveKey((permissions ?? []).map(({ category }) => category))\n })\n }\n }, [])\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 const 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\n return (\n <Collapse\n style={{ width: '100%' }}\n collapsible=\"header\"\n activeKey={activeKey}\n items={items}\n onChange={onCollapseChange}\n />\n )\n}\n\nexport default PermissionCollapse\n","import { Button, Card, Divider, Empty, Select, Skeleton, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect, useState } from 'react'\nimport type { PermissionListPropsBase } from '.'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissionsV2 } from '../../hooks'\nimport type { RoleV2 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\n\nconst { Text } = Typography\nconst { Option } = Select\n\ninterface PermissionWithGameProps extends PermissionListPropsBase {\n value?: RoleV2['permissions']\n onChange?: (checkedValue: RoleV2['permissions']) => void\n}\n\nconst PermissionWithGame: FC<PermissionWithGameProps> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: { permission, game: games } = {}, isLoading, error } = useAllPermissionsV2()\n const [gameList, setGameList] = useState<{ gameId: string; permissions: string[] }[]>([])\n const globalPermissions = permission?.filter(item => item.is_common)\n const gamePermissions = permission?.filter(item => !item.is_common)\n const { t } = useTranslation()\n\n useEffect(() => {\n const list: { gameId: string; permissions: string[] }[] = []\n\n Object.keys(value ?? {}).forEach(key => {\n if (key !== 'global') {\n list.push({ gameId: key, permissions: value?.[key] ?? [] })\n }\n })\n\n setGameList(list)\n }, [value])\n\n if (error) {\n return (\n <div className=\"flex justify-center\">\n <Text type=\"danger\">{t('PermissionList.failedDescription')}</Text>\n </div>\n )\n }\n\n const addGame = () => {\n setGameList(prev => [...prev, { gameId: '', permissions: [] }])\n }\n\n const removeGame = (index: number) => {\n setGameList(prev => prev.filter((_, i) => i !== index))\n }\n\n return (\n <div className=\"flex flex-col w-full\">\n <div className=\"mb-12\">\n <Divider dashed>{t('PermissionList.baseSectionTitle')}</Divider>\n </div>\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value?.global}\n readonly={readonly}\n permissions={globalPermissions}\n expand={expand}\n onChange={newValue => {\n onChange?.({\n ...value,\n global: newValue,\n })\n }}\n />\n </Skeleton>\n <div className=\"my-12\">\n <Divider dashed>{t('PermissionList.gameSectionTitle')}</Divider>\n </div>\n {gameList.map((item, index) => (\n <Card\n title={\n <Space>\n <Text>{t('global.game')}</Text>\n {readonly ? (\n <Text>{games?.find(game => String(game.id) === item.gameId)?.name}</Text>\n ) : (\n <Select\n disabled={readonly}\n value={gameList[index].gameId || undefined}\n style={{ width: '160px' }}\n placeholder={t('PermissionList.gameSelectPlaceholder')}\n onChange={selectedValue => {\n setGameList(pev => {\n const temp = pev.slice()\n temp[index].gameId = selectedValue\n return temp\n })\n }}\n >\n {games?.map(game => (\n <Option\n key={game.id}\n value={game.id}\n disabled={gameList.some(({ gameId }) => gameId === String(game.id))}\n >\n {game.name}\n </Option>\n ))}\n </Select>\n )}\n </Space>\n }\n key={index}\n className=\"mb-6\"\n extra={\n !readonly && (\n <Button\n type=\"link\"\n onClick={() => {\n removeGame(index)\n }}\n >\n {t('PermissionList.removeText')}\n </Button>\n )\n }\n >\n {gameList[index].gameId ? (\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value?.[gameList[index].gameId]}\n readonly={readonly}\n expand={expand}\n permissions={gamePermissions}\n onChange={newValue => {\n onChange?.({\n ...value,\n [gameList[index].gameId]: newValue,\n })\n }}\n />\n </Skeleton>\n ) : (\n <Empty description={t('PermissionList.gameSectionDescription')} />\n )}\n </Card>\n ))}\n {!readonly && (\n <Button block type=\"dashed\" onClick={addGame}>\n {t('PermissionList.addText')}\n </Button>\n )}\n </div>\n )\n}\n\nexport default PermissionWithGame\n","import { Skeleton, Typography } from 'antd'\nimport type { FC } from 'react'\nimport type { PermissionListPropsBase } from '.'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissions } from '../../hooks'\nimport type { RoleV1 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\n\nconst { Text } = Typography\n\ninterface PermissionWithoutGameProps extends PermissionListPropsBase {\n value?: RoleV1['permissions']\n onChange?: (checkedValue: RoleV1['permissions']) => void\n}\n\nconst PermissionWithoutGame: FC<PermissionWithoutGameProps> = 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 PermissionWithoutGame\n","import type { FC } from 'react'\nimport { useToolkitsStore } from '../../../../components/toolkitsProvider'\nimport { PermissionVersion } from '../../../../constants'\nimport type { RoleV1, RoleV2 } from '../../types'\nimport PermissionWithGame from './PermissionWithGame'\nimport PermissionWithoutGame from './PermissionWithoutGame'\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 version = useToolkitsStore(state => state.permissionVersion)\n\n return (\n <>\n {version === PermissionVersion.V2 ? (\n <PermissionWithGame {...props} value={value as RoleV2['permissions']} />\n ) : (\n <PermissionWithoutGame {...props} value={value as RoleV1['permissions']} />\n )}\n </>\n )\n}\n\nexport default PermissionList\n","export { default as PermissionList } from './permissionList'\n","import type { Permission } from '../../../types'\n\nexport interface PermissionEnumItem {\n category: string\n is_common?: boolean\n permissions: Permission[]\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 permissions?: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n}\n","export * from './components'\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, 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, useQueryListStore } from '../../../components/queryList'\nimport { useToolkitsStore, withContext } from '../../../components/toolkitsProvider'\nimport { PermissionVersion } from '../../../constants'\nimport type { UserListItem } from '../../../features/permission'\nimport {\n useCreateUserModal,\n useCreateUserModalV2,\n useRemoveUser,\n useUpdateUserModal,\n useUpdateUserModalV2,\n} from '../../../features/permission'\nimport type { JsonData } from '../../../types'\n\nconst url = '/api/usystem/user/list'\n\nconst UserList: FC = () => {\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const remove = useRemoveUser()\n const { mutate, refetch } = useQueryListStore()\n const { permissionVersion } = useToolkitsStore(s => s)\n const isV1 = permissionVersion === PermissionVersion.V1\n const isV3 = permissionVersion === PermissionVersion.V3\n\n const { show: showCreateModal, modal: createModal } = useCreateUserModal({\n onSuccess() {\n refetch(url, { page: 1 })\n message.success(t('User.createSuccessfully'))\n },\n })\n\n const { show: showUpdateModal, modal: updateModal } = useUpdateUserModal({\n onSuccess() {\n refetch(url)\n message.success(t('User.updateSuccessfully'))\n },\n })\n\n const { show: showCreateModalV2, modal: createModalV2 } = useCreateUserModalV2({\n onSuccess() {\n refetch(url, { page: 1 })\n message.success(t('User.createSuccessfully'))\n },\n })\n\n const { show: showUpdateModalV2, modal: updateModalV2 } = useUpdateUserModalV2({\n onSuccess() {\n refetch(url)\n message.success(t('User.updateSuccessfully'))\n },\n })\n\n const columns = (\n [\n {\n title: t('global.name'),\n dataIndex: 'name',\n key: 'name',\n render(value: string, record) {\n if (isV3) {\n return <Link to={`./${record.id}`}>{value}</Link>\n }\n return value\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n (isV1 || isV3) && {\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: (_, record) => {\n const { name, permissions, roles, id } = record\n return (\n <Space>\n <PermissionButton\n size=\"small\"\n type=\"link\"\n code=\"100003\"\n onClick={() => {\n if (isV3) {\n showUpdateModalV2({\n initialValues: {\n name,\n permissions,\n },\n extraValues: {\n id,\n },\n })\n } else {\n showUpdateModal({\n initialValues: {\n name,\n roles,\n },\n extraValues: {\n id,\n },\n })\n }\n }}\n >\n {t('global.update')}\n </PermissionButton>\n <PermissionButton\n danger\n size=\"small\"\n code=\"100004\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('User.deleteTitle'),\n content: <Highlight texts={[name]}>{t('User.deleteContent', { user: name })}</Highlight>,\n async onOk() {\n await remove.trigger({\n id,\n name,\n })\n mutate<{ List: UserListItem[]; Total: number }>(url, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('User.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n )\n },\n },\n ] as TableColumnsType<UserListItem>\n ).filter(Boolean)\n\n return (\n <>\n <Card\n title={t('global.user')}\n extra={\n <PermissionButton\n type=\"primary\"\n icon={<UserAddOutlined />}\n code=\"100002\"\n onClick={() => {\n if (isV3) {\n showCreateModalV2()\n } else {\n showCreateModal()\n }\n }}\n >\n {t('User.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<UserListItem, { name?: string }, JsonData<{ List: UserListItem[]; Total: number }>>\n code=\"100001\"\n url={url}\n rowKey=\"id\"\n columns={columns}\n getTotal={data => data?.data.Total}\n getDataSource={data => data?.data.List}\n renderForm={\n isV3\n ? form => (\n <Form form={form}>\n <Form.Item label=\"名称\" name=\"name\">\n <Input />\n </Form.Item>\n </Form>\n )\n : undefined\n }\n />\n </Card>\n {createModal}\n {updateModal}\n {createModalV2}\n {updateModalV2}\n </>\n )\n}\n\nexport default withContext(UserList, { isGlobal: true })\n","import { App, Breadcrumb, Card, Descriptions, Table, Tag } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\nimport useSWR from 'swr'\nimport { useGames } from '../../../components/layout'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { useToolkitsStore } from '../../../components/toolkitsProvider'\nimport { WILDCARD } from '../../../constants'\nimport { useUpdateUserModalV2, type UserListItem } from '../../../features/permission'\nimport { usePermission } from '../../../hooks'\nimport type { JsonData } from '../../../types'\n\nconst UserDetail = () => {\n const { message } = App.useApp()\n const params = useParams<'id'>()\n const { t } = useTranslation()\n const { axios, gameApiV2 } = useToolkitsStore(s => s)\n const { data, isLoading, mutate } = useSWR(params.id ? `/api/usystem/user/info?id=${params.id}` : null, url =>\n axios.get<JsonData<UserListItem>>(url).then(res => res.data.data),\n )\n const { data: games } = useGames()\n const { data: roleViewable } = usePermission('200005')\n\n const { show, modal } = useUpdateUserModalV2({\n onSuccess() {\n mutate()\n message.success(t('User.updateSuccessfully'))\n },\n })\n\n const columns = [\n {\n key: 'group',\n title: t('global.projectGroup'),\n dataIndex: 'game_group',\n render(value: string[]) {\n return value.map(item => {\n return <Tag key={item}>{item === WILDCARD ? '通用' : item}</Tag>\n })\n },\n },\n {\n key: 'game',\n title: t('global.game'),\n dataIndex: 'game_ids',\n render(value: string[]) {\n return value.map(item => {\n const matchedGame = games?.find(game => String(gameApiV2 ? game.game_id : game.id) === item)\n return <Tag key={item}>{matchedGame?.name ?? (item === WILDCARD ? '通用' : item)}</Tag>\n })\n },\n },\n {\n key: 'role',\n title: t('global.role'),\n dataIndex: 'role',\n render(value: string) {\n return roleViewable ? (\n <Link to={`../../role/${value}`} relative=\"path\">\n {value}\n </Link>\n ) : (\n value\n )\n },\n },\n ]\n\n return (\n <>\n <Breadcrumb\n className=\"mb-6\"\n items={[\n {\n key: '1',\n title: (\n <Link to=\"..\" relative=\"path\">\n {t('global.user')}\n </Link>\n ),\n },\n {\n key: '2',\n title: '用户详情',\n },\n ]}\n />\n <Card\n title=\"用户详情\"\n loading={isLoading}\n extra={\n <PermissionButton\n code=\"100003\"\n onClick={() => {\n show({\n initialValues: {\n name: data?.name,\n permissions: data?.permissions,\n },\n extraValues: {\n id: data!.id,\n },\n })\n }}\n >\n {t('global.update')}\n </PermissionButton>\n }\n >\n <Descriptions bordered column={1}>\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.role')}>\n <Table rowKey=\"role\" columns={columns} dataSource={data?.permissions} pagination={false} />\n </Descriptions.Item>\n </Descriptions>\n </Card>\n {modal}\n </>\n )\n}\n\nexport default UserDetail\n","import { UsergroupAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Space } from 'antd'\nimport { produce } from 'immer'\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 { useToolkitsStore, withContext } from '../../../components/toolkitsProvider'\nimport { PermissionVersion } from '../../../constants'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../../../features/permission'\nimport { useCreateRoleModal, useRemoveRole, useUpdateRoleModal } from '../../../features/permission'\nimport { usePermission } from '../../../hooks'\nimport type { JsonData } from '../../../types'\n\nconst url = '/api/usystem/role/list'\n\nconst RoleList = () => {\n const { modal, message } = App.useApp()\n const { data: viewable } = usePermission('200005')\n const { t } = useTranslation()\n const { axios, permissionVersion } = useToolkitsStore(s => s)\n const { mutate, refetch } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useCreateRoleModal({\n onSuccess() {\n refetch(url, { page: 1 })\n message.success(t('Role.createSuccessfully'))\n },\n })\n const { show: showUpdateModal, modal: updateModal } = useUpdateRoleModal({\n onSuccess() {\n mutate(url)\n message.success(t('Role.updateSuccessfully'))\n },\n })\n\n const remove = useRemoveRole()\n\n const handleUpdateBtnClick = async (record: RoleListItem) => {\n const response = await axios.get<JsonData<RoleV1 | RoleV2>>(\n `/api/usystem/role/info${permissionVersion === PermissionVersion.V2 ? 'V2' : ''}?name=${record.name}`,\n )\n\n const data = response.data.data\n\n showUpdateModal({\n initialValues: {\n permissions: data?.permissions,\n name: data?.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: data?.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 code=\"200003\"\n size=\"small\"\n type=\"link\"\n onClick={async () => {\n handleUpdateBtnClick(record)\n }}\n >\n {t('global.update')}\n </PermissionButton>\n <PermissionButton\n danger\n code=\"200004\"\n size=\"small\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('Role.deleteTitle'),\n content: (\n <Highlight texts={[record.name]}>{t('Role.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 }>(url, 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('Role.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 type=\"primary\"\n code=\"200002\"\n icon={<UsergroupAddOutlined />}\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('Role.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<RoleListItem, undefined, JsonData<{ List: RoleListItem[]; Total: number }>>\n rowKey=\"name\"\n columns={columns}\n code=\"200001\"\n url={url}\n getTotal={data => data?.data.Total}\n getDataSource={data => data?.data.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default withContext(RoleList, {\n isGlobal: true,\n})\n","import { App, Breadcrumb, Card, Descriptions, Skeleton } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { withContext } from '../../../components/toolkitsProvider'\nimport { PermissionList, useRole, useUpdateRoleModal } from '../../../features/permission'\n\nconst RoleDetail = () => {\n const { message } = App.useApp()\n const params = useParams()\n const { t } = useTranslation()\n const { data, isLoading, mutate } = useRole(params.name as string)\n const { show, modal } = useUpdateRoleModal({\n onSuccess() {\n mutate()\n message.success(t('Role.updateSuccessfully'))\n },\n })\n\n const handleUpdateBtnClick = async () => {\n show({\n initialValues: {\n permissions: data?.permissions,\n name: data?.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: data!.id,\n },\n })\n }\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: 24 }}\n items={[\n {\n key: '1',\n title: (\n <Link to=\"..\" relative=\"path\">\n {t('global.role')}\n </Link>\n ),\n },\n {\n key: '2',\n title: t('RoleDetail.title'),\n },\n ]}\n />\n <Card\n title={t('RoleDetail.title')}\n extra={\n <PermissionButton code=\"200003\" onClick={handleUpdateBtnClick}>\n {t('global.update')}\n </PermissionButton>\n }\n >\n <Skeleton loading={isLoading}>\n <Descriptions column={2} layout=\"vertical\" className=\"mb-6\">\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 {modal}\n </>\n )\n}\n\nexport default withContext(RoleDetail, { isGlobal: true })\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 &nbsp;{t('global.add')}\n </Tag>\n ))}\n </Space>\n )\n}\n\nexport default DynamicTags\n","import { Typography } from 'antd'\nimport type { ParagraphProps } from 'antd/es/typography/Paragraph'\nimport type { FC } from 'react'\nimport { useState } from 'react'\n\nexport type ExpandableParagraphProps = Omit<ParagraphProps, 'ellipsis' | 'className'>\n\nconst ExpandableParagraph: FC<ExpandableParagraphProps> = props => {\n const { children, ...restProps } = props\n const [expanded, setExpanded] = useState(false)\n\n return (\n <Typography.Paragraph\n {...restProps}\n className=\"mb-0\"\n ellipsis={{\n rows: 2,\n expandable: 'collapsible',\n expanded,\n onExpand: (_, info) => {\n setExpanded(info.expanded)\n },\n }}\n >\n {children}\n </Typography.Paragraph>\n )\n}\n\nexport default ExpandableParagraph\n","import 'animate.css'\nimport './styles/index.css'\nexport * from './components/dynamicTags'\nexport * from './components/expandableParagraph'\nexport * from './components/filterFormWrapper'\nexport * from './components/highlight'\nexport * from './components/infiniteList'\nexport * from './components/layout'\nexport * from './components/modal'\nexport * from './components/navMenu'\nexport * from './components/permissionButton'\nexport * from './components/queryList'\nexport * from './components/requireGame'\nexport * from './components/requirePermission'\nexport * from './components/toolkitsProvider'\nexport * from './components/userWidget'\nexport * from './constants'\nexport * from './hooks'\nexport { default as menuRoutes } from './pages/menu'\nexport { default as NotFound } from './pages/notFound'\nexport { default as OperationLogList } from './pages/operationLogList'\nexport { default as permissionRoutes } from './pages/permission'\nexport { default as SignIn } from './pages/signIn'\nexport * from './types'\nexport * from './utils'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { Button, Form, Result, Spin, Table } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { TableProps } from 'antd/es/table'\nimport type { AxiosHeaderValue } from 'axios'\nimport { last } from 'lodash-es'\nimport qs from 'query-string'\nimport type { ReactElement, ReactNode, Ref } from 'react'\nimport { cloneElement, forwardRef, useEffect, useImperativeHandle, useState } from 'react'\nimport type { Arguments, MutatorCallback, MutatorOptions } from 'swr'\nimport useSWRInfinite from 'swr/infinite'\nimport { usePermission } from '../../hooks'\nimport type { FilterFormWrapperProps } from '../filterFormWrapper'\nimport { FilterFormWrapper } from '../filterFormWrapper'\nimport { useTranslation } from '../locale'\nimport { useToolkitsStore } from '../toolkitsProvider'\n\ninterface SWRInfiniteRevalidateFn<Data = any> {\n (data: Data, key: Arguments): boolean\n}\n\ntype InfiniteKeyedMutator<Data> = <MutationData = Data>(\n data?: Data | Promise<Data | undefined> | MutatorCallback<Data>,\n opts?: boolean | SWRInfiniteMutatorOptions<Data, MutationData>,\n) => Promise<Data | MutationData | undefined>\n\ninterface SWRInfiniteMutatorOptions<Data = any, MutationData = Data>\n extends Omit<MutatorOptions<Data, MutationData>, 'revalidate'> {\n revalidate?: boolean | SWRInfiniteRevalidateFn<Data extends unknown[] ? Data[number] : never>\n}\n\nexport interface InfiniteListRef<Item = any, Values = any, Data = any> {\n data: Data[] | undefined\n dataSource: Item[] | undefined\n form: FormInstance<Values>\n mutate: InfiniteKeyedMutator<Data[]>\n size: number\n setSize: (size: number | ((_size: number) => number)) => Promise<Data[] | undefined>\n}\n\nexport interface InfiniteListProps<Item, Values, Data>\n extends Pick<TableProps<Item>, 'columns' | 'rowKey' | 'tableLayout' | 'expandable' | 'rowSelection' | 'bordered'>,\n Pick<FilterFormWrapperProps, 'buttonsAlign' | 'showReset'> {\n url: string\n getRowKey?: (response: Data | undefined, pageIndex: number) => any\n getDataSource: (data: Data[] | undefined) => Item[]\n form?: FormInstance<Values>\n code?: string\n headers?: { [key: string]: AxiosHeaderValue } | ((form: FormInstance<Values>) => { [key: string]: AxiosHeaderValue })\n renderForm?: (form: FormInstance<Values>) => ReactElement\n params: (values: Values, pageIndex: number, rowKey?: string) => Record<any, any>\n getHasMore?: (data: Data | undefined) => boolean\n tableExtra?: ReactNode | ((form: FormInstance<Values>, data?: Item[]) => ReactNode)\n footer?: (data: Data[] | undefined) => ReactNode\n}\n\nconst InternalInfiniteList = <Item extends AnyObject, Values extends object | undefined = undefined, Data = any>(\n props: InfiniteListProps<Item, Values, Data>,\n ref: Ref<InfiniteListRef<Item, Values, Data>>,\n) => {\n const {\n code,\n url,\n tableExtra,\n headers,\n getRowKey,\n getDataSource,\n getHasMore,\n renderForm,\n params,\n footer,\n form,\n buttonsAlign,\n showReset,\n ...tableProps\n } = props\n const { t } = useTranslation()\n const [_form] = Form.useForm<Values>(form)\n const [isValid, setIsValid] = useState(false)\n const [formValues, setFormValues] = useState<Values>()\n const { axios } = useToolkitsStore(s => s)\n\n const getKey = (pageIndex: number, previousPageData: Data) => {\n if (!isValid) return null\n\n const rowKey = getRowKey?.(previousPageData, pageIndex)\n const args = params(formValues as Values, pageIndex, rowKey)\n const queryString = qs.stringify(args)\n return queryString ? `${url}?${qs.stringify(args)}` : url\n }\n\n const _headers = typeof headers === 'function' ? headers(_form) : headers\n const { data: accessible, isLoading } = usePermission(code)\n\n const {\n data,\n size,\n setSize,\n isValidating: isListValidating,\n mutate,\n } = useSWRInfinite(\n getKey,\n async arg => {\n const response = await axios.get<Data>(arg, { headers: _headers })\n return 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 getHasMore !== 'undefined' ? !getHasMore(last(data)) : false\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 setIsValid(true)\n mutate()\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 mutate()\n } catch (error) {\n setSize(0)\n }\n }\n\n useEffect(() => {\n setTimeout(() => {\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 }, 300)\n }, [accessible])\n\n useImperativeHandle(ref, () => ({\n data,\n dataSource,\n form: _form,\n mutate,\n size,\n setSize,\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 renderFooter = footer && (() => footer(data))\n\n const formRenderer =\n typeof renderForm === 'function' ? (\n <FilterFormWrapper\n showReset={showReset}\n buttonsAlign={buttonsAlign}\n isConfirming={isListValidating}\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 // 屏蔽 Form 组件的警告(Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?)\n <Form form={_form} />\n )\n\n return (\n <>\n {formRenderer}\n {typeof tableExtra === 'function' ? tableExtra(_form, dataSource) : tableExtra}\n <Table {...tableProps} dataSource={dataSource} loading={isLoadingMore} pagination={false} footer={renderFooter} />\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\nconst InfiniteList = forwardRef(InternalInfiniteList) as <\n Item extends AnyObject = AnyObject,\n Values extends object | undefined = undefined,\n Data = any,\n>(\n props: InfiniteListProps<Item, Values, Data> & { ref?: Ref<InfiniteListRef<Item, Data>> },\n) => ReactElement\n\nexport default InfiniteList\n","import { Result, Spin } from 'antd'\nimport type { AxiosRequestConfig } from 'axios'\nimport type { FC, PropsWithChildren } from 'react'\nimport { usePermission } from '../../hooks'\nimport { useTranslation } from '../locale'\n\nexport interface RequirePermissionProps {\n code: string\n config?: AxiosRequestConfig\n}\n\nconst RequirePermission: FC<PropsWithChildren<RequirePermissionProps>> = props => {\n const { code, config, children } = props\n const { data: accessible, isValidating } = usePermission(code, config)\n const { t } = useTranslation()\n\n if (isValidating) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status=\"403\" subTitle={t('global.noEntitlement')} />\n }\n\n return <>{children}</>\n}\n\nexport default RequirePermission\n","import { lazy } from 'react'\nimport { Route, Routes } from 'react-router-dom'\n\nconst MenuItemList = lazy(() => import('./menuItemList'))\nconst CreateMenuItem = lazy(() => import('./createMenuItem'))\nconst UpdateMenuItem = lazy(() => import('./updateMenuItem'))\n\nexport default (\n <Routes>\n <Route index element={<MenuItemList />} />\n <Route path=\"create\" element={<CreateMenuItem />} />\n <Route path=\"update/:id\" element={<UpdateMenuItem />} />\n </Routes>\n)\n","import { Button, Result } from 'antd'\nimport type { FC } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from '../../components/locale'\n\ninterface NotFoundProps {\n redirectUrl?: string\n}\n\nconst NotFound: FC<NotFoundProps> = props => {\n const { redirectUrl } = props\n const navigate = useNavigate()\n const { t } = useTranslation()\n\n return (\n <div className=\"h-screen flex justify-center items-center\">\n <Result\n status=\"404\"\n title=\"404\"\n subTitle={t('NotFound.subTitle')}\n extra={\n redirectUrl && (\n <Button\n type=\"primary\"\n onClick={() => {\n navigate(redirectUrl)\n }}\n >\n {t('NotFound.buttonText')}\n </Button>\n )\n }\n />\n </div>\n )\n}\n\nexport default NotFound\n","import { Card, Form, Input, Select } from 'antd'\nimport type { ColumnsType } from 'antd/es/table'\nimport dayjs from 'dayjs'\nimport type { FC } from 'react'\nimport { ExpandableParagraph } from '../../components/expandableParagraph'\nimport { useTranslation } from '../../components/locale'\nimport { QueryList } from '../../components/queryList'\nimport { withContext } from '../../components/toolkitsProvider'\nimport type { JsonData } from '../../types'\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 JsonData<{\n List: OperationLogListItem[]\n Total: number\n }>\n >\n rowKey=\"id\"\n code=\"300001\"\n columns={columns}\n tableLayout=\"fixed\"\n url=\"/api/usystem/log/list\"\n getTotal={data => data?.data?.Total}\n getDataSource={data => data?.data?.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 withContext(OperationLogList, { isGlobal: true })\n","import { lazy } from 'react'\nimport { Navigate, Route, Routes } from 'react-router-dom'\n\nconst UserList = lazy(() => import('./userList'))\nconst UserDetail = lazy(() => import('./userDetail'))\nconst RoleList = lazy(() => import('./roleList'))\nconst RoleDetail = lazy(() => import('./roleDetail'))\n\nexport default (\n <Routes>\n <Route index element={<Navigate to=\"user\" />} />\n <Route path=\"user\" element={<UserList />} />\n <Route path=\"user/:id\" element={<UserDetail />} />\n <Route path=\"role\" element={<RoleList />} />\n <Route path=\"role/:name\" element={<RoleDetail />} />\n </Routes>\n)\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/locale/context.ts"],"names":[],"mappings":";;;AAKA,IAAM,aAAA,GAAgB,cAA8C,KAAS,CAAA,CAAA;AAE7E,IAAO,eAAQ,GAAA","file":"context.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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/locale/en_GB.ts"],"names":[],"mappings":";AAEA,IAAM,MAAiB,GAAA;AAAA,EACrB,MAAQ,EAAA;AAAA,IACN,aAAe,EAAA,kDAAA;AAAA,IACf,IAAM,EAAA,MAAA;AAAA,IACN,YAAc,EAAA,eAAA;AAAA,IACd,SAAW,EAAA,WAAA;AAAA,IACX,MAAQ,EAAA,QAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,MAAQ,EAAA,QAAA;AAAA,IACR,SAAW,EAAA,YAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,UAAA;AAAA,IACV,QAAU,EAAA,UAAA;AAAA,IACV,KAAO,EAAA,OAAA;AAAA,IACP,MAAQ,EAAA,QAAA;AAAA,IACR,KAAO,EAAA,OAAA;AAAA,IACP,OAAS,EAAA,SAAA;AAAA,IACT,QAAU,EAAA,UAAA;AAAA,IACV,GAAK,EAAA,KAAA;AAAA,IACL,MAAQ,EAAA,SAAA;AAAA,IACR,YAAc,EAAA,eAAA;AAAA,IACd,IAAM,EAAA;AAAA,GACR;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,KAAO,EAAA,gBAAA;AAAA,IACP,UAAY,EAAA,qBAAA;AAAA,IACZ,eAAiB,EAAA,oBAAA;AAAA,IACjB,YAAc,EAAA,8EAAA;AAAA,IACd,OAAS,EAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,QAAU,EAAA,qCAAA;AAAA,IACV,UAAY,EAAA;AAAA,GACd;AAAA,EACA,iBAAmB,EAAA;AAAA,IACjB,WAAa,EAAA,QAAA;AAAA,IACb,SAAW,EAAA;AAAA,GACb;AAAA,EACA,SAAW,EAAA;AAAA,IACT,WAAa,EAAA,SAAA;AAAA,IACb,UAAY,EAAA;AAAA,GACd;AAAA,EACA,UAAY,EAAA;AAAA,IACV,KAAO,EAAA,cAAA;AAAA,IACP,WAAa,EAAA;AAAA,GACf;AAAA,EACA,WAAa,EAAA;AAAA,IACX,WAAa,EAAA;AAAA,GACf;AAAA,EACA,UAAY,EAAA;AAAA,IACV,WAAa,EAAA;AAAA,GACf;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,WAAa,EAAA,aAAA;AAAA,IACb,kBAAoB,EAAA,2BAAA;AAAA,IACpB,WAAa,EAAA,aAAA;AAAA,IACb,kBAAoB,EAAA,2BAAA;AAAA,IACpB,WAAa,EAAA,aAAA;AAAA,IACb,aAAe,EAAA,mDAAA;AAAA,IACf,kBAAoB,EAAA;AAAA,GACtB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,WAAa,EAAA,aAAA;AAAA,IACb,kBAAoB,EAAA,2BAAA;AAAA,IACpB,WAAa,EAAA,aAAA;AAAA,IACb,kBAAoB,EAAA,2BAAA;AAAA,IACpB,WAAa,EAAA,aAAA;AAAA,IACb,aAAe,EAAA,mDAAA;AAAA,IACf,kBAAoB,EAAA;AAAA,GACtB;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,iBAAmB,EAAA,+BAAA;AAAA,IACnB,gBAAkB,EAAA,4BAAA;AAAA,IAClB,gBAAkB,EAAA,kBAAA;AAAA,IAClB,sBAAwB,EAAA,4BAAA;AAAA,IACxB,qBAAuB,EAAA,4BAAA;AAAA,IACvB,UAAY,EAAA,QAAA;AAAA,IACZ,OAAS,EAAA;AAAA,GACX;AAAA,EACA,UAAY,EAAA;AAAA,IACV,KAAO,EAAA;AAAA,GACT;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,WAAa,EAAA,YAAA;AAAA,IACb,YAAc,EAAA,wBAAA;AAAA,IACd,YAAc,EAAA;AAAA;AAElB,CAAA;AAEA,IAAO,aAAQ,GAAA","file":"en_GB.js","sourcesContent":["import type { Locale } from '.'\n\nconst locale: Locale = {\n global: {\n noEntitlement: 'No permission, please contact the administrator.',\n name: 'Name',\n creationTime: 'Creation Time',\n operation: 'Operation',\n update: 'Update',\n edit: 'Edit',\n delete: 'Delete',\n selectAll: 'Select All',\n game: 'Game',\n user: 'User',\n role: 'Role',\n username: 'Username',\n password: 'Password',\n label: 'Label',\n method: 'Method',\n route: 'Route',\n request: 'Request',\n response: 'Response',\n add: 'Add',\n signIn: 'Sign In',\n projectGroup: 'Project Group',\n view: 'View',\n },\n SignIn: {\n title: 'Sign In Method',\n thirdParty: 'Third party sign in',\n signInWithIDass: 'Sign in with IDass',\n unregistered: 'You are not yet registered on the platform, please contact the administrator',\n welcome: 'Welcome',\n },\n NotFound: {\n subTitle: 'The page you visited does not exist',\n buttonText: 'Return to homepage',\n },\n FilterFormWrapper: {\n confirmText: 'Search',\n resetText: 'Reset',\n },\n FormModal: {\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n },\n GameSelect: {\n label: 'Current Game',\n placeholder: 'Please select a game',\n },\n RequireGame: {\n description: 'Please select a game',\n },\n UserWidget: {\n signOutText: 'Sign Out',\n },\n User: {\n createTitle: 'Create User',\n createSuccessfully: 'User created successfully',\n updateTitle: 'Update User',\n updateSuccessfully: 'User updated successfully',\n deleteTitle: 'Delete User',\n deleteContent: 'Are you sure you want to delete user <%= user %>?',\n deleteSuccessfully: 'User deleted successfully',\n },\n Role: {\n createTitle: 'Create Role',\n createSuccessfully: 'Role created successfully',\n updateTitle: 'Update Role',\n updateSuccessfully: 'Role updated successfully',\n deleteTitle: 'Delete Role',\n deleteContent: 'Are you sure you want to delete role <%= role %>?',\n deleteSuccessfully: 'Role deleted successfully',\n },\n PermissionList: {\n failedDescription: 'Failed to get permission list',\n baseSectionTitle: 'Platform Basic Permissions',\n gameSectionTitle: 'Game Permissions',\n gameSectionDescription: 'Please select a game first',\n gameSelectPlaceholder: 'Please select a game first',\n removeText: 'Remove',\n addText: 'Add Game Permissions',\n },\n RoleDetail: {\n title: 'Role Details',\n },\n InfiniteList: {\n loadingText: 'Loading...',\n reachEndText: \"You've reached the end\",\n loadMoreText: 'Load more',\n },\n}\n\nexport default locale\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pages/signIn/index.tsx","../src/components/toolkitsProvider/ToolkitsProvider.tsx","../src/components/locale/hooks.ts"],"names":["locale"],"mappings":";;;;;;;;;;;;AAgB8B,MAG3B,EAAA,CAAE,CAAQ,GAAA,MAAA;AAAA,EACX,YAAc,EAAA,KAAA;AAAA,EACd,eAAkB,GAAA;AAChB,IAAI,GAAA,CAAA,EAAE,YAAc,EAAA,IAAA,EAAM,CAAA;AAAA;AAE9B,CAAE,CAAA;ACZF,IAAM,eAAA,GAAkB,cAAoC,IAAI,CAAA;AAEzD,SAAS,iBAAoB,QAA0C,EAAA;AAC5E,EAAM,MAAA,KAAA,GAAQ,WAAW,eAAe,CAAA;AACxC,EAAA,IAAI,CAAC,KAAA,EAAa,MAAA,IAAI,MAAM,sCAAsC,CAAA;AAClE,EAAO,OAAA,QAAA,CAAS,OAAO,QAAQ,CAAA;AACjC;AAoCA,IAAI,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;;;ACnCpC,SAAS,cAAiB,GAAA;AAC/B,EAAA,MAAMA,OAAS,GAAA,gBAAA,CAAiB,CAAS,KAAA,KAAA,KAAA,CAAM,MAAM,CAAA;AAErD,EAAA,MAAM,CAAI,GAAA,OAAA;AAAA,IACR,MAAM,CAAC,GAAoB,EAAA,IAAA,KACzB,IAAIA,OAAQ,EAAA,GAAG,CAAI,GAAA,QAAA,CAAS,IAAIA,OAAQ,EAAA,GAAa,CAAC,CAAA,CAAE,IAAI,CAAI,GAAA,GAAA;AAAA,IAClE,CAACA,OAAM;AAAA,GACT;AAEA,EAAA,OAAO,EAAE,CAAE,EAAA;AACb","file":"hooks.js","sourcesContent":["import { Alert, Button, Divider, Form, Input, Space, Spin, Typography } from 'antd'\nimport type { FC, ReactNode } from 'react'\nimport { Navigate } from 'react-router-dom'\nimport useSWR from 'swr'\nimport { create } from 'zustand'\nimport { useTranslation } from '../../components/locale'\nimport { Logo } from '../../components/logo'\nimport { useToolkitsStore } from '../../components/toolkitsProvider'\nimport { SSO_URL } from '../../constants'\nimport type { JsonData } from '../../types'\nimport backgroundUrl from './background.svg'\n\ninterface SignInProps {\n extra?: ReactNode\n}\n\nexport const useSignInStore = create<{\n unregistered: boolean // 是否是未注册用户\n setUnregistered: () => void\n}>()(set => ({\n unregistered: false,\n setUnregistered() {\n set({ unregistered: true })\n },\n}))\n\nconst SignIn: FC<SignInProps> = props => {\n const { extra } = props\n const { unregistered } = useSignInStore()\n const {\n title: { text },\n } = useToolkitsStore(s => s)\n\n // 当路由模式为 hash 模式时,Idaas 重定向会把 ticket 放到 hash 前面,此时的登录页的地址为标准的 URL 结构 \"/?ticket=xxx#/sign_in\"。\n // 然而 react-router-dom 无法从这种地址中获取到查询字符串,需要使用原生的 window.location.search。\n const queryParams = new URLSearchParams(window.location.search)\n const { token, setToken, axios, mainPagePath } = useToolkitsStore(state => state)\n const { t } = useTranslation()\n\n const { isLoading } = useSWR(\n queryParams.has('ticket') ? `/api/usystem/user/login?ticket=${queryParams.get('ticket')}` : null,\n url => axios.get<JsonData<{ token: string }>>(url).then(res => res.data.data),\n {\n onSuccess: data => {\n if (data) {\n setToken(data.token)\n }\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 = mainPagePath\n\n if (!hashMode) {\n return <Navigate replace to={mainPagePath} />\n }\n\n // 移除 ticket\n window.location.href = `${window.location.origin}${window.location.pathname}#${path}`\n\n return null\n }\n\n return (\n <div className=\"w-screen h-screen relative flex overflow-hidden\">\n <div className=\"absolute top-16 right-16 z-10\">{extra}</div>\n <div className=\"absolute left-14 top-6\">\n <Space align=\"center\">\n <Logo width={48} />\n <span className=\"text-2xl font-bold\">{text}</span>\n </Space>\n </div>\n <div className=\"flex-1 flex justify-center items-center bg-slate-50\">\n <img src={backgroundUrl} alt=\"background\" className=\"w-10/12\" />\n </div>\n <div className=\"w-[650px] relative top-0 left-0 right-0 bottom-0\">\n <div className=\"absolute top-1/2 -translate-y-1/2 left-0 right-0\">\n <div className=\"-translate-y-10 px-36\">\n <div className=\"flex flex-col justify-center\">\n <div className=\"h-10\">\n {unregistered && <Alert banner closable message={t('SignIn.unregistered')} type=\"error\" />}\n </div>\n <Typography.Title level={2}>{t('SignIn.welcome')}</Typography.Title>\n <div className=\"mt-4\">\n <Form layout=\"vertical\" autoComplete=\"off\">\n <Form.Item label={t('global.username')} name=\"username\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label={t('global.password')} name=\"password\" rules={[{ required: true }]}>\n <Input.Password />\n </Form.Item>\n <Form.Item>\n <Button block type=\"primary\" shape=\"round\" htmlType=\"submit\">\n {t('global.signIn')}\n </Button>\n </Form.Item>\n </Form>\n </div>\n <Divider plain dashed>\n {t('SignIn.thirdParty')}\n </Divider>\n <div className=\"flex justify-center items-center\">\n <Button\n block\n shape=\"round\"\n href={`${SSO_URL}/logout?service=${SSO_URL}/login?service=${window.location.href}`}\n target=\"_self\"\n >\n <Logo width={18} />\n {t('SignIn.signInWithIDass')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default SignIn\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { App } from 'antd'\nimport type { ComponentType, FC, PropsWithChildren } from 'react'\nimport { createContext, useContext, useRef } from 'react'\nimport { useStore } from 'zustand'\nimport type { ToolkitsState } from '../../stores'\nimport { createToolkitsStore } from '../../stores'\nimport type { ContextSlice } from '../../stores/context'\nimport { Interceptors } from '../interceptors'\n\ntype ToolkitsStore = ReturnType<typeof createToolkitsStore>\n\nconst ToolkitsContext = createContext<ToolkitsStore | null>(null)\n\nexport function useToolkitsStore<T>(selector: (state: ToolkitsState) => T): T {\n const store = useContext(ToolkitsContext)\n if (!store) throw new Error('Missing ToolkitsProvider in the tree')\n return useStore(store, selector)\n}\n\nexport type ToolkitsProviderProps = PropsWithChildren<Partial<Omit<ContextSlice, 'setContext'>>>\n\nconst ToolkitsProvider: FC<ToolkitsProviderProps> = props => {\n const { children, ...restProps } = props\n const storeRef = useRef<ToolkitsStore>()\n const parentState = useContext(ToolkitsContext)?.getState()\n\n if (!storeRef.current) {\n storeRef.current = createToolkitsStore({ ...parentState, ...restProps })\n }\n\n if (!storeRef.current.getState().signInPath) {\n throw new Error('ToolkitsProvider: 请配置 \"signInPath\"')\n }\n\n return (\n <ToolkitsContext.Provider value={storeRef.current}>\n <App>\n <Interceptors>{children}</Interceptors>\n </App>\n </ToolkitsContext.Provider>\n )\n}\n\nexport const withContext = (Component: ComponentType, providerProps: Omit<ToolkitsProviderProps, 'children'>) => {\n return (props: any) => {\n return (\n <ToolkitsProvider {...providerProps}>\n <Component {...props} />\n </ToolkitsProvider>\n )\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ToolkitsProvider.displayName = 'ToolkitsProvider'\n}\n\nexport default ToolkitsProvider\n","import { get, has, template } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useToolkitsStore } from '../toolkitsProvider'\nimport type { Locale } from './index'\n\ntype Join<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never\n\ntype Paths<T, D extends number = 10> = [D] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K]>> : never\n }[keyof T]\n : ''\n\nexport function useTranslation() {\n const locale = useToolkitsStore(state => state.locale)\n\n const t = useMemo(\n () => (key: Paths<Locale>, data?: Record<string, unknown>) =>\n has(locale, key) ? template(get(locale, key as string))(data) : key,\n [locale],\n )\n\n return { t }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pages/signIn/index.tsx","../src/components/toolkitsProvider/ToolkitsProvider.tsx","../src/components/locale/hooks.ts"],"names":["locale"],"mappings":";;;;;;;;;;;;AAgB8B,MAG3B,EAAA,CAAE,CAAQ,GAAA,MAAA;AAAA,EACX,YAAc,EAAA,KAAA;AAAA,EACd,eAAkB,GAAA;AAChB,IAAI,GAAA,CAAA,EAAE,YAAc,EAAA,IAAA,EAAM,CAAA;AAAA;AAE9B,CAAE,CAAA;ACZF,IAAM,eAAA,GAAkB,cAAoC,IAAI,CAAA;AAEzD,SAAS,iBAAoB,QAA0C,EAAA;AAC5E,EAAM,MAAA,KAAA,GAAQ,WAAW,eAAe,CAAA;AACxC,EAAA,IAAI,CAAC,KAAA,EAAa,MAAA,IAAI,MAAM,sCAAsC,CAAA;AAClE,EAAO,OAAA,QAAA,CAAS,OAAO,QAAQ,CAAA;AACjC;AAoCA,IAAI,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;;;ACnCpC,SAAS,cAAiB,GAAA;AAC/B,EAAA,MAAMA,OAAS,GAAA,gBAAA,CAAiB,CAAS,KAAA,KAAA,KAAA,CAAM,MAAM,CAAA;AAErD,EAAA,MAAM,CAAI,GAAA,OAAA;AAAA,IACR,MAAM,CAAC,GAAoB,EAAA,IAAA,KACzB,IAAIA,OAAQ,EAAA,GAAG,CAAI,GAAA,QAAA,CAAS,IAAIA,OAAQ,EAAA,GAAa,CAAC,CAAA,CAAE,IAAI,CAAI,GAAA,GAAA;AAAA,IAClE,CAACA,OAAM;AAAA,GACT;AAEA,EAAA,OAAO,EAAE,CAAE,EAAA;AACb","file":"index.js","sourcesContent":["import { Alert, Button, Divider, Form, Input, Space, Spin, Typography } from 'antd'\nimport type { FC, ReactNode } from 'react'\nimport { Navigate } from 'react-router-dom'\nimport useSWR from 'swr'\nimport { create } from 'zustand'\nimport { useTranslation } from '../../components/locale'\nimport { Logo } from '../../components/logo'\nimport { useToolkitsStore } from '../../components/toolkitsProvider'\nimport { SSO_URL } from '../../constants'\nimport type { JsonData } from '../../types'\nimport backgroundUrl from './background.svg'\n\ninterface SignInProps {\n extra?: ReactNode\n}\n\nexport const useSignInStore = create<{\n unregistered: boolean // 是否是未注册用户\n setUnregistered: () => void\n}>()(set => ({\n unregistered: false,\n setUnregistered() {\n set({ unregistered: true })\n },\n}))\n\nconst SignIn: FC<SignInProps> = props => {\n const { extra } = props\n const { unregistered } = useSignInStore()\n const {\n title: { text },\n } = useToolkitsStore(s => s)\n\n // 当路由模式为 hash 模式时,Idaas 重定向会把 ticket 放到 hash 前面,此时的登录页的地址为标准的 URL 结构 \"/?ticket=xxx#/sign_in\"。\n // 然而 react-router-dom 无法从这种地址中获取到查询字符串,需要使用原生的 window.location.search。\n const queryParams = new URLSearchParams(window.location.search)\n const { token, setToken, axios, mainPagePath } = useToolkitsStore(state => state)\n const { t } = useTranslation()\n\n const { isLoading } = useSWR(\n queryParams.has('ticket') ? `/api/usystem/user/login?ticket=${queryParams.get('ticket')}` : null,\n url => axios.get<JsonData<{ token: string }>>(url).then(res => res.data.data),\n {\n onSuccess: data => {\n if (data) {\n setToken(data.token)\n }\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 = mainPagePath\n\n if (!hashMode) {\n return <Navigate replace to={mainPagePath} />\n }\n\n // 移除 ticket\n window.location.href = `${window.location.origin}${window.location.pathname}#${path}`\n\n return null\n }\n\n return (\n <div className=\"w-screen h-screen relative flex overflow-hidden\">\n <div className=\"absolute top-16 right-16 z-10\">{extra}</div>\n <div className=\"absolute left-14 top-6\">\n <Space align=\"center\">\n <Logo width={48} />\n <span className=\"text-2xl font-bold\">{text}</span>\n </Space>\n </div>\n <div className=\"flex-1 flex justify-center items-center bg-slate-50\">\n <img src={backgroundUrl} alt=\"background\" className=\"w-10/12\" />\n </div>\n <div className=\"w-[650px] relative top-0 left-0 right-0 bottom-0\">\n <div className=\"absolute top-1/2 -translate-y-1/2 left-0 right-0\">\n <div className=\"-translate-y-10 px-36\">\n <div className=\"flex flex-col justify-center\">\n <div className=\"h-10\">\n {unregistered && <Alert banner closable message={t('SignIn.unregistered')} type=\"error\" />}\n </div>\n <Typography.Title level={2}>{t('SignIn.welcome')}</Typography.Title>\n <div className=\"mt-4\">\n <Form layout=\"vertical\" autoComplete=\"off\">\n <Form.Item label={t('global.username')} name=\"username\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label={t('global.password')} name=\"password\" rules={[{ required: true }]}>\n <Input.Password />\n </Form.Item>\n <Form.Item>\n <Button block type=\"primary\" shape=\"round\" htmlType=\"submit\">\n {t('global.signIn')}\n </Button>\n </Form.Item>\n </Form>\n </div>\n <Divider plain dashed>\n {t('SignIn.thirdParty')}\n </Divider>\n <div className=\"flex justify-center items-center\">\n <Button\n block\n shape=\"round\"\n href={`${SSO_URL}/logout?service=${SSO_URL}/login?service=${window.location.href}`}\n target=\"_self\"\n >\n <Logo width={18} />\n {t('SignIn.signInWithIDass')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default SignIn\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { App } from 'antd'\nimport type { ComponentType, FC, PropsWithChildren } from 'react'\nimport { createContext, useContext, useRef } from 'react'\nimport { useStore } from 'zustand'\nimport type { ToolkitsState } from '../../stores'\nimport { createToolkitsStore } from '../../stores'\nimport type { ContextSlice } from '../../stores/context'\nimport { Interceptors } from '../interceptors'\n\ntype ToolkitsStore = ReturnType<typeof createToolkitsStore>\n\nconst ToolkitsContext = createContext<ToolkitsStore | null>(null)\n\nexport function useToolkitsStore<T>(selector: (state: ToolkitsState) => T): T {\n const store = useContext(ToolkitsContext)\n if (!store) throw new Error('Missing ToolkitsProvider in the tree')\n return useStore(store, selector)\n}\n\nexport type ToolkitsProviderProps = PropsWithChildren<Partial<Omit<ContextSlice, 'setContext'>>>\n\nconst ToolkitsProvider: FC<ToolkitsProviderProps> = props => {\n const { children, ...restProps } = props\n const storeRef = useRef<ToolkitsStore>()\n const parentState = useContext(ToolkitsContext)?.getState()\n\n if (!storeRef.current) {\n storeRef.current = createToolkitsStore({ ...parentState, ...restProps })\n }\n\n if (!storeRef.current.getState().signInPath) {\n throw new Error('ToolkitsProvider: 请配置 \"signInPath\"')\n }\n\n return (\n <ToolkitsContext.Provider value={storeRef.current}>\n <App>\n <Interceptors>{children}</Interceptors>\n </App>\n </ToolkitsContext.Provider>\n )\n}\n\nexport const withContext = (Component: ComponentType, providerProps: Omit<ToolkitsProviderProps, 'children'>) => {\n return (props: any) => {\n return (\n <ToolkitsProvider {...providerProps}>\n <Component {...props} />\n </ToolkitsProvider>\n )\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ToolkitsProvider.displayName = 'ToolkitsProvider'\n}\n\nexport default ToolkitsProvider\n","import { get, has, template } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useToolkitsStore } from '../toolkitsProvider'\nimport type { Locale } from './index'\n\ntype Join<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never\n\ntype Paths<T, D extends number = 10> = [D] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K]>> : never\n }[keyof T]\n : ''\n\nexport function useTranslation() {\n const locale = useToolkitsStore(state => state.locale)\n\n const t = useMemo(\n () => (key: Paths<Locale>, data?: Record<string, unknown>) =>\n has(locale, key) ? template(get(locale, key as string))(data) : key,\n [locale],\n )\n\n return { t }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/locale/ja_JP.ts"],"names":[],"mappings":"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","file":"ja_JP.js","sourcesContent":["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 projectGroup: 'プロジェクトチーム',\n view: '調べる',\n },\n SignIn: {\n title: 'ログイン方法',\n thirdParty: 'サードパーティログイン',\n signInWithIDass: 'IDass ログイン',\n unregistered: 'あなたはまだプラットフォームに登録されていません、管理者に連絡してください',\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 User: {\n createTitle: 'ユーザーを作成',\n createSuccessfully: 'ユーザーが正常に作成されました',\n updateTitle: 'ユーザーを更新',\n updateSuccessfully: 'ユーザーが正常に更新されました',\n deleteTitle: 'ユーザーを削除',\n deleteContent: 'ユーザー<%= user %>を削除してもよろしいですか?',\n deleteSuccessfully: 'ユーザーが正常に削除されました',\n },\n Role: {\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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/locale/ko_KR.ts"],"names":[],"mappings":";AAEA,IAAM,MAAiB,GAAA;AAAA,EACrB,MAAQ,EAAA;AAAA,IACN,aAAe,EAAA,mHAAA;AAAA,IACf,IAAM,EAAA,cAAA;AAAA,IACN,YAAc,EAAA,2BAAA;AAAA,IACd,SAAW,EAAA,cAAA;AAAA,IACX,MAAQ,EAAA,0BAAA;AAAA,IACR,IAAM,EAAA,cAAA;AAAA,IACN,MAAQ,EAAA,cAAA;AAAA,IACR,SAAW,EAAA,2BAAA;AAAA,IACX,IAAM,EAAA,cAAA;AAAA,IACN,IAAM,EAAA,oBAAA;AAAA,IACN,IAAM,EAAA,cAAA;AAAA,IACN,QAAU,EAAA,iCAAA;AAAA,IACV,QAAU,EAAA,0BAAA;AAAA,IACV,KAAO,EAAA,cAAA;AAAA,IACP,MAAQ,EAAA,cAAA;AAAA,IACR,KAAO,EAAA,cAAA;AAAA,IACP,OAAS,EAAA,cAAA;AAAA,IACT,QAAU,EAAA,cAAA;AAAA,IACV,GAAK,EAAA,cAAA;AAAA,IACL,MAAQ,EAAA,oBAAA;AAAA,IACR,YAAc,EAAA,iCAAA;AAAA,IACd,IAAM,EAAA;AAAA,GACR;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,KAAO,EAAA,iCAAA;AAAA,IACP,UAAY,EAAA,kCAAA;AAAA,IACZ,eAAiB,EAAA,0BAAA;AAAA,IACjB,YAAc,EAAA,oKAAA;AAAA,IACd,OAAS,EAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,QAAU,EAAA,+FAAA;AAAA,IACV,UAAY,EAAA;AAAA,GACd;AAAA,EACA,iBAAmB,EAAA;AAAA,IACjB,WAAa,EAAA,cAAA;AAAA,IACb,SAAW,EAAA;AAAA,GACb;AAAA,EACA,SAAW,EAAA;AAAA,IACT,WAAa,EAAA,cAAA;AAAA,IACb,UAAY,EAAA;AAAA,GACd;AAAA,EACA,UAAY,EAAA;AAAA,IACV,KAAO,EAAA,2BAAA;AAAA,IACP,WAAa,EAAA;AAAA,GACf;AAAA,EACA,WAAa,EAAA;AAAA,IACX,WAAa,EAAA;AAAA,GACf;AAAA,EACA,UAAY,EAAA;AAAA,IACV,WAAa,EAAA;AAAA,GACf;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,WAAa,EAAA,iCAAA;AAAA,IACb,kBAAoB,EAAA,oGAAA;AAAA,IACpB,WAAa,EAAA,6CAAA;AAAA,IACb,kBAAoB,EAAA,gHAAA;AAAA,IACpB,WAAa,EAAA,iCAAA;AAAA,IACb,aAAe,EAAA,wFAAA;AAAA,IACf,kBAAoB,EAAA;AAAA,GACtB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,WAAa,EAAA,2BAAA;AAAA,IACb,kBAAoB,EAAA,8FAAA;AAAA,IACpB,WAAa,EAAA,uCAAA;AAAA,IACb,kBAAoB,EAAA,0GAAA;AAAA,IACpB,WAAa,EAAA,2BAAA;AAAA,IACb,aAAe,EAAA,kFAAA;AAAA,IACf,kBAAoB,EAAA;AAAA,GACtB;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,iBAAmB,EAAA,sGAAA;AAAA,IACnB,gBAAkB,EAAA,8CAAA;AAAA,IAClB,gBAAkB,EAAA,2BAAA;AAAA,IAClB,sBAAwB,EAAA,sEAAA;AAAA,IACxB,qBAAuB,EAAA,sEAAA;AAAA,IACvB,UAAY,EAAA,cAAA;AAAA,IACZ,OAAS,EAAA;AAAA,GACX;AAAA,EACA,UAAY,EAAA;AAAA,IACV,KAAO,EAAA;AAAA,GACT;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,WAAa,EAAA,qBAAA;AAAA,IACb,YAAc,EAAA,mDAAA;AAAA,IACd,YAAc,EAAA;AAAA;AAElB,CAAA;AAEA,IAAO,aAAQ,GAAA","file":"ko_KR.js","sourcesContent":["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 projectGroup: '프로젝트 팀',\n view: '체크 아웃',\n },\n SignIn: {\n title: '로그인 방법',\n thirdParty: '제3자 로그인',\n signInWithIDass: 'IDass 로그인',\n unregistered: '플랫폼에 아직 등록되지 않았습니다, 관리자에게 문의하십시오',\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 User: {\n createTitle: '사용자 생성',\n createSuccessfully: '사용자가 성공적으로 생성되었습니다',\n updateTitle: '사용자 업데이트',\n updateSuccessfully: '사용자가 성공적으로 업데이트되었습니다',\n deleteTitle: '사용자 삭제',\n deleteContent: '사용자 <%= user %>를 삭제하시겠습니까?',\n deleteSuccessfully: '사용자가 성공적으로 삭제되었습니다',\n },\n Role: {\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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/locale/zh_CN.ts"],"names":[],"mappings":";AAEA,IAAM,MAAiB,GAAA;AAAA,EACrB,MAAQ,EAAA;AAAA,IACN,aAAe,EAAA,8DAAA;AAAA,IACf,IAAM,EAAA,cAAA;AAAA,IACN,YAAc,EAAA,0BAAA;AAAA,IACd,SAAW,EAAA,cAAA;AAAA,IACX,MAAQ,EAAA,cAAA;AAAA,IACR,IAAM,EAAA,cAAA;AAAA,IACN,MAAQ,EAAA,cAAA;AAAA,IACR,SAAW,EAAA,cAAA;AAAA,IACX,IAAM,EAAA,cAAA;AAAA,IACN,IAAM,EAAA,cAAA;AAAA,IACN,IAAM,EAAA,cAAA;AAAA,IACN,QAAU,EAAA,oBAAA;AAAA,IACV,QAAU,EAAA,cAAA;AAAA,IACV,KAAO,EAAA,cAAA;AAAA,IACP,MAAQ,EAAA,cAAA;AAAA,IACR,KAAO,EAAA,cAAA;AAAA,IACP,OAAS,EAAA,cAAA;AAAA,IACT,QAAU,EAAA,cAAA;AAAA,IACV,GAAK,EAAA,cAAA;AAAA,IACL,MAAQ,EAAA,cAAA;AAAA,IACR,YAAc,EAAA,oBAAA;AAAA,IACd,IAAM,EAAA;AAAA,GACR;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,KAAO,EAAA,0BAAA;AAAA,IACP,UAAY,EAAA,gCAAA;AAAA,IACZ,eAAiB,EAAA,oBAAA;AAAA,IACjB,YAAc,EAAA,4FAAA;AAAA,IACd,OAAS,EAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,QAAU,EAAA,kDAAA;AAAA,IACV,UAAY,EAAA;AAAA,GACd;AAAA,EACA,iBAAmB,EAAA;AAAA,IACjB,WAAa,EAAA,cAAA;AAAA,IACb,SAAW,EAAA;AAAA,GACb;AAAA,EACA,SAAW,EAAA;AAAA,IACT,WAAa,EAAA,cAAA;AAAA,IACb,UAAY,EAAA;AAAA,GACd;AAAA,EACA,UAAY,EAAA;AAAA,IACV,KAAO,EAAA,0BAAA;AAAA,IACP,WAAa,EAAA;AAAA,GACf;AAAA,EACA,WAAa,EAAA;AAAA,IACX,WAAa,EAAA;AAAA,GACf;AAAA,EACA,UAAY,EAAA;AAAA,IACV,WAAa,EAAA;AAAA,GACf;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,WAAa,EAAA,0BAAA;AAAA,IACb,kBAAoB,EAAA,sCAAA;AAAA,IACpB,WAAa,EAAA,0BAAA;AAAA,IACb,kBAAoB,EAAA,sCAAA;AAAA,IACpB,WAAa,EAAA,0BAAA;AAAA,IACb,aAAe,EAAA,qEAAA;AAAA,IACf,kBAAoB,EAAA;AAAA,GACtB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,WAAa,EAAA,0BAAA;AAAA,IACb,kBAAoB,EAAA,sCAAA;AAAA,IACpB,WAAa,EAAA,0BAAA;AAAA,IACb,kBAAoB,EAAA,sCAAA;AAAA,IACpB,WAAa,EAAA,0BAAA;AAAA,IACb,aAAe,EAAA,qEAAA;AAAA,IACf,kBAAoB,EAAA;AAAA,GACtB;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,iBAAmB,EAAA,kDAAA;AAAA,IACnB,gBAAkB,EAAA,sCAAA;AAAA,IAClB,gBAAkB,EAAA,0BAAA;AAAA,IAClB,sBAAwB,EAAA,sCAAA;AAAA,IACxB,qBAAuB,EAAA,sCAAA;AAAA,IACvB,UAAY,EAAA,cAAA;AAAA,IACZ,OAAS,EAAA;AAAA,GACX;AAAA,EACA,UAAY,EAAA;AAAA,IACV,KAAO,EAAA;AAAA,GACT;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,WAAa,EAAA,oBAAA;AAAA,IACb,YAAc,EAAA,gCAAA;AAAA,IACd,YAAc,EAAA;AAAA;AAElB,CAAA;AAEA,IAAO,aAAQ,GAAA","file":"zh_CN.js","sourcesContent":["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 projectGroup: '项目组',\n view: '查看',\n },\n SignIn: {\n title: '登录方式',\n thirdParty: '第三方登录',\n signInWithIDass: 'IDass 登录',\n unregistered: '您还未在平台注册,请联系管理员',\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 User: {\n createTitle: '创建用户',\n createSuccessfully: '用户创建成功',\n updateTitle: '更新用户',\n updateSuccessfully: '用户更新成功',\n deleteTitle: '删除用户',\n deleteContent: '确定要删除用户 <%= user %> 吗?',\n deleteSuccessfully: '用户删除成功',\n },\n Role: {\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"]}