@memberjunction/ng-explorer-core 5.41.0 → 5.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/lazy-feature-config.d.ts +1 -1
- package/dist/generated/lazy-feature-config.d.ts.map +1 -1
- package/dist/generated/lazy-feature-config.js +5 -2
- package/dist/generated/lazy-feature-config.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts +7 -0
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js +42 -22
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts +179 -0
- package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/livekit-room-resource.component.js +1197 -0
- package/dist/lib/resource-wrappers/livekit-room-resource.component.js.map +1 -0
- package/dist/lib/shell/components/header/app-nav.component.js +7 -4
- package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
- package/dist/lib/shell/components/header/app-switcher.component.js +11 -6
- package/dist/lib/shell/components/header/app-switcher.component.js.map +1 -1
- package/dist/lib/shell/shell.module.d.ts +1 -1
- package/dist/lib/shell/shell.module.d.ts.map +1 -1
- package/dist/lib/shell/shell.module.js +3 -1
- package/dist/lib/shell/shell.module.js.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.d.ts +6 -0
- package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.js +32 -1
- package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
- package/dist/module.d.ts +33 -31
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +11 -4
- package/dist/module.js.map +1 -1
- package/package.json +47 -46
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
* Covers all @RegisterClass decorated classes in lazy-loaded packages.
|
|
16
16
|
*/
|
|
17
17
|
export declare const LAZY_FEATURE_CONFIG: Record<string, () => Promise<void>>;
|
|
18
|
-
export declare const LAZY_FEATURE_CONFIG_COUNT =
|
|
18
|
+
export declare const LAZY_FEATURE_CONFIG_COUNT = 104;
|
|
19
19
|
//# 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;;;;;;;;;;;GAWG;AAuDH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"lazy-feature-config.d.ts","sourceRoot":"","sources":["../../src/generated/lazy-feature-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAuDH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAyInE,CAAC;AAEF,eAAO,MAAM,yBAAyB,MAAM,CAAC"}
|
|
@@ -22,7 +22,7 @@ const loadAiDashboardsModule = featureLoader(() => import('@memberjunction/ng-da
|
|
|
22
22
|
const loadCommunicationDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/communication-dashboards.module'));
|
|
23
23
|
// --- @memberjunction/ng-dashboards → ./component-studio-dashboards.module (3 entries) ---
|
|
24
24
|
const loadComponentStudioDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/component-studio-dashboards.module'));
|
|
25
|
-
// --- @memberjunction/ng-dashboards → ./core-dashboards.module (
|
|
25
|
+
// --- @memberjunction/ng-dashboards → ./core-dashboards.module (29 entries) ---
|
|
26
26
|
const loadCoreDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/core-dashboards.module'));
|
|
27
27
|
// --- @memberjunction/ng-dashboards → ./credentials-dashboards.module (6 entries) ---
|
|
28
28
|
const loadCredentialsDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/credentials-dashboards.module'));
|
|
@@ -98,6 +98,9 @@ export const LAZY_FEATURE_CONFIG = {
|
|
|
98
98
|
'BaseResourceComponent::APIKeysResource': loadCoreDashboardsModule,
|
|
99
99
|
'BaseResourceComponent::ApplicationRolesResource': loadCoreDashboardsModule,
|
|
100
100
|
'BaseResourceComponent::AppStateInspector': loadCoreDashboardsModule,
|
|
101
|
+
'BaseResourceComponent::BulkOperationsContainer': loadCoreDashboardsModule,
|
|
102
|
+
'BaseResourceComponent::BulkOperationsOperations': loadCoreDashboardsModule,
|
|
103
|
+
'BaseResourceComponent::BulkOperationsRunHistory': loadCoreDashboardsModule,
|
|
101
104
|
'BaseResourceComponent::ClassRegistryInspector': loadCoreDashboardsModule,
|
|
102
105
|
'BaseResourceComponent::DashboardBrowserResource': loadCoreDashboardsModule,
|
|
103
106
|
'BaseResourceComponent::EventMonitorInspector': loadCoreDashboardsModule,
|
|
@@ -169,5 +172,5 @@ export const LAZY_FEATURE_CONFIG = {
|
|
|
169
172
|
// @memberjunction/ng-react → .
|
|
170
173
|
'RuntimeUtilities::RuntimeUtilities': loadNgReact,
|
|
171
174
|
};
|
|
172
|
-
export const LAZY_FEATURE_CONFIG_COUNT =
|
|
175
|
+
export const LAZY_FEATURE_CONFIG_COUNT = 104;
|
|
173
176
|
//# 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\n/** Helper to create a loader that all entries in a feature share. */\nfunction featureLoader(importFn: () => Promise<unknown>): () => Promise<void> {\n return () => importFn().then(() => {});\n}\n\n// --- @memberjunction/ng-dashboards → ./actions-dashboards.module (7 entries) ---\nconst loadActionsDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/actions-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./ai-dashboards.module (16 entries) ---\nconst loadAiDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/ai-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./communication-dashboards.module (7 entries) ---\nconst loadCommunicationDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/communication-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./component-studio-dashboards.module (3 entries) ---\nconst loadComponentStudioDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/component-studio-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./core-dashboards.module (26 entries) ---\nconst loadCoreDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/core-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./credentials-dashboards.module (6 entries) ---\nconst loadCredentialsDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/credentials-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./data-explorer-dashboards.module (2 entries) ---\nconst loadDataExplorerDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/data-explorer-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./integration.module (6 entries) ---\nconst loadIntegrationModule = featureLoader(() => import('@memberjunction/ng-dashboards/integration.module'));\n\n// --- @memberjunction/ng-dashboards → ./lists-dashboards.module (5 entries) ---\nconst loadListsDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/lists-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./mcp.module (2 entries) ---\nconst loadMcpModule = featureLoader(() => import('@memberjunction/ng-dashboards/mcp.module'));\n\n// --- @memberjunction/ng-dashboards → ./module (3 entries) ---\nconst loadModule = featureLoader(() => import('@memberjunction/ng-dashboards/module'));\n\n// --- @memberjunction/ng-dashboards → ./scheduling-dashboards.module (4 entries) ---\nconst loadSchedulingDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/scheduling-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./testing-dashboards.module (6 entries) ---\nconst loadTestingDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/testing-dashboards.module'));\n\n// --- @memberjunction/ng-explorer-settings → ./settings.module (6 entries) ---\nconst loadSettingsModule = featureLoader(() => import('@memberjunction/ng-explorer-settings/settings.module'));\n\n// --- @memberjunction/ng-file-storage → ./file-storage.module (1 entries) ---\nconst loadFileStorageModule = featureLoader(() => import('@memberjunction/ng-file-storage/file-storage.module'));\n\n// --- @memberjunction/ng-react → . (1 entries) ---\nconst loadNgReact = featureLoader(() => import('@memberjunction/ng-react'));\n\n/**\n * Complete mapping of compound keys (BaseClassName::Key) to lazy-loading functions.\n * Covers all @RegisterClass decorated classes in lazy-loaded packages.\n */\nexport const LAZY_FEATURE_CONFIG: Record<string, () => Promise<void>> = {\n // @memberjunction/ng-dashboards → ./actions-dashboards.module\n 'BaseResourceComponent::ActionExplorerResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsCodeResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsEntitiesResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsMonitorResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsOverviewResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsScheduleResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsSecurityResource': loadActionsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./ai-dashboards.module\n 'BaseResourceComponent::AIAgentRequestsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIAgentsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIAnalyticsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIConfigResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIModelsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIMonitorResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIPromptsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AnalyticsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AutotaggingPipelineResource': loadAiDashboardsModule,\n 'BaseResourceComponent::ClusterVisualizationResource': loadAiDashboardsModule,\n 'BaseResourceComponent::DuplicateDetectionResource': loadAiDashboardsModule,\n 'BaseResourceComponent::KnowledgeConfigResource': loadAiDashboardsModule,\n 'BaseResourceComponent::SchedulingResource': loadAiDashboardsModule,\n 'BaseResourceComponent::Tags': loadAiDashboardsModule,\n 'BaseResourceComponent::VectorManagementResource': loadAiDashboardsModule,\n 'BaseResourceComponent::VisualizationResource': loadAiDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./communication-dashboards.module\n 'BaseDashboard::CommunicationDashboard': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationLogsResource': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationMonitorResource': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationProvidersResource': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationRunsResource': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationsNewMessageResource': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationTemplatesResource': loadCommunicationDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./component-studio-dashboards.module\n 'BaseDashboard::ComponentStudioDashboard': loadComponentStudioDashboardsModule,\n 'BaseResourceComponent::ComponentStudioResource': loadComponentStudioDashboardsModule,\n 'BaseResourceComponent::FormBuilderResource': loadComponentStudioDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./core-dashboards.module\n 'BaseApplication::HomeApplication': loadCoreDashboardsModule,\n 'BaseDashboard::EntityAdmin': loadCoreDashboardsModule,\n 'BaseResourceComponent::AdminDataSchema': loadCoreDashboardsModule,\n 'BaseResourceComponent::AdminDeveloperTools': loadCoreDashboardsModule,\n 'BaseResourceComponent::AdminIdentityAccess': loadCoreDashboardsModule,\n 'BaseResourceComponent::AdminMonitoring': loadCoreDashboardsModule,\n 'BaseResourceComponent::APIKeysResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::ApplicationRolesResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::AppStateInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::ClassRegistryInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::DashboardBrowserResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::EventMonitorInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::GraphQLConsoleInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::HomeDashboard': loadCoreDashboardsModule,\n 'BaseResourceComponent::LayoutInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::LazyModuleStatusInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsAuditLogResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsResourceAccessResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsUserAccessResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::QueryBrowserResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::SettingsExplorerInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::SystemDiagnosticsResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryDiffResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryGraphResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryLabelsResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryRestoreResource': loadCoreDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./credentials-dashboards.module\n 'BaseDashboard::CredentialsDashboard': loadCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsAuditResource': loadCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsCategoriesResource': loadCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsListResource': loadCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsOverviewResource': loadCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsTypesResource': loadCredentialsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./data-explorer-dashboards.module\n 'BaseDashboard::DataExplorer': loadDataExplorerDashboardsModule,\n 'BaseResourceComponent::DataExplorerResource': loadDataExplorerDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./integration.module\n 'BaseResourceComponent::IntegrationActivity': loadIntegrationModule,\n 'BaseResourceComponent::IntegrationConnections': loadIntegrationModule,\n 'BaseResourceComponent::IntegrationMappingWorkspace': loadIntegrationModule,\n 'BaseResourceComponent::IntegrationOverview': loadIntegrationModule,\n 'BaseResourceComponent::IntegrationPipelines': loadIntegrationModule,\n 'BaseResourceComponent::IntegrationSchedules': loadIntegrationModule,\n\n // @memberjunction/ng-dashboards → ./lists-dashboards.module\n 'BaseResourceComponent::ListsBrowseResource': loadListsDashboardsModule,\n 'BaseResourceComponent::ListsCategoriesResource': loadListsDashboardsModule,\n 'BaseResourceComponent::ListsMyListsResource': loadListsDashboardsModule,\n 'BaseResourceComponent::ListsOperationsResource': loadListsDashboardsModule,\n 'BaseResourceComponent::ListsSharedWithMeResource': loadListsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./mcp.module\n 'BaseDashboard::MCPDashboard': loadMcpModule,\n 'BaseResourceComponent::MCPResource': loadMcpModule,\n\n // @memberjunction/ng-dashboards → ./module\n 'BaseResourceComponent::ArchiveConfigResource': loadModule,\n 'BaseResourceComponent::ArchiveRunsResource': loadModule,\n 'BaseResourceComponent::DatabaseDesignerDashboard': loadModule,\n\n // @memberjunction/ng-dashboards → ./scheduling-dashboards.module\n 'BaseDashboard::SchedulingDashboard': loadSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingActivityResource': loadSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingDashboardResource': loadSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingJobsResource': loadSchedulingDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./testing-dashboards.module\n 'BaseDashboard::TestingDashboard': loadTestingDashboardsModule,\n 'BaseResourceComponent::TestingAnalyticsResource': loadTestingDashboardsModule,\n 'BaseResourceComponent::TestingDashboardTabResource': loadTestingDashboardsModule,\n 'BaseResourceComponent::TestingExplorerResource': loadTestingDashboardsModule,\n 'BaseResourceComponent::TestingReviewResource': loadTestingDashboardsModule,\n 'BaseResourceComponent::TestingRunsResource': loadTestingDashboardsModule,\n\n // @memberjunction/ng-explorer-settings → ./settings.module\n 'BaseDashboard::ApplicationManagement': loadSettingsModule,\n 'BaseDashboard::EntityPermissions': loadSettingsModule,\n 'BaseDashboard::RoleManagement': loadSettingsModule,\n 'BaseDashboard::SqlLogging': loadSettingsModule,\n 'BaseDashboard::UserManagement': loadSettingsModule,\n 'BaseNavigationComponent::Settings': loadSettingsModule,\n\n // @memberjunction/ng-file-storage → ./file-storage.module\n 'BaseResourceComponent::FileBrowserResource': loadFileStorageModule,\n\n // @memberjunction/ng-react → .\n 'RuntimeUtilities::RuntimeUtilities': loadNgReact,\n\n};\n\nexport const LAZY_FEATURE_CONFIG_COUNT = 101;\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\n/** Helper to create a loader that all entries in a feature share. */\nfunction featureLoader(importFn: () => Promise<unknown>): () => Promise<void> {\n return () => importFn().then(() => {});\n}\n\n// --- @memberjunction/ng-dashboards → ./actions-dashboards.module (7 entries) ---\nconst loadActionsDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/actions-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./ai-dashboards.module (16 entries) ---\nconst loadAiDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/ai-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./communication-dashboards.module (7 entries) ---\nconst loadCommunicationDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/communication-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./component-studio-dashboards.module (3 entries) ---\nconst loadComponentStudioDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/component-studio-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./core-dashboards.module (29 entries) ---\nconst loadCoreDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/core-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./credentials-dashboards.module (6 entries) ---\nconst loadCredentialsDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/credentials-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./data-explorer-dashboards.module (2 entries) ---\nconst loadDataExplorerDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/data-explorer-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./integration.module (6 entries) ---\nconst loadIntegrationModule = featureLoader(() => import('@memberjunction/ng-dashboards/integration.module'));\n\n// --- @memberjunction/ng-dashboards → ./lists-dashboards.module (5 entries) ---\nconst loadListsDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/lists-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./mcp.module (2 entries) ---\nconst loadMcpModule = featureLoader(() => import('@memberjunction/ng-dashboards/mcp.module'));\n\n// --- @memberjunction/ng-dashboards → ./module (3 entries) ---\nconst loadModule = featureLoader(() => import('@memberjunction/ng-dashboards/module'));\n\n// --- @memberjunction/ng-dashboards → ./scheduling-dashboards.module (4 entries) ---\nconst loadSchedulingDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/scheduling-dashboards.module'));\n\n// --- @memberjunction/ng-dashboards → ./testing-dashboards.module (6 entries) ---\nconst loadTestingDashboardsModule = featureLoader(() => import('@memberjunction/ng-dashboards/testing-dashboards.module'));\n\n// --- @memberjunction/ng-explorer-settings → ./settings.module (6 entries) ---\nconst loadSettingsModule = featureLoader(() => import('@memberjunction/ng-explorer-settings/settings.module'));\n\n// --- @memberjunction/ng-file-storage → ./file-storage.module (1 entries) ---\nconst loadFileStorageModule = featureLoader(() => import('@memberjunction/ng-file-storage/file-storage.module'));\n\n// --- @memberjunction/ng-react → . (1 entries) ---\nconst loadNgReact = featureLoader(() => import('@memberjunction/ng-react'));\n\n/**\n * Complete mapping of compound keys (BaseClassName::Key) to lazy-loading functions.\n * Covers all @RegisterClass decorated classes in lazy-loaded packages.\n */\nexport const LAZY_FEATURE_CONFIG: Record<string, () => Promise<void>> = {\n // @memberjunction/ng-dashboards → ./actions-dashboards.module\n 'BaseResourceComponent::ActionExplorerResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsCodeResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsEntitiesResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsMonitorResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsOverviewResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsScheduleResource': loadActionsDashboardsModule,\n 'BaseResourceComponent::ActionsSecurityResource': loadActionsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./ai-dashboards.module\n 'BaseResourceComponent::AIAgentRequestsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIAgentsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIAnalyticsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIConfigResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIModelsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIMonitorResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AIPromptsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AnalyticsResource': loadAiDashboardsModule,\n 'BaseResourceComponent::AutotaggingPipelineResource': loadAiDashboardsModule,\n 'BaseResourceComponent::ClusterVisualizationResource': loadAiDashboardsModule,\n 'BaseResourceComponent::DuplicateDetectionResource': loadAiDashboardsModule,\n 'BaseResourceComponent::KnowledgeConfigResource': loadAiDashboardsModule,\n 'BaseResourceComponent::SchedulingResource': loadAiDashboardsModule,\n 'BaseResourceComponent::Tags': loadAiDashboardsModule,\n 'BaseResourceComponent::VectorManagementResource': loadAiDashboardsModule,\n 'BaseResourceComponent::VisualizationResource': loadAiDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./communication-dashboards.module\n 'BaseDashboard::CommunicationDashboard': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationLogsResource': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationMonitorResource': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationProvidersResource': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationRunsResource': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationsNewMessageResource': loadCommunicationDashboardsModule,\n 'BaseResourceComponent::CommunicationTemplatesResource': loadCommunicationDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./component-studio-dashboards.module\n 'BaseDashboard::ComponentStudioDashboard': loadComponentStudioDashboardsModule,\n 'BaseResourceComponent::ComponentStudioResource': loadComponentStudioDashboardsModule,\n 'BaseResourceComponent::FormBuilderResource': loadComponentStudioDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./core-dashboards.module\n 'BaseApplication::HomeApplication': loadCoreDashboardsModule,\n 'BaseDashboard::EntityAdmin': loadCoreDashboardsModule,\n 'BaseResourceComponent::AdminDataSchema': loadCoreDashboardsModule,\n 'BaseResourceComponent::AdminDeveloperTools': loadCoreDashboardsModule,\n 'BaseResourceComponent::AdminIdentityAccess': loadCoreDashboardsModule,\n 'BaseResourceComponent::AdminMonitoring': loadCoreDashboardsModule,\n 'BaseResourceComponent::APIKeysResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::ApplicationRolesResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::AppStateInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::BulkOperationsContainer': loadCoreDashboardsModule,\n 'BaseResourceComponent::BulkOperationsOperations': loadCoreDashboardsModule,\n 'BaseResourceComponent::BulkOperationsRunHistory': loadCoreDashboardsModule,\n 'BaseResourceComponent::ClassRegistryInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::DashboardBrowserResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::EventMonitorInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::GraphQLConsoleInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::HomeDashboard': loadCoreDashboardsModule,\n 'BaseResourceComponent::LayoutInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::LazyModuleStatusInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsAuditLogResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsResourceAccessResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::PermissionsUserAccessResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::QueryBrowserResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::SettingsExplorerInspector': loadCoreDashboardsModule,\n 'BaseResourceComponent::SystemDiagnosticsResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryDiffResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryGraphResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryLabelsResource': loadCoreDashboardsModule,\n 'BaseResourceComponent::VersionHistoryRestoreResource': loadCoreDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./credentials-dashboards.module\n 'BaseDashboard::CredentialsDashboard': loadCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsAuditResource': loadCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsCategoriesResource': loadCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsListResource': loadCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsOverviewResource': loadCredentialsDashboardsModule,\n 'BaseResourceComponent::CredentialsTypesResource': loadCredentialsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./data-explorer-dashboards.module\n 'BaseDashboard::DataExplorer': loadDataExplorerDashboardsModule,\n 'BaseResourceComponent::DataExplorerResource': loadDataExplorerDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./integration.module\n 'BaseResourceComponent::IntegrationActivity': loadIntegrationModule,\n 'BaseResourceComponent::IntegrationConnections': loadIntegrationModule,\n 'BaseResourceComponent::IntegrationMappingWorkspace': loadIntegrationModule,\n 'BaseResourceComponent::IntegrationOverview': loadIntegrationModule,\n 'BaseResourceComponent::IntegrationPipelines': loadIntegrationModule,\n 'BaseResourceComponent::IntegrationSchedules': loadIntegrationModule,\n\n // @memberjunction/ng-dashboards → ./lists-dashboards.module\n 'BaseResourceComponent::ListsBrowseResource': loadListsDashboardsModule,\n 'BaseResourceComponent::ListsCategoriesResource': loadListsDashboardsModule,\n 'BaseResourceComponent::ListsMyListsResource': loadListsDashboardsModule,\n 'BaseResourceComponent::ListsOperationsResource': loadListsDashboardsModule,\n 'BaseResourceComponent::ListsSharedWithMeResource': loadListsDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./mcp.module\n 'BaseDashboard::MCPDashboard': loadMcpModule,\n 'BaseResourceComponent::MCPResource': loadMcpModule,\n\n // @memberjunction/ng-dashboards → ./module\n 'BaseResourceComponent::ArchiveConfigResource': loadModule,\n 'BaseResourceComponent::ArchiveRunsResource': loadModule,\n 'BaseResourceComponent::DatabaseDesignerDashboard': loadModule,\n\n // @memberjunction/ng-dashboards → ./scheduling-dashboards.module\n 'BaseDashboard::SchedulingDashboard': loadSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingActivityResource': loadSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingDashboardResource': loadSchedulingDashboardsModule,\n 'BaseResourceComponent::SchedulingJobsResource': loadSchedulingDashboardsModule,\n\n // @memberjunction/ng-dashboards → ./testing-dashboards.module\n 'BaseDashboard::TestingDashboard': loadTestingDashboardsModule,\n 'BaseResourceComponent::TestingAnalyticsResource': loadTestingDashboardsModule,\n 'BaseResourceComponent::TestingDashboardTabResource': loadTestingDashboardsModule,\n 'BaseResourceComponent::TestingExplorerResource': loadTestingDashboardsModule,\n 'BaseResourceComponent::TestingReviewResource': loadTestingDashboardsModule,\n 'BaseResourceComponent::TestingRunsResource': loadTestingDashboardsModule,\n\n // @memberjunction/ng-explorer-settings → ./settings.module\n 'BaseDashboard::ApplicationManagement': loadSettingsModule,\n 'BaseDashboard::EntityPermissions': loadSettingsModule,\n 'BaseDashboard::RoleManagement': loadSettingsModule,\n 'BaseDashboard::SqlLogging': loadSettingsModule,\n 'BaseDashboard::UserManagement': loadSettingsModule,\n 'BaseNavigationComponent::Settings': loadSettingsModule,\n\n // @memberjunction/ng-file-storage → ./file-storage.module\n 'BaseResourceComponent::FileBrowserResource': loadFileStorageModule,\n\n // @memberjunction/ng-react → .\n 'RuntimeUtilities::RuntimeUtilities': loadNgReact,\n\n};\n\nexport const LAZY_FEATURE_CONFIG_COUNT = 104;\n"]}
|
|
@@ -79,6 +79,13 @@ export declare class ChatCollectionsResource extends BaseResourceComponent imple
|
|
|
79
79
|
versionNumber?: number;
|
|
80
80
|
versionId?: string;
|
|
81
81
|
}): void;
|
|
82
|
+
/**
|
|
83
|
+
* Open the conversation an artifact was produced in (from the Collections view's
|
|
84
|
+
* right-click "Open source conversation"). Routes to the Conversations nav item.
|
|
85
|
+
*/
|
|
86
|
+
onOpenConversation(event: {
|
|
87
|
+
conversationId: string;
|
|
88
|
+
}): void;
|
|
82
89
|
/**
|
|
83
90
|
* Handle entity record open request from artifact viewer (from React component grids).
|
|
84
91
|
* Uses NavigationService to open the record in a new tab.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-collections-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/chat-collections-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,MAAM,EAAE,SAAS,EAA6B,MAAM,eAAe,CAAC;AAC3G,OAAO,EAAE,YAAY,EAAY,YAAY,EAAW,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAA+B,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EAAmD,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;;AAI3H;;;;;GAKG;AACH,
|
|
1
|
+
{"version":3,"file":"chat-collections-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/chat-collections-resource.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,31 +17,34 @@ import * as i0 from "@angular/core";
|
|
|
17
17
|
import * as i1 from "@memberjunction/ng-conversations";
|
|
18
18
|
import * as i2 from "@memberjunction/ng-artifacts";
|
|
19
19
|
function ChatCollectionsResource_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
-
i0.ɵɵ
|
|
20
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
21
|
+
i0.ɵɵelementStart(0, "mj-collections-full-view", 3);
|
|
22
|
+
i0.ɵɵlistener("openConversationRequested", function ChatCollectionsResource_Conditional_2_Template_mj_collections_full_view_openConversationRequested_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOpenConversation($event)); });
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
21
24
|
} if (rf & 2) {
|
|
22
|
-
const
|
|
23
|
-
i0.ɵɵproperty("environmentId",
|
|
25
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
26
|
+
i0.ɵɵproperty("environmentId", ctx_r1.environmentId)("currentUser", ctx_r1.currentUser);
|
|
24
27
|
} }
|
|
25
28
|
function ChatCollectionsResource_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
-
const
|
|
27
|
-
i0.ɵɵelementStart(0, "div",
|
|
28
|
-
i0.ɵɵlistener("mousedown", function ChatCollectionsResource_Conditional_3_Conditional_0_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(
|
|
29
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
30
|
+
i0.ɵɵelementStart(0, "div", 7);
|
|
31
|
+
i0.ɵɵlistener("mousedown", function ChatCollectionsResource_Conditional_3_Conditional_0_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onResizeStart($event)); });
|
|
29
32
|
i0.ɵɵelementEnd();
|
|
30
33
|
} }
|
|
31
34
|
function ChatCollectionsResource_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
-
const
|
|
33
|
-
i0.ɵɵconditionalCreate(0, ChatCollectionsResource_Conditional_3_Conditional_0_Template, 1, 0, "div",
|
|
34
|
-
i0.ɵɵelementStart(1, "div",
|
|
35
|
-
i0.ɵɵlistener("closed", function ChatCollectionsResource_Conditional_3_Template_mj_artifact_viewer_panel_closed_2_listener() { i0.ɵɵrestoreView(
|
|
35
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
36
|
+
i0.ɵɵconditionalCreate(0, ChatCollectionsResource_Conditional_3_Conditional_0_Template, 1, 0, "div", 4);
|
|
37
|
+
i0.ɵɵelementStart(1, "div", 5)(2, "mj-artifact-viewer-panel", 6);
|
|
38
|
+
i0.ɵɵlistener("closed", function ChatCollectionsResource_Conditional_3_Template_mj_artifact_viewer_panel_closed_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeArtifactPanel()); })("maximizeToggled", function ChatCollectionsResource_Conditional_3_Template_mj_artifact_viewer_panel_maximizeToggled_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleMaximizeArtifactPanel()); })("navigateToLink", function ChatCollectionsResource_Conditional_3_Template_mj_artifact_viewer_panel_navigateToLink_2_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onNavigateToLink($event)); })("openEntityRecord", function ChatCollectionsResource_Conditional_3_Template_mj_artifact_viewer_panel_openEntityRecord_2_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOpenEntityRecord($event)); })("analyzeRequested", function ChatCollectionsResource_Conditional_3_Template_mj_artifact_viewer_panel_analyzeRequested_2_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAnalyzeRequested($event)); });
|
|
36
39
|
i0.ɵɵelementEnd()();
|
|
37
40
|
} if (rf & 2) {
|
|
38
|
-
const
|
|
39
|
-
i0.ɵɵconditional(!
|
|
41
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
42
|
+
i0.ɵɵconditional(!ctx_r1.isArtifactPanelMaximized ? 0 : -1);
|
|
40
43
|
i0.ɵɵadvance();
|
|
41
|
-
i0.ɵɵstyleProp("width",
|
|
42
|
-
i0.ɵɵclassProp("maximized",
|
|
44
|
+
i0.ɵɵstyleProp("width", ctx_r1.artifactPanelWidth, "%");
|
|
45
|
+
i0.ɵɵclassProp("maximized", ctx_r1.isArtifactPanelMaximized);
|
|
43
46
|
i0.ɵɵadvance();
|
|
44
|
-
i0.ɵɵproperty("artifactId",
|
|
47
|
+
i0.ɵɵproperty("artifactId", ctx_r1.activeArtifactId)("currentUser", ctx_r1.currentUser)("environmentId", ctx_r1.environmentId)("versionNumber", ctx_r1.activeVersionNumber ?? undefined)("showSaveToCollection", false)("viewContext", "collection")("contextCollectionId", ctx_r1.activeCollectionId ?? undefined)("canShare", ctx_r1.canShareActiveArtifact)("canEdit", ctx_r1.canEditActiveArtifact)("isMaximized", ctx_r1.isArtifactPanelMaximized);
|
|
45
48
|
} }
|
|
46
49
|
/**
|
|
47
50
|
* Chat Collections Resource - displays the collections full view for tab-based display
|
|
@@ -316,8 +319,26 @@ let ChatCollectionsResource = class ChatCollectionsResource extends BaseResource
|
|
|
316
319
|
params['versionNumber'] = event.versionNumber;
|
|
317
320
|
}
|
|
318
321
|
}
|
|
322
|
+
// Also deliver as query params so an already-open/cached target tab applies them
|
|
323
|
+
// (configuration alone is only read by a fresh tab's ngOnInit).
|
|
324
|
+
const queryParams = {};
|
|
325
|
+
for (const [key, value] of Object.entries(params)) {
|
|
326
|
+
if (value != null)
|
|
327
|
+
queryParams[key] = String(value);
|
|
328
|
+
}
|
|
319
329
|
// Navigate using the generic nav item method
|
|
320
|
-
this.navigationService.OpenNavItemByName(navItemName, params);
|
|
330
|
+
this.navigationService.OpenNavItemByName(navItemName, params, undefined, { queryParams });
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Open the conversation an artifact was produced in (from the Collections view's
|
|
334
|
+
* right-click "Open source conversation"). Routes to the Conversations nav item.
|
|
335
|
+
*/
|
|
336
|
+
onOpenConversation(event) {
|
|
337
|
+
// Pass conversationId BOTH as configuration (read by a fresh tab's ngOnInit) AND as
|
|
338
|
+
// queryParams (drives OnQueryParamsChanged on the already-open/cached Conversations tab).
|
|
339
|
+
// Without the queryParams, switching to an existing Conversations tab opens the app but
|
|
340
|
+
// never selects the conversation, since the cached component doesn't re-run ngOnInit.
|
|
341
|
+
this.navigationService.OpenNavItemByName('Conversations', { conversationId: event.conversationId }, undefined, { queryParams: { conversationId: event.conversationId } });
|
|
321
342
|
}
|
|
322
343
|
/**
|
|
323
344
|
* Handle entity record open request from artifact viewer (from React component grids).
|
|
@@ -341,9 +362,7 @@ let ChatCollectionsResource = class ChatCollectionsResource extends BaseResource
|
|
|
341
362
|
currentUser: this.currentUser,
|
|
342
363
|
environmentId: this.environmentId,
|
|
343
364
|
});
|
|
344
|
-
await this.navigationService.OpenNavItemByName('Conversations', {
|
|
345
|
-
conversationId: result.conversationId,
|
|
346
|
-
});
|
|
365
|
+
await this.navigationService.OpenNavItemByName('Conversations', { conversationId: result.conversationId }, undefined, { queryParams: { conversationId: result.conversationId } });
|
|
347
366
|
}
|
|
348
367
|
catch (error) {
|
|
349
368
|
const message = error instanceof Error ? error.message : 'Failed to start analysis conversation';
|
|
@@ -411,7 +430,7 @@ let ChatCollectionsResource = class ChatCollectionsResource extends BaseResource
|
|
|
411
430
|
document.body.style.userSelect = '';
|
|
412
431
|
}
|
|
413
432
|
static ɵfac = /*@__PURE__*/ (() => { let ɵChatCollectionsResource_BaseFactory; return function ChatCollectionsResource_Factory(__ngFactoryType__) { return (ɵChatCollectionsResource_BaseFactory || (ɵChatCollectionsResource_BaseFactory = i0.ɵɵgetInheritedFactory(ChatCollectionsResource)))(__ngFactoryType__ || ChatCollectionsResource); }; })();
|
|
414
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ChatCollectionsResource, selectors: [["mj-chat-collections-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 4, consts: [[1, "chat-collections-container"], [1, "collections-main"], [3, "environmentId", "currentUser"], [1, "artifact-panel-resize-handle"], [1, "artifact-panel"], [3, "closed", "maximizeToggled", "navigateToLink", "openEntityRecord", "analyzeRequested", "artifactId", "currentUser", "environmentId", "versionNumber", "showSaveToCollection", "viewContext", "contextCollectionId", "canShare", "canEdit", "isMaximized"], [1, "artifact-panel-resize-handle", 3, "mousedown"]], template: function ChatCollectionsResource_Template(rf, ctx) { if (rf & 1) {
|
|
433
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ChatCollectionsResource, selectors: [["mj-chat-collections-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 4, consts: [[1, "chat-collections-container"], [1, "collections-main"], [3, "environmentId", "currentUser"], [3, "openConversationRequested", "environmentId", "currentUser"], [1, "artifact-panel-resize-handle"], [1, "artifact-panel"], [3, "closed", "maximizeToggled", "navigateToLink", "openEntityRecord", "analyzeRequested", "artifactId", "currentUser", "environmentId", "versionNumber", "showSaveToCollection", "viewContext", "contextCollectionId", "canShare", "canEdit", "isMaximized"], [1, "artifact-panel-resize-handle", 3, "mousedown"]], template: function ChatCollectionsResource_Template(rf, ctx) { if (rf & 1) {
|
|
415
434
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
416
435
|
i0.ɵɵconditionalCreate(2, ChatCollectionsResource_Conditional_2_Template, 1, 2, "mj-collections-full-view", 2);
|
|
417
436
|
i0.ɵɵelementEnd();
|
|
@@ -439,7 +458,8 @@ export { ChatCollectionsResource };
|
|
|
439
458
|
@if (currentUser) {
|
|
440
459
|
<mj-collections-full-view
|
|
441
460
|
[environmentId]="environmentId"
|
|
442
|
-
[currentUser]="currentUser"
|
|
461
|
+
[currentUser]="currentUser"
|
|
462
|
+
(openConversationRequested)="onOpenConversation($event)">
|
|
443
463
|
</mj-collections-full-view>
|
|
444
464
|
}
|
|
445
465
|
</div>
|
|
@@ -475,5 +495,5 @@ export { ChatCollectionsResource };
|
|
|
475
495
|
</div>
|
|
476
496
|
`, encapsulation: ViewEncapsulation.None, styles: ["\n /* :host doesn't work with ViewEncapsulation.None \u2014 use the element selector */\n mj-chat-collections-resource {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .chat-collections-container {\n display: flex;\n width: 100%;\n height: 100%;\n flex: 1;\n overflow: hidden;\n position: relative; /* Required for absolute positioning of maximized panel */\n }\n\n .collections-main {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n min-width: 0;\n }\n\n .collections-main.with-artifact-panel {\n /* When artifact panel is open, main area shrinks */\n }\n\n .artifact-panel-resize-handle {\n width: 8px;\n cursor: col-resize;\n background: transparent;\n transition: background 150ms ease;\n flex-shrink: 0;\n }\n\n .artifact-panel-resize-handle:hover {\n background: var(--mj-brand-primary);\n }\n\n .artifact-panel-resize-handle:active {\n background: var(--mj-brand-primary-hover);\n }\n\n .artifact-panel {\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n transition: width 0.2s ease;\n }\n\n .artifact-panel.maximized {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 100% !important;\n z-index: 100;\n }\n "] }]
|
|
477
497
|
}], null, null); })();
|
|
478
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ChatCollectionsResource, { className: "ChatCollectionsResource", filePath: "src/lib/resource-wrappers/chat-collections-resource.component.ts", lineNumber:
|
|
498
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ChatCollectionsResource, { className: "ChatCollectionsResource", filePath: "src/lib/resource-wrappers/chat-collections-resource.component.ts", lineNumber: 126 }); })();
|
|
479
499
|
//# sourceMappingURL=chat-collections-resource.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-collections-resource.component.js","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/chat-collections-resource.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ViewEncapsulation, OnInit, OnDestroy, ChangeDetectorRef, inject } from '@angular/core';\nimport { DataSnapshot, Metadata, CompositeKey, RunView } from '@memberjunction/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { ResourceData, MJEnvironmentEntityExtended } from '@memberjunction/core-entities';\nimport { ArtifactStateService, ArtifactPermissionService, CollectionStateService } from '@memberjunction/ng-conversations';\nimport { AnalyzeArtifactService } from '@memberjunction/ng-artifacts';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { Subject, takeUntil, distinctUntilChanged, combineLatest } from 'rxjs';\n/**\n * Chat Collections Resource - displays the collections full view for tab-based display\n * Extends BaseResourceComponent to work with the resource type system\n * Shows all collections and their artifacts in a comprehensive view\n * Includes artifact panel support for viewing selected artifacts\n */\n@RegisterClass(BaseResourceComponent, 'ChatCollectionsResource')\n@Component({\n standalone: false,\n selector: 'mj-chat-collections-resource',\n template: `\n <div class=\"chat-collections-container\">\n <!-- Collections view -->\n <div class=\"collections-main\" [class.with-artifact-panel]=\"isArtifactPanelOpen && activeArtifactId\">\n @if (currentUser) {\n <mj-collections-full-view\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\">\n </mj-collections-full-view>\n }\n </div>\n \n <!-- Artifact Panel -->\n @if (isArtifactPanelOpen && activeArtifactId) {\n @if (!isArtifactPanelMaximized) {\n <div class=\"artifact-panel-resize-handle\"\n (mousedown)=\"onResizeStart($event)\"></div>\n }\n <div class=\"artifact-panel\"\n [style.width.%]=\"artifactPanelWidth\"\n [class.maximized]=\"isArtifactPanelMaximized\">\n <mj-artifact-viewer-panel\n [artifactId]=\"activeArtifactId\"\n [currentUser]=\"currentUser\"\n [environmentId]=\"environmentId\"\n [versionNumber]=\"activeVersionNumber ?? undefined\"\n [showSaveToCollection]=\"false\"\n [viewContext]=\"'collection'\"\n [contextCollectionId]=\"activeCollectionId ?? undefined\"\n [canShare]=\"canShareActiveArtifact\"\n [canEdit]=\"canEditActiveArtifact\"\n [isMaximized]=\"isArtifactPanelMaximized\"\n (closed)=\"closeArtifactPanel()\"\n (maximizeToggled)=\"toggleMaximizeArtifactPanel()\"\n (navigateToLink)=\"onNavigateToLink($event)\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\"\n (analyzeRequested)=\"onAnalyzeRequested($event)\">\n </mj-artifact-viewer-panel>\n </div>\n }\n </div>\n `,\n styles: [`\n /* :host doesn't work with ViewEncapsulation.None — use the element selector */\n mj-chat-collections-resource {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .chat-collections-container {\n display: flex;\n width: 100%;\n height: 100%;\n flex: 1;\n overflow: hidden;\n position: relative; /* Required for absolute positioning of maximized panel */\n }\n\n .collections-main {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n min-width: 0;\n }\n\n .collections-main.with-artifact-panel {\n /* When artifact panel is open, main area shrinks */\n }\n\n .artifact-panel-resize-handle {\n width: 8px;\n cursor: col-resize;\n background: transparent;\n transition: background 150ms ease;\n flex-shrink: 0;\n }\n\n .artifact-panel-resize-handle:hover {\n background: var(--mj-brand-primary);\n }\n\n .artifact-panel-resize-handle:active {\n background: var(--mj-brand-primary-hover);\n }\n\n .artifact-panel {\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n transition: width 0.2s ease;\n }\n\n .artifact-panel.maximized {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 100% !important;\n z-index: 100;\n }\n `],\n encapsulation: ViewEncapsulation.None\n})\nexport class ChatCollectionsResource extends BaseResourceComponent implements OnInit, OnDestroy {\n public currentUser: any = null;\n\n // Artifact panel state\n public isArtifactPanelOpen: boolean = false;\n public activeCollectionId: string | null = null;\n public activeArtifactId: string | null = null;\n public activeVersionNumber: number | null = null;\n public canShareActiveArtifact: boolean = false;\n public canEditActiveArtifact: boolean = false;\n public artifactPanelWidth: number = 40; // Default 40% width (percentage-based)\n public isArtifactPanelMaximized: boolean = false;\n private artifactPanelWidthBeforeMaximize: number = 40; // Store width before maximizing\n\n // Resize state\n private isResizing: boolean = false;\n private resizeStartX: number = 0;\n private resizeStartWidth: number = 0;\n\n private initializing = true; // Prevents URL updates during initialization\n\n private artifactState = inject(ArtifactStateService);\n private artifactPermissionService = inject(ArtifactPermissionService);\n public collectionState = inject(CollectionStateService);\n private cdr = inject(ChangeDetectorRef);\n private analyzeService = inject(AnalyzeArtifactService);\n\n ngOnInit() {\n super.ngOnInit();\n const md = this.ProviderToUse;\n this.currentUser = md.CurrentUser;\n\n // Subscribe to artifact state changes\n this.subscribeToArtifactState();\n\n // Setup resize listeners\n this.setupResizeListeners();\n\n // Apply initial state from query params or tab config\n this.applyInitialParams();\n\n // Subscribe to state changes to push URL updates\n this.subscribeToUrlStateChanges();\n\n // Subscribe to collection and artifact changes to update tab title\n this.collectionState.activeCollectionId$\n .pipe(takeUntil(this.destroy$), distinctUntilChanged())\n .subscribe(collectionId => {\n this.activeCollectionId = collectionId;\n // Only update if no artifact is open (artifact title takes priority)\n if (!this.activeArtifactId) {\n this.updateCollectionTabTitle(collectionId);\n }\n this.cdr.detectChanges();\n });\n\n this.artifactState.activeArtifact$\n .pipe(takeUntil(this.destroy$), distinctUntilChanged())\n .subscribe(artifact => {\n if (artifact && artifact.Name) {\n this.NotifyDisplayNameChanged(artifact.Name);\n } else {\n // Artifact closed — fall back to collection name\n this.updateCollectionTabTitle(this.collectionState.activeCollectionId);\n }\n });\n\n // Enable URL updates after initialization\n this.initializing = false;\n\n // Push initial state to URL — but only if we actually have state to reflect.\n // On a cold/direct deep-link load the params may arrive via the reactive\n // OnQueryParamsChanged delivery slightly after ngOnInit; pushing empty params\n // here would strip the deep link from the URL before that delivery lands.\n // Once state is set (synchronously when params are already present, or via the\n // reactive delivery), subscribeToUrlStateChanges() pushes the normalized URL.\n if (this.collectionState.activeCollectionId || this.activeArtifactId) {\n this.pushStateToUrl();\n }\n\n // Notify load complete after user is set\n setTimeout(() => {\n this.NotifyLoadComplete();\n }, 100);\n }\n\n\n /**\n * Apply initial state from query params or tab configuration.\n */\n private applyInitialParams(): void {\n const params = this.GetQueryParams();\n const config = this.Data?.Configuration;\n\n const collectionId = params['collectionId'] || (config?.collectionId as string);\n const artifactId = params['artifactId'] || (config?.artifactId as string);\n const versionNumber = params['versionNumber'] ? parseInt(params['versionNumber'], 10)\n : config?.versionNumber ? (config.versionNumber as number) : undefined;\n\n if (collectionId) {\n this.collectionState.setActiveCollection(collectionId);\n }\n if (artifactId) {\n this.artifactState.openArtifact(artifactId, versionNumber);\n }\n }\n\n /**\n * React to browser back/forward query param changes.\n */\n protected override OnQueryParamsChanged(params: Record<string, string>, source: 'popstate' | 'deeplink'): void {\n const collectionId = params['collectionId'];\n const artifactId = params['artifactId'];\n const versionNumber = params['versionNumber'] ? parseInt(params['versionNumber'], 10) : undefined;\n\n if (collectionId) {\n this.collectionState.setActiveCollection(collectionId);\n } else {\n this.collectionState.setActiveCollection(null);\n }\n\n if (artifactId) {\n this.artifactState.openArtifact(artifactId, versionNumber);\n } else {\n this.artifactState.closeArtifact();\n }\n }\n\n /**\n * Subscribe to state changes for URL updates.\n */\n private subscribeToUrlStateChanges(): void {\n combineLatest([\n this.collectionState.activeCollectionId$.pipe(distinctUntilChanged()),\n this.artifactState.activeArtifactId$.pipe(distinctUntilChanged()),\n this.artifactState.activeVersionNumber$.pipe(distinctUntilChanged())\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (!this.initializing) {\n this.pushStateToUrl();\n }\n });\n }\n\n /**\n * Push current state to URL via framework query params.\n */\n private pushStateToUrl(): void {\n const queryParams: Record<string, string | null> = {};\n\n const collectionId = this.collectionState.activeCollectionId;\n queryParams['collectionId'] = collectionId || null;\n\n if (this.activeArtifactId) {\n queryParams['artifactId'] = this.activeArtifactId;\n queryParams['versionNumber'] = this.activeVersionNumber ? this.activeVersionNumber.toString() : null;\n } else {\n queryParams['artifactId'] = null;\n queryParams['versionNumber'] = null;\n }\n\n this.UpdateQueryParams(queryParams);\n }\n\n\n /**\n * Update the tab/browser title based on the active collection.\n */\n private async updateCollectionTabTitle(collectionId: string | null): Promise<void> {\n if (!collectionId) {\n this.NotifyDisplayNameChanged('Collections');\n return;\n }\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<{ Name: string }>({\n EntityName: 'MJ: Collections',\n Fields: ['Name'],\n ExtraFilter: `ID='${collectionId}'`,\n ResultType: 'simple'\n });\n if (result.Results?.length > 0 && result.Results[0].Name) {\n this.NotifyDisplayNameChanged(result.Results[0].Name);\n }\n } catch {\n // Fall back to generic title\n this.NotifyDisplayNameChanged('Collections');\n }\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.removeResizeListeners();\n }\n\n /**\n * Subscribe to artifact state service for panel open/close\n */\n private subscribeToArtifactState(): void {\n // Subscribe to panel open state\n this.artifactState.isPanelOpen$\n .pipe(takeUntil(this.destroy$))\n .subscribe(isOpen => {\n this.isArtifactPanelOpen = isOpen;\n this.cdr.detectChanges();\n });\n\n // Subscribe to active artifact ID\n this.artifactState.activeArtifactId$\n .pipe(takeUntil(this.destroy$))\n .subscribe(async id => {\n this.activeArtifactId = id;\n if (id) {\n await this.loadArtifactPermissions(id);\n } else {\n this.canShareActiveArtifact = false;\n this.canEditActiveArtifact = false;\n }\n this.cdr.detectChanges();\n });\n\n // Subscribe to active version number\n this.artifactState.activeVersionNumber$\n .pipe(takeUntil(this.destroy$))\n .subscribe(versionNumber => {\n this.activeVersionNumber = versionNumber;\n });\n }\n\n /**\n * Load permissions for the active artifact\n */\n private async loadArtifactPermissions(artifactId: string): Promise<void> {\n if (!artifactId || !this.currentUser) {\n this.canShareActiveArtifact = false;\n this.canEditActiveArtifact = false;\n return;\n }\n\n try {\n const permissions = await this.artifactPermissionService.getUserPermissions(artifactId, this.currentUser);\n this.canShareActiveArtifact = permissions.canShare;\n this.canEditActiveArtifact = permissions.canEdit;\n } catch (error) {\n console.error('Failed to load artifact permissions:', error);\n this.canShareActiveArtifact = false;\n this.canEditActiveArtifact = false;\n }\n }\n\n /**\n * Close the artifact panel\n */\n closeArtifactPanel(): void {\n this.artifactState.closeArtifact();\n }\n\n /**\n * Toggle maximize/restore state for artifact panel\n */\n toggleMaximizeArtifactPanel(): void {\n if (this.isArtifactPanelMaximized) {\n // Restore to previous width\n this.artifactPanelWidth = this.artifactPanelWidthBeforeMaximize;\n this.isArtifactPanelMaximized = false;\n } else {\n // Maximize - store current width and set to 100%\n this.artifactPanelWidthBeforeMaximize = this.artifactPanelWidth;\n this.artifactPanelWidth = 100;\n this.isArtifactPanelMaximized = true;\n }\n }\n\n /**\n * Handle navigation request from artifact viewer panel.\n * Converts the link event to a generic navigation request and uses NavigationService.\n */\n onNavigateToLink(event: {\n type: 'conversation' | 'collection';\n id: string;\n artifactId?: string;\n versionNumber?: number;\n versionId?: string;\n }): void {\n // Map the link type to the nav item name\n const navItemName = event.type === 'conversation' ? 'Conversations' : 'Collections';\n\n // Build configuration params to pass to the target resource\n const params: Record<string, unknown> = {};\n if (event.type === 'conversation') {\n params['conversationId'] = event.id;\n } else {\n params['collectionId'] = event.id;\n }\n\n // Include artifact info so destination can open it\n if (event.artifactId) {\n params['artifactId'] = event.artifactId;\n if (event.versionNumber) {\n params['versionNumber'] = event.versionNumber;\n }\n }\n\n // Navigate using the generic nav item method\n this.navigationService.OpenNavItemByName(navItemName, params);\n }\n\n /**\n * Handle entity record open request from artifact viewer (from React component grids).\n * Uses NavigationService to open the record in a new tab.\n */\n onOpenEntityRecord(event: {entityName: string; compositeKey: CompositeKey}): void {\n this.navigationService.OpenEntityRecord(event.entityName, event.compositeKey);\n }\n\n /**\n * Handler for the Analyze button on the artifact viewer panel.\n * Captures the live DataSnapshot, creates a new analysis conversation\n * with the snapshot attached as an input artifact, and routes the user\n * to the Conversations nav item for the new conversation.\n */\n async onAnalyzeRequested(event: { artifactId: string; snapshot: DataSnapshot }): Promise<void> {\n if (!this.currentUser) return;\n\n try {\n const result = await this.analyzeService.StartAnalysisConversation({\n snapshot: event.snapshot,\n currentUser: this.currentUser,\n environmentId: this.environmentId,\n });\n\n await this.navigationService.OpenNavItemByName('Conversations', {\n conversationId: result.conversationId,\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to start analysis conversation';\n MJNotificationService.Instance.CreateSimpleNotification(message, 'error', 5000);\n }\n }\n\n /**\n * Get the environment ID from configuration or use default\n */\n get environmentId(): string {\n return this.Data?.Configuration?.environmentId || MJEnvironmentEntityExtended.DefaultEnvironmentID;\n }\n\n /**\n * Get the display name for chat collections\n */\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Collections';\n }\n\n /**\n * Get the icon class for chat collections\n */\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-folder-open';\n }\n\n // Resize handling\n private setupResizeListeners(): void {\n this.boundOnResizeMove = this.onResizeMove.bind(this);\n this.boundOnResizeEnd = this.onResizeEnd.bind(this);\n }\n\n private removeResizeListeners(): void {\n window.removeEventListener('mousemove', this.boundOnResizeMove);\n window.removeEventListener('mouseup', this.boundOnResizeEnd);\n }\n\n private boundOnResizeMove: (e: MouseEvent) => void = () => {};\n private boundOnResizeEnd: (e: MouseEvent) => void = () => {};\n\n onResizeStart(event: MouseEvent): void {\n this.isResizing = true;\n this.resizeStartX = event.clientX;\n this.resizeStartWidth = this.artifactPanelWidth;\n window.addEventListener('mousemove', this.boundOnResizeMove);\n window.addEventListener('mouseup', this.boundOnResizeEnd);\n event.preventDefault();\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n }\n\n private onResizeMove(event: MouseEvent): void {\n if (!this.isResizing) return;\n\n const container = document.querySelector('.chat-collections-container') as HTMLElement;\n if (!container) return;\n\n const containerWidth = container.offsetWidth;\n const deltaX = event.clientX - this.resizeStartX;\n const deltaPercent = (deltaX / containerWidth) * -100; // Negative because we're pulling from the right\n let newWidth = this.resizeStartWidth + deltaPercent;\n\n // Constrain between 20% and 80%\n newWidth = Math.max(20, Math.min(80, newWidth));\n this.artifactPanelWidth = newWidth;\n }\n\n private onResizeEnd(event: MouseEvent): void {\n this.isResizing = false;\n window.removeEventListener('mousemove', this.boundOnResizeMove);\n window.removeEventListener('mouseup', this.boundOnResizeEnd);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"chat-collections-resource.component.js","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/chat-collections-resource.component.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAqB,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3G,OAAO,EAAwC,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAgB,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC3H,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAW,SAAS,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;;;;;;IAgBrE,mDAG2D;IAAzD,2PAA6B,iCAA0B,KAAC;IAC1D,iBAA2B;;;IAFzB,AADA,oDAA+B,mCACJ;;;;IAS7B,8BACoC;IAApC,qNAAa,4BAAqB,KAAC;IAAC,iBAAM;;;;IAF5C,uGAAiC;IAO/B,AAHF,8BAE+C,kCAgBK;IAAhD,AADA,AADA,AADA,AADA,+MAAU,2BAAoB,KAAC,oNACZ,oCAA6B,KAAC,wNAC/B,+BAAwB,KAAC,4NACvB,iCAA0B,KAAC,4NAC3B,iCAA0B,KAAC;IAEnD,AADE,iBAA2B,EACvB;;;IAxBN,2DAGC;IAEC,cAAoC;IAApC,uDAAoC;IACpC,4DAA4C;IAE1C,cAA+B;IAS/B,AADA,AADA,AADA,AADA,AADA,AADA,AADA,AADA,AADA,oDAA+B,mCACJ,uCACI,0DACmB,+BACpB,6BACF,+DAC2B,2CACpB,yCACF,gDACO;;AA1CpD;;;;;GAKG;AA+GI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,qBAAqB;IACzD,WAAW,GAAQ,IAAI,CAAC;IAE/B,uBAAuB;IAChB,mBAAmB,GAAY,KAAK,CAAC;IACrC,kBAAkB,GAAkB,IAAI,CAAC;IACzC,gBAAgB,GAAkB,IAAI,CAAC;IACvC,mBAAmB,GAAkB,IAAI,CAAC;IAC1C,sBAAsB,GAAY,KAAK,CAAC;IACxC,qBAAqB,GAAY,KAAK,CAAC;IACvC,kBAAkB,GAAW,EAAE,CAAC,CAAC,uCAAuC;IACxE,wBAAwB,GAAY,KAAK,CAAC;IACzC,gCAAgC,GAAW,EAAE,CAAC,CAAC,gCAAgC;IAEvF,eAAe;IACP,UAAU,GAAY,KAAK,CAAC;IAC5B,YAAY,GAAW,CAAC,CAAC;IACzB,gBAAgB,GAAW,CAAC,CAAC;IAE7B,YAAY,GAAG,IAAI,CAAC,CAAC,6CAA6C;IAElE,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC7C,yBAAyB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC/D,eAAe,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAChD,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAChC,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAExD,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC;QAElC,sCAAsC;QACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,yBAAyB;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,sDAAsD;QACtD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,iDAAiD;QACjD,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,mEAAmE;QACnE,IAAI,CAAC,eAAe,CAAC,mBAAmB;aACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;aACtD,SAAS,CAAC,YAAY,CAAC,EAAE;YACxB,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;YACvC,qEAAqE;YACrE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC3B,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,aAAa,CAAC,eAAe;aAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;aACtD,SAAS,CAAC,QAAQ,CAAC,EAAE;YACpB,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,iDAAiD;gBACjD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YACzE,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,0CAA0C;QAC1C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,6EAA6E;QAC7E,yEAAyE;QACzE,8EAA8E;QAC9E,0EAA0E;QAC1E,+EAA+E;QAC/E,8EAA8E;QAC9E,IAAI,IAAI,CAAC,eAAe,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACrE,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QAED,yCAAyC;QACzC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAGD;;OAEG;IACK,kBAAkB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;QAExC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,IAAK,MAAM,EAAE,YAAuB,CAAC;QAChF,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,IAAK,MAAM,EAAE,UAAqB,CAAC;QAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;YACnF,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAE,MAAM,CAAC,aAAwB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEzE,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;OAEG;IACgB,oBAAoB,CAAC,MAA8B,EAAE,MAA+B;QACrG,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAElG,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,0BAA0B;QAChC,aAAa,CAAC;YACZ,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACjE,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACrE,CAAC;aACC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,MAAM,WAAW,GAAkC,EAAE,CAAC;QAEtD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;QAC7D,WAAW,CAAC,cAAc,CAAC,GAAG,YAAY,IAAI,IAAI,CAAC;QAEnD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAClD,WAAW,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvG,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;YACjC,WAAW,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAGD;;OAEG;IACK,KAAK,CAAC,wBAAwB,CAAC,YAA2B;QAChE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAmB;gBAChD,UAAU,EAAE,iBAAiB;gBAC7B,MAAM,EAAE,CAAC,MAAM,CAAC;gBAChB,WAAW,EAAE,OAAO,YAAY,GAAG;gBACnC,UAAU,EAAE,QAAQ;aACrB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;YAC7B,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,wBAAwB;QAC9B,gCAAgC;QAChC,IAAI,CAAC,aAAa,CAAC,YAAY;aAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,MAAM,CAAC,EAAE;YAClB,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEL,kCAAkC;QAClC,IAAI,CAAC,aAAa,CAAC,iBAAiB;aACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;YACpB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;gBACpC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEL,qCAAqC;QACrC,IAAI,CAAC,aAAa,CAAC,oBAAoB;aACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,aAAa,CAAC,EAAE;YACzB,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CAAC,UAAkB;QACtD,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1G,IAAI,CAAC,sBAAsB,GAAG,WAAW,CAAC,QAAQ,CAAC;YACnD,IAAI,CAAC,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAC7D,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,2BAA2B;QACzB,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,4BAA4B;YAC5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,gCAAgC,CAAC;YAChE,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,iDAAiD;YACjD,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAChE,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;YAC9B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,KAMhB;QACC,yCAAyC;QACzC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC;QAEpF,4DAA4D;QAC5D,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;QACpC,CAAC;QAED,mDAAmD;QACnD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;YACxC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,MAAM,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;YAChD,CAAC;QACH,CAAC;QAED,iFAAiF;QACjF,gEAAgE;QAChE,MAAM,WAAW,GAA2B,EAAE,CAAC;QAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,IAAI,IAAI;gBAAE,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QAED,6CAA6C;QAC7C,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,KAAiC;QAClD,oFAAoF;QACpF,0FAA0F;QAC1F,wFAAwF;QACxF,sFAAsF;QACtF,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CACtC,eAAe,EACf,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,EACxC,SAAS,EACT,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,CAC1D,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,KAAuD;QACxE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAChF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAqD;QAC5E,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC;gBACjE,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAC5C,eAAe,EACf,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,EACzC,SAAS,EACT,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,EAAE,CAC3D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC,CAAC;YACjG,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,IAAI,2BAA2B,CAAC,oBAAoB,CAAC;IACrG,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAAC,IAAkB;QAC7C,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,IAAkB;QAC3C,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED,kBAAkB;IACV,oBAAoB;QAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEO,qBAAqB;QAC3B,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChE,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/D,CAAC;IAEO,iBAAiB,GAA4B,GAAG,EAAE,GAAE,CAAC,CAAC;IACtD,gBAAgB,GAA4B,GAAG,EAAE,GAAE,CAAC,CAAC;IAE7D,aAAa,CAAC,KAAiB;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAChD,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1D,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IAC1C,CAAC;IAEO,YAAY,CAAC,KAAiB;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,6BAA6B,CAAgB,CAAC;QACvF,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QACjD,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,gDAAgD;QACvG,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC;QAEpD,gCAAgC;QAChC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;IACrC,CAAC;IAEO,WAAW,CAAC,KAAiB;QACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChE,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;IACtC,CAAC;yQApbU,uBAAuB,yBAAvB,uBAAuB;6DAAvB,uBAAuB;YAvG9B,AAFF,8BAAwC,aAE8D;YAClG,8GAAmB;YAOrB,iBAAM;YAGN,gFAA+C;YA2BjD,iBAAM;;YAtC0B,cAAqE;YAArE,sFAAqE;YACjG,cAMC;YAND,0CAMC;YAIH,cA0BC;YA1BD,0EA0BC;;;AAkEM,uBAAuB;IA9GnC,aAAa,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;GA8GnD,uBAAuB,CAqbnC;;iFArbY,uBAAuB;cA7GnC,SAAS;6BACI,KAAK,YACP,8BAA8B,YAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0CP,iBA8DY,iBAAiB,CAAC,IAAI;;kFAE1B,uBAAuB","sourcesContent":["import { Component, ViewEncapsulation, OnInit, OnDestroy, ChangeDetectorRef, inject } from '@angular/core';\nimport { DataSnapshot, Metadata, CompositeKey, RunView } from '@memberjunction/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { ResourceData, MJEnvironmentEntityExtended } from '@memberjunction/core-entities';\nimport { ArtifactStateService, ArtifactPermissionService, CollectionStateService } from '@memberjunction/ng-conversations';\nimport { AnalyzeArtifactService } from '@memberjunction/ng-artifacts';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { Subject, takeUntil, distinctUntilChanged, combineLatest } from 'rxjs';\n/**\n * Chat Collections Resource - displays the collections full view for tab-based display\n * Extends BaseResourceComponent to work with the resource type system\n * Shows all collections and their artifacts in a comprehensive view\n * Includes artifact panel support for viewing selected artifacts\n */\n@RegisterClass(BaseResourceComponent, 'ChatCollectionsResource')\n@Component({\n standalone: false,\n selector: 'mj-chat-collections-resource',\n template: `\n <div class=\"chat-collections-container\">\n <!-- Collections view -->\n <div class=\"collections-main\" [class.with-artifact-panel]=\"isArtifactPanelOpen && activeArtifactId\">\n @if (currentUser) {\n <mj-collections-full-view\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n (openConversationRequested)=\"onOpenConversation($event)\">\n </mj-collections-full-view>\n }\n </div>\n \n <!-- Artifact Panel -->\n @if (isArtifactPanelOpen && activeArtifactId) {\n @if (!isArtifactPanelMaximized) {\n <div class=\"artifact-panel-resize-handle\"\n (mousedown)=\"onResizeStart($event)\"></div>\n }\n <div class=\"artifact-panel\"\n [style.width.%]=\"artifactPanelWidth\"\n [class.maximized]=\"isArtifactPanelMaximized\">\n <mj-artifact-viewer-panel\n [artifactId]=\"activeArtifactId\"\n [currentUser]=\"currentUser\"\n [environmentId]=\"environmentId\"\n [versionNumber]=\"activeVersionNumber ?? undefined\"\n [showSaveToCollection]=\"false\"\n [viewContext]=\"'collection'\"\n [contextCollectionId]=\"activeCollectionId ?? undefined\"\n [canShare]=\"canShareActiveArtifact\"\n [canEdit]=\"canEditActiveArtifact\"\n [isMaximized]=\"isArtifactPanelMaximized\"\n (closed)=\"closeArtifactPanel()\"\n (maximizeToggled)=\"toggleMaximizeArtifactPanel()\"\n (navigateToLink)=\"onNavigateToLink($event)\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\"\n (analyzeRequested)=\"onAnalyzeRequested($event)\">\n </mj-artifact-viewer-panel>\n </div>\n }\n </div>\n `,\n styles: [`\n /* :host doesn't work with ViewEncapsulation.None — use the element selector */\n mj-chat-collections-resource {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .chat-collections-container {\n display: flex;\n width: 100%;\n height: 100%;\n flex: 1;\n overflow: hidden;\n position: relative; /* Required for absolute positioning of maximized panel */\n }\n\n .collections-main {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n min-width: 0;\n }\n\n .collections-main.with-artifact-panel {\n /* When artifact panel is open, main area shrinks */\n }\n\n .artifact-panel-resize-handle {\n width: 8px;\n cursor: col-resize;\n background: transparent;\n transition: background 150ms ease;\n flex-shrink: 0;\n }\n\n .artifact-panel-resize-handle:hover {\n background: var(--mj-brand-primary);\n }\n\n .artifact-panel-resize-handle:active {\n background: var(--mj-brand-primary-hover);\n }\n\n .artifact-panel {\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n transition: width 0.2s ease;\n }\n\n .artifact-panel.maximized {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 100% !important;\n z-index: 100;\n }\n `],\n encapsulation: ViewEncapsulation.None\n})\nexport class ChatCollectionsResource extends BaseResourceComponent implements OnInit, OnDestroy {\n public currentUser: any = null;\n\n // Artifact panel state\n public isArtifactPanelOpen: boolean = false;\n public activeCollectionId: string | null = null;\n public activeArtifactId: string | null = null;\n public activeVersionNumber: number | null = null;\n public canShareActiveArtifact: boolean = false;\n public canEditActiveArtifact: boolean = false;\n public artifactPanelWidth: number = 40; // Default 40% width (percentage-based)\n public isArtifactPanelMaximized: boolean = false;\n private artifactPanelWidthBeforeMaximize: number = 40; // Store width before maximizing\n\n // Resize state\n private isResizing: boolean = false;\n private resizeStartX: number = 0;\n private resizeStartWidth: number = 0;\n\n private initializing = true; // Prevents URL updates during initialization\n\n private artifactState = inject(ArtifactStateService);\n private artifactPermissionService = inject(ArtifactPermissionService);\n public collectionState = inject(CollectionStateService);\n private cdr = inject(ChangeDetectorRef);\n private analyzeService = inject(AnalyzeArtifactService);\n\n ngOnInit() {\n super.ngOnInit();\n const md = this.ProviderToUse;\n this.currentUser = md.CurrentUser;\n\n // Subscribe to artifact state changes\n this.subscribeToArtifactState();\n\n // Setup resize listeners\n this.setupResizeListeners();\n\n // Apply initial state from query params or tab config\n this.applyInitialParams();\n\n // Subscribe to state changes to push URL updates\n this.subscribeToUrlStateChanges();\n\n // Subscribe to collection and artifact changes to update tab title\n this.collectionState.activeCollectionId$\n .pipe(takeUntil(this.destroy$), distinctUntilChanged())\n .subscribe(collectionId => {\n this.activeCollectionId = collectionId;\n // Only update if no artifact is open (artifact title takes priority)\n if (!this.activeArtifactId) {\n this.updateCollectionTabTitle(collectionId);\n }\n this.cdr.detectChanges();\n });\n\n this.artifactState.activeArtifact$\n .pipe(takeUntil(this.destroy$), distinctUntilChanged())\n .subscribe(artifact => {\n if (artifact && artifact.Name) {\n this.NotifyDisplayNameChanged(artifact.Name);\n } else {\n // Artifact closed — fall back to collection name\n this.updateCollectionTabTitle(this.collectionState.activeCollectionId);\n }\n });\n\n // Enable URL updates after initialization\n this.initializing = false;\n\n // Push initial state to URL — but only if we actually have state to reflect.\n // On a cold/direct deep-link load the params may arrive via the reactive\n // OnQueryParamsChanged delivery slightly after ngOnInit; pushing empty params\n // here would strip the deep link from the URL before that delivery lands.\n // Once state is set (synchronously when params are already present, or via the\n // reactive delivery), subscribeToUrlStateChanges() pushes the normalized URL.\n if (this.collectionState.activeCollectionId || this.activeArtifactId) {\n this.pushStateToUrl();\n }\n\n // Notify load complete after user is set\n setTimeout(() => {\n this.NotifyLoadComplete();\n }, 100);\n }\n\n\n /**\n * Apply initial state from query params or tab configuration.\n */\n private applyInitialParams(): void {\n const params = this.GetQueryParams();\n const config = this.Data?.Configuration;\n\n const collectionId = params['collectionId'] || (config?.collectionId as string);\n const artifactId = params['artifactId'] || (config?.artifactId as string);\n const versionNumber = params['versionNumber'] ? parseInt(params['versionNumber'], 10)\n : config?.versionNumber ? (config.versionNumber as number) : undefined;\n\n if (collectionId) {\n this.collectionState.setActiveCollection(collectionId);\n }\n if (artifactId) {\n this.artifactState.openArtifact(artifactId, versionNumber);\n }\n }\n\n /**\n * React to browser back/forward query param changes.\n */\n protected override OnQueryParamsChanged(params: Record<string, string>, source: 'popstate' | 'deeplink'): void {\n const collectionId = params['collectionId'];\n const artifactId = params['artifactId'];\n const versionNumber = params['versionNumber'] ? parseInt(params['versionNumber'], 10) : undefined;\n\n if (collectionId) {\n this.collectionState.setActiveCollection(collectionId);\n } else {\n this.collectionState.setActiveCollection(null);\n }\n\n if (artifactId) {\n this.artifactState.openArtifact(artifactId, versionNumber);\n } else {\n this.artifactState.closeArtifact();\n }\n }\n\n /**\n * Subscribe to state changes for URL updates.\n */\n private subscribeToUrlStateChanges(): void {\n combineLatest([\n this.collectionState.activeCollectionId$.pipe(distinctUntilChanged()),\n this.artifactState.activeArtifactId$.pipe(distinctUntilChanged()),\n this.artifactState.activeVersionNumber$.pipe(distinctUntilChanged())\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (!this.initializing) {\n this.pushStateToUrl();\n }\n });\n }\n\n /**\n * Push current state to URL via framework query params.\n */\n private pushStateToUrl(): void {\n const queryParams: Record<string, string | null> = {};\n\n const collectionId = this.collectionState.activeCollectionId;\n queryParams['collectionId'] = collectionId || null;\n\n if (this.activeArtifactId) {\n queryParams['artifactId'] = this.activeArtifactId;\n queryParams['versionNumber'] = this.activeVersionNumber ? this.activeVersionNumber.toString() : null;\n } else {\n queryParams['artifactId'] = null;\n queryParams['versionNumber'] = null;\n }\n\n this.UpdateQueryParams(queryParams);\n }\n\n\n /**\n * Update the tab/browser title based on the active collection.\n */\n private async updateCollectionTabTitle(collectionId: string | null): Promise<void> {\n if (!collectionId) {\n this.NotifyDisplayNameChanged('Collections');\n return;\n }\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<{ Name: string }>({\n EntityName: 'MJ: Collections',\n Fields: ['Name'],\n ExtraFilter: `ID='${collectionId}'`,\n ResultType: 'simple'\n });\n if (result.Results?.length > 0 && result.Results[0].Name) {\n this.NotifyDisplayNameChanged(result.Results[0].Name);\n }\n } catch {\n // Fall back to generic title\n this.NotifyDisplayNameChanged('Collections');\n }\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.removeResizeListeners();\n }\n\n /**\n * Subscribe to artifact state service for panel open/close\n */\n private subscribeToArtifactState(): void {\n // Subscribe to panel open state\n this.artifactState.isPanelOpen$\n .pipe(takeUntil(this.destroy$))\n .subscribe(isOpen => {\n this.isArtifactPanelOpen = isOpen;\n this.cdr.detectChanges();\n });\n\n // Subscribe to active artifact ID\n this.artifactState.activeArtifactId$\n .pipe(takeUntil(this.destroy$))\n .subscribe(async id => {\n this.activeArtifactId = id;\n if (id) {\n await this.loadArtifactPermissions(id);\n } else {\n this.canShareActiveArtifact = false;\n this.canEditActiveArtifact = false;\n }\n this.cdr.detectChanges();\n });\n\n // Subscribe to active version number\n this.artifactState.activeVersionNumber$\n .pipe(takeUntil(this.destroy$))\n .subscribe(versionNumber => {\n this.activeVersionNumber = versionNumber;\n });\n }\n\n /**\n * Load permissions for the active artifact\n */\n private async loadArtifactPermissions(artifactId: string): Promise<void> {\n if (!artifactId || !this.currentUser) {\n this.canShareActiveArtifact = false;\n this.canEditActiveArtifact = false;\n return;\n }\n\n try {\n const permissions = await this.artifactPermissionService.getUserPermissions(artifactId, this.currentUser);\n this.canShareActiveArtifact = permissions.canShare;\n this.canEditActiveArtifact = permissions.canEdit;\n } catch (error) {\n console.error('Failed to load artifact permissions:', error);\n this.canShareActiveArtifact = false;\n this.canEditActiveArtifact = false;\n }\n }\n\n /**\n * Close the artifact panel\n */\n closeArtifactPanel(): void {\n this.artifactState.closeArtifact();\n }\n\n /**\n * Toggle maximize/restore state for artifact panel\n */\n toggleMaximizeArtifactPanel(): void {\n if (this.isArtifactPanelMaximized) {\n // Restore to previous width\n this.artifactPanelWidth = this.artifactPanelWidthBeforeMaximize;\n this.isArtifactPanelMaximized = false;\n } else {\n // Maximize - store current width and set to 100%\n this.artifactPanelWidthBeforeMaximize = this.artifactPanelWidth;\n this.artifactPanelWidth = 100;\n this.isArtifactPanelMaximized = true;\n }\n }\n\n /**\n * Handle navigation request from artifact viewer panel.\n * Converts the link event to a generic navigation request and uses NavigationService.\n */\n onNavigateToLink(event: {\n type: 'conversation' | 'collection';\n id: string;\n artifactId?: string;\n versionNumber?: number;\n versionId?: string;\n }): void {\n // Map the link type to the nav item name\n const navItemName = event.type === 'conversation' ? 'Conversations' : 'Collections';\n\n // Build configuration params to pass to the target resource\n const params: Record<string, unknown> = {};\n if (event.type === 'conversation') {\n params['conversationId'] = event.id;\n } else {\n params['collectionId'] = event.id;\n }\n\n // Include artifact info so destination can open it\n if (event.artifactId) {\n params['artifactId'] = event.artifactId;\n if (event.versionNumber) {\n params['versionNumber'] = event.versionNumber;\n }\n }\n\n // Also deliver as query params so an already-open/cached target tab applies them\n // (configuration alone is only read by a fresh tab's ngOnInit).\n const queryParams: Record<string, string> = {};\n for (const [key, value] of Object.entries(params)) {\n if (value != null) queryParams[key] = String(value);\n }\n\n // Navigate using the generic nav item method\n this.navigationService.OpenNavItemByName(navItemName, params, undefined, { queryParams });\n }\n\n /**\n * Open the conversation an artifact was produced in (from the Collections view's\n * right-click \"Open source conversation\"). Routes to the Conversations nav item.\n */\n onOpenConversation(event: { conversationId: string }): void {\n // Pass conversationId BOTH as configuration (read by a fresh tab's ngOnInit) AND as\n // queryParams (drives OnQueryParamsChanged on the already-open/cached Conversations tab).\n // Without the queryParams, switching to an existing Conversations tab opens the app but\n // never selects the conversation, since the cached component doesn't re-run ngOnInit.\n this.navigationService.OpenNavItemByName(\n 'Conversations',\n { conversationId: event.conversationId },\n undefined,\n { queryParams: { conversationId: event.conversationId } }\n );\n }\n\n /**\n * Handle entity record open request from artifact viewer (from React component grids).\n * Uses NavigationService to open the record in a new tab.\n */\n onOpenEntityRecord(event: {entityName: string; compositeKey: CompositeKey}): void {\n this.navigationService.OpenEntityRecord(event.entityName, event.compositeKey);\n }\n\n /**\n * Handler for the Analyze button on the artifact viewer panel.\n * Captures the live DataSnapshot, creates a new analysis conversation\n * with the snapshot attached as an input artifact, and routes the user\n * to the Conversations nav item for the new conversation.\n */\n async onAnalyzeRequested(event: { artifactId: string; snapshot: DataSnapshot }): Promise<void> {\n if (!this.currentUser) return;\n\n try {\n const result = await this.analyzeService.StartAnalysisConversation({\n snapshot: event.snapshot,\n currentUser: this.currentUser,\n environmentId: this.environmentId,\n });\n\n await this.navigationService.OpenNavItemByName(\n 'Conversations',\n { conversationId: result.conversationId },\n undefined,\n { queryParams: { conversationId: result.conversationId } }\n );\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to start analysis conversation';\n MJNotificationService.Instance.CreateSimpleNotification(message, 'error', 5000);\n }\n }\n\n /**\n * Get the environment ID from configuration or use default\n */\n get environmentId(): string {\n return this.Data?.Configuration?.environmentId || MJEnvironmentEntityExtended.DefaultEnvironmentID;\n }\n\n /**\n * Get the display name for chat collections\n */\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Collections';\n }\n\n /**\n * Get the icon class for chat collections\n */\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-folder-open';\n }\n\n // Resize handling\n private setupResizeListeners(): void {\n this.boundOnResizeMove = this.onResizeMove.bind(this);\n this.boundOnResizeEnd = this.onResizeEnd.bind(this);\n }\n\n private removeResizeListeners(): void {\n window.removeEventListener('mousemove', this.boundOnResizeMove);\n window.removeEventListener('mouseup', this.boundOnResizeEnd);\n }\n\n private boundOnResizeMove: (e: MouseEvent) => void = () => {};\n private boundOnResizeEnd: (e: MouseEvent) => void = () => {};\n\n onResizeStart(event: MouseEvent): void {\n this.isResizing = true;\n this.resizeStartX = event.clientX;\n this.resizeStartWidth = this.artifactPanelWidth;\n window.addEventListener('mousemove', this.boundOnResizeMove);\n window.addEventListener('mouseup', this.boundOnResizeEnd);\n event.preventDefault();\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n }\n\n private onResizeMove(event: MouseEvent): void {\n if (!this.isResizing) return;\n\n const container = document.querySelector('.chat-collections-container') as HTMLElement;\n if (!container) return;\n\n const containerWidth = container.offsetWidth;\n const deltaX = event.clientX - this.resizeStartX;\n const deltaPercent = (deltaX / containerWidth) * -100; // Negative because we're pulling from the right\n let newWidth = this.resizeStartWidth + deltaPercent;\n\n // Constrain between 20% and 80%\n newWidth = Math.max(20, Math.min(80, newWidth));\n this.artifactPanelWidth = newWidth;\n }\n\n private onResizeEnd(event: MouseEvent): void {\n this.isResizing = false;\n window.removeEventListener('mousemove', this.boundOnResizeMove);\n window.removeEventListener('mouseup', this.boundOnResizeEnd);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n }\n}\n"]}
|