@memberjunction/ng-dashboards 6.2.0-edge.3 → 6.2.0-edge.4
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/AI/components/analytics/realtime/realtime-transcripts-data.d.ts +4 -3
- package/dist/AI/components/analytics/realtime/realtime-transcripts-data.d.ts.map +1 -1
- package/dist/AI/components/analytics/realtime/realtime-transcripts-data.js +8 -5
- package/dist/AI/components/analytics/realtime/realtime-transcripts-data.js.map +1 -1
- package/dist/AI/components/duplicates/compare-value.component.d.ts +67 -0
- package/dist/AI/components/duplicates/compare-value.component.d.ts.map +1 -0
- package/dist/AI/components/duplicates/compare-value.component.js +168 -0
- package/dist/AI/components/duplicates/compare-value.component.js.map +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +49 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +287 -169
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts +77 -0
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts.map +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.js +116 -0
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.js.map +1 -0
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +1 -0
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +16 -4
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +2 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +12 -6
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-index-auto.d.ts +29 -0
- package/dist/AI/components/vectors/vector-index-auto.d.ts.map +1 -0
- package/dist/AI/components/vectors/vector-index-auto.js +59 -0
- package/dist/AI/components/vectors/vector-index-auto.js.map +1 -0
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +9 -0
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +65 -20
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +7 -3
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js +3 -2
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +0 -3
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +5 -14
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +1 -0
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +1 -0
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +2 -0
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +12 -10
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-agent-context.d.ts +14 -43
- package/dist/DashboardBrowser/dashboard-browser-agent-context.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-agent-context.js +6 -29
- package/dist/DashboardBrowser/dashboard-browser-agent-context.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +174 -321
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +522 -1195
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-library-filter.d.ts +116 -0
- package/dist/DashboardBrowser/dashboard-library-filter.d.ts.map +1 -0
- package/dist/DashboardBrowser/dashboard-library-filter.js +277 -0
- package/dist/DashboardBrowser/dashboard-library-filter.js.map +1 -0
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboards-agent-tools.d.ts +26 -0
- package/dist/DashboardBrowser/dashboards-agent-tools.d.ts.map +1 -0
- package/dist/DashboardBrowser/dashboards-agent-tools.js +32 -0
- package/dist/DashboardBrowser/dashboards-agent-tools.js.map +1 -0
- package/dist/DashboardBrowser/dashboards-categories-resource.component.d.ts +58 -0
- package/dist/DashboardBrowser/dashboards-categories-resource.component.d.ts.map +1 -0
- package/dist/DashboardBrowser/dashboards-categories-resource.component.js +391 -0
- package/dist/DashboardBrowser/dashboards-categories-resource.component.js.map +1 -0
- package/dist/DashboardBrowser/dashboards-categories.helpers.d.ts +37 -0
- package/dist/DashboardBrowser/dashboards-categories.helpers.d.ts.map +1 -0
- package/dist/DashboardBrowser/dashboards-categories.helpers.js +68 -0
- package/dist/DashboardBrowser/dashboards-categories.helpers.js.map +1 -0
- package/dist/DashboardEditor/dashboard-editor.component.d.ts +295 -0
- package/dist/DashboardEditor/dashboard-editor.component.d.ts.map +1 -0
- package/dist/DashboardEditor/dashboard-editor.component.js +1022 -0
- package/dist/DashboardEditor/dashboard-editor.component.js.map +1 -0
- package/dist/DashboardEditor/dashboard-editor.types.d.ts +23 -0
- package/dist/DashboardEditor/dashboard-editor.types.d.ts.map +1 -0
- package/dist/DashboardEditor/dashboard-editor.types.js +3 -0
- package/dist/DashboardEditor/dashboard-editor.types.js.map +1 -0
- package/dist/DashboardEditor/dashboard-viewer-factory.d.ts +11 -0
- package/dist/DashboardEditor/dashboard-viewer-factory.d.ts.map +1 -0
- package/dist/DashboardEditor/dashboard-viewer-factory.js +17 -0
- package/dist/DashboardEditor/dashboard-viewer-factory.js.map +1 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +26 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +302 -219
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.d.ts +1 -1
- package/dist/DataExplorer/services/explorer-state.service.js +2 -5
- package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
- package/dist/FormBuilder/form-builder-resource.component.d.ts +0 -14
- package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -1
- package/dist/FormBuilder/form-builder-resource.component.js +7 -29
- package/dist/FormBuilder/form-builder-resource.component.js.map +1 -1
- package/dist/Home/home-agent-context.d.ts +29 -10
- package/dist/Home/home-agent-context.d.ts.map +1 -1
- package/dist/Home/home-agent-context.js +50 -24
- package/dist/Home/home-agent-context.js.map +1 -1
- package/dist/Home/home-dashboard-switcher.component.d.ts +95 -0
- package/dist/Home/home-dashboard-switcher.component.d.ts.map +1 -0
- package/dist/Home/home-dashboard-switcher.component.js +442 -0
- package/dist/Home/home-dashboard-switcher.component.js.map +1 -0
- package/dist/Home/home-dashboard.component.d.ts +330 -17
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +1702 -1014
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Home/home-menus.d.ts +38 -0
- package/dist/Home/home-menus.d.ts.map +1 -0
- package/dist/Home/home-menus.js +53 -0
- package/dist/Home/home-menus.js.map +1 -0
- package/dist/Home/home-pinned-dashboards.d.ts +33 -0
- package/dist/Home/home-pinned-dashboards.d.ts.map +1 -0
- package/dist/Home/home-pinned-dashboards.js +76 -0
- package/dist/Home/home-pinned-dashboards.js.map +1 -0
- package/dist/PredictiveStudio/components/ps-production.component.d.ts +5 -1
- package/dist/PredictiveStudio/components/ps-production.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-production.component.js +64 -41
- package/dist/PredictiveStudio/components/ps-production.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +3 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/RealtimeRecordings/realtime-recordings-dashboard.component.js +2 -2
- package/dist/RealtimeRecordings/realtime-recordings-dashboard.component.js.map +1 -1
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.d.ts +1 -0
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.d.ts.map +1 -1
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.js +7 -0
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +7 -7
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +21 -20
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +4 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +69 -62
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +22 -2
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +1 -1
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +3 -1
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/dist/shared/dashboard-library-changes.d.ts +23 -0
- package/dist/shared/dashboard-library-changes.d.ts.map +1 -0
- package/dist/shared/dashboard-library-changes.js +26 -0
- package/dist/shared/dashboard-library-changes.js.map +1 -0
- package/dist/shared/dashboard-owner-names.d.ts +17 -0
- package/dist/shared/dashboard-owner-names.d.ts.map +1 -0
- package/dist/shared/dashboard-owner-names.js +65 -0
- package/dist/shared/dashboard-owner-names.js.map +1 -0
- package/dist/shared/dashboard-recents.d.ts +34 -0
- package/dist/shared/dashboard-recents.d.ts.map +1 -0
- package/dist/shared/dashboard-recents.js +87 -0
- package/dist/shared/dashboard-recents.js.map +1 -0
- package/dist/shared/dashboards-app-install.d.ts +59 -0
- package/dist/shared/dashboards-app-install.d.ts.map +1 -0
- package/dist/shared/dashboards-app-install.js +97 -0
- package/dist/shared/dashboards-app-install.js.map +1 -0
- package/dist/shared/dashboards-app.helpers.d.ts +42 -0
- package/dist/shared/dashboards-app.helpers.d.ts.map +1 -0
- package/dist/shared/dashboards-app.helpers.js +143 -0
- package/dist/shared/dashboards-app.helpers.js.map +1 -0
- package/package.json +69 -68
|
@@ -31,11 +31,11 @@ function AIAssistantPanelComponent_For_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
31
31
|
function AIAssistantPanelComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
32
32
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
33
33
|
i0.ɵɵelementStart(0, "mj-conversation-chat-area", 12);
|
|
34
|
-
i0.ɵɵlistener("conversationCreated", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_conversationCreated_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnConversationCreated($event)); })("pendingMessageConsumed", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_pendingMessageConsumed_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnPendingMessageConsumed()); })("openEntityRecord", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_openEntityRecord_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnOpenEntityRecord($event)); })("navigationRequest", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_navigationRequest_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnNavigationRequest($event)); })("taskClicked", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_taskClicked_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnTaskClicked($event)); })("artifactLinkClicked", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_artifactLinkClicked_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnArtifactLinkClicked($event)); })("conversationRenamed", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_conversationRenamed_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnConversationRenamed($event)); })("
|
|
34
|
+
i0.ɵɵlistener("conversationCreated", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_conversationCreated_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnConversationCreated($event)); })("pendingMessageConsumed", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_pendingMessageConsumed_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnPendingMessageConsumed()); })("openEntityRecord", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_openEntityRecord_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnOpenEntityRecord($event)); })("navigationRequest", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_navigationRequest_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnNavigationRequest($event)); })("taskClicked", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_taskClicked_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnTaskClicked($event)); })("artifactLinkClicked", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_artifactLinkClicked_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnArtifactLinkClicked($event)); })("conversationRenamed", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_conversationRenamed_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnConversationRenamed($event)); })("pendingArtifactConsumed", function AIAssistantPanelComponent_Conditional_12_Template_mj_conversation_chat_area_pendingArtifactConsumed_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnPendingArtifactConsumed()); });
|
|
35
35
|
i0.ɵɵelementEnd();
|
|
36
36
|
} if (rf & 2) {
|
|
37
37
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
38
|
-
i0.ɵɵproperty("Provider", ctx_r2.Provider)("environmentId", ctx_r2.EnvironmentId)("currentUser", ctx_r2.CurrentUser)("conversationId", ctx_r2.ChatConversationId)("conversation", ctx_r2.ChatConversation)("isNewConversation", ctx_r2.ChatIsNewConversation)("pendingMessage", ctx_r2.PendingMessage)("pendingAttachments", ctx_r2.PendingAttachments)("
|
|
38
|
+
i0.ɵɵproperty("Provider", ctx_r2.Provider)("environmentId", ctx_r2.EnvironmentId)("currentUser", ctx_r2.CurrentUser)("conversationId", ctx_r2.ChatConversationId)("conversation", ctx_r2.ChatConversation)("isNewConversation", ctx_r2.ChatIsNewConversation)("pendingMessage", ctx_r2.PendingMessage)("pendingAttachments", ctx_r2.PendingAttachments)("pendingArtifactId", ctx_r2.ChatPendingArtifactId)("pendingArtifactVersionNumber", ctx_r2.ChatPendingArtifactVersionNumber)("overlayMode", true)("showExportButton", false)("showShareButton", false)("showArtifactIndicator", false)("appContext", ctx_r2.ChatAppContext)("defaultAgentId", ctx_r2.CodesmithAgentId)("applicationScope", "Application")("applicationId", ctx_r2.CockpitApplicationId)("linkedEntityId", ctx_r2.ComponentsEntityID)("linkedRecordId", ctx_r2.LinkedComponentID)("emptyStateGreeting", "How can I help with this component?");
|
|
39
39
|
} }
|
|
40
40
|
function AIAssistantPanelComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
41
41
|
i0.ɵɵelementStart(0, "div", 10);
|
|
@@ -83,7 +83,6 @@ export class AIAssistantPanelComponent extends BaseAngularComponent {
|
|
|
83
83
|
ChatIsNewConversation = true;
|
|
84
84
|
PendingMessage = null;
|
|
85
85
|
PendingAttachments = null;
|
|
86
|
-
ChatThreadId = null;
|
|
87
86
|
ChatPendingArtifactId = null;
|
|
88
87
|
ChatPendingArtifactVersionNumber = null;
|
|
89
88
|
/** Snapshot from NavigationService — drives the agent's app context. */
|
|
@@ -259,21 +258,13 @@ export class AIAssistantPanelComponent extends BaseAngularComponent {
|
|
|
259
258
|
this.cdr.markForCheck();
|
|
260
259
|
}
|
|
261
260
|
}
|
|
262
|
-
OnThreadOpened(threadId) {
|
|
263
|
-
this.ChatThreadId = threadId;
|
|
264
|
-
this.cdr.markForCheck();
|
|
265
|
-
}
|
|
266
|
-
OnThreadClosed() {
|
|
267
|
-
this.ChatThreadId = null;
|
|
268
|
-
this.cdr.markForCheck();
|
|
269
|
-
}
|
|
270
261
|
OnPendingArtifactConsumed() {
|
|
271
262
|
this.ChatPendingArtifactId = null;
|
|
272
263
|
this.ChatPendingArtifactVersionNumber = null;
|
|
273
264
|
this.cdr.markForCheck();
|
|
274
265
|
}
|
|
275
266
|
static ɵfac = function AIAssistantPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AIAssistantPanelComponent)(i0.ɵɵdirectiveInject(i1.ComponentStudioStateService)); };
|
|
276
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAssistantPanelComponent, selectors: [["mj-ai-assistant-panel"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 14, vars: 1, consts: [[1, "ai-assistant-panel"], [1, "panel-header"], [1, "header-title"], [1, "fa-solid", "fa-robot"], ["title", "Collapse panel", 1, "collapse-btn", 3, "click"], [1, "fa-solid", "fa-chevron-right"], [1, "quick-actions"], [1, "quick-action-btn", 3, "disabled", "title"], [1, "chat-host"], [3, "Provider", "environmentId", "currentUser", "conversationId", "conversation", "isNewConversation", "pendingMessage", "pendingAttachments", "
|
|
267
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAssistantPanelComponent, selectors: [["mj-ai-assistant-panel"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 14, vars: 1, consts: [[1, "ai-assistant-panel"], [1, "panel-header"], [1, "header-title"], [1, "fa-solid", "fa-robot"], ["title", "Collapse panel", 1, "collapse-btn", 3, "click"], [1, "fa-solid", "fa-chevron-right"], [1, "quick-actions"], [1, "quick-action-btn", 3, "disabled", "title"], [1, "chat-host"], [3, "Provider", "environmentId", "currentUser", "conversationId", "conversation", "isNewConversation", "pendingMessage", "pendingAttachments", "pendingArtifactId", "pendingArtifactVersionNumber", "overlayMode", "showExportButton", "showShareButton", "showArtifactIndicator", "appContext", "defaultAgentId", "applicationScope", "applicationId", "linkedEntityId", "linkedRecordId", "emptyStateGreeting"], [1, "chat-host__empty"], [1, "quick-action-btn", 3, "click", "disabled", "title"], [3, "conversationCreated", "pendingMessageConsumed", "openEntityRecord", "navigationRequest", "taskClicked", "artifactLinkClicked", "conversationRenamed", "pendingArtifactConsumed", "Provider", "environmentId", "currentUser", "conversationId", "conversation", "isNewConversation", "pendingMessage", "pendingAttachments", "pendingArtifactId", "pendingArtifactVersionNumber", "overlayMode", "showExportButton", "showShareButton", "showArtifactIndicator", "appContext", "defaultAgentId", "applicationScope", "applicationId", "linkedEntityId", "linkedRecordId", "emptyStateGreeting"]], template: function AIAssistantPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
277
268
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
|
|
278
269
|
i0.ɵɵelement(3, "i", 3);
|
|
279
270
|
i0.ɵɵelementStart(4, "span");
|
|
@@ -287,7 +278,7 @@ export class AIAssistantPanelComponent extends BaseAngularComponent {
|
|
|
287
278
|
i0.ɵɵrepeaterCreate(9, AIAssistantPanelComponent_For_10_Template, 4, 8, "button", 7, _forTrack0);
|
|
288
279
|
i0.ɵɵelementEnd();
|
|
289
280
|
i0.ɵɵelementStart(11, "div", 8);
|
|
290
|
-
i0.ɵɵconditionalCreate(12, AIAssistantPanelComponent_Conditional_12_Template, 1,
|
|
281
|
+
i0.ɵɵconditionalCreate(12, AIAssistantPanelComponent_Conditional_12_Template, 1, 21, "mj-conversation-chat-area", 9)(13, AIAssistantPanelComponent_Conditional_13_Template, 2, 0, "div", 10);
|
|
291
282
|
i0.ɵɵelementEnd()();
|
|
292
283
|
} if (rf & 2) {
|
|
293
284
|
i0.ɵɵadvance(9);
|
|
@@ -298,7 +289,7 @@ export class AIAssistantPanelComponent extends BaseAngularComponent {
|
|
|
298
289
|
}
|
|
299
290
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAssistantPanelComponent, [{
|
|
300
291
|
type: Component,
|
|
301
|
-
args: [{ standalone: false, selector: 'mj-ai-assistant-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ai-assistant-panel\">\n <!-- Header: title + collapse. Style + classes match the prior bespoke\n chat so the panel chrome lines up with the rest of the cockpit. -->\n <div class=\"panel-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-robot\"></i>\n <span>AI Assistant</span>\n </div>\n <button class=\"collapse-btn\" (click)=\"OnCollapsePanel()\" title=\"Collapse panel\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Quick Actions: clicking a button stuffs the canned prompt into\n `PendingMessage`, which the chat-area below picks up on its next\n render cycle and sends as if the user typed it. Same mechanism the\n SendErrorToAI handler uses. \"Fix Errors\" disables until an error\n has actually been observed in the runtime preview. -->\n <div class=\"quick-actions\">\n @for (action of QuickActions; track action.Label) {\n <button\n class=\"quick-action-btn\"\n [class.disabled]=\"!IsQuickActionEnabled(action)\"\n [disabled]=\"!IsQuickActionEnabled(action)\"\n (click)=\"OnQuickAction(action)\"\n [title]=\"action.Label\">\n <i class=\"fa-solid {{ action.Icon }}\"></i>\n <span>{{ action.Label }}</span>\n </button>\n }\n </div>\n\n <!-- Embedded chat-area \u2014 same primitive the main Chat app and the Form\n Builder cockpit use. Conversations here are scoped to the\n Component Studio app so they don't pollute main chat; the default\n agent is Codesmith (resolved at init from the AIEngineBase cache);\n and the conversation-header agent picker stays enabled so the user\n can switch on the fly. -->\n <div class=\"chat-host\">\n @if (CurrentUser) {\n <mj-conversation-chat-area\n [Provider]=\"Provider\"\n [environmentId]=\"EnvironmentId\"\n [currentUser]=\"CurrentUser\"\n [conversationId]=\"ChatConversationId\"\n [conversation]=\"ChatConversation\"\n [isNewConversation]=\"ChatIsNewConversation\"\n [pendingMessage]=\"PendingMessage\"\n [pendingAttachments]=\"PendingAttachments\"\n [
|
|
292
|
+
args: [{ standalone: false, selector: 'mj-ai-assistant-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ai-assistant-panel\">\n <!-- Header: title + collapse. Style + classes match the prior bespoke\n chat so the panel chrome lines up with the rest of the cockpit. -->\n <div class=\"panel-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-robot\"></i>\n <span>AI Assistant</span>\n </div>\n <button class=\"collapse-btn\" (click)=\"OnCollapsePanel()\" title=\"Collapse panel\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Quick Actions: clicking a button stuffs the canned prompt into\n `PendingMessage`, which the chat-area below picks up on its next\n render cycle and sends as if the user typed it. Same mechanism the\n SendErrorToAI handler uses. \"Fix Errors\" disables until an error\n has actually been observed in the runtime preview. -->\n <div class=\"quick-actions\">\n @for (action of QuickActions; track action.Label) {\n <button\n class=\"quick-action-btn\"\n [class.disabled]=\"!IsQuickActionEnabled(action)\"\n [disabled]=\"!IsQuickActionEnabled(action)\"\n (click)=\"OnQuickAction(action)\"\n [title]=\"action.Label\">\n <i class=\"fa-solid {{ action.Icon }}\"></i>\n <span>{{ action.Label }}</span>\n </button>\n }\n </div>\n\n <!-- Embedded chat-area \u2014 same primitive the main Chat app and the Form\n Builder cockpit use. Conversations here are scoped to the\n Component Studio app so they don't pollute main chat; the default\n agent is Codesmith (resolved at init from the AIEngineBase cache);\n and the conversation-header agent picker stays enabled so the user\n can switch on the fly. -->\n <div class=\"chat-host\">\n @if (CurrentUser) {\n <mj-conversation-chat-area\n [Provider]=\"Provider\"\n [environmentId]=\"EnvironmentId\"\n [currentUser]=\"CurrentUser\"\n [conversationId]=\"ChatConversationId\"\n [conversation]=\"ChatConversation\"\n [isNewConversation]=\"ChatIsNewConversation\"\n [pendingMessage]=\"PendingMessage\"\n [pendingAttachments]=\"PendingAttachments\"\n [pendingArtifactId]=\"ChatPendingArtifactId\"\n [pendingArtifactVersionNumber]=\"ChatPendingArtifactVersionNumber\"\n [overlayMode]=\"true\"\n [showExportButton]=\"false\"\n [showShareButton]=\"false\"\n [showArtifactIndicator]=\"false\"\n [appContext]=\"$any(ChatAppContext)\"\n [defaultAgentId]=\"CodesmithAgentId\"\n [applicationScope]=\"'Application'\"\n [applicationId]=\"CockpitApplicationId\"\n [linkedEntityId]=\"ComponentsEntityID\"\n [linkedRecordId]=\"LinkedComponentID\"\n [emptyStateGreeting]=\"'How can I help with this component?'\"\n (conversationCreated)=\"OnConversationCreated($event)\"\n (pendingMessageConsumed)=\"OnPendingMessageConsumed()\"\n (openEntityRecord)=\"OnOpenEntityRecord($event)\"\n (navigationRequest)=\"OnNavigationRequest($event)\"\n (taskClicked)=\"OnTaskClicked($event)\"\n (artifactLinkClicked)=\"OnArtifactLinkClicked($event)\"\n (conversationRenamed)=\"OnConversationRenamed($event)\"\n (pendingArtifactConsumed)=\"OnPendingArtifactConsumed()\">\n </mj-conversation-chat-area>\n } @else {\n <div class=\"chat-host__empty\">Loading\u2026</div>\n }\n </div>\n</div>\n", styles: [":host {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.ai-assistant-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n/* ============================================================ */\n/* HEADER */\n/* ============================================================ */\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n}\n\n.panel-header .header-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.panel-header .header-title i {\n color: var(--mj-brand-primary);\n font-size: 16px;\n}\n\n.panel-header .collapse-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.panel-header .collapse-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* ============================================================ */\n/* QUICK ACTIONS */\n/* ============================================================ */\n\n.quick-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n}\n\n.quick-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n border-radius: 4px;\n font-size: 12px;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.quick-action-btn i {\n color: var(--mj-brand-primary);\n font-size: 11px;\n}\n\n.quick-action-btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.quick-action-btn:disabled,\n.quick-action-btn.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ============================================================ */\n/* CHAT HOST */\n/* ============================================================ */\n\n.chat-host {\n flex: 1 1 auto;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.chat-host mj-conversation-chat-area {\n flex: 1 1 auto;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.chat-host__empty {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n"] }]
|
|
302
293
|
}], () => [{ type: i1.ComponentStudioStateService }], null); })();
|
|
303
294
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAssistantPanelComponent, { className: "AIAssistantPanelComponent", filePath: "src/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.ts", lineNumber: 72 }); })();
|
|
304
295
|
//# sourceMappingURL=ai-assistant-panel.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-assistant-panel.component.js","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.ts","../../../../src/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n inject,\n} from '@angular/core';\nimport { CompositeKey, LogError } from '@memberjunction/core';\nimport type { UserInfo } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { MJEnvironmentEntityExtended } from '@memberjunction/core-entities';\nimport type {\n MJConversationEntity,\n MJTaskEntity,\n} from '@memberjunction/core-entities';\nimport type { AppContextSnapshot } from '@memberjunction/ai-core-plus';\nimport { NavigationService } from '@memberjunction/ng-shared';\nimport type { NavigationRequest } from '@memberjunction/ng-conversations';\nimport type { PendingAttachment } from '@memberjunction/ng-composer';\nimport { ComponentStudioStateService, ComponentError } from '../../services/component-studio-state.service';\n\n/**\n * Quick-action shortcut surfaced above the embedded chat. Clicking a\n * shortcut prefills the chat input via the pendingMessage handoff — the\n * same mechanism the empty-state uses to send the first message.\n */\ninterface QuickAction {\n Label: string;\n Icon: string;\n Prompt: string;\n /** When true, the button is disabled unless `state.CurrentError` is set. */\n RequiresError: boolean;\n}\n\n/**\n * Component Studio's right-pane AI assistant.\n *\n * Previously this was a 880-line bespoke chat stub that emitted \"AI\n * assistant coming soon\" — no agent was actually called. This version\n * thin-wraps `<mj-conversation-chat-area>` (the same primitive the main\n * Chat app and the Form Builder cockpit use) so the assistant becomes\n * fully functional with zero duplicated chat plumbing.\n *\n * Domain integration preserved from the old stub:\n * - **Quick-actions bar** (Fix Errors / Improve / Generate / Explain)\n * above the chat — clicking sets `PendingMessage` which the chat-area\n * consumes on the next render, mirroring the empty-state handoff.\n * - **`SendErrorToAI` channel** — when the runtime preview throws, the\n * state service emits a `ComponentError`. We listen and shove a\n * \"Fix this error: …\" message into the same pendingMessage pipe so\n * the user doesn't have to copy/paste error text.\n *\n * Scoping:\n * - `[applicationScope]=\"'Application'\"` + Component Studio app ID →\n * conversations stay out of main chat (per the migration scoping work).\n * - `[defaultAgentId]` → Codesmith Agent so messages route to the code\n * specialist instead of Sage by default. User can still @mention any\n * agent, override via the per-conversation pin, or pick a different\n * agent through the chat header's picker.\n */\n@Component({\n standalone: false,\n selector: 'mj-ai-assistant-panel',\n templateUrl: './ai-assistant-panel.component.html',\n styleUrls: ['./ai-assistant-panel.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AIAssistantPanelComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n\n /** Quick actions surfaced as buttons above the embedded chat. */\n public QuickActions: QuickAction[] = [\n { Label: 'Fix Errors', Icon: 'fa-bug', Prompt: 'Fix this error: ', RequiresError: true },\n { Label: 'Improve Code', Icon: 'fa-magic', Prompt: 'Review and improve the current component code. Suggest optimizations, better patterns, and cleaner structure.', RequiresError: false },\n { Label: 'Generate Code', Icon: 'fa-code', Prompt: 'Generate code for the current component based on its specification.', RequiresError: false },\n { Label: 'Explain', Icon: 'fa-question-circle', Prompt: 'Explain what the current component does, including its structure, data flow, and key behaviors.', RequiresError: false },\n ];\n\n /** Embedded chat state — same shape the Form Builder cockpit uses. */\n public ChatConversation: MJConversationEntity | null = null;\n public ChatConversationId: string | null = null;\n public ChatIsNewConversation = true;\n public PendingMessage: string | null = null;\n public PendingAttachments: PendingAttachment[] | null = null;\n public ChatThreadId: string | null = null;\n public ChatPendingArtifactId: string | null = null;\n public ChatPendingArtifactVersionNumber: number | null = null;\n\n /** Snapshot from NavigationService — drives the agent's app context. */\n public ChatAppContext: AppContextSnapshot | null = null;\n\n /** Codesmith Agent ID resolved from AIEngineBase cache (no RunView). */\n public CodesmithAgentId: string | null = null;\n\n /** Component Studio's Application ID — resolved from Metadata cache. */\n public CockpitApplicationId: string | null = null;\n\n /**\n * EntityID for `MJ: Components`. Stamped on every conversation\n * created from this panel as the `LinkedEntityID`, paired with the\n * currently-selected Component's ID. Enables \"show prior conversations\n * about THIS component\" later. In-memory Metadata lookup; no RunView.\n */\n public ComponentsEntityID: string | null = null;\n\n /**\n * The DB-backed Component ID currently selected — null when the\n * panel has nothing selected, or when the selection is a\n * file-loaded (transient) component that has no persistent DB row\n * to link conversations to. Used as `[linkedRecordId]` on the\n * embedded chat-area. Pairs with {@link ComponentsEntityID}.\n */\n public get LinkedComponentID(): string | null {\n const sel = this.State.SelectedComponent;\n if (!sel) return null;\n // FileLoadedComponent has `isFileLoaded === true` and a lower-case\n // `id`; DbComponentSummary has the canonical `ID`. Discriminate by\n // the flag rather than property presence to keep TS happy.\n if ('isFileLoaded' in sel && sel.isFileLoaded === true) return null;\n return (sel as { ID: string }).ID ?? null;\n }\n\n private static readonly CODESMITH_AGENT_NAME = 'Codesmith Agent';\n private static readonly COCKPIT_APP_NAME = 'Component Studio';\n\n private readonly destroy$ = new Subject<void>();\n private appContextSubscription: Subscription | null = null;\n\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly navigationService = inject(NavigationService);\n\n constructor(public State: ComponentStudioStateService) {\n super();\n }\n\n public get EnvironmentId(): string {\n return MJEnvironmentEntityExtended.DefaultEnvironmentID;\n }\n\n public get CurrentUser(): UserInfo | null {\n return this.ProviderToUse?.CurrentUser ?? null;\n }\n\n public async ngOnInit(): Promise<void> {\n try {\n // Resolve default agent + cockpit app ID from in-memory caches\n // (no RunView round-trips). Both fall back to null cleanly:\n // missing agent → routes through Sage; missing app → safety\n // guard in chat-area demotes scope to 'Global'.\n await AIEngineBase.Instance.Config(false);\n const codesmith = AIEngineBase.Instance.Agents\n ?.find(a => a.Name?.trim().toLowerCase() === AIAssistantPanelComponent.CODESMITH_AGENT_NAME.toLowerCase());\n this.CodesmithAgentId = codesmith?.ID ?? null;\n if (!codesmith) {\n LogError(`AIAssistantPanel: '${AIAssistantPanelComponent.CODESMITH_AGENT_NAME}' not found in AIEngineBase cache`);\n }\n\n const md = this.ProviderToUse;\n const app = md.Applications?.find(\n a => a.Name?.trim().toLowerCase() === AIAssistantPanelComponent.COCKPIT_APP_NAME.toLowerCase()\n );\n this.CockpitApplicationId = app?.ID ?? null;\n // Resolve MJ: Components entity ID for conversation linkage.\n const componentsEntity = md.EntityByName?.('MJ: Components');\n if (!componentsEntity) {\n LogError(`AIAssistantPanel: Entity 'MJ: Components' not found in Metadata cache — conversation linkage will be skipped.`);\n }\n this.ComponentsEntityID = componentsEntity?.ID ?? null;\n\n // Subscribe to the Explorer shell's app-context publisher so\n // the agent sees the same snapshot the floating overlay sees.\n this.appContextSubscription = this.navigationService.AppContextSnapshot$\n .subscribe(snapshot => {\n this.ChatAppContext = snapshot;\n this.cdr.markForCheck();\n });\n\n // Wire the SendErrorToAI channel — when the runtime preview\n // hits an error, push a canned \"Fix this error: …\" message\n // into the chat-area's pendingMessage pipe so the user\n // doesn't have to manually copy the error text.\n this.State.SendErrorToAI\n .pipe(takeUntil(this.destroy$))\n .subscribe(err => this.handleIncomingError(err));\n this.cdr.markForCheck();\n } catch (err) {\n LogError(`AIAssistantPanel.ngOnInit: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.appContextSubscription?.unsubscribe();\n this.appContextSubscription = null;\n }\n\n /** Collapse the right pane (delegated to the parent dashboard). */\n public OnCollapsePanel(): void {\n this.State.IsAIPanelCollapsed = true;\n this.State.StateChanged.emit();\n }\n\n /** Quick-action click — prefill the chat with the canned prompt. */\n public OnQuickAction(action: QuickAction): void {\n if (action.RequiresError && !this.State.CurrentError) return;\n let prompt = action.Prompt;\n if (action.RequiresError && this.State.CurrentError) {\n prompt += `${this.State.CurrentError.type} - ${this.State.CurrentError.message}`;\n }\n this.PendingMessage = prompt;\n this.PendingAttachments = null;\n this.cdr.markForCheck();\n }\n\n public IsQuickActionEnabled(action: QuickAction): boolean {\n return !action.RequiresError || this.State.CurrentError != null;\n }\n\n /** Runtime preview surfaced an error — auto-send \"Fix this error: …\". */\n private handleIncomingError(error: ComponentError): void {\n const details = error.technicalDetails\n ? (typeof error.technicalDetails === 'string'\n ? error.technicalDetails\n : JSON.stringify(error.technicalDetails, null, 2))\n : '';\n this.PendingMessage = `Fix this error: ${error.type} - ${error.message}${details ? '\\n\\nDetails:\\n' + details : ''}`;\n this.PendingAttachments = null;\n this.cdr.markForCheck();\n }\n\n // ── chat-area event wiring ───────────────────────────────────────\n\n public OnConversationCreated(event: {\n conversation: MJConversationEntity;\n pendingMessage?: string;\n pendingAttachments?: PendingAttachment[];\n }): void {\n this.PendingMessage = event.pendingMessage ?? null;\n this.PendingAttachments = (event.pendingAttachments ?? null) as PendingAttachment[] | null;\n this.ChatConversation = event.conversation;\n this.ChatConversationId = event.conversation.ID;\n this.ChatIsNewConversation = false;\n this.cdr.markForCheck();\n }\n\n public OnPendingMessageConsumed(): void {\n this.PendingMessage = null;\n this.PendingAttachments = null;\n this.cdr.markForCheck();\n }\n\n public OnOpenEntityRecord(event: { entityName: string; compositeKey: CompositeKey }): void {\n try {\n this.navigationService.OpenEntityRecord(event.entityName, event.compositeKey);\n } catch (err) {\n LogError(`AIAssistantPanel.OnOpenEntityRecord: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n public OnNavigationRequest(event: NavigationRequest): void {\n void this.navigationService.OpenNavItemByName(event.navItemName, event.params, event.appId);\n }\n\n public OnTaskClicked(task: MJTaskEntity): void {\n try {\n this.navigationService.OpenEntityRecord('MJ: Tasks', CompositeKey.FromID(task.ID));\n } catch (err) {\n LogError(`AIAssistantPanel.OnTaskClicked: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n public OnArtifactLinkClicked(event: { type: 'conversation' | 'collection'; id: string }): void {\n const navItemName = event.type === 'conversation' ? 'Conversations' : 'Collections';\n const paramKey = event.type === 'conversation' ? 'conversationId' : 'collectionId';\n void this.navigationService.OpenNavItemByName(navItemName, { [paramKey]: event.id });\n }\n\n public OnConversationRenamed(event: { conversationId: string; name: string; description: string }): void {\n if (this.ChatConversation && UUIDsEqual(this.ChatConversation.ID, event.conversationId)) {\n this.ChatConversation.Name = event.name;\n if (event.description !== undefined) {\n this.ChatConversation.Description = event.description;\n }\n this.cdr.markForCheck();\n }\n }\n\n public OnThreadOpened(threadId: string): void {\n this.ChatThreadId = threadId;\n this.cdr.markForCheck();\n }\n\n public OnThreadClosed(): void {\n this.ChatThreadId = null;\n this.cdr.markForCheck();\n }\n\n public OnPendingArtifactConsumed(): void {\n this.ChatPendingArtifactId = null;\n this.ChatPendingArtifactVersionNumber = null;\n this.cdr.markForCheck();\n }\n}\n","<div class=\"ai-assistant-panel\">\n <!-- Header: title + collapse. Style + classes match the prior bespoke\n chat so the panel chrome lines up with the rest of the cockpit. -->\n <div class=\"panel-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-robot\"></i>\n <span>AI Assistant</span>\n </div>\n <button class=\"collapse-btn\" (click)=\"OnCollapsePanel()\" title=\"Collapse panel\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Quick Actions: clicking a button stuffs the canned prompt into\n `PendingMessage`, which the chat-area below picks up on its next\n render cycle and sends as if the user typed it. Same mechanism the\n SendErrorToAI handler uses. \"Fix Errors\" disables until an error\n has actually been observed in the runtime preview. -->\n <div class=\"quick-actions\">\n @for (action of QuickActions; track action.Label) {\n <button\n class=\"quick-action-btn\"\n [class.disabled]=\"!IsQuickActionEnabled(action)\"\n [disabled]=\"!IsQuickActionEnabled(action)\"\n (click)=\"OnQuickAction(action)\"\n [title]=\"action.Label\">\n <i class=\"fa-solid {{ action.Icon }}\"></i>\n <span>{{ action.Label }}</span>\n </button>\n }\n </div>\n\n <!-- Embedded chat-area — same primitive the main Chat app and the Form\n Builder cockpit use. Conversations here are scoped to the\n Component Studio app so they don't pollute main chat; the default\n agent is Codesmith (resolved at init from the AIEngineBase cache);\n and the conversation-header agent picker stays enabled so the user\n can switch on the fly. -->\n <div class=\"chat-host\">\n @if (CurrentUser) {\n <mj-conversation-chat-area\n [Provider]=\"Provider\"\n [environmentId]=\"EnvironmentId\"\n [currentUser]=\"CurrentUser\"\n [conversationId]=\"ChatConversationId\"\n [conversation]=\"ChatConversation\"\n [isNewConversation]=\"ChatIsNewConversation\"\n [pendingMessage]=\"PendingMessage\"\n [pendingAttachments]=\"PendingAttachments\"\n [threadId]=\"ChatThreadId\"\n [pendingArtifactId]=\"ChatPendingArtifactId\"\n [pendingArtifactVersionNumber]=\"ChatPendingArtifactVersionNumber\"\n [overlayMode]=\"true\"\n [showExportButton]=\"false\"\n [showShareButton]=\"false\"\n [showArtifactIndicator]=\"false\"\n [appContext]=\"$any(ChatAppContext)\"\n [defaultAgentId]=\"CodesmithAgentId\"\n [applicationScope]=\"'Application'\"\n [applicationId]=\"CockpitApplicationId\"\n [linkedEntityId]=\"ComponentsEntityID\"\n [linkedRecordId]=\"LinkedComponentID\"\n [emptyStateGreeting]=\"'How can I help with this component?'\"\n (conversationCreated)=\"OnConversationCreated($event)\"\n (pendingMessageConsumed)=\"OnPendingMessageConsumed()\"\n (openEntityRecord)=\"OnOpenEntityRecord($event)\"\n (navigationRequest)=\"OnNavigationRequest($event)\"\n (taskClicked)=\"OnTaskClicked($event)\"\n (artifactLinkClicked)=\"OnArtifactLinkClicked($event)\"\n (conversationRenamed)=\"OnConversationRenamed($event)\"\n (threadOpened)=\"OnThreadOpened($event)\"\n (threadClosed)=\"OnThreadClosed()\"\n (pendingArtifactConsumed)=\"OnPendingArtifactConsumed()\">\n </mj-conversation-chat-area>\n } @else {\n <div class=\"chat-host__empty\">Loading…</div>\n }\n </div>\n</div>\n"]}
|
|
1
|
+
{"version":3,"file":"ai-assistant-panel.component.js","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.ts","../../../../src/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n inject,\n} from '@angular/core';\nimport { CompositeKey, LogError } from '@memberjunction/core';\nimport type { UserInfo } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { MJEnvironmentEntityExtended } from '@memberjunction/core-entities';\nimport type {\n MJConversationEntity,\n MJTaskEntity,\n} from '@memberjunction/core-entities';\nimport type { AppContextSnapshot } from '@memberjunction/ai-core-plus';\nimport { NavigationService } from '@memberjunction/ng-shared';\nimport type { NavigationRequest } from '@memberjunction/ng-conversations';\nimport type { PendingAttachment } from '@memberjunction/ng-composer';\nimport { ComponentStudioStateService, ComponentError } from '../../services/component-studio-state.service';\n\n/**\n * Quick-action shortcut surfaced above the embedded chat. Clicking a\n * shortcut prefills the chat input via the pendingMessage handoff — the\n * same mechanism the empty-state uses to send the first message.\n */\ninterface QuickAction {\n Label: string;\n Icon: string;\n Prompt: string;\n /** When true, the button is disabled unless `state.CurrentError` is set. */\n RequiresError: boolean;\n}\n\n/**\n * Component Studio's right-pane AI assistant.\n *\n * Previously this was a 880-line bespoke chat stub that emitted \"AI\n * assistant coming soon\" — no agent was actually called. This version\n * thin-wraps `<mj-conversation-chat-area>` (the same primitive the main\n * Chat app and the Form Builder cockpit use) so the assistant becomes\n * fully functional with zero duplicated chat plumbing.\n *\n * Domain integration preserved from the old stub:\n * - **Quick-actions bar** (Fix Errors / Improve / Generate / Explain)\n * above the chat — clicking sets `PendingMessage` which the chat-area\n * consumes on the next render, mirroring the empty-state handoff.\n * - **`SendErrorToAI` channel** — when the runtime preview throws, the\n * state service emits a `ComponentError`. We listen and shove a\n * \"Fix this error: …\" message into the same pendingMessage pipe so\n * the user doesn't have to copy/paste error text.\n *\n * Scoping:\n * - `[applicationScope]=\"'Application'\"` + Component Studio app ID →\n * conversations stay out of main chat (per the migration scoping work).\n * - `[defaultAgentId]` → Codesmith Agent so messages route to the code\n * specialist instead of Sage by default. User can still @mention any\n * agent, override via the per-conversation pin, or pick a different\n * agent through the chat header's picker.\n */\n@Component({\n standalone: false,\n selector: 'mj-ai-assistant-panel',\n templateUrl: './ai-assistant-panel.component.html',\n styleUrls: ['./ai-assistant-panel.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AIAssistantPanelComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n\n /** Quick actions surfaced as buttons above the embedded chat. */\n public QuickActions: QuickAction[] = [\n { Label: 'Fix Errors', Icon: 'fa-bug', Prompt: 'Fix this error: ', RequiresError: true },\n { Label: 'Improve Code', Icon: 'fa-magic', Prompt: 'Review and improve the current component code. Suggest optimizations, better patterns, and cleaner structure.', RequiresError: false },\n { Label: 'Generate Code', Icon: 'fa-code', Prompt: 'Generate code for the current component based on its specification.', RequiresError: false },\n { Label: 'Explain', Icon: 'fa-question-circle', Prompt: 'Explain what the current component does, including its structure, data flow, and key behaviors.', RequiresError: false },\n ];\n\n /** Embedded chat state — same shape the Form Builder cockpit uses. */\n public ChatConversation: MJConversationEntity | null = null;\n public ChatConversationId: string | null = null;\n public ChatIsNewConversation = true;\n public PendingMessage: string | null = null;\n public PendingAttachments: PendingAttachment[] | null = null;\n public ChatPendingArtifactId: string | null = null;\n public ChatPendingArtifactVersionNumber: number | null = null;\n\n /** Snapshot from NavigationService — drives the agent's app context. */\n public ChatAppContext: AppContextSnapshot | null = null;\n\n /** Codesmith Agent ID resolved from AIEngineBase cache (no RunView). */\n public CodesmithAgentId: string | null = null;\n\n /** Component Studio's Application ID — resolved from Metadata cache. */\n public CockpitApplicationId: string | null = null;\n\n /**\n * EntityID for `MJ: Components`. Stamped on every conversation\n * created from this panel as the `LinkedEntityID`, paired with the\n * currently-selected Component's ID. Enables \"show prior conversations\n * about THIS component\" later. In-memory Metadata lookup; no RunView.\n */\n public ComponentsEntityID: string | null = null;\n\n /**\n * The DB-backed Component ID currently selected — null when the\n * panel has nothing selected, or when the selection is a\n * file-loaded (transient) component that has no persistent DB row\n * to link conversations to. Used as `[linkedRecordId]` on the\n * embedded chat-area. Pairs with {@link ComponentsEntityID}.\n */\n public get LinkedComponentID(): string | null {\n const sel = this.State.SelectedComponent;\n if (!sel) return null;\n // FileLoadedComponent has `isFileLoaded === true` and a lower-case\n // `id`; DbComponentSummary has the canonical `ID`. Discriminate by\n // the flag rather than property presence to keep TS happy.\n if ('isFileLoaded' in sel && sel.isFileLoaded === true) return null;\n return (sel as { ID: string }).ID ?? null;\n }\n\n private static readonly CODESMITH_AGENT_NAME = 'Codesmith Agent';\n private static readonly COCKPIT_APP_NAME = 'Component Studio';\n\n private readonly destroy$ = new Subject<void>();\n private appContextSubscription: Subscription | null = null;\n\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly navigationService = inject(NavigationService);\n\n constructor(public State: ComponentStudioStateService) {\n super();\n }\n\n public get EnvironmentId(): string {\n return MJEnvironmentEntityExtended.DefaultEnvironmentID;\n }\n\n public get CurrentUser(): UserInfo | null {\n return this.ProviderToUse?.CurrentUser ?? null;\n }\n\n public async ngOnInit(): Promise<void> {\n try {\n // Resolve default agent + cockpit app ID from in-memory caches\n // (no RunView round-trips). Both fall back to null cleanly:\n // missing agent → routes through Sage; missing app → safety\n // guard in chat-area demotes scope to 'Global'.\n await AIEngineBase.Instance.Config(false);\n const codesmith = AIEngineBase.Instance.Agents\n ?.find(a => a.Name?.trim().toLowerCase() === AIAssistantPanelComponent.CODESMITH_AGENT_NAME.toLowerCase());\n this.CodesmithAgentId = codesmith?.ID ?? null;\n if (!codesmith) {\n LogError(`AIAssistantPanel: '${AIAssistantPanelComponent.CODESMITH_AGENT_NAME}' not found in AIEngineBase cache`);\n }\n\n const md = this.ProviderToUse;\n const app = md.Applications?.find(\n a => a.Name?.trim().toLowerCase() === AIAssistantPanelComponent.COCKPIT_APP_NAME.toLowerCase()\n );\n this.CockpitApplicationId = app?.ID ?? null;\n // Resolve MJ: Components entity ID for conversation linkage.\n const componentsEntity = md.EntityByName?.('MJ: Components');\n if (!componentsEntity) {\n LogError(`AIAssistantPanel: Entity 'MJ: Components' not found in Metadata cache — conversation linkage will be skipped.`);\n }\n this.ComponentsEntityID = componentsEntity?.ID ?? null;\n\n // Subscribe to the Explorer shell's app-context publisher so\n // the agent sees the same snapshot the floating overlay sees.\n this.appContextSubscription = this.navigationService.AppContextSnapshot$\n .subscribe(snapshot => {\n this.ChatAppContext = snapshot;\n this.cdr.markForCheck();\n });\n\n // Wire the SendErrorToAI channel — when the runtime preview\n // hits an error, push a canned \"Fix this error: …\" message\n // into the chat-area's pendingMessage pipe so the user\n // doesn't have to manually copy the error text.\n this.State.SendErrorToAI\n .pipe(takeUntil(this.destroy$))\n .subscribe(err => this.handleIncomingError(err));\n this.cdr.markForCheck();\n } catch (err) {\n LogError(`AIAssistantPanel.ngOnInit: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.appContextSubscription?.unsubscribe();\n this.appContextSubscription = null;\n }\n\n /** Collapse the right pane (delegated to the parent dashboard). */\n public OnCollapsePanel(): void {\n this.State.IsAIPanelCollapsed = true;\n this.State.StateChanged.emit();\n }\n\n /** Quick-action click — prefill the chat with the canned prompt. */\n public OnQuickAction(action: QuickAction): void {\n if (action.RequiresError && !this.State.CurrentError) return;\n let prompt = action.Prompt;\n if (action.RequiresError && this.State.CurrentError) {\n prompt += `${this.State.CurrentError.type} - ${this.State.CurrentError.message}`;\n }\n this.PendingMessage = prompt;\n this.PendingAttachments = null;\n this.cdr.markForCheck();\n }\n\n public IsQuickActionEnabled(action: QuickAction): boolean {\n return !action.RequiresError || this.State.CurrentError != null;\n }\n\n /** Runtime preview surfaced an error — auto-send \"Fix this error: …\". */\n private handleIncomingError(error: ComponentError): void {\n const details = error.technicalDetails\n ? (typeof error.technicalDetails === 'string'\n ? error.technicalDetails\n : JSON.stringify(error.technicalDetails, null, 2))\n : '';\n this.PendingMessage = `Fix this error: ${error.type} - ${error.message}${details ? '\\n\\nDetails:\\n' + details : ''}`;\n this.PendingAttachments = null;\n this.cdr.markForCheck();\n }\n\n // ── chat-area event wiring ───────────────────────────────────────\n\n public OnConversationCreated(event: {\n conversation: MJConversationEntity;\n pendingMessage?: string;\n pendingAttachments?: PendingAttachment[];\n }): void {\n this.PendingMessage = event.pendingMessage ?? null;\n this.PendingAttachments = (event.pendingAttachments ?? null) as PendingAttachment[] | null;\n this.ChatConversation = event.conversation;\n this.ChatConversationId = event.conversation.ID;\n this.ChatIsNewConversation = false;\n this.cdr.markForCheck();\n }\n\n public OnPendingMessageConsumed(): void {\n this.PendingMessage = null;\n this.PendingAttachments = null;\n this.cdr.markForCheck();\n }\n\n public OnOpenEntityRecord(event: { entityName: string; compositeKey: CompositeKey }): void {\n try {\n this.navigationService.OpenEntityRecord(event.entityName, event.compositeKey);\n } catch (err) {\n LogError(`AIAssistantPanel.OnOpenEntityRecord: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n public OnNavigationRequest(event: NavigationRequest): void {\n void this.navigationService.OpenNavItemByName(event.navItemName, event.params, event.appId);\n }\n\n public OnTaskClicked(task: MJTaskEntity): void {\n try {\n this.navigationService.OpenEntityRecord('MJ: Tasks', CompositeKey.FromID(task.ID));\n } catch (err) {\n LogError(`AIAssistantPanel.OnTaskClicked: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n public OnArtifactLinkClicked(event: { type: 'conversation' | 'collection'; id: string }): void {\n const navItemName = event.type === 'conversation' ? 'Conversations' : 'Collections';\n const paramKey = event.type === 'conversation' ? 'conversationId' : 'collectionId';\n void this.navigationService.OpenNavItemByName(navItemName, { [paramKey]: event.id });\n }\n\n public OnConversationRenamed(event: { conversationId: string; name: string; description: string }): void {\n if (this.ChatConversation && UUIDsEqual(this.ChatConversation.ID, event.conversationId)) {\n this.ChatConversation.Name = event.name;\n if (event.description !== undefined) {\n this.ChatConversation.Description = event.description;\n }\n this.cdr.markForCheck();\n }\n }\n\n public OnPendingArtifactConsumed(): void {\n this.ChatPendingArtifactId = null;\n this.ChatPendingArtifactVersionNumber = null;\n this.cdr.markForCheck();\n }\n}\n","<div class=\"ai-assistant-panel\">\n <!-- Header: title + collapse. Style + classes match the prior bespoke\n chat so the panel chrome lines up with the rest of the cockpit. -->\n <div class=\"panel-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-robot\"></i>\n <span>AI Assistant</span>\n </div>\n <button class=\"collapse-btn\" (click)=\"OnCollapsePanel()\" title=\"Collapse panel\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Quick Actions: clicking a button stuffs the canned prompt into\n `PendingMessage`, which the chat-area below picks up on its next\n render cycle and sends as if the user typed it. Same mechanism the\n SendErrorToAI handler uses. \"Fix Errors\" disables until an error\n has actually been observed in the runtime preview. -->\n <div class=\"quick-actions\">\n @for (action of QuickActions; track action.Label) {\n <button\n class=\"quick-action-btn\"\n [class.disabled]=\"!IsQuickActionEnabled(action)\"\n [disabled]=\"!IsQuickActionEnabled(action)\"\n (click)=\"OnQuickAction(action)\"\n [title]=\"action.Label\">\n <i class=\"fa-solid {{ action.Icon }}\"></i>\n <span>{{ action.Label }}</span>\n </button>\n }\n </div>\n\n <!-- Embedded chat-area — same primitive the main Chat app and the Form\n Builder cockpit use. Conversations here are scoped to the\n Component Studio app so they don't pollute main chat; the default\n agent is Codesmith (resolved at init from the AIEngineBase cache);\n and the conversation-header agent picker stays enabled so the user\n can switch on the fly. -->\n <div class=\"chat-host\">\n @if (CurrentUser) {\n <mj-conversation-chat-area\n [Provider]=\"Provider\"\n [environmentId]=\"EnvironmentId\"\n [currentUser]=\"CurrentUser\"\n [conversationId]=\"ChatConversationId\"\n [conversation]=\"ChatConversation\"\n [isNewConversation]=\"ChatIsNewConversation\"\n [pendingMessage]=\"PendingMessage\"\n [pendingAttachments]=\"PendingAttachments\"\n [pendingArtifactId]=\"ChatPendingArtifactId\"\n [pendingArtifactVersionNumber]=\"ChatPendingArtifactVersionNumber\"\n [overlayMode]=\"true\"\n [showExportButton]=\"false\"\n [showShareButton]=\"false\"\n [showArtifactIndicator]=\"false\"\n [appContext]=\"$any(ChatAppContext)\"\n [defaultAgentId]=\"CodesmithAgentId\"\n [applicationScope]=\"'Application'\"\n [applicationId]=\"CockpitApplicationId\"\n [linkedEntityId]=\"ComponentsEntityID\"\n [linkedRecordId]=\"LinkedComponentID\"\n [emptyStateGreeting]=\"'How can I help with this component?'\"\n (conversationCreated)=\"OnConversationCreated($event)\"\n (pendingMessageConsumed)=\"OnPendingMessageConsumed()\"\n (openEntityRecord)=\"OnOpenEntityRecord($event)\"\n (navigationRequest)=\"OnNavigationRequest($event)\"\n (taskClicked)=\"OnTaskClicked($event)\"\n (artifactLinkClicked)=\"OnArtifactLinkClicked($event)\"\n (conversationRenamed)=\"OnConversationRenamed($event)\"\n (pendingArtifactConsumed)=\"OnPendingArtifactConsumed()\">\n </mj-conversation-chat-area>\n } @else {\n <div class=\"chat-host__empty\">Loading…</div>\n }\n </div>\n</div>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-load-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"artifact-load-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -799,6 +799,7 @@ export class ArtifactLoadDialogComponent extends BaseAngularComponent {
|
|
|
799
799
|
this.cdr.detectChanges();
|
|
800
800
|
try {
|
|
801
801
|
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
802
|
+
// conversation-scope: artifact-wide read, no conversation path applies
|
|
802
803
|
const result = await rv.RunView({
|
|
803
804
|
EntityName: 'MJ: Artifact Versions',
|
|
804
805
|
ExtraFilter: `ArtifactID = '${artifactId}'`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-load-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts","../../../src/ComponentStudio/components/artifact-load-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { RunView } from '@memberjunction/core';\nimport {\n MJArtifactEntity,\n MJArtifactVersionEntity,\n MJCollectionEntity,\n MJCollectionArtifactEntity\n} from '@memberjunction/core-entities';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nexport interface ArtifactLoadResult {\n spec: ComponentSpec;\n artifactID: string;\n versionID: string;\n versionNumber: number;\n artifactName: string;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-load-dialog',\n templateUrl: './artifact-load-dialog.component.html',\n styleUrl: './artifact-load-dialog.component.css'\n})\nexport class ArtifactLoadDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactLoadResult | undefined>();\n\n // Tab state\n ActiveTab = 0;\n\n /** @deprecated Use {@link ActiveTab}. */\n get activeTab() {\n return this.ActiveTab;\n }\n /** @deprecated Use {@link ActiveTab}. */\n set activeTab(value) {\n this.ActiveTab = value;\n } // 0 = Artifacts, 1 = Collections\n\n // Artifacts data\n Artifacts: MJArtifactEntity[] = [];\n\n /** @deprecated Use {@link Artifacts}. */\n get artifacts(): MJArtifactEntity[] {\n return this.Artifacts;\n }\n /** @deprecated Use {@link Artifacts}. */\n set artifacts(value: MJArtifactEntity[]) {\n this.Artifacts = value;\n }\n ArtifactVersions: MJArtifactVersionEntity[] = [];\n\n /** @deprecated Use {@link ArtifactVersions}. */\n get artifactVersions(): MJArtifactVersionEntity[] {\n return this.ArtifactVersions;\n }\n /** @deprecated Use {@link ArtifactVersions}. */\n set artifactVersions(value: MJArtifactVersionEntity[]) {\n this.ArtifactVersions = value;\n }\n SelectedArtifact: MJArtifactEntity | null = null;\n\n /** @deprecated Use {@link SelectedArtifact}. */\n get selectedArtifact(): MJArtifactEntity | null {\n return this.SelectedArtifact;\n }\n /** @deprecated Use {@link SelectedArtifact}. */\n set selectedArtifact(value: MJArtifactEntity | null) {\n this.SelectedArtifact = value;\n }\n SelectedVersion: MJArtifactVersionEntity | null = null;\n\n /** @deprecated Use {@link SelectedVersion}. */\n get selectedVersion(): MJArtifactVersionEntity | null {\n return this.SelectedVersion;\n }\n /** @deprecated Use {@link SelectedVersion}. */\n set selectedVersion(value: MJArtifactVersionEntity | null) {\n this.SelectedVersion = value;\n }\n\n // Collections data\n Collections: MJCollectionEntity[] = [];\n\n /** @deprecated Use {@link Collections}. */\n get collections(): MJCollectionEntity[] {\n return this.Collections;\n }\n /** @deprecated Use {@link Collections}. */\n set collections(value: MJCollectionEntity[]) {\n this.Collections = value;\n }\n SelectedCollection: MJCollectionEntity | null = null;\n\n /** @deprecated Use {@link SelectedCollection}. */\n get selectedCollection(): MJCollectionEntity | null {\n return this.SelectedCollection;\n }\n /** @deprecated Use {@link SelectedCollection}. */\n set selectedCollection(value: MJCollectionEntity | null) {\n this.SelectedCollection = value;\n }\n CollectionArtifacts: MJArtifactEntity[] = [];\n\n /** @deprecated Use {@link CollectionArtifacts}. */\n get collectionArtifacts(): MJArtifactEntity[] {\n return this.CollectionArtifacts;\n }\n /** @deprecated Use {@link CollectionArtifacts}. */\n set collectionArtifacts(value: MJArtifactEntity[]) {\n this.CollectionArtifacts = value;\n }\n\n // Search and filter\n SearchTerm = '';\n\n /** @deprecated Use {@link SearchTerm}. */\n get searchTerm() {\n return this.SearchTerm;\n }\n /** @deprecated Use {@link SearchTerm}. */\n set searchTerm(value) {\n this.SearchTerm = value;\n }\n SelectedArtifactType = '';\n\n /** @deprecated Use {@link SelectedArtifactType}. */\n get selectedArtifactType() {\n return this.SelectedArtifactType;\n }\n /** @deprecated Use {@link SelectedArtifactType}. */\n set selectedArtifactType(value) {\n this.SelectedArtifactType = value;\n }\n UserEmail = '';\n\n /** @deprecated Use {@link UserEmail}. */\n get userEmail() {\n return this.UserEmail;\n }\n /** @deprecated Use {@link UserEmail}. */\n set userEmail(value) {\n this.UserEmail = value;\n }\n\n // Paging\n CurrentPage = 0;\n\n /** @deprecated Use {@link CurrentPage}. */\n get currentPage() {\n return this.CurrentPage;\n }\n /** @deprecated Use {@link CurrentPage}. */\n set currentPage(value) {\n this.CurrentPage = value;\n }\n pageSize = 25;\n TotalArtifacts = 0;\n\n /** @deprecated Use {@link TotalArtifacts}. */\n get totalArtifacts() {\n return this.TotalArtifacts;\n }\n /** @deprecated Use {@link TotalArtifacts}. */\n set totalArtifacts(value) {\n this.TotalArtifacts = value;\n }\n HasMorePages = false;\n\n /** @deprecated Use {@link HasMorePages}. */\n get hasMorePages() {\n return this.HasMorePages;\n }\n /** @deprecated Use {@link HasMorePages}. */\n set hasMorePages(value) {\n this.HasMorePages = value;\n }\n\n // UI state\n isLoading = true;\n IsLoadingVersions = false;\n\n /** @deprecated Use {@link IsLoadingVersions}. */\n get isLoadingVersions() {\n return this.IsLoadingVersions;\n }\n /** @deprecated Use {@link IsLoadingVersions}. */\n set isLoadingVersions(value) {\n this.IsLoadingVersions = value;\n }\n IsLoadingCollections = false;\n\n /** @deprecated Use {@link IsLoadingCollections}. */\n get isLoadingCollections() {\n return this.IsLoadingCollections;\n }\n /** @deprecated Use {@link IsLoadingCollections}. */\n set isLoadingCollections(value) {\n this.IsLoadingCollections = value;\n }\n IsFilterPanelCollapsed = false;\n\n /** @deprecated Use {@link IsFilterPanelCollapsed}. */\n get isFilterPanelCollapsed() {\n return this.IsFilterPanelCollapsed;\n }\n /** @deprecated Use {@link IsFilterPanelCollapsed}. */\n set isFilterPanelCollapsed(value) {\n this.IsFilterPanelCollapsed = value;\n }\n\n // Preview\n PreviewSpec: ComponentSpec | null = null;\n\n /** @deprecated Use {@link PreviewSpec}. */\n get previewSpec(): ComponentSpec | null {\n return this.PreviewSpec;\n }\n /** @deprecated Use {@link PreviewSpec}. */\n set previewSpec(value: ComponentSpec | null) {\n this.PreviewSpec = value;\n }\n PreviewError: string | null = null;\n\n /** @deprecated Use {@link PreviewError}. */\n get previewError(): string | null {\n return this.PreviewError;\n }\n /** @deprecated Use {@link PreviewError}. */\n set previewError(value: string | null) {\n this.PreviewError = value;\n }\n ShowJsonPreview = false;\n\n /** @deprecated Use {@link ShowJsonPreview}. */\n get showJsonPreview() {\n return this.ShowJsonPreview;\n }\n /** @deprecated Use {@link ShowJsonPreview}. */\n set showJsonPreview(value) {\n this.ShowJsonPreview = value;\n }\n\n private get metadata() { return this.ProviderToUse; }\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n private cdr = inject(ChangeDetectorRef);\n\n async ngOnInit() {\n // Setup search debouncing\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.FilterArtifacts();\n });\n\n await Promise.all([\n this.LoadArtifacts(),\n this.LoadCollections()\n ]);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async LoadArtifacts() {\n this.isLoading = true;\n this.cdr.detectChanges();\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const startRow = this.CurrentPage * this.pageSize;\n\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: this.buildArtifactFilter(),\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: this.pageSize,\n StartRow: startRow,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.Artifacts = result.Results;\n this.TotalArtifacts = result.TotalRowCount || 0;\n const totalPages = Math.ceil(this.TotalArtifacts / this.pageSize);\n this.HasMorePages = this.CurrentPage < totalPages - 1;\n }\n } catch (error) {\n console.error('Error loading artifacts:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadArtifacts}. */\n async loadArtifacts() {\n return this.LoadArtifacts();\n }\n\n async LoadCollections() {\n this.IsLoadingCollections = true;\n this.cdr.detectChanges();\n try {\n const currentUserId = this.metadata.CurrentUser?.ID;\n if (!currentUserId) {\n this.Collections = [];\n return;\n }\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJCollectionEntity>({\n EntityName: 'MJ: Collections',\n ExtraFilter: `UserID = '${currentUserId}' OR ID IN (\n SELECT CollectionID FROM __mj.vwCollectionPermissions\n WHERE UserID = '${currentUserId}' AND CanRead = 1\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.Collections = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collections:', error);\n this.Collections = [];\n } finally {\n this.IsLoadingCollections = false;\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadCollections}. */\n async loadCollections() {\n return this.LoadCollections();\n }\n\n async SelectCollection(collection: MJCollectionEntity) {\n this.SelectedCollection = collection;\n this.SelectedArtifact = null;\n this.SelectedVersion = null;\n this.ArtifactVersions = [];\n this.cdr.detectChanges();\n\n // Load artifacts in this collection\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: `ID IN (\n SELECT DISTINCT av.ArtifactID\n FROM __mj.vwArtifactVersions av\n INNER JOIN __mj.vwCollectionArtifacts ca ON ca.ArtifactVersionID = av.ID\n WHERE ca.CollectionID = '${collection.ID}'\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.CollectionArtifacts = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collection artifacts:', error);\n this.CollectionArtifacts = [];\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link SelectCollection}. */\n async selectCollection(collection: MJCollectionEntity) {\n return this.SelectCollection(collection);\n }\n\n private buildArtifactFilter(): string {\n const filters: string[] = [];\n\n // Always filter to Component type by default\n if (this.SelectedArtifactType) {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.SelectedArtifactType}')`);\n } else {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = 'Component')`);\n }\n\n // Search filter\n if (this.SearchTerm?.trim()) {\n const term = this.SearchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n\n // User email filter\n if (this.UserEmail?.trim()) {\n const md = this.ProviderToUse;\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n filters.push(`UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.UserEmail.trim()}%')`);\n }\n\n return filters.length > 0 ? filters.join(' AND ') : '';\n }\n\n async SelectArtifact(artifact: MJArtifactEntity) {\n this.SelectedArtifact = artifact;\n this.SelectedVersion = null;\n this.PreviewSpec = null;\n this.PreviewError = null;\n this.cdr.detectChanges();\n\n await this.LoadVersions(artifact.ID);\n }\n\n /** @deprecated Use {@link SelectArtifact}. */\n async selectArtifact(artifact: MJArtifactEntity) {\n return this.SelectArtifact(artifact);\n }\n\n async LoadVersions(artifactId: string) {\n this.IsLoadingVersions = true;\n this.cdr.detectChanges();\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.ArtifactVersions = result.Results;\n\n // Auto-select the latest version\n if (this.ArtifactVersions.length > 0) {\n await this.SelectVersion(this.ArtifactVersions[0]);\n }\n }\n } catch (error) {\n console.error('Error loading versions:', error);\n this.ArtifactVersions = [];\n } finally {\n this.IsLoadingVersions = false;\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadVersions}. */\n async loadVersions(artifactId: string) {\n return this.LoadVersions(artifactId);\n }\n\n async SelectVersion(version: MJArtifactVersionEntity) {\n this.SelectedVersion = version;\n await this.LoadPreview(version);\n }\n\n /** @deprecated Use {@link SelectVersion}. */\n async selectVersion(version: MJArtifactVersionEntity) {\n return this.SelectVersion(version);\n }\n\n async LoadPreview(version: MJArtifactVersionEntity) {\n try {\n this.PreviewError = null;\n\n const raw = version.Content ?? version.Configuration;\n if (!raw) {\n this.PreviewSpec = null;\n this.PreviewError = 'No content found in this version';\n return;\n }\n\n const spec = this.unwrapSpec(JSON.parse(raw));\n if (!spec) {\n this.PreviewSpec = null;\n this.PreviewError = 'Artifact content is not a recognized component spec';\n return;\n }\n\n const hasCode = typeof spec.code === 'string' && spec.code.trim().length > 0;\n const hasDeps = Array.isArray(spec.dependencies) && spec.dependencies.length > 0;\n const isRegistryRef = spec.location === 'registry' && !!spec.registry && !!spec.namespace && !!spec.name;\n if (!hasCode && !hasDeps && !isRegistryRef) {\n this.PreviewSpec = null;\n this.PreviewError = 'Artifact contains no component code, dependencies, or registry reference';\n return;\n }\n\n this.PreviewSpec = spec;\n } catch (error) {\n this.PreviewError = `Failed to parse: ${error}`;\n this.PreviewSpec = null;\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadPreview}. */\n async loadPreview(version: MJArtifactVersionEntity) {\n return this.LoadPreview(version);\n }\n\n /**\n * Skip emits artifact content as a `SkipAPIAnalysisCompleteResponse` envelope whose\n * actual ComponentSpec lives at `componentOptions[0].option`. Older saves may put the\n * envelope in `Configuration`; newer saves put it in `Content`. Either field can also\n * contain a raw spec, so this helper handles both shapes.\n */\n private unwrapSpec(parsed: unknown): ComponentSpec | null {\n if (!parsed || typeof parsed !== 'object') return null;\n const obj = parsed as { componentOptions?: Array<{ option?: ComponentSpec }> };\n if (Array.isArray(obj.componentOptions) && obj.componentOptions.length > 0 && obj.componentOptions[0]?.option) {\n return obj.componentOptions[0].option;\n }\n return parsed as ComponentSpec;\n }\n\n async FilterArtifacts() {\n this.CurrentPage = 0;\n await this.LoadArtifacts();\n }\n\n /** @deprecated Use {@link FilterArtifacts}. */\n async filterArtifacts() {\n return this.FilterArtifacts();\n }\n\n OnSearchInput() {\n this.searchSubject.next(this.SearchTerm);\n }\n\n /** @deprecated Use {@link OnSearchInput}. */\n onSearchInput() {\n return this.OnSearchInput();\n }\n\n OnArtifactTypeChange() {\n this.SelectedArtifact = null;\n this.SelectedVersion = null;\n this.ArtifactVersions = [];\n this.FilterArtifacts();\n }\n\n /** @deprecated Use {@link OnArtifactTypeChange}. */\n onArtifactTypeChange() {\n return this.OnArtifactTypeChange();\n }\n\n async NextPage() {\n if (this.HasMorePages) {\n this.CurrentPage++;\n await this.LoadArtifacts();\n }\n }\n\n /** @deprecated Use {@link NextPage}. */\n async nextPage() {\n return this.NextPage();\n }\n\n async PreviousPage() {\n if (this.CurrentPage > 0) {\n this.CurrentPage--;\n await this.LoadArtifacts();\n }\n }\n\n /** @deprecated Use {@link PreviousPage}. */\n async previousPage() {\n return this.PreviousPage();\n }\n\n CanGoNext(): boolean {\n return this.HasMorePages;\n }\n\n /** @deprecated Use {@link CanGoNext}. */\n canGoNext(): boolean {\n return this.CanGoNext();\n }\n\n CanGoPrevious(): boolean {\n return this.CurrentPage > 0;\n }\n\n /** @deprecated Use {@link CanGoPrevious}. */\n canGoPrevious(): boolean {\n return this.CanGoPrevious();\n }\n\n GetTotalPages(): number {\n return Math.ceil(this.TotalArtifacts / this.pageSize);\n }\n\n /** @deprecated Use {@link GetTotalPages}. */\n getTotalPages(): number {\n return this.GetTotalPages();\n }\n\n ToggleFilterPanel() {\n this.IsFilterPanelCollapsed = !this.IsFilterPanelCollapsed;\n }\n\n /** @deprecated Use {@link ToggleFilterPanel}. */\n toggleFilterPanel() {\n return this.ToggleFilterPanel();\n }\n\n GetActiveFilterCount(): number {\n let count = 0;\n if (this.SearchTerm?.trim()) count++;\n if (this.SelectedArtifactType) count++;\n if (this.UserEmail?.trim()) count++;\n return count;\n }\n\n /** @deprecated Use {@link GetActiveFilterCount}. */\n getActiveFilterCount(): number {\n return this.GetActiveFilterCount();\n }\n\n CanLoad(): boolean {\n return this.SelectedArtifact !== null &&\n this.SelectedVersion !== null &&\n this.PreviewSpec !== null;\n }\n\n /** @deprecated Use {@link CanLoad}. */\n canLoad(): boolean {\n return this.CanLoad();\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n load() {\n if (!this.CanLoad()) return;\n\n const result: ArtifactLoadResult = {\n spec: this.PreviewSpec!,\n artifactID: this.SelectedArtifact!.ID,\n versionID: this.SelectedVersion!.ID,\n versionNumber: this.SelectedVersion!.VersionNumber,\n artifactName: this.SelectedArtifact!.Name\n };\n\n this.Close.emit(result);\n }\n\n OnTabSelect(index: number) {\n this.ActiveTab = index;\n }\n\n /** @deprecated Use {@link OnTabSelect}. */\n onTabSelect(index: number) {\n return this.OnTabSelect(index);\n }\n\n GetArtifactsByTab(): MJArtifactEntity[] {\n return this.ActiveTab === 0 ? this.Artifacts : this.CollectionArtifacts;\n }\n\n /** @deprecated Use {@link GetArtifactsByTab}. */\n getArtifactsByTab(): MJArtifactEntity[] {\n return this.GetArtifactsByTab();\n }\n\n GetPreviewJSON(): string {\n return this.PreviewSpec ? JSON.stringify(this.PreviewSpec, null, 2) : '';\n }\n\n /** @deprecated Use {@link GetPreviewJSON}. */\n getPreviewJSON(): string {\n return this.GetPreviewJSON();\n }\n\n /** Case-insensitive UUID check whether an artifact is the currently selected artifact. */\n IsArtifactSelected(artifact: MJArtifactEntity): boolean {\n return UUIDsEqual(this.SelectedArtifact?.ID, artifact.ID);\n }\n\n /** Case-insensitive UUID check whether a collection is the currently selected collection. */\n IsCollectionSelected(collection: MJCollectionEntity): boolean {\n return UUIDsEqual(this.SelectedCollection?.ID, collection.ID);\n }\n\n /** Case-insensitive UUID check whether a version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.SelectedVersion?.ID, version.ID);\n }\n}\n","<mj-dialog [Visible]=\"true\" Title=\"Load Component from Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-load-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button mjButton (click)=\"toggleFilterPanel()\"\n variant=\"flat\"\n [class.filter-active]=\"getActiveFilterCount() > 0\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\"\n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\"\n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">Component (default)</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n\n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\"\n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 0\"\n (click)=\"onTabSelect(0)\">\n <i class=\"fa-solid fa-file-code\"></i> All Artifacts\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 1\"\n (click)=\"onTabSelect(1)\">\n <i class=\"fa-solid fa-folder\"></i> Collections\n </button>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Artifacts Tab -->\n @if (activeTab === 0) {\n <div class=\"artifacts-view\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button mjButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total)\n </span>\n <button mjButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Artifacts List -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading artifacts...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifacts.length === 0) {\n <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-inbox\"\n Title=\"No artifacts found\" />\n }\n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n\n <!-- Collections Tab -->\n @if (activeTab === 1) {\n <div class=\"collections-view\">\n <div class=\"collections-list\">\n @if (isLoadingCollections) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading collections...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (collections.length === 0) {\n <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-folder-open\"\n Title=\"No collections found\" />\n }\n @else {\n @for (collection of collections; track collection.ID) {\n <div class=\"collection-item\"\n [class.selected]=\"IsCollectionSelected(collection)\"\n (click)=\"selectCollection(collection)\">\n <div class=\"collection-icon\">\n <i class=\"fa-solid fa-folder\"></i>\n </div>\n <div class=\"collection-info\">\n <div class=\"collection-name\">{{ collection.Name }}</div>\n @if (collection.Description) {\n <div class=\"collection-description\">{{ collection.Description }}</div>\n }\n </div>\n </div>\n }\n }\n </div>\n\n @if (selectedCollection) {\n <div class=\"collection-artifacts\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-file-code\"></i>\n Artifacts in \"{{ selectedCollection.Name }}\"\n </div>\n @if (collectionArtifacts.length === 0) {\n <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-inbox\"\n Title=\"No artifacts in this collection\" />\n }\n @else {\n @for (artifact of collectionArtifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version/Preview Panel -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Versions</h4>\n </div>\n\n <div class=\"version-content\">\n @if (isLoadingVersions) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading versions...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifactVersions.length === 0) {\n <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-circle-info\"\n Title=\"No versions available\" />\n }\n @else {\n <div class=\"version-list\">\n @for (version of artifactVersions; track version.ID) {\n <div class=\"version-item\"\n [class.selected]=\"IsVersionSelected(version)\"\n (click)=\"selectVersion(version)\">\n <div class=\"version-number\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Version {{ version.VersionNumber }}\n </div>\n <div class=\"version-meta\">\n <div>{{ version.__mj_UpdatedAt | date:'short' }}</div>\n @if (version.Comments) {\n <div class=\"version-comments\">{{ version.Comments }}</div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Preview Section -->\n @if (selectedVersion) {\n <div class=\"preview-section\">\n <div class=\"preview-header\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n @if (previewError) {\n <div class=\"preview-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ previewError }}\n </div>\n }\n @else if (previewSpec) {\n <div class=\"preview-content\">\n <div class=\"preview-item\">\n <strong>Name:</strong> {{ previewSpec.name }}\n </div>\n @if (previewSpec.description) {\n <div class=\"preview-item\">\n <strong>Description:</strong> {{ previewSpec.description }}\n </div>\n }\n @if (previewSpec.type) {\n <div class=\"preview-item\">\n <strong>Type:</strong> {{ previewSpec.type }}\n </div>\n }\n @if (previewSpec.namespace) {\n <div class=\"preview-item\">\n <strong>Namespace:</strong> {{ previewSpec.namespace }}\n </div>\n }\n <div class=\"preview-item\">\n <strong>Has Code:</strong> {{ previewSpec.code ? 'Yes' : 'No' }}\n </div>\n @if (previewSpec.dependencies && previewSpec.dependencies.length > 0) {\n <div class=\"preview-item\">\n <strong>Dependencies:</strong> {{ previewSpec.dependencies.length }}\n </div>\n }\n\n <!-- Full Spec JSON Viewer → accordion panel; the code editor is\n lazy via mjAccordionBody (not built until first expand).\n Pure boolean flip + Default CD → [(Expanded)]. -->\n <mj-accordion-panel class=\"preview-json-section\" Size=\"sm\"\n [FlushBody]=\"true\" [(Expanded)]=\"showJsonPreview\">\n <ng-template mjAccordionTitle>\n <strong>Full Specification (JSON)</strong>\n </ng-template>\n <ng-template mjAccordionBody>\n <div class=\"preview-json-content\">\n <mj-code-editor\n [value]=\"getPreviewJSON()\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n [lineWrapping]=\"true\"\n [setup]=\"'basic'\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </ng-template>\n </mj-accordion-panel>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n variant=\"primary\"\n (click)=\"load()\"\n [disabled]=\"!canLoad()\">\n <i class=\"fa-solid fa-download\"></i>\n Load Component\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
|
|
1
|
+
{"version":3,"file":"artifact-load-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts","../../../src/ComponentStudio/components/artifact-load-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { RunView } from '@memberjunction/core';\nimport {\n MJArtifactEntity,\n MJArtifactVersionEntity,\n MJCollectionEntity,\n MJCollectionArtifactEntity\n} from '@memberjunction/core-entities';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nexport interface ArtifactLoadResult {\n spec: ComponentSpec;\n artifactID: string;\n versionID: string;\n versionNumber: number;\n artifactName: string;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-load-dialog',\n templateUrl: './artifact-load-dialog.component.html',\n styleUrl: './artifact-load-dialog.component.css'\n})\nexport class ArtifactLoadDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactLoadResult | undefined>();\n\n // Tab state\n ActiveTab = 0;\n\n /** @deprecated Use {@link ActiveTab}. */\n get activeTab() {\n return this.ActiveTab;\n }\n /** @deprecated Use {@link ActiveTab}. */\n set activeTab(value) {\n this.ActiveTab = value;\n } // 0 = Artifacts, 1 = Collections\n\n // Artifacts data\n Artifacts: MJArtifactEntity[] = [];\n\n /** @deprecated Use {@link Artifacts}. */\n get artifacts(): MJArtifactEntity[] {\n return this.Artifacts;\n }\n /** @deprecated Use {@link Artifacts}. */\n set artifacts(value: MJArtifactEntity[]) {\n this.Artifacts = value;\n }\n ArtifactVersions: MJArtifactVersionEntity[] = [];\n\n /** @deprecated Use {@link ArtifactVersions}. */\n get artifactVersions(): MJArtifactVersionEntity[] {\n return this.ArtifactVersions;\n }\n /** @deprecated Use {@link ArtifactVersions}. */\n set artifactVersions(value: MJArtifactVersionEntity[]) {\n this.ArtifactVersions = value;\n }\n SelectedArtifact: MJArtifactEntity | null = null;\n\n /** @deprecated Use {@link SelectedArtifact}. */\n get selectedArtifact(): MJArtifactEntity | null {\n return this.SelectedArtifact;\n }\n /** @deprecated Use {@link SelectedArtifact}. */\n set selectedArtifact(value: MJArtifactEntity | null) {\n this.SelectedArtifact = value;\n }\n SelectedVersion: MJArtifactVersionEntity | null = null;\n\n /** @deprecated Use {@link SelectedVersion}. */\n get selectedVersion(): MJArtifactVersionEntity | null {\n return this.SelectedVersion;\n }\n /** @deprecated Use {@link SelectedVersion}. */\n set selectedVersion(value: MJArtifactVersionEntity | null) {\n this.SelectedVersion = value;\n }\n\n // Collections data\n Collections: MJCollectionEntity[] = [];\n\n /** @deprecated Use {@link Collections}. */\n get collections(): MJCollectionEntity[] {\n return this.Collections;\n }\n /** @deprecated Use {@link Collections}. */\n set collections(value: MJCollectionEntity[]) {\n this.Collections = value;\n }\n SelectedCollection: MJCollectionEntity | null = null;\n\n /** @deprecated Use {@link SelectedCollection}. */\n get selectedCollection(): MJCollectionEntity | null {\n return this.SelectedCollection;\n }\n /** @deprecated Use {@link SelectedCollection}. */\n set selectedCollection(value: MJCollectionEntity | null) {\n this.SelectedCollection = value;\n }\n CollectionArtifacts: MJArtifactEntity[] = [];\n\n /** @deprecated Use {@link CollectionArtifacts}. */\n get collectionArtifacts(): MJArtifactEntity[] {\n return this.CollectionArtifacts;\n }\n /** @deprecated Use {@link CollectionArtifacts}. */\n set collectionArtifacts(value: MJArtifactEntity[]) {\n this.CollectionArtifacts = value;\n }\n\n // Search and filter\n SearchTerm = '';\n\n /** @deprecated Use {@link SearchTerm}. */\n get searchTerm() {\n return this.SearchTerm;\n }\n /** @deprecated Use {@link SearchTerm}. */\n set searchTerm(value) {\n this.SearchTerm = value;\n }\n SelectedArtifactType = '';\n\n /** @deprecated Use {@link SelectedArtifactType}. */\n get selectedArtifactType() {\n return this.SelectedArtifactType;\n }\n /** @deprecated Use {@link SelectedArtifactType}. */\n set selectedArtifactType(value) {\n this.SelectedArtifactType = value;\n }\n UserEmail = '';\n\n /** @deprecated Use {@link UserEmail}. */\n get userEmail() {\n return this.UserEmail;\n }\n /** @deprecated Use {@link UserEmail}. */\n set userEmail(value) {\n this.UserEmail = value;\n }\n\n // Paging\n CurrentPage = 0;\n\n /** @deprecated Use {@link CurrentPage}. */\n get currentPage() {\n return this.CurrentPage;\n }\n /** @deprecated Use {@link CurrentPage}. */\n set currentPage(value) {\n this.CurrentPage = value;\n }\n pageSize = 25;\n TotalArtifacts = 0;\n\n /** @deprecated Use {@link TotalArtifacts}. */\n get totalArtifacts() {\n return this.TotalArtifacts;\n }\n /** @deprecated Use {@link TotalArtifacts}. */\n set totalArtifacts(value) {\n this.TotalArtifacts = value;\n }\n HasMorePages = false;\n\n /** @deprecated Use {@link HasMorePages}. */\n get hasMorePages() {\n return this.HasMorePages;\n }\n /** @deprecated Use {@link HasMorePages}. */\n set hasMorePages(value) {\n this.HasMorePages = value;\n }\n\n // UI state\n isLoading = true;\n IsLoadingVersions = false;\n\n /** @deprecated Use {@link IsLoadingVersions}. */\n get isLoadingVersions() {\n return this.IsLoadingVersions;\n }\n /** @deprecated Use {@link IsLoadingVersions}. */\n set isLoadingVersions(value) {\n this.IsLoadingVersions = value;\n }\n IsLoadingCollections = false;\n\n /** @deprecated Use {@link IsLoadingCollections}. */\n get isLoadingCollections() {\n return this.IsLoadingCollections;\n }\n /** @deprecated Use {@link IsLoadingCollections}. */\n set isLoadingCollections(value) {\n this.IsLoadingCollections = value;\n }\n IsFilterPanelCollapsed = false;\n\n /** @deprecated Use {@link IsFilterPanelCollapsed}. */\n get isFilterPanelCollapsed() {\n return this.IsFilterPanelCollapsed;\n }\n /** @deprecated Use {@link IsFilterPanelCollapsed}. */\n set isFilterPanelCollapsed(value) {\n this.IsFilterPanelCollapsed = value;\n }\n\n // Preview\n PreviewSpec: ComponentSpec | null = null;\n\n /** @deprecated Use {@link PreviewSpec}. */\n get previewSpec(): ComponentSpec | null {\n return this.PreviewSpec;\n }\n /** @deprecated Use {@link PreviewSpec}. */\n set previewSpec(value: ComponentSpec | null) {\n this.PreviewSpec = value;\n }\n PreviewError: string | null = null;\n\n /** @deprecated Use {@link PreviewError}. */\n get previewError(): string | null {\n return this.PreviewError;\n }\n /** @deprecated Use {@link PreviewError}. */\n set previewError(value: string | null) {\n this.PreviewError = value;\n }\n ShowJsonPreview = false;\n\n /** @deprecated Use {@link ShowJsonPreview}. */\n get showJsonPreview() {\n return this.ShowJsonPreview;\n }\n /** @deprecated Use {@link ShowJsonPreview}. */\n set showJsonPreview(value) {\n this.ShowJsonPreview = value;\n }\n\n private get metadata() { return this.ProviderToUse; }\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n private cdr = inject(ChangeDetectorRef);\n\n async ngOnInit() {\n // Setup search debouncing\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.FilterArtifacts();\n });\n\n await Promise.all([\n this.LoadArtifacts(),\n this.LoadCollections()\n ]);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async LoadArtifacts() {\n this.isLoading = true;\n this.cdr.detectChanges();\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const startRow = this.CurrentPage * this.pageSize;\n\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: this.buildArtifactFilter(),\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: this.pageSize,\n StartRow: startRow,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.Artifacts = result.Results;\n this.TotalArtifacts = result.TotalRowCount || 0;\n const totalPages = Math.ceil(this.TotalArtifacts / this.pageSize);\n this.HasMorePages = this.CurrentPage < totalPages - 1;\n }\n } catch (error) {\n console.error('Error loading artifacts:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadArtifacts}. */\n async loadArtifacts() {\n return this.LoadArtifacts();\n }\n\n async LoadCollections() {\n this.IsLoadingCollections = true;\n this.cdr.detectChanges();\n try {\n const currentUserId = this.metadata.CurrentUser?.ID;\n if (!currentUserId) {\n this.Collections = [];\n return;\n }\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJCollectionEntity>({\n EntityName: 'MJ: Collections',\n ExtraFilter: `UserID = '${currentUserId}' OR ID IN (\n SELECT CollectionID FROM __mj.vwCollectionPermissions\n WHERE UserID = '${currentUserId}' AND CanRead = 1\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.Collections = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collections:', error);\n this.Collections = [];\n } finally {\n this.IsLoadingCollections = false;\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadCollections}. */\n async loadCollections() {\n return this.LoadCollections();\n }\n\n async SelectCollection(collection: MJCollectionEntity) {\n this.SelectedCollection = collection;\n this.SelectedArtifact = null;\n this.SelectedVersion = null;\n this.ArtifactVersions = [];\n this.cdr.detectChanges();\n\n // Load artifacts in this collection\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: `ID IN (\n SELECT DISTINCT av.ArtifactID\n FROM __mj.vwArtifactVersions av\n INNER JOIN __mj.vwCollectionArtifacts ca ON ca.ArtifactVersionID = av.ID\n WHERE ca.CollectionID = '${collection.ID}'\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.CollectionArtifacts = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collection artifacts:', error);\n this.CollectionArtifacts = [];\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link SelectCollection}. */\n async selectCollection(collection: MJCollectionEntity) {\n return this.SelectCollection(collection);\n }\n\n private buildArtifactFilter(): string {\n const filters: string[] = [];\n\n // Always filter to Component type by default\n if (this.SelectedArtifactType) {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.SelectedArtifactType}')`);\n } else {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = 'Component')`);\n }\n\n // Search filter\n if (this.SearchTerm?.trim()) {\n const term = this.SearchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n\n // User email filter\n if (this.UserEmail?.trim()) {\n const md = this.ProviderToUse;\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n filters.push(`UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.UserEmail.trim()}%')`);\n }\n\n return filters.length > 0 ? filters.join(' AND ') : '';\n }\n\n async SelectArtifact(artifact: MJArtifactEntity) {\n this.SelectedArtifact = artifact;\n this.SelectedVersion = null;\n this.PreviewSpec = null;\n this.PreviewError = null;\n this.cdr.detectChanges();\n\n await this.LoadVersions(artifact.ID);\n }\n\n /** @deprecated Use {@link SelectArtifact}. */\n async selectArtifact(artifact: MJArtifactEntity) {\n return this.SelectArtifact(artifact);\n }\n\n async LoadVersions(artifactId: string) {\n this.IsLoadingVersions = true;\n this.cdr.detectChanges();\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n // conversation-scope: artifact-wide read, no conversation path applies\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.ArtifactVersions = result.Results;\n\n // Auto-select the latest version\n if (this.ArtifactVersions.length > 0) {\n await this.SelectVersion(this.ArtifactVersions[0]);\n }\n }\n } catch (error) {\n console.error('Error loading versions:', error);\n this.ArtifactVersions = [];\n } finally {\n this.IsLoadingVersions = false;\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadVersions}. */\n async loadVersions(artifactId: string) {\n return this.LoadVersions(artifactId);\n }\n\n async SelectVersion(version: MJArtifactVersionEntity) {\n this.SelectedVersion = version;\n await this.LoadPreview(version);\n }\n\n /** @deprecated Use {@link SelectVersion}. */\n async selectVersion(version: MJArtifactVersionEntity) {\n return this.SelectVersion(version);\n }\n\n async LoadPreview(version: MJArtifactVersionEntity) {\n try {\n this.PreviewError = null;\n\n const raw = version.Content ?? version.Configuration;\n if (!raw) {\n this.PreviewSpec = null;\n this.PreviewError = 'No content found in this version';\n return;\n }\n\n const spec = this.unwrapSpec(JSON.parse(raw));\n if (!spec) {\n this.PreviewSpec = null;\n this.PreviewError = 'Artifact content is not a recognized component spec';\n return;\n }\n\n const hasCode = typeof spec.code === 'string' && spec.code.trim().length > 0;\n const hasDeps = Array.isArray(spec.dependencies) && spec.dependencies.length > 0;\n const isRegistryRef = spec.location === 'registry' && !!spec.registry && !!spec.namespace && !!spec.name;\n if (!hasCode && !hasDeps && !isRegistryRef) {\n this.PreviewSpec = null;\n this.PreviewError = 'Artifact contains no component code, dependencies, or registry reference';\n return;\n }\n\n this.PreviewSpec = spec;\n } catch (error) {\n this.PreviewError = `Failed to parse: ${error}`;\n this.PreviewSpec = null;\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadPreview}. */\n async loadPreview(version: MJArtifactVersionEntity) {\n return this.LoadPreview(version);\n }\n\n /**\n * Skip emits artifact content as a `SkipAPIAnalysisCompleteResponse` envelope whose\n * actual ComponentSpec lives at `componentOptions[0].option`. Older saves may put the\n * envelope in `Configuration`; newer saves put it in `Content`. Either field can also\n * contain a raw spec, so this helper handles both shapes.\n */\n private unwrapSpec(parsed: unknown): ComponentSpec | null {\n if (!parsed || typeof parsed !== 'object') return null;\n const obj = parsed as { componentOptions?: Array<{ option?: ComponentSpec }> };\n if (Array.isArray(obj.componentOptions) && obj.componentOptions.length > 0 && obj.componentOptions[0]?.option) {\n return obj.componentOptions[0].option;\n }\n return parsed as ComponentSpec;\n }\n\n async FilterArtifacts() {\n this.CurrentPage = 0;\n await this.LoadArtifacts();\n }\n\n /** @deprecated Use {@link FilterArtifacts}. */\n async filterArtifacts() {\n return this.FilterArtifacts();\n }\n\n OnSearchInput() {\n this.searchSubject.next(this.SearchTerm);\n }\n\n /** @deprecated Use {@link OnSearchInput}. */\n onSearchInput() {\n return this.OnSearchInput();\n }\n\n OnArtifactTypeChange() {\n this.SelectedArtifact = null;\n this.SelectedVersion = null;\n this.ArtifactVersions = [];\n this.FilterArtifacts();\n }\n\n /** @deprecated Use {@link OnArtifactTypeChange}. */\n onArtifactTypeChange() {\n return this.OnArtifactTypeChange();\n }\n\n async NextPage() {\n if (this.HasMorePages) {\n this.CurrentPage++;\n await this.LoadArtifacts();\n }\n }\n\n /** @deprecated Use {@link NextPage}. */\n async nextPage() {\n return this.NextPage();\n }\n\n async PreviousPage() {\n if (this.CurrentPage > 0) {\n this.CurrentPage--;\n await this.LoadArtifacts();\n }\n }\n\n /** @deprecated Use {@link PreviousPage}. */\n async previousPage() {\n return this.PreviousPage();\n }\n\n CanGoNext(): boolean {\n return this.HasMorePages;\n }\n\n /** @deprecated Use {@link CanGoNext}. */\n canGoNext(): boolean {\n return this.CanGoNext();\n }\n\n CanGoPrevious(): boolean {\n return this.CurrentPage > 0;\n }\n\n /** @deprecated Use {@link CanGoPrevious}. */\n canGoPrevious(): boolean {\n return this.CanGoPrevious();\n }\n\n GetTotalPages(): number {\n return Math.ceil(this.TotalArtifacts / this.pageSize);\n }\n\n /** @deprecated Use {@link GetTotalPages}. */\n getTotalPages(): number {\n return this.GetTotalPages();\n }\n\n ToggleFilterPanel() {\n this.IsFilterPanelCollapsed = !this.IsFilterPanelCollapsed;\n }\n\n /** @deprecated Use {@link ToggleFilterPanel}. */\n toggleFilterPanel() {\n return this.ToggleFilterPanel();\n }\n\n GetActiveFilterCount(): number {\n let count = 0;\n if (this.SearchTerm?.trim()) count++;\n if (this.SelectedArtifactType) count++;\n if (this.UserEmail?.trim()) count++;\n return count;\n }\n\n /** @deprecated Use {@link GetActiveFilterCount}. */\n getActiveFilterCount(): number {\n return this.GetActiveFilterCount();\n }\n\n CanLoad(): boolean {\n return this.SelectedArtifact !== null &&\n this.SelectedVersion !== null &&\n this.PreviewSpec !== null;\n }\n\n /** @deprecated Use {@link CanLoad}. */\n canLoad(): boolean {\n return this.CanLoad();\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n load() {\n if (!this.CanLoad()) return;\n\n const result: ArtifactLoadResult = {\n spec: this.PreviewSpec!,\n artifactID: this.SelectedArtifact!.ID,\n versionID: this.SelectedVersion!.ID,\n versionNumber: this.SelectedVersion!.VersionNumber,\n artifactName: this.SelectedArtifact!.Name\n };\n\n this.Close.emit(result);\n }\n\n OnTabSelect(index: number) {\n this.ActiveTab = index;\n }\n\n /** @deprecated Use {@link OnTabSelect}. */\n onTabSelect(index: number) {\n return this.OnTabSelect(index);\n }\n\n GetArtifactsByTab(): MJArtifactEntity[] {\n return this.ActiveTab === 0 ? this.Artifacts : this.CollectionArtifacts;\n }\n\n /** @deprecated Use {@link GetArtifactsByTab}. */\n getArtifactsByTab(): MJArtifactEntity[] {\n return this.GetArtifactsByTab();\n }\n\n GetPreviewJSON(): string {\n return this.PreviewSpec ? JSON.stringify(this.PreviewSpec, null, 2) : '';\n }\n\n /** @deprecated Use {@link GetPreviewJSON}. */\n getPreviewJSON(): string {\n return this.GetPreviewJSON();\n }\n\n /** Case-insensitive UUID check whether an artifact is the currently selected artifact. */\n IsArtifactSelected(artifact: MJArtifactEntity): boolean {\n return UUIDsEqual(this.SelectedArtifact?.ID, artifact.ID);\n }\n\n /** Case-insensitive UUID check whether a collection is the currently selected collection. */\n IsCollectionSelected(collection: MJCollectionEntity): boolean {\n return UUIDsEqual(this.SelectedCollection?.ID, collection.ID);\n }\n\n /** Case-insensitive UUID check whether a version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.SelectedVersion?.ID, version.ID);\n }\n}\n","<mj-dialog [Visible]=\"true\" Title=\"Load Component from Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-load-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button mjButton (click)=\"toggleFilterPanel()\"\n variant=\"flat\"\n [class.filter-active]=\"getActiveFilterCount() > 0\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\"\n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\"\n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">Component (default)</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n\n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\"\n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 0\"\n (click)=\"onTabSelect(0)\">\n <i class=\"fa-solid fa-file-code\"></i> All Artifacts\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 1\"\n (click)=\"onTabSelect(1)\">\n <i class=\"fa-solid fa-folder\"></i> Collections\n </button>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Artifacts Tab -->\n @if (activeTab === 0) {\n <div class=\"artifacts-view\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button mjButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total)\n </span>\n <button mjButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Artifacts List -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading artifacts...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifacts.length === 0) {\n <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-inbox\"\n Title=\"No artifacts found\" />\n }\n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n\n <!-- Collections Tab -->\n @if (activeTab === 1) {\n <div class=\"collections-view\">\n <div class=\"collections-list\">\n @if (isLoadingCollections) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading collections...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (collections.length === 0) {\n <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-folder-open\"\n Title=\"No collections found\" />\n }\n @else {\n @for (collection of collections; track collection.ID) {\n <div class=\"collection-item\"\n [class.selected]=\"IsCollectionSelected(collection)\"\n (click)=\"selectCollection(collection)\">\n <div class=\"collection-icon\">\n <i class=\"fa-solid fa-folder\"></i>\n </div>\n <div class=\"collection-info\">\n <div class=\"collection-name\">{{ collection.Name }}</div>\n @if (collection.Description) {\n <div class=\"collection-description\">{{ collection.Description }}</div>\n }\n </div>\n </div>\n }\n }\n </div>\n\n @if (selectedCollection) {\n <div class=\"collection-artifacts\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-file-code\"></i>\n Artifacts in \"{{ selectedCollection.Name }}\"\n </div>\n @if (collectionArtifacts.length === 0) {\n <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-inbox\"\n Title=\"No artifacts in this collection\" />\n }\n @else {\n @for (artifact of collectionArtifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version/Preview Panel -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Versions</h4>\n </div>\n\n <div class=\"version-content\">\n @if (isLoadingVersions) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading versions...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifactVersions.length === 0) {\n <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-circle-info\"\n Title=\"No versions available\" />\n }\n @else {\n <div class=\"version-list\">\n @for (version of artifactVersions; track version.ID) {\n <div class=\"version-item\"\n [class.selected]=\"IsVersionSelected(version)\"\n (click)=\"selectVersion(version)\">\n <div class=\"version-number\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Version {{ version.VersionNumber }}\n </div>\n <div class=\"version-meta\">\n <div>{{ version.__mj_UpdatedAt | date:'short' }}</div>\n @if (version.Comments) {\n <div class=\"version-comments\">{{ version.Comments }}</div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Preview Section -->\n @if (selectedVersion) {\n <div class=\"preview-section\">\n <div class=\"preview-header\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n @if (previewError) {\n <div class=\"preview-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ previewError }}\n </div>\n }\n @else if (previewSpec) {\n <div class=\"preview-content\">\n <div class=\"preview-item\">\n <strong>Name:</strong> {{ previewSpec.name }}\n </div>\n @if (previewSpec.description) {\n <div class=\"preview-item\">\n <strong>Description:</strong> {{ previewSpec.description }}\n </div>\n }\n @if (previewSpec.type) {\n <div class=\"preview-item\">\n <strong>Type:</strong> {{ previewSpec.type }}\n </div>\n }\n @if (previewSpec.namespace) {\n <div class=\"preview-item\">\n <strong>Namespace:</strong> {{ previewSpec.namespace }}\n </div>\n }\n <div class=\"preview-item\">\n <strong>Has Code:</strong> {{ previewSpec.code ? 'Yes' : 'No' }}\n </div>\n @if (previewSpec.dependencies && previewSpec.dependencies.length > 0) {\n <div class=\"preview-item\">\n <strong>Dependencies:</strong> {{ previewSpec.dependencies.length }}\n </div>\n }\n\n <!-- Full Spec JSON Viewer → accordion panel; the code editor is\n lazy via mjAccordionBody (not built until first expand).\n Pure boolean flip + Default CD → [(Expanded)]. -->\n <mj-accordion-panel class=\"preview-json-section\" Size=\"sm\"\n [FlushBody]=\"true\" [(Expanded)]=\"showJsonPreview\">\n <ng-template mjAccordionTitle>\n <strong>Full Specification (JSON)</strong>\n </ng-template>\n <ng-template mjAccordionBody>\n <div class=\"preview-json-content\">\n <mj-code-editor\n [value]=\"getPreviewJSON()\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n [lineWrapping]=\"true\"\n [setup]=\"'basic'\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </ng-template>\n </mj-accordion-panel>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n variant=\"primary\"\n (click)=\"load()\"\n [disabled]=\"!canLoad()\">\n <i class=\"fa-solid fa-download\"></i>\n Load Component\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-selection-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"artifact-selection-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts"],"names":[],"mappings":"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"}
|