@nocobase/plugin-multi-portal 2.2.0-alpha.11 → 2.2.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/dist/client-v2/354.7be267ae5d61a878.js +10 -0
- package/dist/client-v2/556.5faf86d4f8faef40.js +10 -0
- package/dist/client-v2/778.c98e7ec542d931fe.js +10 -0
- package/dist/client-v2/RootLanding.d.ts +19 -0
- package/dist/client-v2/index.js +1 -1
- package/dist/client-v2/layoutRegistration.d.ts +2 -1
- package/dist/client-v2/models/MultiPortalMobilePageModels.d.ts +3 -11
- package/dist/client-v2/pages/MultiPortalsPage.d.ts +24 -0
- package/dist/client-v2/pages/PortalRoutesDrawer.d.ts +13 -0
- package/dist/client-v2/permissions/MultiPortalPermissionsTab.d.ts +1 -0
- package/dist/client-v2/routeRepositoryScope.d.ts +5 -2
- package/dist/constants.d.ts +11 -0
- package/dist/constants.js +48 -0
- package/dist/externalVersion.js +10 -9
- package/dist/locale/en-US.json +52 -1
- package/dist/locale/zh-CN.json +79 -28
- package/dist/node_modules/tar/package.json +1 -1
- package/dist/server/collections/desktopRoutes.js +1 -0
- package/dist/server/migrations/20260730120000-fix-fixed-layout-portal-type.d.ts +13 -0
- package/dist/server/migrations/20260730120000-fix-fixed-layout-portal-type.js +73 -0
- package/dist/server/plugin.d.ts +1 -1
- package/dist/server/plugin.js +1009 -271
- package/package.json +6 -7
- package/dist/client-v2/354.ead3e96143164cd5.js +0 -10
- package/dist/client-v2/778.23ba409a924ee34a.js +0 -10
- package/dist/client-v2/845.f2b0ce44ae4be707.js +0 -10
package/README.md
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
# @nocobase/plugin-multi-portal
|
|
2
2
|
|
|
3
|
-
`@nocobase/plugin-multi-portal` is the
|
|
4
|
-
on top of `@nocobase/plugin-ui-layout`. A
|
|
5
|
-
|
|
3
|
+
`@nocobase/plugin-multi-portal` is the built-in Portal registration and
|
|
4
|
+
permission layer built on top of `@nocobase/plugin-ui-layout`. A Portal selects
|
|
5
|
+
an enabled UI Layout and provides a concrete application entry point.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
For Client V2, enabled No-code Portals are the only source of registered Portal
|
|
8
|
+
routes. Fresh applications use Portal-scoped entry and route permissions.
|
|
9
|
+
Portals created while upgrading an existing application continue to use the
|
|
10
|
+
backing UI Layout's route ownership and role permissions, so Client V1 and
|
|
11
|
+
Client V2 share the same route tree without copying ACL data.
|
|
12
|
+
|
|
13
|
+
UI Layout remains the layout and route-model base, and Client V1 keeps its
|
|
14
|
+
existing UI Layout registration behavior. AI Portals remain separate `/x`
|
|
15
|
+
entries and do not register No-code layouts in Client V2.
|
|
10
16
|
|
|
11
17
|
The `authCheck` route option is not a complete public-access solution. Public
|
|
12
18
|
portals or layouts must be implemented by plugin code that explicitly registers
|
|
@@ -0,0 +1,10 @@
|
|
|
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)}}]);
|
|
@@ -0,0 +1,10 @@
|
|
|
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)}}}]);
|
|
@@ -0,0 +1,10 @@
|
|
|
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"))}}}]);
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
import React from 'react';
|
|
10
|
+
export type RootLandingPortal = {
|
|
11
|
+
uid: string;
|
|
12
|
+
portalType?: string | null;
|
|
13
|
+
routePath: string;
|
|
14
|
+
uiLayout?: {
|
|
15
|
+
layoutType?: string | null;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export declare function selectRootLandingPortal(portals: RootLandingPortal[]): RootLandingPortal;
|
|
19
|
+
export declare function RootLanding(): React.JSX.Element;
|
package/dist/client-v2/index.js
CHANGED
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("ahooks"),require("@nocobase/client-v2"),require("@nocobase/plugin-ui-layout/client-v2"),require("react"),require("antd"),require("@ant-design/icons"),require("antd-style"),require("@nocobase/flow-engine")):"function"==typeof define&&define.amd?define("@nocobase/plugin-multi-portal/client-v2",["ahooks","@nocobase/client-v2","@nocobase/plugin-ui-layout/client-v2","react","antd","@ant-design/icons","antd-style","@nocobase/flow-engine"],t):"object"==typeof exports?exports["@nocobase/plugin-multi-portal/client-v2"]=t(require("ahooks"),require("@nocobase/client-v2"),require("@nocobase/plugin-ui-layout/client-v2"),require("react"),require("antd"),require("@ant-design/icons"),require("antd-style"),require("@nocobase/flow-engine")):e["@nocobase/plugin-multi-portal/client-v2"]=t(e.ahooks,e["@nocobase/client-v2"],e["@nocobase/plugin-ui-layout/client-v2"],e.react,e.antd,e["@ant-design/icons"],e["antd-style"],e["@nocobase/flow-engine"])}(self,function(e,t,r,n,o,i,a,l){return function(){"use strict";var u,c,s,f={337:function(e,t,r){r.d(t,{G:function(){return u}});var n=r(694);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e){var t=e||{};return{apps:Array.isArray(t.apps)?t.apps:[],portals:Array.isArray(t.portals)?t.portals:[]}}var a=function(){var e;function t(e){if(!(this instanceof t))throw TypeError("Cannot call a class as a function");o(this,"app",void 0),o(this,"payload",void 0),o(this,"loading",void 0),o(this,"revision",void 0),o(this,"loaded",void 0),o(this,"request",void 0),o(this,"requestId",void 0),this.app=e,this.payload=i(null),this.loading=!1,this.revision=0,this.loaded=!1,this.requestId=0,(0,n.define)(this,{payload:n.observable.ref,loading:n.observable.ref,revision:n.observable.ref})}return e=[{key:"load",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.app.apiClient;return this.loaded&&!this.request?Promise.resolve(this.payload):this.requestPortals(e)}},{key:"reload",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.app.apiClient;return this.requestPortals(e,{force:!0,invalidateEntryActions:!0})}},{key:"requestPortals",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.request||r.force){var n,o=++this.requestId;this.loading=!0,this.request=((null==(n=e.silent)?void 0:n.call(e))||e).request({url:"app:getPortals",skipNotify:!0}).then(function(e){var n,a,l,u=i(null!=(n=null==e||null==(a=e.data)?void 0:a.data)?n:null==e?void 0:e.data);return o===t.requestId&&(t.payload=u,t.loaded=!0,t.revision+=1,r.invalidateEntryActions&&(null==(l=t.app.entryActionManager)||l.invalidate())),u}).catch(function(e){throw e}).finally(function(){o===t.requestId&&(t.loading=!1,t.request=void 0)})}return this.request}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(t.prototype,e),t}(),l=new WeakMap;function u(e){var t=l.get(e);return t||(t=new a(e),l.set(e,t)),t}},143:function(e,t,r){r.d(t,{Dj:function(){return l},kj:function(){return a},MZ:function(){return u}});var n=r(694),o=JSON.parse('{"UU":"@nocobase/plugin-multi-portal"}');function i(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 a(){var e=(0,n.useFlowEngine)();return function(t,r){return e.context.t(t,i({ns:[o.UU,"client"]},r))}}function l(e){return i({ns:[o.UU,"client"]},e)}function u(e){return(0,n.tExpr)(e,{ns:[o.UU,"client"]})}},133:function(e,t,r){function n(e,t,r,n,o,i,a){try{var l=e[i](a),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function o(e){return function(){var t=this,r=arguments;return new Promise(function(o,i){var a=e.apply(t,r);function l(e){n(a,o,i,l,u,"next",e)}function u(e){n(a,o,i,l,u,"throw",e)}l(void 0)})}}function i(e,t){var r,n,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[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(r)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)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 i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}r.d(t,{Cp:function(){return c},gl:function(){return d},wj:function(){return u}});var a=Symbol("multiPortalRouteRepositoryState"),l="portal:";function u(e){return"".concat(l).concat(e)}function c(e){return e.startsWith(l)&&e.slice(l.length)||void 0}function s(e){var t;return(null==(t=e.scopeStack[e.scopeStack.length-1])?void 0:t.scope)||{cacheKey:"admin-layout-model",kind:"layout",uid:"admin-layout-model"}}function f(e){return e.getAPIClient()}function p(e,t,r){return o(function(){var n,o,a,l;return i(this,function(i){switch(i.label){case 0:return o=(r.refreshRequestIds.get(t.cacheKey)||0)+1,r.refreshRequestIds.set(t.cacheKey,o),[4,f(e).request({url:"/desktopRoutes:listAccessible",params:{tree:!0,sort:"sort",portal:t.uid}})];case 1:return l=Array.isArray(null==(a=i.sent())||null==(n=a.data)?void 0:n.data)?a.data.data:[],r.refreshRequestIds.get(t.cacheKey)===o&&e.setRoutes(l,t.cacheKey),[2,l]}})})()}function d(e,t){if(e&&(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"){if(e[a]){e[a].portalUids=t;return}var r={loadingPromises:new Map,originalActivateLayout:e.activateLayout.bind(e),originalCreateRoute:e.createRoute.bind(e),originalEnsureAccessibleLoaded:e.ensureAccessibleLoaded.bind(e),originalRefreshAccessible:e.refreshAccessible.bind(e),portalUids:t,refreshRequestIds:new Map,scopeStack:[]};e[a]=r,e.activateLayout=function(e){var t,n,o,i,a,l,s=(t="string"==typeof(i=null==e?void 0:e.uid)&&i.trim()?i:"admin-layout-model",n=r.portalUids,o=c(t)||t,new Set(n().filter(function(e){return"string"==typeof e&&e.trim()})).has(o)?{cacheKey:u(o),kind:"portal",uid:o}:{cacheKey:t,kind:"layout",uid:t}),f=Symbol("multi-portal-route-scope"),p=r.originalActivateLayout((a=function(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}({},e),l=l={uid:s.cacheKey},Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(l)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(l)).forEach(function(e){Object.defineProperty(a,e,Object.getOwnPropertyDescriptor(l,e))}),a));return r.scopeStack.push({deactivate:p,scope:s,token:f}),function(){var e=r.scopeStack.findIndex(function(e){return e.token===f});e>=0&&r.scopeStack.splice(e,1),p()}},e.refreshAccessible=function(){return o(function(){var t;return i(this,function(n){return"portal"!==(t=s(r)).kind?[2,r.originalRefreshAccessible()]:[2,p(e,t,r)]})})()},e.ensureAccessibleLoaded=function(){return o(function(){var t,n,o;return i(this,function(i){return"portal"!==(t=s(r)).kind?[2,r.originalEnsureAccessibleLoaded()]:e.isAccessibleLoaded()?[2,e.listAccessible()]:(n=r.loadingPromises.get(t.cacheKey))?[2,n]:(o=p(e,t,r).finally(function(){r.loadingPromises.get(t.cacheKey)===o&&r.loadingPromises.delete(t.cacheKey)}),r.loadingPromises.set(t.cacheKey,o),[2,o])})})()},e.createRoute=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o(function(){var o,a,l,u;return i(this,function(i){switch(i.label){case 0:if("portal"!==(o=s(r)).kind)return[2,r.originalCreateRoute(t,n)];return l=void 0===(a=n.refreshAfterMutation)||a,[4,f(e).resource("desktopRoutes").create({values:t,portal:o.uid})];case 1:if(u=i.sent(),!l)return[3,3];return[4,e.refreshAccessible()];case 2:i.sent(),i.label=3;case 3:return[2,u]}})})()}}}},756:function(e,t,r){r.d(t,{u:function(){return d}});var n=r(485);function o(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}var i={"no-code":"/v",ai:"/x"},a=Object.values(i),l=function(e){var t=null==e?void 0:e.trim();return t&&"/"!==t?"/".concat(t.replace(/^\/+/,"")):"/"},u=function(e){var t=l(e).replace(/\/+$/,"");return""===t||"/"===t?"":t},c=function(e,t){var r=u(e),n=l(t);return!r||n===r||n.startsWith("".concat(r,"/"))?n:"".concat(r).concat(n)};function s(e){return"ai"===e?"ai":"no-code"}function f(e,t){var r=u(e),n=i[s(t)];if(!r)return n;var o=r.match(/^(.*)\/(?:v|x)\/apps\/([^/]+)$/);if(o){var l=o[1]||"";return"".concat(l).concat(n,"/apps/").concat(o[2])}return a.some(function(e){return r.endsWith(e)})?r.replace(/\/(?:v|x)$/,n):"".concat(r).concat(n)}function p(e,t,r){var n=l(e),i=!0,c=!1,p=void 0;try{for(var d,y=[f(t,r),f(t,"ai"===s(r)?"no-code":"ai")].concat(function(e){if(Array.isArray(e))return o(e)}(a)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||function(e){if(e){if("string"==typeof e)return o(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return o(e,void 0)}}(a)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[Symbol.iterator]();!(i=(d=y.next()).done);i=!0){var b=d.value;n=function(e,t){var r=u(t),n=l(e);return r?n===r?"/":n.startsWith("".concat(r,"/"))?n.slice(r.length)||"/":n:n}(n,b)}}catch(e){c=!0,p=e}finally{try{i||null==y.return||y.return()}finally{if(c)throw p}}return n}function d(e,t,r){var o,i,a,s,d=t.trim();if(/^[a-z][a-z\d+\-.]*:\/\//i.test(d)||d.startsWith("//"))return d;var y=(null==e||null==(i=e.router)||null==(o=i.getBasename)?void 0:o.call(i))||(null==e||null==(a=e.router)?void 0:a.basename);if(y){var b="function"==typeof(null==e?void 0:e.getPublicPath)?(0,n.getV2EffectiveBasePath)({getPublicPath:e.getPublicPath,router:{getBasename:function(){var t,r,n;return(null==(r=e.router)||null==(t=r.getBasename)?void 0:t.call(r))||(null==(n=e.router)?void 0:n.basename)}}}):y;return c(f(b,r),p(d,b,r))}if(null==e?void 0:e.getRouteUrl){var v,h,g=e.getRouteUrl(d),m=(v=l(g))===(h=l(d))?"":v.endsWith(h)?u(v.slice(0,-h.length)):void 0;return void 0!==m?c(f(m,r),p(d,m,r)):l(g)}var w=null==e||null==(s=e.getPublicPath)?void 0:s.call(e);return c(f(w,r),p(d,w,r))}},375:function(e){e.exports=i},485:function(e){e.exports=t},694:function(e){e.exports=l},69:function(e){e.exports=r},625:function(t){t.exports=e},59:function(e){e.exports=o},235:function(e){e.exports=a},155:function(e){e.exports=n}},p={};function d(e){var t=p[e];if(void 0!==t)return t.exports;var r=p[e]={exports:{}};return f[e](r,r.exports,d),r.exports}d.m=f,d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},d.d=function(e,t){for(var r in t)d.o(t,r)&&!d.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,r){return d.f[r](e,t),t},[]))},d.u=function(e){return""+e+"."+({354:"ead3e96143164cd5",499:"ef2ff0c022687485",778:"23ba409a924ee34a",845:"f2b0ce44ae4be707"})[e]+".js"},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},y={},d.l=function(e,t,r,n){if(y[e])return void y[e].push(t);if(void 0!==r)for(var o,i,a=document.getElementsByTagName("script"),l=0;l<a.length;l++){var u=a[l];if(u.getAttribute("src")==e||u.getAttribute("data-rspack")=="@nocobase/plugin-multi-portal/client-v2:"+r){o=u;break}}o||(i=!0,(o=document.createElement("script")).timeout=120,d.nc&&o.setAttribute("nonce",d.nc),o.setAttribute("data-rspack","@nocobase/plugin-multi-portal/client-v2:"+r),o.src=e),y[e]=[t];var c=function(t,r){o.onerror=o.onload=null,clearTimeout(s);var n=y[e];if(delete y[e],o.parentNode&&o.parentNode.removeChild(o),n&&n.forEach(function(e){return e(r)}),t)return t(r)},s=setTimeout(c.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=c.bind(null,o.onerror),o.onload=c.bind(null,o.onload),i&&document.head.appendChild(o)},d.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.g.importScripts&&(b=d.g.location+"");var y,b,v=d.g.document;if(!b&&v&&(v.currentScript&&"SCRIPT"===v.currentScript.tagName.toUpperCase()&&(b=v.currentScript.src),!b)){var h=v.getElementsByTagName("script");if(h.length)for(var g=h.length-1;g>-1&&(!b||!/^http(s?):/.test(b));)b=h[g--].src}if(!b)throw Error("Automatic publicPath is not supported in this browser");d.p=b.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),u={889:0},d.f.j=function(e,t){var r=d.o(u,e)?u[e]:void 0;if(0!==r)if(r)t.push(r[2]);else{var n=new Promise(function(t,n){r=u[e]=[t,n]});t.push(r[2]=n);var o=d.p+d.u(e),i=Error();d.l(o,function(t){if(d.o(u,e)&&(0!==(r=u[e])&&(u[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,r[1](i)}},"chunk-"+e,e)}},c=function(e,t){var r,n,o=t[0],i=t[1],a=t[2],l=0;if(o.some(function(e){return 0!==u[e]})){for(r in i)d.o(i,r)&&(d.m[r]=i[r]);a&&a(d)}for(e&&e(t);l<o.length;l++)n=o[l],d.o(u,n)&&u[n]&&u[n][0](),u[n]=0},(s=self.webpackChunk_nocobase_plugin_multi_portal_client_v2=self.webpackChunk_nocobase_plugin_multi_portal_client_v2||[]).forEach(c.bind(null,0)),s.push=c.bind(null,s.push.bind(s));var m={};return!function(){var e="",t="u">typeof document?document.currentScript:null;if(t&&t.src){var r=t.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"");r.indexOf("/static/plugins/@nocobase/plugin-multi-portal/dist/client-v2/")>=0&&(e=r.replace(/\/[^\/]+$/,"/"))}if(!e){var n=window.__webpack_public_path__||"";n&&("/"!==n.charAt(n.length-1)&&(n+="/"),e=n+"static/plugins/@nocobase/plugin-multi-portal/dist/client-v2/")}if(!e){var o=window.__nocobase_modern_client_prefix__||"v",i="/"+(o=String(o).replace(/^\/+|\/+$/g,"")||"v")+"/";if(!(e=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var a=window.location.pathname||"/",l=a.indexOf(i);e=l>=0?a.slice(0,l+1):"/"}e&&(e=e.replace(RegExp("/"+o+"/?$"),"/")),e||(e="/"),"/"!==e.charAt(e.length-1)&&(e+="/"),e+="static/plugins/@nocobase/plugin-multi-portal/dist/client-v2/"}d.p=e}(),!function(){d.r(m),d.d(m,{default:function(){return X}});var e,t=d(485),r=d(337);function n(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 o(e,t,r,n,o,i,a){try{var l=e[i](a),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function i(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e){if(e){if("string"==typeof e)return n(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return n(e,void 0)}}(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.")}()}var a=["action-panel","app-switcher"],l="desktop",u="mobile",c="main";function s(e){return!!e&&(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"}function f(e){return"string"==typeof e&&e?e:null}function p(e){var t=f(e);return!!t&&t.toLowerCase().includes(u)}function y(e){return e.title||e.routePath}function b(e){var t=new Set;return e.filter(function(e){return!t.has(e)&&(t.add(e),!0)})}function v(e,t,r){return e===c?r("Main application"):(null==t?void 0:t.title)||e}var h=d(133);function g(e,t,r,n,o,i,a){try{var l=e[i](a),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function w(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){g(i,n,o,a,l,"next",e)}function l(e){g(i,n,o,a,l,"throw",e)}a(void 0)})}}function P(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function O(e,t){var r,n,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[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(r)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)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 i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var S=(P(e={},"desktop",{layoutModelClass:"AdminLayoutModel"}),P(e,"mobile",{layoutModelClass:"MultiPortalMobileLayoutModel",rootPageModelClass:"MultiPortalMobileRootPageModel",childPageModelClass:"MultiPortalMobileChildPageModel"}),e),k=d(625),j=d(59),M=d(235),x=d(155),A=d.n(x),E=d(143),_=d(756);function T(e,t,r,n,o,i,a){try{var l=e[i](a),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function C(e){return(C=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function q(e,t){return(q=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function I(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(I=function(){return!!e})()}var R=j.Typography.Text;function L(e){var t=e.controlHeightLG+e.paddingSM+e.paddingXXS,r=e.paddingLG-e.paddingXXS;return{avatarSize:t,cardHeight:t+2*r,gridMinColumnWidth:9*e.controlHeightLG,iconSize:e.fontSizeHeading3+e.marginXXS,paddingBlock:r}}var B=(0,M.createStyles)(function(e){var t=e.token;return{portalItem:{"&:hover":{background:t.colorBgTextHover,borderColor:t.colorBorder,boxShadow:t.boxShadowTertiary,color:t.colorText,transform:"translateY(-".concat(t.lineWidth,"px)")},"&:focus-visible":{outline:"".concat(t.controlOutlineWidth,"px solid ").concat(t.colorPrimaryBorder),outlineOffset:t.controlOutlineWidth},".ant-typography":{color:"inherit"}}}});function N(e){var t;return(null==(t=e.title)?void 0:t.trim())||e.uid}function D(e){var r,n,o,i,a=e.record,l=e.token,u=L(l),c=null==(i=a.icon)?void 0:i.trim(),s={alignItems:"center",background:l.colorFillTertiary,borderRadius:l.borderRadiusLG,color:l.colorText,display:"flex",flex:"0 0 ".concat(u.avatarSize,"px"),fontSize:l.fontSizeHeading3,height:u.avatarSize,justifyContent:"center",lineHeight:1,width:u.avatarSize};if(c)return A().createElement(j.Avatar,{shape:"square",size:u.avatarSize,style:s,icon:null},A().createElement(t.Icon,{type:c,"aria-hidden":!0,style:{color:l.colorPrimary,fontSize:u.iconSize}}));var f=(r=[{background:l.colorPrimaryBg,color:l.colorPrimary},{background:l.colorSuccessBg,color:l.colorSuccess},{background:l.colorWarningBg,color:l.colorWarning},{background:l.colorErrorBg,color:l.colorError},{background:l.colorInfoBg,color:l.colorInfo}])[function(e,t){var r=0,n=!0,o=!1,i=void 0;try{for(var a,l=e[Symbol.iterator]();!(n=(a=l.next()).done);n=!0){var u=a.value;r=(31*r+u.charCodeAt(0))%0x7fffffff}}catch(e){o=!0,i=e}finally{try{n||null==l.return||l.return()}finally{if(o)throw i}}return Math.abs(r)%t}("".concat(a.uid,":").concat(a.title||""),r.length)];return A().createElement(j.Avatar,{"aria-hidden":!0,shape:"square",size:u.avatarSize,style:(n=function(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}({},s),o=o={background:f.background,color:f.color,fontWeight:l.fontWeightStrong},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n)},(N(a).trim()[0]||"P").toUpperCase())}function W(e){var t=e.model,r=j.theme.useToken().token,n=B().styles,o=(0,x.useMemo)(function(){return L(r)},[r]),i=t.context.app,a=t.translate,l=(0,k.useRequest)(function(){var e;return(e=function(){var e,t,r;return function(e,t){var r,n,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[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(r)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)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 i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:return[4,null==i||null==(e=i.apiClient)?void 0:e.request({url:"multiPortals:listAccessible",method:"get",skipNotify:!0})];case 1:return[2,Array.isArray(null==(r=n.sent())||null==(t=r.data)?void 0:t.data)?r.data.data:[]]}})},function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){T(i,n,o,a,l,"next",e)}function l(e){T(i,n,o,a,l,"throw",e)}a(void 0)})})()}),u=l.data,c=l.error,s=l.loading,f=null!=u?u:[],p=(0,x.useMemo)(function(){return{display:"grid",gap:r.marginSM,gridTemplateColumns:"repeat(auto-fill, minmax(min(100%, ".concat(o.gridMinColumnWidth,"px), 1fr))")}},[o.gridMinColumnWidth,r.marginSM]),d=(0,x.useMemo)(function(){return{alignItems:"center",background:r.colorBgContainer,border:"".concat(r.lineWidth,"px solid ").concat(r.colorBorderSecondary),borderRadius:r.borderRadiusLG,boxSizing:"border-box",color:r.colorText,display:"flex",gap:r.marginSM,height:o.cardHeight,padding:"".concat(o.paddingBlock,"px ").concat(r.paddingLG,"px"),textDecoration:"none",transition:"background ".concat(r.motionDurationMid,", border-color ").concat(r.motionDurationMid,", box-shadow ").concat(r.motionDurationMid,", transform ").concat(r.motionDurationMid)}},[o.cardHeight,o.paddingBlock,r.borderRadiusLG,r.colorBgContainer,r.colorBorderSecondary,r.colorText,r.lineWidth,r.marginSM,r.motionDurationMid,r.paddingLG]);return c?A().createElement(j.Alert,{type:"warning",message:a("Failed to load portals"),showIcon:!0}):s?A().createElement("div",{style:{minHeight:o.cardHeight}}):0===f.length?A().createElement(j.Empty,{image:j.Empty.PRESENTED_IMAGE_SIMPLE,description:a("No portals")}):A().createElement("div",{"data-testid":"multi-portal-block-grid",style:p},f.map(function(e){var t=N(e);return A().createElement("a",{key:e.uid,href:(0,_.u)(i,e.routePath,e.portalType),target:"_blank",rel:"noopener noreferrer","data-testid":"multi-portal-block-card",className:n.portalItem,style:d},A().createElement(D,{record:e,token:r}),A().createElement(R,{strong:!0,ellipsis:!0,style:{flex:1,fontSize:r.fontSizeLG,lineHeight:r.lineHeightLG,marginBottom:0,minWidth:0},title:t},t))}))}var z=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(){var e,t;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return e=r,t=arguments,e=C(e),function(e,t){var r;if(t&&("object"==((r=t)&&"u">typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,I()?Reflect.construct(e,t||[],C(this).constructor):e.apply(this,t))}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&q(r,e),t=[{key:"renderComponent",value:function(){return A().createElement(W,{model:this})}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(r.prototype,t),r}(t.BlockModel);function U(e,t,r,n,o,i,a){try{var l=e[i](a),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function G(e,t,r){return(G=F()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(e,n));return r&&K(o,r.prototype),o}).apply(null,arguments)}z.define({label:(0,E.MZ)("Portals"),hide:!0,createModelOptions:{use:"MultiPortalBlockModel",stepParams:{cardSettings:{titleDescription:{title:(0,E.MZ)("Portals")}}}},sort:600});function H(e){return(H=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function K(e,t){return(K=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function $(e){var t="function"==typeof Map?new Map:void 0;return($=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return G(e,arguments,H(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),K(r,e)})(e)}function F(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(F=function(){return!!e})()}var X=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function n(){var e,t;if(!(this instanceof n))throw TypeError("Cannot call a class as a function");return e=n,t=arguments,e=H(e),function(e,t){var r;if(t&&("object"==((r=t)&&"u">typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,F()?Reflect.construct(e,t||[],H(this).constructor):e.apply(this,t))}return n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&K(n,e),t=[{key:"load",value:function(){var e;return(e=function(){var e,t;return function(e,t){var r,n,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[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(r)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)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 i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:var g;return e=this,t=String(this.t("Portal manager")),this.app.flowEngine.registerModels({MultiPortalBlockModel:z}),this.app.flowEngine.registerModelLoaders({MultiPortalMobileLayoutModel:{loader:function(){return d.e("354").then(d.bind(d,833))}},MultiPortalMobileRootPageModel:{loader:function(){return d.e("354").then(d.bind(d,833))}},MultiPortalMobileChildPageModel:{loader:function(){return d.e("354").then(d.bind(d,833))}},MultiPortalMobileRootPageTabModel:{loader:function(){return d.e("354").then(d.bind(d,833))}},MultiPortalMobileChildPageTabModel:{loader:function(){return d.e("354").then(d.bind(d,833))}}}),this.app.entryActionManager&&this.app.flowEngine.registerModelLoaders({PortalEntryActionModel:{loader:function(){return d.e("499").then(d.bind(d,918))}}}),this.pluginSettingsManager.addMenuItem({key:"multi-portal",title:t,icon:"PartitionOutlined",aclSnippet:"pm.multi-portal",showTabs:!0}),this.pluginSettingsManager.addPageTabItem({menuKey:"multi-portal",key:"index",title:t,aclSnippet:"pm.multi-portal",componentLoader:function(){return d.e("845").then(d.bind(d,924))}}),!function(e,t){var r,n=e.pm;if(null==n?void 0:n.get){var o=n.get("acl")||n.get("@nocobase/plugin-acl");(null==o||null==(r=o.settingsUI)?void 0:r.addPermissionsTab)&&o.settingsUI.addPermissionsTab({key:"multi-portals",label:String(t("Portals")),sort:22,componentLoader:function(){return d.e("778").then(d.bind(d,177))}})}}(this.app,function(t){return e.t(t)}),!function(e,t){if(e.entryActionManager){var n=(0,r.G)(e),d=!0,h=!1,g=void 0;try{for(var m,w=a[Symbol.iterator]();!(d=(m=w.next()).done);d=!0){var P=m.value;e.entryActionManager.register("multi-portal:portals:".concat(P),{scope:P,sort:200,provider:function(e){return(function(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var a=e.apply(t,r);function l(e){o(a,n,i,l,u,"next",e)}function u(e){o(a,n,i,l,u,"throw",e)}l(void 0)})}})(function(){var r,o,a,d,h,g,m,w;return function(e,t){var r,n,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[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(r)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)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 i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(P){switch(P.label){case 0:return[4,n.load()];case 1:var O;if(r=P.sent(),(a=(o=function(e){var t=function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set;if(!s(t)||o.has(t))return n;o.add(t);var i=s(t)?t:null;return i&&(n.push(i),e(i.layoutContext,n,o),e(null==(r=i.model)?void 0:r.context,n,o)),n}(e),r=!0,n=!1,o=void 0;try{for(var i,a=t[Symbol.iterator]();!(r=(i=a.next()).done);r=!0){var c,d=i.value,y=f(null==(c=d.layout)?void 0:c.layoutType);if(y)return y}}catch(e){n=!0,o=e}finally{try{r||null==a.return||a.return()}finally{if(n)throw o}}if(t.some(function(e){var t,r,n;return!0===e.isMobileLayout||(null==(t=e.inputArgs)?void 0:t.isMobileLayout)===!0||(null==(n=e.view)||null==(r=n.inputArgs)?void 0:r.isMobileLayout)===!0}))return u;var b=!0,v=!1,h=void 0;try{for(var g,m=t[Symbol.iterator]();!(b=(g=m.next()).done);b=!0){var w=g.value,P=function(e){var t=[null==e?void 0:e.layoutModelClass,null==e?void 0:e.rootPageModelClass,null==e?void 0:e.childPageModelClass];return t.some(p)?u:t.some(f)?l:null}(w.layout);if(P)return P}}catch(e){v=!0,h=e}finally{try{b||null==m.return||m.return()}finally{if(v)throw h}}return t.some(function(e){var t,r,n;return!1===e.isMobileLayout||(null==(t=e.inputArgs)?void 0:t.isMobileLayout)===!1||(null==(n=e.view)||null==(r=n.inputArgs)?void 0:r.isMobileLayout)===!1})?l:null}(e))?r.portals.filter(function(e){return e.layout===o}):r.portals).length<=1)return[2,[]];return d=new Map(r.apps.map(function(e){return[e.name,e]})),h=function(e){var t=new Map,r=!0,n=!1,o=void 0;try{for(var i,a=e[Symbol.iterator]();!(r=(i=a.next()).done);r=!0){var l=i.value,u=y(l);t.set(u,(t.get(u)||0)+1)}}catch(e){n=!0,o=e}finally{try{r||null==a.return||a.return()}finally{if(n)throw o}}return t}(a),O=r.apps,g=O.length>0||b(a.map(function(e){return e.appName})).length>1,m=function(e,r){var n=g||(h.get(y(e))||0)>1?function(e,t,r){var n=y(e),o=v(e.appName,t,r);return o?"".concat(o," / ").concat(n):n}(e,r,t):y(e),o=function(e,t,r){var n=y(e),o=v(e.appName,t,r);return o?"".concat(o," / ").concat(n):n}(e,r,t);return function(e,t,r,n){var o=y(e);return{key:"multi-portal:portal:".concat(e.appName,":").concat(e.uid||e.routePath),label:o,createModelOptions:{use:"PortalEntryActionModel",props:{title:r,icon:e.icon||"PartitionOutlined",entryPortalTitle:r,entryPortalTargetTitle:n,entryPortal:e,entryPortalApp:t}}}}(e,r,n,o)},w=g?(function(e,t){var r=b(t.map(function(e){return e.appName})),n=e.map(function(e){return e.name});return b(i(r.includes(c)?[c]:[]).concat(i(n),i(r)))})(r.apps,a).map(function(e){var r=d.get(e),n=a.filter(function(t){return t.appName===e});return n.length?{key:"multi-portal:app:".concat(e),label:v(e,r,t),children:n.map(function(e){return m(e,r)})}:null}).filter(function(e){return!!e}):a.map(function(e){return m(e,d.get(e.appName))}),[2,w.length?[{key:"multi-portal:portals",label:t("Portals"),children:w}]:[]]}})})()}})}}catch(e){h=!0,g=e}finally{try{d||null==w.return||w.return()}finally{if(h)throw g}}}}(this.app,function(t){return String(e.t(t))}),[4,(g=this.app,w(function(){var e,t;return O(this,function(r){switch(r.label){case 0:var n;return r.trys.push([0,2,,3]),[4,(n=g.apiClient,w(function(){var e,t,r;return O(this,function(o){switch(o.label){case 0:return[4,n.request({url:"multiPortals:listEnabled",method:"get",skipNotify:!0})];case 1:return[2,Array.isArray(r=null==(t=o.sent())||null==(e=t.data)?void 0:e.data)?r:[]]}})})())];case 1:return e=r.sent(),[3,3];case 2:return console.warn("[NocoBase] plugin-multi-portal failed to load portals.",r.sent()),[2];case 3:return t=function(e,t){var r=[],n=!0,o=!1,i=void 0;try{for(var a,l=t[Symbol.iterator]();!(n=(a=l.next()).done);n=!0){var u=a.value,c=function(e){if(!e.enabled)return null;var t,r,n,o=S[(null==(n=e.uiLayout)?void 0:n.layoutType)||""];return o?(t=function(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){P(e,t,r[t])})}return e}({routeName:e.portalName,routePath:e.routePath,uid:e.uid},o),r=r={authCheck:e.authCheck},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t):null}(u);if(!(!c||e.hasLayout(c.routeName)))try{e.registerLayout(c),r.push(u.uid)}catch(e){console.warn("[NocoBase] plugin-multi-portal failed to register portal '".concat(c.routeName,"'."),e)}}}catch(e){o=!0,i=e}finally{try{n||null==l.return||l.return()}finally{if(o)throw i}}return r}(g.layoutManager,e),(0,h.gl)(function(e){if(null==(t=e.context)?void 0:t.routeRepository)return e.context.routeRepository;var t,r,n=null==(r=e.flowEngine)?void 0:r.context;if(n&&(void 0===n?"undefined":n&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)=="object"&&"routeRepository"in n)return n.routeRepository}(g),function(){return t}),[2]}})})())];case 1:return n.sent(),[2]}})},function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){U(i,n,o,a,l,"next",e)}function l(e){U(i,n,o,a,l,"throw",e)}a(void 0)})}).call(this)}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(n.prototype,t),n}($(t.Plugin))}(),m}()});
|
|
10
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("ahooks"),require("@nocobase/client-v2"),require("react-router-dom"),require("@nocobase/plugin-ui-layout/client-v2"),require("react"),require("antd"),require("antd-style"),require("@nocobase/flow-engine"),require("@ant-design/icons")):"function"==typeof define&&define.amd?define("@nocobase/plugin-multi-portal/client-v2",["ahooks","@nocobase/client-v2","react-router-dom","@nocobase/plugin-ui-layout/client-v2","react","antd","antd-style","@nocobase/flow-engine","@ant-design/icons"],t):"object"==typeof exports?exports["@nocobase/plugin-multi-portal/client-v2"]=t(require("ahooks"),require("@nocobase/client-v2"),require("react-router-dom"),require("@nocobase/plugin-ui-layout/client-v2"),require("react"),require("antd"),require("antd-style"),require("@nocobase/flow-engine"),require("@ant-design/icons")):e["@nocobase/plugin-multi-portal/client-v2"]=t(e.ahooks,e["@nocobase/client-v2"],e["react-router-dom"],e["@nocobase/plugin-ui-layout/client-v2"],e.react,e.antd,e["antd-style"],e["@nocobase/flow-engine"],e["@ant-design/icons"])}(self,function(e,t,r,n,o,a,i,l,u){return function(){"use strict";var c,s,f,p={337:function(e,t,r){r.d(t,{G:function(){return u}});var n=r(694);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e){var t=e||{};return{apps:Array.isArray(t.apps)?t.apps:[],portals:Array.isArray(t.portals)?t.portals:[]}}var i=function(){var e;function t(e){if(!(this instanceof t))throw TypeError("Cannot call a class as a function");o(this,"app",void 0),o(this,"payload",void 0),o(this,"loading",void 0),o(this,"revision",void 0),o(this,"loaded",void 0),o(this,"request",void 0),o(this,"requestId",void 0),this.app=e,this.payload=a(null),this.loading=!1,this.revision=0,this.loaded=!1,this.requestId=0,(0,n.define)(this,{payload:n.observable.ref,loading:n.observable.ref,revision:n.observable.ref})}return e=[{key:"load",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.app.apiClient;return this.loaded&&!this.request?Promise.resolve(this.payload):this.requestPortals(e)}},{key:"reload",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.app.apiClient;return this.requestPortals(e,{force:!0,invalidateEntryActions:!0})}},{key:"requestPortals",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.request||r.force){var n,o=++this.requestId;this.loading=!0,this.request=((null==(n=e.silent)?void 0:n.call(e))||e).request({url:"app:getPortals",skipNotify:!0}).then(function(e){var n,i,l,u=a(null!=(n=null==e||null==(i=e.data)?void 0:i.data)?n:null==e?void 0:e.data);return o===t.requestId&&(t.payload=u,t.loaded=!0,t.revision+=1,r.invalidateEntryActions&&(null==(l=t.app.entryActionManager)||l.invalidate())),u}).catch(function(e){throw e}).finally(function(){o===t.requestId&&(t.loading=!1,t.request=void 0)})}return this.request}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(t.prototype,e),t}(),l=new WeakMap;function u(e){var t=l.get(e);return t||(t=new i(e),l.set(e,t)),t}},143:function(e,t,r){r.d(t,{Dj:function(){return l},kj:function(){return i},MZ:function(){return u}});var n=r(694),o=JSON.parse('{"UU":"@nocobase/plugin-multi-portal"}');function a(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 i(){var e=(0,n.useFlowEngine)();return function(t,r){return e.context.t(t,a({ns:[o.UU,"client"]},r))}}function l(e){return a({ns:[o.UU,"client"]},e)}function u(e){return(0,n.tExpr)(e,{ns:[o.UU,"client"]})}},756:function(e,t,r){r.d(t,{u:function(){return v}});var n=r(485);function o(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 a(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e){if(e){if("string"==typeof e)return o(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return o(e,void 0)}}(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.")}()}var i="no-code",l=function(e){var t=null==e?void 0:e.trim();return t&&"/"!==t?"/".concat(t.replace(/^\/+/,"")):"/"},u=function(e){var t=l(e).replace(/\/+$/,"");return""===t||"/"===t?"":t},c=function(e,t){var r=u(e),n=l(t);return!r||n===r||n.startsWith("".concat(r,"/"))?n:"".concat(r).concat(n)};function s(e){return"ai"===e?"ai":i}function f(e){return"ai"===s(e)?"/x":"/".concat((0,n.getModernClientPrefix)())}function p(){return Array.from(new Set([f(i),"/x","/v"]))}function d(e,t){var r=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=u(e),o=f(t);if(!n)return o;var i=r?n.match(/^(.*)\/(apps|_app)\/([^/]+)$/):null;if(i){var l=i[1]||"",c=!0,d=!1,y=void 0;try{for(var b,v=a(p()).concat(["/settings"])[Symbol.iterator]();!(c=(b=v.next()).done);c=!0){var h=b.value;if(l===h){l="";break}if(l.endsWith(h)){l=l.slice(0,-h.length);break}}}catch(e){d=!0,y=e}finally{try{c||null==v.return||v.return()}finally{if(d)throw y}}var g="ai"===s(t)?"apps":i[2];return"".concat(l).concat(o,"/").concat(g,"/").concat(i[3])}var m=!0,w=!1,P=void 0;try{for(var S,O=p()[Symbol.iterator]();!(m=(S=O.next()).done);m=!0){var j=S.value;if(n===j)return o;if(n.endsWith(j))return"".concat(n.slice(0,-j.length)).concat(o)}}catch(e){w=!0,P=e}finally{try{m||null==O.return||O.return()}finally{if(w)throw P}}return"".concat(n).concat(o)}function y(e,t,r){var n=!(arguments.length>3)||void 0===arguments[3]||arguments[3],o=l(e),i=!0,c=!1,f=void 0;try{for(var y,b=[d(t,r,n),d(t,"ai"===s(r)?"no-code":"ai",n)].concat(a(p()))[Symbol.iterator]();!(i=(y=b.next()).done);i=!0){var v=y.value;o=function(e,t){var r=u(t),n=l(e);return r?n===r?"/":n.startsWith("".concat(r,"/"))?n.slice(r.length)||"/":n:n}(o,v)}}catch(e){c=!0,f=e}finally{try{i||null==b.return||b.return()}finally{if(c)throw f}}return o}function b(e,t){var r,n=null==e||null==(r=e.getPublicPath)?void 0:r.call(e);return!("main"===(e&&"name"in e&&"string"==typeof e.name?e.name:void 0)&&n&&u(n)===u(t))}function v(e,t,r){var o,a,i,s,f=t.trim();if(/^[a-z][a-z\d+\-.]*:\/\//i.test(f)||f.startsWith("//"))return f;var p=(null==e||null==(a=e.router)||null==(o=a.getBasename)?void 0:o.call(a))||(null==e||null==(i=e.router)?void 0:i.basename);if(p){var v="function"==typeof(null==e?void 0:e.getPublicPath)?(0,n.getV2EffectiveBasePath)({getPublicPath:e.getPublicPath,router:{getBasename:function(){var t,r,n;return(null==(r=e.router)||null==(t=r.getBasename)?void 0:t.call(r))||(null==(n=e.router)?void 0:n.basename)}}}):p,h=b(e,v);return c(d(v,r,h),y(f,v,r,h))}if(null==e?void 0:e.getRouteUrl){var g,m,w=e.getRouteUrl(f),P=(g=l(w))===(m=l(f))?"":g.endsWith(m)?u(g.slice(0,-m.length)):void 0;if(void 0!==P){var S=b(e,P);return c(d(P,r,S),y(f,P,r,S))}return l(w)}var O=null==e||null==(s=e.getPublicPath)?void 0:s.call(e),j=b(e,O);return c(d(O,r,j),y(f,O,r,j))}},624:function(e,t,r){r.d(t,{GN:function(){return n},Jx:function(){return o},Xc:function(){return i}});var n="__default_admin__",o="__default_mobile__",a=new Set([n,o]);function i(e){return"string"==typeof e&&a.has(e)}},375:function(e){e.exports=u},485:function(e){e.exports=t},694:function(e){e.exports=l},69:function(e){e.exports=n},625:function(t){t.exports=e},59:function(e){e.exports=a},235:function(e){e.exports=i},155:function(e){e.exports=o},442:function(e){e.exports=r}},d={};function y(e){var t=d[e];if(void 0!==t)return t.exports;var r=d[e]={exports:{}};return p[e](r,r.exports,y),r.exports}y.m=p,y.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return y.d(t,{a:t}),t},y.d=function(e,t){for(var r in t)y.o(t,r)&&!y.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},y.f={},y.e=function(e){return Promise.all(Object.keys(y.f).reduce(function(t,r){return y.f[r](e,t),t},[]))},y.u=function(e){return""+e+"."+({354:"7be267ae5d61a878",499:"ef2ff0c022687485",556:"5faf86d4f8faef40",778:"c98e7ec542d931fe"})[e]+".js"},y.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),y.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},b={},y.l=function(e,t,r,n){if(b[e])return void b[e].push(t);if(void 0!==r)for(var o,a,i=document.getElementsByTagName("script"),l=0;l<i.length;l++){var u=i[l];if(u.getAttribute("src")==e||u.getAttribute("data-rspack")=="@nocobase/plugin-multi-portal/client-v2:"+r){o=u;break}}o||(a=!0,(o=document.createElement("script")).timeout=120,y.nc&&o.setAttribute("nonce",y.nc),o.setAttribute("data-rspack","@nocobase/plugin-multi-portal/client-v2:"+r),o.src=e),b[e]=[t];var c=function(t,r){o.onerror=o.onload=null,clearTimeout(s);var n=b[e];if(delete b[e],o.parentNode&&o.parentNode.removeChild(o),n&&n.forEach(function(e){return e(r)}),t)return t(r)},s=setTimeout(c.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=c.bind(null,o.onerror),o.onload=c.bind(null,o.onload),a&&document.head.appendChild(o)},y.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},y.g.importScripts&&(v=y.g.location+"");var b,v,h=y.g.document;if(!v&&h&&(h.currentScript&&"SCRIPT"===h.currentScript.tagName.toUpperCase()&&(v=h.currentScript.src),!v)){var g=h.getElementsByTagName("script");if(g.length)for(var m=g.length-1;m>-1&&(!v||!/^http(s?):/.test(v));)v=g[m--].src}if(!v)throw Error("Automatic publicPath is not supported in this browser");y.p=v.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),c={889:0},y.f.j=function(e,t){var r=y.o(c,e)?c[e]:void 0;if(0!==r)if(r)t.push(r[2]);else{var n=new Promise(function(t,n){r=c[e]=[t,n]});t.push(r[2]=n);var o=y.p+y.u(e),a=Error();y.l(o,function(t){if(y.o(c,e)&&(0!==(r=c[e])&&(c[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;a.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",a.name="ChunkLoadError",a.type=n,a.request=o,r[1](a)}},"chunk-"+e,e)}},s=function(e,t){var r,n,o=t[0],a=t[1],i=t[2],l=0;if(o.some(function(e){return 0!==c[e]})){for(r in a)y.o(a,r)&&(y.m[r]=a[r]);i&&i(y)}for(e&&e(t);l<o.length;l++)n=o[l],y.o(c,n)&&c[n]&&c[n][0](),c[n]=0},(f=self.webpackChunk_nocobase_plugin_multi_portal_client_v2=self.webpackChunk_nocobase_plugin_multi_portal_client_v2||[]).forEach(s.bind(null,0)),f.push=s.bind(null,f.push.bind(f));var w={};return!function(){var e="",t="u">typeof document?document.currentScript:null;if(t&&t.src){var r=t.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"");r.indexOf("/static/plugins/@nocobase/plugin-multi-portal/dist/client-v2/")>=0&&(e=r.replace(/\/[^\/]+$/,"/"))}if(!e){var n=window.__webpack_public_path__||"";n&&("/"!==n.charAt(n.length-1)&&(n+="/"),e=n+"static/plugins/@nocobase/plugin-multi-portal/dist/client-v2/")}if(!e){var o=window.__nocobase_modern_client_prefix__||"v",a="/"+(o=String(o).replace(/^\/+|\/+$/g,"")||"v")+"/";if(!(e=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var i=window.location.pathname||"/",l=i.indexOf(a);e=l>=0?i.slice(0,l+1):"/"}e&&(e=e.replace(RegExp("/"+o+"/?$"),"/")),e||(e="/"),"/"!==e.charAt(e.length-1)&&(e+="/"),e+="static/plugins/@nocobase/plugin-multi-portal/dist/client-v2/"}y.p=e}(),!function(){y.r(w),y.d(w,{default:function(){return em}});var e,t=y(485),r=y(59),n=y(155),o=y.n(n),a=y(442),i=y(624),l=y(143),u=y(756);function c(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 s(e,t,r,n,o,a,i){try{var l=e[a](i),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,n=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw n}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(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 c(e,t)}}(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 p(){var e=(0,t.useApp)(),c=(0,l.kj)(),p=f((0,n.useState)(),2),d=p[0],y=p[1],b=f((0,n.useState)(),2),v=b[0],h=b[1],g=(0,n.useRef)();(0,n.useEffect)(function(){var t,r=!0;return(t=function(){var t,n,o;return function(e,t){var r,n,o,a={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),l=Object.defineProperty;return l(i,"next",{value:u(0)}),l(i,"throw",{value:u(1)}),l(i,"return",{value:u(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function u(l){return function(u){var c=[l,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)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 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(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),[4,e.apiClient.request({url:"multiPortals:listAccessible",method:"get",skipNotify:!0})];case 1:return t=a.sent(),r&&(y(Array.isArray(null==t||null==(n=t.data)?void 0:n.data)?t.data.data:[]),h(void 0)),[3,3];case 2:var i;return o=a.sent(),r&&h((null!=(i=Error)&&"u">typeof Symbol&&i[Symbol.hasInstance]?!!i[Symbol.hasInstance](o):o instanceof i)?o:Error(String(o))),[3,3];case 3:return[2]}})},function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(e){s(a,n,o,i,l,"next",e)}function l(e){s(a,n,o,i,l,"throw",e)}i(void 0)})})(),function(){r=!1}},[e]);var m=(0,n.useMemo)(function(){var e;return null==(e=(null!=d?d:[]).filter(function(e){return"no-code"===e.portalType||"ai"===e.portalType}).map(function(e,t){var r,n;return{index:t,portal:e,priority:e.uid===i.GN&&"no-code"===e.portalType?0:"no-code"===e.portalType&&(null==(r=e.uiLayout)?void 0:r.layoutType)==="desktop"?1:"no-code"===e.portalType&&(null==(n=e.uiLayout)?void 0:n.layoutType)==="mobile"?2:3}}).sort(function(e,t){return e.priority-t.priority||e.index-t.index})[0])?void 0:e.portal},[d]);return((0,n.useEffect)(function(){if(m&&"ai"===m.portalType){var t=(0,u.u)(e,m.routePath,m.portalType);g.current!==t&&(g.current=t,window.location.replace(t))}},[e,m]),v)?o().createElement(r.Result,{status:"error",title:c("Failed to load portals")}):!d||m&&"ai"===m.portalType?o().createElement(r.Flex,{align:"center",justify:"center",style:{minHeight:"100vh"}},o().createElement(r.Spin,{size:"large"})):m?o().createElement(a.Navigate,{replace:!0,to:m.routePath}):o().createElement(r.Result,{status:"info",title:c("No accessible portals")})}var d=y(337);function b(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 v(e,t,r,n,o,a,i){try{var l=e[a](i),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function h(e){return function(e){if(Array.isArray(e))return b(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e){if(e){if("string"==typeof e)return b(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return b(e,void 0)}}(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.")}()}var g=["action-panel","app-switcher"],m="desktop",P="mobile",S="main";function O(e){return!!e&&(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"}function j(e){return"string"==typeof e&&e?e:null}function k(e){var t=j(e);return!!t&&t.toLowerCase().includes(P)}function M(e){return e.title||e.routePath}function x(e){var t=new Set;return e.filter(function(e){return!t.has(e)&&(t.add(e),!0)})}function A(e,t,r){return e===S?r("Main application"):(null==t?void 0:t.title)||e}function E(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,o,a,i){try{var l=e[a](i),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function R(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){_(a,n,o,i,l,"next",e)}function l(e){_(a,n,o,i,l,"throw",e)}i(void 0)})}}function T(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 I(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 C(e,t){if(null==e)return{};var r,n,o,a={};if("u">typeof Reflect&&Reflect.ownKeys){for(o=0,r=Reflect.ownKeys(Object(e));o<r.length;o++)n=r[o],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}if(a=function(e,t){if(null==e)return{};var r,n,o={},a=Object.getOwnPropertyNames(e);for(n=0;n<a.length;n++)r=a[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r]);return o}(e,t),Object.getOwnPropertySymbols)for(o=0,r=Object.getOwnPropertySymbols(e);o<r.length;o++)n=r[o],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}function q(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,n=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw n}}return a}}(e,t)||N(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 L(e){return function(e){if(Array.isArray(e))return E(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||N(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 U(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function N(e,t){if(e){if("string"==typeof e)return E(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 E(e,t)}}function B(e,t){var r,n,o,a={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),l=Object.defineProperty;return l(i,"next",{value:u(0)}),l(i,"throw",{value:u(1)}),l(i,"return",{value:u(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function u(l){return function(u){var c=[l,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)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 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(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var D=Symbol("multiPortalRouteRepositoryState");function G(e){var t;return(null==(t=e.scopeStack[e.scopeStack.length-1])?void 0:t.scope)||{cacheKey:"admin-layout-model",uiLayoutUid:"admin-layout-model"}}function K(e){return e.getAPIClient()}function W(e){return"string"==typeof e.portalUid}function z(e){var t=e.children;return T({},(e.multiPortals,e.uiLayouts,C(e,["children","multiPortals","uiLayouts"])),Array.isArray(t)?{children:t.map(function(e){return z(e)})}:{})}function $(e,t,r){return R(function(){var n,o,a,i;return B(this,function(l){switch(l.label){case 0:return o=(r.refreshRequestIds.get(t.cacheKey)||0)+1,r.refreshRequestIds.set(t.cacheKey,o),[4,K(e).request({url:"/desktopRoutes:listAccessible",params:{tree:!0,sort:"sort",portal:t.portalUid}})];case 1:return i=Array.isArray(null==(a=l.sent())||null==(n=a.data)?void 0:n.data)?a.data.data:[],r.refreshRequestIds.get(t.cacheKey)===o&&e.setRoutes(i,t.cacheKey),[2,i]}})})()}function H(e,t,r,n,o,a,i){try{var l=e[a](i),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function F(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){H(a,n,o,i,l,"next",e)}function l(e){H(a,n,o,i,l,"throw",e)}i(void 0)})}}function X(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function J(e,t){var r,n,o,a={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),l=Object.defineProperty;return l(i,"next",{value:u(0)}),l(i,"throw",{value:u(1)}),l(i,"return",{value:u(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function u(l){return function(u){var c=[l,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)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 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(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var Z="mobile",V=(X(e={},"desktop",{layoutModelClass:"AdminLayoutModel"}),X(e,Z,{layoutModelClass:"MultiPortalMobileLayoutModel",rootPageModelClass:"MultiPortalMobileRootPageModel",childPageModelClass:"MultiPortalMobileChildPageModel"}),e),Y={layoutModelClass:"MobileLayoutModel",rootPageModelClass:"MobileRootPageModel",childPageModelClass:"MobileChildPageModel"};function Q(e){return"no-code"===(e.portalType||"no-code")}var ee=y(625),et=y(235);function er(e,t,r,n,o,a,i){try{var l=e[a](i),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function en(e){return(en=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function eo(e,t){return(eo=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function ea(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(ea=function(){return!!e})()}var ei=r.Typography.Text;function el(e){var t=e.controlHeightLG+e.paddingSM+e.paddingXXS,r=e.paddingLG-e.paddingXXS;return{avatarSize:t,cardHeight:t+2*r,gridMinColumnWidth:9*e.controlHeightLG,iconSize:e.fontSizeHeading3+e.marginXXS,paddingBlock:r}}var eu=(0,et.createStyles)(function(e){var t=e.token;return{portalItem:{"&:hover":{background:t.colorBgTextHover,borderColor:t.colorBorder,boxShadow:t.boxShadowTertiary,color:t.colorText,transform:"translateY(-".concat(t.lineWidth,"px)")},"&:focus-visible":{outline:"".concat(t.controlOutlineWidth,"px solid ").concat(t.colorPrimaryBorder),outlineOffset:t.controlOutlineWidth},".ant-typography":{color:"inherit"}}}});function ec(e){var t;return(null==(t=e.title)?void 0:t.trim())||e.uid}function es(e){var n,a,i,l,u=e.record,c=e.token,s=el(c),f=null==(l=u.icon)?void 0:l.trim(),p={alignItems:"center",background:c.colorFillTertiary,borderRadius:c.borderRadiusLG,color:c.colorText,display:"flex",flex:"0 0 ".concat(s.avatarSize,"px"),fontSize:c.fontSizeHeading3,height:s.avatarSize,justifyContent:"center",lineHeight:1,width:s.avatarSize};if(f)return o().createElement(r.Avatar,{shape:"square",size:s.avatarSize,style:p,icon:null},o().createElement(t.Icon,{type:f,"aria-hidden":!0,style:{color:c.colorPrimary,fontSize:s.iconSize}}));var d=(n=[{background:c.colorPrimaryBg,color:c.colorPrimary},{background:c.colorSuccessBg,color:c.colorSuccess},{background:c.colorWarningBg,color:c.colorWarning},{background:c.colorErrorBg,color:c.colorError},{background:c.colorInfoBg,color:c.colorInfo}])[function(e,t){var r=0,n=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(n=(i=l.next()).done);n=!0){var u=i.value;r=(31*r+u.charCodeAt(0))%0x7fffffff}}catch(e){o=!0,a=e}finally{try{n||null==l.return||l.return()}finally{if(o)throw a}}return Math.abs(r)%t}("".concat(u.uid,":").concat(u.title||""),n.length)];return o().createElement(r.Avatar,{"aria-hidden":!0,shape:"square",size:s.avatarSize,style:(a=function(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}({},p),i=i={background:d.background,color:d.color,fontWeight:c.fontWeightStrong},Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(i)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(i)).forEach(function(e){Object.defineProperty(a,e,Object.getOwnPropertyDescriptor(i,e))}),a)},(ec(u).trim()[0]||"P").toUpperCase())}function ef(e){var t=e.model,a=r.theme.useToken().token,i=eu().styles,l=(0,n.useMemo)(function(){return el(a)},[a]),c=t.context.app,s=t.translate,f=(0,ee.useRequest)(function(){var e;return(e=function(){var e,t,r;return function(e,t){var r,n,o,a={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),l=Object.defineProperty;return l(i,"next",{value:u(0)}),l(i,"throw",{value:u(1)}),l(i,"return",{value:u(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function u(l){return function(u){var c=[l,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)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 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(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:return[4,null==c||null==(e=c.apiClient)?void 0:e.request({url:"multiPortals:listAccessible",method:"get",skipNotify:!0})];case 1:return[2,Array.isArray(null==(r=n.sent())||null==(t=r.data)?void 0:t.data)?r.data.data:[]]}})},function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){er(a,n,o,i,l,"next",e)}function l(e){er(a,n,o,i,l,"throw",e)}i(void 0)})})()}),p=f.data,d=f.error,y=f.loading,b=null!=p?p:[],v=(0,n.useMemo)(function(){return{display:"grid",gap:a.marginSM,gridTemplateColumns:"repeat(auto-fill, minmax(min(100%, ".concat(l.gridMinColumnWidth,"px), 1fr))")}},[l.gridMinColumnWidth,a.marginSM]),h=(0,n.useMemo)(function(){return{alignItems:"center",background:a.colorBgContainer,border:"".concat(a.lineWidth,"px solid ").concat(a.colorBorderSecondary),borderRadius:a.borderRadiusLG,boxSizing:"border-box",color:a.colorText,display:"flex",gap:a.marginSM,height:l.cardHeight,padding:"".concat(l.paddingBlock,"px ").concat(a.paddingLG,"px"),textDecoration:"none",transition:"background ".concat(a.motionDurationMid,", border-color ").concat(a.motionDurationMid,", box-shadow ").concat(a.motionDurationMid,", transform ").concat(a.motionDurationMid)}},[l.cardHeight,l.paddingBlock,a.borderRadiusLG,a.colorBgContainer,a.colorBorderSecondary,a.colorText,a.lineWidth,a.marginSM,a.motionDurationMid,a.paddingLG]);return d?o().createElement(r.Alert,{type:"warning",message:s("Failed to load portals"),showIcon:!0}):y?o().createElement("div",{style:{minHeight:l.cardHeight}}):0===b.length?o().createElement(r.Empty,{image:r.Empty.PRESENTED_IMAGE_SIMPLE,description:s("No portals")}):o().createElement("div",{"data-testid":"multi-portal-block-grid",style:v},b.map(function(e){var t=ec(e);return o().createElement("a",{key:e.uid,href:(0,u.u)(c,e.routePath,e.portalType),target:"_blank",rel:"noopener noreferrer","data-testid":"multi-portal-block-card",className:i.portalItem,style:h},o().createElement(es,{record:e,token:a}),o().createElement(ei,{strong:!0,ellipsis:!0,style:{flex:1,fontSize:a.fontSizeLG,lineHeight:a.lineHeightLG,marginBottom:0,minWidth:0},title:t},t))}))}var ep=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(){var e,t;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return e=r,t=arguments,e=en(e),function(e,t){var r;if(t&&("object"==((r=t)&&"u">typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,ea()?Reflect.construct(e,t||[],en(this).constructor):e.apply(this,t))}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&eo(r,e),t=[{key:"renderComponent",value:function(){return o().createElement(ef,{model:this})}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(r.prototype,t),r}(t.BlockModel);function ed(e,t,r,n,o,a,i){try{var l=e[a](i),u=l.value}catch(e){r(e);return}l.done?t(u):Promise.resolve(u).then(n,o)}function ey(e,t,r){return(ey=eg()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(e,n));return r&&ev(o,r.prototype),o}).apply(null,arguments)}ep.define({label:(0,l.MZ)("Portals"),hide:!0,createModelOptions:{use:"MultiPortalBlockModel",stepParams:{cardSettings:{titleDescription:{title:(0,l.MZ)("Portals")}}}},sort:600});function eb(e){return(eb=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ev(e,t){return(ev=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function eh(e){var t="function"==typeof Map?new Map:void 0;return(eh=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return ey(e,arguments,eb(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),ev(r,e)})(e)}function eg(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(eg=function(){return!!e})()}var em=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(){var e,t;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return e=r,t=arguments,e=eb(e),function(e,t){var r;if(t&&("object"==((r=t)&&"u">typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,eg()?Reflect.construct(e,t||[],eb(this).constructor):e.apply(this,t))}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&ev(r,e),t=[{key:"load",value:function(){var e;return(e=function(){var e,t;return function(e,t){var r,n,o,a={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),l=Object.defineProperty;return l(i,"next",{value:u(0)}),l(i,"throw",{value:u(1)}),l(i,"return",{value:u(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function u(l){return function(u){var c=[l,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)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 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(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(r){switch(r.label){case 0:var n;if(e=this,t=String(this.t("Portal manager")),this.app.flowEngine.registerModels({MultiPortalBlockModel:ep}),this.app.flowEngine.registerModelLoaders({MultiPortalMobileLayoutModel:{loader:function(){return y.e("354").then(y.bind(y,833))}},MultiPortalMobileRootPageModel:{loader:function(){return y.e("354").then(y.bind(y,833))}},MultiPortalMobileChildPageModel:{loader:function(){return y.e("354").then(y.bind(y,833))}},MultiPortalMobileRootPageTabModel:{loader:function(){return y.e("354").then(y.bind(y,833))}},MultiPortalMobileChildPageTabModel:{loader:function(){return y.e("354").then(y.bind(y,833))}}}),this.app.entryActionManager&&this.app.flowEngine.registerModelLoaders({PortalEntryActionModel:{loader:function(){return y.e("499").then(y.bind(y,918))}}}),this.pluginSettingsManager.addMenuItem({key:"multi-portal",title:t,icon:"PartitionOutlined",aclSnippet:"pm.multi-portal",showTabs:!0,sort:-300}),this.pluginSettingsManager.addPageTabItem({menuKey:"multi-portal",key:"index",title:t,aclSnippet:"pm.multi-portal",componentLoader:function(){return y.e("556").then(y.bind(y,524))}}),!function(e,t){var r,n=e.pm;if(null==n?void 0:n.get){var o=n.get("acl")||n.get("@nocobase/plugin-acl");(null==o||null==(r=o.settingsUI)?void 0:r.addPermissionsTab)&&o.settingsUI.addPermissionsTab({key:"multi-portals",label:String(t("Portals")),sort:22,componentLoader:function(){return y.e("778").then(y.bind(y,177))}})}}(this.app,function(t){return e.t(t)}),!function(e,t){if(e.entryActionManager){var r=(0,d.G)(e),n=!0,o=!1,a=void 0;try{for(var i,l=g[Symbol.iterator]();!(n=(i=l.next()).done);n=!0){var u=i.value;e.entryActionManager.register("multi-portal:portals:".concat(u),{scope:u,sort:200,provider:function(e){return(function(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){v(a,n,o,i,l,"next",e)}function l(e){v(a,n,o,i,l,"throw",e)}i(void 0)})}})(function(){var n,o,a,i,l,u,c,s;return function(e,t){var r,n,o,a={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),l=Object.defineProperty;return l(i,"next",{value:u(0)}),l(i,"throw",{value:u(1)}),l(i,"return",{value:u(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function u(l){return function(u){var c=[l,u];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)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 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(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(f){switch(f.label){case 0:return[4,r.load()];case 1:var p;if(n=f.sent(),(a=(o=function(e){var t=function e(t){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set;if(!O(t)||o.has(t))return n;o.add(t);var a=O(t)?t:null;return a&&(n.push(a),e(a.layoutContext,n,o),e(null==(r=a.model)?void 0:r.context,n,o)),n}(e),r=!0,n=!1,o=void 0;try{for(var a,i=t[Symbol.iterator]();!(r=(a=i.next()).done);r=!0){var l,u=a.value,c=j(null==(l=u.layout)?void 0:l.layoutType);if(c)return c}}catch(e){n=!0,o=e}finally{try{r||null==i.return||i.return()}finally{if(n)throw o}}if(t.some(function(e){var t,r,n;return!0===e.isMobileLayout||(null==(t=e.inputArgs)?void 0:t.isMobileLayout)===!0||(null==(n=e.view)||null==(r=n.inputArgs)?void 0:r.isMobileLayout)===!0}))return P;var s=!0,f=!1,p=void 0;try{for(var d,y=t[Symbol.iterator]();!(s=(d=y.next()).done);s=!0){var b=d.value,v=function(e){var t=[null==e?void 0:e.layoutModelClass,null==e?void 0:e.rootPageModelClass,null==e?void 0:e.childPageModelClass];return t.some(k)?P:t.some(j)?m:null}(b.layout);if(v)return v}}catch(e){f=!0,p=e}finally{try{s||null==y.return||y.return()}finally{if(f)throw p}}return t.some(function(e){var t,r,n;return!1===e.isMobileLayout||(null==(t=e.inputArgs)?void 0:t.isMobileLayout)===!1||(null==(n=e.view)||null==(r=n.inputArgs)?void 0:r.isMobileLayout)===!1})?m:null}(e))?n.portals.filter(function(e){return e.layout===o}):n.portals).length<=1)return[2,[]];return i=new Map(n.apps.map(function(e){return[e.name,e]})),l=function(e){var t=new Map,r=!0,n=!1,o=void 0;try{for(var a,i=e[Symbol.iterator]();!(r=(a=i.next()).done);r=!0){var l=a.value,u=M(l);t.set(u,(t.get(u)||0)+1)}}catch(e){n=!0,o=e}finally{try{r||null==i.return||i.return()}finally{if(n)throw o}}return t}(a),p=n.apps,u=p.length>0||x(a.map(function(e){return e.appName})).length>1,c=function(e,r){var n=u||(l.get(M(e))||0)>1?function(e,t,r){var n=M(e),o=A(e.appName,t,r);return o?"".concat(o," / ").concat(n):n}(e,r,t):M(e),o=function(e,t,r){var n=M(e),o=A(e.appName,t,r);return o?"".concat(o," / ").concat(n):n}(e,r,t);return function(e,t,r,n){var o=M(e);return{key:"multi-portal:portal:".concat(e.appName,":").concat(e.uid||e.routePath),label:o,createModelOptions:{use:"PortalEntryActionModel",props:{title:r,icon:e.icon||"PartitionOutlined",entryPortalTitle:r,entryPortalTargetTitle:n,entryPortal:e,entryPortalApp:t}}}}(e,r,n,o)},s=u?(function(e,t){var r=x(t.map(function(e){return e.appName})),n=e.map(function(e){return e.name});return x(h(r.includes(S)?[S]:[]).concat(h(n),h(r)))})(n.apps,a).map(function(e){var r=i.get(e),n=a.filter(function(t){return t.appName===e});return n.length?{key:"multi-portal:app:".concat(e),label:A(e,r,t),children:n.map(function(e){return c(e,r)})}:null}).filter(function(e){return!!e}):a.map(function(e){return c(e,i.get(e.appName))}),[2,s.length?[{key:"multi-portal:portals",label:t("Portals"),children:s}]:[]]}})})()}})}}catch(e){o=!0,a=e}finally{try{n||null==l.return||l.return()}finally{if(o)throw a}}}}(this.app,function(t){return String(e.t(t))}),"settings."===this.pluginSettingsManager.getRouteName(""))return[2];return[4,(n=this.app,F(function(){var e,t,r;return J(this,function(o){switch(o.label){case 0:var a;return[4,(a=n.apiClient,F(function(){var e,t,r;return J(this,function(n){switch(n.label){case 0:return[4,a.request({url:"multiPortals:listEnabled",method:"get",skipNotify:!0})];case 1:return[2,Array.isArray(r=null==(t=n.sent())||null==(e=t.data)?void 0:e.data)?r:[]]}})})())];case 1:return e=o.sent(),t=new Set(function(e,t){var r=[],n=new Set(e.listLayouts().map(function(e){return e.uid})),o=new Set,a=new Set,l=!0,u=!1,c=void 0;try{for(var s,f=t[Symbol.iterator]();!(l=(s=f.next()).done);l=!0){var p,d=s.value;if(d.enabled&&Q(d)){var y=function(e){if(!e.enabled||!Q(e))return null;var t,r,n,o=(null==(n=e.uiLayout)?void 0:n.layoutType)||"",a=o===Z&&e.uid===i.Jx?Y:V[o];return a?(t=function(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){X(e,t,r[t])})}return e}({routeName:e.portalName,routePath:e.routePath,uid:e.uid},a),r=r={authCheck:e.authCheck},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t):null}(d);if(!y)throw Error("Portal '".concat(d.uid,"' uses an unknown UI layout type '").concat((null==(p=d.uiLayout)?void 0:p.layoutType)||"","'."));if(o.has(d.uid)||n.has(d.uid))throw Error("Duplicate portal uid '".concat(d.uid,"'."));if(a.has(y.routeName)||e.hasLayout(y.routeName))throw Error("Duplicate portal route name '".concat(y.routeName,"'."));o.add(d.uid),a.add(y.routeName),r.push({options:y,record:d})}}}catch(e){u=!0,c=e}finally{try{l||null==f.return||f.return()}finally{if(u)throw c}}var b=[],v=!0,h=!1,g=void 0;try{for(var m,w=r[Symbol.iterator]();!(v=(m=w.next()).done);v=!0){var P=m.value,S=P.options,O=P.record;e.registerLayout(S),b.push(O.uid)}}catch(e){h=!0,g=e}finally{try{v||null==w.return||w.return()}finally{if(h)throw g}}return b}(n.layoutManager,e)),r=e.filter(function(e){return t.has(e.uid)}).map(function(e){var t;return{cacheKey:(t=e.uid,"".concat("portal:").concat(t)),portalUid:e.uid}}),!function(e,t){if(e&&(void 0===e?"undefined":U(e))==="object"){if(e[D]){e[D].portalScopes=t;return}var r=K(e),n={loadingPromises:new Map,layoutScopes:new Map,originalActivateLayout:e.activateLayout.bind(e),originalApiRequest:r.request.bind(r),originalCreateRoute:e.createRoute.bind(e),originalDeleteRoute:e.deleteRoute.bind(e),originalEnsureAccessibleLoaded:e.ensureAccessibleLoaded.bind(e),originalMoveRoute:e.moveRoute.bind(e),originalRefreshAccessible:e.refreshAccessible.bind(e),originalUpdateRoute:e.updateRoute.bind(e),portalScopes:t,refreshRequestIds:new Map,scopeStack:[]};e[D]=n,r.request=function(e){return n.originalApiRequest(function(e,t){var r,n=G(t);if(!n.portalUid||!("string"==typeof e.url&&e.url.replace(/^\/+/,"").startsWith("desktopRoutes:")))return e;var o=(r=e.params)&&(void 0===r?"undefined":U(r))==="object"&&!Array.isArray(r)?T({},e.params):{};return delete o.layout,delete o.portal,I(T({},e),{params:I(T({},o),{portal:n.portalUid})})}(e,n))},e.activateLayout=function(e){var t,r,o,a,i,l,u=(t="string"==typeof(l=null==e?void 0:e.uid)&&l.trim()?l:"admin-layout-model",r=n.portalScopes,o=n.layoutScopes,(i=(a=new Map(r().filter(function(e){return"string"==typeof(null==e?void 0:e.portalUid)&&!!e.portalUid.trim()&&"string"==typeof e.cacheKey&&!!e.cacheKey.trim()}).map(function(e){return[e.portalUid,e]}))).get(t))||function(e,t,r){var n=new Set(L(t.values()).map(function(e){return e.cacheKey})),o=new Set(L(r.entries()).filter(function(t){return q(t,1)[0]!==e}).map(function(e){return q(e,2)[1].cacheKey})),a=r.get(e);if(a&&!n.has(a.cacheKey)&&!o.has(a.cacheKey))return a;for(var i=e;n.has(i)||o.has(i);)i="layout:".concat(i);var l={cacheKey:i,uiLayoutUid:e};return r.set(e,l),l}(t,a,o)),c=Symbol("multi-portal-route-scope"),s=n.originalActivateLayout(I(T({},e),{uid:u.cacheKey}));return n.scopeStack.push({deactivate:s,scope:u,token:c}),function(){var e=n.scopeStack.findIndex(function(e){return e.token===c});e>=0&&n.scopeStack.splice(e,1),s()}},e.refreshAccessible=function(){return R(function(){var t;return B(this,function(r){return W(t=G(n))?[2,$(e,t,n)]:[2,n.originalRefreshAccessible()]})})()},e.ensureAccessibleLoaded=function(){return R(function(){var t,r,o;return B(this,function(a){return W(t=G(n))?e.isAccessibleLoaded()?[2,e.listAccessible()]:(r=n.loadingPromises.get(t.cacheKey))?[2,r]:(o=$(e,t,n).finally(function(){n.loadingPromises.get(t.cacheKey)===o&&n.loadingPromises.delete(t.cacheKey)}),n.loadingPromises.set(t.cacheKey,o),[2,o]):[2,n.originalEnsureAccessibleLoaded()]})})()},e.createRoute=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return R(function(){var o,a,i,l;return B(this,function(u){switch(u.label){case 0:if(!(o=G(n)).portalUid)return[2,n.originalCreateRoute(t,r)];return i=void 0===(a=r.refreshAfterMutation)||a,[4,K(e).resource("desktopRoutes").create({values:z(t),portal:o.portalUid})];case 1:if(l=u.sent(),!i)return[3,3];return[4,e.refreshAccessible()];case 2:u.sent(),u.label=3;case 3:return[2,l]}})})()},e.updateRoute=function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return R(function(){var a,i,l,u,c;return B(this,function(s){switch(s.label){case 0:if(!(a=G(n)).portalUid)return[2,n.originalUpdateRoute(t,r,o)];return l=void 0===(i=o.refreshAfterMutation)||i,u=z(r),[4,K(e).resource("desktopRoutes").update(Array.isArray(t)?{filter:{id:{$in:t}},values:u,portal:a.portalUid}:{filterByTk:t,values:u,portal:a.portalUid})];case 1:if(c=s.sent(),!l)return[3,3];return[4,e.refreshAccessible()];case 2:s.sent(),s.label=3;case 3:return[2,c]}})})()},e.deleteRoute=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return R(function(){var o,a,i,l;return B(this,function(u){switch(u.label){case 0:if(!(o=G(n)).portalUid)return[2,n.originalDeleteRoute(t,r)];return i=void 0===(a=r.refreshAfterMutation)||a,[4,K(e).resource("desktopRoutes").destroy({filterByTk:t,portal:o.portalUid})];case 1:if(l=u.sent(),!i)return[3,3];return[4,e.refreshAccessible()];case 2:u.sent(),u.label=3;case 3:return[2,l]}})})()},e.moveRoute=function(t){return R(function(){var r,o,a,i,l;return B(this,function(u){switch(u.label){case 0:if(!(r=G(n)).portalUid)return[2,n.originalMoveRoute(t)];return a=void 0===(o=t.refreshAfterMove)||o,i=C(t,["refreshAfterMove"]),[4,K(e).resource("desktopRoutes").move(I(T({},i),{portal:r.portalUid}))];case 1:if(l=u.sent(),!a)return[3,3];return[4,e.refreshAccessible()];case 2:u.sent(),u.label=3;case 3:return[2,l]}})})()}}}(function(e){if(null==(t=e.context)?void 0:t.routeRepository)return e.context.routeRepository;var t,r,n=null==(r=e.flowEngine)?void 0:r.context;if(n&&(void 0===n?"undefined":n&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)=="object"&&"routeRepository"in n)return n.routeRepository}(n),function(){return r}),[2]}})})())];case 1:return r.sent(),this.router.add("root",{path:"/",Component:p,authCheck:!0}),[2]}})},function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){ed(a,n,o,i,l,"next",e)}function l(e){ed(a,n,o,i,l,"throw",e)}i(void 0)})}).call(this)}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(r.prototype,t),r}(eh(t.Plugin))}(),w}()});
|
|
@@ -12,6 +12,7 @@ export { getMultiPortalRouteScopeCacheKey };
|
|
|
12
12
|
export type MultiPortalRuntimeRecord = {
|
|
13
13
|
uid: string;
|
|
14
14
|
title?: string;
|
|
15
|
+
portalType?: string | null;
|
|
15
16
|
portalName: string;
|
|
16
17
|
routePath: string;
|
|
17
18
|
authCheck: boolean;
|
|
@@ -30,7 +31,7 @@ type MultiPortalRegistrationApp = {
|
|
|
30
31
|
flowEngine?: {
|
|
31
32
|
context?: unknown;
|
|
32
33
|
};
|
|
33
|
-
layoutManager: Pick<Application['layoutManager'], 'hasLayout' | 'registerLayout'>;
|
|
34
|
+
layoutManager: Pick<Application['layoutManager'], 'hasLayout' | 'listLayouts' | 'registerLayout'>;
|
|
34
35
|
};
|
|
35
36
|
export declare function toMultiPortalLayoutRegisterOptions(record: MultiPortalRuntimeRecord): LayoutRegisterOptions | null;
|
|
36
37
|
export declare function fetchMultiPortals(apiClient: MultiPortalRegistrationApp['apiClient']): Promise<MultiPortalRuntimeRecord[]>;
|
|
@@ -9,16 +9,6 @@
|
|
|
9
9
|
import { ChildPageTabModel, RootPageTabModel } from '@nocobase/client-v2';
|
|
10
10
|
import { MobileChildPageModel, MobileLayoutModel, MobileRootPageModel } from '@nocobase/plugin-ui-layout/client-v2';
|
|
11
11
|
export declare class MultiPortalMobileLayoutModel extends MobileLayoutModel {
|
|
12
|
-
get layout(): {
|
|
13
|
-
uid: string;
|
|
14
|
-
rootRouteName: string;
|
|
15
|
-
routeName: string;
|
|
16
|
-
routePath: string;
|
|
17
|
-
layoutModelClass: string;
|
|
18
|
-
rootPageModelClass: string;
|
|
19
|
-
childPageModelClass: string;
|
|
20
|
-
authCheck: boolean;
|
|
21
|
-
};
|
|
22
12
|
}
|
|
23
13
|
export declare class MultiPortalMobileRootPageModel extends MobileRootPageModel {
|
|
24
14
|
constructor(options: ConstructorParameters<typeof MobileRootPageModel>[0]);
|
|
@@ -27,8 +17,10 @@ export declare class MultiPortalMobileChildPageModel extends MobileChildPageMode
|
|
|
27
17
|
constructor(options: ConstructorParameters<typeof MobileChildPageModel>[0]);
|
|
28
18
|
}
|
|
29
19
|
export declare class MultiPortalMobileRootPageTabModel extends RootPageTabModel {
|
|
20
|
+
constructor(options: ConstructorParameters<typeof RootPageTabModel>[0]);
|
|
30
21
|
save(): Promise<void>;
|
|
31
22
|
}
|
|
32
23
|
export declare class MultiPortalMobileChildPageTabModel extends ChildPageTabModel {
|
|
33
|
-
|
|
24
|
+
constructor(options: ConstructorParameters<typeof ChildPageTabModel>[0]);
|
|
25
|
+
save(): Promise<void>;
|
|
34
26
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
+
import { type UploadedAttachment } from '@nocobase/client-v2';
|
|
9
10
|
import React from 'react';
|
|
10
11
|
type MultiPortalPrimaryKey = string;
|
|
11
12
|
type PortalSourceStorage = 'nocobase' | 'git';
|
|
@@ -17,6 +18,8 @@ type MultiPortalGitOptions = {
|
|
|
17
18
|
type MultiPortalOptions = {
|
|
18
19
|
git?: MultiPortalGitOptions;
|
|
19
20
|
sourceStorage?: PortalSourceStorage;
|
|
21
|
+
/** 画廊封面附件,空值时回落到自动生成的渐变封面 */
|
|
22
|
+
cover?: UploadedAttachment | null;
|
|
20
23
|
};
|
|
21
24
|
export type MultiPortalRecord = MultiPortalFormValues & {
|
|
22
25
|
defaultPortal?: boolean;
|
|
@@ -76,5 +79,26 @@ export declare function deleteMultiPortals(args: {
|
|
|
76
79
|
filterByTk: MultiPortalPrimaryKey | MultiPortalPrimaryKey[];
|
|
77
80
|
onDeleted: () => void;
|
|
78
81
|
}): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* 从 git 仓库地址里取出仓库名。
|
|
84
|
+
*
|
|
85
|
+
* 支持 `git@host:org/repo.git`、`https://host/org/repo(.git)`、以及末尾多余的斜杠。
|
|
86
|
+
*
|
|
87
|
+
* @param {string | undefined} repo 仓库地址
|
|
88
|
+
* @returns {string | undefined} 仓库名
|
|
89
|
+
*/
|
|
90
|
+
export declare function getRepoNameFromGitUrl(repo?: string | null): string;
|
|
91
|
+
/**
|
|
92
|
+
* 由 git 仓库地址推导 portal 的标题和名称。
|
|
93
|
+
*
|
|
94
|
+
* 只是给用户省一次输入,两个字段推导完仍然可改。
|
|
95
|
+
*
|
|
96
|
+
* @param {string | undefined} repo 仓库地址
|
|
97
|
+
* @returns {{ portalName: string; title: string } | undefined} 推导结果
|
|
98
|
+
*/
|
|
99
|
+
export declare function derivePortalNamingFromGitUrl(repo?: string | null): {
|
|
100
|
+
portalName: string;
|
|
101
|
+
title: string;
|
|
102
|
+
};
|
|
79
103
|
declare const MultiPortalsPage: React.FC;
|
|
80
104
|
export default MultiPortalsPage;
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
import React from 'react';
|
|
10
|
+
import type { MultiPortalRecord } from './MultiPortalsPage';
|
|
11
|
+
export default function PortalRoutesDrawer({ portal }: {
|
|
12
|
+
portal: MultiPortalRecord;
|
|
13
|
+
}): React.JSX.Element;
|