react-toolkits 2.6.1 → 2.7.0

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/locale/ja_JP.js CHANGED
@@ -1,5 +1,3 @@
1
1
  var e={global:{noEntitlement:"\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3001\u7BA1\u7406\u8005\u306B\u9023\u7D61\u3057\u3066\u304F\u3060\u3055\u3044\u3002",name:"\u540D\u524D",creationTime:"\u4F5C\u6210\u6642\u9593",operation:"\u64CD\u4F5C",update:"\u66F4\u65B0",edit:"\u7DE8\u96C6",delete:"\u524A\u9664",selectAll:"\u5168\u3066\u9078\u629E",game:"\u30B2\u30FC\u30E0",user:"\u30E6\u30FC\u30B6\u30FC",role:"\u5F79\u5272",username:"\u30E6\u30FC\u30B6\u30FC\u540D",password:"\u30D1\u30B9\u30EF\u30FC\u30C9",label:"\u30E9\u30D9\u30EB",method:"\u65B9\u6CD5",route:"\u30EB\u30FC\u30C8",request:"\u30EA\u30AF\u30A8\u30B9\u30C8",response:"\u30EC\u30B9\u30DD\u30F3\u30B9",add:"\u3064\u3044\u304B",signIn:"\u30ED\u30B0\u30A4\u30F3"},SignIn:{title:"\u30ED\u30B0\u30A4\u30F3\u65B9\u6CD5",thirdParty:"\u30B5\u30FC\u30C9\u30D1\u30FC\u30C6\u30A3\u30ED\u30B0\u30A4\u30F3",signInWithIDass:"IDass \u30ED\u30B0\u30A4\u30F3",notRegistered:"\u3042\u306A\u305F\u306F\u307E\u3060\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306B\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3001\u7BA1\u7406\u8005\u306B\u9023\u7D61\u3057\u3066\u304F\u3060\u3055\u3044",welcome:"\u30A6\u30A7\u30EB\u30AB\u30E0"},NotFound:{subTitle:"\u30A2\u30AF\u30BB\u30B9\u3057\u305F\u30DA\u30FC\u30B8\u306F\u5B58\u5728\u3057\u307E\u305B\u3093",buttonText:"\u30DA\u30FC\u30B8\u306B\u623B\u308B"},FilterFormWrapper:{confirmText:"\u691C\u7D22",resetText:"\u30EA\u30BB\u30C3\u30C8"},FormModal:{confirmText:"\u78BA\u8A8D",cancelText:"\u30AD\u30E3\u30F3\u30BB\u30EB"},GameSelect:{label:"\u73FE\u5728\u306E\u30B2\u30FC\u30E0",placeholder:"\u30B2\u30FC\u30E0\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044"},RequireGame:{description:"\u30B2\u30FC\u30E0\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044"},UserWidget:{signOutText:"\u30ED\u30B0\u30A2\u30A6\u30C8"},UserList:{createTitle:"\u30E6\u30FC\u30B6\u30FC\u3092\u4F5C\u6210",createSuccessfully:"\u30E6\u30FC\u30B6\u30FC\u304C\u6B63\u5E38\u306B\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F",updateTitle:"\u30E6\u30FC\u30B6\u30FC\u3092\u66F4\u65B0",updateSuccessfully:"\u30E6\u30FC\u30B6\u30FC\u304C\u6B63\u5E38\u306B\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F",deleteTitle:"\u30E6\u30FC\u30B6\u30FC\u3092\u524A\u9664",deleteContent:"\u30E6\u30FC\u30B6\u30FC<%= user %>\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F",deleteSuccessfully:"\u30E6\u30FC\u30B6\u30FC\u304C\u6B63\u5E38\u306B\u524A\u9664\u3055\u308C\u307E\u3057\u305F"},RoleList:{createTitle:"\u5F79\u5272\u3092\u4F5C\u6210",createSuccessfully:"\u5F79\u5272\u304C\u6B63\u5E38\u306B\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F",updateTitle:"\u5F79\u5272\u3092\u66F4\u65B0",updateSuccessfully:"\u5F79\u5272\u304C\u6B63\u5E38\u306B\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F",deleteTitle:"\u5F79\u5272\u3092\u524A\u9664",deleteContent:"\u5F79\u5272<%= role %>\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F",deleteSuccessfully:"\u5F79\u5272\u304C\u6B63\u5E38\u306B\u524A\u9664\u3055\u308C\u307E\u3057\u305F"},PermissionList:{failedDescription:"\u6A29\u9650\u30EA\u30B9\u30C8\u306E\u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F",baseSectionTitle:"\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u57FA\u672C\u6A29\u9650",gameSectionTitle:"\u30B2\u30FC\u30E0\u6A29\u9650",gameSectionDescription:"\u5148\u306B\u30B2\u30FC\u30E0\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",gameSelectPlaceholder:"\u5148\u306B\u30B2\u30FC\u30E0\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",removeText:"\u524A\u9664",addText:"\u30B2\u30FC\u30E0\u6A29\u9650\u3092\u8FFD\u52A0"},RoleDetail:{title:"\u5F79\u5272\u8A73\u7D30"},InfiniteList:{loadingText:"\u8AAD\u307F\u8FBC\u307F\u4E2D",reachEndText:"\u6700\u5F8C\u307E\u3067\u5230\u9054\u3057\u307E\u3057\u305F",loadMoreText:"\u3082\u3063\u3068\u8AAD\u307F\u8FBC\u3080"}},t=e;
2
2
 
3
3
  export { t as default };
4
- //# sourceMappingURL=ja_JP.js.map
5
- //# sourceMappingURL=ja_JP.js.map
package/locale/ko_KR.js CHANGED
@@ -1,5 +1,3 @@
1
1
  var e={global:{noEntitlement:"\uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4, \uAD00\uB9AC\uC790\uC5D0\uAC8C \uBB38\uC758\uD558\uC2ED\uC2DC\uC624.",name:"\uC774\uB984",creationTime:"\uC0DD\uC131 \uC2DC\uAC04",operation:"\uC791\uC5C5",update:"\uC5C5\uB370\uC774\uD2B8",edit:"\uD3B8\uC9D1",delete:"\uC0AD\uC81C",selectAll:"\uBAA8\uB450 \uC120\uD0DD",game:"\uAC8C\uC784",user:"\uC0AC\uC6A9\uC790",role:"\uC5ED\uD560",username:"\uC0AC\uC6A9\uC790 \uC774\uB984",password:"\uBE44\uBC00\uBC88\uD638",label:"\uB77C\uBCA8",method:"\uBC29\uBC95",route:"\uB178\uC120",request:"\uC694\uCCAD",response:"\uC751\uB2F5",add:"\uCD94\uAC00",signIn:"\uB85C\uADF8\uC778"},SignIn:{title:"\uB85C\uADF8\uC778 \uBC29\uBC95",thirdParty:"\uC81C3\uC790 \uB85C\uADF8\uC778",signInWithIDass:"IDass \uB85C\uADF8\uC778",notRegistered:"\uD50C\uB7AB\uD3FC\uC5D0 \uC544\uC9C1 \uB4F1\uB85D\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4, \uAD00\uB9AC\uC790\uC5D0\uAC8C \uBB38\uC758\uD558\uC2ED\uC2DC\uC624",welcome:"\uC6F0\uCEF4"},NotFound:{subTitle:"\uBC29\uBB38\uD55C \uD398\uC774\uC9C0\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",buttonText:"\uD398\uC774\uC9C0\uB85C \uB3CC\uC544\uAC00\uAE30"},FilterFormWrapper:{confirmText:"\uAC80\uC0C9",resetText:"\uB9AC\uC14B"},FormModal:{confirmText:"\uD655\uC778",cancelText:"\uCDE8\uC18C"},GameSelect:{label:"\uD604\uC7AC \uAC8C\uC784",placeholder:"\uAC8C\uC784\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694"},RequireGame:{description:"\uAC8C\uC784\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694"},UserWidget:{signOutText:"\uB85C\uADF8\uC544\uC6C3"},UserList:{createTitle:"\uC0AC\uC6A9\uC790 \uC0DD\uC131",createSuccessfully:"\uC0AC\uC6A9\uC790\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4",updateTitle:"\uC0AC\uC6A9\uC790 \uC5C5\uB370\uC774\uD2B8",updateSuccessfully:"\uC0AC\uC6A9\uC790\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uC5C5\uB370\uC774\uD2B8\uB418\uC5C8\uC2B5\uB2C8\uB2E4",deleteTitle:"\uC0AC\uC6A9\uC790 \uC0AD\uC81C",deleteContent:"\uC0AC\uC6A9\uC790 <%= user %>\uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?",deleteSuccessfully:"\uC0AC\uC6A9\uC790\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4"},RoleList:{createTitle:"\uC5ED\uD560 \uC0DD\uC131",createSuccessfully:"\uC5ED\uD560\uC774 \uC131\uACF5\uC801\uC73C\uB85C \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4",updateTitle:"\uC5ED\uD560 \uC5C5\uB370\uC774\uD2B8",updateSuccessfully:"\uC5ED\uD560\uC774 \uC131\uACF5\uC801\uC73C\uB85C \uC5C5\uB370\uC774\uD2B8\uB418\uC5C8\uC2B5\uB2C8\uB2E4",deleteTitle:"\uC5ED\uD560 \uC0AD\uC81C",deleteContent:"\uC5ED\uD560 <%= role %>\uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?",deleteSuccessfully:"\uC5ED\uD560\uC774 \uC131\uACF5\uC801\uC73C\uB85C \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4"},PermissionList:{failedDescription:"\uAD8C\uD55C \uBAA9\uB85D\uC744 \uAC00\uC838\uC624\uB294 \uB370 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",baseSectionTitle:"\uD50C\uB7AB\uD3FC \uAE30\uBCF8 \uAD8C\uD55C",gameSectionTitle:"\uAC8C\uC784 \uAD8C\uD55C",gameSectionDescription:"\uBA3C\uC800 \uAC8C\uC784\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694",gameSelectPlaceholder:"\uBA3C\uC800 \uAC8C\uC784\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694",removeText:"\uC81C\uAC70",addText:"\uAC8C\uC784 \uAD8C\uD55C \uCD94\uAC00"},RoleDetail:{title:"\uC5ED\uD560 \uC138\uBD80 \uC815\uBCF4"},InfiniteList:{loadingText:"\uB85C\uB529 \uC911",reachEndText:"\uB05D\uC5D0 \uB3C4\uB2EC\uD588\uC2B5\uB2C8\uB2E4",loadMoreText:"\uB354 \uB85C\uB4DC\uD558\uAE30"}},t=e;
2
2
 
3
3
  export { t as default };
4
- //# sourceMappingURL=ko_KR.js.map
5
- //# sourceMappingURL=ko_KR.js.map
package/locale/zh_CN.js CHANGED
@@ -1,5 +1,3 @@
1
1
  var e={global:{noEntitlement:"\u65E0\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u3002",name:"\u540D\u79F0",creationTime:"\u521B\u5EFA\u65F6\u95F4",operation:"\u64CD\u4F5C",update:"\u66F4\u65B0",edit:"\u7F16\u8F91",delete:"\u5220\u9664",selectAll:"\u5168\u9009",game:"\u6E38\u620F",user:"\u7528\u6237",role:"\u89D2\u8272",username:"\u7528\u6237\u540D",password:"\u5BC6\u7801",label:"\u6807\u7B7E",method:"\u65B9\u6CD5",route:"\u8DEF\u7531",request:"\u8BF7\u6C42",response:"\u54CD\u5E94",add:"\u6DFB\u52A0",signIn:"\u767B\u5F55"},SignIn:{title:"\u767B\u5F55\u65B9\u5F0F",thirdParty:"\u7B2C\u4E09\u65B9\u767B\u5F55",signInWithIDass:"IDass \u767B\u5F55",notRegistered:"\u60A8\u8FD8\u672A\u5728\u5E73\u53F0\u6CE8\u518C\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458",welcome:"\u6B22\u8FCE"},NotFound:{subTitle:"\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728",buttonText:"\u8FD4\u56DE\u9996\u9875"},FilterFormWrapper:{confirmText:"\u67E5\u8BE2",resetText:"\u91CD\u7F6E"},FormModal:{confirmText:"\u786E\u8BA4",cancelText:"\u53D6\u6D88"},GameSelect:{label:"\u5F53\u524D\u6E38\u620F",placeholder:"\u8BF7\u9009\u62E9\u6E38\u620F"},RequireGame:{description:"\u8BF7\u9009\u62E9\u6E38\u620F"},UserWidget:{signOutText:"\u767B\u51FA"},UserList:{createTitle:"\u521B\u5EFA\u7528\u6237",createSuccessfully:"\u7528\u6237\u521B\u5EFA\u6210\u529F",updateTitle:"\u66F4\u65B0\u7528\u6237",updateSuccessfully:"\u7528\u6237\u66F4\u65B0\u6210\u529F",deleteTitle:"\u5220\u9664\u7528\u6237",deleteContent:"\u786E\u5B9A\u8981\u5220\u9664\u7528\u6237 <%= user %> \u5417\uFF1F",deleteSuccessfully:"\u7528\u6237\u5220\u9664\u6210\u529F"},RoleList:{createTitle:"\u521B\u5EFA\u89D2\u8272",createSuccessfully:"\u89D2\u8272\u521B\u5EFA\u6210\u529F",updateTitle:"\u66F4\u65B0\u89D2\u8272",updateSuccessfully:"\u89D2\u8272\u66F4\u65B0\u6210\u529F",deleteTitle:"\u5220\u9664\u89D2\u8272",deleteContent:"\u786E\u5B9A\u8981\u5220\u9664\u89D2\u8272 <%= role %> \u5417\uFF1F",deleteSuccessfully:"\u89D2\u8272\u5220\u9664\u6210\u529F"},PermissionList:{failedDescription:"\u83B7\u53D6\u6743\u9650\u5217\u8868\u5931\u8D25",baseSectionTitle:"\u5E73\u53F0\u57FA\u7840\u6743\u9650",gameSectionTitle:"\u6E38\u620F\u6743\u9650",gameSectionDescription:"\u8BF7\u5148\u9009\u62E9\u6E38\u620F",gameSelectPlaceholder:"\u8BF7\u5148\u9009\u62E9\u6E38\u620F",removeText:"\u79FB\u9664",addText:"\u6DFB\u52A0\u6E38\u620F\u6743\u9650"},RoleDetail:{title:"\u89D2\u8272\u8BE6\u60C5"},InfiniteList:{loadingText:"\u52A0\u8F7D\u4E2D",reachEndText:"\u5DF2\u7ECF\u5230\u5E95\u4E86",loadMoreText:"\u52A0\u8F7D\u66F4\u591A"}},t=e;
2
2
 
3
3
  export { t as default };
4
- //# sourceMappingURL=zh_CN.js.map
5
- //# 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.6.1",
4
+ "version": "2.7.0",
5
5
  "sideEffects": [
6
6
  "*.css"
7
7
  ],
package/lib/index.css.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/style.css","../src/styles/index.css"],"sourcesContent":["\n.expand {\n animation-duration: 0.2s;\n animation-name: expand;\n}\n\n@keyframes expand {\n 0%, 50% {\n width: 0;\n opacity: 0;\n }\n\n 75% {\n width: 100%;\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n","*, ::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-4 {\n margin-left: 1rem\n}\n.mr-6 {\n margin-right: 1.5rem\n}\n.mt-2 {\n margin-top: 0.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.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-\\[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-2 {\n gap: 0.5rem\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))\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-start {\n text-align: start\n}\n.text-end {\n text-align: end\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"],"mappings":"AACA,CAAC,OACC,mBAAoB,IACpB,eAAgB,MAClB,CAEA,WALC,OAMC,OACE,MAAO,EACP,QAAS,CACX,CAEA,IACE,MAAO,KACP,QAAS,CACX,CAEA,GACE,QAAS,CACX,CACF,CCpBA,EAAG,QAAU,OACT,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,aACA,aACA,kBACA,6BAA6B,UAC7B,8BACA,6BACA,4BACA,eACA,oBACA,sBACA,uBACA,wBACA,kBACA,wBAAwB,IACxB,wBAAwB,KACxB,iBAAiB,IAAI,GAAG,IAAI,IAAI,EAAE,IAClC,yBAAyB,EAAE,EAAE,MAC7B,kBAAkB,EAAE,EAAE,MACtB,aAAa,EAAE,EAAE,MACjB,qBAAqB,EAAE,EAAE,MACzB,YACA,kBACA,gBACA,iBACA,kBACA,cACA,gBACA,aACA,mBACA,qBACA,2BACA,yBACA,0BACA,2BACA,uBACA,wBACA,yBACA,sBACA,oBACA,sBACA,qBACA,oBACJ,CACA,WACI,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,aACA,aACA,kBACA,6BAA6B,UAC7B,8BACA,6BACA,4BACA,eACA,oBACA,sBACA,uBACA,wBACA,kBACA,wBAAwB,IACxB,wBAAwB,KACxB,iBAAiB,IAAI,GAAG,IAAI,IAAI,EAAE,IAClC,yBAAyB,EAAE,EAAE,MAC7B,kBAAkB,EAAE,EAAE,MACtB,aAAa,EAAE,EAAE,MACjB,qBAAqB,EAAE,EAAE,MACzB,YACA,kBACA,gBACA,iBACA,kBACA,cACA,gBACA,aACA,mBACA,qBACA,2BACA,yBACA,0BACA,2BACA,uBACA,wBACA,yBACA,sBACA,oBACA,sBACA,qBACA,oBACJ,CACA,CAAC,UACG,MAAO,IACX,CACA,OAAO,CAAC,SAAS,EAAE,OACf,CAJH,UAKO,UAAW,KACf,CACJ,CACA,OAAO,CAAC,SAAS,EAAE,OACf,CATH,UAUO,UAAW,KACf,CACJ,CACA,OAAO,CAAC,SAAS,EAAE,QACf,CAdH,UAeO,UAAW,MACf,CACJ,CACA,OAAO,CAAC,SAAS,EAAE,QACf,CAnBH,UAoBO,UAAW,MACf,CACJ,CACA,OAAO,CAAC,SAAS,EAAE,QACf,CAxBH,UAyBO,UAAW,MACf,CACJ,CACA,CAAC,MACG,SAAU,KACd,CACA,CAAC,SACG,SAAU,QACd,CACA,CAAC,SACG,SAAU,QACd,CACA,CAAC,SACG,OAAQ,CACZ,CACA,CAAC,OACG,KAAM,CACV,CACA,CAAC,QACG,KAAM,MACV,CACA,CAAC,QACG,MAAO,CACX,CACA,CAAC,SACG,MAAO,IACX,CACA,CAAC,MACG,IAAK,CACT,CACA,CAAC,SACG,IAAK,GACT,CACA,CAAC,OACG,IAAK,IACT,CACA,CAAC,MACG,IAAK,MACT,CACA,CAAC,KACG,QAAS,EACb,CACA,CAAC,MACG,WAAY,KACZ,cAAe,IACnB,CACA,CAAC,KACG,cAAe,CACnB,CACA,CAAC,MACG,cAAe,IACnB,CACA,CAAC,KACG,cAAe,IACnB,CACA,CAAC,KACG,cAAe,MACnB,CACA,CAAC,KACG,YAAa,IACjB,CACA,CAAC,KACG,aAAc,MAClB,CACA,CAAC,KACG,WAAY,KAChB,CACA,CAAC,KACG,WAAY,IAChB,CACA,CAAC,MACG,QAAS,KACb,CACA,CAAC,OACG,QAAS,MACb,CACA,CAAC,KACG,QAAS,IACb,CACA,CAAC,KACG,OAAQ,MACZ,CACA,CAAC,IACG,OAAQ,IACZ,CACA,CAAC,OACG,OAAQ,IACZ,CACA,CAAC,SACG,OAAQ,KACZ,CACA,CAAC,SACG,MAAO,UACX,CACA,CAAC,YACG,MAAO,KACX,CACA,CAAC,OACG,MAAO,IACX,CACA,CAAC,SACG,MAAO,KACX,CACA,CAAC,OACG,KAAM,EAAE,EAAE,EACd,CACA,CAAC,YACG,UAAW,CACf,CACA,CAAC,kBACG,kBAAkB,KAClB,UAAW,UAAU,IAAI,iBAAiB,CAAE,IAAI,mBAAmB,OAAO,IAAI,cAAc,KAAM,IAAI,cAAc,MAAM,IAAI,cAAc,OAAO,IAAI,eAAe,OAAO,IAAI,cACrL,CACA,CAAC,gBACG,kBAAkB,QAClB,UAAW,UAAU,IAAI,iBAAiB,CAAE,IAAI,mBAAmB,OAAO,IAAI,cAAc,KAAM,IAAI,cAAc,MAAM,IAAI,cAAc,OAAO,IAAI,eAAe,OAAO,IAAI,cACrL,CACA,CAAC,SACG,eAAgB,GACpB,CACA,CAAC,SACG,eAAgB,MACpB,CACA,CAAC,aACG,YAAa,MACjB,CACA,CAAC,eACG,gBAAiB,MACrB,CACA,CAAC,gBACG,gBAAiB,aACrB,CACA,CAAC,MACG,IAAK,KACT,CACA,CAAC,gBACG,SAAU,MACd,CACA,CAAC,YACG,iBAAiB,EACjB,iBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAC5C,CACA,CAAC,MACG,aAAc,KACd,cAAe,IACnB,CACA,CAAC,KACG,aAAc,OACd,cAAe,MACnB,CACA,CAAC,KACG,YAAa,KACb,eAAgB,IACpB,CACA,CAAC,WACG,WAAY,KAChB,CACA,CAAC,SACG,WAAY,GAChB,CACA,CAAC,OACG,OAAQ,IAAI,WAAW,IAAI,iBAAiB,IAAI,eAAe,IAAI,gBAAgB,IAAI,iBAAiB,IAAI,aAAa,IAAI,eAAe,IAAI,YAAY,IAAI,iBACpK","names":[]}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/locale/context.ts","../src/components/locale/zh_CN.ts","../src/components/locale/hooks.ts","../src/components/locale/index.tsx","../src/components/contextProvider/constants.ts","../src/components/contextProvider/context.ts","../src/components/contextProvider/Provider.tsx","../src/components/contextProvider/index.ts","../src/components/filterFormWrapper/index.tsx","../src/components/highlight/index.tsx","../src/components/logo/Logo.tsx","../src/components/logo/index.tsx","../src/components/navMenu/stores.ts","../src/components/navMenu/utils.tsx","../src/components/navMenu/NavMenu.tsx","../src/components/navMenu/index.ts","../src/constants.ts","../src/hooks/token.ts","../src/components/userWidget/index.tsx","../src/utils/storage.ts","../src/components/layout/stores.ts","../src/components/layout/ContentWrapper.tsx","../src/components/layout/GameSelect.tsx","../src/components/layout/style.css","../src/components/layout/Layout.tsx","../src/components/layout/index.tsx","../src/utils/request.ts","../src/hooks/permission.ts","../src/components/permissionButton/PermissionButton.tsx","../src/components/permissionButton/index.tsx","../src/components/queryList/stores.ts","../src/components/queryList/QueryList.tsx","../src/components/queryList/index.ts","../src/hooks/modal.tsx","../src/hooks/formModal.tsx","../src/features/permission/hooks/index.ts","../src/features/permission/components/permissionCollapse/index.tsx","../src/features/permission/components/permissionListV1/index.tsx","../src/features/permission/components/permissionListV2/index.tsx","../src/features/permission/components/permissionList/index.tsx","../src/features/permission/types/index.ts","../src/features/permission/index.ts","../src/pages/permission/userList/index.tsx","../src/pages/permission/roleList/index.tsx","../src/pages/permission/roleDetail/index.tsx","../src/index.ts","../src/components/dynamicTags/index.tsx","../src/components/expandableParagraph/index.tsx","../src/components/infiniteList/InfiniteList.tsx","../src/components/permissionGuard/index.tsx","../src/pages/notFound/index.tsx","../src/pages/operationLogList/index.tsx","../src/pages/permission/index.tsx","../src/pages/signIn/index.tsx"],"names":["LocaleContext","context_default","init_context","__esmMin","createContext","locale","zh_CN_default","init_zh_CN","useTranslation","localeFromContext","useContext","useMemo","key","data","has","template","get","init_hooks","LocaleProvider","locale_default","init_locale","props","children","memoizedContextValue","jsx","defaultState","init_constants","ToolkitsContext","useToolkitsContext","contextStore","ContextProvider","Provider_default","init_Provider","createStore","rest","config","childNode","useEffect","init_contextProvider","FilterFormWrapper","filterFormWrapper_default","init_filterFormWrapper","extras","isConfirming","onConfirm","onReset","buttonsAlign","showReset","t","colorFillAlter","lineWidth","lineType","colorBorder","borderRadiusLG","theme","jsxs","Space","Button","item","Fragment","renderToString","node","container","root","createRoot","resolve","flushSync","splitByTags","Highlight","highlight_default","init_highlight","str","regex","part","texts","htmlString","setHtmlString","useState","result","text","index","Logo","Logo_default","init_Logo","logoUrl","init_logo","useNavStore","init_stores","create","persist","set","keys","createJSONStorage","state","checkChildren","permissions","child","transformItems","items","i","restProps","route","label","code","isPass","withLink","flatItems","keypath","init_utils","Link","NavMenu","NavMenu_default","init_NavMenu","init_permission","memo","location","useLocation","flattenItems","codes","isLoading","usePermissions","internalItems","openKeys","selectedKeys","setOpenKeys","setSelectedKeys","onOpenChange","useCallback","lastOpenKey","match","Spin","Menu","init_navMenu","SSO_URL","NOT_REGISTERED","useTokenValidation","skip","usePermissionApiV2","clearToken","useTokenStore","navigate","useNavigate","redirectToSignIn","notRegistered","useSWRImmutable","url","request","error","RequestError","init_token","init_request","store","jwtDecode","token","UserWidget","userWidget_default","init_userWidget","logoutRedirectUrl","getUser","user","LogoutOutlined","Dropdown","e","UserOutlined","mixedStorage","init_storage","name","value","useLayoutStore","useGameStore","collapsed","id","initialized","refetchGames","matchedGame","response","switching","ContentWrapper","ContentWrapper_default","init_ContentWrapper","Antd","hideGameSelect","game","Empty","Text","GameSelect","GameSelect_default","init_GameSelect","Typography","filter","onGameChange","games","setGame","options","onChange","Select","init_style","Header","Sider","Content","Layout","Layout_default","init_Layout","title","headerExtra","navWidth","colorBgContainer","localeDropdownMenu","setCollapsed","Divider","MenuUnfoldOutlined","MenuFoldOutlined","extra","Suspense","init_layout","opts","_opts","body","params","responseType","isGlobal","parsed","qs","queryParams","queryString","headers","isJsonBody","requestOpts","json","pick","__publicField","isValidating","useSWR","acc","curr","usePermission","PermissionButton","PermissionButton_default","init_PermissionButton","showLoading","disabled","Tooltip","init_permissionButton","useQueryListStore","payload","force","prevPayload","nextPayload","isEqual","mutate","page","QueryListAction","InternalQueryList","QueryList","QueryList_default","init_QueryList","ref","internalProps","onePage","method","defaultSize","refreshInterval","tableExtra","form","renderForm","afterSuccess","getTotal","getDataSource","tableProps","notification","App","_form","Form","accessible","action","useRef","originalData","isValid","setIsValid","keyMap","getPayload","refetch","size","formValue","_body","_params","_headers","newHeaders","serializedKey","unstable_serialize","shouldPoll","dataSource","total","pagination","currentPage","currentSize","timer","useImperativeHandle","Result","formRenderer","cloneElement","extraRenderer","Table","forwardRef","init_queryList","useModal","content","modalProps","uuid","modalStore","useModalStore","open","confirmLoading","setConfirmLoading","isRenderFunction","show","hide","internalModal","Modal","init_modal","useFormModal","formProps","internalExtraValues","setInternalExtraValues","internalForm","hanldeConfirm","values","afterClose","modal","operation","initialValues","extraValues","init_formModal","useAllPermissions","useAllPermissionsV2","useAllRoles","useRole","useCreateRole","useSWRMutation","arg","useUpdateRole","useRemoveRole","useCreateUser","useUpdateUser","useRemoveUser","PermissionCollapse","permissionCollapse_default","init_permissionCollapse","readonly","expand","activeKey","setActiveKey","checkedMap","setCheckedMap","internalValue","setInternalValue","onCollapseChange","getCheckedValue","checkedValue","tempValue","onCheckChange","category","Collapse","Checkbox","permission","Row","Col","PermissionListV1","permissionListV1_default","init_permissionListV1","Skeleton","Option","PermissionListV2","permissionListV2_default","init_permissionListV2","gameList","setGameList","globalPermissions","gamePermissions","list","addGame","prev","removeGame","_","newValue","Card","selectedValue","pev","temp","gameId","PermissionList","permissionList_default","init_permissionList","init_types","userList_exports","__export","userList_default","UserList","init_userList","isCreate","message","jump","roles","update","Input","role","produce","draft","remove","showCreateModal","createModal","showUpdateModal","updateModal","columns","Tag","UserAddOutlined","roleList_exports","roleList_default","RoleList","init_roleList","viewable","handleUpdateBtnClick","record","UsergroupAddOutlined","roleDetail_exports","roleDetail_default","RoleDetail","init_roleDetail","useParams","Breadcrumb","Descriptions","DynamicTags","initialTags","addable","removable","addCallback","removeCallback","tags","setTags","inputVisible","setInputVisible","inputValue","setInputValue","editInputIndex","setEditInputIndex","editInputValue","setEditInputValue","inputRef","editInputRef","handleClose","removedTag","newTags","tag","showInput","handleInputChange","handleInputConfirm","handleEditInputChange","handleEditInputConfirm","tagInputStyle","tagPlusStyle","PlusOutlined","dynamicTags_default","ExpandableParagraph","expanded","setExpanded","info","expandableParagraph_default","InfiniteList","getRowKey","hasMore","transformArg","formValues","setFormValues","getKey","pageIndex","previousPageData","rowKey","args","setSize","isListValidating","useSWRInfinite","isLoadingMore","isReachingEnd","isEmpty","loadMore","InfiniteList_default","PermissionGuard","permissionGuard_default","NotFound","redirectUrl","notFound_default","OperationLogList","dayjs","operationLogList_default","lazy","PermissionRoutes","Routes","Route","Navigate","permission_default","SignIn","successRedirectUrl","setToken","idaasRedirectUrl","hashMode","path","background_default","Alert","signIn_default"],"mappings":"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","file":"index.js","sourcesContent":["import { createContext } from 'react'\nimport type { Locale } from '.'\n\nexport type LocaleContextProps = Locale\n\nconst LocaleContext = createContext<LocaleContextProps | undefined>(undefined)\n\nexport default LocaleContext\n","import type { Locale } from '.'\n\nconst locale: Locale = {\n global: {\n noEntitlement: '无权限,请联系管理员。',\n name: '名称',\n creationTime: '创建时间',\n operation: '操作',\n update: '更新',\n edit: '编辑',\n delete: '删除',\n selectAll: '全选',\n game: '游戏',\n user: '用户',\n role: '角色',\n username: '用户名',\n password: '密码',\n label: '标签',\n method: '方法',\n route: '路由',\n request: '请求',\n response: '响应',\n add: '添加',\n signIn: '登录',\n },\n SignIn: {\n title: '登录方式',\n thirdParty: '第三方登录',\n signInWithIDass: 'IDass 登录',\n notRegistered: '您还未在平台注册,请联系管理员',\n welcome: '欢迎',\n },\n NotFound: {\n subTitle: '访问的页面不存在',\n buttonText: '返回首页',\n },\n FilterFormWrapper: {\n confirmText: '查询',\n resetText: '重置',\n },\n FormModal: {\n confirmText: '确认',\n cancelText: '取消',\n },\n GameSelect: {\n label: '当前游戏',\n placeholder: '请选择游戏',\n },\n RequireGame: {\n description: '请选择游戏',\n },\n UserWidget: {\n signOutText: '登出',\n },\n UserList: {\n createTitle: '创建用户',\n createSuccessfully: '用户创建成功',\n updateTitle: '更新用户',\n updateSuccessfully: '用户更新成功',\n deleteTitle: '删除用户',\n deleteContent: '确定要删除用户 <%= user %> 吗?',\n deleteSuccessfully: '用户删除成功',\n },\n RoleList: {\n createTitle: '创建角色',\n createSuccessfully: '角色创建成功',\n updateTitle: '更新角色',\n updateSuccessfully: '角色更新成功',\n deleteTitle: '删除角色',\n deleteContent: '确定要删除角色 <%= role %> 吗?',\n deleteSuccessfully: '角色删除成功',\n },\n PermissionList: {\n failedDescription: '获取权限列表失败',\n baseSectionTitle: '平台基础权限',\n gameSectionTitle: '游戏权限',\n gameSectionDescription: '请先选择游戏',\n gameSelectPlaceholder: '请先选择游戏',\n removeText: '移除',\n addText: '添加游戏权限',\n },\n RoleDetail: {\n title: '角色详情',\n },\n InfiniteList: {\n loadingText: '加载中',\n reachEndText: '已经到底了',\n loadMoreText: '加载更多',\n },\n}\n\nexport default locale\n","import { get, has, template } from 'lodash-es'\nimport { useContext, useMemo } from 'react'\nimport type { Locale } from '.'\nimport type { LocaleContextProps } from './context'\nimport LocaleContext from './context'\nimport defaultLocale from './zh_CN'\n\ntype Join<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never\n\ntype Paths<T, D extends number = 10> = [D] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K]>> : never\n }[keyof T]\n : ''\n\nexport function useTranslation() {\n const localeFromContext = useContext<LocaleContextProps | undefined>(LocaleContext)\n\n const locale = {\n ...defaultLocale,\n ...localeFromContext,\n }\n\n const t = useMemo(\n () => (key: Paths<Locale>, data?: Record<string, unknown>) =>\n has(locale, key) ? template(get(locale, key as string))(data) : key,\n [locale],\n )\n\n return { t }\n}\n","import type { FC, PropsWithChildren } from 'react'\nimport { useMemo } from 'react'\nimport LocaleContext from './context'\n\nexport type Locale = {\n global: {\n noEntitlement: string\n name: string\n creationTime: string\n operation: string\n update: string\n edit: string\n delete: string\n selectAll: string\n game: string\n user: string\n role: string\n username: string\n password: string\n label: string\n method: string\n route: string\n request: string\n response: string\n add: string\n signIn: string\n }\n SignIn: {\n title: string\n thirdParty: string\n signInWithIDass: string\n notRegistered: string\n welcome: string\n }\n NotFound: {\n subTitle: string\n buttonText: string\n }\n FilterFormWrapper: {\n confirmText: string\n resetText: string\n }\n FormModal: {\n confirmText: string\n cancelText: string\n }\n GameSelect: {\n label: string\n placeholder: string\n }\n RequireGame: {\n description: string\n }\n UserWidget: {\n signOutText: string\n }\n UserList: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n RoleList: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n PermissionList: {\n failedDescription: string\n baseSectionTitle: string\n gameSectionTitle: string\n gameSectionDescription: string\n gameSelectPlaceholder: string\n removeText: string\n addText: string\n }\n RoleDetail: {\n title: string\n }\n InfiniteList: {\n loadingText: string\n reachEndText: string\n loadMoreText: string\n }\n}\n\nexport { useTranslation } from './hooks'\n\nexport interface LocaleProviderProps {\n locale: Locale\n}\n\nconst LocaleProvider: FC<PropsWithChildren<LocaleProviderProps>> = props => {\n const { locale = {} as Locale, children } = props\n const memoizedContextValue = useMemo(() => ({ ...locale }), [locale])\n\n return <LocaleContext.Provider value={memoizedContextValue}>{children}</LocaleContext.Provider>\n}\n\nexport default LocaleProvider\n","import type { ContextState } from './context'\n\nexport const defaultState: ContextState = {\n usePermissionApiV2: false,\n}\n","import type { ReactNode } from 'react'\nimport { createContext } from 'react'\nimport type { Locale } from '../locale'\nimport { defaultState } from './constants'\n\nexport interface ContextState {\n usePermissionApiV2: boolean // 使用 V2 版本的权限接口\n locale?: Locale\n localeDropdownMenu?: ReactNode\n}\n\nconst ToolkitsContext = createContext<ContextState>(defaultState)\n\nexport default ToolkitsContext\n","import type { FC, PropsWithChildren } from 'react'\nimport { useContext, useEffect } from 'react'\nimport { createStore } from 'zustand'\nimport LocaleProvider from '../locale'\nimport { defaultState } from './constants'\nimport type { ContextState } from './context'\nimport ToolkitsContext from './context'\n\nexport const contextStore = createStore<ContextState>(() => defaultState)\n\n// 最接近的祖先 ContextProvider 内包含的上下文。\nexport function useToolkitsContext() {\n return useContext(ToolkitsContext)\n}\n\nconst ContextProvider: FC<PropsWithChildren<Partial<ContextState>>> = props => {\n const { children, locale, ...rest } = props\n const parentConfig = useToolkitsContext()\n\n const config = {\n ...parentConfig,\n ...rest,\n }\n\n const childNode = locale ? <LocaleProvider locale={locale}>{children}</LocaleProvider> : children\n\n useEffect(() => {\n contextStore.setState(config)\n }, [config])\n\n return <ToolkitsContext.Provider value={config}>{childNode}</ToolkitsContext.Provider>\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ContextProvider.displayName = 'ContextProvider'\n}\n\nexport default ContextProvider\n","import type { ContextState } from './context'\nimport ContextProvider, { contextStore, useToolkitsContext } from './Provider'\nexport { ContextProvider, contextStore, useToolkitsContext }\nexport type { ContextState }\n","import { Button, Space, theme } from 'antd'\nimport type { Key, PropsWithChildren, ReactNode } from 'react'\nimport { Fragment } from 'react'\nimport { useTranslation } from '../locale'\n\nexport interface FilterFormWrapperProps extends PropsWithChildren {\n onConfirm?: () => void | Promise<void>\n onReset?: () => void\n extras?: { key: Key; children: ReactNode }[]\n isConfirming?: boolean\n buttonsAlign?: 'left' | 'right' | 'bottom'\n showReset?: boolean\n}\n\nconst FilterFormWrapper = (props: FilterFormWrapperProps) => {\n const { extras, isConfirming, onConfirm, onReset, children, buttonsAlign = 'left', showReset } = props\n const { t } = useTranslation()\n const {\n token: { colorFillAlter, lineWidth, lineType, colorBorder, borderRadiusLG },\n } = theme.useToken()\n\n const style = {\n maxWidth: 'none',\n background: colorFillAlter,\n borderWidth: lineWidth,\n borderStyle: lineType,\n borderColor: colorBorder,\n borderRadius: borderRadiusLG,\n padding: 24,\n marginBottom: 24,\n }\n\n return (\n <div style={style}>\n <div className={`flex ${buttonsAlign === 'bottom' ? 'flex-col' : 'flex-row'}`}>\n <div className={`${buttonsAlign === 'left' ? 'flex-grow-0' : 'flex-1'}`}>{children}</div>\n <div className={`${buttonsAlign === 'bottom' ? 'text-end' : 'text-start'} ml-4`}>\n <Space>\n <Button type=\"primary\" loading={isConfirming} onClick={onConfirm}>\n {t('FilterFormWrapper.confirmText')}\n </Button>\n {extras?.map(item => <Fragment key={item.key}>{item.children}</Fragment>)}\n {showReset && <Button onClick={onReset}>{t('FilterFormWrapper.resetText')}</Button>}\n </Space>\n </div>\n </div>\n </div>\n )\n}\n\nexport default FilterFormWrapper\n","import type { PropsWithChildren, ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\nimport { flushSync } from 'react-dom'\nimport { createRoot } from 'react-dom/client'\n\nconst splitByTags = (str: string) => {\n const regex = /(<[^>]*>)/\n return str.split(regex).filter(part => part !== '')\n}\n\nfunction renderToString(node: ReactNode): Promise<string> {\n const container = document.createElement('div')\n const root = createRoot(container)\n\n return new Promise(resolve => {\n setTimeout(() => {\n flushSync(() => {\n root.render(node)\n })\n resolve(container.innerHTML)\n })\n })\n}\n\nexport interface HighlightTextsProps extends PropsWithChildren {\n texts: Array<string | number>\n}\n\nconst Highlight = (props: HighlightTextsProps) => {\n const { texts, children } = props\n const [htmlString, setHtmlString] = useState<string>('')\n\n useEffect(() => {\n renderToString(children).then(str => {\n const result = splitByTags(str)\n\n for (const text of texts) {\n for (let index = 0; index < result.length; index++) {\n // TODO: 忽略 HTML tag\n result[index] = result[index].replace(String(text), `<span style='color: #DC143C;'>${text}</span>`)\n }\n }\n\n setHtmlString(result.join(''))\n })\n }, [children, texts])\n\n return <div dangerouslySetInnerHTML={{ __html: htmlString }}></div>\n}\n\nexport default Highlight\n","import type { DetailedHTMLProps, FC, ImgHTMLAttributes } from 'react'\nimport logoUrl from './logo.png'\n\nexport type LogoProps = Omit<DetailedHTMLProps<ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, 'src' | 'alt'>\n\nconst Logo: FC<LogoProps> = props => {\n return <img src={logoUrl} alt=\"logo\" {...props} />\n}\n\nexport default Logo\n","export { default as Logo } from './Logo'\nexport type { LogoProps } from './Logo'\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\n\nexport interface NavState {\n openKeys: string[]\n selectedKeys: string[]\n setOpenKeys: (keys: string[]) => void\n setSelectedKeys: (keys: string[]) => void\n}\n\nexport const useNavStore = create<NavState>()(\n persist(\n set => ({\n openKeys: [],\n setOpenKeys: keys => set({ openKeys: keys }),\n selectedKeys: [],\n setSelectedKeys: keys => set({ selectedKeys: keys }),\n }),\n {\n name: 'nav',\n storage: createJSONStorage(() => localStorage),\n partialize: state => ({\n openKeys: state.openKeys,\n selectedKeys: state.selectedKeys,\n }),\n },\n ),\n)\n","import type { ItemType, MenuDividerType, MenuItemGroupType, MenuItemType, SubMenuType } from 'antd/es/menu/interface'\nimport type { ReactNode } from 'react'\nimport { Link } from 'react-router-dom'\nimport type { Merge } from 'ts-essentials'\nimport type { MenuItemGroupType2, MenuItemType2, NavMenuItem, SubMenuType2 } from './types'\n\nconst withLink = (label?: ReactNode, route?: string): ReactNode => {\n if (route) {\n return <Link to={route}>{label}</Link>\n }\n\n return label\n}\n\nexport function checkChildren(children: NavMenuItem[], permissions?: Record<string, boolean>): boolean {\n return (children ?? []).some(child => {\n if (child === null) {\n return false\n } else if ((child as MenuDividerType).type === 'divider') {\n return true\n } else {\n if ((child as SubMenuType2 | MenuItemGroupType2).children) {\n return checkChildren((child as SubMenuType2 | MenuItemGroupType2).children ?? [], permissions)\n } else {\n return !permissions || !(child as MenuItemType2).code || permissions[(child as MenuItemType2).code as string]\n }\n }\n })\n}\n\nexport function transformItems(items: NavMenuItem[], permissions?: Record<string, boolean>) {\n const result: ItemType[] = []\n\n for (let i = 0; i < items.length; i++) {\n if (items[i] === null) {\n result[i] = null\n } else if ((items[i] as MenuDividerType).type === 'divider') {\n result[i] = { ...items[i] } as MenuDividerType\n } else {\n if ((items[i] as SubMenuType2 | MenuItemGroupType2).children) {\n const { children, ...restProps } = items[i] as SubMenuType2 | MenuItemGroupType2\n\n result[i] = checkChildren(children ?? [], permissions)\n ? ({\n ...restProps,\n children: transformItems(children ?? [], permissions),\n } as SubMenuType | MenuItemGroupType)\n : null\n } else {\n const { route, label, code, ...restProps } = items[i] as MenuItemType2\n const isPass = !code || !permissions || permissions[code]\n\n result[i] = isPass\n ? ({\n ...restProps,\n label: withLink(label, route),\n } as MenuItemType)\n : null\n }\n }\n }\n\n return result\n}\n\n// 拍平导航配置,并且注入 keypath 字段\nexport function flatItems(\n items: NavMenuItem[],\n result: Merge<MenuItemType2, { keypath?: string[] }>[] = [],\n keypath: string[] = [],\n) {\n for (const item of items) {\n const children = (item as SubMenuType2 | MenuItemGroupType2)?.children as NavMenuItem[]\n\n if (Array.isArray(children)) {\n const keys =\n (item as MenuItemGroupType2)!.type !== 'group' && item!.key ? [...keypath, item!.key as string] : keypath\n flatItems(children, result, keys)\n } else if (item) {\n result.push(Object.assign(item as MenuItemType2, { keypath }))\n }\n }\n\n return result\n}\n","import { Menu, Spin } from 'antd'\nimport { memo, useCallback, useEffect, useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { usePermissions } from '../../hooks/permission'\nimport { useNavStore } from './stores'\nimport type { NavMenuItem } from './types'\nimport { flatItems, transformItems } from './utils'\n\nexport interface NavMenuProps {\n items?: NavMenuItem[]\n}\n\nconst NavMenu = memo(function NavMenu(props: NavMenuProps) {\n const { items } = props\n const location = useLocation()\n const flattenItems = useMemo(() => flatItems(items ?? []), [items])\n const codes = useMemo(() => flattenItems.map(item => item.code).filter(Boolean) as string[], [flattenItems])\n const { data: permissions, isLoading } = usePermissions(codes, true)\n const internalItems = useMemo(() => transformItems(items ?? [], permissions), [items, permissions])\n const { openKeys, selectedKeys, setOpenKeys, setSelectedKeys } = useNavStore()\n\n const onOpenChange = useCallback(\n (keys: string[]) => {\n const lastOpenKey = keys?.find(key => openKeys?.indexOf(key) === -1)\n const match = flattenItems.find(item => lastOpenKey === item.key)\n setOpenKeys((match?.keypath ?? [lastOpenKey]) as string[])\n },\n [flattenItems, openKeys, setOpenKeys],\n )\n\n useEffect(() => {\n const match = flattenItems.find(item => location.pathname === item.route)\n\n if (match) {\n const key = match.key as string\n const keypath = match.keypath as string[]\n setSelectedKeys([key])\n setOpenKeys(keypath)\n }\n }, [flattenItems, location])\n\n if (isLoading) {\n return (\n <div className=\"flex justify-center items-center\" style={{ height: 'calc(100vh - 64px)' }}>\n <Spin />\n </div>\n )\n }\n\n return (\n <Menu\n style={{ borderRight: 'none' }}\n items={internalItems}\n mode=\"inline\"\n openKeys={openKeys}\n selectedKeys={selectedKeys}\n onOpenChange={onOpenChange}\n />\n )\n})\n\nif (process.env.NODE_ENV === 'development') {\n NavMenu.displayName = 'NavMenu'\n}\n\nexport default NavMenu\n","export { default as NavMenu } from './NavMenu'\nexport type { NavMenuItem } from './types'\n","export const SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\nexport const NOT_REGISTERED = 'notRegistered'\n","import { jwtDecode } from 'jwt-decode'\nimport { useNavigate } from 'react-router-dom'\nimport useSWRImmutable from 'swr/immutable'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport { NOT_REGISTERED } from '../constants'\nimport { request, RequestError } from '../utils/request'\n\ninterface UserInfo {\n authorityId: string\n exp: number\n}\n\nexport interface TokenState {\n token: string\n getUser: () => UserInfo | null\n setToken: (token: string) => void\n clearToken: () => void\n}\n\nexport const useTokenStore = create<TokenState>()(\n persist(\n (set, get, store) => ({\n token: '',\n getUser: () => {\n try {\n return jwtDecode(get().token) as UserInfo\n } catch (_) {\n return null\n }\n },\n setToken: token => set({ token }),\n clearToken: () => {\n get().setToken('')\n store.persist.clearStorage()\n },\n }),\n {\n name: 'token',\n partialize: state => ({ token: state.token }),\n },\n ),\n)\n\nexport function useTokenValidation(skip = false) {\n const { usePermissionApiV2 } = useToolkitsContext()\n const { clearToken } = useTokenStore()\n const navigate = useNavigate()\n\n const redirectToSignIn = (notRegistered?: boolean) => {\n clearToken()\n navigate('/sign_in', { state: { [NOT_REGISTERED]: notRegistered } })\n }\n\n return useSWRImmutable(\n !skip ? (usePermissionApiV2 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check') : null,\n (url: string) =>\n request(url, {\n method: 'POST',\n body: {\n permissions: ['100001'],\n },\n isGlobal: true,\n }),\n {\n onError: error => {\n if (error instanceof RequestError) {\n if (error.status === 401) {\n redirectToSignIn()\n } else if (error.status === 412) {\n redirectToSignIn(true)\n }\n }\n },\n },\n )\n}\n","/* eslint-disable jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid */\nimport { LogoutOutlined, UserOutlined } from '@ant-design/icons'\nimport type { MenuProps } from 'antd'\nimport { Dropdown, Space } from 'antd'\nimport type { FC } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTokenStore } from '../../hooks/token'\nimport { useTranslation } from '../locale'\n\ninterface UserWidgetProps {\n logoutRedirectUrl: string\n}\n\nconst UserWidget: FC<UserWidgetProps> = props => {\n const { logoutRedirectUrl } = props\n const { t } = useTranslation()\n const navigate = useNavigate()\n const { clearToken, getUser } = useTokenStore()\n const user = getUser()\n\n const items: MenuProps['items'] = [\n {\n key: '1',\n icon: <LogoutOutlined />,\n label: (\n <a\n onClick={() => {\n clearToken()\n navigate(logoutRedirectUrl)\n }}\n >\n {t('UserWidget.signOutText')}\n </a>\n ),\n },\n ]\n\n return (\n <div>\n <Dropdown\n menu={{\n selectable: true,\n items,\n }}\n placement=\"bottomRight\"\n >\n <a\n onClick={e => {\n e.preventDefault()\n }}\n >\n <Space align=\"center\">\n <span>{user?.authorityId}</span>\n <UserOutlined style={{ fontSize: '16px' }} />\n </Space>\n </a>\n </Dropdown>\n </div>\n )\n}\n\nexport default UserWidget\n","import type { StateStorage } from 'zustand/middleware'\n\n// 通过 SessionStorage 隔离数据,防止多开页面时的数据冲突。\n// 当 SessionStorage 不存在时,使用 LocalStorage。\nexport const mixedStorage: StateStorage = {\n getItem: (name: string): string | null => {\n return sessionStorage.getItem(name) || localStorage.getItem(name)\n },\n setItem: (name: string, value: string) => {\n sessionStorage.setItem(name, value)\n localStorage.setItem(name, value)\n },\n removeItem: async (name: string) => {\n sessionStorage.removeItem(name)\n localStorage.removeItem(name)\n },\n}\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { request } from '../../utils/request'\nimport { mixedStorage } from '../../utils/storage'\nimport type { Game, GameState } from './types'\n\nexport interface LayoutState {\n collapsed: boolean\n setCollapsed: (collapsed: boolean) => void\n}\n\nexport const useLayoutStore = create<LayoutState>()(\n persist(\n set => ({\n collapsed: false,\n setCollapsed: collapsed => set({ collapsed }),\n }),\n {\n name: 'layout',\n storage: createJSONStorage(() => localStorage),\n partialize: state => ({ collapsed: state.collapsed }),\n },\n ),\n)\n\nexport const useGameStore = create<GameState>()(\n persist(\n (set, get) => ({\n initialized: false,\n isLoading: false,\n switching: false,\n game: null,\n games: [],\n async setGame(id) {\n const { initialized, refetchGames } = get()\n\n if (!initialized) {\n await refetchGames()\n }\n\n const matchedGame = (get().games ?? []).find(item => item.game_id === id)\n set({ game: matchedGame ?? null })\n },\n async refetchGames() {\n if (!get().isLoading) {\n try {\n set({ isLoading: true })\n const response = await request<{ list: Game[] }>('/api/game/list')\n set({ games: response.data?.list ?? [] })\n } finally {\n set({\n initialized: true,\n isLoading: false,\n })\n }\n }\n },\n setSwitching: (switching: boolean) => set({ switching }),\n }),\n {\n name: 'game',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({ game: state.game }),\n },\n ),\n)\n","import * as Antd from 'antd'\nimport { Empty } from 'antd'\nimport { type FC, type PropsWithChildren } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { useTranslation } from '../locale'\nimport { useGameStore } from './stores'\n\nconst { Spin } = Antd\n\ninterface ContentWrapperProps extends PropsWithChildren {\n hideGameSelect?: boolean\n}\n\nconst ContentWrapper: FC<ContentWrapperProps> = props => {\n const { hideGameSelect, children } = props\n const { usePermissionApiV2 } = useToolkitsContext()\n const { game, isLoading } = useGameStore()\n const { t } = useTranslation()\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n />\n )\n }\n\n if (usePermissionApiV2 && !hideGameSelect && !game) {\n return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={t('RequireGame.description')} />\n }\n\n return children\n}\n\nexport default ContentWrapper\n","import { Select, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect } from 'react'\nimport { useTranslation } from '../locale'\nimport { useGameStore } from './stores'\nimport type { Game } from './types'\n\nconst { Text } = Typography\n\nexport interface GameSelectProps {\n filter?: (game: Game) => boolean\n onGameChange?: (game: Game) => void\n}\n\nconst GameSelect: FC<GameSelectProps> = props => {\n const { filter, onGameChange } = props\n const { t } = useTranslation()\n const { game, games, isLoading, refetchGames, setGame } = useGameStore()\n\n useEffect(() => {\n refetchGames()\n }, [])\n\n const options = games\n ?.filter(item => filter?.(item) ?? true)\n ?.map(item => ({\n label: item.name,\n value: item.game_id,\n }))\n\n const onChange = async (id: number) => {\n setGame(id)\n onGameChange?.(games.find(item => item.game_id === id)!)\n }\n\n return (\n <Space>\n <Text>{t('GameSelect.label')}</Text>\n <Select<number>\n showSearch\n optionFilterProp=\"label\"\n value={game?.game_id}\n placeholder={t('GameSelect.placeholder')}\n loading={isLoading}\n style={{ width: '200px' }}\n options={options}\n onChange={onChange}\n />\n </Space>\n )\n}\n\nexport default GameSelect\n","\n.expand {\n animation-duration: 0.2s;\n animation-name: expand;\n}\n\n@keyframes expand {\n 0%, 50% {\n width: 0;\n opacity: 0;\n }\n\n 75% {\n width: 100%;\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n","import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'\nimport * as Antd from 'antd'\nimport { Button, Divider, Space } from 'antd'\nimport type { FC, Key, PropsWithChildren, ReactNode } from 'react'\nimport { Suspense } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { Logo } from '../logo'\nimport type { NavMenuItem } from '../navMenu'\nimport { NavMenu } from '../navMenu'\nimport UserWidget from '../userWidget'\nimport ContentWrapper from './ContentWrapper'\nimport type { GameSelectProps } from './GameSelect'\nimport GameSelect from './GameSelect'\nimport { useLayoutStore } from './stores'\nimport './style.css'\n\nconst { Spin, theme } = Antd\nconst { Header, Sider, Content } = Antd.Layout\n\ntype HeaderExtra = { key: Key; children: ReactNode }\n\nexport interface LayoutProps extends Pick<GameSelectProps, 'filter' | 'onGameChange'> {\n title?: ReactNode\n items?: NavMenuItem[]\n hideGameSelect?: boolean\n navWidth?: string | number\n logoutRedirectUrl: string\n headerExtra?: {\n left?: HeaderExtra[]\n right?: HeaderExtra[]\n }\n}\n\nconst Layout: FC<PropsWithChildren<LayoutProps>> = props => {\n const { title, items, headerExtra, hideGameSelect, children, navWidth, logoutRedirectUrl, filter, onGameChange } =\n props\n const {\n token: { colorBgContainer, colorBorder },\n } = theme.useToken()\n const { usePermissionApiV2, localeDropdownMenu } = useToolkitsContext()\n const { collapsed, setCollapsed } = useLayoutStore()\n\n const onCollapse = async () => {\n setCollapsed(!collapsed)\n }\n\n return (\n <Antd.Layout>\n <Sider\n collapsible\n theme=\"light\"\n trigger={null}\n collapsed={collapsed}\n width={navWidth}\n style={{\n height: '100vh',\n overflow: 'auto',\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colorBorder,\n }}\n >\n <div className=\"flex gap-2 px-6 py-4 overflow-hidden\">\n <Logo width={32} height={32} />\n {!collapsed && <div className=\"h-8 flex items-center expand\">{title}</div>}\n </div>\n <NavMenu items={items} />\n </Sider>\n <Antd.Layout>\n <Header\n style={{\n padding: '0 24px',\n background: colorBgContainer,\n }}\n >\n <div className=\"flex justify-between items-center h-full\">\n <Space size=\"small\" split={<Divider type=\"vertical\" />} className=\"mr-6\">\n <Button\n type=\"text\"\n icon={collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}\n style={{ fontSize: '16px' }}\n onClick={onCollapse}\n />\n {usePermissionApiV2 && !hideGameSelect && <GameSelect filter={filter} onGameChange={onGameChange} />}\n {headerExtra?.left?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n </Space>\n <Space size=\"small\" split={<Divider type=\"vertical\" />}>\n {headerExtra?.right?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n {localeDropdownMenu}\n <UserWidget logoutRedirectUrl={logoutRedirectUrl} />\n </Space>\n </div>\n </Header>\n <Content\n style={{\n overflow: 'auto',\n padding: '24px 16px',\n maxHeight: 'calc(100vh - 64px)',\n }}\n >\n <Suspense\n fallback={\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: '200px',\n }}\n />\n }\n >\n <ContentWrapper>{children}</ContentWrapper>\n </Suspense>\n </Content>\n </Antd.Layout>\n </Antd.Layout>\n )\n}\n\nexport default Layout\n","export { default as Layout } from './Layout'\nexport * from './stores'\nexport type * from './types'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { pick } from 'lodash-es'\nimport type { StringifyOptions } from 'query-string'\nimport qs from 'query-string'\nimport { contextStore } from '../components/contextProvider'\nimport { useGameStore } from '../components/layout'\nimport { useTokenStore } from '../hooks/token'\n\nexport class RequestError extends Error {\n status!: number\n code?: number\n\n constructor(opts: { message?: string; status: number; code?: number }) {\n super(opts?.message)\n this.status = opts.status\n this.code = opts.code\n }\n}\n\ntype JsonResponse<T> = (\n | {\n code: number\n status?: never\n }\n | {\n code?: never\n status: number\n }\n) & {\n data: T\n msg: string\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n body?: Record<string | number, any> | FormData | null\n params?: Record<string | number, any> | URLSearchParams | null\n responseType?: 'json' | 'blob' | 'text'\n isGlobal?: boolean\n}\n\nexport type RequestResponse<T> = Pick<Response, 'headers' | 'status' | 'statusText' | 'url'> & { data: T }\n\nexport async function request<T = any>(url: string, opts: RequestOptions = {}): Promise<RequestResponse<T>> {\n const _opts = Object.assign(opts, { responseType: opts.responseType ?? 'json' })\n const { body, params, responseType, isGlobal, ...rest } = _opts\n\n if (!url) {\n throw new RequestError({\n status: 400,\n message: 'URL is required',\n })\n }\n\n // 处理查询参数,如果 url 中已经有查询参数,需要合并。\n const parsed = qs.parseUrl(url)\n const queryParams = Object.assign({}, parsed.query, params)\n const options: StringifyOptions = {\n skipNull: true,\n skipEmptyString: true,\n strict: true,\n encode: true,\n }\n const queryString = qs.stringify(queryParams, options)\n url = queryString ? `${parsed.url}?${queryString}` : url\n\n const headers = new Headers(_opts.headers)\n\n const token = useTokenStore?.getState()?.token\n\n if (token) {\n headers.set('Authorization', `Bearer ${token}`)\n }\n\n // TODO: 把自动注入 App-ID 移除掉。\n if (contextStore.getState().usePermissionApiV2) {\n if (isGlobal) {\n headers.set('App-ID', 'global')\n } else {\n const game = useGameStore.getState().game\n if (game) {\n headers.set('App-ID', String(game.game_id))\n }\n }\n }\n\n if (responseType === 'blob') {\n headers.append('Accept', 'application/octet-stream')\n } else if (responseType === 'json') {\n headers.append('Accept', 'application/json')\n }\n\n const isJsonBody = !!(body && typeof body === 'object' && !(body instanceof FormData))\n\n if (isJsonBody) {\n headers.set('Content-Type', 'application/json')\n }\n\n const requestOpts = Object.assign(rest, {\n headers,\n body: isJsonBody ? JSON.stringify(body) : body,\n }) as RequestInit\n\n const response = await fetch(url, requestOpts)\n\n if (!response.ok) {\n throw new RequestError({ status: response.status })\n }\n\n let data: T\n\n if (responseType === 'blob') {\n data = (await response.blob()) as T\n } else if (responseType === 'json') {\n const json = (await response.json()) as JsonResponse<T>\n if (json.code === 0 || json.code === 200 || json.status === 0) {\n data = json.data\n } else {\n throw new RequestError({\n code: json.code,\n status: response.status,\n message: json.msg,\n })\n }\n } else {\n data = (await response.text()) as T\n }\n\n return {\n ...pick(response, ['headers', 'status', 'statusText', 'url']),\n data,\n }\n}\n","import useSWR from 'swr'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport { request } from '../utils/request'\n\ntype PermissionCheckResult = { has_all: true } | { [k: string]: boolean }\n\nexport function usePermissions(codes: string[], isGlobal?: boolean) {\n const { usePermissionApiV2 } = useToolkitsContext()\n const { data, isValidating, isLoading } = useSWR(\n codes.length > 0 ? [usePermissionApiV2 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check', codes] : null,\n ([url]) =>\n request<PermissionCheckResult>(url, {\n method: 'POST',\n body: {\n permissions: codes,\n },\n isGlobal,\n }).then(response => {\n if (response.data?.has_all) {\n return codes.reduce(\n (acc, curr) => {\n acc[curr] = true\n return acc\n },\n {} as Record<string, boolean>,\n )\n }\n\n return codes.reduce(\n (acc, curr) => {\n acc[curr] = (response.data as Record<string, boolean>)?.[curr] ?? false\n return acc\n },\n {} as Record<string, boolean>,\n )\n }),\n {\n revalidateOnFocus: false,\n },\n )\n\n return { data, isValidating, isLoading }\n}\n\nexport function usePermission(code: string | undefined, isGlobal?: boolean) {\n const { data, isValidating, isLoading } = usePermissions(code ? [code] : [], isGlobal)\n\n if (code === undefined) {\n return {\n accessible: true,\n isValidating: false,\n isLoading: false,\n }\n }\n\n return {\n accessible: data?.[code] ?? false,\n isValidating,\n isLoading,\n }\n}\n","import type { ButtonProps } from 'antd'\nimport { Button, Tooltip } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { useTranslation } from '../locale'\nimport { usePermissions } from '../../hooks/permission'\n\nexport interface PermissionButtonProps extends ButtonProps {\n code: string | string[]\n showLoading?: boolean\n isGlobal?: boolean\n}\n\nconst PermissionButton: FC<PropsWithChildren<PermissionButtonProps>> = props => {\n const { children, code, showLoading, isGlobal, disabled, ...restProps } = props\n const { data, isLoading } = usePermissions(Array.isArray(code) ? code : [code], isGlobal)\n const { t } = useTranslation()\n\n if (isLoading) {\n return (\n <Button loading={showLoading} disabled={!showLoading} {...restProps}>\n {children}\n </Button>\n )\n }\n\n if (!Object.values(data ?? {})?.some(Boolean)) {\n return (\n <Tooltip defaultOpen={false} title={t('global.noEntitlement')}>\n <Button disabled {...restProps}>\n {children}\n </Button>\n </Tooltip>\n )\n }\n\n return (\n <Button disabled={disabled} {...restProps}>\n {children}\n </Button>\n )\n}\n\nexport default PermissionButton\n","export { default as PermissionButton } from './PermissionButton'\nexport type { PermissionButtonProps } from './PermissionButton'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isEqual } from 'lodash-es'\nimport type { MutatorCallback, MutatorOptions } from 'swr'\nimport { mutate } from 'swr'\nimport { create } from 'zustand'\nimport type { QueryListPayload } from './QueryList'\n\ninterface QueryListState {\n keyMap: Map<string, string | null>\n payloadMap: Map<string, QueryListPayload>\n getPayload(route: string): QueryListPayload\n setPayload(route: string, payload: QueryListPayload): void\n refetch(route: string, payload?: QueryListPayload, force?: boolean): void\n mutate<Data = any, T = Data>(\n route: string,\n data?: T | Promise<T> | MutatorCallback<T>,\n opts?: boolean | MutatorOptions<Data, T>,\n ): Promise<T | undefined>\n jump(route: string, page?: number, force?: boolean): void\n}\n\nexport const useQueryListStore = create<QueryListState>((set, get) => ({\n keyMap: new Map(),\n payloadMap: new Map(),\n getPayload(route) {\n return get().payloadMap.get(route) ?? { page: 1 }\n },\n setPayload(route, payload) {\n set(state => ({\n payloadMap: new Map(state.payloadMap).set(route, payload),\n }))\n },\n refetch(route, payload, force = true) {\n const prevPayload = get().getPayload(route)\n const nextPayload = { ...prevPayload, ...payload }\n // FIXME: 后续使用 unstable_serialize 来比较前后的 key,因为仅仅比较 payload 会有问题\n if (isEqual(prevPayload, nextPayload)) {\n get().mutate(route, force)\n } else {\n get().setPayload(route, nextPayload)\n }\n },\n mutate(route, data, opts) {\n const key = get().keyMap.get(route)\n return mutate(key, data, opts)\n },\n // 不传 page 参数时,刷新当前页\n jump(route, page, force = true) {\n get().refetch(route, { page: page ?? get().getPayload(route).page }, force)\n },\n}))\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { App, Form, Result, Spin, Table } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { TableProps } from 'antd/es/table'\nimport type { ReactElement, ReactNode, Ref } from 'react'\nimport { cloneElement, forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport useSWR, { unstable_serialize } from 'swr'\nimport { usePermission } from '../../hooks/permission'\nimport type { RequestOptions } from '../../utils/request'\nimport { request } from '../../utils/request'\nimport { useToolkitsContext } from '../contextProvider'\nimport type { FilterFormWrapperProps } from '../filterFormWrapper'\nimport FilterFormWrapper from '../filterFormWrapper'\nimport { useGameStore } from '../layout'\nimport { useTranslation } from '../locale'\nimport { useQueryListStore } from './stores'\n\nexport interface ListResponse<T = any> {\n list: T[]\n total: number\n}\n\nexport interface QueryListPayload<FormValues = any> {\n page?: number\n size?: number\n formValue?: FormValues\n}\n\nexport enum QueryListAction {\n Confirm,\n Reset,\n Jump,\n Init,\n}\n\nexport interface QueryListDataType<Item> {\n dataSource: Item[]\n total: number\n}\n\nexport interface QueryListRef<Item, Value, Response> {\n response: Response | undefined\n dataSource: Item[] | undefined\n form: FormInstance<Value>\n}\n\nexport interface QueryListProps<Item extends AnyObject = AnyObject, Value = any, Response = any>\n extends Omit<TableProps<Item>, 'pagination' | 'dataSource' | 'loading'>,\n Pick<FilterFormWrapperProps, 'buttonsAlign' | 'showReset'> {\n code?: string\n isGlobal?: boolean\n route: string\n method?: 'GET' | 'POST'\n refreshInterval?: number\n // 无分页\n onePage?: boolean\n defaultSize?: number\n headers?: RequestOptions['headers']\n body?: RequestOptions['body'] | ((payload: QueryListPayload<Value>) => RequestOptions['body'])\n params?: RequestOptions['params'] | ((payload: QueryListPayload<Value>) => RequestOptions['params'])\n tableExtra?: ReactNode | ((form: FormInstance<Value>) => ReactNode)\n form?: FormInstance<Value>\n renderForm?: (form: FormInstance<Value>) => ReactElement\n extra?: (opts: { form: FormInstance<Value>; data: Response | undefined }) => ReactNode\n afterSuccess?: (action: QueryListAction, response: Response) => void\n getTotal?: (response: Response | undefined) => number | undefined\n getDataSource?: (response: Response | undefined, form: FormInstance<Value>) => Item[] | undefined\n}\n\nconst InternalQueryList = <\n Item extends AnyObject = AnyObject,\n Value = any,\n // 默认接口返回值类型为 ListResponse<Item>,当符合时无需设置 getTotal、getDataSource 就可以让组件正确获取 total 与 dataSource。\n Response = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Response>,\n ref: Ref<QueryListRef<Item, Value, Response>>,\n) => {\n const internalProps = {\n method: 'GET',\n defaultSize: 10,\n refreshInterval: 0,\n getTotal: (response: Response | undefined) => (response as ListResponse<Item>)?.total,\n getDataSource: (response: Response | undefined) => (response as ListResponse<Item>)?.list,\n ...props,\n }\n\n const {\n route,\n code,\n headers,\n isGlobal,\n onePage,\n method,\n buttonsAlign,\n showReset,\n defaultSize,\n refreshInterval,\n tableExtra,\n form,\n extra,\n renderForm,\n afterSuccess,\n body,\n params,\n getTotal,\n getDataSource,\n ...tableProps\n } = internalProps\n\n const { notification } = App.useApp()\n const { t } = useTranslation()\n const [_form] = Form.useForm<Value>(form)\n const { accessible, isLoading } = usePermission(code, isGlobal)\n const action = useRef<QueryListAction>(QueryListAction.Init)\n const originalData = useRef<Response>()\n const { game } = useGameStore()\n const { usePermissionApiV2 } = useToolkitsContext()\n const [isValid, setIsValid] = useState(false)\n const { keyMap, getPayload, refetch } = useQueryListStore()\n const { page, size = defaultSize, formValue } = getPayload(route)\n const payload = { page, size, formValue }\n\n const _body = useMemo(() => {\n return typeof body === 'function'\n ? body(payload)\n : method === 'POST'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n ...body,\n }\n : undefined\n }, [onePage, method, page, size, formValue, body])\n\n const _params = useMemo(\n () =>\n typeof params === 'function'\n ? params(payload)\n : method === 'GET'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n ...params,\n }\n : undefined,\n [onePage, method, page, size, formValue, params],\n )\n\n const _headers = useMemo(() => {\n const newHeaders = new Headers(headers)\n\n if (usePermissionApiV2) {\n if (isGlobal) {\n newHeaders.set('App-ID', 'global')\n } else if (game) {\n newHeaders.set('App-ID', String(game.id))\n }\n }\n return newHeaders\n }, [usePermissionApiV2, isGlobal, game, headers])\n\n const key = useMemo(() => {\n if (!accessible || !isValid) {\n return null\n }\n\n const httpOption = {\n route,\n method,\n body: _body,\n params: _params,\n headers: _headers,\n }\n\n const serializedKey = unstable_serialize(httpOption)\n keyMap.set(route, serializedKey)\n return serializedKey\n }, [method, route, _body, _params, _headers, isValid, accessible])\n\n const shouldPoll = useRef(false)\n\n const { data, isValidating } = useSWR(\n key,\n async () => {\n const response = await request<Response>(route, {\n method,\n body: _body,\n params: _params,\n headers: _headers,\n })\n\n return response.data\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n refreshInterval: shouldPoll.current ? refreshInterval : 0,\n onSuccess(response) {\n shouldPoll.current = true\n afterSuccess?.(action.current, response)\n },\n onError(error) {\n shouldPoll.current = false\n // FIXME: 暂时在此处处理错误,后续需要优化。\n notification.error({\n message: '请求出错',\n description: error.message,\n })\n },\n },\n )\n\n const dataSource = useMemo(() => getDataSource(data, _form), [data, form, getDataSource])\n const total = useMemo(() => getTotal(data), [data, getTotal])\n\n const pagination = useMemo(\n () =>\n !onePage && {\n showSizeChanger: true,\n showQuickJumper: true,\n current: page,\n pageSize: size,\n total,\n onChange: async (currentPage: number, currentSize: number) => {\n action.current = QueryListAction.Jump\n refetch(route, {\n page: currentPage,\n size: currentSize,\n })\n },\n },\n [page, size, onePage, total],\n )\n\n const onConfirm = async () => {\n action.current = QueryListAction.Confirm\n try {\n await _form.validateFields()\n setIsValid(true)\n refetch(route, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n const onReset = async () => {\n action.current = QueryListAction.Reset\n _form.resetFields()\n\n try {\n await _form.validateFields({ validateOnly: true })\n setIsValid(true)\n refetch(route, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n useEffect(() => {\n // 在表单字段注册到 Form 实例前调用 validateFields 会得到错误的结果,所以需要延迟调用。\n const timer = setTimeout(async () => {\n try {\n _form.resetFields()\n const value = await _form.validateFields({ validateOnly: true })\n refetch(route, {\n page: 1,\n formValue: value,\n })\n setIsValid(true)\n } catch (err) {\n setIsValid(false)\n }\n }, 0)\n\n return () => {\n clearTimeout(timer)\n }\n }, [form, game])\n\n useImperativeHandle(ref, () => ({\n response: data,\n dataSource,\n form: _form,\n }))\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n const formRenderer = typeof renderForm === 'function' && (\n <FilterFormWrapper\n showReset={showReset}\n buttonsAlign={buttonsAlign}\n isConfirming={isValidating}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {cloneElement(renderForm(_form), {\n onKeyUp: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n onConfirm()\n }\n },\n })}\n </FilterFormWrapper>\n )\n\n const extraRenderer = extra && <div className=\"mt-2 mb-4\">{extra({ form: _form, data: originalData.current })}</div>\n\n return (\n <div>\n {formRenderer}\n {extraRenderer}\n {typeof tableExtra === 'function' ? tableExtra(_form) : tableExtra}\n <Table {...tableProps} dataSource={dataSource} loading={isValidating} pagination={pagination} />\n </div>\n )\n}\n\nconst QueryList = forwardRef(InternalQueryList) as <\n Item extends AnyObject = AnyObject,\n Value extends object | undefined = undefined,\n Response = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Response> & { ref?: Ref<QueryListRef<Item, Value, Response>> },\n) => ReactElement\n\nexport default QueryList\n","export { default as QueryList, QueryListAction } from './QueryList'\nexport type { QueryListProps, QueryListRef } from './QueryList'\nexport { useQueryListStore } from './stores'\n","import type { ModalProps } from 'antd'\nimport { Modal } from 'antd'\nimport { type ReactNode, useMemo, useState } from 'react'\nimport { create } from 'zustand'\n\ninterface ModalState {\n open: Map<number, boolean>\n getOpen: (uuid: number) => boolean\n show: (uuid: number) => void\n hide: (uuid: number) => void\n hideAll: () => void\n}\n\nexport const useModalStore = create<ModalState>((set, get) => ({\n open: new Map(),\n getOpen: uuid => get().open.get(uuid) ?? false,\n show(uuid) {\n set({ open: new Map(get().open).set(uuid, true) })\n },\n hide(uuid) {\n set({ open: new Map(get().open).set(uuid, false) })\n },\n hideAll() {\n set({ open: new Map() })\n },\n}))\n\nexport interface UseModalOperation {\n hide: () => void\n}\n\nexport interface UseModalProps extends Omit<ModalProps, 'open' | 'confirmLoading' | 'onOk' | 'onCancel'> {\n content?: ReactNode | ((operation: UseModalOperation) => ReactNode)\n onConfirm?: () => void | Promise<void>\n}\n\nlet id = 0\n\nexport function useModal(props: UseModalProps) {\n const { content, onConfirm, ...modalProps } = props\n const uuid = useMemo(() => ++id, [])\n const modalStore = useModalStore()\n const open = modalStore.getOpen(uuid)\n const [confirmLoading, setConfirmLoading] = useState(false)\n\n const isRenderFunction = typeof content === 'function'\n\n const show = () => {\n modalStore.show(uuid)\n }\n\n const hide = () => {\n modalStore.hide(uuid)\n }\n\n const onCancel: ModalProps['onCancel'] = () => {\n hide()\n }\n\n const onOk = async () => {\n try {\n setConfirmLoading(true)\n await onConfirm?.()\n } finally {\n setConfirmLoading(false)\n }\n }\n\n const internalModal = (\n <Modal {...modalProps} open={open} confirmLoading={confirmLoading} onOk={onOk} onCancel={onCancel}>\n {isRenderFunction ? content({ hide }) : content}\n </Modal>\n )\n\n return {\n uuid,\n show,\n hide,\n modal: internalModal,\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance, FormProps } from 'antd'\nimport { Form } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { ReactNode } from 'react'\nimport { useState } from 'react'\nimport type { UseModalOperation, UseModalProps } from './modal'\nimport { useModal } from './modal'\n\ntype RecursivePartial<T> =\n NonNullable<T> extends object\n ? {\n [P in keyof T]?: NonNullable<T[P]> extends (infer U)[]\n ? RecursivePartial<U>[]\n : NonNullable<T[P]> extends object\n ? RecursivePartial<T[P]>\n : T[P]\n }\n : T\n\nexport interface UseFormModalProps<Values extends AnyObject = AnyObject, ExtraValues = any>\n extends Omit<UseModalProps, 'afterClose' | 'onConfirm' | 'content'> {\n formProps?: Omit<FormProps, 'form'>\n form?: FormInstance<Values>\n content?: ReactNode | ((extraValues: ExtraValues, operation: UseModalOperation) => ReactNode)\n onConfirm?: (values: Values, extraValues: ExtraValues) => void | Promise<void>\n}\n\nexport function useFormModal<Values extends AnyObject = AnyObject, ExtraValues = any>(\n props: UseFormModalProps<Values, ExtraValues>,\n) {\n const { content, form, formProps, onConfirm, ...modalProps } = props\n const [internalExtraValues, setInternalExtraValues] = useState<ExtraValues>({} as ExtraValues)\n let [internalForm] = Form.useForm<Values>()\n internalForm = form || internalForm\n\n const isRenderFunction = typeof content === 'function'\n\n const hanldeConfirm = async () => {\n const values = await internalForm.validateFields()\n await onConfirm?.(values, internalExtraValues as ExtraValues)\n hide()\n }\n\n const afterClose = () => {\n internalForm.resetFields()\n }\n\n const { uuid, show, hide, modal } = useModal({\n ...modalProps,\n content: operation => (\n <Form {...formProps} form={internalForm}>\n {isRenderFunction ? content(internalExtraValues as ExtraValues, operation) : content}\n </Form>\n ),\n onConfirm: hanldeConfirm,\n afterClose,\n })\n\n const onShow = ({\n initialValues,\n extraValues,\n }: {\n initialValues?: RecursivePartial<Values>\n extraValues?: ExtraValues\n } = {}) => {\n if (extraValues) {\n setInternalExtraValues(extraValues)\n }\n\n if (initialValues) {\n internalForm.setFieldsValue(initialValues)\n }\n\n show()\n }\n\n return {\n uuid,\n show: onShow,\n hide,\n modal,\n }\n}\n","import useSWR from 'swr'\nimport useSWRMutation from 'swr/mutation'\nimport { useToolkitsContext } from '../../../components/contextProvider'\nimport type { Game } from '../../../components/gameSelect'\nimport { usePermission } from '../../../hooks/permission'\nimport { request } from '../../../utils/request'\nimport type { PermissionEnumItem, RoleEnumItem, RoleV1, RoleV2 } from '../types'\n\nexport function useAllPermissions() {\n return useSWR('/api/usystem/user/allPermssions', url =>\n request<PermissionEnumItem[]>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useAllPermissionsV2() {\n return useSWR('/api/usystem/user/allPermissionsV2', url =>\n request<{\n game: Game[]\n permission: PermissionEnumItem[]\n }>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useAllRoles() {\n const { accessible } = usePermission('200005', true)\n return useSWR(accessible ? '/api/usystem/role/all' : null, url =>\n request<RoleEnumItem[]>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useRole(name: string) {\n const { usePermissionApiV2 } = useToolkitsContext()\n return useSWR(`/api/usystem/role/${usePermissionApiV2 ? 'infoV2' : 'info'}?name=${name}`, (url: string) =>\n request<RoleV1 | RoleV2>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useCreateRole() {\n const { usePermissionApiV2 } = useToolkitsContext()\n\n return useSWRMutation(\n usePermissionApiV2 ? '/api/usystem/role/createV2' : '/api/usystem/role/create',\n (\n url: string,\n {\n arg,\n }: {\n arg: { name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useUpdateRole() {\n const { usePermissionApiV2 } = useToolkitsContext()\n\n return useSWRMutation(\n usePermissionApiV2 ? '/api/usystem/role/updateV2' : '/api/usystem/role/update',\n (\n url: string,\n {\n arg,\n }: {\n arg: { id: number; name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useRemoveRole() {\n return useSWRMutation(\n '/api/usystem/role/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: number; name: string }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useCreateUser() {\n return useSWRMutation(\n '/api/usystem/user/create',\n (\n url,\n {\n arg,\n }: {\n arg: { name: string; roles: string[] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useUpdateUser() {\n return useSWRMutation(\n '/api/usystem/user/update',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string; roles: string[] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useRemoveUser() {\n return useSWRMutation(\n '/api/usystem/user/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n","import { Checkbox, Col, Collapse, Row } from 'antd'\nimport type { CheckboxChangeEvent } from 'antd/es/checkbox'\nimport type { FC } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport type { PermissionEnumItem } from '../../types'\n\ninterface PermissionCollapseProps {\n expand?: boolean\n permissions?: PermissionEnumItem[]\n readonly?: boolean\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nconst PermissionCollapse: FC<PermissionCollapseProps> = props => {\n const { permissions, readonly, expand, value, onChange } = props\n const [activeKey, setActiveKey] = useState<string[]>([])\n const [checkedMap, setCheckedMap] = useState<Record<string, boolean>>({})\n const [internalValue, setInternalValue] = useState<string[]>(value ?? [])\n const { t } = useTranslation()\n\n const onCollapseChange = useCallback((key: string | string[]) => {\n setActiveKey(key as string[])\n }, [])\n\n const getCheckedValue = (checkedValue: boolean, codes: string[]) => {\n let tempValue: string[] = []\n\n if (checkedValue) {\n tempValue = [...new Set(internalValue.concat(codes))]\n } else {\n tempValue = internalValue.slice()\n\n codes.forEach(code => {\n const index = tempValue.findIndex(item => item === code)\n if (index > -1) {\n tempValue.splice(index, 1)\n }\n })\n }\n\n return tempValue\n }\n\n const onCheckChange = (e: CheckboxChangeEvent, codes: string[]) => {\n const checkedValue = getCheckedValue(e.target.checked, codes)\n setInternalValue(checkedValue)\n onChange?.(checkedValue)\n }\n\n useEffect(() => {\n setInternalValue(value ?? [])\n }, [value])\n\n useEffect(() => {\n if (expand) {\n setActiveKey((permissions ?? []).map(({ category }) => category))\n }\n }, [expand, permissions])\n\n useEffect(() => {\n const checkedValue = (permissions ?? []).reduce(\n (acc, curr) => {\n acc[curr.category] = curr.permissions.every(item => internalValue?.includes(item.value))\n return acc\n },\n {} as Record<string, boolean>,\n )\n\n setCheckedMap(checkedValue)\n }, [internalValue, permissions])\n\n return (\n <Collapse\n style={{ width: '100%' }}\n collapsible=\"header\"\n activeKey={activeKey}\n items={(permissions ?? []).map(item => ({\n key: item.category,\n label: item.category,\n extra: !readonly && (\n <Checkbox\n checked={checkedMap[item.category]}\n onChange={e => {\n onCheckChange(\n e,\n item.permissions.map(permission => permission.value),\n )\n }}\n >\n {t('global.selectAll')}\n </Checkbox>\n ),\n children: (\n <Checkbox.Group style={{ width: '100%' }} value={internalValue} disabled={readonly}>\n <Row gutter={[10, 10]} style={{ width: '100%' }}>\n {item.permissions.map(permission => (\n <Col key={permission.value} span={6}>\n <Checkbox\n value={permission.value}\n onChange={e => {\n onCheckChange(e, [permission.value])\n }}\n >\n {permission.label}\n </Checkbox>\n </Col>\n ))}\n </Row>\n </Checkbox.Group>\n ),\n }))}\n onChange={onCollapseChange}\n />\n )\n}\n\nexport default PermissionCollapse\n","import { Skeleton, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissions } from '../../hooks'\nimport type { RoleV1 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from '../permissionList'\n\nconst { Text } = Typography\n\ninterface PermissionListV1Props extends PermissionListPropsBase {\n value?: RoleV1['permissions']\n onChange?: (checkedValue: RoleV1['permissions']) => void\n}\n\nconst PermissionListV1: FC<PermissionListV1Props> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: permissions, isLoading, error } = useAllPermissions()\n const { t } = useTranslation()\n\n if (error) {\n return (\n <div className=\"flex justify-center\">\n <Text type=\"danger\">{t('PermissionList.failedDescription')}</Text>\n </div>\n )\n }\n\n return (\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value}\n permissions={permissions}\n readonly={readonly}\n expand={expand}\n onChange={onChange}\n />\n </Skeleton>\n )\n}\n\nexport default PermissionListV1\n","import { Button, Card, Divider, Empty, Select, Skeleton, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect, useState } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissionsV2 } from '../../hooks'\nimport type { RoleV2 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from '../permissionList'\n\nconst { Text } = Typography\nconst { Option } = Select\n\ninterface PermissionListV2Props extends PermissionListPropsBase {\n value?: RoleV2['permissions']\n onChange?: (checkedValue: RoleV2['permissions']) => void\n}\n\nconst PermissionListV2: FC<PermissionListV2Props> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: { permission, game: games } = {}, isLoading, error } = useAllPermissionsV2()\n const [gameList, setGameList] = useState<{ gameId: string; permissions: string[] }[]>([])\n const globalPermissions = permission?.filter(item => item.is_common)\n const gamePermissions = permission?.filter(item => !item.is_common)\n const { t } = useTranslation()\n\n useEffect(() => {\n const list: { gameId: string; permissions: string[] }[] = []\n\n Object.keys(value ?? {}).forEach(key => {\n if (key !== 'global') {\n list.push({ gameId: key, permissions: value?.[key] ?? [] })\n }\n })\n\n setGameList(list)\n }, [value])\n\n if (error) {\n return (\n <div className=\"flex justify-center\">\n <Text type=\"danger\">{t('PermissionList.failedDescription')}</Text>\n </div>\n )\n }\n\n const addGame = () => {\n setGameList(prev => [...prev, { gameId: '', permissions: [] }])\n }\n\n const removeGame = (index: number) => {\n setGameList(prev => prev.filter((_, i) => i !== index))\n }\n\n return (\n <div className=\"flex flex-col w-full\">\n <div className=\"mb-12\">\n <Divider dashed>{t('PermissionList.baseSectionTitle')}</Divider>\n </div>\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value?.global}\n readonly={readonly}\n permissions={globalPermissions}\n expand={expand}\n onChange={newValue => {\n onChange?.({\n ...value,\n global: newValue,\n })\n }}\n />\n </Skeleton>\n <div className=\"my-12\">\n <Divider dashed>{t('PermissionList.gameSectionTitle')}</Divider>\n </div>\n {gameList.map((item, index) => (\n <Card\n title={\n <Space>\n <Text>{t('global.game')}</Text>\n {readonly ? (\n <Text>{games?.find(game => game.id === item.gameId)?.name}</Text>\n ) : (\n <Select\n disabled={readonly}\n value={gameList[index].gameId || undefined}\n style={{ width: '160px' }}\n placeholder={t('PermissionList.gameSelectPlaceholder')}\n onChange={selectedValue => {\n setGameList(pev => {\n const temp = pev.slice()\n temp[index].gameId = selectedValue\n return temp\n })\n }}\n >\n {games?.map(game => (\n <Option key={game.id} value={game.id} disabled={gameList.some(({ gameId }) => gameId === game.id)}>\n {game.name}\n </Option>\n ))}\n </Select>\n )}\n </Space>\n }\n key={index}\n className=\"mb-6\"\n extra={\n !readonly && (\n <Button\n type=\"link\"\n onClick={() => {\n removeGame(index)\n }}\n >\n {t('PermissionList.removeText')}\n </Button>\n )\n }\n >\n {gameList[index].gameId ? (\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value?.[gameList[index].gameId]}\n readonly={readonly}\n expand={expand}\n permissions={gamePermissions}\n onChange={newValue => {\n onChange?.({\n ...value,\n [gameList[index].gameId]: newValue,\n })\n }}\n />\n </Skeleton>\n ) : (\n <Empty description={t('PermissionList.gameSectionDescription')} />\n )}\n </Card>\n ))}\n {!readonly && (\n <Button block type=\"dashed\" onClick={addGame}>\n {t('PermissionList.addText')}\n </Button>\n )}\n </div>\n )\n}\n\nexport default PermissionListV2\n","import type { FC } from 'react'\nimport { useToolkitsContext } from '../../../../components/contextProvider'\nimport type { RoleV1, RoleV2 } from '../../types'\nimport PermissionListV1 from '../permissionListV1'\nimport PermissionListV2 from '../permissionListV2'\n\nexport interface PermissionListPropsBase {\n expand?: boolean\n readonly?: boolean\n}\n\ninterface PermissionListProps extends PermissionListPropsBase {\n value?: RoleV1['permissions'] | RoleV2['permissions']\n onChange?: (checkedValue: RoleV1['permissions'] | RoleV2['permissions']) => void\n}\n\nconst PermissionList: FC<PermissionListProps> = (props: PermissionListProps) => {\n const { value } = props\n const { usePermissionApiV2 } = useToolkitsContext()\n\n return (\n <>\n {usePermissionApiV2 ? (\n <PermissionListV2 {...props} value={value as RoleV2['permissions']} />\n ) : (\n <PermissionListV1 {...props} value={value as RoleV1['permissions']} />\n )}\n </>\n )\n}\n\nexport default PermissionList\n","export interface PermissionEnumItem {\n category: string\n is_common?: boolean\n permissions: {\n label: string\n value: string\n route: string\n }[]\n}\n\nexport interface RoleEnumItem {\n id: string\n name: string\n}\n\nexport type RoleListItem = RoleV1 | RoleV2\n\nexport interface RoleV1 {\n id: number\n name: string\n ctime: string\n permissions: string[]\n}\n\nexport interface RoleV2 {\n id: number\n name: string\n ctime: string\n permissions: Record<string, string[]>\n}\n\nexport interface UserListItem {\n id: string\n name: string\n ctime: string\n roles: string[]\n}\n","export { default as PermissionList } from './components/permissionList'\nexport * from './hooks'\nexport * from './types'\n","import { UserAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Col, Form, Input, Row, Select, Space, Tag } from 'antd'\nimport { produce } from 'immer'\nimport type { FC } from 'react'\nimport { Link } from 'react-router-dom'\nimport Highlight from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { QueryList } from '../../../components/queryList'\nimport { useQueryListStore } from '../../../components/queryList/stores'\nimport type { UserListItem } from '../../../features/permission'\nimport { useAllRoles, useCreateUser, useRemoveUser, useUpdateUser } from '../../../features/permission'\nimport type { UseFormModalProps } from '../../../hooks/formModal'\nimport { useFormModal } from '../../../hooks/formModal'\n\nconst { Option } = Select\n\nexport const route = '/api/usystem/user/list'\n\ninterface FormSchema {\n id: string\n name: string\n roles: string[]\n}\n\ninterface ExtraValues {\n id: string\n}\n\nconst useModal = (isCreate?: boolean) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { jump, mutate } = useQueryListStore()\n const { data: roles, isLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n\n const title = isCreate ? t('UserList.createTitle') : t('UserList.updateTitle')\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} />\n </Form.Item>\n <Form.Item label={t('global.role')} name=\"roles\">\n <Select allowClear mode=\"multiple\" loading={isLoading}>\n {(roles ?? []).map(role => (\n <Option value={role.name} key={role.id}>\n {role.name}\n </Option>\n ))}\n </Select>\n </Form.Item>\n </>\n )\n\n const onConfirm: UseFormModalProps<FormSchema, ExtraValues>['onConfirm'] = async (values, extraValues) => {\n if (isCreate) {\n await create.trigger(values)\n jump(route, 1)\n message.success(t('UserList.createSuccessfully'))\n } else {\n await update.trigger(values)\n mutate<{ List: UserListItem[]; Total: number }>(\n route,\n prev => {\n return produce(prev, draft => {\n if (draft?.List) {\n const index = draft.List?.findIndex(item => item.id === extraValues?.id)\n if (index !== -1) {\n draft.List[index].roles = values.roles\n }\n }\n })\n },\n { revalidate: false },\n )\n message.success(t('UserList.updateSuccessfully'))\n }\n }\n\n return useFormModal({\n title,\n formProps: {\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n\nconst UserList: FC = () => {\n const { modal, message } = App.useApp()\n const remove = useRemoveUser()\n const { mutate } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useModal(true)\n const { show: showUpdateModal, modal: updateModal } = useModal()\n const { t } = useTranslation()\n\n const columns: TableColumnsType<UserListItem> = [\n {\n title: t('global.name'),\n dataIndex: 'name',\n key: 'name',\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\n title: t('global.role'),\n dataIndex: 'roles',\n key: 'roles',\n width: '40%',\n render(value: string[]) {\n return (\n <Row gutter={[4, 4]}>\n {(value || []).map((item: string) => (\n <Col key={item}>\n {item === 'root' ? (\n <Tag color=\"#f50\">{item}</Tag>\n ) : (\n <Tag color=\"#ff5a00\">\n <Link to={`../role/${item}`}>{item}</Link>\n </Tag>\n )}\n </Col>\n ))}\n </Row>\n )\n },\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'Ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (value: UserListItem) => (\n <Space>\n <PermissionButton\n isGlobal\n size=\"small\"\n type=\"link\"\n code=\"100003\"\n onClick={() => {\n showUpdateModal({\n initialValues: {\n name: value.name,\n roles: value.roles,\n },\n extraValues: {\n id: value.id,\n },\n })\n }}\n >\n {t('global.update')}\n </PermissionButton>\n <PermissionButton\n isGlobal\n danger\n size=\"small\"\n code=\"100004\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('UserList.deleteTitle'),\n content: (\n <Highlight texts={[value.name]}>{t('UserList.deleteContent', { user: value.name })}</Highlight>\n ),\n async onOk() {\n await remove.trigger({\n id: value.id,\n name: value.name,\n })\n mutate<{ List: UserListItem[]; Total: number }>(route, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === value.id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('UserList.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n ),\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.user')}\n extra={\n <PermissionButton\n isGlobal\n type=\"primary\"\n icon={<UserAddOutlined />}\n code=\"100002\"\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('UserList.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<UserListItem, undefined, { List: UserListItem[]; Total: number }>\n isGlobal\n code=\"100001\"\n route={route}\n rowKey=\"id\"\n columns={columns}\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default UserList\n","import { UsergroupAddOutlined } from '@ant-design/icons'\nimport type { FormProps, TableColumnsType } from 'antd'\nimport { App, Card, Form, Input, Space } from 'antd'\nimport { produce } from 'immer'\nimport { Link } from 'react-router-dom'\nimport { useToolkitsContext } from '../../../components/contextProvider'\nimport Highlight from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { QueryList } from '../../../components/queryList'\nimport { useQueryListStore } from '../../../components/queryList/stores'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../../../features/permission'\nimport { PermissionList, useCreateRole, useRemoveRole, useUpdateRole } from '../../../features/permission'\nimport type { UseFormModalProps } from '../../../hooks/formModal'\nimport { useFormModal } from '../../../hooks/formModal'\nimport { usePermission } from '../../../hooks/permission'\nimport { request } from '../../../utils/request'\n\nconst route = '/api/usystem/role/list'\n\ninterface FormSchema {\n name: string\n permissions: RoleListItem['permissions']\n}\n\nconst useModal = (isCreate?: boolean) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { jump, mutate } = useQueryListStore()\n const create = useCreateRole()\n const update = useUpdateRole()\n\n const title = isCreate ? t('RoleList.createTitle') : t('RoleList.updateTitle')\n\n const formProps: FormProps = {\n layout: 'vertical',\n }\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} addonBefore=\"role_\" />\n </Form.Item>\n <Form.Item name=\"permissions\">\n <PermissionList />\n </Form.Item>\n </>\n )\n\n const onConfirm: UseFormModalProps<FormSchema, { id: number }>['onConfirm'] = async (values, extraValues) => {\n if (isCreate) {\n await create.trigger({\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n jump(route, 1)\n message.success(t('RoleList.createSuccessfully'))\n } else {\n await update.trigger({\n id: extraValues?.id as number,\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n mutate<{ List: RoleListItem[]; Total: number }>(\n route,\n prev =>\n produce(prev, draft => {\n const match = draft?.List?.find(item => item.id === extraValues?.id)\n\n if (match) {\n match.permissions = values.permissions\n }\n }),\n { revalidate: false },\n )\n message.success(t('RoleList.updateSuccessfully'))\n }\n }\n\n return useFormModal<{\n name: string\n permissions: RoleV1['permissions'] | RoleV2['permissions']\n }>({\n title,\n width: '50vw',\n formProps,\n content,\n onConfirm,\n })\n}\n\nconst RoleList = () => {\n const { accessible: viewable } = usePermission('200005', true)\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const { usePermissionApiV2 } = useToolkitsContext()\n const { mutate } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useModal(true)\n const { show: showUpdateModal, modal: updateModal } = useModal()\n const remove = useRemoveRole()\n\n const handleUpdateBtnClick = async (record: RoleListItem) => {\n const { data: role } = await request<RoleV1 | RoleV2>(\n `/api/usystem/role/info${usePermissionApiV2 ? 'V2' : ''}?name=${record.name}`,\n { isGlobal: true },\n )\n showUpdateModal({\n initialValues: {\n permissions: role?.permissions,\n name: role?.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: role?.id,\n },\n })\n }\n\n const columns: TableColumnsType<RoleListItem> = [\n {\n title: t('global.name'),\n key: 'name',\n render(value: RoleListItem) {\n if (viewable) {\n return (\n <Link to={`${value.name}`} relative=\"path\">\n {value.name}\n </Link>\n )\n } else {\n return <>{value.name}</>\n }\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (_, record) => {\n return (\n <Space size=\"small\">\n <PermissionButton\n isGlobal\n code=\"200003\"\n size=\"small\"\n type=\"link\"\n onClick={async () => {\n handleUpdateBtnClick(record)\n }}\n >\n {t('global.edit')}\n </PermissionButton>\n <PermissionButton\n isGlobal\n danger\n code=\"200004\"\n size=\"small\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('RoleList.deleteTitle'),\n content: (\n <Highlight texts={[record.name]}>{t('RoleList.deleteContent', { role: record.name })}</Highlight>\n ),\n async onOk() {\n await remove.trigger({\n id: record.id,\n name: record.name,\n })\n mutate<{ List: RoleListItem[]; Total: number }>(route, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === record.id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('RoleList.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n )\n },\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.role')}\n extra={\n <PermissionButton\n isGlobal\n type=\"primary\"\n code=\"200002\"\n icon={<UsergroupAddOutlined />}\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('RoleList.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<RoleListItem, undefined, { List: RoleListItem[]; Total: number }>\n isGlobal\n rowKey=\"name\"\n columns={columns}\n code=\"200001\"\n route={route}\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default RoleList\n","import { Breadcrumb, Card, Descriptions, Skeleton } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionList, useRole } from '../../../features/permission'\n\nconst RoleDetail = () => {\n const params = useParams()\n const { data, isLoading } = useRole(params.name as string)\n const { t } = useTranslation()\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: 24 }}\n items={[\n {\n key: '1',\n title: <Link to=\"..\">{t('global.role')}</Link>,\n },\n {\n key: '2',\n title: params.name,\n },\n ]}\n />\n <Card title={t('RoleDetail.title')}>\n <Skeleton loading={isLoading}>\n <Descriptions column={3} layout=\"vertical\">\n <Descriptions.Item label={t('global.name')}>{data?.name}</Descriptions.Item>\n <Descriptions.Item label=\"ID\">{data?.id}</Descriptions.Item>\n <Descriptions.Item label={t('global.creationTime')}>{data?.ctime}</Descriptions.Item>\n </Descriptions>\n <PermissionList readonly value={data?.permissions} />\n </Skeleton>\n </Card>\n </>\n )\n}\n\nexport default RoleDetail\n","import type { ContextState } from './components/contextProvider'\nimport { ContextProvider, contextStore, useToolkitsContext } from './components/contextProvider'\nimport type { DynamicTagsProps } from './components/dynamicTags'\nimport DynamicTags from './components/dynamicTags'\nimport ExpandableParagraph from './components/expandableParagraph'\nimport type { FilterFormWrapperProps } from './components/filterFormWrapper'\nimport FilterFormWrapper from './components/filterFormWrapper'\nimport type { HighlightTextsProps } from './components/highlight'\nimport Highlight from './components/highlight'\nimport type { InfiniteListProps } from './components/infiniteList'\nimport { InfiniteList } from './components/infiniteList'\nimport type { Game } from './components/layout'\nimport { Layout, useGameStore } from './components/layout'\nimport type { NavMenuItem } from './components/navMenu'\nimport { NavMenu } from './components/navMenu'\nimport type { PermissionButtonProps } from './components/permissionButton'\nimport { PermissionButton } from './components/permissionButton'\nimport type { PermissionGuardProps } from './components/permissionGuard'\nimport PermissionGuard from './components/permissionGuard'\nimport type { QueryListProps, QueryListRef } from './components/queryList'\nimport { QueryList, QueryListAction, useQueryListStore } from './components/queryList'\nimport UserWidget from './components/userWidget'\nimport { NOT_REGISTERED } from './constants'\nimport type { UseFormModalProps } from './hooks/formModal'\nimport { useFormModal } from './hooks/formModal'\nimport { useModal, useModalStore } from './hooks/modal'\nimport { usePermission, usePermissions } from './hooks/permission'\nimport type { TokenState } from './hooks/token'\nimport { useTokenStore, useTokenValidation } from './hooks/token'\nimport NotFound from './pages/notFound'\nimport OperationLogList from './pages/operationLogList'\nimport PermissionRoutes from './pages/permission'\nimport SignIn from './pages/signIn'\nimport './styles/index.css'\nimport type { RequestOptions, RequestResponse } from './utils/request'\nimport { RequestError, request } from './utils/request'\nimport { mixedStorage } from './utils/storage'\n\nexport {\n ContextProvider,\n DynamicTags,\n ExpandableParagraph,\n FilterFormWrapper,\n Highlight,\n InfiniteList,\n Layout,\n NOT_REGISTERED,\n NavMenu,\n NotFound,\n OperationLogList,\n PermissionButton,\n PermissionGuard,\n PermissionRoutes,\n QueryList,\n QueryListAction,\n RequestError,\n SignIn,\n UserWidget,\n contextStore,\n mixedStorage,\n request,\n useFormModal,\n useGameStore,\n useModal,\n useModalStore,\n usePermission,\n usePermissions,\n useQueryListStore,\n useTokenStore,\n useTokenValidation,\n useToolkitsContext,\n type ContextState,\n type DynamicTagsProps,\n type FilterFormWrapperProps,\n type Game,\n type HighlightTextsProps,\n type InfiniteListProps,\n type NavMenuItem,\n type PermissionButtonProps,\n type PermissionGuardProps,\n type QueryListProps,\n type QueryListRef,\n type RequestOptions,\n type RequestResponse,\n type TokenState,\n type UseFormModalProps,\n}\n","import { PlusOutlined } from '@ant-design/icons'\nimport type { InputRef } from 'antd'\nimport { Input, Space, Tag, theme } from 'antd'\nimport type { CSSProperties, ChangeEvent, FC } from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { useTranslation } from '../locale'\n\nexport interface DynamicTagsProps {\n initialTags?: string[]\n addable?: boolean\n removable?: boolean\n // 返回 Promise。如果返回 Promise.resolve(true),则添加; 如果返回 Promise.resolve(false) 或 Promise.reject,则不添加\n addCallback?: (addedTag: string) => Promise<boolean>\n // 返回 Promise。如果返回 Promise.resolve(true),则删除; 如果返回 Promise.resolve(false) 或 Promise.reject,则不删除\n removeCallback?: (removedTag: string) => Promise<boolean>\n}\n\nconst DynamicTags: FC<DynamicTagsProps> = props => {\n const { initialTags, addable, removable, addCallback, removeCallback } = props\n const { t } = useTranslation()\n const { token } = theme.useToken()\n const [tags, setTags] = useState<string[]>([])\n const [inputVisible, setInputVisible] = useState(false)\n const [inputValue, setInputValue] = useState('')\n const [editInputIndex, setEditInputIndex] = useState(-1)\n const [editInputValue, setEditInputValue] = useState<string>('')\n const inputRef = useRef<InputRef>(null)\n const editInputRef = useRef<InputRef>(null)\n\n useEffect(() => {\n setTags(initialTags ?? [])\n }, [initialTags])\n\n useEffect(() => {\n if (inputVisible) {\n inputRef.current?.focus()\n }\n }, [inputVisible])\n\n useEffect(() => {\n editInputRef.current?.focus()\n }, [inputValue])\n\n const handleClose = async (removedTag: string) => {\n const success = await removeCallback?.(removedTag)\n\n if (success) {\n const newTags = tags.filter(tag => tag !== removedTag)\n setTags(newTags)\n }\n }\n\n const showInput = () => {\n setInputVisible(true)\n }\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputConfirm = async () => {\n if (inputValue && tags.indexOf(inputValue) === -1) {\n const success = await addCallback?.(inputValue)\n\n if (success) {\n setTags([...tags, inputValue])\n }\n }\n\n setInputVisible(false)\n setInputValue('')\n }\n\n const handleEditInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setEditInputValue(e.target.value)\n }\n\n const handleEditInputConfirm = () => {\n const newTags = [...tags]\n newTags[editInputIndex] = editInputValue\n setTags(newTags)\n setEditInputIndex(-1)\n setInputValue('')\n }\n\n const tagInputStyle: CSSProperties = {\n width: 78,\n verticalAlign: 'top',\n }\n\n const tagPlusStyle: CSSProperties = {\n background: token.colorBgContainer,\n borderStyle: 'dashed',\n }\n\n return (\n <Space wrap size={[0, 8]}>\n <Space wrap size={[0, 8]}>\n {tags.map((tag, index) => {\n if (editInputIndex === index) {\n return (\n <Input\n ref={editInputRef}\n key={tag}\n size=\"small\"\n style={tagInputStyle}\n value={editInputValue}\n onChange={handleEditInputChange}\n onBlur={handleEditInputConfirm}\n onPressEnter={handleEditInputConfirm}\n />\n )\n }\n\n return (\n <Tag\n key={tag}\n closable={removable}\n style={{ userSelect: 'none' }}\n onClose={async e => {\n e.preventDefault()\n await handleClose(tag)\n }}\n >\n <span\n onDoubleClick={e => {\n if (index !== 0) {\n setEditInputIndex(index)\n setEditInputValue(tag)\n e.preventDefault()\n }\n }}\n >\n {tag}\n </span>\n </Tag>\n )\n })}\n </Space>\n {addable &&\n (inputVisible ? (\n <Input\n ref={inputRef}\n type=\"text\"\n size=\"small\"\n style={tagInputStyle}\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputConfirm}\n onPressEnter={handleInputConfirm}\n />\n ) : (\n <Tag style={tagPlusStyle} onClick={showInput}>\n <PlusOutlined />\n &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\ntype ExpandableParagraphProps = Omit<ParagraphProps, 'ellipsis' | 'className'>\n\nconst ExpandableParagraph: FC<ExpandableParagraphProps> = props => {\n const { children, ...restProps } = props\n const [expanded, setExpanded] = useState(false)\n\n return (\n <Typography.Paragraph\n {...restProps}\n className=\"mb-0\"\n ellipsis={{\n rows: 2,\n expandable: 'collapsible',\n expanded,\n onExpand: (_, info) => {\n setExpanded(info.expanded)\n },\n }}\n >\n {children}\n </Typography.Paragraph>\n )\n}\n\nexport default ExpandableParagraph\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { Button, Form, Result, Spin, Table } from 'antd'\nimport type { TableProps } from 'antd/es/table'\nimport qs from 'query-string'\nimport type { Key, ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\nimport useSWRInfinite from 'swr/infinite'\nimport { usePermission } from '../../hooks/permission'\nimport { request } from '../../utils/request'\nimport FilterFormWrapper from '../filterFormWrapper'\nimport { useTranslation } from '../locale'\n\ninterface InfiniteListExtra<Values> {\n key: Key\n children: ReactNode | ((form: FormInstance<Values>) => ReactNode)\n}\n\nexport interface InfiniteListProps<Item, Values, Response>\n extends Pick<TableProps<Item>, 'columns' | 'rowKey' | 'tableLayout' | 'expandable' | 'rowSelection' | 'bordered'> {\n action: string\n getRowKey: (response: Response) => any\n getDataSource: (data: Response[] | undefined) => Item[]\n code?: string\n headers?: Record<string, string> | ((form: FormInstance<Values>) => Record<string, string>)\n renderForm?: (form: FormInstance<Values>) => ReactNode\n transformArg: (values: Values, rowKey?: string) => Record<any, any>\n hasMore?: (data: Response[] | undefined) => boolean\n isGlobal?: boolean\n extras?: InfiniteListExtra<Values>[]\n}\n\nconst InfiniteList = <Item extends object, Values extends object | undefined = undefined, Response = any>(\n props: InfiniteListProps<Item, Values, Response>,\n) => {\n const {\n code,\n action,\n extras,\n headers,\n isGlobal,\n getRowKey,\n getDataSource,\n hasMore,\n renderForm,\n transformArg,\n ...tableProps\n } = props\n const { t } = useTranslation()\n const [form] = Form.useForm<Values>()\n const { accessible, isLoading } = usePermission(code)\n const [isValid, setIsValid] = useState(false)\n const [formValues, setFormValues] = useState<Values>()\n\n const getKey = (pageIndex: number, previousPageData: Response) => {\n if (!isValid) return null\n\n const rowKey = pageIndex !== 0 ? getRowKey(previousPageData) : undefined\n const args = transformArg(formValues as Values, rowKey)\n const queryString = qs.stringify(args)\n\n return queryString ? `${action}?${qs.stringify(args)}` : action\n }\n\n const {\n data,\n size,\n setSize,\n isValidating: isListValidating,\n } = useSWRInfinite(\n getKey,\n arg => {\n return request<Response>(arg, {\n headers: typeof headers === 'function' ? headers(form) : headers,\n isGlobal,\n }).then(response => response.data)\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n revalidateFirstPage: false,\n },\n )\n\n const dataSource = getDataSource(data)\n const isLoadingMore = isListValidating || (size > 0 && data && typeof data[size - 1] === 'undefined')\n const isReachingEnd = typeof hasMore !== 'undefined' ? !hasMore(data) : true\n const isEmpty = !dataSource || dataSource.length === 0\n\n const onConfirm = async () => {\n const values = await form.getFieldsValue()\n setFormValues(values)\n\n try {\n await form.validateFields()\n setSize(1)\n setIsValid(true)\n } catch (_) {\n setSize(0)\n setIsValid(false)\n }\n }\n\n const loadMore = () => {\n setSize(size + 1)\n }\n\n const onReset = async () => {\n try {\n form.resetFields()\n await form.validateFields({ validateOnly: true })\n setSize(1)\n } catch (_) {\n setSize(0)\n }\n }\n\n useEffect(() => {\n if (accessible) {\n form\n .validateFields({ validateOnly: true })\n .then(values => {\n setFormValues(values)\n setIsValid(true)\n })\n .catch(() => {\n setIsValid(false)\n })\n }\n }, [accessible])\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n return (\n <>\n {renderForm ? (\n <FilterFormWrapper\n extras={extras?.map(extra => ({\n key: extra.key,\n children: typeof extra.children === 'function' ? extra.children(form) : extra.children,\n }))}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {renderForm(form)}\n </FilterFormWrapper>\n ) : (\n <Form form={form} />\n )}\n <Table {...tableProps} dataSource={dataSource} loading={isLoadingMore} pagination={false} />\n {!isEmpty && (\n <Button\n block\n loading={isLoadingMore}\n type=\"link\"\n htmlType=\"button\"\n disabled={isLoadingMore || isReachingEnd}\n onClick={loadMore}\n >\n {isLoadingMore\n ? t('InfiniteList.loadingText')\n : isReachingEnd\n ? t('InfiniteList.reachEndText')\n : t('InfiniteList.loadMoreText')}\n </Button>\n )}\n </>\n )\n}\n\nexport default InfiniteList\n","import { Result, Spin } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { useTranslation } from '../locale'\nimport { usePermission } from '../../hooks/permission'\n\nexport interface PermissionGuardProps {\n code: string\n isGlobal?: boolean\n}\n\nconst PermissionGuard: FC<PropsWithChildren<PermissionGuardProps>> = props => {\n const { code, isGlobal, children } = props\n const { accessible, isValidating } = usePermission(code, isGlobal)\n const { t } = useTranslation()\n\n if (isValidating) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status=\"403\" subTitle={t('global.noEntitlement')} />\n }\n\n return <>{children}</>\n}\n\nexport default PermissionGuard\n","import { Button, Result } from 'antd'\nimport type { FC } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from '../../components/locale'\n\ninterface NotFoundProps {\n redirectUrl?: string\n}\n\nconst NotFound: FC<NotFoundProps> = props => {\n const { redirectUrl } = props\n const navigate = useNavigate()\n const { t } = useTranslation()\n\n return (\n <div className=\"h-screen flex justify-center items-center\">\n <Result\n status=\"404\"\n title=\"404\"\n subTitle={t('NotFound.subTitle')}\n extra={\n redirectUrl && (\n <Button\n type=\"primary\"\n onClick={() => {\n navigate(redirectUrl)\n }}\n >\n {t('NotFound.buttonText')}\n </Button>\n )\n }\n />\n </div>\n )\n}\n\nexport default NotFound\n","import { Card, Form, Input, Select } from 'antd'\nimport type { ColumnsType } from 'antd/es/table'\nimport dayjs from 'dayjs'\nimport type { FC } from 'react'\nimport ExpandableParagraph from '../../components/expandableParagraph'\nimport { useTranslation } from '../../components/locale'\nimport { QueryList } from '../../components/queryList'\nimport type { OperationLogListItem } from './types'\n\nconst { Option } = Select\n\nconst OperationLogList: FC = () => {\n const { t } = useTranslation()\n\n const columns: ColumnsType<OperationLogListItem> = [\n {\n key: 'username',\n title: t('global.username'),\n dataIndex: 'uname',\n width: 100,\n },\n {\n key: 'label',\n title: t('global.label'),\n dataIndex: 'label',\n width: 150,\n },\n {\n key: 'method',\n title: t('global.method'),\n dataIndex: 'method',\n width: 100,\n },\n {\n key: 'route',\n title: t('global.route'),\n dataIndex: 'route',\n width: 200,\n },\n {\n key: 'request',\n title: t('global.request'),\n dataIndex: 'request',\n render(value: string) {\n return <ExpandableParagraph>{value}</ExpandableParagraph>\n },\n },\n {\n key: 'response',\n title: t('global.response'),\n dataIndex: 'response',\n render(value: string) {\n return <ExpandableParagraph>{value}</ExpandableParagraph>\n },\n },\n {\n key: 'creation_time',\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n width: 200,\n render(value: string) {\n return dayjs(value).format('YYYY-MM-DD HH:mm:ss')\n },\n },\n ]\n\n return (\n <Card title=\"操作日志\">\n <QueryList<\n OperationLogListItem,\n {\n uname?: string\n route?: string\n method?: 'get' | 'post'\n label?: string\n },\n {\n List: OperationLogListItem[]\n Total: number\n }\n >\n rowKey=\"id\"\n columns={columns}\n tableLayout=\"fixed\"\n route=\"/api/usystem/log/list\"\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n renderForm={form => (\n <Form form={form} layout=\"inline\">\n <Form.Item label={t('global.username')} name=\"uname\">\n <Input allowClear />\n </Form.Item>\n <Form.Item label={t('global.route')} name=\"route\">\n <Input allowClear />\n </Form.Item>\n <Form.Item label={t('global.method')} name=\"method\">\n <Select allowClear style={{ width: '100px' }}>\n <Option value=\"get\">GET</Option>\n <Option value=\"post\">POST</Option>\n </Select>\n </Form.Item>\n <Form.Item label={t('global.label')} name=\"label\">\n <Input allowClear />\n </Form.Item>\n </Form>\n )}\n />\n </Card>\n )\n}\n\nexport default OperationLogList\n","import { lazy } from 'react'\nimport { Navigate, Route, Routes } from 'react-router-dom'\n\nconst UserList = lazy(() => import('./userList'))\nconst RoleList = lazy(() => import('./roleList'))\nconst RoleDetail = lazy(() => import('./roleDetail'))\n\nconst PermissionRoutes = () => {\n return (\n <Routes>\n <Route index element={<Navigate to=\"user\" />} />\n <Route path=\"user\" element={<UserList />} />\n <Route path=\"role\" element={<RoleList />} />\n <Route path=\"role/:name\" element={<RoleDetail />} />\n </Routes>\n )\n}\n\nexport default PermissionRoutes\n","import { Alert, Button, Divider, Form, Input, Space, Spin, Typography } from 'antd'\nimport type { FC, ReactNode } from 'react'\nimport { Navigate, useLocation } from 'react-router-dom'\nimport useSWRImmutable from 'swr/immutable'\nimport { useToolkitsContext } from '../../components/contextProvider'\nimport { useTranslation } from '../../components/locale'\nimport { Logo } from '../../components/logo'\nimport { NOT_REGISTERED, SSO_URL } from '../../constants'\nimport { useTokenStore } from '../../hooks/token'\nimport { request } from '../../utils/request'\nimport backgroundUrl from './background.svg'\n\ninterface SignInProps {\n title?: ReactNode\n successRedirectUrl: string\n}\n\nconst SignIn: FC<SignInProps> = props => {\n const { title, successRedirectUrl } = props\n const location = useLocation()\n // 当路由模式为 hash 模式时,Idaas 重定向会忽略 hash 部分,此时的登录页的地址为标准的 URL 结构 \"/?ticket=xxx#/sign_in\"。\n // 然而 react-router-dom 无法从这种地址中获取到查询字符串,需要使用原生的 window.location.search。\n const queryParams = new URLSearchParams(window.location.search)\n const { token, setToken } = useTokenStore()\n const { t } = useTranslation()\n const { localeDropdownMenu } = useToolkitsContext()\n const idaasRedirectUrl = encodeURIComponent(window.location.href)\n\n const { isLoading } = useSWRImmutable(\n queryParams.has('ticket') ? `/api/usystem/user/login?ticket=${queryParams.get('ticket')}` : null,\n url => request<{ token: string }>(url),\n {\n onSuccess: data => {\n setToken(data.data.token)\n },\n },\n )\n\n if (isLoading) {\n return (\n <div className=\"w-screen h-screen flex justify-center items-center\">\n <Spin />\n </div>\n )\n }\n\n if (token) {\n const hashMode = !!window.location.hash\n const path = successRedirectUrl\n\n if (!hashMode) {\n return <Navigate replace to={path} />\n }\n\n // 移除 ticket\n window.location.href = `${window.location.origin}${window.location.pathname}#${path}`\n\n return null\n }\n\n return (\n <div className=\"w-screen h-screen relative flex overflow-hidden\">\n {localeDropdownMenu && <div className=\"absolute top-16 right-16 z-10\">{localeDropdownMenu}</div>}\n <div className=\"absolute left-14 top-6\">\n <Space align=\"center\">\n <Logo width={48} />\n {title}\n </Space>\n </div>\n <div className=\"flex-1 flex justify-center items-center bg-slate-50\">\n <img src={backgroundUrl} alt=\"background\" className=\"w-10/12\" />\n </div>\n <div className=\"w-[650px] relative top-0 left-0 right-0 bottom-0\">\n <div className=\"absolute top-1/2 -translate-y-1/2 left-0 right-0\">\n <div className=\"-translate-y-10 px-36\">\n <div className=\"flex flex-col justify-center\">\n <div className=\"h-10\">\n {location.state?.[NOT_REGISTERED] && (\n <Alert banner closable message={t('SignIn.notRegistered')} type=\"error\" />\n )}\n </div>\n <Typography.Title level={2}>{t('SignIn.welcome')}</Typography.Title>\n <div className=\"mt-4\">\n <Form layout=\"vertical\" autoComplete=\"off\">\n <Form.Item label={t('global.username')} name=\"username\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label={t('global.password')} name=\"password\" rules={[{ required: true }]}>\n <Input.Password />\n </Form.Item>\n <Form.Item>\n <Button block type=\"primary\" shape=\"round\" htmlType=\"submit\">\n {t('global.signIn')}\n </Button>\n </Form.Item>\n </Form>\n </div>\n <Divider plain dashed>\n {t('SignIn.thirdParty')}\n </Divider>\n <div className=\"flex justify-center items-center\">\n <Button block shape=\"round\" href={`${SSO_URL}/login?service=${idaasRedirectUrl}`} target=\"_self\">\n <Logo width={18} />\n {t('SignIn.signInWithIDass')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default SignIn\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/locale/context.ts"],"names":["LocaleContext","createContext","context_default"],"mappings":";;AAKA,IAAMA,EAAgBC,aAA8C,CAAA,KAAA,CAAS,EAEtEC,CAAQF,CAAAA","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"]}