@nocobase/plugin-multi-portal 2.2.0-alpha.12 → 2.4.0-alpha.1

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.
Files changed (32) hide show
  1. package/README.md +7 -5
  2. package/dist/client-v2/354.87f18462949b5c23.js +10 -0
  3. package/dist/client-v2/499.245037eea4cc7266.js +10 -0
  4. package/dist/client-v2/556.443e73c9ca4c18b9.js +10 -0
  5. package/dist/client-v2/778.affaa69b23857ef2.js +10 -0
  6. package/dist/client-v2/993.7a1cc7aa6cec0160.js +10 -0
  7. package/dist/client-v2/PortalAccessBoundary.d.ts +49 -0
  8. package/dist/client-v2/RootLanding.d.ts +4 -5
  9. package/dist/client-v2/index.js +1 -1
  10. package/dist/client-v2/interceptor.d.ts +13 -0
  11. package/dist/client-v2/layoutRegistration.d.ts +3 -6
  12. package/dist/client-v2/models/MultiPortalLayoutModels.d.ts +14 -0
  13. package/dist/client-v2/models/MultiPortalMobilePageModels.d.ts +2 -0
  14. package/dist/client-v2/pages/MultiPortalsPage.d.ts +10 -27
  15. package/dist/client-v2/portalAccess.d.ts +73 -0
  16. package/dist/client-v2/routeUrl.d.ts +1 -0
  17. package/dist/constants.d.ts +8 -0
  18. package/dist/constants.js +30 -2
  19. package/dist/externalVersion.js +9 -8
  20. package/dist/locale/en-US.json +45 -14
  21. package/dist/locale/zh-CN.json +43 -12
  22. package/dist/node_modules/tar/package.json +1 -1
  23. package/dist/server/collections/multiPortals.js +12 -11
  24. package/dist/server/plugin.d.ts +6 -4
  25. package/dist/server/plugin.js +487 -312
  26. package/dist/swagger/index.d.ts +152 -0
  27. package/dist/swagger/index.js +142 -0
  28. package/package.json +3 -3
  29. package/dist/client-v2/354.7be267ae5d61a878.js +0 -10
  30. package/dist/client-v2/499.ef2ff0c022687485.js +0 -10
  31. package/dist/client-v2/556.5faf86d4f8faef40.js +0 -10
  32. package/dist/client-v2/778.c98e7ec542d931fe.js +0 -10
@@ -0,0 +1,152 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ declare const _default: {
10
+ openapi: string;
11
+ info: {
12
+ title: string;
13
+ version: string;
14
+ };
15
+ paths: {
16
+ '/roles/{roleName}/multiPortals:list': {
17
+ get: {
18
+ tags: string[];
19
+ summary: string;
20
+ description: string;
21
+ parameters: {
22
+ $ref: string;
23
+ }[];
24
+ responses: {
25
+ 200: {
26
+ description: string;
27
+ content: {
28
+ 'application/json': {
29
+ schema: {
30
+ type: string;
31
+ properties: {
32
+ data: {
33
+ type: string;
34
+ items: {
35
+ $ref: string;
36
+ };
37
+ };
38
+ };
39
+ };
40
+ };
41
+ };
42
+ };
43
+ };
44
+ };
45
+ };
46
+ '/roles/{roleName}/multiPortals:add': {
47
+ post: {
48
+ tags: string[];
49
+ summary: string;
50
+ description: string;
51
+ parameters: {
52
+ $ref: string;
53
+ }[];
54
+ requestBody: {
55
+ required: boolean;
56
+ content: {
57
+ 'application/json': {
58
+ schema: {
59
+ $ref: string;
60
+ };
61
+ };
62
+ };
63
+ };
64
+ responses: {
65
+ 200: {
66
+ description: string;
67
+ };
68
+ };
69
+ };
70
+ };
71
+ '/roles/{roleName}/multiPortals:remove': {
72
+ post: {
73
+ tags: string[];
74
+ summary: string;
75
+ description: string;
76
+ parameters: {
77
+ $ref: string;
78
+ }[];
79
+ requestBody: {
80
+ required: boolean;
81
+ content: {
82
+ 'application/json': {
83
+ schema: {
84
+ $ref: string;
85
+ };
86
+ };
87
+ };
88
+ };
89
+ responses: {
90
+ 200: {
91
+ description: string;
92
+ };
93
+ };
94
+ };
95
+ };
96
+ };
97
+ components: {
98
+ parameters: {
99
+ RoleNamePath: {
100
+ name: string;
101
+ in: string;
102
+ description: string;
103
+ required: boolean;
104
+ schema: {
105
+ type: string;
106
+ };
107
+ };
108
+ };
109
+ schemas: {
110
+ PortalAccessWrite: {
111
+ type: string;
112
+ properties: {
113
+ values: {
114
+ type: string;
115
+ description: string;
116
+ items: {
117
+ type: string;
118
+ };
119
+ minItems: number;
120
+ uniqueItems: boolean;
121
+ };
122
+ };
123
+ required: string[];
124
+ };
125
+ PortalAccessTarget: {
126
+ type: string;
127
+ additionalProperties: boolean;
128
+ properties: {
129
+ uid: {
130
+ type: string;
131
+ };
132
+ title: {
133
+ type: string;
134
+ };
135
+ portalName: {
136
+ type: string;
137
+ };
138
+ routePath: {
139
+ type: string;
140
+ };
141
+ portalType: {
142
+ type: string;
143
+ };
144
+ enabled: {
145
+ type: string;
146
+ };
147
+ };
148
+ };
149
+ };
150
+ };
151
+ };
152
+ export default _default;
@@ -0,0 +1,142 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var swagger_exports = {};
28
+ __export(swagger_exports, {
29
+ default: () => swagger_default
30
+ });
31
+ module.exports = __toCommonJS(swagger_exports);
32
+ var swagger_default = {
33
+ openapi: "3.0.2",
34
+ info: {
35
+ title: "NocoBase API - Multi-portal plugin",
36
+ version: "1.0.0"
37
+ },
38
+ paths: {
39
+ "/roles/{roleName}/multiPortals:list": {
40
+ get: {
41
+ tags: ["roles.multiPortals"],
42
+ summary: "List Portals granted to a role",
43
+ description: "List existing custom Portals that the role is explicitly allowed to enter.",
44
+ parameters: [{ $ref: "#/components/parameters/RoleNamePath" }],
45
+ responses: {
46
+ 200: {
47
+ description: "OK",
48
+ content: {
49
+ "application/json": {
50
+ schema: {
51
+ type: "object",
52
+ properties: {
53
+ data: {
54
+ type: "array",
55
+ items: { $ref: "#/components/schemas/PortalAccessTarget" }
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+ },
65
+ "/roles/{roleName}/multiPortals:add": {
66
+ post: {
67
+ tags: ["roles.multiPortals"],
68
+ summary: "Grant Portal entry access to a role",
69
+ description: "Allow the role to enter one or more existing custom Portals by uid.",
70
+ parameters: [{ $ref: "#/components/parameters/RoleNamePath" }],
71
+ requestBody: {
72
+ required: true,
73
+ content: {
74
+ "application/json": {
75
+ schema: { $ref: "#/components/schemas/PortalAccessWrite" }
76
+ }
77
+ }
78
+ },
79
+ responses: {
80
+ 200: { description: "OK" }
81
+ }
82
+ }
83
+ },
84
+ "/roles/{roleName}/multiPortals:remove": {
85
+ post: {
86
+ tags: ["roles.multiPortals"],
87
+ summary: "Revoke Portal entry access from a role",
88
+ description: "Prevent the role from entering one or more existing custom Portals by uid.",
89
+ parameters: [{ $ref: "#/components/parameters/RoleNamePath" }],
90
+ requestBody: {
91
+ required: true,
92
+ content: {
93
+ "application/json": {
94
+ schema: { $ref: "#/components/schemas/PortalAccessWrite" }
95
+ }
96
+ }
97
+ },
98
+ responses: {
99
+ 200: { description: "OK" }
100
+ }
101
+ }
102
+ }
103
+ },
104
+ components: {
105
+ parameters: {
106
+ RoleNamePath: {
107
+ name: "roleName",
108
+ in: "path",
109
+ description: "Role name.",
110
+ required: true,
111
+ schema: { type: "string" }
112
+ }
113
+ },
114
+ schemas: {
115
+ PortalAccessWrite: {
116
+ type: "object",
117
+ properties: {
118
+ values: {
119
+ type: "array",
120
+ description: "Portal uids.",
121
+ items: { type: "string" },
122
+ minItems: 1,
123
+ uniqueItems: true
124
+ }
125
+ },
126
+ required: ["values"]
127
+ },
128
+ PortalAccessTarget: {
129
+ type: "object",
130
+ additionalProperties: true,
131
+ properties: {
132
+ uid: { type: "string" },
133
+ title: { type: "string" },
134
+ portalName: { type: "string" },
135
+ routePath: { type: "string" },
136
+ portalType: { type: "string" },
137
+ enabled: { type: "boolean" }
138
+ }
139
+ }
140
+ }
141
+ }
142
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/plugin-multi-portal",
3
- "version": "2.2.0-alpha.12",
3
+ "version": "2.4.0-alpha.1",
4
4
  "main": "dist/server/index.js",
5
5
  "nocobase": {
6
6
  "supportedVersions": [
@@ -13,7 +13,7 @@
13
13
  "description.zh-CN": "为 Client V2 提供内置 Portal 注册、入口访问与路由权限管理。",
14
14
  "devDependencies": {
15
15
  "@ant-design/icons": "5.x",
16
- "@nocobase/plugin-ui-layout": "2.2.0-alpha.12",
16
+ "@nocobase/plugin-ui-layout": "2.4.0-alpha.1",
17
17
  "ahooks": "3.x",
18
18
  "antd": "5.x",
19
19
  "react": "^18.2.0",
@@ -29,5 +29,5 @@
29
29
  "@nocobase/server": "2.x",
30
30
  "@nocobase/test": "2.x"
31
31
  },
32
- "gitHead": "96ae69754a6398de63037ead3a4aad5e5d0ab918"
32
+ "gitHead": "82ecd3aed067e4cc98c32e7a0039b6e55cee76a7"
33
33
  }
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_multi_portal_client_v2=self.webpackChunk_nocobase_plugin_multi_portal_client_v2||[]).push([["354"],{833:function(t,e,r){r.r(e),r.d(e,{MultiPortalMobileChildPageModel:function(){return k},MultiPortalMobileChildPageTabModel:function(){return x},MultiPortalMobileLayoutModel:function(){return _},MultiPortalMobileRootPageModel:function(){return R},MultiPortalMobileRootPageTabModel:function(){return T}});var n=r(485),o=r(69);function u(t,e,r,n,o,u,i){try{var a=t[u](i),l=a.value}catch(t){r(t);return}a.done?e(l):Promise.resolve(l).then(n,o)}function i(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var i=t.apply(e,r);function a(t){u(i,n,o,a,l,"next",t)}function l(t){u(i,n,o,a,l,"throw",t)}a(void 0)})}}function a(t,e,r){return e=p(e),function(t,e){if(e&&("object"===O(e)||"function"==typeof e))return e;if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t,P()?Reflect.construct(e,r||[],p(t).constructor):e.apply(t,r))}function l(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}function c(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function f(t,e,r){return e&&c(t.prototype,e),r&&c(t,r),t}function s(t,e,r){return(s="u">typeof Reflect&&Reflect.get?Reflect.get:function(t,e,r){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=p(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(r||t):o.value}})(t,e,r||t)}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function b(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)}function y(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),n.forEach(function(e){var n;n=r[e],e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n})}return t}function h(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):(function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e.push.apply(e,r)}return e})(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}),t}function v(t,e){if(null==t)return{};var r,n,o,u={};if("u">typeof Reflect&&Reflect.ownKeys){for(o=0,r=Reflect.ownKeys(Object(t));o<r.length;o++)n=r[o],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(u[n]=t[n]);return u}if(u=function(t,e){if(null==t)return{};var r,n,o={},u=Object.getOwnPropertyNames(t);for(n=0;n<u.length;n++)r=u[n],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r]);return o}(t,e),Object.getOwnPropertySymbols)for(o=0,r=Object.getOwnPropertySymbols(t);o<r.length;o++)n=r[o],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(u[n]=t[n]);return u}function d(t,e){return(d=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function O(t){return t&&"u">typeof Symbol&&t.constructor===Symbol?"symbol":typeof t}function P(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(P=function(){return!!t})()}function g(t,e){var r,n,o,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),a=Object.defineProperty;return a(i,"next",{value:l(0)}),a(i,"throw",{value:l(1)}),a(i,"return",{value:l(2)}),"function"==typeof Symbol&&a(i,Symbol.iterator,{value:function(){return this}}),i;function l(a){return function(l){var c=[a,l];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(u=0)),u;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return u.label++,{value:c[1],done:!1};case 5:u.label++,n=c[1],c=[0];continue;case 7:c=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){u=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){u.label=c[1];break}if(6===c[0]&&u.label<o[1]){u.label=o[1],o=c;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(c);break}o[2]&&u.ops.pop(),u.trys.pop();continue}c=e.call(t,u)}catch(t){c=[6,t],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function j(t){return t&&(void 0===t?"undefined":O(t))==="object"&&!Array.isArray(t)?(t.uiLayouts,t.multiPortals,v(t,["uiLayouts","multiPortals"])):t}function w(t){var e=t.flowEngine.context.api;if(!(!e||(void 0===e?"undefined":O(e))!=="object"||Array.isArray(e))&&"request"in e&&"function"==typeof e.request){var r=new Proxy(e,{get:function(e,r){if("request"===r)return function(r){return e.request(function(t,e){if(!function(t){if(!t||(void 0===t?"undefined":O(t))!=="object"||Array.isArray(t))return!1;var e=t.url;return"string"==typeof e&&e.replace(/^\/+/,"").startsWith("desktopRoutes:")}(e))return e;var r=function(t){var e,r=null==(e=t.context)?void 0:e.layout,n=null==r?void 0:r.uid;if("string"==typeof n&&n.trim())return n}(t);if(!r)return e;var n=e.params&&"object"===O(e.params)&&!Array.isArray(e.params)?e.params:{};n.layout,n.portal;var o=v(n,["layout","portal"]),u=h(y({},e),{params:h(y({},o),{portal:r})});return Object.prototype.hasOwnProperty.call(e,"data")?h(y({},u),{data:j(e.data)}):u}(t,r))};var n=Reflect.get(e,r,e);return"function"==typeof n?n.bind(e):n}});t.context.defineProperty("api",{value:r})}}function M(t,e){var r,n=null==(r=t.props)?void 0:r.route;return h(y({},t),{use:e,props:h(y({},t.props),{route:j(n)})})}function m(t){t.setProps("route",j(t.props.route))}var _=function(t){function e(){return l(this,e),a(this,e,arguments)}return b(e,t),e}(o.MobileLayoutModel),R=function(t){function e(t){l(this,e),w(r=a(this,e,[t]));var r,n=r.createPageTabModelOptions.bind(r);return r.createPageTabModelOptions=function(){return M(n(),"MultiPortalMobileRootPageTabModel")},r}return b(e,t),e}(o.MobileRootPageModel),k=function(t){function e(t){l(this,e),w(r=a(this,e,[t]));var r,n=r.createPageTabModelOptions.bind(r);return r.createPageTabModelOptions=function(){return M(n(),"MultiPortalMobileChildPageTabModel")},r}return b(e,t),e}(o.MobileChildPageModel),T=function(t){function e(t){var r;return l(this,e),w(r=a(this,e,[t])),m(r),r}return b(e,t),f(e,[{key:"save",value:function(){var t=this,r=this;return i(function(){return g(this,function(n){switch(n.label){case 0:return m(this),[4,s(p(e.prototype),"save",t).call(r)];case 1:return n.sent(),m(this),[2]}})}).call(this)}}]),e}(n.RootPageTabModel),x=function(t){function e(t){var r;return l(this,e),w(r=a(this,e,[t])),m(r),r}return b(e,t),f(e,[{key:"save",value:function(){var t=this,r=this;return i(function(){return g(this,function(n){switch(n.label){case 0:return m(this),[4,s(p(e.prototype),"save",t).call(r)];case 1:return n.sent(),m(this),[2]}})}).call(this)}}]),e}(n.ChildPageTabModel)}}]);
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_multi_portal_client_v2=self.webpackChunk_nocobase_plugin_multi_portal_client_v2||[]).push([["499"],{918:function(t,e,n){n.r(e),n.d(e,{PortalEntryActionModel:function(){return I}});var r=n(485),i=n(694),o=n(143),a=n(337),l=n(756);function u(t){var e=null==t?void 0:t.trim();return e&&"/"!==e?"/".concat(e.replace(/^\/+/,"")):"/"}function c(t){var e=u(t).replace(/\/+$/,"");return""===e||"/"===e?"":e}function s(t,e){var n=c(t),r=u(e);return!n||r===n||r.startsWith("".concat(n,"/"))?r:"".concat(n).concat(r)}function p(t){return c((function(t){var e,n,i,o;return"function"==typeof(null==t?void 0:t.getPublicPath)?c((0,r.getV2EffectiveBasePath)({getPublicPath:t.getPublicPath,router:{getBasename:function(){var e,n,r;return(null==(n=t.router)||null==(e=n.getBasename)?void 0:e.call(n))||(null==(r=t.router)?void 0:r.basename)}}})):c((null==t||null==(n=t.router)||null==(e=n.getBasename)?void 0:e.call(n))||(null==t||null==(i=t.router)?void 0:i.basename)||(null==t||null==(o=t.getPublicPath)?void 0:o.call(t)))})(t).replace(/\/(?:apps|_app)\/[^/]+$/,"")||"")}function f(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function y(t,e,n,r,i,o,a){try{var l=t[o](a),u=l.value}catch(t){n(t);return}l.done?e(u):Promise.resolve(u).then(r,i)}function h(t){return function(){var e=this,n=arguments;return new Promise(function(r,i){var o=t.apply(e,n);function a(t){y(o,r,i,a,l,"next",t)}function l(t){y(o,r,i,a,l,"throw",t)}a(void 0)})}}function v(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function b(t,e,n){return(b="u">typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=d(t)););return t}(t,e);if(r){var i=Object.getOwnPropertyDescriptor(r,e);return i.get?i.get.call(n||t):i.value}})(t,e,n||t)}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function P(t,e){return(P=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function m(t){return function(t){if(Array.isArray(t))return f(t)}(t)||function(t){if("u">typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t){if(t){if("string"==typeof t)return f(t,void 0);var e=Object.prototype.toString.call(t).slice(8,-1);if("Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e)return Array.from(e);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return f(t,void 0)}}(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(g=function(){return!!t})()}function A(t,e){var n,r,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(a,"next",{value:u(0)}),l(a,"throw",{value:u(1)}),l(a,"return",{value:u(2)}),"function"==typeof Symbol&&l(a,Symbol.iterator,{value:function(){return this}}),a;function u(l){return function(u){var c=[l,u];if(n)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(o=0)),o;)try{if(n=1,r&&(i=2&c[0]?r.return:c[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,c[1])).done)return i;switch(r=0,i&&(c=[2&c[0],i.value]),c[0]){case 0:case 1:i=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(i=(i=o.trys).length>0&&i[i.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!i||c[1]>i[0]&&c[1]<i[3])){o.label=c[1];break}if(6===c[0]&&o.label<i[1]){o.label=i[1],i=c;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(c);break}i[2]&&o.ops.pop(),o.trys.pop();continue}c=e.call(t,o)}catch(t){c=[6,t],r=0}finally{n=i=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var k="PartitionOutlined",T="buttonSettings",E="general";function O(t){return(null==t?void 0:t.title)||(null==t?void 0:t.routePath)}function w(t,e,n){if(t)return"main"===t.appName?(null==n?void 0:n("Main application"))||"Main":(null==e?void 0:e.title)||(null==e?void 0:e.name)||t.appName}function _(t,e,n){var r=O(t),i=w(t,e,n);return i&&r?"".concat(i," / ").concat(r):r}function j(t,e,n){var r=O(t),i=w(t,e,n);return i&&r?"".concat(i," / ").concat(r):r}function R(t){return t.entryPortalTitle||O(t.entryPortal)}function S(t,e){return t.entryPortalTargetTitle||j(t.entryPortal,t.entryPortalApp,e)||R(t)}function x(t,e){if(t)return e.portals.find(function(e){return t.appName===e.appName&&(!!t.uid&&!!e.uid&&t.uid===e.uid||t.routePath===e.routePath)})}function D(t){return m(new Set(t.filter(function(t){return!!t})))}var I=function(t){var e;if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");function n(){var t,e,r;if(!(this instanceof n))throw TypeError("Cannot call a class as a function");return e=n,r=arguments,e=d(e),v(t=function(t,e){var n;if(e&&("object"==((n=e)&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof e))return e;if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(this,g()?Reflect.construct(e,r||[],d(this).constructor):e.apply(this,r)),"entryActionAvailability","available"),v(t,"availabilityRequest",void 0),v(t,"disposeAppPortalsReaction",void 0),v(t,"defaultProps",{type:"default",title:(0,o.MZ)("Portal"),icon:k}),v(t,"enableEditType",!1),v(t,"enableEditDanger",!1),v(t,"enableEditTitle",!0),v(t,"enableEditIconOnly",!1),t}return n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),t&&P(n,t),e=[{key:"onInit",value:function(t){b(d(n.prototype),"onInit",this).call(this,t),(0,i.define)(this,{entryActionAvailability:i.observable.ref}),this.syncEntryTitle(),this.checkEntryPortalAvailability()}},{key:"afterAddAsSubModel",value:function(){var t=this,e=this;return h(function(){return A(this,function(r){switch(r.label){case 0:return[4,b(d(n.prototype),"afterAddAsSubModel",t).call(e)];case 1:return r.sent(),this.syncEntryTitle(),[4,this.checkEntryPortalAvailability()];case 2:return r.sent(),[2]}})}).call(this)}},{key:"onMount",value:function(){var t=this;if(b(d(n.prototype),"onMount",this).call(this),!this.disposeAppPortalsReaction){var e=this.context.app;if(e){var r=(0,a.G)(e);this.disposeAppPortalsReaction=(0,i.reaction)(function(){return r.revision},function(){t.checkEntryPortalAvailability()})}}}},{key:"onUnmount",value:function(){var t;b(d(n.prototype),"onUnmount",this).call(this),null==(t=this.disposeAppPortalsReaction)||t.call(this),this.disposeAppPortalsReaction=void 0}},{key:"setProps",value:function(t,e){"string"==typeof t?b(d(n.prototype),"setProps",this).call(this,t,e):b(d(n.prototype),"setProps",this).call(this,t),this.syncEntryTitle()}},{key:"getTitle",value:function(){return b(d(n.prototype),"getTitle",this).call(this)||R(this.props)}},{key:"getTitleFieldDescription",value:function(){var t,e,n,r,i=(n=S(t=this.props,this.t),r=null==(e=t.entryPortal)?void 0:e.routePath,n&&r?"".concat(n," (").concat(r,")"):n||r);return i?"".concat(this.context.t("Target portal",(0,o.Dj)()),": ").concat(i):void 0}},{key:"isEntryActionAvailable",value:function(){return"available"===this.entryActionAvailability}},{key:"getEntryActionUnavailableMessage",value:function(){if("unavailable"===this.entryActionAvailability)return this.context.t("This entry is currently unavailable. Please check the application status.",(0,o.Dj)())}},{key:"isDefaultTitle",value:function(t){return"string"==typeof t&&[this.defaultProps.title,this.context.t("Portal",(0,o.Dj)()),"Portal"].filter(Boolean).includes(t)}},{key:"isDefaultIcon",value:function(t){return"string"==typeof t&&t===k}},{key:"isAutoTitle",value:function(t,e){return"string"==typeof t&&e.includes(t)}},{key:"syncEntryTitle",value:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],r=R(this.props),i=D([O(this.props.entryPortal),this.props.entryPortalTitle,S(this.props,this.t)].concat(m(e)));r&&(!this.props.title||this.isDefaultTitle(this.props.title)||this.isAutoTitle(this.props.title,i))&&b(d(n.prototype),"setProps",this).call(this,"title",r);var o=(null==(t=this.props.entryPortal)?void 0:t.icon)||k;o&&(!this.props.icon||this.isDefaultIcon(this.props.icon))&&b(d(n.prototype),"setProps",this).call(this,"icon",o),r&&this.syncTitleStepParams(r,o,i)}},{key:"syncTitleStepParams",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=this.getStepParams(T,E)||{},i={};(!r.title||this.isDefaultTitle(r.title)||this.isAutoTitle(r.title,n))&&(i.title=t),e&&(!r.icon||this.isDefaultIcon(r.icon))&&(i.icon=e),Object.keys(i).length&&this.setStepParams(T,E,i)}},{key:"onClick",value:function(){var t=this.props.entryPortal;if(t&&!this.hidden&&"available"===this.entryActionAvailability){var e=this.context.app,n=e?(0,a.G)(e).payload:void 0,r=n&&x(t,n)||t,i=(null==n?void 0:n.apps.find(function(t){return t.name===r.appName}))||this.props.entryPortalApp,o=function(t,e,n){if("main"===e.appName)return(c=a=e.routePath.trim(),/^[a-z][a-z\d+\-.]*:\/\//i.test(c)||c.startsWith("//"))?a:s(p(t),a);var r=u(e.routePath),i=(null==n?void 0:n.ssoEnabled)===!0,o=e.appName===((null==t?void 0:t.name)||"main");if(null==n?void 0:n.cname){var a,c,f,y=(f=n.cname,/^https?:\/\//i.test(f)||f.startsWith("//")?f:"//".concat(f));return i?"".concat(y.replace(/\/+$/,""),"/app-sso?redirect=").concat(encodeURIComponent(r)):"".concat(y.replace(/\/+$/,"")).concat(u(r))}if(o&&!i)return(0,l.u)(t,e.routePath,e.portalType);var h=i?"/apps/".concat(e.appName,"/app-sso?redirect=").concat(encodeURIComponent(r)):"/apps/".concat(e.appName).concat(r);return(null==t?void 0:t.getRouteUrl)?t.getRouteUrl(h):s(p(t),h)}(e,r,i);window.open(o,"_blank","noopener,noreferrer")}}},{key:"t",get:function(){var t=this;return function(e){return String(t.context.t(e,(0,o.Dj)()))}}},{key:"setEntryActionAvailability",value:function(t){this.entryActionAvailability!==t&&(this.entryActionAvailability=t)}},{key:"getAvailabilityForExistingPortal",value:function(t,e){var n,r,i,o,a=(n=t.appName,r=this.props.entryPortalApp,e.apps.find(function(t){return t.name===n})||((null==r?void 0:r.name)===n?r:void 0));return!(o=!(i=null==a?void 0:a.status)?[]:"string"==typeof i?[i]:Object.values(i).filter(function(t){return"string"==typeof t})).length||o.includes("running")?"available":"unavailable"}},{key:"syncCurrentPortal",value:function(t,e){var r=this.props.entryPortal,i=this.props.entryPortalApp,o=R(this.props),a=S(this.props,this.t),l=_(r,i,this.t),u=e.apps.find(function(e){return e.name===t.appName})||i,c=e.apps.length>0||D(e.portals.map(function(t){return t.appName})).length>1||o===l?_(t,u,this.t):O(t),s=j(t,u,this.t);b(d(n.prototype),"setProps",this).call(this,{entryPortal:t,entryPortalApp:u,entryPortalTitle:c,entryPortalTargetTitle:s}),this.syncEntryTitle(D([o,a,l,O(r)]))}},{key:"checkEntryPortalAvailability",value:function(){var t=this;return this.availabilityRequest||(this.availabilityRequest=this.loadEntryPortalAvailability().finally(function(){t.availabilityRequest=void 0})),this.availabilityRequest}},{key:"loadEntryPortalAvailability",value:function(){return h(function(){var t,e,n,r;return A(this,function(i){switch(i.label){case 0:if(t=this.props.entryPortal,e=this.context.app,!t||!e)return[2];i.label=1;case 1:return i.trys.push([1,3,,4]),[4,(0,a.G)(e).load()];case 2:return n=i.sent(),(r=x(t,n))?(this.setEntryActionAvailability(this.getAvailabilityForExistingPortal(r,n)),this.syncCurrentPortal(r,n)):this.setEntryActionAvailability("unavailable"),[3,4];case 3:return i.sent(),[2];case 4:return[2]}})}).call(this)}}],function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}(n.prototype,e),n}(r.ActionModel);I.define({label:(0,o.MZ)("Portal")})}}]);
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_multi_portal_client_v2=self.webpackChunk_nocobase_plugin_multi_portal_client_v2||[]).push([["556"],{524:function(e,t,r){r.r(t),r.d(t,{createMultiPortal:function(){return Y},default:function(){return eT},deleteMultiPortals:function(){return ee},derivePortalNamingFromGitUrl:function(){return eb},getRepoNameFromGitUrl:function(){return ey},updateMultiPortal:function(){return Z}});var n=r(375),a=r(485),o=r(694),l=r(625),i=r(59),u=r(155),c=r.n(u),s=r(624),p=r(337),d=r(143),m=r(756);function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function y(e,t,r,n,a,o,l){try{var i=e[o](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,a)}function b(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){y(o,n,a,l,i,"next",e)}function i(e){y(o,n,a,l,i,"throw",e)}l(void 0)})}}function h(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){h(e,t,r[t])})}return e}function g(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function E(e,t){if(null==e)return{};var r,n,a,o={};if("u">typeof Reflect&&Reflect.ownKeys){for(a=0,r=Reflect.ownKeys(Object(e));a<r.length;a++)n=r[a],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}if(o=function(e,t){if(null==e)return{};var r,n,a={},o=Object.getOwnPropertyNames(e);for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}(e,t),Object.getOwnPropertySymbols)for(a=0,r=Object.getOwnPropertySymbols(e);a<r.length;a++)n=r[a],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(r=a.next()).done)&&(o.push(r.value),!t||o.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw n}}return o}}(e,t)||S(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function S(e,t){if(e){if("string"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return f(e,t)}}function T(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&c[0]?n.return:c[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,c[1])).done)return a;switch(n=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,n=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){o.label=c[1];break}if(6===c[0]&&o.label<a[1]){o.label=a[1],a=c;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(c);break}a[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],n=0}finally{r=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var R={paddingInline:0},I=c().forwardRef(function(e,t){return c().createElement("div",{ref:t},c().createElement(a.IconPicker,e))});function O(e,t){var r="string"==typeof e.title?e.title.trim():"";return r||(e.type===a.NocoBaseDesktopRouteType.tabs?t("Untitled"):e.schemaUid||t("Untitled"))}function P(e,t){var r,n=null==(r=e.options)?void 0:r[t];return"string"==typeof n&&n.trim()?n.trim():""}function B(e){return P(e,"path")||P(e,"href")||P(e,"url")}function x(e){return e===a.NocoBaseDesktopRouteType.page||e===a.NocoBaseDesktopRouteType.flowPage}function D(e,t){if(void 0!==t){var r=!0,n=!1,a=void 0;try{for(var o,l=e[Symbol.iterator]();!(r=(o=l.next()).done);r=!0){var i,u=o.value;if(u.id===t)return u;var c=D(null!=(i=u.children)?i:[],t);if(c)return c}}catch(e){n=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(n)throw a}}}}function C(e){return!0!==e.hidden&&e.type!==a.NocoBaseDesktopRouteType.page}function N(e,t){return"".concat(e.replace(/\/+$/,""),"/").concat(t.replace(/^\/+/,""))}function j(e,t,r){if(e.type===a.NocoBaseDesktopRouteType.group||e.type===a.NocoBaseDesktopRouteType.link||!e.schemaUid)return"";if(e.type===a.NocoBaseDesktopRouteType.tabs){var n=D(r,e.parentId);return(null==n?void 0:n.schemaUid)?N(t.routePath,"".concat(n.schemaUid,"/tab/").concat(e.schemaUid)):""}return N(t.routePath,e.schemaUid)}function F(e,t,r){var n=null==(d=e.routePath)?void 0:d.trim(),l=(null!=(s=e.params)?s:[]).filter(function(e){var t,r;return!!(null==e||null==(t=e.name)?void 0:t.trim())||!!(null==e||null==(r=e.value)?void 0:r.trim())}),i=x(e.type),u=e.type===a.NocoBaseDesktopRouteType.tabs,c=g(v({},i||u?{schemaUid:(null==t?void 0:t.schemaUid)||(0,o.randomId)()}:{},u?{tabSchemaName:(null==t?void 0:t.tabSchemaName)||(0,o.randomId)()}:{},i?{enableTabs:!!e.enableTabs}:{}),{hideInMenu:!1===e.showInMenu,icon:e.icon,title:(null!=(p=e.title)?p:"").trim(),type:e.type});if(e.type===a.NocoBaseDesktopRouteType.link){var s,p,d,m,f=null!=(m=null==t?void 0:t.options)?m:{};f.href,f.params,f.path,f.url,c.options=v({},E(f,["href","params","path","url"]),n?h({},(null==r?void 0:r.mobile)?"url":"href",n):{},l.length?{params:l}:{})}return(null==r?void 0:r.withInitialPageTab)&&i?g(v({},c),{menuSchemaUid:(0,o.randomId)(),children:[{type:a.NocoBaseDesktopRouteType.tabs,schemaUid:(0,o.randomId)(),tabSchemaName:(0,o.randomId)(),hidden:!e.enableTabs}]}):c}function A(e){var t=e.type,r=(0,d.kj)();return c().createElement(i.Tag,{color:t===a.NocoBaseDesktopRouteType.flowPage||t===a.NocoBaseDesktopRouteType.page?"purple":t===a.NocoBaseDesktopRouteType.link?"red":t===a.NocoBaseDesktopRouteType.group?"blue":"default"},r(t===a.NocoBaseDesktopRouteType.group?"Group":t===a.NocoBaseDesktopRouteType.page||t===a.NocoBaseDesktopRouteType.flowPage?"Page":t===a.NocoBaseDesktopRouteType.link?"Link":t===a.NocoBaseDesktopRouteType.tabs?"Tab":"Unknown"))}function M(e){var t,r,o=(0,d.kj)(),l=i.theme.useToken().token,s=w(i.Form.useForm(),1)[0],p=w((0,u.useState)(!1),2),m=p[0],y=p[1],h=i.Form.useWatch("type",s),v=null!=(t=null==(r=e.initialRoute)?void 0:r.type)?t:h,g=(0,u.useMemo)(function(){var t,r,n,l,i,u;return t=o,(null==(n=(r={mobile:e.mobile,parentRoute:e.parentRoute}).parentRoute)?void 0:n.type)===a.NocoBaseDesktopRouteType.page||(null==(l=r.parentRoute)?void 0:l.type)===a.NocoBaseDesktopRouteType.flowPage?[{label:t("Tab"),value:a.NocoBaseDesktopRouteType.tabs}]:(null==(i=r.parentRoute)?void 0:i.type)===a.NocoBaseDesktopRouteType.group?[{label:t("Group"),value:a.NocoBaseDesktopRouteType.group},{label:t("Page"),value:a.NocoBaseDesktopRouteType.flowPage},{label:t("Link"),value:a.NocoBaseDesktopRouteType.link}]:((function(e){if(Array.isArray(e))return f(e)})(u=r.mobile?[]:[{label:t("Group"),value:a.NocoBaseDesktopRouteType.group}])||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(u)||S(u)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).concat([{label:t("Page"),value:a.NocoBaseDesktopRouteType.flowPage},{label:t("Link"),value:a.NocoBaseDesktopRouteType.link}])},[e.mobile,e.parentRoute,o]),E=(0,u.useMemo)(function(){var t,r,n,o,l,i,u,c,s;return{enableTabs:!!(null==(t=e.initialRoute)?void 0:t.enableTabs),icon:null==(r=e.initialRoute)?void 0:r.icon,params:e.initialRoute&&Array.isArray(i=null==(l=e.initialRoute.options)?void 0:l.params)?i.reduce(function(e,t){return t&&(void 0===t?"undefined":k(t))==="object"&&e.push({name:"string"==typeof t.name?t.name:"",value:"string"==typeof t.value?t.value:""}),e},[]):[],routePath:e.initialRoute?B(e.initialRoute):"",showInMenu:!e.initialRoute||!e.initialRoute.hideInMenu,title:(null==(n=e.initialRoute)?void 0:n.title)||"",type:(null==(o=e.initialRoute)?void 0:o.type)||((null==(c=(u={mobile:e.mobile,parentRoute:e.parentRoute}).parentRoute)?void 0:c.type)===a.NocoBaseDesktopRouteType.page||(null==(s=u.parentRoute)?void 0:s.type)===a.NocoBaseDesktopRouteType.flowPage?a.NocoBaseDesktopRouteType.tabs:a.NocoBaseDesktopRouteType.flowPage)}},[e.initialRoute,e.mobile,e.parentRoute]),R=(0,u.useMemo)(function(){return v===a.NocoBaseDesktopRouteType.tabs?void 0:[{message:o("Title field is required"),required:!0,whitespace:!0}]},[v,o]),O=(0,u.useCallback)(function(){return b(function(){var t;return T(this,function(r){switch(r.label){case 0:return[4,s.validateFields()];case 1:t=r.sent(),y(!0),r.label=2;case 2:return r.trys.push([2,,4,5]),[4,e.onSubmit(t)];case 3:return r.sent(),[3,5];case 4:return y(!1),[7];case 5:return[2]}})})()},[s,e]);return c().createElement(a.DrawerFormLayout,{cancelText:o("Cancel"),onSubmit:O,submitText:o("Submit"),submitting:m,title:e.title},c().createElement(i.Form,{form:s,initialValues:E,layout:"vertical"},e.initialRoute?c().createElement(c().Fragment,null,c().createElement(i.Form.Item,{hidden:!0,name:"type"},c().createElement(i.Input,null)),c().createElement(i.Form.Item,{label:o("Type")},c().createElement(A,{type:v}))):c().createElement(i.Form.Item,{label:o("Type"),name:"type",rules:[{message:o("The field value is required"),required:!0}]},c().createElement(i.Radio.Group,{options:g})),c().createElement(i.Form.Item,{label:o("Title"),name:"title",rules:R},c().createElement(i.Input,null)),c().createElement(i.Form.Item,{label:o("Icon"),name:"icon",rules:e.mobile?[{message:o("Icon field is required"),required:!0}]:void 0},c().createElement(I,null)),v===a.NocoBaseDesktopRouteType.link?c().createElement(c().Fragment,null,c().createElement(i.Form.Item,{extra:o("Do not concatenate search params in the URL"),label:o("URL"),name:"routePath",rules:[{message:o("URL field is required"),required:!0,whitespace:!0}]},c().createElement(i.Input.TextArea,{autoSize:!0})),c().createElement(i.Form.Item,{label:o("Search parameters")},c().createElement(i.Form.List,{name:"params"},function(e,t){var r=t.add,a=t.remove;return c().createElement(i.Space,{direction:"vertical",size:l.marginXS,style:{width:"100%"}},e.map(function(e){return c().createElement(i.Space.Compact,{block:!0,key:e.key},c().createElement(i.Form.Item,{name:[e.name,"name"],noStyle:!0},c().createElement(i.Input,{placeholder:o("Name")})),c().createElement(i.Form.Item,{name:[e.name,"value"],noStyle:!0},c().createElement(i.Input,{placeholder:o("Value")})),c().createElement(i.Button,{"aria-label":o("Delete"),icon:c().createElement(n.DeleteOutlined,null),onClick:function(){return a(e.name)}}))}),c().createElement(i.Button,{onClick:function(){return r()},type:"dashed"},o("Add parameter")))}))):null,c().createElement(i.Form.Item,{extra:o("If selected, the route will be displayed in the menu."),name:"showInMenu",valuePropName:"checked"},c().createElement(i.Checkbox,null,o("Show in menu"))),x(v)?c().createElement(i.Form.Item,{extra:o("If selected, the page will display Tab pages."),name:"enableTabs",valuePropName:"checked"},c().createElement(i.Checkbox,null,o("Enable page tabs"))):null))}function U(e){var t=(0,d.kj)(),r=w(i.Form.useForm(),1)[0],a=w((0,u.useState)(!1),2),o=a[0],l=a[1];return c().createElement(i.Popover,{content:c().createElement(i.Form,{form:r,layout:"vertical",onFinish:function(t){e.onApply(t),l(!1)},style:{width:260}},c().createElement(i.Form.Item,{label:t("Search routes"),name:"keyword"},c().createElement(i.Input,{allowClear:!0})),c().createElement(i.Space,null,c().createElement(i.Button,{htmlType:"submit",type:"primary"},t("Submit")),c().createElement(i.Button,{onClick:function(){r.resetFields(),e.onApply({}),l(!1)}},t("Cancel")))),onOpenChange:l,open:o,placement:"bottomLeft",trigger:"click"},c().createElement(i.Button,{"aria-label":t("Filter"),icon:c().createElement(n.FilterOutlined,null)},t("Filter")))}function z(e){var t,r=e.portal,l=(0,o.useFlowContext)(),s=(0,d.kj)(),p=c().useRef(s),f=i.App.useApp(),y=f.message,h=f.modal,S=i.theme.useToken().token,I=w((0,u.useState)([]),2),P=I[0],N=I[1],z=w((0,u.useState)(!1),2),L=z[0],q=z[1],_=w((0,u.useState)({}),2),G=_[0],V=_[1],H=w((0,u.useState)([]),2),X=H[0],$=H[1],K=(0,u.useMemo)(function(){return l.api.resource("desktopRoutes")},[l.api]),W=r.uid,Q=(null==(t=r.uiLayout)?void 0:t.layoutType)==="mobile";c().useEffect(function(){p.current=s},[s]);var J=(0,u.useCallback)(function(){return b(function(){var e,t;return T(this,function(r){switch(r.label){case 0:q(!0),r.label=1;case 1:return r.trys.push([1,3,4,5]),[4,l.api.request({url:"/desktopRoutes:list",method:"get",params:{paginate:!1,portal:W,sort:"sort",tree:!0},skipNotify:!0})];case 2:var n;return N(null!=(e=(!(n=null==(t=r.sent())?void 0:t.data)||(void 0===n?"undefined":k(n))!=="object"?{}:{data:Array.isArray(n.data)?n.data:[]}).data)?e:[]),$([]),[3,5];case 3:return r.sent(),y.error(p.current("Failed to load routes")),N([]),[3,5];case 4:return q(!1),[7];case 5:return[2]}})})()},[l.api,y,W]);c().useEffect(function(){J().catch(function(){})},[J]);var Y=(0,u.useCallback)(function(){return b(function(){return T(this,function(e){switch(e.label){case 0:return[4,J()];case 1:return e.sent(),[2]}})})()},[J]),Z=(0,u.useCallback)(function(e){return b(function(){var t,r,n,o,l,i,u,c,p,d,m;return T(this,function(f){switch(f.label){case 0:if(t=e.editingRoute,r=e.parentRoute,n=e.values,(null==t?void 0:t.id)===void 0)return[3,10];return o=x(t.type)&&!!n.enableTabs!==t.enableTabs,[4,K.update({filterByTk:t.id,portal:W,values:F(n,t,{mobile:Q})})];case 1:if(f.sent(),!o)return[3,9];l=!0,i=!1,u=void 0,f.label=2;case 2:var b;f.trys.push([2,7,8,9]),c=(null!=(b=t.children)?b:[]).filter(function(e){return e.type===a.NocoBaseDesktopRouteType.tabs})[Symbol.iterator](),f.label=3;case 3:if(l=(p=c.next()).done)return[3,6];if(void 0===(d=p.value).id)return[3,5];return[4,K.update({filterByTk:d.id,portal:W,values:{hidden:!n.enableTabs}})];case 4:f.sent(),f.label=5;case 5:return l=!0,[3,3];case 6:return[3,9];case 7:return m=f.sent(),i=!0,u=m,[3,9];case 8:try{l||null==c.return||c.return()}finally{if(i)throw u}return[7];case 9:return y.success(s("Updated successfully")),[3,12];case 10:return[4,K.create({portal:W,values:v({},F(n,void 0,{mobile:Q,withInitialPageTab:!0}),(null==r?void 0:r.id)!==void 0?{parentId:r.id}:{})})];case 11:f.sent(),y.success(s("Saved successfully")),f.label=12;case 12:return[4,Y()];case 13:return f.sent(),[2]}})})()},[K,y,Q,W,Y,s]),ee=(0,u.useCallback)(function(e){var t,r,n=e.editingRoute?null!=(t=D(P,e.editingRoute.id))?t:e.editingRoute:null,a=null!=(r=e.parentRoute)?r:null;l.viewer.drawer({width:S.screenSM,closable:!0,content:function(){return c().createElement(M,{initialRoute:n,mobile:Q,onSubmit:function(e){return Z({editingRoute:n,parentRoute:a,values:e})},parentRoute:a,title:n?s("Edit route"):a?s("Add child route"):s("Add new")})}})},[l.viewer,Q,P,Z,s,S.screenSM]),et=(0,u.useCallback)(function(e){return b(function(){return T(this,function(t){switch(t.label){case 0:return[4,K.destroy({filterByTk:e,portal:W})];case 1:return t.sent(),y.success(s("Deleted successfully")),[4,Y()];case 2:return t.sent(),[2]}})})()},[K,y,W,Y,s]),er=(0,u.useMemo)(function(){return X.filter(function(e){return"number"==typeof e||"string"==typeof e})},[X]),en=er.length>0,ea=(0,u.useMemo)(function(){return function e(t){return t.filter(C).map(function(t){var r=t.children,n=E(t,["children"]),a=r?e(r):[];return a.length?g(v({},n),{children:a}):n})}(P)},[P]),eo=(0,u.useMemo)(function(){return function e(t,r,n){var a=r.trim().toLowerCase();return a?t.reduce(function(t,r){var o,l=e(null!=(o=r.children)?o:[],a,n);return(O(r,n).toLowerCase().includes(a)||String(r.schemaUid||"").toLowerCase().includes(a)||String(r.type||"").toLowerCase().includes(a)||B(r).toLowerCase().includes(a)||l.length)&&t.push(g(v({},r),{children:l.length?l:r.children})),t},[]):t}(ea,G.keyword||"",s)},[G.keyword,s,ea]),el=(0,u.useCallback)(function(e){return b(function(){var t,r,n,a,o,l,i;return T(this,function(u){switch(u.label){case 0:t=!0,r=!1,n=void 0,u.label=1;case 1:u.trys.push([1,6,7,8]),a=er[Symbol.iterator](),u.label=2;case 2:if(t=(o=a.next()).done)return[3,5];return l=o.value,[4,K.update({filterByTk:l,portal:W,values:e})];case 3:u.sent(),u.label=4;case 4:return t=!0,[3,2];case 5:return[3,8];case 6:return i=u.sent(),r=!0,n=i,[3,8];case 7:try{t||null==a.return||a.return()}finally{if(r)throw n}return[7];case 8:return y.success(s("Updated successfully")),[4,Y()];case 9:return u.sent(),[2]}})})()},[K,y,W,Y,er,s]),ei=(0,u.useCallback)(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];h.confirm({cancelText:s("Cancel"),content:s("Are you sure you want to delete it?"),okText:s("Delete"),onOk:function(){return b(function(){return T(this,function(t){switch(t.label){case 0:return[4,et(e)];case 1:return t.sent(),[2]}})})()},title:t?s("Delete routes"):s("Delete route")})},[et,h,s]),eu=(0,u.useMemo)(function(){return[{dataIndex:"title",title:s("Title"),width:260,render:function(e,t){return O(t,s)}},{dataIndex:"type",title:s("Type"),width:160,render:function(e){return c().createElement(A,{type:e})}},{dataIndex:"hideInMenu",title:s("Show in menu"),width:140,render:function(e){return e?c().createElement(n.CloseOutlined,{"aria-label":s("Hidden"),style:{color:S.colorError}}):c().createElement(n.CheckOutlined,{"aria-label":s("Shown"),style:{color:S.colorSuccess}})}},{dataIndex:"routePath",title:s("Path"),width:320,render:function(e,t){var n=j(t,r,P);return n?c().createElement(i.Typography.Paragraph,{copyable:!0,ellipsis:!0,style:{marginBottom:0}},n):null}},{dataIndex:"actions",title:s("Actions"),width:260,render:function(e,t){var n=O(t,s),o=j(t,r,P),u=o?(0,m.u)(l.app,o,r.portalType):"";return c().createElement(i.Space,{size:"small"},c().createElement(i.Button,{"aria-label":s("Add child {{route}}",{route:n}),disabled:!(t.type===a.NocoBaseDesktopRouteType.group||(t.type===a.NocoBaseDesktopRouteType.page||t.type===a.NocoBaseDesktopRouteType.flowPage)&&t.enableTabs),onClick:function(){return ee({parentRoute:t})},size:"small",style:R,type:"link"},s("Add child")),c().createElement(i.Button,{"aria-label":s("Edit {{route}}",{route:n}),onClick:function(){return ee({editingRoute:t})},size:"small",style:R,type:"link"},s("Edit")),c().createElement(i.Button,{"aria-label":s("View {{route}}",{route:n}),disabled:!o,href:u||void 0,rel:"noopener noreferrer",size:"small",style:R,target:"_blank",type:"link"},s("View")),c().createElement(i.Button,{"aria-label":s("Delete {{route}}",{route:n}),onClick:function(){return void 0!==t.id&&ei(t.id)},size:"small",style:R,type:"link"},s("Delete")))}}]},[l.app,ei,ee,r,P,s,S.colorError,S.colorSuccess]);return c().createElement(i.Space,{direction:"vertical",size:S.marginSM,style:{width:"100%"}},c().createElement(i.Space,{style:{justifyContent:"space-between",width:"100%"}},c().createElement(U,{onApply:V}),c().createElement(i.Space,null,c().createElement(i.Button,{icon:c().createElement(n.ReloadOutlined,null),loading:L,onClick:J},s("Refresh")),c().createElement(i.Button,{"aria-label":s("Delete"),disabled:!en,icon:c().createElement(n.DeleteOutlined,null),onClick:function(){return ei(er,!0)}},s("Delete")),c().createElement(i.Button,{"aria-label":s("Hide in menu"),disabled:!en,icon:c().createElement(n.EyeInvisibleOutlined,null),onClick:function(){return el({hideInMenu:!0})}},s("Hide in menu")),c().createElement(i.Button,{"aria-label":s("Show in menu"),disabled:!en,icon:c().createElement(n.EyeOutlined,null),onClick:function(){return el({hideInMenu:!1})}},s("Show in menu")),c().createElement(i.Button,{"aria-label":s("Add new"),icon:c().createElement(n.PlusOutlined,null),onClick:function(){return ee({})},type:"primary"},s("Add new")))),c().createElement(a.Table,{columns:eu,dataSource:eo,expandable:{rowExpandable:function(e){var t;return!!(null==(t=e.children)?void 0:t.length)}},loading:L,locale:{emptyText:s("No routes")},pagination:{pageSize:20,total:eo.length},rowKey:function(e){var t;return null!=(t=e.id)?t:String(e.schemaUid)},rowSelection:{onChange:$,selectedRowKeys:X}}))}function L(e){var t=e.portal,r=(0,d.kj)(),n=(0,o.useFlowView)(),a=i.theme.useToken().token;return c().createElement("div",{style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0}},n.Header?c().createElement(n.Header,{title:r("Routes")}):null,c().createElement("div",{style:{flex:1,minHeight:0,overflow:"auto",padding:a.paddingLG}},c().createElement(z,{portal:t})))}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function _(e,t,r,n,a,o,l){try{var i=e[o](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,a)}function G(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){_(o,n,a,l,i,"next",e)}function i(e){_(o,n,a,l,i,"throw",e)}l(void 0)})}}function V(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function H(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function X(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(r=a.next()).done)&&(o.push(r.value),!t||o.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw n}}return o}}(e,t)||K(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function K(e,t){if(e){if("string"==typeof e)return q(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return q(e,t)}}function W(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&c[0]?n.return:c[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,c[1])).done)return a;switch(n=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,n=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){o.label=c[1];break}if(6===c[0]&&o.label<a[1]){o.label=a[1],a=c;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(c);break}a[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],n=0}finally{r=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function Q(e,t){if(e&&(void 0===e?"undefined":$(e))==="object")return e[t]}function J(e){return"string"==typeof e&&e?e:void 0}function Y(e){return G(function(){return W(this,function(t){switch(t.label){case 0:return[4,e.resource.create({values:e.values})];case 1:return t.sent(),e.onSubmitted(),[2]}})})()}function Z(e){return G(function(){return W(this,function(t){switch(t.label){case 0:return[4,e.resource.update({filterByTk:e.filterByTk,values:e.values})];case 1:return t.sent(),e.onSubmitted(),[2]}})})()}function ee(e){return G(function(){return W(this,function(t){switch(t.label){case 0:return[4,e.resource.destroy({filterByTk:e.filterByTk})];case 1:return t.sent(),e.onDeleted(),[2]}})})()}I.displayName="IconPickerFormControl";var et="no-code",er=["no-code","ai"],en="nocobase",ea="main",eo={portalType:et,enabled:!0},el={alignItems:"flex-start"},ei="multi-portal-described-radio",eu="\n.".concat(ei," .ant-radio {\n align-self: flex-start;\n margin-top: 3px;\n}\n"),ec=/^[a-z0-9_-]+$/,es=c().forwardRef(function(e,t){return c().createElement("div",{ref:t},c().createElement(a.IconPicker,e))});function ep(e){var t=null==e?void 0:e.trim();if(t&&!ec.test(t))return"Portal name can only contain lowercase letters, numbers, hyphens, and underscores"}function ed(e){return"string"!=typeof e?null:e.trim()||null}function em(e){var t=ed(e);return t&&er.some(function(e){return e===t})?t:et}function ef(e){var t=ed(e);return"nocobase"===t||"git"===t?t:en}function ey(e){var t=(e||"").trim().replace(/\.git$/i,"").replace(/\/+$/,"");if(t)return t.split(/[/:]/).filter(Boolean).pop()||void 0}function eb(e){var t=ey(e);if(t){var r=t.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"");if(r){var n=r.split(/[-_]+/).filter(Boolean).map(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}).join(" ");return{portalName:r,title:n||r}}}}function eh(e){var t,r=e.portalName.trim(),n=ep(r);if(n)throw Error(n);e.cover,e.gitBranch,e.gitPath,e.gitRepo,e.sourceStorage;var a=function(e,t){if(null==e)return{};var r,n,a,o={};if("u">typeof Reflect&&Reflect.ownKeys){for(a=0,r=Reflect.ownKeys(Object(e));a<r.length;a++)n=r[a],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}if(o=function(e,t){if(null==e)return{};var r,n,a={},o=Object.getOwnPropertyNames(e);for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}(e,t),Object.getOwnPropertySymbols)for(a=0,r=Object.getOwnPropertySymbols(e);a<r.length;a++)n=r[a],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}(e,["cover","gitBranch","gitPath","gitRepo","sourceStorage"]),o=em(e.portalType);return H(V({},a),{title:e.title.trim(),uid:e.uid.trim(),portalType:o,portalName:r,routePath:"/".concat(r),icon:"string"!=typeof(t=e.icon)?null:t.trim()||null,options:function(e){var t=e.options||{},r=e.cover||null;if("ai"!==em(e.portalType))return H(V({},t),{cover:r});var n=ef(e.sourceStorage);return"git"!==n?H(V({},t),{cover:r,sourceStorage:n}):H(V({},t),{cover:r,sourceStorage:n,git:H(V({},t.git),{repo:ed(e.gitRepo)||"",branch:ed(e.gitBranch)||ea,path:ed(e.gitPath)||""})})}(e)})}function ev(e,t){return"desktop"===e.layoutType?t("Desktop"):"mobile"===e.layoutType?t("Mobile"):e.title||e.uid}function eg(e){var t,r,n=function(e){if(e&&(void 0===e?"undefined":$(e))==="object"){var t,r,n,a=ef(e.sourceStorage);return"git"!==a?H(V({},e),{sourceStorage:a}):H(V({},e),{sourceStorage:a,git:H(V({},e.git),{repo:ed(null==(t=e.git)?void 0:t.repo)||"",branch:ed(null==(r=e.git)?void 0:r.branch)||ea,path:ed(null==(n=e.git)?void 0:n.path)||""})})}}(e.options);return V({title:e.title,uid:e.uid,portalType:em(e.portalType),portalName:e.portalName,routePath:e.routePath,uiLayoutUid:e.uiLayoutUid||(null==(r=e.uiLayout)?void 0:r.uid)||"",icon:null!=(t=e.icon)?t:null,enabled:e.enabled},n?{options:n}:{})}function eE(e){return H(V({},e),{defaultPortal:"__default_portal__"===e.uid||(0,s.Xc)(e.uid)})}es.displayName="IconPickerFormControl";var ew={display:"grid",gap:16,gridTemplateColumns:"repeat(auto-fill, minmax(272px, 1fr))"};function ek(e){var t,r,n,o,l,u=e.record,s=i.theme.useToken().token,p=!(6!==(t=(s.colorBgContainer||"").trim().replace("#","")).length||/[^0-9a-f]/i.test(t))&&(299*parseInt(t.slice(0,2),16)+587*parseInt(t.slice(2,4),16)+114*parseInt(t.slice(4,6),16))/1e3<128,d=(r=u.uid||u.portalName||"",n=function(e){for(var t=0,r=0;r<e.length;r+=1)t=(t<<5)-t+e.charCodeAt(r)|0;return Math.abs(t)}(r)%360,p?"linear-gradient(135deg, hsl(".concat(n,", 14%, 26%) 0%, hsl(").concat((n+40)%360,", 16%, 18%) 100%)"):"linear-gradient(135deg, hsl(".concat(n,", 26%, 93%) 0%, hsl(").concat((n+40)%360,", 22%, 85%) 100%)")),m=(u.title||u.portalName||"?").trim().charAt(0).toUpperCase(),f=null==(l=u.options)||null==(o=l.cover)?void 0:o.url;return f?c().createElement("div",{"aria-hidden":!0,style:{background:"".concat(s.colorFillQuaternary,' center / cover no-repeat url("').concat(f,'")'),height:132}}):c().createElement("div",{"aria-hidden":!0,style:{alignItems:"center",background:d,display:"flex",height:132,justifyContent:"center",overflow:"hidden"}},u.icon?c().createElement(a.Icon,{type:u.icon,style:{color:s.colorTextSecondary,fontSize:44}}):c().createElement("span",{style:{color:s.colorTextSecondary,fontSize:44,fontWeight:600,lineHeight:1}},m))}function eS(e){var t,r=e.record,n=e.onSubmitted,p=(0,d.kj)(),m=(0,o.useFlowContext)(),f=i.theme.useToken().token,y=i.App.useApp().notification,b=X(i.Form.useForm(),1)[0],h=X((0,u.useState)(!1),2),v=h[0],g=h[1],E=(0,u.useMemo)(function(){return m.api.resource("multiPortals")},[m.api]),w=(0,l.useRequest)(function(){return G(function(){var e,t;return W(this,function(r){switch(r.label){case 0:return[4,m.api.request({url:"uiLayouts:listEnabled",method:"get",params:{pageSize:200,sort:["uid"]},skipNotify:!0})];case 1:return[2,Array.isArray(null==(t=r.sent())||null==(e=t.data)?void 0:e.data)?t.data.data:[]]}})})()}),k=(0,u.useMemo)(function(){var e;return(null!=(e=w.data)?e:[]).map(function(e){return{value:e.uid,label:ev(e,p)}})},[w.data,p]),S=i.Form.useWatch("portalType",b);(0,u.useEffect)(function(){if(!(r||b.getFieldValue("uiLayoutUid"))){var e,t,n=null==(e=w.data)||null==(t=e.find(function(e){return"desktop"===e.layoutType}))?void 0:t.uid;n&&b.setFieldValue("uiLayoutUid",n)}},[b,w.data,r]);var T=(0,u.useMemo)(function(){var e,t,n,a,l,i;return r?(i=ef(null==(l=(a=eg(r)).options)?void 0:l.sourceStorage),H(V({},a),{sourceStorage:i,gitRepo:"git"===i&&(null==l||null==(e=l.git)?void 0:e.repo)||"",gitBranch:(null==l||null==(t=l.git)?void 0:t.branch)||ea,gitPath:(null==l||null==(n=l.git)?void 0:n.path)||"",cover:(null==l?void 0:l.cover)||null})):H(V({},eo),{portalType:"ai",uid:"portal-".concat((0,o.randomId)()),sourceStorage:en,gitBranch:ea,gitPath:"",cover:null})},[r]),R=(0,s.Xc)(null==r?void 0:r.uid),I=R||!!r,O=(0,u.useRef)({}),P=(0,u.useCallback)(function(e){if("gitRepo"in e){var t,r,n=eb(e.gitRepo);if(n){var a=b.getFieldsValue(["title","portalName"]),o={};(null==(t=a.title)?void 0:t.trim())&&a.title!==O.current.title||(o.title=n.title),(null==(r=a.portalName)?void 0:r.trim())&&a.portalName!==O.current.portalName||(o.portalName=n.portalName),Object.keys(o).length&&(b.setFieldsValue(o),O.current=V({},O.current,o))}}},[b]),B=(0,u.useCallback)(function(){return G(function(){var e,t;return W(this,function(a){switch(a.label){case 0:return[4,b.validateFields()];case 1:e=eh.apply(void 0,[a.sent()]),g(!0),a.label=2;case 2:if(a.trys.push([2,7,8,9]),!r)return[3,4];return[4,Z({resource:E,filterByTk:r.uid,values:e,onSubmitted:n})];case 3:return a.sent(),[3,6];case 4:return[4,Y({resource:E,values:e,onSubmitted:n})];case 5:a.sent(),a.label=6;case 6:return[3,9];case 7:throw t=a.sent(),y.error({message:function(e){var t=Q(e,"response"),r=Q(t,"data"),n=Q(r,"errors");if(Array.isArray(n)){var a=n.map(function(e){return J(Q(e,"message"))}).filter(function(e){return!!e}).join("\n");if(a)return a}return J(Q(Q(r,"error"),"message"))||J(Q(r,"message"))||J(Q(e,"message"))}(t)||p("Failed to save portal"),role:"alert"}),t;case 8:return g(!1),[7];case 9:return[2]}})})()},[b,y,n,r,E,p]);return c().createElement(a.DrawerFormLayout,{title:r?p("Edit portal"):p("Add portal"),onSubmit:B,submitting:v,submitText:p("Submit"),cancelText:p("Cancel")},c().createElement("style",null,eu),c().createElement(i.Form,{form:b,layout:"vertical",initialValues:T,onValuesChange:P},c().createElement(i.Form.Item,{name:"uid",hidden:!0,rules:[{required:!0,whitespace:!0,message:p("The field value is required")}]},c().createElement(i.Input,null)),c().createElement(i.Form.Item,{name:"portalName",label:p("Portal name"),extra:p("Used in the access path."),rules:[{required:!0,whitespace:!0,message:p("The field value is required")},{validator:function(e,t){var r=ep(t);return r?Promise.reject(Error(p(r))):Promise.resolve()}}]},c().createElement(i.Input,{disabled:I,addonBefore:"ai"===S?"/x/":"/v/"})),c().createElement(i.Form.Item,{name:"title",label:p("Title"),rules:[{required:!0,whitespace:!0,message:p("Title field is required")}]},c().createElement(i.Input,null)),c().createElement(i.Form.Item,{name:"portalType",label:p("Portal type"),htmlFor:"multi-portal-portal-type-ai",rules:[{required:!0,message:p("The field value is required")}]},c().createElement(i.Radio.Group,{name:"multi-portal-portal-type",disabled:I,style:{width:"100%"}},c().createElement(i.Space,{direction:"vertical",style:{width:"100%"}},c().createElement(i.Radio,{className:ei,id:"multi-portal-portal-type-ai",style:el,value:"ai"},c().createElement("span",null,p("AI portal")),c().createElement("div",{style:{color:f.colorTextDescription,fontSize:f.fontSizeSM}},p("Create with AI Agent and code. Users can request changes in natural language. Path: /x/<name>"))),c().createElement(i.Radio,{className:ei,style:el,value:"no-code"},c().createElement("span",null,p("No-code portal")),c().createElement("div",{style:{color:f.colorTextDescription,fontSize:f.fontSizeSM}},p("Create with visual configuration. AI can help adjust the configuration. Path: /v/<name>")))))),c().createElement(i.Form.Item,{noStyle:!0,shouldUpdate:function(e,t){return e.portalType!==t.portalType}},function(e){return"ai"===(0,e.getFieldValue)("portalType")?c().createElement(c().Fragment,null,c().createElement(i.Form.Item,{name:"sourceStorage",label:p("Source storage"),htmlFor:"multi-portal-source-storage-nocobase",rules:[{required:!0,message:p("The field value is required")}]},c().createElement(i.Radio.Group,{name:"multi-portal-source-storage",style:{width:"100%"}},c().createElement(i.Space,{direction:"vertical",style:{width:"100%"}},c().createElement(i.Radio,{className:ei,id:"multi-portal-source-storage-nocobase",style:el,value:"nocobase"},c().createElement("span",null,p("NocoBase")),c().createElement("div",{style:{color:f.colorTextDescription,fontSize:f.fontSizeSM}},p("Manage portal source code in NocoBase."))),c().createElement(i.Radio,{className:ei,style:el,value:"git"},c().createElement("span",null,p("Git")),c().createElement("div",{style:{color:f.colorTextDescription,fontSize:f.fontSizeSM}},p("Manage portal source code in a Git repository.")))))),c().createElement(i.Form.Item,{noStyle:!0,shouldUpdate:function(e,t){return e.sourceStorage!==t.sourceStorage}},function(e){return"git"===(0,e.getFieldValue)("sourceStorage")?c().createElement(c().Fragment,null,c().createElement(i.Form.Item,{name:"gitRepo",label:p("Git repository URL"),extra:p("The title and name below are filled in from the repository name."),rules:[{required:!0,whitespace:!0,message:p("The field value is required")}]},c().createElement(i.Input,{placeholder:"git@github.com:nocobase/customer-portal.git",allowClear:!0})),c().createElement(i.Space,{size:f.marginSM,style:{display:"flex"},align:"start"},c().createElement(i.Form.Item,{name:"gitBranch",label:p("Git branch"),style:{flex:1}},c().createElement(i.Input,{placeholder:ea})),c().createElement(i.Form.Item,{name:"gitPath",label:p("Git path"),style:{flex:1},extra:p("Directory inside the Git repository for this portal. Leave empty for the root.")},c().createElement(i.Input,{placeholder:"/"})))):null})):null}),c().createElement(i.Divider,{style:{marginBlock:f.marginSM}}),c().createElement(i.Form.Item,{name:"uiLayoutUid",label:p("Device"),extra:p("No-code portals render with the components of this device; AI portals use it for grouping."),dependencies:["portalType"],rules:[{validator:function(e,t){return"ai"===b.getFieldValue("portalType")||t?Promise.resolve():Promise.reject(Error(p("The field value is required")))}}]},c().createElement(i.Select,{disabled:R||!!((null==r?void 0:r.uiLayoutUid)||(null==r||null==(t=r.uiLayout)?void 0:t.uid)),loading:w.loading,options:k,showSearch:!0,optionFilterProp:"label"})),c().createElement(i.Form.Item,{name:"cover",label:p("Cover"),extra:p("Shown on the portal card. A 16:9 image works best.")},c().createElement(a.AttachmentUpload,{accept:"image/*",preview:{width:160,height:90,fit:"cover"},uploadText:p("Upload cover")})),c().createElement(i.Form.Item,{name:"icon",label:p("Icon"),extra:p("Used as the cover placeholder when no cover is uploaded.")},c().createElement(es,null)),c().createElement(i.Form.Item,{name:"enabled",label:p("Enabled"),valuePropName:"checked",extra:p("When disabled, this portal will not be registered or accessible.")},c().createElement(i.Switch,null))))}var eT=function(){var e,t=(0,d.kj)(),r=(0,o.useFlowContext)(),a=i.theme.useToken().token,s=i.App.useApp(),f=s.message,y=s.modal,b=X((0,u.useState)([]),2),h=b[0],v=b[1],g=(0,u.useMemo)(function(){return r.api.resource("multiPortals")},[r.api]),E=(0,l.useRequest)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return G(function(){var t,r;return W(this,function(n){switch(n.label){case 0:return[4,g.list({page:e,pageSize:20,sort:["createdAt"],appends:["uiLayout"]})];case 1:return[2,null!=(t=null==(r=n.sent())?void 0:r.data)?t:{data:[]}]}})})()}),w=E.data,k=E.loading,S=(0,u.useMemo)(function(){return Array.isArray(null==w?void 0:w.data)?w.data.map(eE):[]},[null==w?void 0:w.data]),T=(0,u.useMemo)(function(){var e,t,r,n=null==w?void 0:w.meta;return!!n&&{total:null!=(e=n.count)?e:S.length,pageSize:null!=(t=n.pageSize)?t:20,current:null!=(r=n.page)?r:1}},[null==w?void 0:w.meta,S.length]),R=(0,u.useCallback)(function(){var e,t;E.run(null!=(e=null==w||null==(t=w.meta)?void 0:t.page)?e:1)},[E,null==w||null==(e=w.meta)?void 0:e.page]),I=(0,u.useCallback)(function(){(0,p.G)(r.app).reload(r.api).catch(function(e){console.error("[NocoBase] Failed to refresh portal entry actions.",e)})},[r.api,r.app]),O=(0,u.useCallback)(function(){R(),I()},[I,R]),P=(0,u.useCallback)(function(e){r.viewer.drawer({width:a.screenMD,closable:!0,content:function(){return c().createElement(eS,{record:e,onSubmitted:O})}})},[r.viewer,O,a.screenMD]),B=(0,u.useCallback)(function(e){r.viewer.drawer({width:"80%",closable:!0,content:function(){return c().createElement(L,{portal:e})}})},[r.viewer]),x=(0,u.useCallback)(function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};y.confirm({title:t("Delete portal"),content:c().createElement(c().Fragment,null,c().createElement("div",null,r.isBatch?t("Are you sure you want to delete the selected Multi-portal records?"):t("Are you sure you want to delete it?")),c().createElement("div",null,t("The corresponding portal directory will also be deleted."))),onOk:function(){return G(function(){return W(this,function(t){switch(t.label){case 0:return[4,ee({resource:g,filterByTk:e,onDeleted:O})];case 1:return t.sent(),[2]}})})()}})},[y,O,g,t]),D=(0,u.useCallback)(function(e,r){return G(function(){return W(this,function(n){switch(n.label){case 0:v(function(t){return t.includes(e.uid)?t:((function(e){if(Array.isArray(e))return q(e)})(t)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||K(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).concat([e.uid])}),n.label=1;case 1:return n.trys.push([1,,3,4]),[4,Z({resource:g,filterByTk:e.uid,values:H(V({},eg(e)),{enabled:r}),onSubmitted:O})];case 2:return n.sent(),f.success(t("Updated successfully")),[3,4];case 3:return v(function(t){return t.filter(function(t){return t!==e.uid})}),[7];case 4:return[2]}})})()},[f,O,g,t]),C=(0,u.useCallback)(function(e){var o,l=(0,m.u)(r.app,e.routePath,e.portalType),u=em(e.portalType)===et,s=!u||!e.enabled,p=e.uiLayout?ev({layoutType:e.uiLayout.layoutType,title:e.uiLayout.title,uid:e.uiLayout.uid||e.uiLayoutUid||""},t):e.uiLayoutUid;return c().createElement(i.Card,{key:e.uid,size:"small",cover:c().createElement(ek,{record:e}),styles:{body:{padding:a.paddingSM}},style:{opacity:e.enabled?1:.6},actions:[c().createElement(i.Tooltip,{key:"view",title:t("View")},c().createElement(i.Button,{"aria-label":t("View"),type:"text",size:"small",icon:c().createElement(n.ExportOutlined,null),onClick:function(){return window.open(l,"_blank","noopener,noreferrer")}})),c().createElement(i.Tooltip,{key:"edit",title:t("Edit")},c().createElement(i.Button,{"aria-label":t("Edit"),type:"text",size:"small",icon:c().createElement(n.EditOutlined,null),onClick:function(){return P(e)}})),c().createElement(i.Tooltip,{key:"routes",title:s?"":t("Routes")},c().createElement(i.Button,{"aria-label":t("Routes"),type:"text",size:"small",icon:c().createElement(n.ApartmentOutlined,null),disabled:s,onClick:function(){return B(e)}})),c().createElement(i.Tooltip,{key:"delete",title:t("Delete")},c().createElement(i.Button,{"aria-label":t("Delete"),type:"text",size:"small",icon:c().createElement(n.DeleteOutlined,null),onClick:function(){return x(e.uid)}}))]},c().createElement(i.Flex,{align:"flex-start",justify:"space-between",gap:a.marginXS},c().createElement("div",{style:{minWidth:0}},c().createElement(i.Typography.Text,{strong:!0,ellipsis:!0,style:{display:"block"}},e.title),c().createElement(i.Typography.Link,{href:l,target:"_blank",rel:"noopener noreferrer",ellipsis:!0,style:{display:"block",fontSize:a.fontSizeSM}},l)),c().createElement(i.Switch,{"aria-label":t("Enabled"),checked:e.enabled,loading:h.includes(e.uid),size:"small",onChange:function(t){return G(function(){return W(this,function(r){switch(r.label){case 0:return[4,D(e,t)];case 1:return r.sent(),[2]}})})()}})),c().createElement(i.Space,{size:[4,4],wrap:!0,style:{marginTop:a.marginXS}},c().createElement(i.Tag,null,u?t("No-code"):t("AI")),p?c().createElement(i.Tag,{color:(null==(o=e.uiLayout)||o.layoutType,"default")},p):null,e.defaultPortal?c().createElement(i.Tag,null,t("Default")):null))},[r.app,x,D,P,B,t,a.fontSizeSM,a.marginXS,a.paddingSM,h]);return c().createElement("div",null,c().createElement(i.Flex,{justify:"space-between",align:"center",wrap:!0,gap:a.marginSM,style:{marginBottom:a.marginMD}},c().createElement(i.Typography.Text,{type:"secondary"},t("Each portal is a standalone front end with its own routes and menus.")),c().createElement(i.Space,null,c().createElement(i.Button,{icon:c().createElement(n.ReloadOutlined,null),onClick:O},t("Refresh")),c().createElement(i.Button,{type:"primary",icon:c().createElement(n.PlusOutlined,null),onClick:function(){return P()}},t("Add portal")))),c().createElement(i.Spin,{spinning:k},0!==S.length||k?c().createElement("div",{style:ew},S.map(C),c().createElement("button",{type:"button",onClick:function(){return P()},style:{alignItems:"center",background:"transparent",border:"".concat(a.lineWidth,"px dashed ").concat(a.colorBorder),borderRadius:a.borderRadiusLG,color:a.colorTextDescription,cursor:"pointer",display:"flex",flexDirection:"column",gap:a.marginXS,justifyContent:"center",minHeight:228,width:"100%"}},c().createElement(n.PlusOutlined,{style:{fontSize:22}}),c().createElement("span",null,t("Add portal")))):c().createElement(i.Empty,{description:t("No portals yet"),style:{padding:a.paddingXL}},c().createElement(i.Button,{type:"primary",icon:c().createElement(n.PlusOutlined,null),onClick:function(){return P()}},t("Add portal")))),T?c().createElement(i.Flex,{justify:"flex-end",style:{marginTop:a.marginMD}},c().createElement(i.Pagination,{current:T.current,pageSize:T.pageSize,total:T.total,showSizeChanger:!1,onChange:function(e){return E.run(e)}})):null)}}}]);
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_multi_portal_client_v2=self.webpackChunk_nocobase_plugin_multi_portal_client_v2||[]).push([["778"],{177:function(e,t,r){r.r(t),r.d(t,{default:function(){return x}});var n=r(485),u=r(694),a=r(625),o=r(59),i=r(155),l=r.n(i),c=r(624),s=r(143);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function f(e,t,r,n,u,a,o){try{var i=e[a](o),l=i.value}catch(e){r(e);return}i.done?t(l):Promise.resolve(l).then(n,u)}function p(e){return function(){var t=this,r=arguments;return new Promise(function(n,u){var a=e.apply(t,r);function o(e){f(a,n,u,o,i,"next",e)}function i(e){f(a,n,u,o,i,"throw",e)}o(void 0)})}}function h(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function m(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,u=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=u){var a=[],o=!0,i=!1;try{for(u=u.call(e);!(o=(r=u.next()).done)&&(a.push(r.value),!t||a.length!==t);o=!0);}catch(e){i=!0,n=e}finally{try{o||null==u.return||u.return()}finally{if(i)throw n}}return a}}(e,t)||g(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function g(e,t){if(e){if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return d(e,t)}}function w(e,t){var r,n,u,a={label:0,sent:function(){if(1&u[0])throw u[1];return u[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(o,"next",{value:l(0)}),i(o,"throw",{value:l(1)}),i(o,"return",{value:l(2)}),"function"==typeof Symbol&&i(o,Symbol.iterator,{value:function(){return this}}),o;function l(i){return function(l){var c=[i,l];if(r)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(u=2&c[0]?n.return:c[0]?n.throw||((u=n.return)&&u.call(n),0):n.next)&&!(u=u.call(n,c[1])).done)return u;switch(n=0,u&&(c=[2&c[0],u.value]),c[0]){case 0:case 1:u=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(u=(u=a.trys).length>0&&u[u.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!u||c[1]>u[0]&&c[1]<u[3])){a.label=c[1];break}if(6===c[0]&&a.label<u[1]){a.label=u[1],u=c;break}if(u&&a.label<u[2]){a.label=u[2],a.ops.push(c);break}u[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=u=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function S(e){return e&&(void 0===e?"undefined":b(e))==="object"?{data:Array.isArray(e.data)?e.data:[]}:{}}function M(e){return Array.isArray(e)?e.flatMap(function(e){return[e.id].concat(v(M(e.children)))}):[]}function k(e){var t=new Set;return e.filter(function(e){return!t.has(e)&&(t.add(e),!0)})}function A(e,t){return"string"!=typeof e?t("Unnamed"):t(e)||t("Unnamed")}function P(e){return(0,c.Xc)(null==e?void 0:e.uid)}function I(e){return(null==e?void 0:e.portalType)==="no-code"}function x(e){var t,r=(0,u.useFlowContext)(),c=(0,s.kj)(),d=o.theme.useToken().token,f=e.activeRole,g="multi-portals"===e.activeKey,x=y((0,i.useState)([]),2),j=x[0],O=x[1],E=y((0,i.useState)(),2),C=E[0],R=E[1],N=y((0,i.useState)([]),2),T=N[0],_=N[1],D=y((0,i.useState)(),2),F=D[0],z=D[1],U=y((0,i.useState)(!1),2),q=U[0],K=U[1],L=y((0,i.useState)(""),2),B=L[0],G=L[1],X=(0,i.useMemo)(function(){return f?r.api.resource("roles.multiPortals",f.name):void 0},[r.api,f]),$=(0,i.useMemo)(function(){return r.api.resource("rolesMultiPortalDesktopRoutes")},[r.api]),H=(0,i.useMemo)(function(){return r.api.resource("rolesMultiPortalRoutePolicies")},[r.api]),J=(0,i.useMemo)(function(){return f?r.api.resource("roles.desktopRoutes",f.name):void 0},[r.api,f]),Q=(0,a.useRequest)(function(){return p(function(){var e,t;return w(this,function(n){switch(n.label){case 0:return[4,r.api.request({url:"multiPortals:listEnabled",method:"get",skipNotify:!0})];case 1:return[2,null!=(e=S(null==(t=n.sent())?void 0:t.data).data)?e:[]]}})})()},{ready:g,refreshDeps:[g]}),V=(0,a.useRequest)(function(){return p(function(){var e,t;return w(this,function(r){switch(r.label){case 0:if(!X)return[2,[]];return[4,X.list({paginate:!1})];case 1:return[2,(null!=(e=S(null==(t=r.sent())?void 0:t.data).data)?e:[]).map(function(e){return e.uid}).filter(function(e){return"string"==typeof e&&!!e})]}})})()},{ready:g&&!!X,refreshDeps:[g,null==f?void 0:f.name],onSuccess:function(e){O(e)}}),W=(0,i.useMemo)(function(){var e;return null==(e=Q.data)?void 0:e.find(function(e){return e.uid===C})},[Q.data,C]),Y=W?A(W.title,c):"",Z=P(W),ee=I(W),et=W?c("Configure routes permissions for {{portal}}",{portal:Y}):c("Routes permissions"),er=(0,a.useRequest)(function(){return p(function(){var e,t;return w(this,function(n){switch(n.label){case 0:if(!C||!ee)return[2,[]];return[4,r.api.request({url:"desktopRoutes:listRolePermissionTargets",method:"get",params:{portal:C},skipNotify:!0})];case 1:var u;return[2,null!=(e=(!(u=null==(t=n.sent())?void 0:t.data)||(void 0===u?"undefined":b(u))!=="object"?{}:{data:Array.isArray(u.data)?u.data:[]}).data)?e:[]]}})})()},{ready:g&&!!C&&ee,refreshDeps:[g,C,ee]}),en=(0,i.useMemo)(function(){return function e(t,r){return Array.isArray(t)?t.map(function(t){var n,u,a=e(t.children,t.id);return{id:t.id,title:t.title,hidden:t.hidden,routePath:"string"==typeof(u=null==(n=t.options)?void 0:n.path)&&u.trim()?u.trim():void 0,parentId:r,children:a.length?a:void 0}}):[]}(er.data)},[er.data]),eu=(0,i.useMemo)(function(){return M(en)},[en]),ea=(0,i.useMemo)(function(){return function e(t){return t.flatMap(function(t){var r;return[t].concat(v(e(null!=(r=t.children)?r:[])))})}(en)},[en]),eo=(0,i.useMemo)(function(){return new Map(ea.map(function(e){return[e.id,e]}))},[ea]),ei=(0,i.useMemo)(function(){return function e(t,r,n){var u=r.trim().toLowerCase();return u?t.reduce(function(t,r){var a,o,i,l=e(null!=(a=r.children)?a:[],u,n),c=A(r.title,n).toLowerCase(),s=null!=(o=null==(i=r.routePath)?void 0:i.toLowerCase())?o:"";return(c.includes(u)||s.includes(u)||l.length)&&t.push(m(h({},r),{children:l.length?l:void 0})),t},[]):t}(function e(t){return t.reduce(function(t,r){if(r.hidden)return t;var n,u=e(null!=(n=r.children)?n:[]);return t.push(m(h({},r),{children:u.length?u:void 0})),t},[])}(en),B,c)},[en,B,c]),el=(0,i.useMemo)(function(){return M(ei)},[ei]),ec=(0,i.useMemo)(function(){return function e(t,r){return Array.isArray(t)?k(t.flatMap(function(t){var n,u=null!=(n=r.get(t.id))?n:t;return[t.id].concat(v(M(u.children)),v(e(t.children,r)))})):[]}(ei,eo)},[eo,ei]),es=(0,i.useMemo)(function(){var e=new Set(T);return el.filter(function(t){return e.has(t)}).length},[T,el]),ed=er.error?c("Failed to load routes"):B.trim()?c("No matching routes"):c("No routes"),ef=(0,a.useRequest)(function(){return p(function(){var e,t;return w(this,function(r){var n,u;switch(r.label){case 0:if(!f||!C||!ee)return[2,[]];if(!Z)return[3,2];if(!J)return[2,[]];return[4,J.list({paginate:!1,filter:{id:eu}})];case 1:return[2,(n=null==(e=r.sent())?void 0:e.data)&&(void 0===n?"undefined":b(n))==="object"&&Array.isArray(n.data)?n.data.map(function(e){return e.id}).filter(function(e){return"number"==typeof e}):[]];case 2:return[4,$.list({paginate:!1,filter:{roleName:f.name,multiPortalUid:C}})];case 3:return[2,(!(u=null==(t=r.sent())?void 0:t.data)||(void 0===u?"undefined":b(u))!=="object"?[]:Array.isArray(u.data)?u.data:[]).map(function(e){return e.desktopRouteId}).filter(function(e){return"number"==typeof e})]}})})()},{ready:g&&!!f&&!!C&&ee,refreshDeps:[g,eu,null==f?void 0:f.name,ee,C,Z],onSuccess:function(e){_(e)}}),ep=(0,a.useRequest)(function(){return p(function(){var e;return w(this,function(t){switch(t.label){case 0:if(!f||!C||Z||!ee)return[2,void 0];return[4,H.list({paginate:!1,filter:{roleName:f.name,multiPortalUid:C}})];case 1:return[2,function(e){if(e&&(void 0===e?"undefined":b(e))==="object")return Array.isArray(e.data)?e.data[0]:void 0}(null==(e=t.sent())?void 0:e.data)]}})})()},{ready:g&&!!f&&!!C&&ee&&!Z,refreshDeps:[g,null==f?void 0:f.name,ee,C,Z],onSuccess:function(e){z(e),K(!!(null==e?void 0:e.allowNewMenu))}});(0,i.useEffect)(function(){R(void 0),_([]),z(void 0),K(!1),G("")},[null==f?void 0:f.name]),(0,i.useEffect)(function(){_([]),z(void 0),K(!1),G("")},[C]);var eh=(0,a.useMemoizedFn)(function(e){return p(function(){var t;return w(this,function(n){switch(n.label){case 0:var u,a;if(!X)return[2];u=new Set(j),a=new Set(e),t={add:e.filter(function(e){return!u.has(e)}),remove:j.filter(function(e){return!a.has(e)})},n.label=1;case 1:if(n.trys.push([1,7,,9]),!t.remove.length)return[3,3];return[4,X.remove({values:t.remove})];case 2:n.sent(),n.label=3;case 3:if(!t.add.length)return[3,5];return[4,X.add({values:t.add})];case 4:n.sent(),n.label=5;case 5:return[4,V.refreshAsync()];case 6:return n.sent(),O(e),r.message.success(c("Saved successfully")),[3,9];case 7:return n.sent(),[4,V.refreshAsync().catch(function(){})];case 8:return n.sent(),[3,9];case 9:return[2]}})})()}),em=(0,a.useMemoizedFn)(function(e){return p(function(){return w(this,function(t){switch(t.label){case 0:return[4,eh(j.includes(e.uid)?j.filter(function(t){return t!==e.uid}):v(j).concat([e.uid]))];case 1:return t.sent(),[2]}})})()}),ey=(0,a.useMemoizedFn)(function(t){return p(function(){var n;return w(this,function(u){switch(u.label){case 0:if(!f)return[2];u.label=1;case 1:return u.trys.push([1,3,,4]),[4,r.api.resource("roles").update({filterByTk:f.name,values:t})];case 2:return u.sent(),[3,4];case 3:return u.sent(),[2];case 4:return null==(n=e.onRoleChange)||n.call(e,h({},f,t)),r.message.success(c("Saved successfully")),[2]}})})()}),ev=(0,i.useMemo)(function(){return[{dataIndex:"title",title:c("Portal"),render:function(e){return A(e,c)}},{dataIndex:"accessible",title:c("Allow access"),render:function(e,t){if(P(t))return l().createElement(o.Typography.Text,{type:"secondary"},c("Managed by layout permissions"));var r=A(t.title,c);return l().createElement(o.Checkbox,{"aria-label":c("Allow access to {{portal}}",{portal:r}),checked:j.includes(t.uid),onChange:function(){return em(t)}})}},{dataIndex:"routePermissions",title:c("Routes permissions"),render:function(e,t){if(!I(t))return l().createElement(o.Typography.Text,{type:"secondary"},"-");var r=A(t.title,c);return l().createElement(o.Button,{"aria-label":c("Configure routes permissions for {{portal}}",{portal:r}),type:"link",onClick:function(){return R(t.uid)}},c("Configure"))}}]},[j,c,em]),eb=(0,a.useMemoizedFn)(function(e){return p(function(){var t,n,u,a,o,i,l,s;return w(this,function(d){switch(d.label){case 0:var p,h,m,y,b;if(!f||!C||!ee)return[2];h=new Set((p={currentRouteIds:eu,nextSelectedIds:e,selectedIds:T}).currentRouteIds),m=new Set(p.selectedIds.filter(function(e){return h.has(e)})),y=new Set(p.nextSelectedIds.filter(function(e){return h.has(e)})),t={add:(b=k(v(p.currentRouteIds).concat(v(p.selectedIds),v(p.nextSelectedIds)))).filter(function(e){return h.has(e)&&y.has(e)&&!m.has(e)}),remove:b.filter(function(e){return h.has(e)&&m.has(e)&&!y.has(e)})},d.label=1;case 1:if(d.trys.push([1,18,,20]),!(Z&&J))return[3,6];if(!t.remove.length)return[3,3];return[4,J.remove({values:t.remove})];case 2:d.sent(),d.label=3;case 3:if(!t.add.length)return[3,5];return[4,J.add({values:t.add})];case 4:d.sent(),d.label=5;case 5:return[3,8];case 6:if(!t.remove.length)return[3,8];return[4,$.destroy({filter:{roleName:f.name,multiPortalUid:C,desktopRouteId:t.remove}})];case 7:d.sent(),d.label=8;case 8:if(Z)return[3,16];n=!0,u=!1,a=void 0,d.label=9;case 9:d.trys.push([9,14,15,16]),o=t.add[Symbol.iterator](),d.label=10;case 10:if(n=(i=o.next()).done)return[3,13];return l=i.value,[4,$.create({values:{roleName:f.name,multiPortalUid:C,desktopRouteId:l}})];case 11:d.sent(),d.label=12;case 12:return n=!0,[3,10];case 13:return[3,16];case 14:return s=d.sent(),u=!0,a=s,[3,16];case 15:try{n||null==o.return||o.return()}finally{if(u)throw a}return[7];case 16:return[4,ef.refreshAsync()];case 17:return d.sent(),_(e),r.message.success(c("Saved successfully")),[3,20];case 18:return d.sent(),[4,ef.refreshAsync().catch(function(){})];case 19:return d.sent(),[3,20];case 20:return[2]}})})()}),eg=(0,a.useMemoizedFn)(function(e){return p(function(){return w(this,function(t){switch(t.label){case 0:if(!f||!C)return[2];if(!Z)return[3,2];return[4,ey({allowNewMenu:e})];case 1:return t.sent(),[2];case 2:if(t.trys.push([2,8,,10]),!F)return[3,4];return[4,H.update({filter:{roleName:f.name,multiPortalUid:C},values:{allowNewMenu:e}})];case 3:return t.sent(),[3,6];case 4:return[4,H.create({values:{roleName:f.name,multiPortalUid:C,allowNewMenu:e}})];case 5:t.sent(),t.label=6;case 6:return[4,ep.refreshAsync()];case 7:return t.sent(),K(e),r.message.success(c("Saved successfully")),[3,10];case 8:return t.sent(),[4,ep.refreshAsync().catch(function(){})];case 9:return t.sent(),[3,10];case 10:return[2]}})})()}),ew=(0,a.useMemoizedFn)(function(){return p(function(){var e,t;return w(this,function(r){switch(r.label){case 0:return e=new Set(T),t=new Set(el),[4,eb(el.length&&el.every(function(t){return e.has(t)})?T.filter(function(e){return!t.has(e)&&!ec.includes(e)}):k(v(T).concat(v(ec))))];case 1:return r.sent(),[2]}})})()}),eS=(0,a.useMemoizedFn)(function(e){return p(function(){var t,r,n,u,a,o,i;return w(this,function(l){switch(l.label){case 0:return r=T.includes(e.id),n=M((null!=(t=eo.get(e.id))?t:e).children),u=r?T.filter(function(t){return t!==e.id&&!n.includes(t)}):k(v(T).concat([e.id],v(n))),e.parentId&&(i=null==(o=eo.get(e.parentId))||null==(a=o.children)?void 0:a.some(function(e){return u.includes(e.id)}),r&&!i&&(u=u.filter(function(t){return t!==e.parentId})),r||u.includes(e.parentId)||u.push(e.parentId)),[4,eb(u)];case 1:return l.sent(),[2]}})})()}),eM=(0,i.useMemo)(function(){return[{dataIndex:"title",title:c("Route name"),render:function(e){return A(e,c)}},{dataIndex:"accessible",title:l().createElement(o.Checkbox,{checked:!!el.length&&es===el.length,disabled:!el.length,indeterminate:es>0&&es<el.length,onChange:ew},c("Allow access")),render:function(e,t){var r=A(t.title,c);return l().createElement(o.Checkbox,{"aria-label":c("Allow access to {{route}}",{route:r}),checked:T.includes(t.id),onChange:function(){return eS(t)}})}}]},[T,ew,c,eS,el.length,es]);return f?l().createElement(l().Fragment,null,l().createElement(o.Space,{direction:"vertical",size:d.marginSM,style:{width:"100%"}},l().createElement(o.Typography.Text,{strong:!0},c("Portals")),l().createElement(o.Checkbox,{checked:!!f.allowNewMultiPortal,onChange:function(e){ey({allowNewMultiPortal:e.target.checked})}},c("New portals are allowed to be accessed by default")),l().createElement(n.Table,{rowKey:"uid",loading:Q.loading||V.loading,pagination:!1,columns:ev,dataSource:null!=(t=Q.data)?t:[],locale:{emptyText:Q.error?c("Failed to load portals"):c("No portals")}})),l().createElement(o.Drawer,{title:et,"aria-label":et,width:d.screenLG,open:g&&!!W,onClose:function(){return R(void 0)}},W&&ee?l().createElement(o.Space,{direction:"vertical",size:d.marginSM,style:{width:"100%"}},l().createElement(o.Checkbox,{checked:Z?!!f.allowNewMenu:q,onChange:function(e){return eg(e.target.checked)}},c("New routes are allowed to be accessed by default")),l().createElement(o.Input.Search,{allowClear:!0,"aria-label":c("Search routes"),placeholder:c("Search routes"),value:B,onChange:function(e){return G(e.target.value)}}),l().createElement(n.Table,{rowKey:"id",loading:er.loading||ef.loading||!Z&&ep.loading,pagination:!1,expandable:{defaultExpandAllRows:!1,expandedRowKeys:B.trim()?el:void 0},columns:eM,dataSource:ei,locale:{emptyText:ed}})):null)):l().createElement(o.Typography.Text,{type:"secondary"},c("Select a role to configure permissions"))}}}]);