@memberjunction/ng-explorer-core 6.2.0-edge.5 → 6.2.0-edge.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +7 -2
  2. package/dist/app-routing.module.d.ts.map +1 -1
  3. package/dist/app-routing.module.js +22 -4
  4. package/dist/app-routing.module.js.map +1 -1
  5. package/dist/generated/lazy-feature-config.d.ts +1 -1
  6. package/dist/generated/lazy-feature-config.d.ts.map +1 -1
  7. package/dist/generated/lazy-feature-config.js +16 -2
  8. package/dist/generated/lazy-feature-config.js.map +1 -1
  9. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +2 -2
  10. package/dist/lib/office/office-connect.component.d.ts +19 -0
  11. package/dist/lib/office/office-connect.component.d.ts.map +1 -0
  12. package/dist/lib/office/office-connect.component.js +80 -0
  13. package/dist/lib/office/office-connect.component.js.map +1 -0
  14. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +7 -0
  15. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  16. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +20 -8
  17. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  18. package/dist/lib/resource-wrappers/dashboard-class-resolution.d.ts +14 -0
  19. package/dist/lib/resource-wrappers/dashboard-class-resolution.d.ts.map +1 -0
  20. package/dist/lib/resource-wrappers/dashboard-class-resolution.js +21 -0
  21. package/dist/lib/resource-wrappers/dashboard-class-resolution.js.map +1 -0
  22. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  23. package/dist/lib/resource-wrappers/dashboard-resource.component.js +3 -2
  24. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  25. package/dist/lib/resource-wrappers/record-form-mode.d.ts +44 -0
  26. package/dist/lib/resource-wrappers/record-form-mode.d.ts.map +1 -0
  27. package/dist/lib/resource-wrappers/record-form-mode.js +47 -0
  28. package/dist/lib/resource-wrappers/record-form-mode.js.map +1 -0
  29. package/dist/lib/resource-wrappers/record-resource.component.d.ts +56 -1
  30. package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
  31. package/dist/lib/resource-wrappers/record-resource.component.js +124 -9
  32. package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
  33. package/dist/lib/resource-wrappers/standard-form-create.d.ts +4 -0
  34. package/dist/lib/resource-wrappers/standard-form-create.d.ts.map +1 -0
  35. package/dist/lib/resource-wrappers/standard-form-create.js +6 -0
  36. package/dist/lib/resource-wrappers/standard-form-create.js.map +1 -0
  37. package/dist/lib/resource-wrappers/view-resource.component.d.ts +18 -1
  38. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  39. package/dist/lib/resource-wrappers/view-resource.component.js +105 -39
  40. package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
  41. package/dist/lib/shell/components/dialogs/app-access-dialog.component.js +2 -2
  42. package/dist/lib/shell/components/record-open/record-origin-crumb.component.d.ts.map +1 -1
  43. package/dist/lib/shell/components/record-open/record-origin-crumb.component.js +12 -8
  44. package/dist/lib/shell/components/record-open/record-origin-crumb.component.js.map +1 -1
  45. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts +6 -0
  46. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
  47. package/dist/lib/shell/components/tabs/component-cache-manager.js +18 -3
  48. package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
  49. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +2 -0
  50. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  51. package/dist/lib/shell/components/tabs/tab-container.component.js +38 -10
  52. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  53. package/dist/lib/shell/shell-chrome-policy.d.ts +6 -0
  54. package/dist/lib/shell/shell-chrome-policy.d.ts.map +1 -1
  55. package/dist/lib/shell/shell-chrome-policy.js +1 -0
  56. package/dist/lib/shell/shell-chrome-policy.js.map +1 -1
  57. package/dist/lib/shell/shell.component.d.ts +23 -0
  58. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  59. package/dist/lib/shell/shell.component.js +283 -71
  60. package/dist/lib/shell/shell.component.js.map +1 -1
  61. package/dist/lib/single-list-detail/single-list-detail.component.js +2 -2
  62. package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
  63. package/dist/lib/single-record/single-record.component.d.ts +27 -2
  64. package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
  65. package/dist/lib/single-record/single-record.component.js +54 -8
  66. package/dist/lib/single-record/single-record.component.js.map +1 -1
  67. package/dist/lib/user-notifications/user-notifications.component.d.ts +24 -2
  68. package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
  69. package/dist/lib/user-notifications/user-notifications.component.js +139 -24
  70. package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
  71. package/dist/lib/user-profile/user-profile.component.js +2 -2
  72. package/dist/module.d.ts +64 -63
  73. package/dist/module.d.ts.map +1 -1
  74. package/dist/module.js +3 -0
  75. package/dist/module.js.map +1 -1
  76. package/package.json +58 -57
package/README.md CHANGED
@@ -149,7 +149,7 @@ export class CustomUserMenu extends BaseUserMenu {
149
149
 
150
150
  ### Shell Chrome Policy
151
151
 
152
- Instance Config decides the platform-wide chrome (`Shell.SearchBar.Enabled`, `Shell.Notifications.Enabled`, `Shell.AppSwitcher.*`, `Shell.AppNav.Enabled`) and is the ceiling. A host that needs a narrower answer for some users — a white-label product hiding the search bar for organizations whose plan does not include browsing the knowledge base, say — registers a `BaseShellChromePolicy` subclass. The shell consults it every time it resolves its flags and re-resolves when the policy fires `Changed`.
152
+ Instance Config decides the platform-wide chrome (`Shell.SearchBar.Enabled`, `Shell.Notifications.Enabled`, `Shell.AppSwitcher.*`, `Shell.AppNav.Enabled`, `Shell.ChatOverlay.Enabled`) and is the ceiling. A host that needs a narrower answer for some users — a white-label product hiding the search bar for organizations whose plan does not include browsing the knowledge base, say — registers a `BaseShellChromePolicy` subclass. The shell consults it every time it resolves its flags and re-resolves when the policy fires `Changed`. Booleans can only be narrowed: a `true` from the policy never re-enables something Instance Config turned off. The resolved set is readable on `ShellComponent.ChromeFlags`; explorer-app reads `chatOverlay` from there to gate the floating chat bubble.
153
153
 
154
154
  ```typescript
155
155
  import { BaseShellChromePolicy, ShellChromeFlags } from '@memberjunction/ng-explorer-core';
@@ -157,7 +157,12 @@ import { BaseShellChromePolicy, ShellChromeFlags } from '@memberjunction/ng-expl
157
157
  @RegisterClass(BaseShellChromePolicy)
158
158
  export class PlanChromePolicy extends BaseShellChromePolicy {
159
159
  public override Resolve(flags: ShellChromeFlags): ShellChromeFlags {
160
- return { ...flags, searchBar: flags.searchBar && this.currentOrgHasKnowledgePlus() };
160
+ return {
161
+ ...flags,
162
+ searchBar: flags.searchBar && this.currentOrgHasKnowledgePlus(),
163
+ // the floating chat bubble, for an audience whose app owns its own AI surface
164
+ chatOverlay: flags.chatOverlay && !this.currentUserIsLearnerOnly(),
165
+ };
161
166
  }
162
167
  // call this.Changed.next() when the organization or plan switches
163
168
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app-routing.module.d.ts","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-routing.module.d.ts","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,11 @@ import { RouterModule } from '@angular/router';
3
3
  import { SingleRecordComponent, AuthGuardService as AuthGuard, AppLockGuardService as AppLockGuard } from './public-api';
4
4
  import { OAuthCallbackComponent } from './lib/oauth/oauth-callback.component';
5
5
  import { ClaimRedeemComponent } from './lib/identity-claims/claim-redeem.component';
6
+ import { OfficeConnectComponent } from './lib/office/office-connect.component';
7
+ import { OFFICE_CONNECT_ROUTE_PATH } from '@memberjunction/excel-addin';
6
8
  import { DATA_EXPLORER_DASHBOARDS_ROUTE } from './lib/guards/moved-nav-item-redirect';
7
9
  import { LogError, Metadata, StartupManager, IsNewEntityRecordUrlId, NEW_RECORD_VALUES_QUERY_PARAM, CompositeKey } from '@memberjunction/core';
8
- import { SYSTEM_APP_ID, RECORDS_RESOURCE_TYPE } from '@memberjunction/ng-shared';
10
+ import { SYSTEM_APP_ID, RECORDS_RESOURCE_TYPE, RecordTabQueryParams } from '@memberjunction/ng-shared';
9
11
  import { MJGlobal, MJEventType } from '@memberjunction/global';
10
12
  import { firstValueFrom, filter, take } from 'rxjs';
11
13
  import * as i0 from "@angular/core";
@@ -273,6 +275,7 @@ export class ResourceResolver {
273
275
  recordId: isNew ? '' : recordId,
274
276
  isNew: isNew || undefined,
275
277
  NewRecordValues: newRecordValues,
278
+ ...RecordTabQueryParams(route.queryParams),
276
279
  appName: appName,
277
280
  appId: app.ID
278
281
  },
@@ -287,7 +290,9 @@ export class ResourceResolver {
287
290
  // Dynamic view: /app/:appName/view/dynamic/:entityName
288
291
  const entityName = decodeURIComponent(param2);
289
292
  const extraFilter = route.queryParams['ExtraFilter'] || route.queryParams['extraFilter'];
290
- const filterSuffix = extraFilter ? ' (Filtered)' : '';
293
+ const rawAbv = route.queryParams['AlternateBaseView'] ?? route.queryParams['alternateBaseView'] ?? route.queryParams['abv'];
294
+ const alternateBaseView = typeof rawAbv === 'string' ? rawAbv : (Array.isArray(rawAbv) ? rawAbv[0] : undefined);
295
+ const filterSuffix = (extraFilter || alternateBaseView) ? ' (Filtered)' : '';
291
296
  this.tabService.OpenTab({
292
297
  ApplicationId: app.ID,
293
298
  Title: `${entityName}${filterSuffix}`,
@@ -295,6 +300,7 @@ export class ResourceResolver {
295
300
  resourceType: 'MJ: User Views',
296
301
  Entity: entityName,
297
302
  ExtraFilter: extraFilter,
303
+ AlternateBaseView: alternateBaseView,
298
304
  isDynamic: true,
299
305
  recordId: 'dynamic',
300
306
  appName: appName,
@@ -499,7 +505,8 @@ export class ResourceResolver {
499
505
  Entity: entityName,
500
506
  recordId: isNew ? '' : recordId,
501
507
  isNew: isNew || undefined,
502
- NewRecordValues: newRecordValues
508
+ NewRecordValues: newRecordValues,
509
+ ...RecordTabQueryParams(route.queryParams)
503
510
  },
504
511
  ResourceRecordId: isNew ? '' : recordId,
505
512
  IsPinned: false
@@ -527,7 +534,9 @@ export class ResourceResolver {
527
534
  // /resource/view/dynamic/:entityName
528
535
  const entityName = decodeURIComponent(route.params['entityName']);
529
536
  const extraFilter = route.queryParams['ExtraFilter'] || route.queryParams['extraFilter'];
530
- const filterSuffix = extraFilter ? ' (Filtered)' : '';
537
+ const rawAbv = route.queryParams['AlternateBaseView'] ?? route.queryParams['alternateBaseView'] ?? route.queryParams['abv'];
538
+ const alternateBaseView = typeof rawAbv === 'string' ? rawAbv : (Array.isArray(rawAbv) ? rawAbv[0] : undefined);
539
+ const filterSuffix = (extraFilter || alternateBaseView) ? ' (Filtered)' : '';
531
540
  // Queue tab request via TabService
532
541
  this.tabService.OpenTab({
533
542
  ApplicationId: SYSTEM_APP_ID,
@@ -536,6 +545,7 @@ export class ResourceResolver {
536
545
  resourceType: 'MJ: User Views',
537
546
  Entity: entityName,
538
547
  ExtraFilter: extraFilter,
548
+ AlternateBaseView: alternateBaseView,
539
549
  isDynamic: true,
540
550
  recordId: 'dynamic'
541
551
  },
@@ -649,6 +659,14 @@ const routes = [
649
659
  path: 'claims/redeem',
650
660
  component: ClaimRedeemComponent
651
661
  },
662
+ // Excel add-in sign-in window — opened by the add-in pane in an Office dialog with its one-time
663
+ // public key and state (office/connect?pk=..&state=..). Same posture as the claim page: no
664
+ // AuthGuard (the component waits for the session and offers sign-in itself), and a direct
665
+ // component for the same library-routing reason.
666
+ {
667
+ path: OFFICE_CONNECT_ROUTE_PATH,
668
+ component: OfficeConnectComponent
669
+ },
652
670
  // App-scoped resource routes (new pattern)
653
671
  // These must come BEFORE app/:appName/:navItemName to be matched first
654
672
  {
@@ -1 +1 @@
1
- {"version":3,"file":"app-routing.module.js","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentRef, Injectable, NgModule } from '@angular/core';\nimport { Routes, RouterModule, Resolve, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport {\n SingleRecordComponent,\n AuthGuardService as AuthGuard,\n AppLockGuardService as AppLockGuard\n} from './public-api';\nimport { OAuthCallbackComponent } from './lib/oauth/oauth-callback.component';\nimport { ClaimRedeemComponent } from './lib/identity-claims/claim-redeem.component';\nimport { DATA_EXPLORER_DASHBOARDS_ROUTE } from './lib/guards/moved-nav-item-redirect';\nimport { LogError, Metadata, StartupManager, IMetadataProvider, IsNewEntityRecordUrlId, NEW_RECORD_VALUES_QUERY_PARAM, CompositeKey } from '@memberjunction/core';\nimport { SharedService, SYSTEM_APP_ID, RECORDS_RESOURCE_TYPE } from '@memberjunction/ng-shared';\nimport { DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';\nimport { ApplicationManager, TabService } from '@memberjunction/ng-base-application';\nimport { MJGlobal, MJEventType } from '@memberjunction/global';\nimport { firstValueFrom, filter, take } from 'rxjs';\n\nexport class CustomReuseStrategy implements RouteReuseStrategy {\n StoredRoutes: { [key: string]: DetachedRouteHandleExt | null } = {};\n\n /** @deprecated Use {@link StoredRoutes}. */\n get storedRoutes(): { [key: string]: DetachedRouteHandleExt | null } {\n return this.StoredRoutes;\n }\n /** @deprecated Use {@link StoredRoutes}. */\n set storedRoutes(value: { [key: string]: DetachedRouteHandleExt | null }) {\n this.StoredRoutes = value;\n }\n\n // Determines if a route should be detached and stored\n ShouldDetach(route: ActivatedRouteSnapshot): boolean {\n // removed reference to the skip stuff from here - we don't use the skip stuff anymore, using generic conversations/chat now\n return false;\n }\n\n /** @deprecated Use {@link ShouldDetach}. */\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\n return this.ShouldDetach(route);\n }\n\n // Stores the detached route\n Store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandleExt | null): void {\n if(!handle){\n return;\n }\n\n if (route.routeConfig && route.routeConfig.path) {\n this.StoredRoutes[route.routeConfig.path] = handle;\n this.callHook(handle, 'ngOnDetach');\n }\n }\n\n /** @deprecated Use {@link Store}. */\n store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandleExt | null): void {\n return this.Store(route, handle);\n }\n\n // Determines if a stored route should be reattached\n ShouldAttach(route: ActivatedRouteSnapshot): boolean {\n // Reattach if we have a stored route for the incoming route\n if (route.routeConfig?.path) {\n return !!route.routeConfig && !!this.StoredRoutes[route.routeConfig.path];\n }\n\n else return false;\n }\n\n /** @deprecated Use {@link ShouldAttach}. */\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\n return this.ShouldAttach(route);\n }\n\n // Retrieves the stored route; null means no stored route for this path\n Retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n if (!route.routeConfig || (route.routeConfig.path && !this.StoredRoutes[route.routeConfig.path])) {\n return null;\n } \n else if (route.routeConfig.path) {\n const path = this.StoredRoutes[route.routeConfig.path];\n if(path){\n this.callHook(path, 'ngOnAttach');\n return path;\n }\n }\n\n return null;\n }\n\n /** @deprecated Use {@link Retrieve}. */\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n return this.Retrieve(route);\n }\n\n // Determines if the route should be reused.\n // Query params are intentionally excluded — the shell handles query param\n // sub-navigation via NotifyQueryParamsChanged. Including them here would\n // cause the ResourceResolver to re-run on back/forward query param changes,\n // racing with the shell's syncWorkspaceWithUrl.\n ShouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n return future.routeConfig === curr.routeConfig &&\n this.ObjectContentsEqual(future.params, curr.params);\n }\n\n /** @deprecated Use {@link ShouldReuseRoute}. */\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n return this.ShouldReuseRoute(future, curr);\n }\n\n ObjectContentsEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) {\n return true; // exact same object\n }\n\n if (obj1 === null && obj2 !== null) {\n return false; // not the same object\n }\n\n if (obj1 === undefined && obj2 !== undefined) {\n return false; // not the same object\n }\n\n if (typeof obj1 === 'object' || typeof obj2 === 'object') {\n if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n return false; // different number of keys\n }\n \n for (const key in obj1) {\n // check to see the type of the key, if it is an object, then we call this function recursively \n // otherwise we do simple comparison\n if (typeof obj1[key] === 'object' && typeof obj2[key] === 'object') {\n if (!this.ObjectContentsEqual(obj1[key], obj2[key])) {\n return false; // any individual key not matching means the objects are different\n }\n }\n else if (obj1[key] !== obj2[key]) {\n return false; // any individual key not matching means the objects are different\n }\n } \n }\n\n return true;\n }\n\n /** @deprecated Use {@link ObjectContentsEqual}. */\n objectContentsEqual(obj1: any, obj2: any): boolean {\n return this.ObjectContentsEqual(obj1, obj2);\n }\n\n private callHook(detachedTree: DetachedRouteHandleExt, hookName: 'ngOnDetach' | 'ngOnAttach'): void {\n if(!detachedTree || !hookName){\n return;\n }\n\n const componentRef = detachedTree.componentRef;\n if (componentRef && componentRef.instance && typeof componentRef.instance[hookName] === 'function') {\n componentRef.instance[hookName]();\n }\n }\n}\n\nfunction readNewRecordValuesQuery(queryParams: { [key: string]: string | string[] | undefined | null }): string | undefined {\n const raw = queryParams[NEW_RECORD_VALUES_QUERY_PARAM] ?? queryParams['newRecordValues'];\n if (raw == null) return undefined;\n const value = Array.isArray(raw) ? raw[0] : raw;\n const trimmed = value?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : undefined;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ResourceResolver implements Resolve<void> {\n private processedUrls = new Map<string, number>();\n private readonly URL_DEBOUNCE_MS = 100; // Allow same URL after 100ms\n private loggedInPromise: Promise<void> | null = null;\n\n /**\n * Optional explicit metadata provider. The shell calls\n * `setProvider(this.ProviderToUse)` after acquiring this resolver from DI.\n * Falls back to `Metadata.Provider` for single-provider apps.\n */\n private _provider: IMetadataProvider | null = null;\n\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n }\n\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n\n constructor(\n private sharedService: SharedService,\n private router: Router,\n private appManager: ApplicationManager,\n private tabService: TabService\n ) {\n // Create a promise that resolves when the user is logged in and metadata is loaded\n this.loggedInPromise = this.waitForLogin();\n }\n\n /**\n * Wait for the LoggedIn event which indicates metadata is loaded.\n * Uses replay (true) to catch the event even if it already fired.\n */\n private async waitForLogin(): Promise<void> {\n await firstValueFrom(\n MJGlobal.Instance.GetEventListener(true).pipe(\n filter(event => event.event === MJEventType.LoggedIn),\n take(1)\n )\n );\n\n await StartupManager.Instance.Startup();\n\n await this.appManager.WhenReady();\n }\n\n async Resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<void> {\n // Wait for login/metadata to be ready before processing\n if (this.loggedInPromise) {\n await this.loggedInPromise;\n }\n\n // Prevent duplicate processing of the same URL within a short time window\n // This allows legitimate re-navigation to the same URL (like app switching)\n // while preventing rapid duplicate calls\n const now = Date.now();\n const lastProcessed = this.processedUrls.get(state.url);\n\n if (lastProcessed && (now - lastProcessed) < this.URL_DEBOUNCE_MS) {\n return;\n }\n\n this.processedUrls.set(state.url, now);\n\n // Check if this resolve should be suppressed (URL sync from tab click, not real navigation)\n if (this.tabService.ShouldSuppressResolve()) {\n this.tabService.ClearSuppressFlag();\n return;\n }\n\n const md = this.Provider;\n const applications = md.Applications;\n\n // Known resource types for app-scoped resource URLs\n const KNOWN_RESOURCE_TYPES = ['dashboard', 'record', 'view', 'query', 'report', 'artifact', 'search'];\n\n // Handle app-scoped resource navigation: /app/:appName/:resourceType/:param1/:param2?\n // This pattern supports resources opened within an app context (e.g., /app/home/dashboard/abc123).\n // Routes like `app/:appName/record/:param1/:param2` and `app/:appName/view/dynamic/:param2` store\n // `resourceType` in `route.data['resourceType']` rather than `route.params['resourceType']`.\n const rawResourceType = (route.params['resourceType'] ?? route.data?.['resourceType']) as string | undefined;\n if (route.params['appName'] !== undefined &&\n rawResourceType !== undefined &&\n KNOWN_RESOURCE_TYPES.includes(rawResourceType.toLowerCase())) {\n const appName = decodeURIComponent(route.params['appName']);\n const resourceType = rawResourceType.toLowerCase();\n const param1 = route.params['param1'] ?? (resourceType === 'view' && route.params['param2'] !== undefined ? 'dynamic' : undefined);\n const param2 = route.params['param2'];\n\n // Check app access\n const accessResult = this.appManager.CheckAppAccess(appName);\n if (accessResult.status !== 'accessible') {\n return;\n }\n\n // Get the app for its ID\n const app = this.appManager.GetAppByPath(appName) || this.appManager.GetAppByName(appName);\n if (!app) {\n LogError(`Application ${appName} not found in metadata`);\n return;\n }\n\n // Handle based on resource type\n switch (resourceType) {\n case 'dashboard': {\n // /app/:appName/dashboard/:dashboardId\n const dashboardId = param1;\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `Dashboard - ${dashboardId}`,\n Configuration: {\n resourceType: 'Dashboards',\n dashboardId,\n recordId: dashboardId,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: dashboardId,\n IsPinned: false\n });\n return;\n }\n\n case 'record': {\n // /app/:appName/record/:entityName/:recordId\n const entityName = decodeURIComponent(param1);\n const recordId = param2;\n const isNew = IsNewEntityRecordUrlId(recordId);\n const newRecordValues = readNewRecordValuesQuery(route.queryParams);\n\n const entityInfo = md.EntityByName(entityName);\n if (!entityInfo) {\n LogError(`Entity ${entityName} not found in metadata`);\n return;\n }\n\n const friendlyName = entityInfo.DisplayName || entityInfo.Name;\n let tabTitle: string;\n if (isNew) {\n tabTitle = `New ${friendlyName}`;\n } else {\n const pk = CompositeKey.FromURLSegment(entityInfo, recordId);\n const cachedName = md.GetCachedRecordNameOnlyIfCached(entityName, pk);\n tabTitle = cachedName || friendlyName;\n }\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: tabTitle,\n Configuration: {\n resourceType: RECORDS_RESOURCE_TYPE,\n Entity: entityName,\n recordId: isNew ? '' : recordId,\n isNew: isNew || undefined,\n NewRecordValues: newRecordValues,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: isNew ? '' : recordId,\n IsPinned: false\n });\n return;\n }\n\n case 'view': {\n // /app/:appName/view/:viewId OR /app/:appName/view/dynamic/:entityName\n if (param1 === 'dynamic' && param2) {\n // Dynamic view: /app/:appName/view/dynamic/:entityName\n const entityName = decodeURIComponent(param2);\n const extraFilter = route.queryParams['ExtraFilter'] || route.queryParams['extraFilter'];\n const filterSuffix = extraFilter ? ' (Filtered)' : '';\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `${entityName}${filterSuffix}`,\n Configuration: {\n resourceType: 'MJ: User Views',\n Entity: entityName,\n ExtraFilter: extraFilter,\n isDynamic: true,\n recordId: 'dynamic',\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: 'dynamic',\n IsPinned: false\n });\n } else {\n // Saved view: /app/:appName/view/:viewId\n const viewId = param1;\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `View - ${viewId}`,\n Configuration: {\n resourceType: 'MJ: User Views',\n viewId,\n recordId: viewId,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: viewId,\n IsPinned: false\n });\n }\n return;\n }\n\n case 'query': {\n // /app/:appName/query/:queryId\n const queryId = param1;\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `Query - ${queryId}`,\n Configuration: {\n resourceType: 'Queries',\n queryId,\n recordId: queryId,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: queryId,\n IsPinned: false\n });\n return;\n }\n\n case 'artifact': {\n // /app/:appName/artifact/:artifactId\n const artifactId = param1;\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `Artifact - ${artifactId}`,\n Configuration: {\n resourceType: 'Artifacts',\n artifactId,\n recordId: artifactId,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: artifactId,\n IsPinned: false\n });\n return;\n }\n\n case 'search': {\n // /app/:appName/search/:searchInput\n const searchInput = decodeURIComponent(param1);\n const entityName = route.queryParams['Entity'] || '';\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `Search: ${searchInput}`,\n Configuration: {\n resourceType: 'Search Results',\n Entity: entityName,\n SearchInput: searchInput,\n recordId: searchInput,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: searchInput,\n IsPinned: false\n });\n return;\n }\n\n default:\n LogError(`Unknown resource type in app-scoped URL: ${resourceType}`);\n return;\n }\n }\n\n // Handle app-level navigation: /app/:appName (no nav item - app default)\n if (route.params['appName'] !== undefined && route.params['navItemName'] === undefined) {\n const appName = decodeURIComponent(route.params['appName']);\n\n // IMPORTANT: Check if user has access to this app BEFORE proceeding\n // Use the ApplicationManager's access check which respects UserApplication records\n const accessResult = this.appManager.CheckAppAccess(appName);\n\n if (accessResult.status !== 'accessible') {\n // User doesn't have access - let the shell component handle the error dialog\n // Don't create any tabs here\n return;\n }\n\n // Let the app create its default tab (will load default dashboard if no nav items)\n // The shell component will handle this after setting the active app\n // We don't need to do anything here - just return to allow the app to activate\n return;\n }\n\n // Handle app navigation: /app/:appName/:navItemName\n if (route.params['appName'] !== undefined && route.params['navItemName'] !== undefined) {\n const appName = decodeURIComponent(route.params['appName']);\n const navItemName = decodeURIComponent(route.params['navItemName']);\n\n // IMPORTANT: Check if user has access to this app BEFORE proceeding\n // Use the ApplicationManager's access check which respects UserApplication records\n const accessResult = this.appManager.CheckAppAccess(appName);\n\n if (accessResult.status !== 'accessible') {\n // User doesn't have access - let the shell component handle the error dialog\n // Don't create any tabs here\n return;\n }\n\n // Find the app in metadata for nav item details\n const app = applications.find(a =>\n a.Path.trim().toLowerCase() === appName.trim().toLowerCase() ||\n a.Name.trim().toLowerCase() === appName.trim().toLowerCase()\n );\n\n if (!app) {\n LogError(`Application ${appName} not found in metadata`);\n return;\n }\n\n // Get nav items from the app's DefaultNavItems JSON\n let navItems: any[] = [];\n if (app.DefaultNavItems) {\n try {\n navItems = JSON.parse(app.DefaultNavItems);\n } catch (e) {\n LogError(`Failed to parse DefaultNavItems for app ${appName}`);\n console.error(e);\n return;\n }\n }\n\n // Find the nav item by label (case-insensitive)\n const navItem = navItems.find(item =>\n item.Label?.trim().toLowerCase() === navItemName.trim().toLowerCase()\n );\n\n if (!navItem) {\n LogError(`Nav item ${navItemName} not found in app ${appName}`);\n return;\n }\n\n // Get the resource type from the nav item\n if (!navItem.ResourceType) {\n LogError(`Nav item ${navItemName} has no ResourceType defined`);\n return;\n }\n\n // NOTE: Don't set active app here - the shell component handles that\n // based on the URL to avoid navigation loops\n\n // Queue tab request via TabService\n // Build configuration - include DriverClass for Custom resource types\n const config: any = {\n route: navItem.Route,\n resourceType: navItem.ResourceType,\n recordId: navItem.RecordID,\n appName: appName,\n appId: app.ID,\n navItemName: navItem.Label,\n ...(navItem.Configuration || {}),\n queryParams: route.queryParams\n };\n\n // For Custom resource types, include the DriverClass\n if (navItem.ResourceType === 'Custom' && navItem.DriverClass) {\n config.driverClass = navItem.DriverClass;\n }\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: navItem.Label,\n Configuration: config,\n IsPinned: false\n });\n\n return;\n }\n\n // Determine resource type and record ID based on the route path\n if (route.params['recordId'] !== undefined && route.params['entityName'] !== undefined) {\n // /resource/record/:entityName/:recordId\n const entityName = decodeURIComponent(route.params['entityName']);\n const recordId = route.params['recordId'];\n const isNew = IsNewEntityRecordUrlId(recordId);\n const newRecordValues = readNewRecordValuesQuery(route.queryParams);\n\n const entityInfo = md.EntityByName(entityName);\n if (!entityInfo) {\n LogError(`Entity ${entityName} not found in metadata`);\n return;\n }\n\n const friendlyName = entityInfo.DisplayName || entityInfo.Name;\n let tabTitle: string;\n if (isNew) {\n tabTitle = `New ${friendlyName}`;\n } else {\n const pk = CompositeKey.FromURLSegment(entityInfo, recordId);\n const cachedName = md.GetCachedRecordNameOnlyIfCached(entityName, pk);\n tabTitle = cachedName || friendlyName;\n }\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: tabTitle,\n Configuration: {\n resourceType: RECORDS_RESOURCE_TYPE,\n Entity: entityName,\n recordId: isNew ? '' : recordId,\n isNew: isNew || undefined,\n NewRecordValues: newRecordValues\n },\n ResourceRecordId: isNew ? '' : recordId,\n IsPinned: false\n });\n return;\n }\n\n if (route.params['viewId'] !== undefined) {\n // /resource/view/:viewId (saved views)\n const viewId = route.params['viewId'];\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `View - ${viewId}`,\n Configuration: {\n resourceType: 'MJ: User Views',\n viewId,\n recordId: viewId\n },\n ResourceRecordId: viewId,\n IsPinned: false\n });\n return;\n }\n\n if (route.url.length >= 3 && route.url[1].path === 'view' && route.url[2].path === 'dynamic') {\n // /resource/view/dynamic/:entityName\n const entityName = decodeURIComponent(route.params['entityName']);\n const extraFilter = route.queryParams['ExtraFilter'] || route.queryParams['extraFilter'];\n\n const filterSuffix = extraFilter ? ' (Filtered)' : '';\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `${entityName}${filterSuffix}`,\n Configuration: {\n resourceType: 'MJ: User Views',\n Entity: entityName,\n ExtraFilter: extraFilter,\n isDynamic: true,\n recordId: 'dynamic'\n },\n ResourceRecordId: 'dynamic',\n IsPinned: false\n });\n return;\n }\n\n if (route.params['dashboardId'] !== undefined) {\n // /resource/dashboard/:dashboardId\n const dashboardId = route.params['dashboardId'];\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `Dashboard - ${dashboardId}`,\n Configuration: {\n resourceType: 'Dashboards',\n dashboardId,\n recordId: dashboardId\n },\n ResourceRecordId: dashboardId,\n IsPinned: false\n });\n return;\n }\n\n if (route.params['artifactId'] !== undefined) {\n // /resource/artifact/:artifactId\n const artifactId = route.params['artifactId'];\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `Artifact - ${artifactId}`,\n Configuration: {\n resourceType: 'Artifacts',\n artifactId,\n recordId: artifactId\n },\n ResourceRecordId: artifactId,\n IsPinned: false\n });\n return;\n }\n\n if (route.params['queryId'] !== undefined) {\n // /resource/query/:queryId\n const queryId = route.params['queryId'];\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `Query - ${queryId}`,\n Configuration: {\n resourceType: 'Queries',\n queryId,\n recordId: queryId\n },\n ResourceRecordId: queryId,\n IsPinned: false\n });\n return;\n }\n\n if (route.params['searchInput'] !== undefined) {\n const searchInput = decodeURIComponent(route.params['searchInput']);\n\n // Unified search route: always use SearchResultsResource\n // Pass Query for the ng-search service, and legacy SearchInput for backward compat\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `Search: ${searchInput}`,\n Configuration: {\n resourceType: 'Custom',\n driverClass: 'SearchResultsResource',\n Query: searchInput,\n SearchInput: searchInput,\n recordId: `search-${searchInput}`\n },\n ResourceRecordId: `search-${searchInput}`,\n IsPinned: false\n });\n return;\n }\n\n LogError(`Unable to parse resource route parameters from URL: ${state.url}`);\n }\n\n /** @deprecated Use {@link Resolve}. */\n async resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<void> {\n return this.Resolve(route, state);\n }\n}\n\nconst routes: Routes = [\n // OAuth callback route - must be FIRST as it handles redirects from OAuth providers\n // This route does NOT require AuthGuard because it's the callback from external OAuth\n // The component itself handles authentication when calling the exchange endpoint\n // NOTE: We use component directly instead of loadChildren because lazy loading\n // doesn't work correctly when the route is defined in a library (explorer-core)\n // rather than the main application.\n {\n path: 'oauth/callback',\n component: OAuthCallbackComponent\n },\n\n // Identity-claim redemption landing page — the target of claim emails'\n // /claims/redeem?id=..&token=.. links (IdentityClaimEngineServer.sendClaimEmail).\n // Same posture as the OAuth callback: no AuthGuard (the component waits for session\n // restoration itself and tells an unauthenticated visitor to sign in first), and a\n // direct component rather than a lazy route for the same library-routing reason.\n {\n path: 'claims/redeem',\n component: ClaimRedeemComponent\n },\n\n // App-scoped resource routes (new pattern)\n // These must come BEFORE app/:appName/:navItemName to be matched first\n {\n path: 'app/:appName/view/dynamic/:param2',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n data: { resourceType: 'view' }\n },\n {\n path: 'app/:appName/record/:param1/:param2',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n data: { resourceType: 'record' }\n },\n {\n path: 'app/:appName/:resourceType/:param1',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n // A link to Data Explorer's Dashboards page opens the Library of the Dashboards app, with the link's query params,\n // when Data Explorer no longer has that nav item and the user has the Dashboards app (NavigationService applies\n // the same rule to pins and saved tabs)\n DATA_EXPLORER_DASHBOARDS_ROUTE,\n // App navigation routes\n {\n path: 'app/:appName/:navItemName',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'app/:appName',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n // Legacy resource routes (kept for backward compatibility, will redirect in future)\n {\n path: 'resource/record/:entityName/:recordId',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/view/dynamic/:entityName',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/view/:viewId',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/dashboard/:dashboardId',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/artifact/:artifactId',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/query/:queryId',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/search/:searchInput',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n }\n];\n\ninterface DetachedRouteHandleExt extends DetachedRouteHandle {\n componentRef: ComponentRef<any>;\n}\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { onSameUrlNavigation: 'reload' })],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {\n // NOTE - in MJ Explorer 3.0 and beyond we do NOT use Explorer Navigation Items anymore and\n // this allows us to remove the dyanmic route stuff entirely here. The NEW paradigm is \n // everything beyond resource navigation is an app and apps have the ability to define \n // nav items which is a superset of functionality compared to the old Explorer Nav Items.\n}"]}
1
+ {"version":3,"file":"app-routing.module.js","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentRef, Injectable, NgModule } from '@angular/core';\nimport { Routes, RouterModule, Resolve, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport {\n SingleRecordComponent,\n AuthGuardService as AuthGuard,\n AppLockGuardService as AppLockGuard\n} from './public-api';\nimport { OAuthCallbackComponent } from './lib/oauth/oauth-callback.component';\nimport { ClaimRedeemComponent } from './lib/identity-claims/claim-redeem.component';\nimport { OfficeConnectComponent } from './lib/office/office-connect.component';\nimport { OFFICE_CONNECT_ROUTE_PATH } from '@memberjunction/excel-addin';\nimport { DATA_EXPLORER_DASHBOARDS_ROUTE } from './lib/guards/moved-nav-item-redirect';\nimport { LogError, Metadata, StartupManager, IMetadataProvider, IsNewEntityRecordUrlId, NEW_RECORD_VALUES_QUERY_PARAM, CompositeKey } from '@memberjunction/core';\nimport { SharedService, SYSTEM_APP_ID, RECORDS_RESOURCE_TYPE, RecordTabQueryParams } from '@memberjunction/ng-shared';\nimport { DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';\nimport { ApplicationManager, TabService } from '@memberjunction/ng-base-application';\nimport { MJGlobal, MJEventType } from '@memberjunction/global';\nimport { firstValueFrom, filter, take } from 'rxjs';\n\nexport class CustomReuseStrategy implements RouteReuseStrategy {\n StoredRoutes: { [key: string]: DetachedRouteHandleExt | null } = {};\n\n /** @deprecated Use {@link StoredRoutes}. */\n get storedRoutes(): { [key: string]: DetachedRouteHandleExt | null } {\n return this.StoredRoutes;\n }\n /** @deprecated Use {@link StoredRoutes}. */\n set storedRoutes(value: { [key: string]: DetachedRouteHandleExt | null }) {\n this.StoredRoutes = value;\n }\n\n // Determines if a route should be detached and stored\n ShouldDetach(route: ActivatedRouteSnapshot): boolean {\n // removed reference to the skip stuff from here - we don't use the skip stuff anymore, using generic conversations/chat now\n return false;\n }\n\n /** @deprecated Use {@link ShouldDetach}. */\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\n return this.ShouldDetach(route);\n }\n\n // Stores the detached route\n Store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandleExt | null): void {\n if(!handle){\n return;\n }\n\n if (route.routeConfig && route.routeConfig.path) {\n this.StoredRoutes[route.routeConfig.path] = handle;\n this.callHook(handle, 'ngOnDetach');\n }\n }\n\n /** @deprecated Use {@link Store}. */\n store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandleExt | null): void {\n return this.Store(route, handle);\n }\n\n // Determines if a stored route should be reattached\n ShouldAttach(route: ActivatedRouteSnapshot): boolean {\n // Reattach if we have a stored route for the incoming route\n if (route.routeConfig?.path) {\n return !!route.routeConfig && !!this.StoredRoutes[route.routeConfig.path];\n }\n\n else return false;\n }\n\n /** @deprecated Use {@link ShouldAttach}. */\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\n return this.ShouldAttach(route);\n }\n\n // Retrieves the stored route; null means no stored route for this path\n Retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n if (!route.routeConfig || (route.routeConfig.path && !this.StoredRoutes[route.routeConfig.path])) {\n return null;\n } \n else if (route.routeConfig.path) {\n const path = this.StoredRoutes[route.routeConfig.path];\n if(path){\n this.callHook(path, 'ngOnAttach');\n return path;\n }\n }\n\n return null;\n }\n\n /** @deprecated Use {@link Retrieve}. */\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n return this.Retrieve(route);\n }\n\n // Determines if the route should be reused.\n // Query params are intentionally excluded — the shell handles query param\n // sub-navigation via NotifyQueryParamsChanged. Including them here would\n // cause the ResourceResolver to re-run on back/forward query param changes,\n // racing with the shell's syncWorkspaceWithUrl.\n ShouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n return future.routeConfig === curr.routeConfig &&\n this.ObjectContentsEqual(future.params, curr.params);\n }\n\n /** @deprecated Use {@link ShouldReuseRoute}. */\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n return this.ShouldReuseRoute(future, curr);\n }\n\n ObjectContentsEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) {\n return true; // exact same object\n }\n\n if (obj1 === null && obj2 !== null) {\n return false; // not the same object\n }\n\n if (obj1 === undefined && obj2 !== undefined) {\n return false; // not the same object\n }\n\n if (typeof obj1 === 'object' || typeof obj2 === 'object') {\n if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n return false; // different number of keys\n }\n \n for (const key in obj1) {\n // check to see the type of the key, if it is an object, then we call this function recursively \n // otherwise we do simple comparison\n if (typeof obj1[key] === 'object' && typeof obj2[key] === 'object') {\n if (!this.ObjectContentsEqual(obj1[key], obj2[key])) {\n return false; // any individual key not matching means the objects are different\n }\n }\n else if (obj1[key] !== obj2[key]) {\n return false; // any individual key not matching means the objects are different\n }\n } \n }\n\n return true;\n }\n\n /** @deprecated Use {@link ObjectContentsEqual}. */\n objectContentsEqual(obj1: any, obj2: any): boolean {\n return this.ObjectContentsEqual(obj1, obj2);\n }\n\n private callHook(detachedTree: DetachedRouteHandleExt, hookName: 'ngOnDetach' | 'ngOnAttach'): void {\n if(!detachedTree || !hookName){\n return;\n }\n\n const componentRef = detachedTree.componentRef;\n if (componentRef && componentRef.instance && typeof componentRef.instance[hookName] === 'function') {\n componentRef.instance[hookName]();\n }\n }\n}\n\nfunction readNewRecordValuesQuery(queryParams: { [key: string]: string | string[] | undefined | null }): string | undefined {\n const raw = queryParams[NEW_RECORD_VALUES_QUERY_PARAM] ?? queryParams['newRecordValues'];\n if (raw == null) return undefined;\n const value = Array.isArray(raw) ? raw[0] : raw;\n const trimmed = value?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : undefined;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ResourceResolver implements Resolve<void> {\n private processedUrls = new Map<string, number>();\n private readonly URL_DEBOUNCE_MS = 100; // Allow same URL after 100ms\n private loggedInPromise: Promise<void> | null = null;\n\n /**\n * Optional explicit metadata provider. The shell calls\n * `setProvider(this.ProviderToUse)` after acquiring this resolver from DI.\n * Falls back to `Metadata.Provider` for single-provider apps.\n */\n private _provider: IMetadataProvider | null = null;\n\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n }\n\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n\n constructor(\n private sharedService: SharedService,\n private router: Router,\n private appManager: ApplicationManager,\n private tabService: TabService\n ) {\n // Create a promise that resolves when the user is logged in and metadata is loaded\n this.loggedInPromise = this.waitForLogin();\n }\n\n /**\n * Wait for the LoggedIn event which indicates metadata is loaded.\n * Uses replay (true) to catch the event even if it already fired.\n */\n private async waitForLogin(): Promise<void> {\n await firstValueFrom(\n MJGlobal.Instance.GetEventListener(true).pipe(\n filter(event => event.event === MJEventType.LoggedIn),\n take(1)\n )\n );\n\n await StartupManager.Instance.Startup();\n\n await this.appManager.WhenReady();\n }\n\n async Resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<void> {\n // Wait for login/metadata to be ready before processing\n if (this.loggedInPromise) {\n await this.loggedInPromise;\n }\n\n // Prevent duplicate processing of the same URL within a short time window\n // This allows legitimate re-navigation to the same URL (like app switching)\n // while preventing rapid duplicate calls\n const now = Date.now();\n const lastProcessed = this.processedUrls.get(state.url);\n\n if (lastProcessed && (now - lastProcessed) < this.URL_DEBOUNCE_MS) {\n return;\n }\n\n this.processedUrls.set(state.url, now);\n\n // Check if this resolve should be suppressed (URL sync from tab click, not real navigation)\n if (this.tabService.ShouldSuppressResolve()) {\n this.tabService.ClearSuppressFlag();\n return;\n }\n\n const md = this.Provider;\n const applications = md.Applications;\n\n // Known resource types for app-scoped resource URLs\n const KNOWN_RESOURCE_TYPES = ['dashboard', 'record', 'view', 'query', 'report', 'artifact', 'search'];\n\n // Handle app-scoped resource navigation: /app/:appName/:resourceType/:param1/:param2?\n // This pattern supports resources opened within an app context (e.g., /app/home/dashboard/abc123).\n // Routes like `app/:appName/record/:param1/:param2` and `app/:appName/view/dynamic/:param2` store\n // `resourceType` in `route.data['resourceType']` rather than `route.params['resourceType']`.\n const rawResourceType = (route.params['resourceType'] ?? route.data?.['resourceType']) as string | undefined;\n if (route.params['appName'] !== undefined &&\n rawResourceType !== undefined &&\n KNOWN_RESOURCE_TYPES.includes(rawResourceType.toLowerCase())) {\n const appName = decodeURIComponent(route.params['appName']);\n const resourceType = rawResourceType.toLowerCase();\n const param1 = route.params['param1'] ?? (resourceType === 'view' && route.params['param2'] !== undefined ? 'dynamic' : undefined);\n const param2 = route.params['param2'];\n\n // Check app access\n const accessResult = this.appManager.CheckAppAccess(appName);\n if (accessResult.status !== 'accessible') {\n return;\n }\n\n // Get the app for its ID\n const app = this.appManager.GetAppByPath(appName) || this.appManager.GetAppByName(appName);\n if (!app) {\n LogError(`Application ${appName} not found in metadata`);\n return;\n }\n\n // Handle based on resource type\n switch (resourceType) {\n case 'dashboard': {\n // /app/:appName/dashboard/:dashboardId\n const dashboardId = param1;\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `Dashboard - ${dashboardId}`,\n Configuration: {\n resourceType: 'Dashboards',\n dashboardId,\n recordId: dashboardId,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: dashboardId,\n IsPinned: false\n });\n return;\n }\n\n case 'record': {\n // /app/:appName/record/:entityName/:recordId\n const entityName = decodeURIComponent(param1);\n const recordId = param2;\n const isNew = IsNewEntityRecordUrlId(recordId);\n const newRecordValues = readNewRecordValuesQuery(route.queryParams);\n\n const entityInfo = md.EntityByName(entityName);\n if (!entityInfo) {\n LogError(`Entity ${entityName} not found in metadata`);\n return;\n }\n\n const friendlyName = entityInfo.DisplayName || entityInfo.Name;\n let tabTitle: string;\n if (isNew) {\n tabTitle = `New ${friendlyName}`;\n } else {\n const pk = CompositeKey.FromURLSegment(entityInfo, recordId);\n const cachedName = md.GetCachedRecordNameOnlyIfCached(entityName, pk);\n tabTitle = cachedName || friendlyName;\n }\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: tabTitle,\n Configuration: {\n resourceType: RECORDS_RESOURCE_TYPE,\n Entity: entityName,\n recordId: isNew ? '' : recordId,\n isNew: isNew || undefined,\n NewRecordValues: newRecordValues,\n ...RecordTabQueryParams(route.queryParams),\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: isNew ? '' : recordId,\n IsPinned: false\n });\n return;\n }\n\n case 'view': {\n // /app/:appName/view/:viewId OR /app/:appName/view/dynamic/:entityName\n if (param1 === 'dynamic' && param2) {\n // Dynamic view: /app/:appName/view/dynamic/:entityName\n const entityName = decodeURIComponent(param2);\n const extraFilter = route.queryParams['ExtraFilter'] || route.queryParams['extraFilter'];\n const rawAbv = route.queryParams['AlternateBaseView'] ?? route.queryParams['alternateBaseView'] ?? route.queryParams['abv'];\n const alternateBaseView = typeof rawAbv === 'string' ? rawAbv : (Array.isArray(rawAbv) ? rawAbv[0] : undefined);\n const filterSuffix = (extraFilter || alternateBaseView) ? ' (Filtered)' : '';\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `${entityName}${filterSuffix}`,\n Configuration: {\n resourceType: 'MJ: User Views',\n Entity: entityName,\n ExtraFilter: extraFilter,\n AlternateBaseView: alternateBaseView,\n isDynamic: true,\n recordId: 'dynamic',\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: 'dynamic',\n IsPinned: false\n });\n } else {\n // Saved view: /app/:appName/view/:viewId\n const viewId = param1;\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `View - ${viewId}`,\n Configuration: {\n resourceType: 'MJ: User Views',\n viewId,\n recordId: viewId,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: viewId,\n IsPinned: false\n });\n }\n return;\n }\n\n case 'query': {\n // /app/:appName/query/:queryId\n const queryId = param1;\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `Query - ${queryId}`,\n Configuration: {\n resourceType: 'Queries',\n queryId,\n recordId: queryId,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: queryId,\n IsPinned: false\n });\n return;\n }\n\n case 'artifact': {\n // /app/:appName/artifact/:artifactId\n const artifactId = param1;\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `Artifact - ${artifactId}`,\n Configuration: {\n resourceType: 'Artifacts',\n artifactId,\n recordId: artifactId,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: artifactId,\n IsPinned: false\n });\n return;\n }\n\n case 'search': {\n // /app/:appName/search/:searchInput\n const searchInput = decodeURIComponent(param1);\n const entityName = route.queryParams['Entity'] || '';\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: `Search: ${searchInput}`,\n Configuration: {\n resourceType: 'Search Results',\n Entity: entityName,\n SearchInput: searchInput,\n recordId: searchInput,\n appName: appName,\n appId: app.ID\n },\n ResourceRecordId: searchInput,\n IsPinned: false\n });\n return;\n }\n\n default:\n LogError(`Unknown resource type in app-scoped URL: ${resourceType}`);\n return;\n }\n }\n\n // Handle app-level navigation: /app/:appName (no nav item - app default)\n if (route.params['appName'] !== undefined && route.params['navItemName'] === undefined) {\n const appName = decodeURIComponent(route.params['appName']);\n\n // IMPORTANT: Check if user has access to this app BEFORE proceeding\n // Use the ApplicationManager's access check which respects UserApplication records\n const accessResult = this.appManager.CheckAppAccess(appName);\n\n if (accessResult.status !== 'accessible') {\n // User doesn't have access - let the shell component handle the error dialog\n // Don't create any tabs here\n return;\n }\n\n // Let the app create its default tab (will load default dashboard if no nav items)\n // The shell component will handle this after setting the active app\n // We don't need to do anything here - just return to allow the app to activate\n return;\n }\n\n // Handle app navigation: /app/:appName/:navItemName\n if (route.params['appName'] !== undefined && route.params['navItemName'] !== undefined) {\n const appName = decodeURIComponent(route.params['appName']);\n const navItemName = decodeURIComponent(route.params['navItemName']);\n\n // IMPORTANT: Check if user has access to this app BEFORE proceeding\n // Use the ApplicationManager's access check which respects UserApplication records\n const accessResult = this.appManager.CheckAppAccess(appName);\n\n if (accessResult.status !== 'accessible') {\n // User doesn't have access - let the shell component handle the error dialog\n // Don't create any tabs here\n return;\n }\n\n // Find the app in metadata for nav item details\n const app = applications.find(a =>\n a.Path.trim().toLowerCase() === appName.trim().toLowerCase() ||\n a.Name.trim().toLowerCase() === appName.trim().toLowerCase()\n );\n\n if (!app) {\n LogError(`Application ${appName} not found in metadata`);\n return;\n }\n\n // Get nav items from the app's DefaultNavItems JSON\n let navItems: any[] = [];\n if (app.DefaultNavItems) {\n try {\n navItems = JSON.parse(app.DefaultNavItems);\n } catch (e) {\n LogError(`Failed to parse DefaultNavItems for app ${appName}`);\n console.error(e);\n return;\n }\n }\n\n // Find the nav item by label (case-insensitive)\n const navItem = navItems.find(item =>\n item.Label?.trim().toLowerCase() === navItemName.trim().toLowerCase()\n );\n\n if (!navItem) {\n LogError(`Nav item ${navItemName} not found in app ${appName}`);\n return;\n }\n\n // Get the resource type from the nav item\n if (!navItem.ResourceType) {\n LogError(`Nav item ${navItemName} has no ResourceType defined`);\n return;\n }\n\n // NOTE: Don't set active app here - the shell component handles that\n // based on the URL to avoid navigation loops\n\n // Queue tab request via TabService\n // Build configuration - include DriverClass for Custom resource types\n const config: any = {\n route: navItem.Route,\n resourceType: navItem.ResourceType,\n recordId: navItem.RecordID,\n appName: appName,\n appId: app.ID,\n navItemName: navItem.Label,\n ...(navItem.Configuration || {}),\n queryParams: route.queryParams\n };\n\n // For Custom resource types, include the DriverClass\n if (navItem.ResourceType === 'Custom' && navItem.DriverClass) {\n config.driverClass = navItem.DriverClass;\n }\n\n this.tabService.OpenTab({\n ApplicationId: app.ID,\n Title: navItem.Label,\n Configuration: config,\n IsPinned: false\n });\n\n return;\n }\n\n // Determine resource type and record ID based on the route path\n if (route.params['recordId'] !== undefined && route.params['entityName'] !== undefined) {\n // /resource/record/:entityName/:recordId\n const entityName = decodeURIComponent(route.params['entityName']);\n const recordId = route.params['recordId'];\n const isNew = IsNewEntityRecordUrlId(recordId);\n const newRecordValues = readNewRecordValuesQuery(route.queryParams);\n\n const entityInfo = md.EntityByName(entityName);\n if (!entityInfo) {\n LogError(`Entity ${entityName} not found in metadata`);\n return;\n }\n\n const friendlyName = entityInfo.DisplayName || entityInfo.Name;\n let tabTitle: string;\n if (isNew) {\n tabTitle = `New ${friendlyName}`;\n } else {\n const pk = CompositeKey.FromURLSegment(entityInfo, recordId);\n const cachedName = md.GetCachedRecordNameOnlyIfCached(entityName, pk);\n tabTitle = cachedName || friendlyName;\n }\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: tabTitle,\n Configuration: {\n resourceType: RECORDS_RESOURCE_TYPE,\n Entity: entityName,\n recordId: isNew ? '' : recordId,\n isNew: isNew || undefined,\n NewRecordValues: newRecordValues,\n ...RecordTabQueryParams(route.queryParams)\n },\n ResourceRecordId: isNew ? '' : recordId,\n IsPinned: false\n });\n return;\n }\n\n if (route.params['viewId'] !== undefined) {\n // /resource/view/:viewId (saved views)\n const viewId = route.params['viewId'];\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `View - ${viewId}`,\n Configuration: {\n resourceType: 'MJ: User Views',\n viewId,\n recordId: viewId\n },\n ResourceRecordId: viewId,\n IsPinned: false\n });\n return;\n }\n\n if (route.url.length >= 3 && route.url[1].path === 'view' && route.url[2].path === 'dynamic') {\n // /resource/view/dynamic/:entityName\n const entityName = decodeURIComponent(route.params['entityName']);\n const extraFilter = route.queryParams['ExtraFilter'] || route.queryParams['extraFilter'];\n const rawAbv = route.queryParams['AlternateBaseView'] ?? route.queryParams['alternateBaseView'] ?? route.queryParams['abv'];\n const alternateBaseView = typeof rawAbv === 'string' ? rawAbv : (Array.isArray(rawAbv) ? rawAbv[0] : undefined);\n\n const filterSuffix = (extraFilter || alternateBaseView) ? ' (Filtered)' : '';\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `${entityName}${filterSuffix}`,\n Configuration: {\n resourceType: 'MJ: User Views',\n Entity: entityName,\n ExtraFilter: extraFilter,\n AlternateBaseView: alternateBaseView,\n isDynamic: true,\n recordId: 'dynamic'\n },\n ResourceRecordId: 'dynamic',\n IsPinned: false\n });\n return;\n }\n\n if (route.params['dashboardId'] !== undefined) {\n // /resource/dashboard/:dashboardId\n const dashboardId = route.params['dashboardId'];\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `Dashboard - ${dashboardId}`,\n Configuration: {\n resourceType: 'Dashboards',\n dashboardId,\n recordId: dashboardId\n },\n ResourceRecordId: dashboardId,\n IsPinned: false\n });\n return;\n }\n\n if (route.params['artifactId'] !== undefined) {\n // /resource/artifact/:artifactId\n const artifactId = route.params['artifactId'];\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `Artifact - ${artifactId}`,\n Configuration: {\n resourceType: 'Artifacts',\n artifactId,\n recordId: artifactId\n },\n ResourceRecordId: artifactId,\n IsPinned: false\n });\n return;\n }\n\n if (route.params['queryId'] !== undefined) {\n // /resource/query/:queryId\n const queryId = route.params['queryId'];\n\n // Queue tab request via TabService\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `Query - ${queryId}`,\n Configuration: {\n resourceType: 'Queries',\n queryId,\n recordId: queryId\n },\n ResourceRecordId: queryId,\n IsPinned: false\n });\n return;\n }\n\n if (route.params['searchInput'] !== undefined) {\n const searchInput = decodeURIComponent(route.params['searchInput']);\n\n // Unified search route: always use SearchResultsResource\n // Pass Query for the ng-search service, and legacy SearchInput for backward compat\n this.tabService.OpenTab({\n ApplicationId: SYSTEM_APP_ID,\n Title: `Search: ${searchInput}`,\n Configuration: {\n resourceType: 'Custom',\n driverClass: 'SearchResultsResource',\n Query: searchInput,\n SearchInput: searchInput,\n recordId: `search-${searchInput}`\n },\n ResourceRecordId: `search-${searchInput}`,\n IsPinned: false\n });\n return;\n }\n\n LogError(`Unable to parse resource route parameters from URL: ${state.url}`);\n }\n\n /** @deprecated Use {@link Resolve}. */\n async resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<void> {\n return this.Resolve(route, state);\n }\n}\n\nconst routes: Routes = [\n // OAuth callback route - must be FIRST as it handles redirects from OAuth providers\n // This route does NOT require AuthGuard because it's the callback from external OAuth\n // The component itself handles authentication when calling the exchange endpoint\n // NOTE: We use component directly instead of loadChildren because lazy loading\n // doesn't work correctly when the route is defined in a library (explorer-core)\n // rather than the main application.\n {\n path: 'oauth/callback',\n component: OAuthCallbackComponent\n },\n\n // Identity-claim redemption landing page — the target of claim emails'\n // /claims/redeem?id=..&token=.. links (IdentityClaimEngineServer.sendClaimEmail).\n // Same posture as the OAuth callback: no AuthGuard (the component waits for session\n // restoration itself and tells an unauthenticated visitor to sign in first), and a\n // direct component rather than a lazy route for the same library-routing reason.\n {\n path: 'claims/redeem',\n component: ClaimRedeemComponent\n },\n\n // Excel add-in sign-in window — opened by the add-in pane in an Office dialog with its one-time\n // public key and state (office/connect?pk=..&state=..). Same posture as the claim page: no\n // AuthGuard (the component waits for the session and offers sign-in itself), and a direct\n // component for the same library-routing reason.\n {\n path: OFFICE_CONNECT_ROUTE_PATH,\n component: OfficeConnectComponent\n },\n\n // App-scoped resource routes (new pattern)\n // These must come BEFORE app/:appName/:navItemName to be matched first\n {\n path: 'app/:appName/view/dynamic/:param2',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n data: { resourceType: 'view' }\n },\n {\n path: 'app/:appName/record/:param1/:param2',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n data: { resourceType: 'record' }\n },\n {\n path: 'app/:appName/:resourceType/:param1',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n // A link to Data Explorer's Dashboards page opens the Library of the Dashboards app, with the link's query params,\n // when Data Explorer no longer has that nav item and the user has the Dashboards app (NavigationService applies\n // the same rule to pins and saved tabs)\n DATA_EXPLORER_DASHBOARDS_ROUTE,\n // App navigation routes\n {\n path: 'app/:appName/:navItemName',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'app/:appName',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n // Legacy resource routes (kept for backward compatibility, will redirect in future)\n {\n path: 'resource/record/:entityName/:recordId',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/view/dynamic/:entityName',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/view/:viewId',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/dashboard/:dashboardId',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/artifact/:artifactId',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/query/:queryId',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n },\n {\n path: 'resource/search/:searchInput',\n resolve: { data: ResourceResolver },\n canActivate: [AuthGuard, AppLockGuard],\n component: SingleRecordComponent,\n }\n];\n\ninterface DetachedRouteHandleExt extends DetachedRouteHandle {\n componentRef: ComponentRef<any>;\n}\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { onSameUrlNavigation: 'reload' })],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {\n // NOTE - in MJ Explorer 3.0 and beyond we do NOT use Explorer Navigation Items anymore and\n // this allows us to remove the dyanmic route stuff entirely here. The NEW paradigm is \n // everything beyond resource navigation is an app and apps have the ability to define \n // nav items which is a superset of functionality compared to the old Explorer Nav Items.\n}"]}
@@ -24,5 +24,5 @@ export declare const LAZY_FEATURE_CONFIG: Record<string, {
24
24
  chunkId: string;
25
25
  load: () => Promise<void>;
26
26
  }>;
27
- export declare const LAZY_FEATURE_CONFIG_COUNT = 127;
27
+ export declare const LAZY_FEATURE_CONFIG_COUNT = 135;
28
28
  //# sourceMappingURL=lazy-feature-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-feature-config.d.ts","sourceRoot":"","sources":["../../src/generated/lazy-feature-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAgIH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CA0K9F,CAAC;AAEF,eAAO,MAAM,yBAAyB,MAAM,CAAC"}
1
+ {"version":3,"file":"lazy-feature-config.d.ts","sourceRoot":"","sources":["../../src/generated/lazy-feature-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAsIH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAoL9F,CAAC;AAEF,eAAO,MAAM,yBAAyB,MAAM,CAAC"}
@@ -21,7 +21,7 @@ const loadNgDashboardsActionsDashboardsModule = {
21
21
  chunkId: '@memberjunction/ng-dashboards/actions-dashboards.module',
22
22
  load: () => import('@memberjunction/ng-dashboards/actions-dashboards.module').then(() => { })
23
23
  };
24
- // --- @memberjunction/ng-dashboards → ./ai-dashboards.module (17 entries) ---
24
+ // --- @memberjunction/ng-dashboards → ./ai-dashboards.module (22 entries) ---
25
25
  const loadNgDashboardsAiDashboardsModule = {
26
26
  chunkId: '@memberjunction/ng-dashboards/ai-dashboards.module',
27
27
  load: () => import('@memberjunction/ng-dashboards/ai-dashboards.module').then(() => { })
@@ -101,6 +101,11 @@ const loadNgDashboardsTestingDashboardsModule = {
101
101
  chunkId: '@memberjunction/ng-dashboards/testing-dashboards.module',
102
102
  load: () => import('@memberjunction/ng-dashboards/testing-dashboards.module').then(() => { })
103
103
  };
104
+ // --- @memberjunction/ng-dashboards → ./video-studio-dashboards.module (3 entries) ---
105
+ const loadNgDashboardsVideoStudioDashboardsModule = {
106
+ chunkId: '@memberjunction/ng-dashboards/video-studio-dashboards.module',
107
+ load: () => import('@memberjunction/ng-dashboards/video-studio-dashboards.module').then(() => { })
108
+ };
104
109
  // --- @memberjunction/ng-dashboards → ./work-queue-dashboards.module (1 entries) ---
105
110
  const loadNgDashboardsWorkQueueDashboardsModule = {
106
111
  chunkId: '@memberjunction/ng-dashboards/work-queue-dashboards.module',
@@ -143,6 +148,11 @@ export const LAZY_FEATURE_CONFIG = {
143
148
  'BaseResourceComponent::AIPromptsResource': loadNgDashboardsAiDashboardsModule,
144
149
  'BaseResourceComponent::AnalyticsResource': loadNgDashboardsAiDashboardsModule,
145
150
  'BaseResourceComponent::AutotaggingPipelineResource': loadNgDashboardsAiDashboardsModule,
151
+ 'BaseResourceComponent::ChiefOfStaffApprovals': loadNgDashboardsAiDashboardsModule,
152
+ 'BaseResourceComponent::ChiefOfStaffDashboard': loadNgDashboardsAiDashboardsModule,
153
+ 'BaseResourceComponent::ChiefOfStaffGovernance': loadNgDashboardsAiDashboardsModule,
154
+ 'BaseResourceComponent::ChiefOfStaffOverview': loadNgDashboardsAiDashboardsModule,
155
+ 'BaseResourceComponent::ChiefOfStaffResource': loadNgDashboardsAiDashboardsModule,
146
156
  'BaseResourceComponent::ClusterVisualizationResource': loadNgDashboardsAiDashboardsModule,
147
157
  'BaseResourceComponent::DuplicateDetectionResource': loadNgDashboardsAiDashboardsModule,
148
158
  'BaseResourceComponent::FeaturePipelinesResource': loadNgDashboardsAiDashboardsModule,
@@ -259,6 +269,10 @@ export const LAZY_FEATURE_CONFIG = {
259
269
  'BaseResourceComponent::TestingExplorerResource': loadNgDashboardsTestingDashboardsModule,
260
270
  'BaseResourceComponent::TestingReviewResource': loadNgDashboardsTestingDashboardsModule,
261
271
  'BaseResourceComponent::TestingRunsResource': loadNgDashboardsTestingDashboardsModule,
272
+ // @memberjunction/ng-dashboards → ./video-studio-dashboards.module
273
+ 'BaseResourceComponent::VideoStudioArchetypesResource': loadNgDashboardsVideoStudioDashboardsModule,
274
+ 'BaseResourceComponent::VideoStudioBrandKitsResource': loadNgDashboardsVideoStudioDashboardsModule,
275
+ 'BaseResourceComponent::VideoStudioProductionsResource': loadNgDashboardsVideoStudioDashboardsModule,
262
276
  // @memberjunction/ng-dashboards → ./work-queue-dashboards.module
263
277
  'BaseDashboard::WorkQueueDashboard': loadNgDashboardsWorkQueueDashboardsModule,
264
278
  // @memberjunction/ng-dashboards → ./workflows-dashboards.module
@@ -275,5 +289,5 @@ export const LAZY_FEATURE_CONFIG = {
275
289
  // @memberjunction/ng-file-storage → ./file-storage.module
276
290
  'BaseResourceComponent::FileBrowserResource': loadNgFileStorageFileStorageModule,
277
291
  };
278
- export const LAZY_FEATURE_CONFIG_COUNT = 127;
292
+ export const LAZY_FEATURE_CONFIG_COUNT = 135;
279
293
  //# sourceMappingURL=lazy-feature-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-feature-config.js","sourceRoot":"","sources":["../../src/generated/lazy-feature-config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AUTO-GENERATED FILE — DO NOT EDIT\n * Generated by: mj codegen manifest --lazy-config\n * Regenerate with: npm run mj:manifest:explorer\n *\n * Maps @RegisterClass entries to their lazy-loading chunks using compound keys.\n * Compound key format: \"BaseClassName::Key\" (e.g., \"BaseResourceComponent::HomeDashboard\").\n *\n * When ClassFactory.GetRegistrationAsync() or CreateInstanceAsync() cannot find a\n * registration synchronously, the registered lazy loader builds the compound key and\n * looks it up here to dynamically import the chunk containing the class.\n *\n * Every entry carries an explicit `chunkId` — the dynamic import specifier — because many\n * compound keys share one chunk and the registry must be able to tell those chunks apart.\n * Do NOT collapse these into a shared helper that returns a closure: closures built by the\n * same helper are indistinguishable by identity-adjacent means (e.g. Function.toString()),\n * which silently merges all chunks into one.\n */\n\n// --- @memberjunction/ng-dashboards → ./actions-dashboards.module (6 entries) ---\nconst loadNgDashboardsActionsDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/actions-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/actions-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./ai-dashboards.module (17 entries) ---\nconst loadNgDashboardsAiDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/ai-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/ai-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./archiving-dashboards.module (2 entries) ---\nconst loadNgDashboardsArchivingDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/archiving-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/archiving-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./communication-dashboards.module (7 entries) ---\nconst loadNgDashboardsCommunicationDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/communication-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/communication-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./component-studio-dashboards.module (3 entries) ---\nconst loadNgDashboardsComponentStudioDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/component-studio-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/component-studio-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./core-dashboards.module (40 entries) ---\nconst loadNgDashboardsCoreDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/core-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/core-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./credentials-dashboards.module (6 entries) ---\nconst loadNgDashboardsCredentialsDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/credentials-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/credentials-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./data-explorer-dashboards.module (2 entries) ---\nconst loadNgDashboardsDataExplorerDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/data-explorer-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/data-explorer-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./integration.module (6 entries) ---\nconst loadNgDashboardsIntegrationModule = {\n chunkId: '@memberjunction/ng-dashboards/integration.module',\n load: () => import('@memberjunction/ng-dashboards/integration.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./lists-dashboards.module (5 entries) ---\nconst loadNgDashboardsListsDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/lists-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/lists-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./mcp.module (2 entries) ---\nconst loadNgDashboardsMcpModule = {\n chunkId: '@memberjunction/ng-dashboards/mcp.module',\n load: () => import('@memberjunction/ng-dashboards/mcp.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./module (1 entries) ---\nconst loadNgDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/module',\n load: () => import('@memberjunction/ng-dashboards/module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./predictive-studio-dashboards.module (3 entries) ---\nconst loadNgDashboardsPredictiveStudioDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/predictive-studio-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/predictive-studio-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./routines-dashboards.module (1 entries) ---\nconst loadNgDashboardsRoutinesDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/routines-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/routines-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./rubrics-dashboards.module (5 entries) ---\nconst loadNgDashboardsRubricsDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/rubrics-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/rubrics-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./scheduling-dashboards.module (4 entries) ---\nconst loadNgDashboardsSchedulingDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/scheduling-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/scheduling-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./testing-dashboards.module (6 entries) ---\nconst loadNgDashboardsTestingDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/testing-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/testing-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./work-queue-dashboards.module (1 entries) ---\nconst loadNgDashboardsWorkQueueDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/work-queue-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/work-queue-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./workflows-dashboards.module (3 entries) ---\nconst loadNgDashboardsWorkflowsDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/workflows-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/workflows-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-explorer-settings → ./settings.module (6 entries) ---\nconst loadNgExplorerSettingsSettingsModule = {\n chunkId: '@memberjunction/ng-explorer-settings/settings.module',\n load: () => import('@memberjunction/ng-explorer-settings/settings.module').then(() => {})\n};\n\n// --- @memberjunction/ng-file-storage → ./file-storage.module (1 entries) ---\nconst loadNgFileStorageFileStorageModule = {\n chunkId: '@memberjunction/ng-file-storage/file-storage.module',\n load: () => import('@memberjunction/ng-file-storage/file-storage.module').then(() => {})\n};\n\n/**\n * Complete mapping of compound keys (BaseClassName::Key) to their chunk descriptor.\n * Covers all @RegisterClass decorated classes in lazy-loaded packages.\n */\nexport const LAZY_FEATURE_CONFIG: Record<string, { chunkId: string; load: () => Promise<void> }> = {\n // @memberjunction/ng-dashboards → ./actions-dashboards.module\n 'BaseResourceComponent::ActionExplorerResource': loadNgDashboardsActionsDashboardsModule,\n 'BaseResourceComponent::ActionsCodeResource': loadNgDashboardsActionsDashboardsModule,\n 'BaseResourceComponent::ActionsEntitiesResource': loadNgDashboardsActionsDashboardsModule,\n 'BaseResourceComponent::ActionsMonitorResource': loadNgDashboardsActionsDashboardsModule,\n 'BaseResourceComponent::ActionsOverviewResource': loadNgDashboardsActionsDashboardsModule,\n 'BaseResourceComponent::ActionsSecurityResource': loadNgDashboardsActionsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./ai-dashboards.module\n 'BaseResourceComponent::AIAgentRequestsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIAgentsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIAnalyticsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIConfigResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIModelsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIMonitorResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIPromptsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AnalyticsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AutotaggingPipelineResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::ClusterVisualizationResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::DuplicateDetectionResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::FeaturePipelinesResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::KnowledgeConfigResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::SchedulingResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::Tags': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::VectorManagementResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::VisualizationResource': loadNgDashboardsAiDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./archiving-dashboards.module\n 'BaseResourceComponent::ArchiveConfigResource': loadNgDashboardsArchivingDashboardsModule,\n 'BaseResourceComponent::ArchiveRunsResource': loadNgDashboardsArchivingDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./communication-dashboards.module\n 'BaseDashboard::CommunicationDashboard': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationLogsResource': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationMonitorResource': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationProvidersResource': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationRunsResource': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationTemplatesResource': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationsNewMessageResource': loadNgDashboardsCommunicationDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./component-studio-dashboards.module\n 'BaseDashboard::ComponentStudioDashboard': loadNgDashboardsComponentStudioDashboardsModule,\n 'BaseResourceComponent::ComponentStudioResource': loadNgDashboardsComponentStudioDashboardsModule,\n 'BaseResourceComponent::FormBuilderResource': loadNgDashboardsComponentStudioDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./core-dashboards.module\n 'BaseApplication::HomeApplication': loadNgDashboardsCoreDashboardsModule,\n 'BaseDashboard::EntityAdmin': loadNgDashboardsCoreDashboardsModule,\n 'BaseDashboard::ThemeManagerDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseDashboard::ThemeStudioDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::APIKeysResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::AdminDataSchema': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::AdminDeveloperTools': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::AdminIdentityAccess': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::AdminMonitoring': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::AppStateInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::ApplicationRolesResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::BulkOperationsContainer': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::BulkOperationsOperations': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::BulkOperationsRunHistory': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::ClassRegistryInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::DashboardBrowserResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::DashboardsCategoriesResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::EventMonitorInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::GraphQLConsoleInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::GridWidthLabInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::HomeDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::InteractionOperationsDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::LayoutInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::LazyModuleStatusInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::LoginStudioResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsAuditLogResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsResourceAccessResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsUserAccessResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::QueryBrowserResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::RealtimeRecordingsDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::SettingsExplorerInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::SystemDiagnosticsResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::TabStripLabInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::TelephonyOperationsDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::ThemeManagerResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::ThemeStudioResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryDiffResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryGraphResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryLabelsResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryRestoreResource': loadNgDashboardsCoreDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./credentials-dashboards.module\n 'BaseDashboard::CredentialsDashboard': loadNgDashboardsCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsAuditResource': loadNgDashboardsCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsCategoriesResource': loadNgDashboardsCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsListResource': loadNgDashboardsCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsOverviewResource': loadNgDashboardsCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsTypesResource': loadNgDashboardsCredentialsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./data-explorer-dashboards.module\n 'BaseDashboard::DataExplorer': loadNgDashboardsDataExplorerDashboardsModule,\n 'BaseResourceComponent::DataExplorerResource': loadNgDashboardsDataExplorerDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./integration.module\n 'BaseResourceComponent::IntegrationActivity': loadNgDashboardsIntegrationModule,\n 'BaseResourceComponent::IntegrationConnections': loadNgDashboardsIntegrationModule,\n 'BaseResourceComponent::IntegrationMappingWorkspace': loadNgDashboardsIntegrationModule,\n 'BaseResourceComponent::IntegrationOverview': loadNgDashboardsIntegrationModule,\n 'BaseResourceComponent::IntegrationPipelines': loadNgDashboardsIntegrationModule,\n 'BaseResourceComponent::IntegrationSchedules': loadNgDashboardsIntegrationModule,\n\n // @memberjunction/ng-dashboards → ./lists-dashboards.module\n 'BaseResourceComponent::ListsBrowseResource': loadNgDashboardsListsDashboardsModule,\n 'BaseResourceComponent::ListsCategoriesResource': loadNgDashboardsListsDashboardsModule,\n 'BaseResourceComponent::ListsMyListsResource': loadNgDashboardsListsDashboardsModule,\n 'BaseResourceComponent::ListsOperationsResource': loadNgDashboardsListsDashboardsModule,\n 'BaseResourceComponent::ListsSharedWithMeResource': loadNgDashboardsListsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./mcp.module\n 'BaseDashboard::MCPDashboard': loadNgDashboardsMcpModule,\n 'BaseResourceComponent::MCPResource': loadNgDashboardsMcpModule,\n\n // @memberjunction/ng-dashboards → ./module\n 'BaseResourceComponent::DatabaseDesignerDashboard': loadNgDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./predictive-studio-dashboards.module\n 'BaseResourceComponent::PredictiveStudioModelsResource': loadNgDashboardsPredictiveStudioDashboardsModule,\n 'BaseResourceComponent::PredictiveStudioPredictionsResource': loadNgDashboardsPredictiveStudioDashboardsModule,\n 'BaseResourceComponent::PredictiveStudioStudioResource': loadNgDashboardsPredictiveStudioDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./routines-dashboards.module\n 'BaseResourceComponent::UserRoutines': loadNgDashboardsRoutinesDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./rubrics-dashboards.module\n 'BaseDashboard::RubricScalesDashboard': loadNgDashboardsRubricsDashboardsModule,\n 'BaseDashboard::RubricsDashboard': loadNgDashboardsRubricsDashboardsModule,\n 'BaseResourceComponent::RubricDriftResource': loadNgDashboardsRubricsDashboardsModule,\n 'BaseResourceComponent::RubricScalesResource': loadNgDashboardsRubricsDashboardsModule,\n 'BaseResourceComponent::RubricsResource': loadNgDashboardsRubricsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./scheduling-dashboards.module\n 'BaseDashboard::SchedulingDashboard': loadNgDashboardsSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingActivityResource': loadNgDashboardsSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingDashboardResource': loadNgDashboardsSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingJobsResource': loadNgDashboardsSchedulingDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./testing-dashboards.module\n 'BaseDashboard::TestingDashboard': loadNgDashboardsTestingDashboardsModule,\n 'BaseResourceComponent::TestingAnalyticsResource': loadNgDashboardsTestingDashboardsModule,\n 'BaseResourceComponent::TestingDashboardTabResource': loadNgDashboardsTestingDashboardsModule,\n 'BaseResourceComponent::TestingExplorerResource': loadNgDashboardsTestingDashboardsModule,\n 'BaseResourceComponent::TestingReviewResource': loadNgDashboardsTestingDashboardsModule,\n 'BaseResourceComponent::TestingRunsResource': loadNgDashboardsTestingDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./work-queue-dashboards.module\n 'BaseDashboard::WorkQueueDashboard': loadNgDashboardsWorkQueueDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./workflows-dashboards.module\n 'BaseDashboard::WorkflowsDashboard': loadNgDashboardsWorkflowsDashboardsModule,\n 'BaseResourceComponent::WorkflowRunsResource': loadNgDashboardsWorkflowsDashboardsModule,\n 'BaseResourceComponent::WorkflowsResource': loadNgDashboardsWorkflowsDashboardsModule,\n\n // @memberjunction/ng-explorer-settings → ./settings.module\n 'BaseDashboard::ApplicationManagement': loadNgExplorerSettingsSettingsModule,\n 'BaseDashboard::EntityPermissions': loadNgExplorerSettingsSettingsModule,\n 'BaseDashboard::RoleManagement': loadNgExplorerSettingsSettingsModule,\n 'BaseDashboard::SqlLogging': loadNgExplorerSettingsSettingsModule,\n 'BaseDashboard::UserManagement': loadNgExplorerSettingsSettingsModule,\n 'BaseNavigationComponent::Settings': loadNgExplorerSettingsSettingsModule,\n\n // @memberjunction/ng-file-storage → ./file-storage.module\n 'BaseResourceComponent::FileBrowserResource': loadNgFileStorageFileStorageModule,\n\n};\n\nexport const LAZY_FEATURE_CONFIG_COUNT = 127;\n"]}
1
+ {"version":3,"file":"lazy-feature-config.js","sourceRoot":"","sources":["../../src/generated/lazy-feature-config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AUTO-GENERATED FILE — DO NOT EDIT\n * Generated by: mj codegen manifest --lazy-config\n * Regenerate with: npm run mj:manifest:explorer\n *\n * Maps @RegisterClass entries to their lazy-loading chunks using compound keys.\n * Compound key format: \"BaseClassName::Key\" (e.g., \"BaseResourceComponent::HomeDashboard\").\n *\n * When ClassFactory.GetRegistrationAsync() or CreateInstanceAsync() cannot find a\n * registration synchronously, the registered lazy loader builds the compound key and\n * looks it up here to dynamically import the chunk containing the class.\n *\n * Every entry carries an explicit `chunkId` — the dynamic import specifier — because many\n * compound keys share one chunk and the registry must be able to tell those chunks apart.\n * Do NOT collapse these into a shared helper that returns a closure: closures built by the\n * same helper are indistinguishable by identity-adjacent means (e.g. Function.toString()),\n * which silently merges all chunks into one.\n */\n\n// --- @memberjunction/ng-dashboards → ./actions-dashboards.module (6 entries) ---\nconst loadNgDashboardsActionsDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/actions-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/actions-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./ai-dashboards.module (22 entries) ---\nconst loadNgDashboardsAiDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/ai-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/ai-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./archiving-dashboards.module (2 entries) ---\nconst loadNgDashboardsArchivingDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/archiving-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/archiving-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./communication-dashboards.module (7 entries) ---\nconst loadNgDashboardsCommunicationDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/communication-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/communication-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./component-studio-dashboards.module (3 entries) ---\nconst loadNgDashboardsComponentStudioDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/component-studio-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/component-studio-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./core-dashboards.module (40 entries) ---\nconst loadNgDashboardsCoreDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/core-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/core-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./credentials-dashboards.module (6 entries) ---\nconst loadNgDashboardsCredentialsDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/credentials-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/credentials-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./data-explorer-dashboards.module (2 entries) ---\nconst loadNgDashboardsDataExplorerDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/data-explorer-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/data-explorer-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./integration.module (6 entries) ---\nconst loadNgDashboardsIntegrationModule = {\n chunkId: '@memberjunction/ng-dashboards/integration.module',\n load: () => import('@memberjunction/ng-dashboards/integration.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./lists-dashboards.module (5 entries) ---\nconst loadNgDashboardsListsDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/lists-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/lists-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./mcp.module (2 entries) ---\nconst loadNgDashboardsMcpModule = {\n chunkId: '@memberjunction/ng-dashboards/mcp.module',\n load: () => import('@memberjunction/ng-dashboards/mcp.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./module (1 entries) ---\nconst loadNgDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/module',\n load: () => import('@memberjunction/ng-dashboards/module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./predictive-studio-dashboards.module (3 entries) ---\nconst loadNgDashboardsPredictiveStudioDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/predictive-studio-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/predictive-studio-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./routines-dashboards.module (1 entries) ---\nconst loadNgDashboardsRoutinesDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/routines-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/routines-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./rubrics-dashboards.module (5 entries) ---\nconst loadNgDashboardsRubricsDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/rubrics-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/rubrics-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./scheduling-dashboards.module (4 entries) ---\nconst loadNgDashboardsSchedulingDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/scheduling-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/scheduling-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./testing-dashboards.module (6 entries) ---\nconst loadNgDashboardsTestingDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/testing-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/testing-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./video-studio-dashboards.module (3 entries) ---\nconst loadNgDashboardsVideoStudioDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/video-studio-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/video-studio-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./work-queue-dashboards.module (1 entries) ---\nconst loadNgDashboardsWorkQueueDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/work-queue-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/work-queue-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-dashboards → ./workflows-dashboards.module (3 entries) ---\nconst loadNgDashboardsWorkflowsDashboardsModule = {\n chunkId: '@memberjunction/ng-dashboards/workflows-dashboards.module',\n load: () => import('@memberjunction/ng-dashboards/workflows-dashboards.module').then(() => {})\n};\n\n// --- @memberjunction/ng-explorer-settings → ./settings.module (6 entries) ---\nconst loadNgExplorerSettingsSettingsModule = {\n chunkId: '@memberjunction/ng-explorer-settings/settings.module',\n load: () => import('@memberjunction/ng-explorer-settings/settings.module').then(() => {})\n};\n\n// --- @memberjunction/ng-file-storage → ./file-storage.module (1 entries) ---\nconst loadNgFileStorageFileStorageModule = {\n chunkId: '@memberjunction/ng-file-storage/file-storage.module',\n load: () => import('@memberjunction/ng-file-storage/file-storage.module').then(() => {})\n};\n\n/**\n * Complete mapping of compound keys (BaseClassName::Key) to their chunk descriptor.\n * Covers all @RegisterClass decorated classes in lazy-loaded packages.\n */\nexport const LAZY_FEATURE_CONFIG: Record<string, { chunkId: string; load: () => Promise<void> }> = {\n // @memberjunction/ng-dashboards → ./actions-dashboards.module\n 'BaseResourceComponent::ActionExplorerResource': loadNgDashboardsActionsDashboardsModule,\n 'BaseResourceComponent::ActionsCodeResource': loadNgDashboardsActionsDashboardsModule,\n 'BaseResourceComponent::ActionsEntitiesResource': loadNgDashboardsActionsDashboardsModule,\n 'BaseResourceComponent::ActionsMonitorResource': loadNgDashboardsActionsDashboardsModule,\n 'BaseResourceComponent::ActionsOverviewResource': loadNgDashboardsActionsDashboardsModule,\n 'BaseResourceComponent::ActionsSecurityResource': loadNgDashboardsActionsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./ai-dashboards.module\n 'BaseResourceComponent::AIAgentRequestsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIAgentsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIAnalyticsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIConfigResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIModelsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIMonitorResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AIPromptsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AnalyticsResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::AutotaggingPipelineResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::ChiefOfStaffApprovals': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::ChiefOfStaffDashboard': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::ChiefOfStaffGovernance': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::ChiefOfStaffOverview': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::ChiefOfStaffResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::ClusterVisualizationResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::DuplicateDetectionResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::FeaturePipelinesResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::KnowledgeConfigResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::SchedulingResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::Tags': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::VectorManagementResource': loadNgDashboardsAiDashboardsModule,\n 'BaseResourceComponent::VisualizationResource': loadNgDashboardsAiDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./archiving-dashboards.module\n 'BaseResourceComponent::ArchiveConfigResource': loadNgDashboardsArchivingDashboardsModule,\n 'BaseResourceComponent::ArchiveRunsResource': loadNgDashboardsArchivingDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./communication-dashboards.module\n 'BaseDashboard::CommunicationDashboard': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationLogsResource': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationMonitorResource': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationProvidersResource': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationRunsResource': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationTemplatesResource': loadNgDashboardsCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationsNewMessageResource': loadNgDashboardsCommunicationDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./component-studio-dashboards.module\n 'BaseDashboard::ComponentStudioDashboard': loadNgDashboardsComponentStudioDashboardsModule,\n 'BaseResourceComponent::ComponentStudioResource': loadNgDashboardsComponentStudioDashboardsModule,\n 'BaseResourceComponent::FormBuilderResource': loadNgDashboardsComponentStudioDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./core-dashboards.module\n 'BaseApplication::HomeApplication': loadNgDashboardsCoreDashboardsModule,\n 'BaseDashboard::EntityAdmin': loadNgDashboardsCoreDashboardsModule,\n 'BaseDashboard::ThemeManagerDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseDashboard::ThemeStudioDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::APIKeysResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::AdminDataSchema': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::AdminDeveloperTools': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::AdminIdentityAccess': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::AdminMonitoring': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::AppStateInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::ApplicationRolesResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::BulkOperationsContainer': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::BulkOperationsOperations': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::BulkOperationsRunHistory': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::ClassRegistryInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::DashboardBrowserResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::DashboardsCategoriesResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::EventMonitorInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::GraphQLConsoleInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::GridWidthLabInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::HomeDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::InteractionOperationsDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::LayoutInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::LazyModuleStatusInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::LoginStudioResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsAuditLogResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsResourceAccessResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsUserAccessResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::QueryBrowserResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::RealtimeRecordingsDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::SettingsExplorerInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::SystemDiagnosticsResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::TabStripLabInspector': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::TelephonyOperationsDashboard': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::ThemeManagerResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::ThemeStudioResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryDiffResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryGraphResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryLabelsResource': loadNgDashboardsCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryRestoreResource': loadNgDashboardsCoreDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./credentials-dashboards.module\n 'BaseDashboard::CredentialsDashboard': loadNgDashboardsCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsAuditResource': loadNgDashboardsCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsCategoriesResource': loadNgDashboardsCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsListResource': loadNgDashboardsCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsOverviewResource': loadNgDashboardsCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsTypesResource': loadNgDashboardsCredentialsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./data-explorer-dashboards.module\n 'BaseDashboard::DataExplorer': loadNgDashboardsDataExplorerDashboardsModule,\n 'BaseResourceComponent::DataExplorerResource': loadNgDashboardsDataExplorerDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./integration.module\n 'BaseResourceComponent::IntegrationActivity': loadNgDashboardsIntegrationModule,\n 'BaseResourceComponent::IntegrationConnections': loadNgDashboardsIntegrationModule,\n 'BaseResourceComponent::IntegrationMappingWorkspace': loadNgDashboardsIntegrationModule,\n 'BaseResourceComponent::IntegrationOverview': loadNgDashboardsIntegrationModule,\n 'BaseResourceComponent::IntegrationPipelines': loadNgDashboardsIntegrationModule,\n 'BaseResourceComponent::IntegrationSchedules': loadNgDashboardsIntegrationModule,\n\n // @memberjunction/ng-dashboards → ./lists-dashboards.module\n 'BaseResourceComponent::ListsBrowseResource': loadNgDashboardsListsDashboardsModule,\n 'BaseResourceComponent::ListsCategoriesResource': loadNgDashboardsListsDashboardsModule,\n 'BaseResourceComponent::ListsMyListsResource': loadNgDashboardsListsDashboardsModule,\n 'BaseResourceComponent::ListsOperationsResource': loadNgDashboardsListsDashboardsModule,\n 'BaseResourceComponent::ListsSharedWithMeResource': loadNgDashboardsListsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./mcp.module\n 'BaseDashboard::MCPDashboard': loadNgDashboardsMcpModule,\n 'BaseResourceComponent::MCPResource': loadNgDashboardsMcpModule,\n\n // @memberjunction/ng-dashboards → ./module\n 'BaseResourceComponent::DatabaseDesignerDashboard': loadNgDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./predictive-studio-dashboards.module\n 'BaseResourceComponent::PredictiveStudioModelsResource': loadNgDashboardsPredictiveStudioDashboardsModule,\n 'BaseResourceComponent::PredictiveStudioPredictionsResource': loadNgDashboardsPredictiveStudioDashboardsModule,\n 'BaseResourceComponent::PredictiveStudioStudioResource': loadNgDashboardsPredictiveStudioDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./routines-dashboards.module\n 'BaseResourceComponent::UserRoutines': loadNgDashboardsRoutinesDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./rubrics-dashboards.module\n 'BaseDashboard::RubricScalesDashboard': loadNgDashboardsRubricsDashboardsModule,\n 'BaseDashboard::RubricsDashboard': loadNgDashboardsRubricsDashboardsModule,\n 'BaseResourceComponent::RubricDriftResource': loadNgDashboardsRubricsDashboardsModule,\n 'BaseResourceComponent::RubricScalesResource': loadNgDashboardsRubricsDashboardsModule,\n 'BaseResourceComponent::RubricsResource': loadNgDashboardsRubricsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./scheduling-dashboards.module\n 'BaseDashboard::SchedulingDashboard': loadNgDashboardsSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingActivityResource': loadNgDashboardsSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingDashboardResource': loadNgDashboardsSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingJobsResource': loadNgDashboardsSchedulingDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./testing-dashboards.module\n 'BaseDashboard::TestingDashboard': loadNgDashboardsTestingDashboardsModule,\n 'BaseResourceComponent::TestingAnalyticsResource': loadNgDashboardsTestingDashboardsModule,\n 'BaseResourceComponent::TestingDashboardTabResource': loadNgDashboardsTestingDashboardsModule,\n 'BaseResourceComponent::TestingExplorerResource': loadNgDashboardsTestingDashboardsModule,\n 'BaseResourceComponent::TestingReviewResource': loadNgDashboardsTestingDashboardsModule,\n 'BaseResourceComponent::TestingRunsResource': loadNgDashboardsTestingDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./video-studio-dashboards.module\n 'BaseResourceComponent::VideoStudioArchetypesResource': loadNgDashboardsVideoStudioDashboardsModule,\n 'BaseResourceComponent::VideoStudioBrandKitsResource': loadNgDashboardsVideoStudioDashboardsModule,\n 'BaseResourceComponent::VideoStudioProductionsResource': loadNgDashboardsVideoStudioDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./work-queue-dashboards.module\n 'BaseDashboard::WorkQueueDashboard': loadNgDashboardsWorkQueueDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./workflows-dashboards.module\n 'BaseDashboard::WorkflowsDashboard': loadNgDashboardsWorkflowsDashboardsModule,\n 'BaseResourceComponent::WorkflowRunsResource': loadNgDashboardsWorkflowsDashboardsModule,\n 'BaseResourceComponent::WorkflowsResource': loadNgDashboardsWorkflowsDashboardsModule,\n\n // @memberjunction/ng-explorer-settings → ./settings.module\n 'BaseDashboard::ApplicationManagement': loadNgExplorerSettingsSettingsModule,\n 'BaseDashboard::EntityPermissions': loadNgExplorerSettingsSettingsModule,\n 'BaseDashboard::RoleManagement': loadNgExplorerSettingsSettingsModule,\n 'BaseDashboard::SqlLogging': loadNgExplorerSettingsSettingsModule,\n 'BaseDashboard::UserManagement': loadNgExplorerSettingsSettingsModule,\n 'BaseNavigationComponent::Settings': loadNgExplorerSettingsSettingsModule,\n\n // @memberjunction/ng-file-storage → ./file-storage.module\n 'BaseResourceComponent::FileBrowserResource': loadNgFileStorageFileStorageModule,\n\n};\n\nexport const LAZY_FEATURE_CONFIG_COUNT = 135;\n"]}