@acorex-platform/module-tenant-management-client 0.0.59 → 0.0.60
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/fesm2022/acorex-platform-module-tenant-management-client-approve-tenant-request.command-D18-n5Lc.mjs +91 -0
- package/fesm2022/acorex-platform-module-tenant-management-client-approve-tenant-request.command-D18-n5Lc.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-resource-share.mjs +6 -0
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-resource-share.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.mjs +110 -5
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user.mjs +186 -9
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant.mjs +158 -24
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entities-tenant.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-acorex-platform-module-tenant-management-client-contracts-entity-catalog-CDfoKWOn.mjs → acorex-platform-module-tenant-management-client-contracts-entity-catalog-acorex-platform-module-tenant-management-client-contracts-entity-catalog-DqBYnske.mjs} +11 -5
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-acorex-platform-module-tenant-management-client-contracts-entity-catalog-DqBYnske.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-resource-share.entity-BPbgUTEH.mjs → acorex-platform-module-tenant-management-client-contracts-entity-catalog-resource-share.entity-Bf7keWah.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-resource-share.entity-BPbgUTEH.mjs.map → acorex-platform-module-tenant-management-client-contracts-entity-catalog-resource-share.entity-Bf7keWah.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-admin-scope-C6Ekm0Qg.mjs +43 -0
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-admin-scope-C6Ekm0Qg.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-app-access.entity-nA_yhhRD.mjs → acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-app-access.entity-BhkM_HyR.mjs} +66 -7
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-app-access.entity-BhkM_HyR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user.entity-CmUdRisR.mjs → acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user.entity-Dk8LTu5B.mjs} +142 -11
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user.entity-Dk8LTu5B.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant.entity-ZpnmQnXF.mjs → acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant.entity-cOVeFcEP.mjs} +154 -26
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant.entity-cOVeFcEP.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts.mjs +96 -3
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-tenant-management-client-reject-tenant-request.command-CKSHPw1a.mjs +80 -0
- package/fesm2022/acorex-platform-module-tenant-management-client-reject-tenant-request.command-CKSHPw1a.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-tenant-management-client.mjs +350 -14
- package/fesm2022/acorex-platform-module-tenant-management-client.mjs.map +1 -1
- package/i18n/en-AU/tenant-management.json +91 -10
- package/i18n/en-US/tenant-management.json +91 -10
- package/i18n/fa-IR/tenant-management.json +92 -11
- package/package.json +1 -1
- package/types/acorex-platform-module-tenant-management-client-contracts.d.ts +178 -4
- package/types/acorex-platform-module-tenant-management-client.d.ts +25 -1
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-acorex-platform-module-tenant-management-client-contracts-entity-catalog-CDfoKWOn.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user-app-access.entity-nA_yhhRD.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant-user.entity-CmUdRisR.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-tenant-management-client-contracts-entity-catalog-tenant.entity-ZpnmQnXF.mjs.map +0 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { AXDialogService } from '@acorex/components/dialog';
|
|
2
|
+
import { AXToastService } from '@acorex/components/toast';
|
|
3
|
+
import { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';
|
|
4
|
+
import { AXPSessionService } from '@acorex-platform/framework-client/auth';
|
|
5
|
+
import { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';
|
|
6
|
+
import { AXPCommandService } from '@acorex-platform/framework-client/runtime';
|
|
7
|
+
import { resolveEntityActionCommandInput } from '@acorex-platform/framework-shared/runtime';
|
|
8
|
+
import { AXMTenantManagementServerCommands, AXM_TENANT_REQUEST_ERROR_CODES } from '@acorex-platform/module-tenant-management-client/contracts';
|
|
9
|
+
export { AXM_TENANT_APPROVE_REQUEST_COMMAND } from '@acorex-platform/module-tenant-management-client/contracts';
|
|
10
|
+
import * as i0 from '@angular/core';
|
|
11
|
+
import { inject, Injectable } from '@angular/core';
|
|
12
|
+
|
|
13
|
+
//#region ---- AXPApproveTenantRequestCommand ----
|
|
14
|
+
class AXPApproveTenantRequestCommand {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.dialogService = inject(AXDialogService);
|
|
17
|
+
this.toastService = inject(AXToastService);
|
|
18
|
+
this.translationService = inject(AXTranslationService);
|
|
19
|
+
this.commandService = inject(AXPCommandService);
|
|
20
|
+
this.sessionService = inject(AXPSessionService);
|
|
21
|
+
this.entityEvents = inject(AXPEntityBroadcastService);
|
|
22
|
+
}
|
|
23
|
+
async execute(input) {
|
|
24
|
+
const actionInput = resolveEntityActionCommandInput(input);
|
|
25
|
+
const data = (actionInput.data ?? {});
|
|
26
|
+
const tenantId = String(data['id'] ?? '').trim();
|
|
27
|
+
if (!tenantId) {
|
|
28
|
+
return { success: false, message: { text: 'Tenant id is required.' } };
|
|
29
|
+
}
|
|
30
|
+
const locale = this.translationService.getActiveLang?.() ?? 'en-US';
|
|
31
|
+
const who = resolveMultiLanguageString(data['title'], locale).trim() ||
|
|
32
|
+
String(data['name'] ?? tenantId);
|
|
33
|
+
const confirmTitle = await this.translationService
|
|
34
|
+
.translateAsync('@tenant-management:tenants.actions.approve-request.confirm-title')
|
|
35
|
+
.catch(() => 'Approve Tenant Request');
|
|
36
|
+
const confirmMessage = await this.translationService
|
|
37
|
+
.translateAsync('@tenant-management:tenants.actions.approve-request.confirm-message', {
|
|
38
|
+
params: { tenant: who },
|
|
39
|
+
})
|
|
40
|
+
.catch(() => `Approve the tenant request for ${who}?`);
|
|
41
|
+
const confirmed = await this.dialogService.confirm(confirmTitle, confirmMessage, 'primary', 'horizontal');
|
|
42
|
+
if (!confirmed.result) {
|
|
43
|
+
return { success: true, kind: 'object', data: { outcome: 'cancelled' } };
|
|
44
|
+
}
|
|
45
|
+
const result = await this.commandService.executeRemote(AXMTenantManagementServerCommands.ApproveTenantRequest, {
|
|
46
|
+
tenantId,
|
|
47
|
+
webOrigin: typeof window !== 'undefined' ? window.location.origin : undefined,
|
|
48
|
+
});
|
|
49
|
+
if (result?.success) {
|
|
50
|
+
const entity = actionInput.entity?.trim() || 'TenantManagement.Tenant';
|
|
51
|
+
// Membership may become selectable immediately — drop ListTenants cache + refresh entity list.
|
|
52
|
+
this.sessionService.invalidateCatalogCaches();
|
|
53
|
+
this.entityEvents.publishLayoutRefresh(entity, { highlightRowId: tenantId });
|
|
54
|
+
const [toastTitle, toastContent] = await Promise.all([
|
|
55
|
+
this.translationService
|
|
56
|
+
.translateAsync('@tenant-management:tenants.actions.approve-request.success.title')
|
|
57
|
+
.catch(() => 'Approved'),
|
|
58
|
+
this.translationService
|
|
59
|
+
.translateAsync('@tenant-management:tenants.actions.approve-request.success.description')
|
|
60
|
+
.catch(() => 'The tenant request was approved.'),
|
|
61
|
+
]);
|
|
62
|
+
this.toastService.show({ color: 'success', title: toastTitle, content: toastContent, timeOut: 3000 });
|
|
63
|
+
return { success: true, kind: 'object', data: undefined };
|
|
64
|
+
}
|
|
65
|
+
const [toastTitle, fallback] = await Promise.all([
|
|
66
|
+
this.translationService
|
|
67
|
+
.translateAsync('@tenant-management:tenants.actions.approve-request.error.title')
|
|
68
|
+
.catch(() => 'Approve Failed'),
|
|
69
|
+
this.translationService
|
|
70
|
+
.translateAsync('@tenant-management:tenants.actions.approve-request.error.description')
|
|
71
|
+
.catch(() => 'Failed to approve the tenant request.'),
|
|
72
|
+
]);
|
|
73
|
+
const code = typeof result?.message?.code === 'string' ? result.message.code : '';
|
|
74
|
+
const mapped = code === AXM_TENANT_REQUEST_ERROR_CODES.NotPending
|
|
75
|
+
? await this.translationService
|
|
76
|
+
.translateAsync('@tenant-management:tenants.actions.approve-request.error.not-pending')
|
|
77
|
+
.catch(() => fallback)
|
|
78
|
+
: fallback;
|
|
79
|
+
this.toastService.show({ color: 'danger', title: toastTitle, content: mapped, timeOut: 4000 });
|
|
80
|
+
return { success: false };
|
|
81
|
+
}
|
|
82
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPApproveTenantRequestCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
83
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPApproveTenantRequestCommand, providedIn: 'root' }); }
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPApproveTenantRequestCommand, decorators: [{
|
|
86
|
+
type: Injectable,
|
|
87
|
+
args: [{ providedIn: 'root' }]
|
|
88
|
+
}] });
|
|
89
|
+
|
|
90
|
+
export { AXPApproveTenantRequestCommand };
|
|
91
|
+
//# sourceMappingURL=acorex-platform-module-tenant-management-client-approve-tenant-request.command-D18-n5Lc.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-tenant-management-client-approve-tenant-request.command-D18-n5Lc.mjs","sources":["../../../../libs/modules/tenant-management/client/src/lib/commands/approve-tenant-request.command.ts"],"sourcesContent":["import { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport type { AXPCommand, AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { resolveEntityActionCommandInput } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXM_TENANT_APPROVE_REQUEST_COMMAND,\n AXM_TENANT_REQUEST_ERROR_CODES,\n AXMTenantManagementServerCommands,\n} from '@acorex-platform/module-tenant-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\n\nexport { AXM_TENANT_APPROVE_REQUEST_COMMAND };\n\n//#region ---- AXPApproveTenantRequestCommand ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXPApproveTenantRequestCommand implements AXPCommand {\n private readonly dialogService = inject(AXDialogService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly entityEvents = inject(AXPEntityBroadcastService);\n\n async execute(input?: unknown): AXPCommandExecuteResultPromise {\n const actionInput = resolveEntityActionCommandInput(input);\n const data = (actionInput.data ?? {}) as Record<string, unknown>;\n const tenantId = String(data['id'] ?? '').trim();\n if (!tenantId) {\n return { success: false, message: { text: 'Tenant id is required.' } };\n }\n\n const locale = this.translationService.getActiveLang?.() ?? 'en-US';\n const who =\n resolveMultiLanguageString(data['title'] as never, locale).trim() ||\n String(data['name'] ?? tenantId);\n\n const confirmTitle = await this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.confirm-title')\n .catch(() => 'Approve Tenant Request');\n const confirmMessage = await this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.confirm-message', {\n params: { tenant: who },\n })\n .catch(() => `Approve the tenant request for ${who}?`);\n\n const confirmed = await this.dialogService.confirm(confirmTitle, confirmMessage, 'primary', 'horizontal');\n if (!confirmed.result) {\n return { success: true, kind: 'object', data: { outcome: 'cancelled' } };\n }\n\n const result = await this.commandService.executeRemote(\n AXMTenantManagementServerCommands.ApproveTenantRequest,\n {\n tenantId,\n webOrigin: typeof window !== 'undefined' ? window.location.origin : undefined,\n },\n );\n\n if (result?.success) {\n const entity = actionInput.entity?.trim() || 'TenantManagement.Tenant';\n // Membership may become selectable immediately — drop ListTenants cache + refresh entity list.\n this.sessionService.invalidateCatalogCaches();\n this.entityEvents.publishLayoutRefresh(entity, { highlightRowId: tenantId });\n\n const [toastTitle, toastContent] = await Promise.all([\n this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.success.title')\n .catch(() => 'Approved'),\n this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.success.description')\n .catch(() => 'The tenant request was approved.'),\n ]);\n this.toastService.show({ color: 'success', title: toastTitle, content: toastContent, timeOut: 3000 });\n return { success: true, kind: 'object', data: undefined };\n }\n\n const [toastTitle, fallback] = await Promise.all([\n this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.error.title')\n .catch(() => 'Approve Failed'),\n this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.error.description')\n .catch(() => 'Failed to approve the tenant request.'),\n ]);\n const code = typeof result?.message?.code === 'string' ? result.message.code : '';\n const mapped =\n code === AXM_TENANT_REQUEST_ERROR_CODES.NotPending\n ? await this.translationService\n .translateAsync('@tenant-management:tenants.actions.approve-request.error.not-pending')\n .catch(() => fallback)\n : fallback;\n this.toastService.show({ color: 'danger', title: toastTitle, content: mapped, timeOut: 4000 });\n return { success: false };\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;;;;;;AAiBA;MAGa,8BAA8B,CAAA;AAD3C,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACvC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACjD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAyElE,IAAA;IAvEC,MAAM,OAAO,CAAC,KAAe,EAAA;AAC3B,QAAA,MAAM,WAAW,GAAG,+BAA+B,CAAC,KAAK,CAAC;QAC1D,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,IAAI,EAAE,CAA4B;AAChE,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAChD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,EAAE;QACxE;QAEA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,IAAI,IAAI,OAAO;AACnE,QAAA,MAAM,GAAG,GACP,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAU,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;YACjE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;AAElC,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC;aAC7B,cAAc,CAAC,kEAAkE;AACjF,aAAA,KAAK,CAAC,MAAM,wBAAwB,CAAC;AACxC,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;aAC/B,cAAc,CAAC,oEAAoE,EAAE;AACpF,YAAA,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;SACxB;aACA,KAAK,CAAC,MAAM,kCAAkC,GAAG,CAAA,CAAA,CAAG,CAAC;AAExD,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC;AACzG,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACrB,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;QAC1E;AAEA,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CACpD,iCAAiC,CAAC,oBAAoB,EACtD;YACE,QAAQ;AACR,YAAA,SAAS,EAAE,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS;AAC9E,SAAA,CACF;AAED,QAAA,IAAI,MAAM,EAAE,OAAO,EAAE;YACnB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,yBAAyB;;AAEtE,YAAA,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE;AAC7C,YAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;YAE5E,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AACnD,gBAAA,IAAI,CAAC;qBACF,cAAc,CAAC,kEAAkE;AACjF,qBAAA,KAAK,CAAC,MAAM,UAAU,CAAC;AAC1B,gBAAA,IAAI,CAAC;qBACF,cAAc,CAAC,wEAAwE;AACvF,qBAAA,KAAK,CAAC,MAAM,kCAAkC,CAAC;AACnD,aAAA,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACrG,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3D;QAEA,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC/C,YAAA,IAAI,CAAC;iBACF,cAAc,CAAC,gEAAgE;AAC/E,iBAAA,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAChC,YAAA,IAAI,CAAC;iBACF,cAAc,CAAC,sEAAsE;AACrF,iBAAA,KAAK,CAAC,MAAM,uCAAuC,CAAC;AACxD,SAAA,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE;AACjF,QAAA,MAAM,MAAM,GACV,IAAI,KAAK,8BAA8B,CAAC;AACtC,cAAE,MAAM,IAAI,CAAC;iBACR,cAAc,CAAC,sEAAsE;AACrF,iBAAA,KAAK,CAAC,MAAM,QAAQ;cACvB,QAAQ;QACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC9F,QAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IAC3B;8GA9EW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cADjB,MAAM,EAAA,CAAA,CAAA;;2FACnB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
|
|
@@ -45,7 +45,13 @@ const RootConfig = {
|
|
|
45
45
|
},
|
|
46
46
|
queries: {
|
|
47
47
|
dashboard: {
|
|
48
|
+
/** Tenant-wide TenantUser count (Tenant Console Overview). */
|
|
48
49
|
activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,
|
|
50
|
+
/**
|
|
51
|
+
* Current-application TenantUserAppAccess count (TM Application scope).
|
|
52
|
+
* On Tenant Console Overview / TM Application Overview widgets (D-17 / D-18).
|
|
53
|
+
*/
|
|
54
|
+
tmApplicationUsersKpi: `${config.module}:Dashboard:TmApplicationUsersKpi`,
|
|
49
55
|
usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,
|
|
50
56
|
},
|
|
51
57
|
reports: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-tenant-management-client-contracts-entities-resource-share.mjs","sources":["../../../../libs/modules/tenant-management/contracts/src/root-config.ts","../../../../libs/modules/tenant-management/contracts/src/entities/resource-share/resource-share.entity.ts","../../../../libs/modules/tenant-management/contracts/src/acorex-platform-module-tenant-management-client-contracts-entities-resource-share.ts"],"sourcesContent":["const config = {\n i18n: 'tenant-management',\n module: 'TenantManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'tenant-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-building',\n },\n entities: {\n tenant: {\n name: 'Tenant',\n source: `${config.module}.Tenant`,\n title: `@${config.i18n}:tenants.entities.tenant.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant.plural`,\n icon: 'fa-light fa-building',\n },\n tenantUser: {\n name: 'TenantUser',\n source: `${config.module}.TenantUser`,\n title: `@${config.i18n}:tenants.entities.tenant-user.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user.plural`,\n icon: 'fa-light fa-user-group',\n },\n tenantUserAppAccess: {\n name: 'TenantUserAppAccess',\n source: `${config.module}.TenantUserAppAccess`,\n title: `@${config.i18n}:tenants.entities.tenant-user-app-access.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user-app-access.plural`,\n icon: 'fa-light fa-app-store',\n },\n resourceShare: {\n name: 'ResourceShare',\n source: `${config.module}.ResourceShare`,\n title: `@${config.i18n}:tenants.entities.resource-share.title`,\n titlePlural: `@${config.i18n}:tenants.entities.resource-share.plural`,\n icon: 'fa-light fa-share-nodes',\n },\n },\n queries: {\n dashboard: {\n activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,\n usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,\n },\n reports: {\n getTenantApplicationAccess: `${config.module}:Reports:GetTenantApplicationAccess`,\n getTenantUserDistribution: `${config.module}:Reports:GetTenantUserDistribution`,\n getTenantRegistrationTimeline: `${config.module}:Reports:GetTenantRegistrationTimeline`,\n getTenantRegistrationChartData: `${config.module}:Reports:GetTenantRegistrationChartData`,\n getSubscriptionsTimeline: `${config.module}:Reports:GetSubscriptionsTimeline`,\n getSubscriptionsChartData: `${config.module}:Reports:GetSubscriptionsChartData`,\n },\n },\n};\n\n// Keep the old export for backward compatibility\nexport const AXMTenantManagementModuleConst = {\n moduleName: 'TenantManagement',\n moduleRoute: 'tenant-management',\n i18n: 'tenant-management',\n} as const;\n","//#region ---- Imports ----\n\nimport { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n createAllQueryView,\n entityMasterCrudActions,\n entityMasterRecordActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '../../root-config';\n\n//#endregion\n\n//#region ---- ResourceShare entity factory ----\n\n/**\n * Cross-tenant resource grants (performance-first collection).\n * Intended Mongo indexes (applied by storage when supported):\n * - (shareInfo.sharedWithTenantId, shareInfo.status, resourceInfo.type)\n * - (resourceInfo.type, resourceInfo.id, shareInfo.status)\n * - (shareInfo.ownerTenantId, shareInfo.sharedWithTenantId, shareInfo.status)\n */\nexport async function resourceShareEntityFactory(): Promise<AXPEntity | null> {\n const i18n = `${RootConfig.config.i18n}:tenants.entities.resource-share`;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.resourceShare.name,\n title: RootConfig.entities.resourceShare.title,\n icon: RootConfig.entities.resourceShare.icon,\n searchTags: [\n 'resource-share',\n 'cross-tenant',\n 'sharing',\n 'isolation',\n 'access-grant',\n 'tenant',\n 'tenant-management',\n 'اشتراک منبع',\n 'اشتراک',\n 'مستأجر',\n ],\n formats: {\n individual: RootConfig.entities.resourceShare.title,\n plural: RootConfig.entities.resourceShare.titlePlural,\n },\n plugins: [{ name: 'history' }],\n groups: [\n {\n id: 'basic-info',\n title: `@general:terms.interface.basic-info`,\n },\n ],\n properties: [\n {\n name: 'id',\n title: `@general:terms.common.id`,\n groupId: 'basic-info',\n schema: {\n dataType: 'uuid',\n visible: false,\n nullable: false,\n readonly: true,\n unique: { enabled: true },\n },\n },\n {\n name: 'resourceInfo',\n title: `@${i18n}.fields.resource-info.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'object',\n interface: { type: AXPWidgetsCatalog.text },\n },\n },\n {\n name: 'shareInfo',\n title: `@${i18n}.fields.share-info.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'object',\n interface: { type: AXPWidgetsCatalog.text },\n },\n },\n ],\n interfaces: {\n master: {\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n single: {\n title: '{{ id }}',\n sections: [{ id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } }],\n properties: [\n { name: 'resourceInfo', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'shareInfo', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.resource-share';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-tenant-management-client-contracts-entities-resource-share.mjs","sources":["../../../../libs/modules/tenant-management/contracts/src/root-config.ts","../../../../libs/modules/tenant-management/contracts/src/entities/resource-share/resource-share.entity.ts","../../../../libs/modules/tenant-management/contracts/src/acorex-platform-module-tenant-management-client-contracts-entities-resource-share.ts"],"sourcesContent":["const config = {\n i18n: 'tenant-management',\n module: 'TenantManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'tenant-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-building',\n },\n entities: {\n tenant: {\n name: 'Tenant',\n source: `${config.module}.Tenant`,\n title: `@${config.i18n}:tenants.entities.tenant.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant.plural`,\n icon: 'fa-light fa-building',\n },\n tenantUser: {\n name: 'TenantUser',\n source: `${config.module}.TenantUser`,\n title: `@${config.i18n}:tenants.entities.tenant-user.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user.plural`,\n icon: 'fa-light fa-user-group',\n },\n tenantUserAppAccess: {\n name: 'TenantUserAppAccess',\n source: `${config.module}.TenantUserAppAccess`,\n title: `@${config.i18n}:tenants.entities.tenant-user-app-access.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user-app-access.plural`,\n icon: 'fa-light fa-app-store',\n },\n resourceShare: {\n name: 'ResourceShare',\n source: `${config.module}.ResourceShare`,\n title: `@${config.i18n}:tenants.entities.resource-share.title`,\n titlePlural: `@${config.i18n}:tenants.entities.resource-share.plural`,\n icon: 'fa-light fa-share-nodes',\n },\n },\n queries: {\n dashboard: {\n /** Tenant-wide TenantUser count (Tenant Console Overview). */\n activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,\n /**\n * Current-application TenantUserAppAccess count (TM Application scope).\n * On Tenant Console Overview / TM Application Overview widgets (D-17 / D-18).\n */\n tmApplicationUsersKpi: `${config.module}:Dashboard:TmApplicationUsersKpi`,\n usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,\n },\n reports: {\n getTenantApplicationAccess: `${config.module}:Reports:GetTenantApplicationAccess`,\n getTenantUserDistribution: `${config.module}:Reports:GetTenantUserDistribution`,\n getTenantRegistrationTimeline: `${config.module}:Reports:GetTenantRegistrationTimeline`,\n getTenantRegistrationChartData: `${config.module}:Reports:GetTenantRegistrationChartData`,\n getSubscriptionsTimeline: `${config.module}:Reports:GetSubscriptionsTimeline`,\n getSubscriptionsChartData: `${config.module}:Reports:GetSubscriptionsChartData`,\n },\n },\n};\n\n// Keep the old export for backward compatibility\nexport const AXMTenantManagementModuleConst = {\n moduleName: 'TenantManagement',\n moduleRoute: 'tenant-management',\n i18n: 'tenant-management',\n} as const;\n","//#region ---- Imports ----\n\nimport { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n createAllQueryView,\n entityMasterCrudActions,\n entityMasterRecordActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '../../root-config';\n\n//#endregion\n\n//#region ---- ResourceShare entity factory ----\n\n/**\n * Cross-tenant resource grants (performance-first collection).\n * Intended Mongo indexes (applied by storage when supported):\n * - (shareInfo.sharedWithTenantId, shareInfo.status, resourceInfo.type)\n * - (resourceInfo.type, resourceInfo.id, shareInfo.status)\n * - (shareInfo.ownerTenantId, shareInfo.sharedWithTenantId, shareInfo.status)\n */\nexport async function resourceShareEntityFactory(): Promise<AXPEntity | null> {\n const i18n = `${RootConfig.config.i18n}:tenants.entities.resource-share`;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.resourceShare.name,\n title: RootConfig.entities.resourceShare.title,\n icon: RootConfig.entities.resourceShare.icon,\n searchTags: [\n 'resource-share',\n 'cross-tenant',\n 'sharing',\n 'isolation',\n 'access-grant',\n 'tenant',\n 'tenant-management',\n 'اشتراک منبع',\n 'اشتراک',\n 'مستأجر',\n ],\n formats: {\n individual: RootConfig.entities.resourceShare.title,\n plural: RootConfig.entities.resourceShare.titlePlural,\n },\n plugins: [{ name: 'history' }],\n groups: [\n {\n id: 'basic-info',\n title: `@general:terms.interface.basic-info`,\n },\n ],\n properties: [\n {\n name: 'id',\n title: `@general:terms.common.id`,\n groupId: 'basic-info',\n schema: {\n dataType: 'uuid',\n visible: false,\n nullable: false,\n readonly: true,\n unique: { enabled: true },\n },\n },\n {\n name: 'resourceInfo',\n title: `@${i18n}.fields.resource-info.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'object',\n interface: { type: AXPWidgetsCatalog.text },\n },\n },\n {\n name: 'shareInfo',\n title: `@${i18n}.fields.share-info.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'object',\n interface: { type: AXPWidgetsCatalog.text },\n },\n },\n ],\n interfaces: {\n master: {\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView()],\n },\n single: {\n title: '{{ id }}',\n sections: [{ id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } }],\n properties: [\n { name: 'resourceInfo', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'shareInfo', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.resource-share';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,46 @@
|
|
|
1
|
-
import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';
|
|
2
|
-
import { entityMasterCrudActions, entityMasterRecordActions, createAllQueryView } from '@acorex-platform/framework-shared/entity';
|
|
1
|
+
import { AXPWidgetsList, AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';
|
|
2
|
+
import { entityMasterCrudActions, entityMasterRecordActions, createAllQueryView, createQueryView } from '@acorex-platform/framework-shared/entity';
|
|
3
|
+
|
|
4
|
+
//#region ----- Tenant Users admin scope (operation-owned) -----
|
|
5
|
+
/** Query `params` key carrying the operation scope. */
|
|
6
|
+
const AXP_TENANT_USER_ADMIN_SCOPE_PARAM = 'tenantUserAdminScope';
|
|
7
|
+
/** HTTP header (lowercase) for getOne/update/delete (and related) ops. */
|
|
8
|
+
const AXP_TENANT_USER_ADMIN_SCOPE_HEADER = 'x-axp-tenant-user-admin-scope';
|
|
9
|
+
/** Entity list view name for TM → Tenant Users / Tenant Application Access. */
|
|
10
|
+
const AXP_TENANT_USERS_VIEW = 'tenant-users';
|
|
11
|
+
function normalizeTenantUserAdminScope(value) {
|
|
12
|
+
return value === 'current-tenant' ? 'current-tenant' : 'default';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Whether the URL carries the explicit Tenant Users operation context.
|
|
16
|
+
*
|
|
17
|
+
* Prefer durable `tenantUserAdminScope=current-tenant` (entity list rewrites
|
|
18
|
+
* unknown `view=` values to `all`). Also accept `view=tenant-users` when present.
|
|
19
|
+
* Never infer from entity path `/e/TenantUser*` alone.
|
|
20
|
+
*/
|
|
21
|
+
function isTenantUsersOperationUrl(url) {
|
|
22
|
+
if (!url) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const parsed = new URL(url, 'http://local.invalid');
|
|
27
|
+
if (parsed.searchParams.get(AXP_TENANT_USER_ADMIN_SCOPE_PARAM)?.trim() === 'current-tenant') {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
if (parsed.searchParams.get('view')?.trim() === AXP_TENANT_USERS_VIEW) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Fall through to substring checks.
|
|
36
|
+
}
|
|
37
|
+
return (url.includes(`${AXP_TENANT_USER_ADMIN_SCOPE_PARAM}=current-tenant`) ||
|
|
38
|
+
url.includes(`view=${AXP_TENANT_USERS_VIEW}`));
|
|
39
|
+
}
|
|
40
|
+
function resolveTenantUserAdminScopeFromUrl(url) {
|
|
41
|
+
return isTenantUsersOperationUrl(url) ? 'current-tenant' : 'default';
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
3
44
|
|
|
4
45
|
const config = {
|
|
5
46
|
i18n: 'tenant-management',
|
|
@@ -45,7 +86,13 @@ const RootConfig = {
|
|
|
45
86
|
},
|
|
46
87
|
queries: {
|
|
47
88
|
dashboard: {
|
|
89
|
+
/** Tenant-wide TenantUser count (Tenant Console Overview). */
|
|
48
90
|
activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,
|
|
91
|
+
/**
|
|
92
|
+
* Current-application TenantUserAppAccess count (TM Application scope).
|
|
93
|
+
* On Tenant Console Overview / TM Application Overview widgets (D-17 / D-18).
|
|
94
|
+
*/
|
|
95
|
+
tmApplicationUsersKpi: `${config.module}:Dashboard:TmApplicationUsersKpi`,
|
|
49
96
|
usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,
|
|
50
97
|
},
|
|
51
98
|
reports: {
|
|
@@ -132,12 +179,15 @@ async function tenantUserAppAccessEntityFactory() {
|
|
|
132
179
|
type: AXPWidgetsList.Editors.LookupBox,
|
|
133
180
|
options: {
|
|
134
181
|
entity: `${RootConfig.module.name}.${RootConfig.entities.tenantUser.name}`,
|
|
135
|
-
|
|
182
|
+
// Prefer entity searchResult template (user.displayName) over nested textField
|
|
183
|
+
// so list/hydrate can resolve membership labels.
|
|
136
184
|
valueField: 'id',
|
|
137
185
|
look: 'select',
|
|
138
186
|
expose: [
|
|
139
187
|
{ source: 'id', target: 'tenantUser.id' },
|
|
140
188
|
{ source: 'userId', target: 'tenantUser.userId' },
|
|
189
|
+
{ source: 'userId', target: 'userId' },
|
|
190
|
+
{ source: 'user.displayName', target: 'tenantUser.displayName' },
|
|
141
191
|
{ source: 'tenantId', target: 'tenantUser.tenantId' },
|
|
142
192
|
{ source: 'tenantId', target: 'tenantId' },
|
|
143
193
|
],
|
|
@@ -150,6 +200,49 @@ async function tenantUserAppAccessEntityFactory() {
|
|
|
150
200
|
filter: { advance: { enabled: true }, inline: { enabled: true } },
|
|
151
201
|
},
|
|
152
202
|
},
|
|
203
|
+
{
|
|
204
|
+
name: 'userId',
|
|
205
|
+
// List column label — values render from denormalized userDisplayName (expose target).
|
|
206
|
+
title: `@${i18n}.fields.tenant-user.title`,
|
|
207
|
+
groupId: 'basic-info',
|
|
208
|
+
schema: {
|
|
209
|
+
dataType: 'string',
|
|
210
|
+
interface: {
|
|
211
|
+
type: AXPWidgetsList.Editors.LookupBox,
|
|
212
|
+
options: {
|
|
213
|
+
entity: 'SecurityManagement.User',
|
|
214
|
+
textField: 'displayName',
|
|
215
|
+
valueField: 'id',
|
|
216
|
+
look: 'select',
|
|
217
|
+
expose: [
|
|
218
|
+
{ source: 'id', target: 'user.id' },
|
|
219
|
+
{ source: 'displayName', target: 'user.displayName' },
|
|
220
|
+
{ source: 'displayName', target: 'userDisplayName' },
|
|
221
|
+
{ source: 'username', target: 'user.username' },
|
|
222
|
+
],
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
options: {
|
|
227
|
+
sort: { enabled: true },
|
|
228
|
+
filter: { advance: { enabled: true }, inline: { enabled: true } },
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
name: 'userDisplayName',
|
|
233
|
+
title: `@${i18n}.fields.user.title`,
|
|
234
|
+
groupId: 'basic-info',
|
|
235
|
+
schema: {
|
|
236
|
+
dataType: 'string',
|
|
237
|
+
// Snapshot for list display / filters; not a primary list column widget.
|
|
238
|
+
visible: false,
|
|
239
|
+
interface: { type: AXPWidgetsCatalog.text },
|
|
240
|
+
},
|
|
241
|
+
options: {
|
|
242
|
+
sort: { enabled: true },
|
|
243
|
+
filter: { advance: { enabled: true }, inline: { enabled: true } },
|
|
244
|
+
},
|
|
245
|
+
},
|
|
153
246
|
{
|
|
154
247
|
name: 'tenantId',
|
|
155
248
|
title: `@${i18n}.fields.tenant.title`,
|
|
@@ -163,6 +256,11 @@ async function tenantUserAppAccessEntityFactory() {
|
|
|
163
256
|
textField: 'title',
|
|
164
257
|
valueField: 'id',
|
|
165
258
|
look: 'select',
|
|
259
|
+
expose: [
|
|
260
|
+
{ source: 'id', target: 'tenant.id' },
|
|
261
|
+
{ source: 'title', target: 'tenant.title' },
|
|
262
|
+
{ source: 'name', target: 'tenant.name' },
|
|
263
|
+
],
|
|
166
264
|
},
|
|
167
265
|
},
|
|
168
266
|
},
|
|
@@ -219,7 +317,8 @@ async function tenantUserAppAccessEntityFactory() {
|
|
|
219
317
|
},
|
|
220
318
|
],
|
|
221
319
|
columns: [
|
|
222
|
-
|
|
320
|
+
// Lookup column; list cells prefer expose target `userDisplayName` (no User identity join).
|
|
321
|
+
{ name: 'userId' },
|
|
223
322
|
{ name: 'tenantId' },
|
|
224
323
|
{ name: 'applicationId' },
|
|
225
324
|
{ name: 'startDate' },
|
|
@@ -259,7 +358,13 @@ async function tenantUserAppAccessEntityFactory() {
|
|
|
259
358
|
],
|
|
260
359
|
},
|
|
261
360
|
list: {
|
|
262
|
-
views: [
|
|
361
|
+
views: [
|
|
362
|
+
createAllQueryView(),
|
|
363
|
+
{
|
|
364
|
+
...createQueryView(AXP_TENANT_USERS_VIEW, RootConfig.entities.tenantUserAppAccess.titlePlural, true),
|
|
365
|
+
visible: false,
|
|
366
|
+
},
|
|
367
|
+
],
|
|
263
368
|
actions: [...entityMasterCrudActions(), ...entityMasterRecordActions()],
|
|
264
369
|
},
|
|
265
370
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.mjs","sources":["../../../../libs/modules/tenant-management/contracts/src/root-config.ts","../../../../libs/modules/tenant-management/contracts/src/entities/tenant-user-app-access/tenant-user-app-access.entity.ts","../../../../libs/modules/tenant-management/contracts/src/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.ts"],"sourcesContent":["const config = {\n i18n: 'tenant-management',\n module: 'TenantManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'tenant-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-building',\n },\n entities: {\n tenant: {\n name: 'Tenant',\n source: `${config.module}.Tenant`,\n title: `@${config.i18n}:tenants.entities.tenant.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant.plural`,\n icon: 'fa-light fa-building',\n },\n tenantUser: {\n name: 'TenantUser',\n source: `${config.module}.TenantUser`,\n title: `@${config.i18n}:tenants.entities.tenant-user.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user.plural`,\n icon: 'fa-light fa-user-group',\n },\n tenantUserAppAccess: {\n name: 'TenantUserAppAccess',\n source: `${config.module}.TenantUserAppAccess`,\n title: `@${config.i18n}:tenants.entities.tenant-user-app-access.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user-app-access.plural`,\n icon: 'fa-light fa-app-store',\n },\n resourceShare: {\n name: 'ResourceShare',\n source: `${config.module}.ResourceShare`,\n title: `@${config.i18n}:tenants.entities.resource-share.title`,\n titlePlural: `@${config.i18n}:tenants.entities.resource-share.plural`,\n icon: 'fa-light fa-share-nodes',\n },\n },\n queries: {\n dashboard: {\n activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,\n usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,\n },\n reports: {\n getTenantApplicationAccess: `${config.module}:Reports:GetTenantApplicationAccess`,\n getTenantUserDistribution: `${config.module}:Reports:GetTenantUserDistribution`,\n getTenantRegistrationTimeline: `${config.module}:Reports:GetTenantRegistrationTimeline`,\n getTenantRegistrationChartData: `${config.module}:Reports:GetTenantRegistrationChartData`,\n getSubscriptionsTimeline: `${config.module}:Reports:GetSubscriptionsTimeline`,\n getSubscriptionsChartData: `${config.module}:Reports:GetSubscriptionsChartData`,\n },\n },\n};\n\n// Keep the old export for backward compatibility\nexport const AXMTenantManagementModuleConst = {\n moduleName: 'TenantManagement',\n moduleRoute: 'tenant-management',\n i18n: 'tenant-management',\n} as const;\n","import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n createAllQueryView,\n entityMasterCrudActions,\n entityMasterRecordActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '../../root-config';\n\n//#region ---- TenantUserAppAccess entity factory ----\n\nexport async function tenantUserAppAccessEntityFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n + ':tenants.entities.tenant-user-app-access';\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.tenantUserAppAccess.name,\n title: RootConfig.entities.tenantUserAppAccess.title,\n icon: RootConfig.entities.tenantUserAppAccess.icon,\n searchTags: [\n 'app-access',\n 'tenant-user',\n 'application-access',\n 'tenant',\n 'application',\n 'membership',\n 'tenant-management',\n 'دسترسی کاربر مستأجر به برنامه',\n 'دسترسی برنامه',\n 'مستأجر',\n ],\n formats: {\n individual: RootConfig.entities.tenantUserAppAccess.title,\n plural: RootConfig.entities.tenantUserAppAccess.titlePlural,\n searchResult: {\n title: '{{ application.title || applicationId }}',\n description: '{{ tenantUserId }}',\n },\n },\n plugins: [\n {\n name: 'status',\n options: {\n field: 'statusId',\n definition: 'tenant-management.status.tenant',\n },\n },\n { name: 'history' },\n ],\n groups: [\n {\n id: 'basic-info',\n title: `@${i18n}.groups.basic-info`,\n },\n ],\n properties: [\n {\n name: 'id',\n title: 'ID',\n groupId: 'basic-info',\n schema: {\n dataType: 'uuid',\n visible: false,\n nullable: false,\n readonly: true,\n unique: { enabled: true },\n },\n },\n {\n name: 'tenantUserId',\n title: `@${i18n}.fields.tenant-user.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.tenantUser.name}`,\n textField: 'user.displayName',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'tenantUser.id' },\n { source: 'userId', target: 'tenantUser.userId' },\n { source: 'tenantId', target: 'tenantUser.tenantId' },\n { source: 'tenantId', target: 'tenantId' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'tenantId',\n title: `@${i18n}.fields.tenant.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.tenant.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'applicationId',\n title: `@${i18n}.fields.application.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: 'ApplicationManagement.Application',\n textField: 'title',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'application.id' },\n { source: 'title', target: 'application.title' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'startDate',\n title: `@${i18n}.fields.start-date.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'endDate',\n title: `@${i18n}.fields.end-date.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n },\n ],\n columns: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n single: {\n title: '{{applicationId}}',\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n list: {\n views: [createAllQueryView()],\n actions: [...entityMasterCrudActions(), ...entityMasterRecordActions()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.tenant-user-app-access';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.mjs","sources":["../../../../libs/modules/tenant-management/contracts/src/tenant-user-admin-scope.ts","../../../../libs/modules/tenant-management/contracts/src/root-config.ts","../../../../libs/modules/tenant-management/contracts/src/entities/tenant-user-app-access/tenant-user-app-access.entity.ts","../../../../libs/modules/tenant-management/contracts/src/acorex-platform-module-tenant-management-client-contracts-entities-tenant-user-app-access.ts"],"sourcesContent":["//#region ----- Tenant Users admin scope (operation-owned) -----\n\n/**\n * Explicit Tenant Users / Tenant Application Access operation scope (ADR-TEN-001).\n * Selected by the calling surface (`view=tenant-users`), not Application.code / TM ids,\n * and not by generic `/e/TenantUser*` entity routes alone.\n *\n * - `current-tenant` — TM → Tenant Users (and related AppAccess): force session tenant\n * - `default` — generic / platform TenantUser ops: existing membership policy (incl. isPlatform)\n */\nexport type AXPTenantUserAdminScope = 'current-tenant' | 'default';\n\n/** Query `params` key carrying the operation scope. */\nexport const AXP_TENANT_USER_ADMIN_SCOPE_PARAM = 'tenantUserAdminScope';\n\n/** HTTP header (lowercase) for getOne/update/delete (and related) ops. */\nexport const AXP_TENANT_USER_ADMIN_SCOPE_HEADER = 'x-axp-tenant-user-admin-scope';\n\n/** Entity list view name for TM → Tenant Users / Tenant Application Access. */\nexport const AXP_TENANT_USERS_VIEW = 'tenant-users';\n\nexport function normalizeTenantUserAdminScope(value: unknown): AXPTenantUserAdminScope {\n return value === 'current-tenant' ? 'current-tenant' : 'default';\n}\n\n/**\n * Whether the URL carries the explicit Tenant Users operation context.\n *\n * Prefer durable `tenantUserAdminScope=current-tenant` (entity list rewrites\n * unknown `view=` values to `all`). Also accept `view=tenant-users` when present.\n * Never infer from entity path `/e/TenantUser*` alone.\n */\nexport function isTenantUsersOperationUrl(url: string | null | undefined): boolean {\n if (!url) {\n return false;\n }\n\n try {\n const parsed = new URL(url, 'http://local.invalid');\n if (\n parsed.searchParams.get(AXP_TENANT_USER_ADMIN_SCOPE_PARAM)?.trim() === 'current-tenant'\n ) {\n return true;\n }\n if (parsed.searchParams.get('view')?.trim() === AXP_TENANT_USERS_VIEW) {\n return true;\n }\n } catch {\n // Fall through to substring checks.\n }\n\n return (\n url.includes(`${AXP_TENANT_USER_ADMIN_SCOPE_PARAM}=current-tenant`) ||\n url.includes(`view=${AXP_TENANT_USERS_VIEW}`)\n );\n}\n\nexport function resolveTenantUserAdminScopeFromUrl(\n url: string | null | undefined,\n): AXPTenantUserAdminScope {\n return isTenantUsersOperationUrl(url) ? 'current-tenant' : 'default';\n}\n\n//#endregion\n","const config = {\n i18n: 'tenant-management',\n module: 'TenantManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'tenant-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-building',\n },\n entities: {\n tenant: {\n name: 'Tenant',\n source: `${config.module}.Tenant`,\n title: `@${config.i18n}:tenants.entities.tenant.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant.plural`,\n icon: 'fa-light fa-building',\n },\n tenantUser: {\n name: 'TenantUser',\n source: `${config.module}.TenantUser`,\n title: `@${config.i18n}:tenants.entities.tenant-user.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user.plural`,\n icon: 'fa-light fa-user-group',\n },\n tenantUserAppAccess: {\n name: 'TenantUserAppAccess',\n source: `${config.module}.TenantUserAppAccess`,\n title: `@${config.i18n}:tenants.entities.tenant-user-app-access.title`,\n titlePlural: `@${config.i18n}:tenants.entities.tenant-user-app-access.plural`,\n icon: 'fa-light fa-app-store',\n },\n resourceShare: {\n name: 'ResourceShare',\n source: `${config.module}.ResourceShare`,\n title: `@${config.i18n}:tenants.entities.resource-share.title`,\n titlePlural: `@${config.i18n}:tenants.entities.resource-share.plural`,\n icon: 'fa-light fa-share-nodes',\n },\n },\n queries: {\n dashboard: {\n /** Tenant-wide TenantUser count (Tenant Console Overview). */\n activeUsersKpi: `${config.module}:Dashboard:ActiveUsersKpi`,\n /**\n * Current-application TenantUserAppAccess count (TM Application scope).\n * On Tenant Console Overview / TM Application Overview widgets (D-17 / D-18).\n */\n tmApplicationUsersKpi: `${config.module}:Dashboard:TmApplicationUsersKpi`,\n usersByRoleDonut: `${config.module}:Dashboard:UsersByRoleDonut`,\n },\n reports: {\n getTenantApplicationAccess: `${config.module}:Reports:GetTenantApplicationAccess`,\n getTenantUserDistribution: `${config.module}:Reports:GetTenantUserDistribution`,\n getTenantRegistrationTimeline: `${config.module}:Reports:GetTenantRegistrationTimeline`,\n getTenantRegistrationChartData: `${config.module}:Reports:GetTenantRegistrationChartData`,\n getSubscriptionsTimeline: `${config.module}:Reports:GetSubscriptionsTimeline`,\n getSubscriptionsChartData: `${config.module}:Reports:GetSubscriptionsChartData`,\n },\n },\n};\n\n// Keep the old export for backward compatibility\nexport const AXMTenantManagementModuleConst = {\n moduleName: 'TenantManagement',\n moduleRoute: 'tenant-management',\n i18n: 'tenant-management',\n} as const;\n","import { AXPWidgetsCatalog, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n createAllQueryView,\n createQueryView,\n entityMasterCrudActions,\n entityMasterRecordActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { AXP_TENANT_USERS_VIEW } from '../../tenant-user-admin-scope';\nimport { RootConfig } from '../../root-config';\n\n//#region ---- TenantUserAppAccess entity factory ----\n\nexport async function tenantUserAppAccessEntityFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n + ':tenants.entities.tenant-user-app-access';\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.tenantUserAppAccess.name,\n title: RootConfig.entities.tenantUserAppAccess.title,\n icon: RootConfig.entities.tenantUserAppAccess.icon,\n searchTags: [\n 'app-access',\n 'tenant-user',\n 'application-access',\n 'tenant',\n 'application',\n 'membership',\n 'tenant-management',\n 'دسترسی کاربر مستأجر به برنامه',\n 'دسترسی برنامه',\n 'مستأجر',\n ],\n formats: {\n individual: RootConfig.entities.tenantUserAppAccess.title,\n plural: RootConfig.entities.tenantUserAppAccess.titlePlural,\n searchResult: {\n title: '{{ application.title || applicationId }}',\n description: '{{ tenantUserId }}',\n },\n },\n plugins: [\n {\n name: 'status',\n options: {\n field: 'statusId',\n definition: 'tenant-management.status.tenant',\n },\n },\n { name: 'history' },\n ],\n groups: [\n {\n id: 'basic-info',\n title: `@${i18n}.groups.basic-info`,\n },\n ],\n properties: [\n {\n name: 'id',\n title: 'ID',\n groupId: 'basic-info',\n schema: {\n dataType: 'uuid',\n visible: false,\n nullable: false,\n readonly: true,\n unique: { enabled: true },\n },\n },\n {\n name: 'tenantUserId',\n title: `@${i18n}.fields.tenant-user.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.tenantUser.name}`,\n // Prefer entity searchResult template (user.displayName) over nested textField\n // so list/hydrate can resolve membership labels.\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'tenantUser.id' },\n { source: 'userId', target: 'tenantUser.userId' },\n { source: 'userId', target: 'userId' },\n { source: 'user.displayName', target: 'tenantUser.displayName' },\n { source: 'tenantId', target: 'tenantUser.tenantId' },\n { source: 'tenantId', target: 'tenantId' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'userId',\n // List column label — values render from denormalized userDisplayName (expose target).\n title: `@${i18n}.fields.tenant-user.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: 'SecurityManagement.User',\n textField: 'displayName',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'user.id' },\n { source: 'displayName', target: 'user.displayName' },\n { source: 'displayName', target: 'userDisplayName' },\n { source: 'username', target: 'user.username' },\n ],\n },\n },\n },\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'userDisplayName',\n title: `@${i18n}.fields.user.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n // Snapshot for list display / filters; not a primary list column widget.\n visible: false,\n interface: { type: AXPWidgetsCatalog.text },\n },\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'tenantId',\n title: `@${i18n}.fields.tenant.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.tenant.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'tenant.id' },\n { source: 'title', target: 'tenant.title' },\n { source: 'name', target: 'tenant.name' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'applicationId',\n title: `@${i18n}.fields.application.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: 'ApplicationManagement.Application',\n textField: 'title',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'application.id' },\n { source: 'title', target: 'application.title' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n },\n {\n name: 'startDate',\n title: `@${i18n}.fields.start-date.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'endDate',\n title: `@${i18n}.fields.end-date.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n },\n ],\n columns: [\n // Lookup column; list cells prefer expose target `userDisplayName` (no User identity join).\n { name: 'userId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n single: {\n title: '{{applicationId}}',\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'tenantUserId' },\n { name: 'tenantId' },\n { name: 'applicationId' },\n { name: 'startDate' },\n { name: 'endDate' },\n ],\n },\n list: {\n views: [\n createAllQueryView(),\n {\n ...createQueryView(\n AXP_TENANT_USERS_VIEW,\n RootConfig.entities.tenantUserAppAccess.titlePlural,\n true,\n ),\n visible: false,\n },\n ],\n actions: [...entityMasterCrudActions(), ...entityMasterRecordActions()],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.tenant-user-app-access';\n"],"names":[],"mappings":";;;AAAA;AAYA;AACO,MAAM,iCAAiC,GAAG,sBAAsB;AAEvE;AACO,MAAM,kCAAkC,GAAG,+BAA+B;AAEjF;AACO,MAAM,qBAAqB,GAAG,cAAc;AAE7C,SAAU,6BAA6B,CAAC,KAAc,EAAA;IAC1D,OAAO,KAAK,KAAK,gBAAgB,GAAG,gBAAgB,GAAG,SAAS;AAClE;AAEA;;;;;;AAMG;AACG,SAAU,yBAAyB,CAAC,GAA8B,EAAA;IACtE,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI;QACF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,sBAAsB,CAAC;AACnD,QAAA,IACE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE,IAAI,EAAE,KAAK,gBAAgB,EACvF;AACA,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,qBAAqB,EAAE;AACrE,YAAA,OAAO,IAAI;QACb;IACF;AAAE,IAAA,MAAM;;IAER;IAEA,QACE,GAAG,CAAC,QAAQ,CAAC,CAAA,EAAG,iCAAiC,iBAAiB,CAAC;QACnE,GAAG,CAAC,QAAQ,CAAC,CAAA,KAAA,EAAQ,qBAAqB,CAAA,CAAE,CAAC;AAEjD;AAEM,SAAU,kCAAkC,CAChD,GAA8B,EAAA;AAE9B,IAAA,OAAO,yBAAyB,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,SAAS;AACtE;AAEA;;AC/DA,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,MAAM,EAAE,kBAAkB;CAC3B;AAEM,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,MAAM,CAAC,MAAM;AACnB,QAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,aAAA,CAAe;AACrC,QAAA,IAAI,EAAE,sBAAsB;AAC7B,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,OAAA,CAAS;AACjC,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,8BAAA,CAAgC;AACtD,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,+BAAA,CAAiC;AAC7D,YAAA,IAAI,EAAE,sBAAsB;AAC7B,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,WAAA,CAAa;AACrC,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,mCAAA,CAAqC;AAC3D,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,oCAAA,CAAsC;AAClE,YAAA,IAAI,EAAE,wBAAwB;AAC/B,SAAA;AACD,QAAA,mBAAmB,EAAE;AACnB,YAAA,IAAI,EAAE,qBAAqB;AAC3B,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,oBAAA,CAAsB;AAC9C,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,8CAAA,CAAgD;AACtE,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,+CAAA,CAAiD;AAC7E,YAAA,IAAI,EAAE,uBAAuB;AAC9B,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,cAAA,CAAgB;AACxC,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,sCAAA,CAAwC;AAC9D,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,uCAAA,CAAyC;AACrE,YAAA,IAAI,EAAE,yBAAyB;AAChC,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE;;AAET,YAAA,cAAc,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,yBAAA,CAA2B;AAC3D;;;AAGG;AACH,YAAA,qBAAqB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,gCAAA,CAAkC;AACzE,YAAA,gBAAgB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,2BAAA,CAA6B;AAChE,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,0BAA0B,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,mCAAA,CAAqC;AACjF,YAAA,yBAAyB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,kCAAA,CAAoC;AAC/E,YAAA,6BAA6B,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,sCAAA,CAAwC;AACvF,YAAA,8BAA8B,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,uCAAA,CAAyC;AACzF,YAAA,wBAAwB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,iCAAA,CAAmC;AAC7E,YAAA,yBAAyB,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,kCAAA,CAAoC;AAChF,SAAA;AACF,KAAA;CACF;AAED;AACO,MAAM,8BAA8B,GAAG;AAC5C,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,WAAW,EAAE,mBAAmB;AAChC,IAAA,IAAI,EAAE,mBAAmB;CACjB;;AC3DV;AAEO,eAAe,gCAAgC,GAAA;IACpD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,0CAA0C;AAEhF,IAAA,MAAM,SAAS,GAAc;AAC3B,QAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,QAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI;AAClD,QAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK;AACpD,QAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI;AAClD,QAAA,UAAU,EAAE;YACV,YAAY;YACZ,aAAa;YACb,oBAAoB;YACpB,QAAQ;YACR,aAAa;YACb,YAAY;YACZ,mBAAmB;YACnB,+BAA+B;YAC/B,eAAe;YACf,QAAQ;AACT,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK;AACzD,YAAA,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW;AAC3D,YAAA,YAAY,EAAE;AACZ,gBAAA,KAAK,EAAE,0CAA0C;AACjD,gBAAA,WAAW,EAAE,oBAAoB;AAClC,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,OAAO,EAAE;AACP,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,UAAU,EAAE,iCAAiC;AAC9C,iBAAA;AACF,aAAA;YACD,EAAE,IAAI,EAAE,SAAS,EAAE;AACpB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA;AACE,gBAAA,EAAE,EAAE,YAAY;gBAChB,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,kBAAA,CAAoB;AACpC,aAAA;AACF,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA;AACE,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1B,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,yBAAA,CAA2B;AAC1C,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;AACtC,wBAAA,OAAO,EAAE;AACP,4BAAA,MAAM,EAAE,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAA,CAAE;;;AAG1E,4BAAA,UAAU,EAAE,IAAI;AAChB,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,MAAM,EAAE;AACN,gCAAA,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE;AACzC,gCAAA,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE;AACjD,gCAAA,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AACtC,gCAAA,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,wBAAwB,EAAE;AAChE,gCAAA,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAE;AACrD,gCAAA,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;AAC3C,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACnC,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACvB,oBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;AAClE,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;;gBAEd,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,yBAAA,CAA2B;AAC1C,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;AACtC,wBAAA,OAAO,EAAE;AACP,4BAAA,MAAM,EAAE,yBAAyB;AACjC,4BAAA,SAAS,EAAE,aAAa;AACxB,4BAAA,UAAU,EAAE,IAAI;AAChB,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,MAAM,EAAE;AACN,gCAAA,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;AACnC,gCAAA,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE;AACrD,gCAAA,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE;AACpD,gCAAA,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE;AAChD,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACvB,oBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;AAClE,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,kBAAA,CAAoB;AACnC,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,QAAQ;;AAElB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE;AAC5C,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACvB,oBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;AAClE,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,oBAAA,CAAsB;AACrC,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;AACtC,wBAAA,OAAO,EAAE;AACP,4BAAA,MAAM,EAAE,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAA,CAAE;AACtE,4BAAA,SAAS,EAAE,OAAO;AAClB,4BAAA,UAAU,EAAE,IAAI;AAChB,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,MAAM,EAAE;AACN,gCAAA,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE;AACrC,gCAAA,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE;AAC3C,gCAAA,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE;AAC1C,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACnC,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACvB,oBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;AAClE,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,yBAAA,CAA2B;AAC1C,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;AACtC,wBAAA,OAAO,EAAE;AACP,4BAAA,MAAM,EAAE,mCAAmC;AAC3C,4BAAA,SAAS,EAAE,OAAO;AAClB,4BAAA,UAAU,EAAE,IAAI;AAChB,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,MAAM,EAAE;AACN,gCAAA,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE;AAC1C,gCAAA,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE;AACjD,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACnC,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACvB,oBAAA,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;AAClE,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,wBAAA,CAA0B;AACzC,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,MAAM;oBAChB,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE;AACxD,iBAAA;AACD,gBAAA,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACpC,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,sBAAA,CAAwB;AACvC,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,MAAM;oBAChB,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE;AACxD,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE;;YAEP,EAAE,IAAI,EAAE,QAAQ,EAAE;YAClB,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB,EAAE,IAAI,EAAE,eAAe,EAAE;YACzB,EAAE,IAAI,EAAE,WAAW,EAAE;YACrB,EAAE,IAAI,EAAE,SAAS,EAAE;AACpB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;AAChC,oBAAA,UAAU,EAAE;wBACV,EAAE,IAAI,EAAE,cAAc,EAAE;wBACxB,EAAE,IAAI,EAAE,UAAU,EAAE;wBACpB,EAAE,IAAI,EAAE,eAAe,EAAE;wBACzB,EAAE,IAAI,EAAE,WAAW,EAAE;wBACrB,EAAE,IAAI,EAAE,SAAS,EAAE;AACpB,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;AAChC,oBAAA,UAAU,EAAE;wBACV,EAAE,IAAI,EAAE,cAAc,EAAE;wBACxB,EAAE,IAAI,EAAE,UAAU,EAAE;wBACpB,EAAE,IAAI,EAAE,eAAe,EAAE;wBACzB,EAAE,IAAI,EAAE,WAAW,EAAE;wBACrB,EAAE,IAAI,EAAE,SAAS,EAAE;AACpB,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,KAAK,EAAE,mBAAmB;AAC1B,oBAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;AAChC,oBAAA,UAAU,EAAE;wBACV,EAAE,IAAI,EAAE,cAAc,EAAE;wBACxB,EAAE,IAAI,EAAE,UAAU,EAAE;wBACpB,EAAE,IAAI,EAAE,eAAe,EAAE;wBACzB,EAAE,IAAI,EAAE,WAAW,EAAE;wBACrB,EAAE,IAAI,EAAE,SAAS,EAAE;AACpB,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE;AACL,wBAAA,kBAAkB,EAAE;AACpB,wBAAA;AACE,4BAAA,GAAG,eAAe,CAChB,qBAAqB,EACrB,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EACnD,IAAI,CACL;AACD,4BAAA,OAAO,EAAE,KAAK;AACf,yBAAA;AACF,qBAAA;oBACD,OAAO,EAAE,CAAC,GAAG,uBAAuB,EAAE,EAAE,GAAG,yBAAyB,EAAE,CAAC;AACxE,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AAED,IAAA,OAAO,SAAS;AAClB;AAEA;;ACvRA;;AAEG;;"}
|