@memberjunction/ng-dashboards 6.2.0-edge.6 → 6.2.0-edge.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -16
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +2 -2
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/realtime/realtime-management.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/realtime/realtime-management.component.js +3 -1
- package/dist/AI/components/analytics/realtime/realtime-management.component.js.map +1 -1
- package/dist/AI/components/analytics/realtime/realtime-overview.component.d.ts +1 -1
- package/dist/AI/components/analytics/realtime/realtime-overview.component.js +3 -3
- package/dist/AI/components/analytics/realtime/realtime-overview.component.js.map +1 -1
- package/dist/AI/components/analytics/realtime/realtime-session-data.d.ts +6 -4
- package/dist/AI/components/analytics/realtime/realtime-session-data.d.ts.map +1 -1
- package/dist/AI/components/analytics/realtime/realtime-session-data.js +8 -2
- package/dist/AI/components/analytics/realtime/realtime-session-data.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +6 -6
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js +1 -1
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -1
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -1
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -1
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +2 -2
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +3 -2
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +12 -6
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.js +4 -2
- package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
- package/dist/Actions/action-result-code.d.ts +80 -0
- package/dist/Actions/action-result-code.d.ts.map +1 -0
- package/dist/Actions/action-result-code.js +163 -0
- package/dist/Actions/action-result-code.js.map +1 -0
- package/dist/Actions/components/actions-overview.component.d.ts +8 -0
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +12 -9
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +29 -9
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +65 -42
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.js +5 -4
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts +92 -130
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts.map +1 -1
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.js +189 -274
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.js.map +1 -1
- package/dist/ChiefOfStaff/chief-of-staff-approvals.component.d.ts +29 -0
- package/dist/ChiefOfStaff/chief-of-staff-approvals.component.d.ts.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-approvals.component.js +666 -0
- package/dist/ChiefOfStaff/chief-of-staff-approvals.component.js.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-governance.component.d.ts +56 -0
- package/dist/ChiefOfStaff/chief-of-staff-governance.component.d.ts.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-governance.component.js +515 -0
- package/dist/ChiefOfStaff/chief-of-staff-governance.component.js.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-live-refresh.d.ts +14 -0
- package/dist/ChiefOfStaff/chief-of-staff-live-refresh.d.ts.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-live-refresh.js +39 -0
- package/dist/ChiefOfStaff/chief-of-staff-live-refresh.js.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-overview.component.d.ts +17 -0
- package/dist/ChiefOfStaff/chief-of-staff-overview.component.d.ts.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-overview.component.js +485 -0
- package/dist/ChiefOfStaff/chief-of-staff-overview.component.js.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-page-base.d.ts +139 -0
- package/dist/ChiefOfStaff/chief-of-staff-page-base.d.ts.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-page-base.js +602 -0
- package/dist/ChiefOfStaff/chief-of-staff-page-base.js.map +1 -0
- package/dist/ChiefOfStaff/index.d.ts +4 -1
- package/dist/ChiefOfStaff/index.d.ts.map +1 -1
- package/dist/ChiefOfStaff/index.js +4 -1
- package/dist/ChiefOfStaff/index.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +3 -3
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +3 -3
- package/dist/Communication/communication-runs-resource.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/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +2 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
- package/dist/ComponentStudio/services/component-version.service.js +3 -0
- package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +21 -2
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +32 -5
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +2 -2
- package/dist/DevTools/lazy-module-status.component.js +2 -2
- package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -1
- package/dist/FormBuilder/form-builder-resource.component.js +5 -0
- package/dist/FormBuilder/form-builder-resource.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +2 -2
- package/dist/Integration/services/integration-data.service.d.ts +1 -1
- package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
- package/dist/Integration/services/integration-data.service.js +4 -3
- package/dist/Integration/services/integration-data.service.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/LoginStudio/login-studio-resource.component.d.ts.map +1 -1
- package/dist/LoginStudio/login-studio-resource.component.js +1 -0
- package/dist/LoginStudio/login-studio-resource.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-experiments.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-experiments.component.js +1 -0
- package/dist/PredictiveStudio/components/ps-experiments.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js +2 -2
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.js +3 -0
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.js.map +1 -1
- package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts.map +1 -1
- package/dist/PredictiveStudio/engine/predictive-studio.engine.js +1 -0
- package/dist/PredictiveStudio/engine/predictive-studio.engine.js.map +1 -1
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js +1 -0
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +26 -0
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +375 -252
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/UserRoutines/user-routines-resource.component.d.ts +8 -1
- package/dist/UserRoutines/user-routines-resource.component.d.ts.map +1 -1
- package/dist/UserRoutines/user-routines-resource.component.js +22 -4
- package/dist/UserRoutines/user-routines-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +1 -0
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VideoStudio/components/vs-archetype-editor.component.d.ts +162 -0
- package/dist/VideoStudio/components/vs-archetype-editor.component.d.ts.map +1 -0
- package/dist/VideoStudio/components/vs-archetype-editor.component.js +1105 -0
- package/dist/VideoStudio/components/vs-archetype-editor.component.js.map +1 -0
- package/dist/VideoStudio/components/vs-audio-options.component.d.ts +27 -0
- package/dist/VideoStudio/components/vs-audio-options.component.d.ts.map +1 -0
- package/dist/VideoStudio/components/vs-audio-options.component.js +119 -0
- package/dist/VideoStudio/components/vs-audio-options.component.js.map +1 -0
- package/dist/VideoStudio/components/vs-copilot-panel.component.d.ts +105 -0
- package/dist/VideoStudio/components/vs-copilot-panel.component.d.ts.map +1 -0
- package/dist/VideoStudio/components/vs-copilot-panel.component.js +560 -0
- package/dist/VideoStudio/components/vs-copilot-panel.component.js.map +1 -0
- package/dist/VideoStudio/components/vs-production-brief.component.d.ts +163 -0
- package/dist/VideoStudio/components/vs-production-brief.component.d.ts.map +1 -0
- package/dist/VideoStudio/components/vs-production-brief.component.js +1054 -0
- package/dist/VideoStudio/components/vs-production-brief.component.js.map +1 -0
- package/dist/VideoStudio/components/vs-setup-health-card.component.d.ts +43 -0
- package/dist/VideoStudio/components/vs-setup-health-card.component.d.ts.map +1 -0
- package/dist/VideoStudio/components/vs-setup-health-card.component.js +412 -0
- package/dist/VideoStudio/components/vs-setup-health-card.component.js.map +1 -0
- package/dist/VideoStudio/components/vs-studio-slide-in.component.d.ts +73 -0
- package/dist/VideoStudio/components/vs-studio-slide-in.component.d.ts.map +1 -0
- package/dist/VideoStudio/components/vs-studio-slide-in.component.js +271 -0
- package/dist/VideoStudio/components/vs-studio-slide-in.component.js.map +1 -0
- package/dist/VideoStudio/index.d.ts +12 -0
- package/dist/VideoStudio/index.d.ts.map +1 -0
- package/dist/VideoStudio/index.js +12 -0
- package/dist/VideoStudio/index.js.map +1 -0
- package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.d.ts +118 -0
- package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.d.ts.map +1 -0
- package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.js +964 -0
- package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.js.map +1 -0
- package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.d.ts +70 -0
- package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.d.ts.map +1 -0
- package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.js +600 -0
- package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.js.map +1 -0
- package/dist/VideoStudio/resources/video-studio-productions-resource.component.d.ts +182 -0
- package/dist/VideoStudio/resources/video-studio-productions-resource.component.d.ts.map +1 -0
- package/dist/VideoStudio/resources/video-studio-productions-resource.component.js +1481 -0
- package/dist/VideoStudio/resources/video-studio-productions-resource.component.js.map +1 -0
- package/dist/VideoStudio/services/vs-studio-slide-in-state.service.d.ts +102 -0
- package/dist/VideoStudio/services/vs-studio-slide-in-state.service.d.ts.map +1 -0
- package/dist/VideoStudio/services/vs-studio-slide-in-state.service.js +240 -0
- package/dist/VideoStudio/services/vs-studio-slide-in-state.service.js.map +1 -0
- package/dist/VideoStudio/video-studio-agent-context.d.ts +495 -0
- package/dist/VideoStudio/video-studio-agent-context.d.ts.map +1 -0
- package/dist/VideoStudio/video-studio-agent-context.js +992 -0
- package/dist/VideoStudio/video-studio-agent-context.js.map +1 -0
- package/dist/ai-dashboards.module.d.ts +25 -22
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +23 -7
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/module.d.ts +13 -12
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +7 -0
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +7 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +9 -2
- package/dist/public-api.js.map +1 -1
- package/dist/shared/action-scheduled-job.d.ts.map +1 -1
- package/dist/shared/action-scheduled-job.js +2 -0
- package/dist/shared/action-scheduled-job.js.map +1 -1
- package/dist/video-studio-dashboards.module.d.ts +40 -0
- package/dist/video-studio-dashboards.module.d.ts.map +1 -0
- package/dist/video-studio-dashboards.module.js +159 -0
- package/dist/video-studio-dashboards.module.js.map +1 -0
- package/package.json +77 -71
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.d.ts +0 -195
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.d.ts.map +0 -1
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.js +0 -2910
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.js.map +0 -1
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MJRefreshButtonComponent } from '@memberjunction/ng-ui-components';
|
|
4
|
+
import { SharedGenericModule } from '@memberjunction/ng-shared-generic';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@memberjunction/ng-shared-generic";
|
|
7
|
+
const _forTrack0 = ($index, $item) => $item.Key;
|
|
8
|
+
function VSSetupHealthCardComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
9
|
+
i0.ɵɵelementStart(0, "div", 2);
|
|
10
|
+
i0.ɵɵelement(1, "mj-loading", 11);
|
|
11
|
+
i0.ɵɵelementStart(2, "span", 12);
|
|
12
|
+
i0.ɵɵtext(3, "Checking Video Studio setup\u2026");
|
|
13
|
+
i0.ɵɵelementEnd()();
|
|
14
|
+
} if (rf & 2) {
|
|
15
|
+
i0.ɵɵadvance();
|
|
16
|
+
i0.ɵɵproperty("ShowText", false);
|
|
17
|
+
} }
|
|
18
|
+
function VSSetupHealthCardComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
20
|
+
i0.ɵɵelementStart(0, "button", 13);
|
|
21
|
+
i0.ɵɵlistener("click", function VSSetupHealthCardComponent_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleExpanded()); });
|
|
22
|
+
i0.ɵɵelement(1, "i", 14);
|
|
23
|
+
i0.ɵɵelementStart(2, "span", 15);
|
|
24
|
+
i0.ɵɵtext(3, "Setup OK");
|
|
25
|
+
i0.ɵɵelementEnd();
|
|
26
|
+
i0.ɵɵelement(4, "i", 16);
|
|
27
|
+
i0.ɵɵelementEnd();
|
|
28
|
+
} if (rf & 2) {
|
|
29
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
30
|
+
i0.ɵɵattribute("aria-expanded", ctx_r1.Expanded);
|
|
31
|
+
i0.ɵɵadvance(4);
|
|
32
|
+
i0.ɵɵclassProp("fa-chevron-down", !ctx_r1.Expanded)("fa-chevron-up", ctx_r1.Expanded);
|
|
33
|
+
} }
|
|
34
|
+
function VSSetupHealthCardComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
36
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
37
|
+
i0.ɵɵlistener("click", function VSSetupHealthCardComponent_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleWarningsExpanded()); });
|
|
38
|
+
i0.ɵɵelement(1, "i", 14);
|
|
39
|
+
i0.ɵɵelementStart(2, "span", 18);
|
|
40
|
+
i0.ɵɵtext(3);
|
|
41
|
+
i0.ɵɵelementEnd();
|
|
42
|
+
i0.ɵɵelement(4, "i", 16);
|
|
43
|
+
i0.ɵɵelementEnd();
|
|
44
|
+
} if (rf & 2) {
|
|
45
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
46
|
+
i0.ɵɵattribute("aria-expanded", ctx_r1.WarningsExpanded);
|
|
47
|
+
i0.ɵɵadvance(3);
|
|
48
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.WarningsSummaryLabel, " ");
|
|
49
|
+
i0.ɵɵadvance();
|
|
50
|
+
i0.ɵɵclassProp("fa-chevron-down", !ctx_r1.WarningsExpanded)("fa-chevron-up", ctx_r1.WarningsExpanded);
|
|
51
|
+
} }
|
|
52
|
+
function VSSetupHealthCardComponent_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
+
i0.ɵɵelementStart(0, "span", 22);
|
|
54
|
+
i0.ɵɵtext(1);
|
|
55
|
+
i0.ɵɵelementEnd();
|
|
56
|
+
} if (rf & 2) {
|
|
57
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
58
|
+
i0.ɵɵadvance();
|
|
59
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.PrimaryErrorCheck == null ? null : ctx_r1.PrimaryErrorCheck.Message, " ");
|
|
60
|
+
} }
|
|
61
|
+
function VSSetupHealthCardComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
62
|
+
i0.ɵɵelementStart(0, "div", 5);
|
|
63
|
+
i0.ɵɵelement(1, "i", 19);
|
|
64
|
+
i0.ɵɵelementStart(2, "div", 20)(3, "span", 21);
|
|
65
|
+
i0.ɵɵtext(4);
|
|
66
|
+
i0.ɵɵelementEnd();
|
|
67
|
+
i0.ɵɵconditionalCreate(5, VSSetupHealthCardComponent_Conditional_5_Conditional_5_Template, 2, 1, "span", 22);
|
|
68
|
+
i0.ɵɵelementEnd()();
|
|
69
|
+
} if (rf & 2) {
|
|
70
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
71
|
+
i0.ɵɵadvance(4);
|
|
72
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.ErrorHeadline, " ");
|
|
73
|
+
i0.ɵɵadvance();
|
|
74
|
+
i0.ɵɵconditional((ctx_r1.PrimaryErrorCheck == null ? null : ctx_r1.PrimaryErrorCheck.Message) ? 5 : -1);
|
|
75
|
+
} }
|
|
76
|
+
function VSSetupHealthCardComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
77
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
78
|
+
i0.ɵɵelementStart(0, "button", 23);
|
|
79
|
+
i0.ɵɵlistener("click", function VSSetupHealthCardComponent_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleErrorDetails()); });
|
|
80
|
+
i0.ɵɵelementStart(1, "span");
|
|
81
|
+
i0.ɵɵtext(2, "Details");
|
|
82
|
+
i0.ɵɵelementEnd();
|
|
83
|
+
i0.ɵɵelement(3, "i", 16);
|
|
84
|
+
i0.ɵɵelementEnd();
|
|
85
|
+
} if (rf & 2) {
|
|
86
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
87
|
+
i0.ɵɵattribute("aria-expanded", ctx_r1.ErrorDetailsExpanded);
|
|
88
|
+
i0.ɵɵadvance(3);
|
|
89
|
+
i0.ɵɵclassProp("fa-chevron-down", !ctx_r1.ErrorDetailsExpanded)("fa-chevron-up", ctx_r1.ErrorDetailsExpanded);
|
|
90
|
+
} }
|
|
91
|
+
function VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
92
|
+
i0.ɵɵelementStart(0, "div", 33);
|
|
93
|
+
i0.ɵɵtext(1);
|
|
94
|
+
i0.ɵɵelementEnd();
|
|
95
|
+
} if (rf & 2) {
|
|
96
|
+
const check_r6 = i0.ɵɵnextContext(3).$implicit;
|
|
97
|
+
i0.ɵɵattribute("data-testid", "vs-setup-health-action-" + check_r6.Key);
|
|
98
|
+
i0.ɵɵadvance();
|
|
99
|
+
i0.ɵɵtextInterpolate1(" ", check_r6.Action, " ");
|
|
100
|
+
} }
|
|
101
|
+
function VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Conditional_4_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
i0.ɵɵelementStart(0, "li");
|
|
103
|
+
i0.ɵɵtext(1);
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
} if (rf & 2) {
|
|
106
|
+
const detail_r7 = ctx.$implicit;
|
|
107
|
+
i0.ɵɵadvance();
|
|
108
|
+
i0.ɵɵtextInterpolate(detail_r7);
|
|
109
|
+
} }
|
|
110
|
+
function VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
111
|
+
i0.ɵɵelementStart(0, "ul", 34);
|
|
112
|
+
i0.ɵɵrepeaterCreate(1, VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Conditional_4_Conditional_2_For_2_Template, 2, 1, "li", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
113
|
+
i0.ɵɵelementEnd();
|
|
114
|
+
} if (rf & 2) {
|
|
115
|
+
const check_r6 = i0.ɵɵnextContext(3).$implicit;
|
|
116
|
+
i0.ɵɵattribute("data-testid", "vs-setup-health-details-" + check_r6.Key);
|
|
117
|
+
i0.ɵɵadvance();
|
|
118
|
+
i0.ɵɵrepeater(check_r6.Details);
|
|
119
|
+
} }
|
|
120
|
+
function VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
121
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
122
|
+
i0.ɵɵconditionalCreate(1, VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Conditional_4_Conditional_1_Template, 2, 2, "div", 33);
|
|
123
|
+
i0.ɵɵconditionalCreate(2, VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Conditional_4_Conditional_2_Template, 3, 1, "ul", 34);
|
|
124
|
+
i0.ɵɵelementEnd();
|
|
125
|
+
} if (rf & 2) {
|
|
126
|
+
const check_r6 = i0.ɵɵnextContext(2).$implicit;
|
|
127
|
+
i0.ɵɵattribute("data-testid", "vs-setup-health-admin-panel-" + check_r6.Key);
|
|
128
|
+
i0.ɵɵadvance();
|
|
129
|
+
i0.ɵɵconditional(check_r6.Action ? 1 : -1);
|
|
130
|
+
i0.ɵɵadvance();
|
|
131
|
+
i0.ɵɵconditional(check_r6.Details && check_r6.Details.length > 0 ? 2 : -1);
|
|
132
|
+
} }
|
|
133
|
+
function VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
134
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
135
|
+
i0.ɵɵelementStart(0, "button", 31);
|
|
136
|
+
i0.ɵɵlistener("click", function VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const check_r6 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleAdminDetails(check_r6.Key)); });
|
|
137
|
+
i0.ɵɵelementStart(1, "span");
|
|
138
|
+
i0.ɵɵtext(2, "Details for admins");
|
|
139
|
+
i0.ɵɵelementEnd();
|
|
140
|
+
i0.ɵɵelement(3, "i", 16);
|
|
141
|
+
i0.ɵɵelementEnd();
|
|
142
|
+
i0.ɵɵconditionalCreate(4, VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Conditional_4_Template, 3, 3, "div", 32);
|
|
143
|
+
} if (rf & 2) {
|
|
144
|
+
const check_r6 = i0.ɵɵnextContext().$implicit;
|
|
145
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
146
|
+
i0.ɵɵattribute("data-testid", "vs-setup-health-admin-toggle-" + check_r6.Key)("aria-expanded", ctx_r1.IsAdminDetailsOpen(check_r6.Key));
|
|
147
|
+
i0.ɵɵadvance(3);
|
|
148
|
+
i0.ɵɵclassProp("fa-chevron-down", !ctx_r1.IsAdminDetailsOpen(check_r6.Key))("fa-chevron-up", ctx_r1.IsAdminDetailsOpen(check_r6.Key));
|
|
149
|
+
i0.ɵɵadvance();
|
|
150
|
+
i0.ɵɵconditional(ctx_r1.IsAdminDetailsOpen(check_r6.Key) ? 4 : -1);
|
|
151
|
+
} }
|
|
152
|
+
function VSSetupHealthCardComponent_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
+
i0.ɵɵelementStart(0, "div", 25);
|
|
154
|
+
i0.ɵɵelement(1, "i", 26);
|
|
155
|
+
i0.ɵɵelementStart(2, "div", 27)(3, "div", 28)(4, "span", 29);
|
|
156
|
+
i0.ɵɵtext(5);
|
|
157
|
+
i0.ɵɵelementEnd();
|
|
158
|
+
i0.ɵɵelementStart(6, "span", 30);
|
|
159
|
+
i0.ɵɵtext(7);
|
|
160
|
+
i0.ɵɵelementEnd()();
|
|
161
|
+
i0.ɵɵconditionalCreate(8, VSSetupHealthCardComponent_Conditional_9_For_2_Conditional_8_Template, 5, 7);
|
|
162
|
+
i0.ɵɵelementEnd()();
|
|
163
|
+
} if (rf & 2) {
|
|
164
|
+
const check_r6 = ctx.$implicit;
|
|
165
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
166
|
+
i0.ɵɵclassProp("vs-health-card__row--error", check_r6.Status === "Error")("vs-health-card__row--warning", check_r6.Status === "Warning");
|
|
167
|
+
i0.ɵɵattribute("data-testid", "vs-setup-health-row-" + check_r6.Key)("data-status", check_r6.Status);
|
|
168
|
+
i0.ɵɵadvance();
|
|
169
|
+
i0.ɵɵclassMap(ctx_r1.IconForStatus(check_r6.Status) + " vs-health-card__icon vs-health-card__icon--" + check_r6.Status.toLowerCase());
|
|
170
|
+
i0.ɵɵadvance(3);
|
|
171
|
+
i0.ɵɵattribute("data-testid", "vs-setup-health-title-" + check_r6.Key);
|
|
172
|
+
i0.ɵɵadvance();
|
|
173
|
+
i0.ɵɵtextInterpolate1(" ", check_r6.Title, " ");
|
|
174
|
+
i0.ɵɵadvance();
|
|
175
|
+
i0.ɵɵattribute("data-testid", "vs-setup-health-message-" + check_r6.Key);
|
|
176
|
+
i0.ɵɵadvance();
|
|
177
|
+
i0.ɵɵtextInterpolate1(" ", check_r6.Message, " ");
|
|
178
|
+
i0.ɵɵadvance();
|
|
179
|
+
i0.ɵɵconditional(ctx_r1.HasAdminDetails(check_r6) ? 8 : -1);
|
|
180
|
+
} }
|
|
181
|
+
function VSSetupHealthCardComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
i0.ɵɵelementStart(0, "div", 9);
|
|
183
|
+
i0.ɵɵrepeaterCreate(1, VSSetupHealthCardComponent_Conditional_9_For_2_Template, 9, 13, "div", 24, _forTrack0);
|
|
184
|
+
i0.ɵɵelementEnd();
|
|
185
|
+
} if (rf & 2) {
|
|
186
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
187
|
+
i0.ɵɵadvance();
|
|
188
|
+
i0.ɵɵrepeater(ctx_r1.NonOkChecks);
|
|
189
|
+
} }
|
|
190
|
+
function VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
191
|
+
i0.ɵɵelementStart(0, "div", 33);
|
|
192
|
+
i0.ɵɵtext(1);
|
|
193
|
+
i0.ɵɵelementEnd();
|
|
194
|
+
} if (rf & 2) {
|
|
195
|
+
const check_r9 = i0.ɵɵnextContext(3).$implicit;
|
|
196
|
+
i0.ɵɵadvance();
|
|
197
|
+
i0.ɵɵtextInterpolate1(" ", check_r9.Action, " ");
|
|
198
|
+
} }
|
|
199
|
+
function VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Conditional_4_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
200
|
+
i0.ɵɵelementStart(0, "li");
|
|
201
|
+
i0.ɵɵtext(1);
|
|
202
|
+
i0.ɵɵelementEnd();
|
|
203
|
+
} if (rf & 2) {
|
|
204
|
+
const detail_r10 = ctx.$implicit;
|
|
205
|
+
i0.ɵɵadvance();
|
|
206
|
+
i0.ɵɵtextInterpolate(detail_r10);
|
|
207
|
+
} }
|
|
208
|
+
function VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
209
|
+
i0.ɵɵelementStart(0, "ul", 34);
|
|
210
|
+
i0.ɵɵrepeaterCreate(1, VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Conditional_4_Conditional_2_For_2_Template, 2, 1, "li", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
211
|
+
i0.ɵɵelementEnd();
|
|
212
|
+
} if (rf & 2) {
|
|
213
|
+
const check_r9 = i0.ɵɵnextContext(3).$implicit;
|
|
214
|
+
i0.ɵɵadvance();
|
|
215
|
+
i0.ɵɵrepeater(check_r9.Details);
|
|
216
|
+
} }
|
|
217
|
+
function VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
218
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
219
|
+
i0.ɵɵconditionalCreate(1, VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Conditional_4_Conditional_1_Template, 2, 1, "div", 33);
|
|
220
|
+
i0.ɵɵconditionalCreate(2, VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Conditional_4_Conditional_2_Template, 3, 0, "ul", 34);
|
|
221
|
+
i0.ɵɵelementEnd();
|
|
222
|
+
} if (rf & 2) {
|
|
223
|
+
const check_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
224
|
+
i0.ɵɵattribute("data-testid", "vs-setup-health-admin-panel-" + check_r9.Key);
|
|
225
|
+
i0.ɵɵadvance();
|
|
226
|
+
i0.ɵɵconditional(check_r9.Action ? 1 : -1);
|
|
227
|
+
i0.ɵɵadvance();
|
|
228
|
+
i0.ɵɵconditional(check_r9.Details && check_r9.Details.length > 0 ? 2 : -1);
|
|
229
|
+
} }
|
|
230
|
+
function VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
231
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
232
|
+
i0.ɵɵelementStart(0, "button", 31);
|
|
233
|
+
i0.ɵɵlistener("click", function VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const check_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleAdminDetails(check_r9.Key)); });
|
|
234
|
+
i0.ɵɵelementStart(1, "span");
|
|
235
|
+
i0.ɵɵtext(2, "Details for admins");
|
|
236
|
+
i0.ɵɵelementEnd();
|
|
237
|
+
i0.ɵɵelement(3, "i", 16);
|
|
238
|
+
i0.ɵɵelementEnd();
|
|
239
|
+
i0.ɵɵconditionalCreate(4, VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Conditional_4_Template, 3, 3, "div", 32);
|
|
240
|
+
} if (rf & 2) {
|
|
241
|
+
const check_r9 = i0.ɵɵnextContext().$implicit;
|
|
242
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
243
|
+
i0.ɵɵattribute("data-testid", "vs-setup-health-admin-toggle-" + check_r9.Key)("aria-expanded", ctx_r1.IsAdminDetailsOpen(check_r9.Key));
|
|
244
|
+
i0.ɵɵadvance(3);
|
|
245
|
+
i0.ɵɵclassProp("fa-chevron-down", !ctx_r1.IsAdminDetailsOpen(check_r9.Key))("fa-chevron-up", ctx_r1.IsAdminDetailsOpen(check_r9.Key));
|
|
246
|
+
i0.ɵɵadvance();
|
|
247
|
+
i0.ɵɵconditional(ctx_r1.IsAdminDetailsOpen(check_r9.Key) ? 4 : -1);
|
|
248
|
+
} }
|
|
249
|
+
function VSSetupHealthCardComponent_Conditional_10_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
250
|
+
i0.ɵɵelementStart(0, "div", 35);
|
|
251
|
+
i0.ɵɵelement(1, "i", 26);
|
|
252
|
+
i0.ɵɵelementStart(2, "div", 27)(3, "div", 28)(4, "span", 29);
|
|
253
|
+
i0.ɵɵtext(5);
|
|
254
|
+
i0.ɵɵelementEnd();
|
|
255
|
+
i0.ɵɵelementStart(6, "span", 30);
|
|
256
|
+
i0.ɵɵtext(7);
|
|
257
|
+
i0.ɵɵelementEnd()();
|
|
258
|
+
i0.ɵɵconditionalCreate(8, VSSetupHealthCardComponent_Conditional_10_For_2_Conditional_8_Template, 5, 7);
|
|
259
|
+
i0.ɵɵelementEnd()();
|
|
260
|
+
} if (rf & 2) {
|
|
261
|
+
const check_r9 = ctx.$implicit;
|
|
262
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
263
|
+
i0.ɵɵattribute("data-testid", "vs-setup-health-expanded-" + check_r9.Key);
|
|
264
|
+
i0.ɵɵadvance();
|
|
265
|
+
i0.ɵɵclassMap(ctx_r1.IconForStatus(check_r9.Status) + " vs-health-card__icon vs-health-card__icon--" + check_r9.Status.toLowerCase());
|
|
266
|
+
i0.ɵɵadvance(4);
|
|
267
|
+
i0.ɵɵtextInterpolate1("", check_r9.Title, ":");
|
|
268
|
+
i0.ɵɵadvance(2);
|
|
269
|
+
i0.ɵɵtextInterpolate(check_r9.Message);
|
|
270
|
+
i0.ɵɵadvance();
|
|
271
|
+
i0.ɵɵconditional(ctx_r1.HasAdminDetails(check_r9) ? 8 : -1);
|
|
272
|
+
} }
|
|
273
|
+
function VSSetupHealthCardComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
274
|
+
i0.ɵɵelementStart(0, "div", 10);
|
|
275
|
+
i0.ɵɵrepeaterCreate(1, VSSetupHealthCardComponent_Conditional_10_For_2_Template, 9, 6, "div", 35, _forTrack0);
|
|
276
|
+
i0.ɵɵelementEnd();
|
|
277
|
+
} if (rf & 2) {
|
|
278
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
279
|
+
i0.ɵɵadvance();
|
|
280
|
+
i0.ɵɵrepeater(ctx_r1.Checks);
|
|
281
|
+
} }
|
|
282
|
+
/**
|
|
283
|
+
* Pure standalone view card displaying Video Studio setup health (`VideoStudio.SetupHealth`).
|
|
284
|
+
*
|
|
285
|
+
* - **All OK:** renders a single compact `"Setup OK"` line that expands on click to reveal per-subsystem details.
|
|
286
|
+
* - **Only warnings:** renders a single quiet `"Ready, with N notes"` line (collapsed by default) that expands on click.
|
|
287
|
+
* - **An error:** renders a single status-error line (`"Video Studio can't make videos yet: <title>"`, message, and `"Details"` toggle).
|
|
288
|
+
* - `Action` text and `Details` live under a `"Details for admins"` toggle inside each expanded note.
|
|
289
|
+
*/
|
|
290
|
+
export class VSSetupHealthCardComponent {
|
|
291
|
+
Result = null;
|
|
292
|
+
Loading = false;
|
|
293
|
+
Expanded = false;
|
|
294
|
+
Recheck = new EventEmitter();
|
|
295
|
+
ExpandedChange = new EventEmitter();
|
|
296
|
+
WarningsExpanded = false;
|
|
297
|
+
ErrorDetailsExpanded = false;
|
|
298
|
+
openAdminDetailsKeys = new Set();
|
|
299
|
+
get Checks() {
|
|
300
|
+
return this.Result?.Checks ?? [];
|
|
301
|
+
}
|
|
302
|
+
get NonOkChecks() {
|
|
303
|
+
return this.Checks.filter((check) => check.Status !== 'OK');
|
|
304
|
+
}
|
|
305
|
+
get ErrorChecks() {
|
|
306
|
+
return this.Checks.filter((check) => check.Status === 'Error');
|
|
307
|
+
}
|
|
308
|
+
get WarningChecks() {
|
|
309
|
+
return this.Checks.filter((check) => check.Status === 'Warning');
|
|
310
|
+
}
|
|
311
|
+
get HasError() {
|
|
312
|
+
return Boolean(this.Result && (!this.Result.Healthy || this.ErrorChecks.length > 0));
|
|
313
|
+
}
|
|
314
|
+
get IsHealthy() {
|
|
315
|
+
return Boolean(this.Result && !this.HasError);
|
|
316
|
+
}
|
|
317
|
+
get IsWarningsOnly() {
|
|
318
|
+
return Boolean(this.IsHealthy && this.WarningChecks.length > 0);
|
|
319
|
+
}
|
|
320
|
+
get IsAllOk() {
|
|
321
|
+
return Boolean(this.IsHealthy && this.NonOkChecks.length === 0);
|
|
322
|
+
}
|
|
323
|
+
get PrimaryErrorCheck() {
|
|
324
|
+
return this.ErrorChecks[0] ?? this.NonOkChecks[0] ?? null;
|
|
325
|
+
}
|
|
326
|
+
get ErrorHeadline() {
|
|
327
|
+
return `Video Studio can't make videos yet: ${this.PrimaryErrorCheck?.Title ?? 'Setup issue'}`;
|
|
328
|
+
}
|
|
329
|
+
get WarningsSummaryLabel() {
|
|
330
|
+
const count = this.WarningChecks.length;
|
|
331
|
+
return `Ready, with ${count} ${count === 1 ? 'note' : 'notes'}`;
|
|
332
|
+
}
|
|
333
|
+
ToggleExpanded() {
|
|
334
|
+
this.Expanded = !this.Expanded;
|
|
335
|
+
this.ExpandedChange.emit(this.Expanded);
|
|
336
|
+
}
|
|
337
|
+
ToggleWarningsExpanded() {
|
|
338
|
+
this.WarningsExpanded = !this.WarningsExpanded;
|
|
339
|
+
}
|
|
340
|
+
ToggleErrorDetails() {
|
|
341
|
+
this.ErrorDetailsExpanded = !this.ErrorDetailsExpanded;
|
|
342
|
+
}
|
|
343
|
+
HasAdminDetails(check) {
|
|
344
|
+
return Boolean(check.Action || (check.Details && check.Details.length > 0));
|
|
345
|
+
}
|
|
346
|
+
IsAdminDetailsOpen(key) {
|
|
347
|
+
return this.openAdminDetailsKeys.has(key);
|
|
348
|
+
}
|
|
349
|
+
ToggleAdminDetails(key) {
|
|
350
|
+
if (this.openAdminDetailsKeys.has(key)) {
|
|
351
|
+
this.openAdminDetailsKeys.delete(key);
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
this.openAdminDetailsKeys.add(key);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
OnRecheckClick() {
|
|
358
|
+
this.Recheck.emit();
|
|
359
|
+
}
|
|
360
|
+
IconForStatus(status) {
|
|
361
|
+
switch (status) {
|
|
362
|
+
case 'OK':
|
|
363
|
+
return 'fa-solid fa-circle-check';
|
|
364
|
+
case 'Warning':
|
|
365
|
+
return 'fa-solid fa-triangle-exclamation';
|
|
366
|
+
case 'Error':
|
|
367
|
+
default:
|
|
368
|
+
return 'fa-solid fa-circle-exclamation';
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
static ɵfac = function VSSetupHealthCardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || VSSetupHealthCardComponent)(); };
|
|
372
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VSSetupHealthCardComponent, selectors: [["vs-setup-health-card"], ["mj-vs-setup-health-card"]], inputs: { Result: "Result", Loading: "Loading", Expanded: "Expanded" }, outputs: { Recheck: "Recheck", ExpandedChange: "ExpandedChange" }, decls: 11, vars: 11, consts: [["role", "status", "aria-live", "polite", "data-testid", "vs-setup-health-card", 1, "vs-health-card"], [1, "vs-health-card__bar"], ["data-testid", "vs-setup-health-loading", 1, "vs-health-card__summary"], ["type", "button", "data-testid", "vs-setup-health-ok-toggle", 1, "vs-health-card__toggle", "vs-health-card__toggle--quiet"], ["type", "button", "data-testid", "vs-setup-health-warnings-toggle", 1, "vs-health-card__toggle", "vs-health-card__toggle--quiet"], ["data-testid", "vs-setup-health-issues-heading", 1, "vs-health-card__error-line"], [1, "vs-health-card__actions"], ["type", "button", "data-testid", "vs-setup-health-error-details-toggle", 1, "vs-health-card__inline-toggle"], ["data-testid", "vs-setup-health-recheck", "Variant", "flat", "Size", "sm", "Label", "Recheck", "Title", "Recheck", 1, "vs-health-card__recheck", 3, "Clicked", "Loading"], ["data-testid", "vs-setup-health-non-ok-list", 1, "vs-health-card__checks"], ["data-testid", "vs-setup-health-expanded-details", 1, "vs-health-card__expanded"], ["Size", "small", 3, "ShowText"], [1, "vs-health-card__summary-text"], ["type", "button", "data-testid", "vs-setup-health-ok-toggle", 1, "vs-health-card__toggle", "vs-health-card__toggle--quiet", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-circle-check", "vs-health-card__icon", "vs-health-card__icon--ok"], ["data-testid", "vs-setup-health-ok-label", 1, "vs-health-card__summary-text"], ["aria-hidden", "true", 1, "fa-solid", "vs-health-card__chevron"], ["type", "button", "data-testid", "vs-setup-health-warnings-toggle", 1, "vs-health-card__toggle", "vs-health-card__toggle--quiet", 3, "click"], ["data-testid", "vs-setup-health-warnings-label", 1, "vs-health-card__summary-text"], ["aria-hidden", "true", 1, "fa-solid", "fa-circle-exclamation", "vs-health-card__icon", "vs-health-card__icon--error"], [1, "vs-health-card__error-copy"], ["data-testid", "vs-setup-health-error-headline", 1, "vs-health-card__error-headline"], ["data-testid", "vs-setup-health-error-message", 1, "vs-health-card__error-message"], ["type", "button", "data-testid", "vs-setup-health-error-details-toggle", 1, "vs-health-card__inline-toggle", 3, "click"], [1, "vs-health-card__row", 3, "vs-health-card__row--error", "vs-health-card__row--warning"], [1, "vs-health-card__row"], ["aria-hidden", "true"], [1, "vs-health-card__row-body"], [1, "vs-health-card__row-header"], [1, "vs-health-card__row-title"], [1, "vs-health-card__row-message"], ["type", "button", 1, "vs-health-card__admin-toggle", 3, "click"], [1, "vs-health-card__admin-panel"], [1, "vs-health-card__row-action"], [1, "vs-health-card__details"], [1, "vs-health-card__detail-item"]], template: function VSSetupHealthCardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
373
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
374
|
+
i0.ɵɵconditionalCreate(2, VSSetupHealthCardComponent_Conditional_2_Template, 4, 1, "div", 2)(3, VSSetupHealthCardComponent_Conditional_3_Template, 5, 5, "button", 3)(4, VSSetupHealthCardComponent_Conditional_4_Template, 5, 6, "button", 4)(5, VSSetupHealthCardComponent_Conditional_5_Template, 6, 2, "div", 5);
|
|
375
|
+
i0.ɵɵelementStart(6, "div", 6);
|
|
376
|
+
i0.ɵɵconditionalCreate(7, VSSetupHealthCardComponent_Conditional_7_Template, 4, 5, "button", 7);
|
|
377
|
+
i0.ɵɵelementStart(8, "mj-refresh-button", 8);
|
|
378
|
+
i0.ɵɵlistener("Clicked", function VSSetupHealthCardComponent_Template_mj_refresh_button_Clicked_8_listener() { return ctx.OnRecheckClick(); });
|
|
379
|
+
i0.ɵɵelementEnd()()();
|
|
380
|
+
i0.ɵɵconditionalCreate(9, VSSetupHealthCardComponent_Conditional_9_Template, 3, 0, "div", 9);
|
|
381
|
+
i0.ɵɵconditionalCreate(10, VSSetupHealthCardComponent_Conditional_10_Template, 3, 0, "div", 10);
|
|
382
|
+
i0.ɵɵelementEnd();
|
|
383
|
+
} if (rf & 2) {
|
|
384
|
+
i0.ɵɵclassProp("vs-health-card--healthy", ctx.IsAllOk)("vs-health-card--warning", ctx.IsWarningsOnly)("vs-health-card--unhealthy", ctx.HasError);
|
|
385
|
+
i0.ɵɵadvance(2);
|
|
386
|
+
i0.ɵɵconditional(ctx.Loading && !ctx.Result ? 2 : ctx.IsAllOk ? 3 : ctx.IsWarningsOnly ? 4 : ctx.HasError ? 5 : -1);
|
|
387
|
+
i0.ɵɵadvance(5);
|
|
388
|
+
i0.ɵɵconditional(ctx.HasError ? 7 : -1);
|
|
389
|
+
i0.ɵɵadvance();
|
|
390
|
+
i0.ɵɵproperty("Loading", ctx.Loading);
|
|
391
|
+
i0.ɵɵadvance();
|
|
392
|
+
i0.ɵɵconditional(ctx.IsWarningsOnly && ctx.WarningsExpanded || ctx.HasError && ctx.ErrorDetailsExpanded ? 9 : -1);
|
|
393
|
+
i0.ɵɵadvance();
|
|
394
|
+
i0.ɵɵconditional(ctx.IsAllOk && ctx.Expanded ? 10 : -1);
|
|
395
|
+
} }, dependencies: [CommonModule, MJRefreshButtonComponent, SharedGenericModule, i1.LoadingComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n width: 100%;\n}\n\n.vs-health-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n padding: var(--mj-space-2-5) var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.vs-health-card--healthy[_ngcontent-%COMP%], \n.vs-health-card--warning[_ngcontent-%COMP%] {\n padding: 0;\n border: none;\n border-radius: var(--mj-radius-none);\n background: transparent;\n}\n\n.vs-health-card--healthy[_ngcontent-%COMP%] .vs-health-card__summary-text[_ngcontent-%COMP%], \n.vs-health-card--warning[_ngcontent-%COMP%] .vs-health-card__summary-text[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.vs-health-card--unhealthy[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error-border);\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n}\n\n.vs-health-card__bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-2);\n}\n\n.vs-health-card__summary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-2);\n min-width: 0;\n}\n\n.vs-health-card__error-line[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: var(--mj-space-2);\n min-width: 0;\n flex: 1;\n}\n\n.vs-health-card__error-copy[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-0-5);\n min-width: 0;\n font-size: var(--mj-text-xs);\n}\n\n.vs-health-card__error-headline[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-status-error-text);\n}\n\n.vs-health-card__error-message[_ngcontent-%COMP%] {\n color: var(--mj-status-error-text);\n}\n\n.vs-health-card__actions[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-shrink: 0;\n}\n\n.vs-health-card__toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-2);\n padding: 0;\n border: none;\n border-radius: var(--mj-radius-sm);\n background: transparent;\n color: var(--mj-text-primary);\n font-family: inherit;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n cursor: pointer;\n}\n\n.vs-health-card__toggle--quiet[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.vs-health-card__inline-toggle[_ngcontent-%COMP%], \n.vs-health-card__admin-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-1);\n align-self: flex-start;\n padding: 0;\n border: none;\n border-radius: var(--mj-radius-sm);\n background: transparent;\n color: var(--mj-text-secondary);\n font-family: inherit;\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n}\n\n.vs-health-card--unhealthy[_ngcontent-%COMP%] .vs-health-card__inline-toggle[_ngcontent-%COMP%] {\n color: var(--mj-status-error-text);\n}\n\n.vs-health-card__toggle[_ngcontent-%COMP%]:focus-visible, \n.vs-health-card__inline-toggle[_ngcontent-%COMP%]:focus-visible, \n.vs-health-card__admin-toggle[_ngcontent-%COMP%]:focus-visible {\n outline: none;\n box-shadow: var(--mj-focus-ring);\n}\n\n.vs-health-card__summary-text[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-health-card__chevron[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.vs-health-card__recheck[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-1-5);\n}\n\n.vs-health-card__icon[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n flex-shrink: 0;\n}\n\n.vs-health-card__icon--ok[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.vs-health-card__icon--warning[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.vs-health-card__icon--error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.vs-health-card__icon--muted[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.vs-health-card__checks[_ngcontent-%COMP%], \n.vs-health-card__expanded[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n padding-top: var(--mj-space-1-5);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.vs-health-card__row[_ngcontent-%COMP%], \n.vs-health-card__detail-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: var(--mj-space-2);\n font-size: var(--mj-text-xs);\n}\n\n.vs-health-card__row-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n min-width: 0;\n flex: 1;\n}\n\n.vs-health-card__row-header[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: var(--mj-space-1-5);\n}\n\n.vs-health-card__row-title[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-health-card__row-message[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.vs-health-card__admin-panel[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n padding-left: var(--mj-space-2);\n border-left: 2px solid var(--mj-border-subtle);\n}\n\n.vs-health-card__row-action[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: var(--mj-font-medium);\n}\n\n.vs-health-card__details[_ngcontent-%COMP%] {\n margin: var(--mj-space-0-5) 0 0;\n padding-left: var(--mj-space-4);\n color: var(--mj-text-muted);\n}"], changeDetection: 0 });
|
|
396
|
+
}
|
|
397
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(VSSetupHealthCardComponent, [{
|
|
398
|
+
type: Component,
|
|
399
|
+
args: [{ standalone: true, selector: 'vs-setup-health-card, mj-vs-setup-health-card', imports: [CommonModule, MJRefreshButtonComponent, SharedGenericModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"vs-health-card\"\n [class.vs-health-card--healthy]=\"IsAllOk\"\n [class.vs-health-card--warning]=\"IsWarningsOnly\"\n [class.vs-health-card--unhealthy]=\"HasError\"\n role=\"status\"\n aria-live=\"polite\"\n data-testid=\"vs-setup-health-card\"\n>\n <div class=\"vs-health-card__bar\">\n @if (Loading && !Result) {\n <div class=\"vs-health-card__summary\" data-testid=\"vs-setup-health-loading\">\n <mj-loading [ShowText]=\"false\" Size=\"small\"></mj-loading>\n <span class=\"vs-health-card__summary-text\">Checking Video Studio setup\u2026</span>\n </div>\n } @else if (IsAllOk) {\n <button\n type=\"button\"\n class=\"vs-health-card__toggle vs-health-card__toggle--quiet\"\n data-testid=\"vs-setup-health-ok-toggle\"\n [attr.aria-expanded]=\"Expanded\"\n (click)=\"ToggleExpanded()\"\n >\n <i class=\"fa-solid fa-circle-check vs-health-card__icon vs-health-card__icon--ok\" aria-hidden=\"true\"></i>\n <span class=\"vs-health-card__summary-text\" data-testid=\"vs-setup-health-ok-label\">Setup OK</span>\n <i\n class=\"fa-solid vs-health-card__chevron\"\n [class.fa-chevron-down]=\"!Expanded\"\n [class.fa-chevron-up]=\"Expanded\"\n aria-hidden=\"true\"\n ></i>\n </button>\n } @else if (IsWarningsOnly) {\n <button\n type=\"button\"\n class=\"vs-health-card__toggle vs-health-card__toggle--quiet\"\n data-testid=\"vs-setup-health-warnings-toggle\"\n [attr.aria-expanded]=\"WarningsExpanded\"\n (click)=\"ToggleWarningsExpanded()\"\n >\n <i class=\"fa-solid fa-circle-check vs-health-card__icon vs-health-card__icon--ok\" aria-hidden=\"true\"></i>\n <span class=\"vs-health-card__summary-text\" data-testid=\"vs-setup-health-warnings-label\">\n {{ WarningsSummaryLabel }}\n </span>\n <i\n class=\"fa-solid vs-health-card__chevron\"\n [class.fa-chevron-down]=\"!WarningsExpanded\"\n [class.fa-chevron-up]=\"WarningsExpanded\"\n aria-hidden=\"true\"\n ></i>\n </button>\n } @else if (HasError) {\n <div class=\"vs-health-card__error-line\" data-testid=\"vs-setup-health-issues-heading\">\n <i class=\"fa-solid fa-circle-exclamation vs-health-card__icon vs-health-card__icon--error\" aria-hidden=\"true\"></i>\n <div class=\"vs-health-card__error-copy\">\n <span class=\"vs-health-card__error-headline\" data-testid=\"vs-setup-health-error-headline\">\n {{ ErrorHeadline }}\n </span>\n @if (PrimaryErrorCheck?.Message) {\n <span class=\"vs-health-card__error-message\" data-testid=\"vs-setup-health-error-message\">\n {{ PrimaryErrorCheck?.Message }}\n </span>\n }\n </div>\n </div>\n }\n\n <div class=\"vs-health-card__actions\">\n @if (HasError) {\n <button\n type=\"button\"\n class=\"vs-health-card__inline-toggle\"\n data-testid=\"vs-setup-health-error-details-toggle\"\n [attr.aria-expanded]=\"ErrorDetailsExpanded\"\n (click)=\"ToggleErrorDetails()\"\n >\n <span>Details</span>\n <i\n class=\"fa-solid vs-health-card__chevron\"\n [class.fa-chevron-down]=\"!ErrorDetailsExpanded\"\n [class.fa-chevron-up]=\"ErrorDetailsExpanded\"\n aria-hidden=\"true\"\n ></i>\n </button>\n }\n\n <mj-refresh-button\n class=\"vs-health-card__recheck\"\n data-testid=\"vs-setup-health-recheck\"\n Variant=\"flat\"\n Size=\"sm\"\n Label=\"Recheck\"\n Title=\"Recheck\"\n [Loading]=\"Loading\"\n (Clicked)=\"OnRecheckClick()\"\n ></mj-refresh-button>\n </div>\n </div>\n\n @if ((IsWarningsOnly && WarningsExpanded) || (HasError && ErrorDetailsExpanded)) {\n <div class=\"vs-health-card__checks\" data-testid=\"vs-setup-health-non-ok-list\">\n @for (check of NonOkChecks; track check.Key) {\n <div\n class=\"vs-health-card__row\"\n [class.vs-health-card__row--error]=\"check.Status === 'Error'\"\n [class.vs-health-card__row--warning]=\"check.Status === 'Warning'\"\n [attr.data-testid]=\"'vs-setup-health-row-' + check.Key\"\n [attr.data-status]=\"check.Status\"\n >\n <i\n [class]=\"IconForStatus(check.Status) + ' vs-health-card__icon vs-health-card__icon--' + check.Status.toLowerCase()\"\n aria-hidden=\"true\"\n ></i>\n <div class=\"vs-health-card__row-body\">\n <div class=\"vs-health-card__row-header\">\n <span class=\"vs-health-card__row-title\" [attr.data-testid]=\"'vs-setup-health-title-' + check.Key\">\n {{ check.Title }}\n </span>\n <span class=\"vs-health-card__row-message\" [attr.data-testid]=\"'vs-setup-health-message-' + check.Key\">\n {{ check.Message }}\n </span>\n </div>\n @if (HasAdminDetails(check)) {\n <button\n type=\"button\"\n class=\"vs-health-card__admin-toggle\"\n [attr.data-testid]=\"'vs-setup-health-admin-toggle-' + check.Key\"\n [attr.aria-expanded]=\"IsAdminDetailsOpen(check.Key)\"\n (click)=\"ToggleAdminDetails(check.Key)\"\n >\n <span>Details for admins</span>\n <i\n class=\"fa-solid vs-health-card__chevron\"\n [class.fa-chevron-down]=\"!IsAdminDetailsOpen(check.Key)\"\n [class.fa-chevron-up]=\"IsAdminDetailsOpen(check.Key)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n @if (IsAdminDetailsOpen(check.Key)) {\n <div class=\"vs-health-card__admin-panel\" [attr.data-testid]=\"'vs-setup-health-admin-panel-' + check.Key\">\n @if (check.Action) {\n <div class=\"vs-health-card__row-action\" [attr.data-testid]=\"'vs-setup-health-action-' + check.Key\">\n {{ check.Action }}\n </div>\n }\n @if (check.Details && check.Details.length > 0) {\n <ul class=\"vs-health-card__details\" [attr.data-testid]=\"'vs-setup-health-details-' + check.Key\">\n @for (detail of check.Details; track detail) {\n <li>{{ detail }}</li>\n }\n </ul>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n }\n\n @if (IsAllOk && Expanded) {\n <div class=\"vs-health-card__expanded\" data-testid=\"vs-setup-health-expanded-details\">\n @for (check of Checks; track check.Key) {\n <div\n class=\"vs-health-card__detail-item\"\n [attr.data-testid]=\"'vs-setup-health-expanded-' + check.Key\"\n >\n <i\n [class]=\"IconForStatus(check.Status) + ' vs-health-card__icon vs-health-card__icon--' + check.Status.toLowerCase()\"\n aria-hidden=\"true\"\n ></i>\n <div class=\"vs-health-card__row-body\">\n <div class=\"vs-health-card__row-header\">\n <span class=\"vs-health-card__row-title\">{{ check.Title }}:</span>\n <span class=\"vs-health-card__row-message\">{{ check.Message }}</span>\n </div>\n @if (HasAdminDetails(check)) {\n <button\n type=\"button\"\n class=\"vs-health-card__admin-toggle\"\n [attr.data-testid]=\"'vs-setup-health-admin-toggle-' + check.Key\"\n [attr.aria-expanded]=\"IsAdminDetailsOpen(check.Key)\"\n (click)=\"ToggleAdminDetails(check.Key)\"\n >\n <span>Details for admins</span>\n <i\n class=\"fa-solid vs-health-card__chevron\"\n [class.fa-chevron-down]=\"!IsAdminDetailsOpen(check.Key)\"\n [class.fa-chevron-up]=\"IsAdminDetailsOpen(check.Key)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n @if (IsAdminDetailsOpen(check.Key)) {\n <div class=\"vs-health-card__admin-panel\" [attr.data-testid]=\"'vs-setup-health-admin-panel-' + check.Key\">\n @if (check.Action) {\n <div class=\"vs-health-card__row-action\">\n {{ check.Action }}\n </div>\n }\n @if (check.Details && check.Details.length > 0) {\n <ul class=\"vs-health-card__details\">\n @for (detail of check.Details; track detail) {\n <li>{{ detail }}</li>\n }\n </ul>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n }\n</div>\n", styles: [":host {\n display: block;\n width: 100%;\n}\n\n.vs-health-card {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n padding: var(--mj-space-2-5) var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.vs-health-card--healthy,\n.vs-health-card--warning {\n padding: 0;\n border: none;\n border-radius: var(--mj-radius-none);\n background: transparent;\n}\n\n.vs-health-card--healthy .vs-health-card__summary-text,\n.vs-health-card--warning .vs-health-card__summary-text {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.vs-health-card--unhealthy {\n border-color: var(--mj-status-error-border);\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n}\n\n.vs-health-card__bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-2);\n}\n\n.vs-health-card__summary {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-2);\n min-width: 0;\n}\n\n.vs-health-card__error-line {\n display: flex;\n align-items: flex-start;\n gap: var(--mj-space-2);\n min-width: 0;\n flex: 1;\n}\n\n.vs-health-card__error-copy {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-0-5);\n min-width: 0;\n font-size: var(--mj-text-xs);\n}\n\n.vs-health-card__error-headline {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-status-error-text);\n}\n\n.vs-health-card__error-message {\n color: var(--mj-status-error-text);\n}\n\n.vs-health-card__actions {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-shrink: 0;\n}\n\n.vs-health-card__toggle {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-2);\n padding: 0;\n border: none;\n border-radius: var(--mj-radius-sm);\n background: transparent;\n color: var(--mj-text-primary);\n font-family: inherit;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n cursor: pointer;\n}\n\n.vs-health-card__toggle--quiet {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.vs-health-card__inline-toggle,\n.vs-health-card__admin-toggle {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-1);\n align-self: flex-start;\n padding: 0;\n border: none;\n border-radius: var(--mj-radius-sm);\n background: transparent;\n color: var(--mj-text-secondary);\n font-family: inherit;\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n}\n\n.vs-health-card--unhealthy .vs-health-card__inline-toggle {\n color: var(--mj-status-error-text);\n}\n\n.vs-health-card__toggle:focus-visible,\n.vs-health-card__inline-toggle:focus-visible,\n.vs-health-card__admin-toggle:focus-visible {\n outline: none;\n box-shadow: var(--mj-focus-ring);\n}\n\n.vs-health-card__summary-text {\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-health-card__chevron {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.vs-health-card__recheck {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-1-5);\n}\n\n.vs-health-card__icon {\n font-size: var(--mj-text-sm);\n flex-shrink: 0;\n}\n\n.vs-health-card__icon--ok {\n color: var(--mj-status-success);\n}\n\n.vs-health-card__icon--warning {\n color: var(--mj-status-warning);\n}\n\n.vs-health-card__icon--error {\n color: var(--mj-status-error);\n}\n\n.vs-health-card__icon--muted {\n color: var(--mj-text-muted);\n}\n\n.vs-health-card__checks,\n.vs-health-card__expanded {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n padding-top: var(--mj-space-1-5);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.vs-health-card__row,\n.vs-health-card__detail-item {\n display: flex;\n align-items: flex-start;\n gap: var(--mj-space-2);\n font-size: var(--mj-text-xs);\n}\n\n.vs-health-card__row-body {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n min-width: 0;\n flex: 1;\n}\n\n.vs-health-card__row-header {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: var(--mj-space-1-5);\n}\n\n.vs-health-card__row-title {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-health-card__row-message {\n color: var(--mj-text-secondary);\n}\n\n.vs-health-card__admin-panel {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n padding-left: var(--mj-space-2);\n border-left: 2px solid var(--mj-border-subtle);\n}\n\n.vs-health-card__row-action {\n color: var(--mj-text-primary);\n font-weight: var(--mj-font-medium);\n}\n\n.vs-health-card__details {\n margin: var(--mj-space-0-5) 0 0;\n padding-left: var(--mj-space-4);\n color: var(--mj-text-muted);\n}\n"] }]
|
|
400
|
+
}], null, { Result: [{
|
|
401
|
+
type: Input
|
|
402
|
+
}], Loading: [{
|
|
403
|
+
type: Input
|
|
404
|
+
}], Expanded: [{
|
|
405
|
+
type: Input
|
|
406
|
+
}], Recheck: [{
|
|
407
|
+
type: Output
|
|
408
|
+
}], ExpandedChange: [{
|
|
409
|
+
type: Output
|
|
410
|
+
}] }); })();
|
|
411
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VSSetupHealthCardComponent, { className: "VSSetupHealthCardComponent", filePath: "src/VideoStudio/components/vs-setup-health-card.component.ts", lineNumber: 33 }); })();
|
|
412
|
+
//# sourceMappingURL=vs-setup-health-card.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vs-setup-health-card.component.js","sourceRoot":"","sources":["../../../src/VideoStudio/components/vs-setup-health-card.component.ts","../../../src/VideoStudio/components/vs-setup-health-card.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n VideoStudioSetupHealthCheck,\n VideoStudioSetupHealthCheckStatus,\n VideoStudioSetupHealthOutput,\n} from '@memberjunction/core-entities';\nimport { MJRefreshButtonComponent } from '@memberjunction/ng-ui-components';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\n\n/**\n * Pure standalone view card displaying Video Studio setup health (`VideoStudio.SetupHealth`).\n *\n * - **All OK:** renders a single compact `\"Setup OK\"` line that expands on click to reveal per-subsystem details.\n * - **Only warnings:** renders a single quiet `\"Ready, with N notes\"` line (collapsed by default) that expands on click.\n * - **An error:** renders a single status-error line (`\"Video Studio can't make videos yet: <title>\"`, message, and `\"Details\"` toggle).\n * - `Action` text and `Details` live under a `\"Details for admins\"` toggle inside each expanded note.\n */\n@Component({\n standalone: true,\n selector: 'vs-setup-health-card, mj-vs-setup-health-card',\n imports: [CommonModule, MJRefreshButtonComponent, SharedGenericModule],\n templateUrl: './vs-setup-health-card.component.html',\n styleUrls: ['./vs-setup-health-card.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VSSetupHealthCardComponent {\n @Input() Result: VideoStudioSetupHealthOutput | null = null;\n @Input() Loading = false;\n @Input() Expanded = false;\n\n @Output() Recheck = new EventEmitter<void>();\n @Output() ExpandedChange = new EventEmitter<boolean>();\n\n public WarningsExpanded = false;\n public ErrorDetailsExpanded = false;\n private readonly openAdminDetailsKeys = new Set<string>();\n\n public get Checks(): VideoStudioSetupHealthCheck[] {\n return this.Result?.Checks ?? [];\n }\n\n public get NonOkChecks(): VideoStudioSetupHealthCheck[] {\n return this.Checks.filter((check) => check.Status !== 'OK');\n }\n\n public get ErrorChecks(): VideoStudioSetupHealthCheck[] {\n return this.Checks.filter((check) => check.Status === 'Error');\n }\n\n public get WarningChecks(): VideoStudioSetupHealthCheck[] {\n return this.Checks.filter((check) => check.Status === 'Warning');\n }\n\n public get HasError(): boolean {\n return Boolean(this.Result && (!this.Result.Healthy || this.ErrorChecks.length > 0));\n }\n\n public get IsHealthy(): boolean {\n return Boolean(this.Result && !this.HasError);\n }\n\n public get IsWarningsOnly(): boolean {\n return Boolean(this.IsHealthy && this.WarningChecks.length > 0);\n }\n\n public get IsAllOk(): boolean {\n return Boolean(this.IsHealthy && this.NonOkChecks.length === 0);\n }\n\n public get PrimaryErrorCheck(): VideoStudioSetupHealthCheck | null {\n return this.ErrorChecks[0] ?? this.NonOkChecks[0] ?? null;\n }\n\n public get ErrorHeadline(): string {\n return `Video Studio can't make videos yet: ${this.PrimaryErrorCheck?.Title ?? 'Setup issue'}`;\n }\n\n public get WarningsSummaryLabel(): string {\n const count = this.WarningChecks.length;\n return `Ready, with ${count} ${count === 1 ? 'note' : 'notes'}`;\n }\n\n public ToggleExpanded(): void {\n this.Expanded = !this.Expanded;\n this.ExpandedChange.emit(this.Expanded);\n }\n\n public ToggleWarningsExpanded(): void {\n this.WarningsExpanded = !this.WarningsExpanded;\n }\n\n public ToggleErrorDetails(): void {\n this.ErrorDetailsExpanded = !this.ErrorDetailsExpanded;\n }\n\n public HasAdminDetails(check: VideoStudioSetupHealthCheck): boolean {\n return Boolean(check.Action || (check.Details && check.Details.length > 0));\n }\n\n public IsAdminDetailsOpen(key: string): boolean {\n return this.openAdminDetailsKeys.has(key);\n }\n\n public ToggleAdminDetails(key: string): void {\n if (this.openAdminDetailsKeys.has(key)) {\n this.openAdminDetailsKeys.delete(key);\n } else {\n this.openAdminDetailsKeys.add(key);\n }\n }\n\n public OnRecheckClick(): void {\n this.Recheck.emit();\n }\n\n public IconForStatus(status: VideoStudioSetupHealthCheckStatus): string {\n switch (status) {\n case 'OK':\n return 'fa-solid fa-circle-check';\n case 'Warning':\n return 'fa-solid fa-triangle-exclamation';\n case 'Error':\n default:\n return 'fa-solid fa-circle-exclamation';\n }\n }\n}\n","<div\n class=\"vs-health-card\"\n [class.vs-health-card--healthy]=\"IsAllOk\"\n [class.vs-health-card--warning]=\"IsWarningsOnly\"\n [class.vs-health-card--unhealthy]=\"HasError\"\n role=\"status\"\n aria-live=\"polite\"\n data-testid=\"vs-setup-health-card\"\n>\n <div class=\"vs-health-card__bar\">\n @if (Loading && !Result) {\n <div class=\"vs-health-card__summary\" data-testid=\"vs-setup-health-loading\">\n <mj-loading [ShowText]=\"false\" Size=\"small\"></mj-loading>\n <span class=\"vs-health-card__summary-text\">Checking Video Studio setup…</span>\n </div>\n } @else if (IsAllOk) {\n <button\n type=\"button\"\n class=\"vs-health-card__toggle vs-health-card__toggle--quiet\"\n data-testid=\"vs-setup-health-ok-toggle\"\n [attr.aria-expanded]=\"Expanded\"\n (click)=\"ToggleExpanded()\"\n >\n <i class=\"fa-solid fa-circle-check vs-health-card__icon vs-health-card__icon--ok\" aria-hidden=\"true\"></i>\n <span class=\"vs-health-card__summary-text\" data-testid=\"vs-setup-health-ok-label\">Setup OK</span>\n <i\n class=\"fa-solid vs-health-card__chevron\"\n [class.fa-chevron-down]=\"!Expanded\"\n [class.fa-chevron-up]=\"Expanded\"\n aria-hidden=\"true\"\n ></i>\n </button>\n } @else if (IsWarningsOnly) {\n <button\n type=\"button\"\n class=\"vs-health-card__toggle vs-health-card__toggle--quiet\"\n data-testid=\"vs-setup-health-warnings-toggle\"\n [attr.aria-expanded]=\"WarningsExpanded\"\n (click)=\"ToggleWarningsExpanded()\"\n >\n <i class=\"fa-solid fa-circle-check vs-health-card__icon vs-health-card__icon--ok\" aria-hidden=\"true\"></i>\n <span class=\"vs-health-card__summary-text\" data-testid=\"vs-setup-health-warnings-label\">\n {{ WarningsSummaryLabel }}\n </span>\n <i\n class=\"fa-solid vs-health-card__chevron\"\n [class.fa-chevron-down]=\"!WarningsExpanded\"\n [class.fa-chevron-up]=\"WarningsExpanded\"\n aria-hidden=\"true\"\n ></i>\n </button>\n } @else if (HasError) {\n <div class=\"vs-health-card__error-line\" data-testid=\"vs-setup-health-issues-heading\">\n <i class=\"fa-solid fa-circle-exclamation vs-health-card__icon vs-health-card__icon--error\" aria-hidden=\"true\"></i>\n <div class=\"vs-health-card__error-copy\">\n <span class=\"vs-health-card__error-headline\" data-testid=\"vs-setup-health-error-headline\">\n {{ ErrorHeadline }}\n </span>\n @if (PrimaryErrorCheck?.Message) {\n <span class=\"vs-health-card__error-message\" data-testid=\"vs-setup-health-error-message\">\n {{ PrimaryErrorCheck?.Message }}\n </span>\n }\n </div>\n </div>\n }\n\n <div class=\"vs-health-card__actions\">\n @if (HasError) {\n <button\n type=\"button\"\n class=\"vs-health-card__inline-toggle\"\n data-testid=\"vs-setup-health-error-details-toggle\"\n [attr.aria-expanded]=\"ErrorDetailsExpanded\"\n (click)=\"ToggleErrorDetails()\"\n >\n <span>Details</span>\n <i\n class=\"fa-solid vs-health-card__chevron\"\n [class.fa-chevron-down]=\"!ErrorDetailsExpanded\"\n [class.fa-chevron-up]=\"ErrorDetailsExpanded\"\n aria-hidden=\"true\"\n ></i>\n </button>\n }\n\n <mj-refresh-button\n class=\"vs-health-card__recheck\"\n data-testid=\"vs-setup-health-recheck\"\n Variant=\"flat\"\n Size=\"sm\"\n Label=\"Recheck\"\n Title=\"Recheck\"\n [Loading]=\"Loading\"\n (Clicked)=\"OnRecheckClick()\"\n ></mj-refresh-button>\n </div>\n </div>\n\n @if ((IsWarningsOnly && WarningsExpanded) || (HasError && ErrorDetailsExpanded)) {\n <div class=\"vs-health-card__checks\" data-testid=\"vs-setup-health-non-ok-list\">\n @for (check of NonOkChecks; track check.Key) {\n <div\n class=\"vs-health-card__row\"\n [class.vs-health-card__row--error]=\"check.Status === 'Error'\"\n [class.vs-health-card__row--warning]=\"check.Status === 'Warning'\"\n [attr.data-testid]=\"'vs-setup-health-row-' + check.Key\"\n [attr.data-status]=\"check.Status\"\n >\n <i\n [class]=\"IconForStatus(check.Status) + ' vs-health-card__icon vs-health-card__icon--' + check.Status.toLowerCase()\"\n aria-hidden=\"true\"\n ></i>\n <div class=\"vs-health-card__row-body\">\n <div class=\"vs-health-card__row-header\">\n <span class=\"vs-health-card__row-title\" [attr.data-testid]=\"'vs-setup-health-title-' + check.Key\">\n {{ check.Title }}\n </span>\n <span class=\"vs-health-card__row-message\" [attr.data-testid]=\"'vs-setup-health-message-' + check.Key\">\n {{ check.Message }}\n </span>\n </div>\n @if (HasAdminDetails(check)) {\n <button\n type=\"button\"\n class=\"vs-health-card__admin-toggle\"\n [attr.data-testid]=\"'vs-setup-health-admin-toggle-' + check.Key\"\n [attr.aria-expanded]=\"IsAdminDetailsOpen(check.Key)\"\n (click)=\"ToggleAdminDetails(check.Key)\"\n >\n <span>Details for admins</span>\n <i\n class=\"fa-solid vs-health-card__chevron\"\n [class.fa-chevron-down]=\"!IsAdminDetailsOpen(check.Key)\"\n [class.fa-chevron-up]=\"IsAdminDetailsOpen(check.Key)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n @if (IsAdminDetailsOpen(check.Key)) {\n <div class=\"vs-health-card__admin-panel\" [attr.data-testid]=\"'vs-setup-health-admin-panel-' + check.Key\">\n @if (check.Action) {\n <div class=\"vs-health-card__row-action\" [attr.data-testid]=\"'vs-setup-health-action-' + check.Key\">\n {{ check.Action }}\n </div>\n }\n @if (check.Details && check.Details.length > 0) {\n <ul class=\"vs-health-card__details\" [attr.data-testid]=\"'vs-setup-health-details-' + check.Key\">\n @for (detail of check.Details; track detail) {\n <li>{{ detail }}</li>\n }\n </ul>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n }\n\n @if (IsAllOk && Expanded) {\n <div class=\"vs-health-card__expanded\" data-testid=\"vs-setup-health-expanded-details\">\n @for (check of Checks; track check.Key) {\n <div\n class=\"vs-health-card__detail-item\"\n [attr.data-testid]=\"'vs-setup-health-expanded-' + check.Key\"\n >\n <i\n [class]=\"IconForStatus(check.Status) + ' vs-health-card__icon vs-health-card__icon--' + check.Status.toLowerCase()\"\n aria-hidden=\"true\"\n ></i>\n <div class=\"vs-health-card__row-body\">\n <div class=\"vs-health-card__row-header\">\n <span class=\"vs-health-card__row-title\">{{ check.Title }}:</span>\n <span class=\"vs-health-card__row-message\">{{ check.Message }}</span>\n </div>\n @if (HasAdminDetails(check)) {\n <button\n type=\"button\"\n class=\"vs-health-card__admin-toggle\"\n [attr.data-testid]=\"'vs-setup-health-admin-toggle-' + check.Key\"\n [attr.aria-expanded]=\"IsAdminDetailsOpen(check.Key)\"\n (click)=\"ToggleAdminDetails(check.Key)\"\n >\n <span>Details for admins</span>\n <i\n class=\"fa-solid vs-health-card__chevron\"\n [class.fa-chevron-down]=\"!IsAdminDetailsOpen(check.Key)\"\n [class.fa-chevron-up]=\"IsAdminDetailsOpen(check.Key)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n @if (IsAdminDetailsOpen(check.Key)) {\n <div class=\"vs-health-card__admin-panel\" [attr.data-testid]=\"'vs-setup-health-admin-panel-' + check.Key\">\n @if (check.Action) {\n <div class=\"vs-health-card__row-action\">\n {{ check.Action }}\n </div>\n }\n @if (check.Details && check.Details.length > 0) {\n <ul class=\"vs-health-card__details\">\n @for (detail of check.Details; track detail) {\n <li>{{ detail }}</li>\n }\n </ul>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n }\n</div>\n"]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { UserInfo } from '@memberjunction/core';
|
|
3
|
+
import { NavigationRequest } from '@memberjunction/ng-artifacts';
|
|
4
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
5
|
+
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
6
|
+
import { VSStudioSlideInStateService } from '../services/vs-studio-slide-in-state.service';
|
|
7
|
+
import { StudioBriefClientToolDefinition } from '../video-studio-agent-context';
|
|
8
|
+
import { VSCopilotConversationCreatedEvent, VSCopilotPanelComponent } from './vs-copilot-panel.component';
|
|
9
|
+
import { VSProductionBriefStartEvent, VSProductionBriefStateSnapshot } from './vs-production-brief.component';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
/**
|
|
12
|
+
* Shared right-side Video Studio slide-in host (`vs-studio-slide-in`).
|
|
13
|
+
*
|
|
14
|
+
* Renders the collapsed right-edge reopen strip (`button.vs-copilot-strip`) when closed
|
|
15
|
+
* and the `<aside class="vs-copilot-slidein">` wrapping `<vs-copilot-panel>` when open.
|
|
16
|
+
* Backed by the root-provided {@link VSStudioSlideInStateService} so open/closed state
|
|
17
|
+
* and the active conversation ID survive navigation across Productions, Brand Kits,
|
|
18
|
+
* and Archetypes. Also combines the hosting resource page's `[PageContext]` and `[PageTools]`
|
|
19
|
+
* with the Video Studio brief context and brief form-fill client tools.
|
|
20
|
+
*/
|
|
21
|
+
export declare class VSStudioSlideInComponent extends BaseAngularComponent implements OnInit, OnChanges, OnDestroy {
|
|
22
|
+
private _pageContext;
|
|
23
|
+
private _appContext;
|
|
24
|
+
private _fallbackBrandKitId;
|
|
25
|
+
CurrentUser: UserInfo | null;
|
|
26
|
+
EnvironmentId: string;
|
|
27
|
+
ApplicationId: string;
|
|
28
|
+
PageSource: BaseResourceComponent | null;
|
|
29
|
+
set PageContext(value: Record<string, unknown> | null);
|
|
30
|
+
get PageContext(): Record<string, unknown> | null;
|
|
31
|
+
set AppContext(value: Record<string, unknown> | null);
|
|
32
|
+
get AppContext(): Record<string, unknown> | null;
|
|
33
|
+
PageTools: StudioBriefClientToolDefinition[];
|
|
34
|
+
set FallbackBrandKitId(value: string | null);
|
|
35
|
+
get FallbackBrandKitId(): string | null;
|
|
36
|
+
HeaderTitle: string;
|
|
37
|
+
OpenChange: EventEmitter<boolean>;
|
|
38
|
+
ConversationCreated: EventEmitter<VSCopilotConversationCreatedEvent>;
|
|
39
|
+
PendingArtifactConsumed: EventEmitter<void>;
|
|
40
|
+
BriefStateChange: EventEmitter<VSProductionBriefStateSnapshot>;
|
|
41
|
+
BriefStartRequested: EventEmitter<VSProductionBriefStartEvent>;
|
|
42
|
+
NavigationRequest: EventEmitter<NavigationRequest>;
|
|
43
|
+
CopilotPanel?: VSCopilotPanelComponent;
|
|
44
|
+
readonly SlideInState: VSStudioSlideInStateService;
|
|
45
|
+
private readonly elementRef;
|
|
46
|
+
private readonly navigationService;
|
|
47
|
+
private readonly cdr;
|
|
48
|
+
private stateSub;
|
|
49
|
+
private lastBriefShowingState;
|
|
50
|
+
EffectiveAppContext: Record<string, unknown>;
|
|
51
|
+
ngOnInit(): void;
|
|
52
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
53
|
+
ngOnDestroy(): void;
|
|
54
|
+
get IsOpen(): boolean;
|
|
55
|
+
get ConversationId(): string | null;
|
|
56
|
+
get PendingArtifactId(): string | null;
|
|
57
|
+
get PendingArtifactVersionNumber(): number | null;
|
|
58
|
+
get EffectiveCurrentUser(): UserInfo | null;
|
|
59
|
+
OpenNewProduction(): void;
|
|
60
|
+
Reopen(): void;
|
|
61
|
+
Close(): void;
|
|
62
|
+
OnEscapeKeydown(event: Event): void;
|
|
63
|
+
OnConversationCreated(event: VSCopilotConversationCreatedEvent): void;
|
|
64
|
+
OnPendingArtifactConsumed(): void;
|
|
65
|
+
OnBriefStateChange(snapshot: VSProductionBriefStateSnapshot): void;
|
|
66
|
+
OnBriefStartRequested(event: VSProductionBriefStartEvent): void;
|
|
67
|
+
OnNavigationRequest(event: NavigationRequest): void;
|
|
68
|
+
private rebuildEffectiveAppContext;
|
|
69
|
+
private registerCombinedClientTools;
|
|
70
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VSStudioSlideInComponent, never>;
|
|
71
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VSStudioSlideInComponent, "vs-studio-slide-in", never, { "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "EnvironmentId": { "alias": "EnvironmentId"; "required": false; }; "ApplicationId": { "alias": "ApplicationId"; "required": false; }; "PageSource": { "alias": "PageSource"; "required": false; }; "PageContext": { "alias": "PageContext"; "required": false; }; "AppContext": { "alias": "AppContext"; "required": false; }; "PageTools": { "alias": "PageTools"; "required": false; }; "FallbackBrandKitId": { "alias": "FallbackBrandKitId"; "required": false; }; "HeaderTitle": { "alias": "HeaderTitle"; "required": false; }; }, { "OpenChange": "OpenChange"; "ConversationCreated": "ConversationCreated"; "PendingArtifactConsumed": "PendingArtifactConsumed"; "BriefStateChange": "BriefStateChange"; "BriefStartRequested": "BriefStartRequested"; "NavigationRequest": "NavigationRequest"; }, never, never, true, never>;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=vs-studio-slide-in.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vs-studio-slide-in.component.d.ts","sourceRoot":"","sources":["../../../src/VideoStudio/components/vs-studio-slide-in.component.ts"],"names":[],"mappings":"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"}
|