@memberjunction/ng-dashboards 5.39.0 → 5.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +128 -4
  2. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  3. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +548 -145
  4. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  5. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
  6. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
  7. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
  8. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
  9. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
  10. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
  11. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
  12. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
  13. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
  14. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
  15. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
  16. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
  17. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
  18. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
  19. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
  20. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
  21. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
  22. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
  23. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
  24. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
  25. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
  26. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
  27. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
  28. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
  29. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +100 -2
  30. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -1
  31. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +603 -213
  32. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -1
  33. package/dist/AI/components/autotagging/shared/classify.format.d.ts +15 -0
  34. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -1
  35. package/dist/AI/components/autotagging/shared/classify.format.js +51 -0
  36. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -1
  37. package/dist/AI/components/autotagging/shared/classify.types.d.ts +43 -0
  38. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -1
  39. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -1
  40. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +38 -1
  41. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -1
  42. package/dist/AI/components/autotagging/tabs/history-tab.component.js +185 -68
  43. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -1
  44. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +10 -1
  45. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -1
  46. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +249 -188
  47. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -1
  48. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +12 -1
  49. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -1
  50. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +377 -296
  51. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
  52. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +8 -0
  53. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -1
  54. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +112 -68
  55. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -1
  56. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +9 -0
  57. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -1
  58. package/dist/AI/components/autotagging/tabs/types-tab.component.js +87 -36
  59. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -1
  60. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
  61. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  62. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +15 -3
  63. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  64. package/dist/AI/components/execution-monitoring.component.js +1 -1
  65. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  66. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
  67. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  68. package/dist/AI/components/tags/tags-resource.component.js +28 -6
  69. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  70. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
  71. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  72. package/dist/AI/components/vectors/vector-management-resource.component.js +330 -302
  73. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  74. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  75. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  76. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
  77. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  78. package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
  79. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  80. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  81. package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
  82. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  83. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  84. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +12 -9
  85. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  86. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
  87. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  88. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -120
  89. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  90. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
  91. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
  92. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
  93. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
  94. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
  95. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
  96. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
  97. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
  98. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
  99. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
  100. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
  101. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
  102. package/dist/KnowledgeHub/index.d.ts +3 -0
  103. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  104. package/dist/KnowledgeHub/index.js +3 -0
  105. package/dist/KnowledgeHub/index.js.map +1 -1
  106. package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
  107. package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
  108. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  109. package/dist/ai-dashboards.module.d.ts +48 -38
  110. package/dist/ai-dashboards.module.d.ts.map +1 -1
  111. package/dist/ai-dashboards.module.js +41 -1
  112. package/dist/ai-dashboards.module.js.map +1 -1
  113. package/dist/data-explorer-dashboards.module.d.ts +12 -14
  114. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  115. package/dist/data-explorer-dashboards.module.js +5 -14
  116. package/dist/data-explorer-dashboards.module.js.map +1 -1
  117. package/dist/public-api.d.ts +3 -0
  118. package/dist/public-api.d.ts.map +1 -1
  119. package/dist/public-api.js +3 -0
  120. package/dist/public-api.js.map +1 -1
  121. package/package.json +57 -55
  122. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
  123. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
  124. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
  125. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
  126. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
  127. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
  128. package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
  129. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
@@ -19,7 +19,7 @@ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
19
19
  import { MJNotificationService } from '@memberjunction/ng-notifications';
20
20
  import { AIEngineBase } from '@memberjunction/ai-engine-base';
21
21
  import { KnowledgeHubMetadataEngine } from '@memberjunction/core-entities';
22
- import { formatNumber, formatDate, computeDuration, displayStatus, getSourceTypeIcon, CronToHumanReadable } from '../shared/classify.format';
22
+ import { formatNumber, formatDate, computeDuration, displayStatus, getSourceTypeIcon, CronToHumanReadable, deriveDisplayName } from '../shared/classify.format';
23
23
  import * as i0 from "@angular/core";
24
24
  import * as i1 from "@angular/forms";
25
25
  import * as i2 from "@memberjunction/ng-shared-generic";
@@ -27,547 +27,585 @@ import * as i3 from "@memberjunction/ng-ui-components";
27
27
  import * as i4 from "../dialogs/dry-run-preview.dialog.component";
28
28
  import * as i5 from "@angular/common";
29
29
  const _forTrack0 = ($index, $item) => $item.ID;
30
- function ClassifySourcesTabComponent_For_11_Conditional_9_Template(rf, ctx) { if (rf & 1) {
30
+ function ClassifySourcesTabComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelement(0, "i", 21);
32
+ i0.ɵɵelementStart(1, "span", 5);
33
+ i0.ɵɵtext(2, "Refreshing\u2026");
34
+ i0.ɵɵelementEnd();
35
+ } }
36
+ function ClassifySourcesTabComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
37
+ i0.ɵɵelement(0, "i", 22);
38
+ i0.ɵɵelementStart(1, "span", 5);
39
+ i0.ɵɵtext(2, "Refresh");
40
+ i0.ɵɵelementEnd();
41
+ } }
42
+ function ClassifySourcesTabComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelementStart(0, "div", 10);
44
+ i0.ɵɵelement(1, "mj-loading", 23);
45
+ i0.ɵɵelementEnd();
46
+ } }
47
+ function ClassifySourcesTabComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
48
+ const _r1 = i0.ɵɵgetCurrentView();
49
+ i0.ɵɵelementStart(0, "div", 12);
50
+ i0.ɵɵelement(1, "i", 24);
51
+ i0.ɵɵelementStart(2, "h3");
52
+ i0.ɵɵtext(3, "No content sources yet");
53
+ i0.ɵɵelementEnd();
54
+ i0.ɵɵelementStart(4, "p");
55
+ i0.ɵɵtext(5, "Use the guided setup to stand up your first source \u2014 pick an entity or URL, configure its document, taxonomy, and domain context in one flow.");
56
+ i0.ɵɵelementEnd();
57
+ i0.ɵɵelementStart(6, "div", 25)(7, "button", 6);
58
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_17_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAddSourceGuided()); });
59
+ i0.ɵɵelement(8, "i", 4);
60
+ i0.ɵɵtext(9, " Add Source (Guided) ");
61
+ i0.ɵɵelementEnd();
62
+ i0.ɵɵelementStart(10, "button", 3);
63
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_17_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAddSource()); });
64
+ i0.ɵɵelement(11, "i", 7);
65
+ i0.ɵɵtext(12, " Add manually ");
66
+ i0.ɵɵelementEnd()()();
67
+ } }
68
+ function ClassifySourcesTabComponent_For_20_Conditional_9_Template(rf, ctx) { if (rf & 1) {
31
69
  i0.ɵɵtext(0);
32
70
  } if (rf & 2) {
33
- const card_r2 = i0.ɵɵnextContext().$implicit;
34
- i0.ɵɵtextInterpolate1(" \u00B7 ", card_r2.FileTypeName);
71
+ const card_r4 = i0.ɵɵnextContext().$implicit;
72
+ i0.ɵɵtextInterpolate1(" \u00B7 ", card_r4.FileTypeName);
35
73
  } }
36
- function ClassifySourcesTabComponent_For_11_Conditional_13_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelementStart(0, "div", 23);
74
+ function ClassifySourcesTabComponent_For_20_Conditional_13_Template(rf, ctx) { if (rf & 1) {
75
+ i0.ɵɵelementStart(0, "div", 33);
38
76
  i0.ɵɵtext(1);
39
77
  i0.ɵɵelementEnd();
40
78
  } if (rf & 2) {
41
- const card_r2 = i0.ɵɵnextContext().$implicit;
79
+ const card_r4 = i0.ɵɵnextContext().$implicit;
42
80
  i0.ɵɵadvance();
43
- i0.ɵɵtextInterpolate(card_r2.URL);
81
+ i0.ɵɵtextInterpolate(card_r4.URL);
44
82
  } }
45
- function ClassifySourcesTabComponent_For_11_Conditional_35_Template(rf, ctx) { if (rf & 1) {
46
- const _r4 = i0.ɵɵgetCurrentView();
47
- i0.ɵɵelementStart(0, "div", 37);
48
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_11_Conditional_35_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const card_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.RemoveSchedule(card_r2); return i0.ɵɵresetView($event.stopPropagation()); });
49
- i0.ɵɵelement(1, "i", 38);
83
+ function ClassifySourcesTabComponent_For_20_Conditional_35_Template(rf, ctx) { if (rf & 1) {
84
+ const _r5 = i0.ɵɵgetCurrentView();
85
+ i0.ɵɵelementStart(0, "div", 47);
86
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Conditional_35_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const card_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.RemoveSchedule(card_r4); return i0.ɵɵresetView($event.stopPropagation()); });
87
+ i0.ɵɵelement(1, "i", 48);
50
88
  i0.ɵɵelementStart(2, "span");
51
89
  i0.ɵɵtext(3);
52
90
  i0.ɵɵelementEnd()();
53
91
  } if (rf & 2) {
54
- const card_r2 = i0.ɵɵnextContext().$implicit;
55
- const ctx_r2 = i0.ɵɵnextContext();
92
+ const card_r4 = i0.ɵɵnextContext().$implicit;
93
+ const ctx_r1 = i0.ɵɵnextContext();
56
94
  i0.ɵɵadvance(3);
57
- i0.ɵɵtextInterpolate(ctx_r2.GetScheduleLabel(card_r2));
95
+ i0.ɵɵtextInterpolate(ctx_r1.GetScheduleLabel(card_r4));
58
96
  } }
59
- function ClassifySourcesTabComponent_For_11_Conditional_46_Template(rf, ctx) { if (rf & 1) {
60
- const _r5 = i0.ɵɵgetCurrentView();
61
- i0.ɵɵelementStart(0, "button", 39);
62
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_11_Conditional_46_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const card_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.OpenScheduleDialog(card_r2); return i0.ɵɵresetView($event.stopPropagation()); });
63
- i0.ɵɵelement(1, "i", 38);
97
+ function ClassifySourcesTabComponent_For_20_Conditional_46_Template(rf, ctx) { if (rf & 1) {
98
+ const _r6 = i0.ɵɵgetCurrentView();
99
+ i0.ɵɵelementStart(0, "button", 49);
100
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Conditional_46_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const card_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.OpenScheduleDialog(card_r4); return i0.ɵɵresetView($event.stopPropagation()); });
101
+ i0.ɵɵelement(1, "i", 48);
64
102
  i0.ɵɵtext(2, " Schedule");
65
103
  i0.ɵɵelementEnd();
66
104
  } }
67
- function ClassifySourcesTabComponent_For_11_Template(rf, ctx) { if (rf & 1) {
68
- const _r1 = i0.ɵɵgetCurrentView();
69
- i0.ɵɵelementStart(0, "div", 16);
70
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_11_Template_div_click_0_listener() { const card_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OpenSourceDetail(card_r2)); });
71
- i0.ɵɵelementStart(1, "div", 17)(2, "div", 18);
105
+ function ClassifySourcesTabComponent_For_20_Template(rf, ctx) { if (rf & 1) {
106
+ const _r3 = i0.ɵɵgetCurrentView();
107
+ i0.ɵɵelementStart(0, "div", 26);
108
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Template_div_click_0_listener() { const card_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OpenSourceDetail(card_r4)); });
109
+ i0.ɵɵelementStart(1, "div", 27)(2, "div", 28);
72
110
  i0.ɵɵelement(3, "i");
73
111
  i0.ɵɵelementEnd();
74
- i0.ɵɵelementStart(4, "div")(5, "div", 19);
112
+ i0.ɵɵelementStart(4, "div")(5, "div", 29);
75
113
  i0.ɵɵtext(6);
76
114
  i0.ɵɵelementEnd();
77
- i0.ɵɵelementStart(7, "div", 20);
115
+ i0.ɵɵelementStart(7, "div", 30);
78
116
  i0.ɵɵtext(8);
79
- i0.ɵɵconditionalCreate(9, ClassifySourcesTabComponent_For_11_Conditional_9_Template, 1, 1);
117
+ i0.ɵɵconditionalCreate(9, ClassifySourcesTabComponent_For_20_Conditional_9_Template, 1, 1);
80
118
  i0.ɵɵelementEnd()();
81
- i0.ɵɵelementStart(10, "div", 21);
82
- i0.ɵɵelement(11, "div", 22);
119
+ i0.ɵɵelementStart(10, "div", 31);
120
+ i0.ɵɵelement(11, "div", 32);
83
121
  i0.ɵɵtext(12);
84
122
  i0.ɵɵelementEnd()();
85
- i0.ɵɵconditionalCreate(13, ClassifySourcesTabComponent_For_11_Conditional_13_Template, 2, 1, "div", 23);
86
- i0.ɵɵelementStart(14, "div", 24)(15, "div", 25)(16, "div", 26);
123
+ i0.ɵɵconditionalCreate(13, ClassifySourcesTabComponent_For_20_Conditional_13_Template, 2, 1, "div", 33);
124
+ i0.ɵɵelementStart(14, "div", 34)(15, "div", 35)(16, "div", 36);
87
125
  i0.ɵɵtext(17);
88
126
  i0.ɵɵelementEnd();
89
- i0.ɵɵelementStart(18, "div", 27);
127
+ i0.ɵɵelementStart(18, "div", 37);
90
128
  i0.ɵɵtext(19, "Items");
91
129
  i0.ɵɵelementEnd()();
92
- i0.ɵɵelementStart(20, "div", 25)(21, "div", 26);
130
+ i0.ɵɵelementStart(20, "div", 35)(21, "div", 36);
93
131
  i0.ɵɵtext(22);
94
132
  i0.ɵɵelementEnd();
95
- i0.ɵɵelementStart(23, "div", 27);
133
+ i0.ɵɵelementStart(23, "div", 37);
96
134
  i0.ɵɵtext(24, "Tags");
97
135
  i0.ɵɵelementEnd()();
98
- i0.ɵɵelementStart(25, "div", 25)(26, "div", 26);
136
+ i0.ɵɵelementStart(25, "div", 35)(26, "div", 36);
99
137
  i0.ɵɵtext(27);
100
138
  i0.ɵɵelementEnd();
101
- i0.ɵɵelementStart(28, "div", 27);
139
+ i0.ɵɵelementStart(28, "div", 37);
102
140
  i0.ɵɵtext(29, "Avg Tags");
103
141
  i0.ɵɵelementEnd()();
104
- i0.ɵɵelementStart(30, "div", 25)(31, "div", 26);
142
+ i0.ɵɵelementStart(30, "div", 35)(31, "div", 36);
105
143
  i0.ɵɵtext(32);
106
144
  i0.ɵɵelementEnd();
107
- i0.ɵɵelementStart(33, "div", 27);
145
+ i0.ɵɵelementStart(33, "div", 37);
108
146
  i0.ɵɵtext(34, "Last Run");
109
147
  i0.ɵɵelementEnd()()();
110
- i0.ɵɵconditionalCreate(35, ClassifySourcesTabComponent_For_11_Conditional_35_Template, 4, 1, "div", 28);
111
- i0.ɵɵelementStart(36, "div", 29)(37, "button", 30);
112
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_11_Template_button_click_37_listener($event) { const card_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.onEditSource(card_r2); return i0.ɵɵresetView($event.stopPropagation()); });
113
- i0.ɵɵelement(38, "i", 31);
148
+ i0.ɵɵconditionalCreate(35, ClassifySourcesTabComponent_For_20_Conditional_35_Template, 4, 1, "div", 38);
149
+ i0.ɵɵelementStart(36, "div", 39)(37, "button", 40);
150
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Template_button_click_37_listener($event) { const card_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.onEditSource(card_r4); return i0.ɵɵresetView($event.stopPropagation()); });
151
+ i0.ɵɵelement(38, "i", 41);
114
152
  i0.ɵɵtext(39, " Edit");
115
153
  i0.ɵɵelementEnd();
116
- i0.ɵɵelementStart(40, "button", 30);
117
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_11_Template_button_click_40_listener($event) { const card_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.onRunSource(card_r2.ID); return i0.ɵɵresetView($event.stopPropagation()); });
118
- i0.ɵɵelement(41, "i", 32);
154
+ i0.ɵɵelementStart(40, "button", 40);
155
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Template_button_click_40_listener($event) { const card_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.onRunSource(card_r4.ID); return i0.ɵɵresetView($event.stopPropagation()); });
156
+ i0.ɵɵelement(41, "i", 42);
119
157
  i0.ɵɵtext(42, " Run");
120
158
  i0.ɵɵelementEnd();
121
- i0.ɵɵelementStart(43, "button", 30);
122
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_11_Template_button_click_43_listener($event) { const card_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.OpenDryRunPreview(card_r2); return i0.ɵɵresetView($event.stopPropagation()); });
123
- i0.ɵɵelement(44, "i", 33);
159
+ i0.ɵɵelementStart(43, "button", 40);
160
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Template_button_click_43_listener($event) { const card_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.OpenDryRunPreview(card_r4); return i0.ɵɵresetView($event.stopPropagation()); });
161
+ i0.ɵɵelement(44, "i", 43);
124
162
  i0.ɵɵtext(45, " Preview");
125
163
  i0.ɵɵelementEnd();
126
- i0.ɵɵconditionalCreate(46, ClassifySourcesTabComponent_For_11_Conditional_46_Template, 3, 0, "button", 34);
127
- i0.ɵɵelementStart(47, "button", 35);
128
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_11_Template_button_click_47_listener($event) { const card_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.DeleteSource(card_r2); return i0.ɵɵresetView($event.stopPropagation()); });
129
- i0.ɵɵelement(48, "i", 36);
164
+ i0.ɵɵconditionalCreate(46, ClassifySourcesTabComponent_For_20_Conditional_46_Template, 3, 0, "button", 44);
165
+ i0.ɵɵelementStart(47, "button", 45);
166
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Template_button_click_47_listener($event) { const card_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.DeleteSource(card_r4); return i0.ɵɵresetView($event.stopPropagation()); });
167
+ i0.ɵɵelement(48, "i", 46);
130
168
  i0.ɵɵtext(49, " Delete");
131
169
  i0.ɵɵelementEnd()()();
132
170
  } if (rf & 2) {
133
- const card_r2 = ctx.$implicit;
134
- const ctx_r2 = i0.ɵɵnextContext();
171
+ const card_r4 = ctx.$implicit;
172
+ const ctx_r1 = i0.ɵɵnextContext();
135
173
  i0.ɵɵadvance(3);
136
- i0.ɵɵclassMap(card_r2.Icon);
174
+ i0.ɵɵclassMap(card_r4.Icon);
137
175
  i0.ɵɵadvance(3);
138
- i0.ɵɵtextInterpolate(card_r2.Name);
176
+ i0.ɵɵtextInterpolate(card_r4.Name);
139
177
  i0.ɵɵadvance(2);
140
- i0.ɵɵtextInterpolate(card_r2.SourceTypeName);
178
+ i0.ɵɵtextInterpolate(card_r4.SourceTypeName);
141
179
  i0.ɵɵadvance();
142
- i0.ɵɵconditional(card_r2.RequiresFileType ? 9 : -1);
180
+ i0.ɵɵconditional(card_r4.RequiresFileType ? 9 : -1);
143
181
  i0.ɵɵadvance();
144
- i0.ɵɵclassMap(card_r2.StatusClass);
182
+ i0.ɵɵclassMap(card_r4.StatusClass);
145
183
  i0.ɵɵadvance();
146
- i0.ɵɵclassMap(card_r2.StatusClass);
184
+ i0.ɵɵclassMap(card_r4.StatusClass);
147
185
  i0.ɵɵadvance();
148
- i0.ɵɵtextInterpolate1(" ", card_r2.StatusLabel, " ");
186
+ i0.ɵɵtextInterpolate1(" ", card_r4.StatusLabel, " ");
149
187
  i0.ɵɵadvance();
150
- i0.ɵɵconditional(card_r2.URL ? 13 : -1);
188
+ i0.ɵɵconditional(card_r4.URL ? 13 : -1);
151
189
  i0.ɵɵadvance(4);
152
- i0.ɵɵtextInterpolate(ctx_r2.formatNumber(card_r2.ItemCount));
190
+ i0.ɵɵtextInterpolate(ctx_r1.formatNumber(card_r4.ItemCount));
153
191
  i0.ɵɵadvance(5);
154
- i0.ɵɵtextInterpolate(ctx_r2.formatNumber(card_r2.TagCount));
192
+ i0.ɵɵtextInterpolate(ctx_r1.formatNumber(card_r4.TagCount));
155
193
  i0.ɵɵadvance(5);
156
- i0.ɵɵtextInterpolate(card_r2.AvgTags);
194
+ i0.ɵɵtextInterpolate(card_r4.AvgTags);
157
195
  i0.ɵɵadvance(5);
158
- i0.ɵɵtextInterpolate(card_r2.LastRunAgo);
196
+ i0.ɵɵtextInterpolate(card_r4.LastRunAgo);
159
197
  i0.ɵɵadvance(3);
160
- i0.ɵɵconditional(card_r2.ScheduledActionID ? 35 : -1);
198
+ i0.ɵɵconditional(card_r4.ScheduledActionID ? 35 : -1);
161
199
  i0.ɵɵadvance(11);
162
- i0.ɵɵconditional(!card_r2.ScheduledActionID ? 46 : -1);
200
+ i0.ɵɵconditional(!card_r4.ScheduledActionID ? 46 : -1);
163
201
  } }
164
- function ClassifySourcesTabComponent_Conditional_18_Conditional_9_Template(rf, ctx) { if (rf & 1) {
165
- i0.ɵɵelementStart(0, "div", 47);
166
- i0.ɵɵelement(1, "mj-loading", 48);
202
+ function ClassifySourcesTabComponent_Conditional_27_Conditional_9_Template(rf, ctx) { if (rf & 1) {
203
+ i0.ɵɵelementStart(0, "div", 10);
204
+ i0.ɵɵelement(1, "mj-loading", 56);
167
205
  i0.ɵɵelementEnd();
168
206
  } }
169
- function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_15_Template(rf, ctx) { if (rf & 1) {
170
- i0.ɵɵelementStart(0, "div", 57)(1, "span", 58);
207
+ function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_15_Template(rf, ctx) { if (rf & 1) {
208
+ i0.ɵɵelementStart(0, "div", 65)(1, "span", 66);
171
209
  i0.ɵɵtext(2, "URL");
172
210
  i0.ɵɵelementEnd();
173
- i0.ɵɵelementStart(3, "a", 78);
211
+ i0.ɵɵelementStart(3, "a", 86);
174
212
  i0.ɵɵtext(4);
175
213
  i0.ɵɵelementEnd()();
176
214
  } if (rf & 2) {
177
- const ctx_r2 = i0.ɵɵnextContext(3);
215
+ const ctx_r1 = i0.ɵɵnextContext(3);
178
216
  i0.ɵɵadvance(3);
179
- i0.ɵɵproperty("href", ctx_r2.SelectedSource.URL, i0.ɵɵsanitizeUrl);
217
+ i0.ɵɵproperty("href", ctx_r1.SelectedSource.URL, i0.ɵɵsanitizeUrl);
180
218
  i0.ɵɵadvance();
181
- i0.ɵɵtextInterpolate(ctx_r2.SelectedSource.URL);
219
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.URL);
182
220
  } }
183
- function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_16_Template(rf, ctx) { if (rf & 1) {
184
- i0.ɵɵelementStart(0, "div", 57)(1, "span", 58);
221
+ function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_16_Template(rf, ctx) { if (rf & 1) {
222
+ i0.ɵɵelementStart(0, "div", 65)(1, "span", 66);
185
223
  i0.ɵɵtext(2, "Content Type");
186
224
  i0.ɵɵelementEnd();
187
- i0.ɵɵelementStart(3, "span", 59);
225
+ i0.ɵɵelementStart(3, "span", 67);
188
226
  i0.ɵɵtext(4);
189
227
  i0.ɵɵelementEnd()();
190
- i0.ɵɵelementStart(5, "div", 57)(6, "span", 58);
228
+ i0.ɵɵelementStart(5, "div", 65)(6, "span", 66);
191
229
  i0.ɵɵtext(7, "File Type");
192
230
  i0.ɵɵelementEnd();
193
- i0.ɵɵelementStart(8, "span", 59);
231
+ i0.ɵɵelementStart(8, "span", 67);
194
232
  i0.ɵɵtext(9);
195
233
  i0.ɵɵelementEnd()();
196
234
  } if (rf & 2) {
197
- const ctx_r2 = i0.ɵɵnextContext(3);
235
+ const ctx_r1 = i0.ɵɵnextContext(3);
198
236
  i0.ɵɵadvance(4);
199
- i0.ɵɵtextInterpolate(ctx_r2.SelectedSource.ContentTypeName);
237
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.ContentTypeName);
200
238
  i0.ɵɵadvance(5);
201
- i0.ɵɵtextInterpolate(ctx_r2.SelectedSource.FileTypeName);
239
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.FileTypeName);
202
240
  } }
203
- function ClassifySourcesTabComponent_Conditional_18_Conditional_10_For_64_Template(rf, ctx) { if (rf & 1) {
204
- i0.ɵɵelementStart(0, "option", 67);
241
+ function ClassifySourcesTabComponent_Conditional_27_Conditional_10_For_64_Template(rf, ctx) { if (rf & 1) {
242
+ i0.ɵɵelementStart(0, "option", 75);
205
243
  i0.ɵɵtext(1);
206
244
  i0.ɵɵelementEnd();
207
245
  } if (rf & 2) {
208
- const opt_r8 = ctx.$implicit;
209
- i0.ɵɵproperty("value", opt_r8);
246
+ const opt_r9 = ctx.$implicit;
247
+ i0.ɵɵproperty("value", opt_r9);
210
248
  i0.ɵɵadvance();
211
- i0.ɵɵtextInterpolate(opt_r8);
249
+ i0.ɵɵtextInterpolate(opt_r9);
212
250
  } }
213
- function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_69_Template(rf, ctx) { if (rf & 1) {
214
- i0.ɵɵelementStart(0, "div", 71)(1, "p");
251
+ function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_69_Template(rf, ctx) { if (rf & 1) {
252
+ i0.ɵɵelementStart(0, "div", 79)(1, "p");
215
253
  i0.ɵɵtext(2);
216
254
  i0.ɵɵelementEnd()();
217
255
  } if (rf & 2) {
218
- const ctx_r2 = i0.ɵɵnextContext(3);
256
+ const ctx_r1 = i0.ɵɵnextContext(3);
219
257
  i0.ɵɵadvance(2);
220
- i0.ɵɵtextInterpolate(ctx_r2.SourceDetailStatusFilter === "All" ? "No content items yet." : "No items match this filter.");
258
+ i0.ɵɵtextInterpolate(ctx_r1.SourceDetailStatusFilter === "All" ? "No content items yet." : "No items match this filter.");
221
259
  } }
222
- function ClassifySourcesTabComponent_Conditional_18_Conditional_10_For_71_Template(rf, ctx) { if (rf & 1) {
223
- const _r9 = i0.ɵɵgetCurrentView();
224
- i0.ɵɵelementStart(0, "div", 79);
225
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_18_Conditional_10_For_71_Template_div_click_0_listener() { const ci_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OpenContentItemDetail(ci_r10)); });
226
- i0.ɵɵelement(1, "div", 80);
227
- i0.ɵɵelementStart(2, "span", 81);
260
+ function ClassifySourcesTabComponent_Conditional_27_Conditional_10_For_71_Template(rf, ctx) { if (rf & 1) {
261
+ const _r10 = i0.ɵɵgetCurrentView();
262
+ i0.ɵɵelementStart(0, "div", 87);
263
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_For_71_Template_div_click_0_listener() { const ci_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenContentItemDetail(ci_r11)); });
264
+ i0.ɵɵelement(1, "div", 88);
265
+ i0.ɵɵelementStart(2, "span", 89);
228
266
  i0.ɵɵtext(3);
229
267
  i0.ɵɵelementEnd();
230
- i0.ɵɵelementStart(4, "span", 82);
268
+ i0.ɵɵelementStart(4, "span", 90);
231
269
  i0.ɵɵtext(5);
232
270
  i0.ɵɵelementEnd();
233
- i0.ɵɵelementStart(6, "span", 82);
271
+ i0.ɵɵelementStart(6, "span", 90);
234
272
  i0.ɵɵtext(7);
235
273
  i0.ɵɵelementEnd();
236
- i0.ɵɵelementStart(8, "span", 83);
274
+ i0.ɵɵelementStart(8, "span", 91);
237
275
  i0.ɵɵtext(9);
238
276
  i0.ɵɵelementEnd();
239
- i0.ɵɵelementStart(10, "span", 84);
277
+ i0.ɵɵelementStart(10, "span", 92);
240
278
  i0.ɵɵtext(11);
241
279
  i0.ɵɵelementEnd()();
242
280
  } if (rf & 2) {
243
- const ci_r10 = ctx.$implicit;
244
- const ctx_r2 = i0.ɵɵnextContext(3);
281
+ const ci_r11 = ctx.$implicit;
282
+ const ctx_r1 = i0.ɵɵnextContext(3);
245
283
  i0.ɵɵadvance();
246
- i0.ɵɵclassMap(ci_r10.StatusDot);
284
+ i0.ɵɵclassMap(ci_r11.StatusDot);
247
285
  i0.ɵɵadvance(2);
248
- i0.ɵɵtextInterpolate(ci_r10.Name);
286
+ i0.ɵɵtextInterpolate(ci_r11.Name);
249
287
  i0.ɵɵadvance();
250
- i0.ɵɵclassMap(ctx_r2.GetStatusBadgeClass(ci_r10.EmbeddingStatus));
288
+ i0.ɵɵclassMap(ctx_r1.GetStatusBadgeClass(ci_r11.EmbeddingStatus));
251
289
  i0.ɵɵadvance();
252
- i0.ɵɵtextInterpolate1("E:", ci_r10.EmbeddingStatus);
290
+ i0.ɵɵtextInterpolate1("E:", ci_r11.EmbeddingStatus);
253
291
  i0.ɵɵadvance();
254
- i0.ɵɵclassMap(ctx_r2.GetStatusBadgeClass(ci_r10.TaggingStatus));
292
+ i0.ɵɵclassMap(ctx_r1.GetStatusBadgeClass(ci_r11.TaggingStatus));
255
293
  i0.ɵɵadvance();
256
- i0.ɵɵtextInterpolate1("T:", ci_r10.TaggingStatus);
294
+ i0.ɵɵtextInterpolate1("T:", ci_r11.TaggingStatus);
257
295
  i0.ɵɵadvance(2);
258
- i0.ɵɵtextInterpolate1("", ci_r10.TagCount, " tags");
296
+ i0.ɵɵtextInterpolate1("", ci_r11.TagCount, " tags");
259
297
  i0.ɵɵadvance(2);
260
- i0.ɵɵtextInterpolate(ci_r10.UpdatedAt);
298
+ i0.ɵɵtextInterpolate(ci_r11.UpdatedAt);
261
299
  } }
262
- function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_72_Template(rf, ctx) { if (rf & 1) {
263
- const _r11 = i0.ɵɵgetCurrentView();
264
- i0.ɵɵelementStart(0, "div", 73)(1, "button", 85);
265
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_72_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SourceDetailPrevPage()); });
266
- i0.ɵɵelement(2, "i", 86);
300
+ function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_72_Template(rf, ctx) { if (rf & 1) {
301
+ const _r12 = i0.ɵɵgetCurrentView();
302
+ i0.ɵɵelementStart(0, "div", 81)(1, "button", 93);
303
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_72_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SourceDetailPrevPage()); });
304
+ i0.ɵɵelement(2, "i", 94);
267
305
  i0.ɵɵtext(3, " Prev ");
268
306
  i0.ɵɵelementEnd();
269
- i0.ɵɵelementStart(4, "span", 87);
307
+ i0.ɵɵelementStart(4, "span", 95);
270
308
  i0.ɵɵtext(5);
271
309
  i0.ɵɵelementEnd();
272
- i0.ɵɵelementStart(6, "button", 85);
273
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_72_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SourceDetailNextPage()); });
310
+ i0.ɵɵelementStart(6, "button", 93);
311
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_72_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SourceDetailNextPage()); });
274
312
  i0.ɵɵtext(7, " Next ");
275
- i0.ɵɵelement(8, "i", 88);
313
+ i0.ɵɵelement(8, "i", 96);
276
314
  i0.ɵɵelementEnd()();
277
315
  } if (rf & 2) {
278
- const ctx_r2 = i0.ɵɵnextContext(3);
316
+ const ctx_r1 = i0.ɵɵnextContext(3);
279
317
  i0.ɵɵadvance();
280
- i0.ɵɵproperty("disabled", ctx_r2.SourceDetailPage === 0);
318
+ i0.ɵɵproperty("disabled", ctx_r1.SourceDetailPage === 0);
281
319
  i0.ɵɵadvance(4);
282
- i0.ɵɵtextInterpolate2("Page ", ctx_r2.SourceDetailPage + 1, " of ", ctx_r2.SourceDetailTotalPages);
320
+ i0.ɵɵtextInterpolate2("Page ", ctx_r1.SourceDetailPage + 1, " of ", ctx_r1.SourceDetailTotalPages);
283
321
  i0.ɵɵadvance();
284
- i0.ɵɵproperty("disabled", ctx_r2.SourceDetailPage >= ctx_r2.SourceDetailTotalPages - 1);
322
+ i0.ɵɵproperty("disabled", ctx_r1.SourceDetailPage >= ctx_r1.SourceDetailTotalPages - 1);
285
323
  } }
286
- function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_73_For_5_Template(rf, ctx) { if (rf & 1) {
287
- i0.ɵɵelementStart(0, "div", 90)(1, "span", 91);
324
+ function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_73_For_5_Template(rf, ctx) { if (rf & 1) {
325
+ i0.ɵɵelementStart(0, "div", 98)(1, "span", 99);
288
326
  i0.ɵɵtext(2);
289
327
  i0.ɵɵelementEnd();
290
- i0.ɵɵelementStart(3, "span", 92);
328
+ i0.ɵɵelementStart(3, "span", 100);
291
329
  i0.ɵɵtext(4);
292
330
  i0.ɵɵelementEnd();
293
- i0.ɵɵelementStart(5, "span", 93);
331
+ i0.ɵɵelementStart(5, "span", 101);
294
332
  i0.ɵɵtext(6);
295
333
  i0.ɵɵelementEnd();
296
- i0.ɵɵelementStart(7, "span", 94);
334
+ i0.ɵɵelementStart(7, "span", 102);
297
335
  i0.ɵɵtext(8);
298
336
  i0.ɵɵelementEnd()();
299
337
  } if (rf & 2) {
300
- const run_r12 = ctx.$implicit;
338
+ const run_r13 = ctx.$implicit;
301
339
  i0.ɵɵadvance();
302
- i0.ɵɵclassMap(run_r12.StatusClass);
340
+ i0.ɵɵclassMap(run_r13.StatusClass);
303
341
  i0.ɵɵadvance();
304
- i0.ɵɵtextInterpolate(run_r12.Status);
342
+ i0.ɵɵtextInterpolate(run_r13.Status);
305
343
  i0.ɵɵadvance(2);
306
- i0.ɵɵtextInterpolate(run_r12.StartedDisplay);
344
+ i0.ɵɵtextInterpolate(run_r13.StartedDisplay);
307
345
  i0.ɵɵadvance(2);
308
- i0.ɵɵtextInterpolate(run_r12.Duration);
346
+ i0.ɵɵtextInterpolate(run_r13.Duration);
309
347
  i0.ɵɵadvance(2);
310
- i0.ɵɵtextInterpolate1("", run_r12.Items, " items");
348
+ i0.ɵɵtextInterpolate1("", run_r13.Items, " items");
311
349
  } }
312
- function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_73_Template(rf, ctx) { if (rf & 1) {
313
- i0.ɵɵelementStart(0, "div", 54)(1, "div", 55);
350
+ function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_73_Template(rf, ctx) { if (rf & 1) {
351
+ i0.ɵɵelementStart(0, "div", 62)(1, "div", 63);
314
352
  i0.ɵɵtext(2, "Recent Runs");
315
353
  i0.ɵɵelementEnd();
316
- i0.ɵɵelementStart(3, "div", 89);
317
- i0.ɵɵrepeaterCreate(4, ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_73_For_5_Template, 9, 6, "div", 90, _forTrack0);
354
+ i0.ɵɵelementStart(3, "div", 97);
355
+ i0.ɵɵrepeaterCreate(4, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_73_For_5_Template, 9, 6, "div", 98, _forTrack0);
318
356
  i0.ɵɵelementEnd()();
319
357
  } if (rf & 2) {
320
- const ctx_r2 = i0.ɵɵnextContext(3);
358
+ const ctx_r1 = i0.ɵɵnextContext(3);
321
359
  i0.ɵɵadvance(4);
322
- i0.ɵɵrepeater(ctx_r2.SelectedSource.RunHistory);
360
+ i0.ɵɵrepeater(ctx_r1.SelectedSource.RunHistory);
323
361
  } }
324
- function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Template(rf, ctx) { if (rf & 1) {
325
- const _r7 = i0.ɵɵgetCurrentView();
326
- i0.ɵɵelementStart(0, "div", 49)(1, "div", 18);
362
+ function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template(rf, ctx) { if (rf & 1) {
363
+ const _r8 = i0.ɵɵgetCurrentView();
364
+ i0.ɵɵelementStart(0, "div", 57)(1, "div", 28);
327
365
  i0.ɵɵelement(2, "i");
328
366
  i0.ɵɵelementEnd();
329
- i0.ɵɵelementStart(3, "div")(4, "h4", 50);
367
+ i0.ɵɵelementStart(3, "div")(4, "h4", 58);
330
368
  i0.ɵɵtext(5);
331
369
  i0.ɵɵelementEnd();
332
- i0.ɵɵelementStart(6, "div", 51)(7, "span", 52);
370
+ i0.ɵɵelementStart(6, "div", 59)(7, "span", 60);
333
371
  i0.ɵɵtext(8);
334
372
  i0.ɵɵelementEnd();
335
- i0.ɵɵelementStart(9, "span", 53);
373
+ i0.ɵɵelementStart(9, "span", 61);
336
374
  i0.ɵɵtext(10);
337
375
  i0.ɵɵelementEnd()()()();
338
- i0.ɵɵelementStart(11, "div", 54)(12, "div", 55);
376
+ i0.ɵɵelementStart(11, "div", 62)(12, "div", 63);
339
377
  i0.ɵɵtext(13, "Configuration");
340
378
  i0.ɵɵelementEnd();
341
- i0.ɵɵelementStart(14, "div", 56);
342
- i0.ɵɵconditionalCreate(15, ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_15_Template, 5, 2, "div", 57);
343
- i0.ɵɵconditionalCreate(16, ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_16_Template, 10, 2);
344
- i0.ɵɵelementStart(17, "div", 57)(18, "span", 58);
379
+ i0.ɵɵelementStart(14, "div", 64);
380
+ i0.ɵɵconditionalCreate(15, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_15_Template, 5, 2, "div", 65);
381
+ i0.ɵɵconditionalCreate(16, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_16_Template, 10, 2);
382
+ i0.ɵɵelementStart(17, "div", 65)(18, "span", 66);
345
383
  i0.ɵɵtext(19, "Embedding Model");
346
384
  i0.ɵɵelementEnd();
347
- i0.ɵɵelementStart(20, "span", 59);
385
+ i0.ɵɵelementStart(20, "span", 67);
348
386
  i0.ɵɵtext(21);
349
387
  i0.ɵɵelementEnd()();
350
- i0.ɵɵelementStart(22, "div", 57)(23, "span", 58);
388
+ i0.ɵɵelementStart(22, "div", 65)(23, "span", 66);
351
389
  i0.ɵɵtext(24, "Vector Index");
352
390
  i0.ɵɵelementEnd();
353
- i0.ɵɵelementStart(25, "span", 59);
391
+ i0.ɵɵelementStart(25, "span", 67);
354
392
  i0.ɵɵtext(26);
355
393
  i0.ɵɵelementEnd()()()();
356
- i0.ɵɵelementStart(27, "div", 54)(28, "div", 55);
394
+ i0.ɵɵelementStart(27, "div", 62)(28, "div", 63);
357
395
  i0.ɵɵtext(29, "Statistics");
358
396
  i0.ɵɵelementEnd();
359
- i0.ɵɵelementStart(30, "div", 60)(31, "div", 61)(32, "div", 62);
397
+ i0.ɵɵelementStart(30, "div", 68)(31, "div", 69)(32, "div", 70);
360
398
  i0.ɵɵtext(33);
361
399
  i0.ɵɵelementEnd();
362
- i0.ɵɵelementStart(34, "div", 63);
400
+ i0.ɵɵelementStart(34, "div", 71);
363
401
  i0.ɵɵtext(35, "Items");
364
402
  i0.ɵɵelementEnd()();
365
- i0.ɵɵelementStart(36, "div", 61)(37, "div", 62);
403
+ i0.ɵɵelementStart(36, "div", 69)(37, "div", 70);
366
404
  i0.ɵɵtext(38);
367
405
  i0.ɵɵelementEnd();
368
- i0.ɵɵelementStart(39, "div", 63);
406
+ i0.ɵɵelementStart(39, "div", 71);
369
407
  i0.ɵɵtext(40, "Tags");
370
408
  i0.ɵɵelementEnd()();
371
- i0.ɵɵelementStart(41, "div", 61)(42, "div", 62);
409
+ i0.ɵɵelementStart(41, "div", 69)(42, "div", 70);
372
410
  i0.ɵɵtext(43);
373
411
  i0.ɵɵelementEnd();
374
- i0.ɵɵelementStart(44, "div", 63);
412
+ i0.ɵɵelementStart(44, "div", 71);
375
413
  i0.ɵɵtext(45, "Avg Tags");
376
414
  i0.ɵɵelementEnd()();
377
- i0.ɵɵelementStart(46, "div", 61)(47, "div", 62);
415
+ i0.ɵɵelementStart(46, "div", 69)(47, "div", 70);
378
416
  i0.ɵɵtext(48);
379
417
  i0.ɵɵelementEnd();
380
- i0.ɵɵelementStart(49, "div", 63);
418
+ i0.ɵɵelementStart(49, "div", 71);
381
419
  i0.ɵɵtext(50, "Last Run");
382
420
  i0.ɵɵelementEnd()();
383
- i0.ɵɵelementStart(51, "div", 61)(52, "div", 62);
421
+ i0.ɵɵelementStart(51, "div", 69)(52, "div", 70);
384
422
  i0.ɵɵtext(53);
385
423
  i0.ɵɵelementEnd();
386
- i0.ɵɵelementStart(54, "div", 63);
424
+ i0.ɵɵelementStart(54, "div", 71);
387
425
  i0.ɵɵtext(55, "Errors");
388
426
  i0.ɵɵelementEnd()()()();
389
- i0.ɵɵelementStart(56, "div", 54)(57, "div", 64)(58, "div", 55);
427
+ i0.ɵɵelementStart(56, "div", 62)(57, "div", 72)(58, "div", 63);
390
428
  i0.ɵɵtext(59);
391
429
  i0.ɵɵpipe(60, "number");
392
430
  i0.ɵɵelementEnd();
393
- i0.ɵɵelementStart(61, "div", 65)(62, "select", 66);
394
- i0.ɵɵtwoWayListener("ngModelChange", function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Template_select_ngModelChange_62_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.SourceDetailStatusFilter, $event) || (ctx_r2.SourceDetailStatusFilter = $event); return i0.ɵɵresetView($event); });
395
- i0.ɵɵlistener("ngModelChange", function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Template_select_ngModelChange_62_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnSourceDetailStatusFilterChange()); });
396
- i0.ɵɵrepeaterCreate(63, ClassifySourcesTabComponent_Conditional_18_Conditional_10_For_64_Template, 2, 2, "option", 67, i0.ɵɵrepeaterTrackByIdentity);
431
+ i0.ɵɵelementStart(61, "div", 73)(62, "select", 74);
432
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_select_ngModelChange_62_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.SourceDetailStatusFilter, $event) || (ctx_r1.SourceDetailStatusFilter = $event); return i0.ɵɵresetView($event); });
433
+ i0.ɵɵlistener("ngModelChange", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_select_ngModelChange_62_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSourceDetailStatusFilterChange()); });
434
+ i0.ɵɵrepeaterCreate(63, ClassifySourcesTabComponent_Conditional_27_Conditional_10_For_64_Template, 2, 2, "option", 75, i0.ɵɵrepeaterTrackByIdentity);
397
435
  i0.ɵɵelementEnd();
398
- i0.ɵɵelementStart(65, "button", 68);
399
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Template_button_click_65_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.RetryFailedItems()); });
400
- i0.ɵɵelement(66, "i", 69);
436
+ i0.ɵɵelementStart(65, "button", 76);
437
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_button_click_65_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.RetryFailedItems()); });
438
+ i0.ɵɵelement(66, "i", 77);
401
439
  i0.ɵɵtext(67, " Retry Failed ");
402
440
  i0.ɵɵelementEnd()()();
403
- i0.ɵɵelementStart(68, "div", 70);
404
- i0.ɵɵconditionalCreate(69, ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_69_Template, 3, 1, "div", 71);
405
- i0.ɵɵrepeaterCreate(70, ClassifySourcesTabComponent_Conditional_18_Conditional_10_For_71_Template, 12, 11, "div", 72, _forTrack0);
441
+ i0.ɵɵelementStart(68, "div", 78);
442
+ i0.ɵɵconditionalCreate(69, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_69_Template, 3, 1, "div", 79);
443
+ i0.ɵɵrepeaterCreate(70, ClassifySourcesTabComponent_Conditional_27_Conditional_10_For_71_Template, 12, 11, "div", 80, _forTrack0);
406
444
  i0.ɵɵelementEnd();
407
- i0.ɵɵconditionalCreate(72, ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_72_Template, 9, 4, "div", 73);
445
+ i0.ɵɵconditionalCreate(72, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_72_Template, 9, 4, "div", 81);
408
446
  i0.ɵɵelementEnd();
409
- i0.ɵɵconditionalCreate(73, ClassifySourcesTabComponent_Conditional_18_Conditional_10_Conditional_73_Template, 6, 0, "div", 54);
410
- i0.ɵɵelementStart(74, "div", 74)(75, "button", 75);
411
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Template_button_click_75_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenEditSourceFromDetail()); });
412
- i0.ɵɵelement(76, "i", 31);
447
+ i0.ɵɵconditionalCreate(73, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_73_Template, 6, 0, "div", 62);
448
+ i0.ɵɵelementStart(74, "div", 82)(75, "button", 83);
449
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_button_click_75_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenEditSourceFromDetail()); });
450
+ i0.ɵɵelement(76, "i", 41);
413
451
  i0.ɵɵtext(77, " Edit ");
414
452
  i0.ɵɵelementEnd();
415
- i0.ɵɵelementStart(78, "button", 76);
416
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Template_button_click_78_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.RunSourceFromDetail()); });
417
- i0.ɵɵelement(79, "i", 32);
453
+ i0.ɵɵelementStart(78, "button", 84);
454
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_button_click_78_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.RunSourceFromDetail()); });
455
+ i0.ɵɵelement(79, "i", 42);
418
456
  i0.ɵɵtext(80, " Run Now ");
419
457
  i0.ɵɵelementEnd();
420
- i0.ɵɵelementStart(81, "button", 77);
421
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_18_Conditional_10_Template_button_click_81_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.DeleteSourceFromDetail()); });
422
- i0.ɵɵelement(82, "i", 36);
458
+ i0.ɵɵelementStart(81, "button", 85);
459
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_button_click_81_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.DeleteSourceFromDetail()); });
460
+ i0.ɵɵelement(82, "i", 46);
423
461
  i0.ɵɵtext(83, " Delete ");
424
462
  i0.ɵɵelementEnd()();
425
463
  } if (rf & 2) {
426
- const ctx_r2 = i0.ɵɵnextContext(2);
464
+ const ctx_r1 = i0.ɵɵnextContext(2);
427
465
  i0.ɵɵadvance(2);
428
- i0.ɵɵclassMap(ctx_r2.SelectedSource.Icon);
466
+ i0.ɵɵclassMap(ctx_r1.SelectedSource.Icon);
429
467
  i0.ɵɵadvance(3);
430
- i0.ɵɵtextInterpolate(ctx_r2.SelectedSource.Name);
468
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.Name);
431
469
  i0.ɵɵadvance(3);
432
- i0.ɵɵtextInterpolate(ctx_r2.SelectedSource.SourceTypeName);
470
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.SourceTypeName);
433
471
  i0.ɵɵadvance();
434
- i0.ɵɵclassMap("at-detail-badge-status-" + ctx_r2.SelectedSource.StatusClass);
472
+ i0.ɵɵclassMap("at-detail-badge-status-" + ctx_r1.SelectedSource.StatusClass);
435
473
  i0.ɵɵadvance();
436
- i0.ɵɵtextInterpolate1(" ", ctx_r2.SelectedSource.StatusLabel, " ");
474
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.SelectedSource.StatusLabel, " ");
437
475
  i0.ɵɵadvance(5);
438
- i0.ɵɵconditional(ctx_r2.SelectedSource.URL ? 15 : -1);
476
+ i0.ɵɵconditional(ctx_r1.SelectedSource.URL ? 15 : -1);
439
477
  i0.ɵɵadvance();
440
- i0.ɵɵconditional(ctx_r2.SelectedSource.RequiresFileType ? 16 : -1);
478
+ i0.ɵɵconditional(ctx_r1.SelectedSource.RequiresFileType ? 16 : -1);
441
479
  i0.ɵɵadvance(5);
442
- i0.ɵɵtextInterpolate(ctx_r2.SelectedSource.EmbeddingModelName);
480
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.EmbeddingModelName);
443
481
  i0.ɵɵadvance(5);
444
- i0.ɵɵtextInterpolate(ctx_r2.SelectedSource.VectorIndexName);
482
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.VectorIndexName);
445
483
  i0.ɵɵadvance(7);
446
- i0.ɵɵtextInterpolate(ctx_r2.formatNumber(ctx_r2.SelectedSource.ItemCount));
484
+ i0.ɵɵtextInterpolate(ctx_r1.formatNumber(ctx_r1.SelectedSource.ItemCount));
447
485
  i0.ɵɵadvance(5);
448
- i0.ɵɵtextInterpolate(ctx_r2.formatNumber(ctx_r2.SelectedSource.TagCount));
486
+ i0.ɵɵtextInterpolate(ctx_r1.formatNumber(ctx_r1.SelectedSource.TagCount));
449
487
  i0.ɵɵadvance(5);
450
- i0.ɵɵtextInterpolate(ctx_r2.SelectedSource.AvgTags);
488
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.AvgTags);
451
489
  i0.ɵɵadvance(5);
452
- i0.ɵɵtextInterpolate(ctx_r2.SelectedSource.LastRunAgo);
490
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.LastRunAgo);
453
491
  i0.ɵɵadvance(4);
454
- i0.ɵɵclassProp("at-kpi-error-value", ctx_r2.SelectedSource.ErrorCount > 0);
492
+ i0.ɵɵclassProp("at-kpi-error-value", ctx_r1.SelectedSource.ErrorCount > 0);
455
493
  i0.ɵɵadvance();
456
- i0.ɵɵtextInterpolate(ctx_r2.SelectedSource.ErrorCount);
494
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.ErrorCount);
457
495
  i0.ɵɵadvance(6);
458
- i0.ɵɵtextInterpolate2("Content Library (", ctx_r2.FilteredSourceDetailTotal, " of ", i0.ɵɵpipeBind1(60, 24, ctx_r2.SelectedSource.ItemCount), ")");
496
+ i0.ɵɵtextInterpolate2("Content Library (", ctx_r1.FilteredSourceDetailTotal, " of ", i0.ɵɵpipeBind1(60, 24, ctx_r1.SelectedSource.ItemCount), ")");
459
497
  i0.ɵɵadvance(3);
460
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.SourceDetailStatusFilter);
498
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SourceDetailStatusFilter);
461
499
  i0.ɵɵadvance();
462
- i0.ɵɵrepeater(ctx_r2.SourceDetailStatusOptions);
500
+ i0.ɵɵrepeater(ctx_r1.SourceDetailStatusOptions);
463
501
  i0.ɵɵadvance(6);
464
- i0.ɵɵconditional(ctx_r2.FilteredSourceDetailItems.length === 0 ? 69 : -1);
502
+ i0.ɵɵconditional(ctx_r1.FilteredSourceDetailItems.length === 0 ? 69 : -1);
465
503
  i0.ɵɵadvance();
466
- i0.ɵɵrepeater(ctx_r2.FilteredSourceDetailItems);
504
+ i0.ɵɵrepeater(ctx_r1.FilteredSourceDetailItems);
467
505
  i0.ɵɵadvance(2);
468
- i0.ɵɵconditional(ctx_r2.SourceDetailTotalPages > 1 ? 72 : -1);
506
+ i0.ɵɵconditional(ctx_r1.SourceDetailTotalPages > 1 ? 72 : -1);
469
507
  i0.ɵɵadvance();
470
- i0.ɵɵconditional(ctx_r2.SelectedSource.RunHistory.length > 0 ? 73 : -1);
508
+ i0.ɵɵconditional(ctx_r1.SelectedSource.RunHistory.length > 0 ? 73 : -1);
471
509
  } }
472
- function ClassifySourcesTabComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
473
- const _r6 = i0.ɵɵgetCurrentView();
474
- i0.ɵɵelementStart(0, "div", 40);
475
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_18_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseSourceDetail()); });
510
+ function ClassifySourcesTabComponent_Conditional_27_Template(rf, ctx) { if (rf & 1) {
511
+ const _r7 = i0.ɵɵgetCurrentView();
512
+ i0.ɵɵelementStart(0, "div", 50);
513
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseSourceDetail()); });
476
514
  i0.ɵɵelementEnd();
477
- i0.ɵɵelementStart(1, "div", 41)(2, "div", 42)(3, "h3");
478
- i0.ɵɵelement(4, "i", 43);
515
+ i0.ɵɵelementStart(1, "div", 51)(2, "div", 52)(3, "h3");
516
+ i0.ɵɵelement(4, "i", 24);
479
517
  i0.ɵɵtext(5, " Source Detail");
480
518
  i0.ɵɵelementEnd();
481
- i0.ɵɵelementStart(6, "button", 44);
482
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_18_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseSourceDetail()); });
483
- i0.ɵɵelement(7, "i", 45);
519
+ i0.ɵɵelementStart(6, "button", 53);
520
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseSourceDetail()); });
521
+ i0.ɵɵelement(7, "i", 54);
484
522
  i0.ɵɵelementEnd()();
485
- i0.ɵɵelementStart(8, "div", 46);
486
- i0.ɵɵconditionalCreate(9, ClassifySourcesTabComponent_Conditional_18_Conditional_9_Template, 2, 0, "div", 47);
487
- i0.ɵɵconditionalCreate(10, ClassifySourcesTabComponent_Conditional_18_Conditional_10_Template, 84, 26);
523
+ i0.ɵɵelementStart(8, "div", 55);
524
+ i0.ɵɵconditionalCreate(9, ClassifySourcesTabComponent_Conditional_27_Conditional_9_Template, 2, 0, "div", 10);
525
+ i0.ɵɵconditionalCreate(10, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template, 84, 26);
488
526
  i0.ɵɵelementEnd()();
489
527
  } if (rf & 2) {
490
- const ctx_r2 = i0.ɵɵnextContext();
528
+ const ctx_r1 = i0.ɵɵnextContext();
491
529
  i0.ɵɵadvance(9);
492
- i0.ɵɵconditional(ctx_r2.SourceDetailLoading ? 9 : -1);
530
+ i0.ɵɵconditional(ctx_r1.SourceDetailLoading ? 9 : -1);
493
531
  i0.ɵɵadvance();
494
- i0.ɵɵconditional(!ctx_r2.SourceDetailLoading && ctx_r2.SelectedSource ? 10 : -1);
532
+ i0.ɵɵconditional(!ctx_r1.SourceDetailLoading && ctx_r1.SelectedSource ? 10 : -1);
495
533
  } }
496
- function ClassifySourcesTabComponent_Conditional_19_Conditional_33_Template(rf, ctx) { if (rf & 1) {
497
- i0.ɵɵelement(0, "i", 112);
534
+ function ClassifySourcesTabComponent_Conditional_28_Conditional_33_Template(rf, ctx) { if (rf & 1) {
535
+ i0.ɵɵelement(0, "i", 21);
498
536
  i0.ɵɵtext(1, " Saving... ");
499
537
  } }
500
- function ClassifySourcesTabComponent_Conditional_19_Conditional_34_Template(rf, ctx) { if (rf & 1) {
501
- i0.ɵɵelement(0, "i", 113);
538
+ function ClassifySourcesTabComponent_Conditional_28_Conditional_34_Template(rf, ctx) { if (rf & 1) {
539
+ i0.ɵɵelement(0, "i", 120);
502
540
  i0.ɵɵtext(1, " Create Schedule ");
503
541
  } }
504
- function ClassifySourcesTabComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
505
- const _r13 = i0.ɵɵgetCurrentView();
506
- i0.ɵɵelementStart(0, "div", 95);
507
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_19_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseScheduleDialog()); });
508
- i0.ɵɵelementStart(1, "div", 96);
509
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_19_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r13); return i0.ɵɵresetView($event.stopPropagation()); });
510
- i0.ɵɵelementStart(2, "div", 97)(3, "h3");
511
- i0.ɵɵelement(4, "i", 38);
542
+ function ClassifySourcesTabComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
543
+ const _r14 = i0.ɵɵgetCurrentView();
544
+ i0.ɵɵelementStart(0, "div", 103);
545
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_28_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseScheduleDialog()); });
546
+ i0.ɵɵelementStart(1, "div", 104);
547
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_28_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r14); return i0.ɵɵresetView($event.stopPropagation()); });
548
+ i0.ɵɵelementStart(2, "div", 105)(3, "h3");
549
+ i0.ɵɵelement(4, "i", 48);
512
550
  i0.ɵɵtext(5, " Schedule Pipeline");
513
551
  i0.ɵɵelementEnd();
514
- i0.ɵɵelementStart(6, "button", 98);
515
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_19_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseScheduleDialog()); });
516
- i0.ɵɵelement(7, "i", 45);
552
+ i0.ɵɵelementStart(6, "button", 106);
553
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_28_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseScheduleDialog()); });
554
+ i0.ɵɵelement(7, "i", 54);
517
555
  i0.ɵɵelementEnd()();
518
- i0.ɵɵelementStart(8, "div", 99)(9, "div", 100)(10, "label");
556
+ i0.ɵɵelementStart(8, "div", 107)(9, "div", 108)(10, "label");
519
557
  i0.ɵɵtext(11, "Source");
520
558
  i0.ɵɵelementEnd();
521
- i0.ɵɵelementStart(12, "div", 101);
559
+ i0.ɵɵelementStart(12, "div", 109);
522
560
  i0.ɵɵelement(13, "i");
523
561
  i0.ɵɵtext(14);
524
562
  i0.ɵɵelementEnd()();
525
- i0.ɵɵelementStart(15, "div", 100)(16, "label");
563
+ i0.ɵɵelementStart(15, "div", 108)(16, "label");
526
564
  i0.ɵɵtext(17, "Action");
527
565
  i0.ɵɵelementEnd();
528
- i0.ɵɵelementStart(18, "div", 102);
566
+ i0.ɵɵelementStart(18, "div", 110);
529
567
  i0.ɵɵtext(19, "Autotag and Vectorize Content");
530
568
  i0.ɵɵelementEnd()();
531
- i0.ɵɵelementStart(20, "div", 100)(21, "label", 103);
569
+ i0.ɵɵelementStart(20, "div", 108)(21, "label", 111);
532
570
  i0.ɵɵtext(22, "Cron Expression");
533
571
  i0.ɵɵelementEnd();
534
- i0.ɵɵelementStart(23, "input", 104);
535
- i0.ɵɵtwoWayListener("ngModelChange", function ClassifySourcesTabComponent_Conditional_19_Template_input_ngModelChange_23_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.ScheduleCron, $event) || (ctx_r2.ScheduleCron = $event); return i0.ɵɵresetView($event); });
572
+ i0.ɵɵelementStart(23, "input", 112);
573
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifySourcesTabComponent_Conditional_28_Template_input_ngModelChange_23_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.ScheduleCron, $event) || (ctx_r1.ScheduleCron = $event); return i0.ɵɵresetView($event); });
536
574
  i0.ɵɵelementEnd();
537
- i0.ɵɵelementStart(24, "div", 105);
538
- i0.ɵɵelement(25, "i", 106);
575
+ i0.ɵɵelementStart(24, "div", 113);
576
+ i0.ɵɵelement(25, "i", 114);
539
577
  i0.ɵɵtext(26);
540
578
  i0.ɵɵelementEnd()();
541
- i0.ɵɵelementStart(27, "div", 107)(28, "label", 108);
579
+ i0.ɵɵelementStart(27, "div", 115)(28, "label", 116);
542
580
  i0.ɵɵtext(29, "Enabled");
543
581
  i0.ɵɵelementEnd();
544
- i0.ɵɵelementStart(30, "input", 109);
545
- i0.ɵɵtwoWayListener("ngModelChange", function ClassifySourcesTabComponent_Conditional_19_Template_input_ngModelChange_30_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.ScheduleEnabled, $event) || (ctx_r2.ScheduleEnabled = $event); return i0.ɵɵresetView($event); });
582
+ i0.ɵɵelementStart(30, "input", 117);
583
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifySourcesTabComponent_Conditional_28_Template_input_ngModelChange_30_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.ScheduleEnabled, $event) || (ctx_r1.ScheduleEnabled = $event); return i0.ɵɵresetView($event); });
546
584
  i0.ɵɵelementEnd()()();
547
- i0.ɵɵelementStart(31, "div", 110)(32, "button", 111);
548
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_19_Template_button_click_32_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SaveSchedule()); });
549
- i0.ɵɵconditionalCreate(33, ClassifySourcesTabComponent_Conditional_19_Conditional_33_Template, 2, 0)(34, ClassifySourcesTabComponent_Conditional_19_Conditional_34_Template, 2, 0);
585
+ i0.ɵɵelementStart(31, "div", 118)(32, "button", 119);
586
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_28_Template_button_click_32_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SaveSchedule()); });
587
+ i0.ɵɵconditionalCreate(33, ClassifySourcesTabComponent_Conditional_28_Conditional_33_Template, 2, 0)(34, ClassifySourcesTabComponent_Conditional_28_Conditional_34_Template, 2, 0);
550
588
  i0.ɵɵelementEnd();
551
- i0.ɵɵelementStart(35, "button", 76);
552
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_19_Template_button_click_35_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseScheduleDialog()); });
589
+ i0.ɵɵelementStart(35, "button", 84);
590
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_28_Template_button_click_35_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseScheduleDialog()); });
553
591
  i0.ɵɵtext(36, "Cancel");
554
592
  i0.ɵɵelementEnd()()()();
555
593
  } if (rf & 2) {
556
- const ctx_r2 = i0.ɵɵnextContext();
594
+ const ctx_r1 = i0.ɵɵnextContext();
557
595
  i0.ɵɵadvance(13);
558
- i0.ɵɵclassMap(ctx_r2.SchedulingSourceCard.Icon);
596
+ i0.ɵɵclassMap(ctx_r1.SchedulingSourceCard.Icon);
559
597
  i0.ɵɵadvance();
560
- i0.ɵɵtextInterpolate1(" ", ctx_r2.SchedulingSourceCard.Name, " ");
598
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.SchedulingSourceCard.Name, " ");
561
599
  i0.ɵɵadvance(9);
562
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.ScheduleCron);
600
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ScheduleCron);
563
601
  i0.ɵɵadvance(3);
564
- i0.ɵɵtextInterpolate1(" ", ctx_r2.GetCronPreview(ctx_r2.ScheduleCron), " ");
602
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.GetCronPreview(ctx_r1.ScheduleCron), " ");
565
603
  i0.ɵɵadvance(4);
566
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.ScheduleEnabled);
604
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ScheduleEnabled);
567
605
  i0.ɵɵadvance(2);
568
- i0.ɵɵproperty("disabled", ctx_r2.ScheduleSaving);
606
+ i0.ɵɵproperty("disabled", ctx_r1.ScheduleSaving);
569
607
  i0.ɵɵadvance();
570
- i0.ɵɵconditional(ctx_r2.ScheduleSaving ? 33 : 34);
608
+ i0.ɵɵconditional(ctx_r1.ScheduleSaving ? 33 : 34);
571
609
  } }
572
610
  export class ClassifySourcesTabComponent extends BaseAngularComponent {
573
611
  cdr = inject(ChangeDetectorRef);
@@ -644,6 +682,8 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
644
682
  return this._entityRecordDocCache;
645
683
  }
646
684
  // ── Tab-local view state ──
685
+ /** Shown while a manual Refresh() recomputes the source cards. */
686
+ IsLoading = false;
647
687
  SourceCards = [];
648
688
  // Source Detail slide-in
649
689
  SelectedSource = null;
@@ -667,6 +707,8 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
667
707
  // ── Cross-tab intents (host owns the slide-in form, navigation, pipeline) ──
668
708
  /** Bubble "add source" up — host opens its slide-in CRUD form. */
669
709
  AddSourceRequested = new EventEmitter();
710
+ /** Bubble "add source (guided)" up — host opens the setup wizard. */
711
+ AddSourceGuidedRequested = new EventEmitter();
670
712
  /** Bubble "edit source" up — host opens its slide-in CRUD form pre-filled. */
671
713
  EditSourceRequested = new EventEmitter();
672
714
  /** Bubble "run pipeline for source" up — host runs the pipeline for the given source ID. */
@@ -675,9 +717,24 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
675
717
  OpenContentItemRequested = new EventEmitter();
676
718
  /** Fired after a delete / schedule change so the host reloads the shared source list. */
677
719
  DataChanged = new EventEmitter();
720
+ /**
721
+ * Recompute the source cards from the current host-supplied inputs. The data
722
+ * itself is owned by the host (flows in via @Input); Refresh just rebuilds the
723
+ * view models and surfaces a brief loading state for user feedback.
724
+ */
725
+ async Refresh() {
726
+ this.IsLoading = true;
727
+ this.cdr.detectChanges();
728
+ this.rebuild();
729
+ this.IsLoading = false;
730
+ this.cdr.detectChanges();
731
+ }
678
732
  onAddSource() {
679
733
  this.AddSourceRequested.emit();
680
734
  }
735
+ onAddSourceGuided() {
736
+ this.AddSourceGuidedRequested.emit();
737
+ }
681
738
  onEditSource(card) {
682
739
  this.EditSourceRequested.emit(card);
683
740
  }
@@ -1254,7 +1311,7 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
1254
1311
  const itemStatuses = this.inferPipelineStatuses(item, tagCount);
1255
1312
  return {
1256
1313
  ID: itemId,
1257
- Name: item['Name'] ?? 'Unnamed',
1314
+ Name: deriveDisplayName({ Name: item['Name'], Description: item['Description'] }),
1258
1315
  SourceName: item['ContentSource'] ?? '',
1259
1316
  SourceTypeName: item['ContentSourceType'] ?? '',
1260
1317
  ContentTypeName: item['ContentType'] ?? '',
@@ -1314,45 +1371,67 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
1314
1371
  });
1315
1372
  }
1316
1373
  static ɵfac = /*@__PURE__*/ (() => { let ɵClassifySourcesTabComponent_BaseFactory; return function ClassifySourcesTabComponent_Factory(__ngFactoryType__) { return (ɵClassifySourcesTabComponent_BaseFactory || (ɵClassifySourcesTabComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ClassifySourcesTabComponent)))(__ngFactoryType__ || ClassifySourcesTabComponent); }; })();
1317
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ClassifySourcesTabComponent, selectors: [["classify-sources-tab"]], inputs: { Sources: "Sources", Items: "Items", Tags: "Tags", Runs: "Runs", TotalItemCount: "TotalItemCount", TotalTagCount: "TotalTagCount", ScheduledActions: "ScheduledActions", EntityRecordDocCache: "EntityRecordDocCache" }, outputs: { AddSourceRequested: "AddSourceRequested", EditSourceRequested: "EditSourceRequested", RunSourceRequested: "RunSourceRequested", OpenContentItemRequested: "OpenContentItemRequested", DataChanged: "DataChanged" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 21, vars: 7, consts: [["Title", "Content Sources", "Subtitle", "Configure where content is ingested from"], ["actions", ""], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "mj-action-label"], [3, "Padding", "Flex"], [1, "at-main-area"], [1, "at-page-body"], [1, "at-sources-grid"], [1, "at-source-card-full", "at-source-card-clickable"], [1, "at-add-source-card", 3, "click"], [1, "fa-solid", "fa-plus-circle"], [2, "font-size", "0.85rem", "font-weight", "600"], [2, "font-size", "0.72rem"], [1, "at-schedule-overlay"], [3, "Closed", "Provider", "Show", "SourceCard"], [1, "at-source-card-full", "at-source-card-clickable", 3, "click"], [1, "at-source-card-header"], [1, "at-source-card-icon"], [1, "at-source-card-title"], [1, "at-source-card-type"], [1, "at-source-card-status"], [1, "at-source-mini-status"], [1, "at-source-card-url"], [1, "at-source-card-stats"], [1, "at-source-stat"], [1, "at-source-stat-value"], [1, "at-source-stat-label"], ["title", "Click to remove schedule", 1, "at-schedule-indicator"], [1, "at-source-card-actions"], [1, "at-source-action-btn", 3, "click"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-flask"], [1, "at-source-action-btn", "at-source-schedule-btn"], [1, "at-source-action-btn", "at-source-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash"], ["title", "Click to remove schedule", 1, "at-schedule-indicator", 3, "click"], [1, "fa-regular", "fa-clock"], [1, "at-source-action-btn", "at-source-schedule-btn", 3, "click"], [1, "at-slide-overlay", 3, "click"], [1, "at-slide-panel", "at-detail-panel"], [1, "at-slide-header"], [1, "fa-solid", "fa-database"], ["aria-label", "Close source detail", 1, "at-slide-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "at-slide-body"], [1, "at-loading-overlay"], ["text", "Loading source details..."], [1, "at-detail-source-header"], [1, "at-detail-item-name"], [1, "at-detail-badges"], [1, "at-detail-badge", "at-detail-badge-type"], [1, "at-detail-badge"], [1, "at-detail-section"], [1, "at-detail-section-label"], [1, "at-detail-meta-grid"], [1, "at-detail-meta-row"], [1, "at-detail-meta-key"], [1, "at-detail-meta-value"], [1, "at-detail-stats-strip"], [1, "at-detail-stat"], [1, "at-detail-stat-value"], [1, "at-detail-stat-label"], [1, "at-detail-section-header-row"], [1, "at-detail-section-controls"], [1, "at-detail-filter-select", 3, "ngModelChange", "ngModel"], [3, "value"], ["title", "Re-queue failed items for processing", 1, "at-action-btn", "at-retry-btn", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "at-detail-content-list"], [1, "at-empty-state", 2, "padding", "16px"], [1, "at-detail-content-item"], [1, "at-detail-pagination"], [1, "at-detail-actions"], [1, "at-action-btn", "at-primary-btn", 3, "click"], [1, "at-action-btn", "at-secondary-btn", 3, "click"], [1, "at-action-btn", "at-secondary-btn", "at-source-delete-btn", 3, "click"], ["target", "_blank", 1, "at-detail-link", "at-detail-meta-value", 3, "href"], [1, "at-detail-content-item", 3, "click"], [1, "at-feed-status-dot"], [1, "at-detail-content-item-name"], [1, "at-status-badge"], [1, "at-detail-content-item-tags"], [1, "at-detail-content-item-time"], [1, "at-page-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "at-page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "at-detail-run-history"], [1, "at-detail-run-row"], [1, "at-run-status-badge"], [1, "at-detail-run-time"], [1, "at-detail-run-duration"], [1, "at-detail-run-items"], [1, "at-schedule-overlay", 3, "click"], [1, "at-schedule-dialog", 3, "click"], [1, "at-schedule-dialog-header"], ["aria-label", "Close", 1, "at-schedule-dialog-close", 3, "click"], [1, "at-schedule-dialog-body"], [1, "at-schedule-field"], [1, "at-schedule-source-name"], [1, "at-schedule-action-name"], ["for", "schedule-cron"], ["id", "schedule-cron", "type", "text", "placeholder", "0 2 * * *", 1, "mj-input", "at-schedule-cron-input", 3, "ngModelChange", "ngModel"], [1, "at-schedule-cron-preview"], [1, "fa-solid", "fa-info-circle"], [1, "at-schedule-field", "at-schedule-toggle-row"], ["for", "schedule-enabled"], ["id", "schedule-enabled", "type", "checkbox", 1, "mj-checkbox", 3, "ngModelChange", "ngModel"], [1, "at-schedule-dialog-footer"], [1, "at-action-btn", "at-primary-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-check"]], template: function ClassifySourcesTabComponent_Template(rf, ctx) { if (rf & 1) {
1374
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ClassifySourcesTabComponent, selectors: [["classify-sources-tab"]], inputs: { Sources: "Sources", Items: "Items", Tags: "Tags", Runs: "Runs", TotalItemCount: "TotalItemCount", TotalTagCount: "TotalTagCount", ScheduledActions: "ScheduledActions", EntityRecordDocCache: "EntityRecordDocCache" }, outputs: { AddSourceRequested: "AddSourceRequested", AddSourceGuidedRequested: "AddSourceGuidedRequested", EditSourceRequested: "EditSourceRequested", RunSourceRequested: "RunSourceRequested", OpenContentItemRequested: "OpenContentItemRequested", DataChanged: "DataChanged" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 30, vars: 11, consts: [["Title", "Content Sources", "Subtitle", "Configure where content is ingested from"], ["actions", ""], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click", "disabled"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "mj-action-label"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [3, "Padding", "Flex"], [1, "at-main-area"], [1, "at-loading-overlay"], [1, "at-page-body"], [1, "at-sources-empty"], [1, "at-sources-grid"], [1, "at-source-card-full", "at-source-card-clickable"], [1, "at-add-source-card", 3, "click"], [1, "fa-solid", "fa-plus-circle"], [2, "font-size", "0.85rem", "font-weight", "600"], [2, "font-size", "0.72rem"], [1, "at-schedule-overlay"], [3, "Closed", "Provider", "Show", "SourceCard"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-arrows-rotate"], ["text", "Refreshing sources\u2026"], [1, "fa-solid", "fa-database"], [1, "at-sources-empty-actions"], [1, "at-source-card-full", "at-source-card-clickable", 3, "click"], [1, "at-source-card-header"], [1, "at-source-card-icon"], [1, "at-source-card-title"], [1, "at-source-card-type"], [1, "at-source-card-status"], [1, "at-source-mini-status"], [1, "at-source-card-url"], [1, "at-source-card-stats"], [1, "at-source-stat"], [1, "at-source-stat-value"], [1, "at-source-stat-label"], ["title", "Click to remove schedule", 1, "at-schedule-indicator"], [1, "at-source-card-actions"], [1, "at-source-action-btn", 3, "click"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-flask"], [1, "at-source-action-btn", "at-source-schedule-btn"], [1, "at-source-action-btn", "at-source-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash"], ["title", "Click to remove schedule", 1, "at-schedule-indicator", 3, "click"], [1, "fa-regular", "fa-clock"], [1, "at-source-action-btn", "at-source-schedule-btn", 3, "click"], [1, "at-slide-overlay", 3, "click"], [1, "at-slide-panel", "at-detail-panel"], [1, "at-slide-header"], ["aria-label", "Close source detail", 1, "at-slide-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "at-slide-body"], ["text", "Loading source details..."], [1, "at-detail-source-header"], [1, "at-detail-item-name"], [1, "at-detail-badges"], [1, "at-detail-badge", "at-detail-badge-type"], [1, "at-detail-badge"], [1, "at-detail-section"], [1, "at-detail-section-label"], [1, "at-detail-meta-grid"], [1, "at-detail-meta-row"], [1, "at-detail-meta-key"], [1, "at-detail-meta-value"], [1, "at-detail-stats-strip"], [1, "at-detail-stat"], [1, "at-detail-stat-value"], [1, "at-detail-stat-label"], [1, "at-detail-section-header-row"], [1, "at-detail-section-controls"], [1, "at-detail-filter-select", 3, "ngModelChange", "ngModel"], [3, "value"], ["title", "Re-queue failed items for processing", 1, "at-action-btn", "at-retry-btn", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "at-detail-content-list"], [1, "at-empty-state", 2, "padding", "16px"], [1, "at-detail-content-item"], [1, "at-detail-pagination"], [1, "at-detail-actions"], [1, "at-action-btn", "at-primary-btn", 3, "click"], [1, "at-action-btn", "at-secondary-btn", 3, "click"], [1, "at-action-btn", "at-secondary-btn", "at-source-delete-btn", 3, "click"], ["target", "_blank", 1, "at-detail-link", "at-detail-meta-value", 3, "href"], [1, "at-detail-content-item", 3, "click"], [1, "at-feed-status-dot"], [1, "at-detail-content-item-name"], [1, "at-status-badge"], [1, "at-detail-content-item-tags"], [1, "at-detail-content-item-time"], [1, "at-page-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "at-page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "at-detail-run-history"], [1, "at-detail-run-row"], [1, "at-run-status-badge"], [1, "at-detail-run-time"], [1, "at-detail-run-duration"], [1, "at-detail-run-items"], [1, "at-schedule-overlay", 3, "click"], [1, "at-schedule-dialog", 3, "click"], [1, "at-schedule-dialog-header"], ["aria-label", "Close", 1, "at-schedule-dialog-close", 3, "click"], [1, "at-schedule-dialog-body"], [1, "at-schedule-field"], [1, "at-schedule-source-name"], [1, "at-schedule-action-name"], ["for", "schedule-cron"], ["id", "schedule-cron", "type", "text", "placeholder", "0 2 * * *", 1, "mj-input", "at-schedule-cron-input", 3, "ngModelChange", "ngModel"], [1, "at-schedule-cron-preview"], [1, "fa-solid", "fa-info-circle"], [1, "at-schedule-field", "at-schedule-toggle-row"], ["for", "schedule-enabled"], ["id", "schedule-enabled", "type", "checkbox", 1, "mj-checkbox", 3, "ngModelChange", "ngModel"], [1, "at-schedule-dialog-footer"], [1, "at-action-btn", "at-primary-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-check"]], template: function ClassifySourcesTabComponent_Template(rf, ctx) { if (rf & 1) {
1318
1375
  i0.ɵɵelementStart(0, "mj-page-header-interior", 0)(1, "div", 1)(2, "button", 2);
1319
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_button_click_2_listener() { return ctx.onAddSource(); });
1320
- i0.ɵɵelement(3, "i", 3);
1321
- i0.ɵɵelementStart(4, "span", 4);
1322
- i0.ɵɵtext(5, "Add Source");
1376
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_button_click_2_listener() { return ctx.Refresh(); });
1377
+ i0.ɵɵconditionalCreate(3, ClassifySourcesTabComponent_Conditional_3_Template, 3, 0)(4, ClassifySourcesTabComponent_Conditional_4_Template, 3, 0);
1378
+ i0.ɵɵelementEnd();
1379
+ i0.ɵɵelementStart(5, "button", 3);
1380
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_button_click_5_listener() { return ctx.onAddSourceGuided(); });
1381
+ i0.ɵɵelement(6, "i", 4);
1382
+ i0.ɵɵelementStart(7, "span", 5);
1383
+ i0.ɵɵtext(8, "Add Source (Guided)");
1384
+ i0.ɵɵelementEnd()();
1385
+ i0.ɵɵelementStart(9, "button", 6);
1386
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_button_click_9_listener() { return ctx.onAddSource(); });
1387
+ i0.ɵɵelement(10, "i", 7);
1388
+ i0.ɵɵelementStart(11, "span", 5);
1389
+ i0.ɵɵtext(12, "Add Source");
1323
1390
  i0.ɵɵelementEnd()()()();
1324
- i0.ɵɵelementStart(6, "mj-page-body-interior", 5)(7, "div", 6)(8, "div", 7)(9, "div", 8);
1325
- i0.ɵɵrepeaterCreate(10, ClassifySourcesTabComponent_For_11_Template, 50, 17, "div", 9, _forTrack0);
1326
- i0.ɵɵelementStart(12, "div", 10);
1327
- i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_div_click_12_listener() { return ctx.onAddSource(); });
1328
- i0.ɵɵelement(13, "i", 11);
1329
- i0.ɵɵelementStart(14, "span", 12);
1330
- i0.ɵɵtext(15, "Add Content Source");
1391
+ i0.ɵɵelementStart(13, "mj-page-body-interior", 8)(14, "div", 9);
1392
+ i0.ɵɵconditionalCreate(15, ClassifySourcesTabComponent_Conditional_15_Template, 2, 0, "div", 10);
1393
+ i0.ɵɵelementStart(16, "div", 11);
1394
+ i0.ɵɵconditionalCreate(17, ClassifySourcesTabComponent_Conditional_17_Template, 13, 0, "div", 12);
1395
+ i0.ɵɵelementStart(18, "div", 13);
1396
+ i0.ɵɵrepeaterCreate(19, ClassifySourcesTabComponent_For_20_Template, 50, 17, "div", 14, _forTrack0);
1397
+ i0.ɵɵelementStart(21, "div", 15);
1398
+ i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_div_click_21_listener() { return ctx.onAddSource(); });
1399
+ i0.ɵɵelement(22, "i", 16);
1400
+ i0.ɵɵelementStart(23, "span", 17);
1401
+ i0.ɵɵtext(24, "Add Content Source");
1331
1402
  i0.ɵɵelementEnd();
1332
- i0.ɵɵelementStart(16, "span", 13);
1333
- i0.ɵɵtext(17, "Web, RSS, Email, Files, API");
1403
+ i0.ɵɵelementStart(25, "span", 18);
1404
+ i0.ɵɵtext(26, "Web, RSS, Email, Files, API");
1334
1405
  i0.ɵɵelementEnd()()()()()();
1335
- i0.ɵɵconditionalCreate(18, ClassifySourcesTabComponent_Conditional_18_Template, 11, 2);
1336
- i0.ɵɵconditionalCreate(19, ClassifySourcesTabComponent_Conditional_19_Template, 37, 8, "div", 14);
1337
- i0.ɵɵelementStart(20, "classify-dry-run-preview", 15);
1338
- i0.ɵɵlistener("Closed", function ClassifySourcesTabComponent_Template_classify_dry_run_preview_Closed_20_listener() { return ctx.CloseDryRunPreview(); });
1406
+ i0.ɵɵconditionalCreate(27, ClassifySourcesTabComponent_Conditional_27_Template, 11, 2);
1407
+ i0.ɵɵconditionalCreate(28, ClassifySourcesTabComponent_Conditional_28_Template, 37, 8, "div", 19);
1408
+ i0.ɵɵelementStart(29, "classify-dry-run-preview", 20);
1409
+ i0.ɵɵlistener("Closed", function ClassifySourcesTabComponent_Template_classify_dry_run_preview_Closed_29_listener() { return ctx.CloseDryRunPreview(); });
1339
1410
  i0.ɵɵelementEnd();
1340
1411
  } if (rf & 2) {
1341
- i0.ɵɵadvance(6);
1412
+ i0.ɵɵadvance(2);
1413
+ i0.ɵɵproperty("disabled", ctx.IsLoading);
1414
+ i0.ɵɵadvance();
1415
+ i0.ɵɵconditional(ctx.IsLoading ? 3 : 4);
1416
+ i0.ɵɵadvance(10);
1342
1417
  i0.ɵɵproperty("Padding", false)("Flex", true);
1343
- i0.ɵɵadvance(4);
1418
+ i0.ɵɵadvance(2);
1419
+ i0.ɵɵconditional(ctx.IsLoading ? 15 : -1);
1420
+ i0.ɵɵadvance(2);
1421
+ i0.ɵɵconditional(ctx.SourceCards.length === 0 && !ctx.IsLoading ? 17 : -1);
1422
+ i0.ɵɵadvance(2);
1344
1423
  i0.ɵɵrepeater(ctx.SourceCards);
1345
1424
  i0.ɵɵadvance(8);
1346
- i0.ɵɵconditional(ctx.ShowSourceDetail ? 18 : -1);
1425
+ i0.ɵɵconditional(ctx.ShowSourceDetail ? 27 : -1);
1347
1426
  i0.ɵɵadvance();
1348
- i0.ɵɵconditional(ctx.ShowScheduleDialog && ctx.SchedulingSourceCard ? 19 : -1);
1427
+ i0.ɵɵconditional(ctx.ShowScheduleDialog && ctx.SchedulingSourceCard ? 28 : -1);
1349
1428
  i0.ɵɵadvance();
1350
1429
  i0.ɵɵproperty("Provider", ctx.Provider)("Show", ctx.ShowDryRunPreview)("SourceCard", ctx.DryRunSourceCard);
1351
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.MJButtonDirective, i3.MJPageHeaderInteriorComponent, i3.MJPageBodyInteriorComponent, i4.ClassifyDryRunPreviewDialogComponent, i5.DecimalPipe], encapsulation: 2 });
1430
+ } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.MJButtonDirective, i3.MJPageHeaderInteriorComponent, i3.MJPageBodyInteriorComponent, i4.ClassifyDryRunPreviewDialogComponent, i5.DecimalPipe], styles: ["\n\n\n\n\n\n\n\n\n\n\n.at-sources-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 10px;\n padding: 48px 24px;\n background: var(--mj-bg-surface-card);\n border: 1px dashed var(--mj-border-default);\n border-radius: 12px;\n}\n.at-sources-empty[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 2rem;\n color: var(--mj-brand-primary);\n}\n.at-sources-empty[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1rem;\n color: var(--mj-text-primary);\n}\n.at-sources-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n max-width: 460px;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n.at-sources-empty-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 6px;\n}"] });
1352
1431
  }
1353
1432
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClassifySourcesTabComponent, [{
1354
1433
  type: Component,
1355
- args: [{ standalone: false, selector: 'classify-sources-tab', template: "<mj-page-header-interior\n Title=\"Content Sources\"\n Subtitle=\"Configure where content is ingested from\">\n <div actions>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Source</span>\n </button>\n </div>\n</mj-page-header-interior>\n\n<mj-page-body-interior [Padding]=\"false\" [Flex]=\"true\">\n <div class=\"at-main-area\">\n <div class=\"at-page-body\">\n <div class=\"at-sources-grid\">\n @for (card of SourceCards; track card.ID) {\n <div class=\"at-source-card-full at-source-card-clickable\" (click)=\"OpenSourceDetail(card)\">\n <div class=\"at-source-card-header\">\n <div class=\"at-source-card-icon\"><i [class]=\"card.Icon\"></i></div>\n <div>\n <div class=\"at-source-card-title\">{{ card.Name }}</div>\n <div class=\"at-source-card-type\">{{ card.SourceTypeName }}@if (card.RequiresFileType) { \u00B7 {{ card.FileTypeName }}}</div>\n </div>\n <div class=\"at-source-card-status\" [class]=\"card.StatusClass\">\n <div class=\"at-source-mini-status\" [class]=\"card.StatusClass\"></div>\n {{ card.StatusLabel }}\n </div>\n </div>\n @if (card.URL) {\n <div class=\"at-source-card-url\">{{ card.URL }}</div>\n }\n <div class=\"at-source-card-stats\">\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ formatNumber(card.ItemCount) }}</div>\n <div class=\"at-source-stat-label\">Items</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ formatNumber(card.TagCount) }}</div>\n <div class=\"at-source-stat-label\">Tags</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ card.AvgTags }}</div>\n <div class=\"at-source-stat-label\">Avg Tags</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ card.LastRunAgo }}</div>\n <div class=\"at-source-stat-label\">Last Run</div>\n </div>\n </div>\n <!-- Schedule indicator -->\n @if (card.ScheduledActionID) {\n <div class=\"at-schedule-indicator\" (click)=\"RemoveSchedule(card); $event.stopPropagation()\" title=\"Click to remove schedule\">\n <i class=\"fa-regular fa-clock\"></i>\n <span>{{ GetScheduleLabel(card) }}</span>\n </div>\n }\n <div class=\"at-source-card-actions\">\n <button class=\"at-source-action-btn\" (click)=\"onEditSource(card); $event.stopPropagation()\"><i class=\"fa-solid fa-pen\"></i> Edit</button>\n <button class=\"at-source-action-btn\" (click)=\"onRunSource(card.ID); $event.stopPropagation()\"><i class=\"fa-solid fa-play\"></i> Run</button>\n <button class=\"at-source-action-btn\" (click)=\"OpenDryRunPreview(card); $event.stopPropagation()\"><i class=\"fa-solid fa-flask\"></i> Preview</button>\n @if (!card.ScheduledActionID) {\n <button class=\"at-source-action-btn at-source-schedule-btn\" (click)=\"OpenScheduleDialog(card); $event.stopPropagation()\"><i class=\"fa-regular fa-clock\"></i> Schedule</button>\n }\n <button class=\"at-source-action-btn at-source-delete-btn\" (click)=\"DeleteSource(card); $event.stopPropagation()\"><i class=\"fa-solid fa-trash\"></i> Delete</button>\n </div>\n </div>\n }\n\n <!-- Add Source Card -->\n <div class=\"at-add-source-card\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n <span style=\"font-size: 0.85rem; font-weight: 600;\">Add Content Source</span>\n <span style=\"font-size: 0.72rem;\">Web, RSS, Email, Files, API</span>\n </div>\n </div>\n </div>\n </div>\n</mj-page-body-interior>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 SOURCE DETAIL SLIDE-IN \u2550\u2550\u2550\u2550\u2550\u2550 -->\n@if (ShowSourceDetail) {\n <div class=\"at-slide-overlay\" (click)=\"CloseSourceDetail()\"></div>\n <div class=\"at-slide-panel at-detail-panel\">\n <div class=\"at-slide-header\">\n <h3><i class=\"fa-solid fa-database\"></i> Source Detail</h3>\n <button class=\"at-slide-close\" aria-label=\"Close source detail\" (click)=\"CloseSourceDetail()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n <div class=\"at-slide-body\">\n @if (SourceDetailLoading) {\n <div class=\"at-loading-overlay\">\n <mj-loading text=\"Loading source details...\"></mj-loading>\n </div>\n }\n @if (!SourceDetailLoading && SelectedSource) {\n <!-- Source Header -->\n <div class=\"at-detail-source-header\">\n <div class=\"at-source-card-icon\"><i [class]=\"SelectedSource.Icon\"></i></div>\n <div>\n <h4 class=\"at-detail-item-name\">{{ SelectedSource.Name }}</h4>\n <div class=\"at-detail-badges\">\n <span class=\"at-detail-badge at-detail-badge-type\">{{ SelectedSource.SourceTypeName }}</span>\n <span class=\"at-detail-badge\" [class]=\"'at-detail-badge-status-' + SelectedSource.StatusClass\">\n {{ SelectedSource.StatusLabel }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Configuration -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Configuration</div>\n <div class=\"at-detail-meta-grid\">\n @if (SelectedSource.URL) {\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">URL</span>\n <a [href]=\"SelectedSource.URL\" target=\"_blank\" class=\"at-detail-link at-detail-meta-value\">{{ SelectedSource.URL }}</a>\n </div>\n }\n @if (SelectedSource.RequiresFileType) {\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Content Type</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.ContentTypeName }}</span>\n </div>\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">File Type</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.FileTypeName }}</span>\n </div>\n }\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Embedding Model</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.EmbeddingModelName }}</span>\n </div>\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Vector Index</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.VectorIndexName }}</span>\n </div>\n </div>\n </div>\n\n <!-- Stats -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Statistics</div>\n <div class=\"at-detail-stats-strip\">\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ formatNumber(SelectedSource.ItemCount) }}</div>\n <div class=\"at-detail-stat-label\">Items</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ formatNumber(SelectedSource.TagCount) }}</div>\n <div class=\"at-detail-stat-label\">Tags</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ SelectedSource.AvgTags }}</div>\n <div class=\"at-detail-stat-label\">Avg Tags</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ SelectedSource.LastRunAgo }}</div>\n <div class=\"at-detail-stat-label\">Last Run</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\" [class.at-kpi-error-value]=\"SelectedSource.ErrorCount > 0\">{{ SelectedSource.ErrorCount }}</div>\n <div class=\"at-detail-stat-label\">Errors</div>\n </div>\n </div>\n </div>\n\n <!-- Content Library (status badges, pagination) -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-header-row\">\n <div class=\"at-detail-section-label\">Content Library ({{ FilteredSourceDetailTotal }} of {{ SelectedSource.ItemCount | number }})</div>\n <div class=\"at-detail-section-controls\">\n <select class=\"at-detail-filter-select\" [(ngModel)]=\"SourceDetailStatusFilter\" (ngModelChange)=\"OnSourceDetailStatusFilterChange()\">\n @for (opt of SourceDetailStatusOptions; track opt) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n <button class=\"at-action-btn at-retry-btn\" (click)=\"RetryFailedItems()\" title=\"Re-queue failed items for processing\">\n <i class=\"fa-solid fa-rotate-right\"></i> Retry Failed\n </button>\n </div>\n </div>\n <div class=\"at-detail-content-list\">\n @if (FilteredSourceDetailItems.length === 0) {\n <div class=\"at-empty-state\" style=\"padding: 16px;\">\n <p>{{ SourceDetailStatusFilter === 'All' ? 'No content items yet.' : 'No items match this filter.' }}</p>\n </div>\n }\n @for (ci of FilteredSourceDetailItems; track ci.ID) {\n <div class=\"at-detail-content-item\" (click)=\"OpenContentItemDetail(ci)\">\n <div class=\"at-feed-status-dot\" [class]=\"ci.StatusDot\"></div>\n <span class=\"at-detail-content-item-name\">{{ ci.Name }}</span>\n <span class=\"at-status-badge\" [class]=\"GetStatusBadgeClass(ci.EmbeddingStatus)\">E:{{ ci.EmbeddingStatus }}</span>\n <span class=\"at-status-badge\" [class]=\"GetStatusBadgeClass(ci.TaggingStatus)\">T:{{ ci.TaggingStatus }}</span>\n <span class=\"at-detail-content-item-tags\">{{ ci.TagCount }} tags</span>\n <span class=\"at-detail-content-item-time\">{{ ci.UpdatedAt }}</span>\n </div>\n }\n </div>\n <!-- Pagination -->\n @if (SourceDetailTotalPages > 1) {\n <div class=\"at-detail-pagination\">\n <button class=\"at-page-btn\" [disabled]=\"SourceDetailPage === 0\" (click)=\"SourceDetailPrevPage()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Prev\n </button>\n <span class=\"at-page-info\">Page {{ SourceDetailPage + 1 }} of {{ SourceDetailTotalPages }}</span>\n <button class=\"at-page-btn\" [disabled]=\"SourceDetailPage >= SourceDetailTotalPages - 1\" (click)=\"SourceDetailNextPage()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n\n <!-- Run History -->\n @if (SelectedSource.RunHistory.length > 0) {\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Recent Runs</div>\n <div class=\"at-detail-run-history\">\n @for (run of SelectedSource.RunHistory; track run.ID) {\n <div class=\"at-detail-run-row\">\n <span class=\"at-run-status-badge\" [class]=\"run.StatusClass\">{{ run.Status }}</span>\n <span class=\"at-detail-run-time\">{{ run.StartedDisplay }}</span>\n <span class=\"at-detail-run-duration\">{{ run.Duration }}</span>\n <span class=\"at-detail-run-items\">{{ run.Items }} items</span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Actions -->\n <div class=\"at-detail-actions\">\n <button class=\"at-action-btn at-primary-btn\" (click)=\"OpenEditSourceFromDetail()\">\n <i class=\"fa-solid fa-pen\"></i> Edit\n </button>\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"RunSourceFromDetail()\">\n <i class=\"fa-solid fa-play\"></i> Run Now\n </button>\n <button class=\"at-action-btn at-secondary-btn at-source-delete-btn\" (click)=\"DeleteSourceFromDetail()\">\n <i class=\"fa-solid fa-trash\"></i> Delete\n </button>\n </div>\n }\n </div>\n </div>\n}\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 SCHEDULE DIALOG \u2550\u2550\u2550\u2550\u2550\u2550 -->\n@if (ShowScheduleDialog && SchedulingSourceCard) {\n <div class=\"at-schedule-overlay\" (click)=\"CloseScheduleDialog()\">\n <div class=\"at-schedule-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"at-schedule-dialog-header\">\n <h3><i class=\"fa-regular fa-clock\"></i> Schedule Pipeline</h3>\n <button class=\"at-schedule-dialog-close\" (click)=\"CloseScheduleDialog()\" aria-label=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"at-schedule-dialog-body\">\n <div class=\"at-schedule-field\">\n <label>Source</label>\n <div class=\"at-schedule-source-name\">\n <i [class]=\"SchedulingSourceCard.Icon\"></i>\n {{ SchedulingSourceCard.Name }}\n </div>\n </div>\n <div class=\"at-schedule-field\">\n <label>Action</label>\n <div class=\"at-schedule-action-name\">Autotag and Vectorize Content</div>\n </div>\n <div class=\"at-schedule-field\">\n <label for=\"schedule-cron\">Cron Expression</label>\n <input id=\"schedule-cron\"\n type=\"text\"\n class=\"mj-input at-schedule-cron-input\"\n [(ngModel)]=\"ScheduleCron\"\n placeholder=\"0 2 * * *\" />\n <div class=\"at-schedule-cron-preview\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ GetCronPreview(ScheduleCron) }}\n </div>\n </div>\n <div class=\"at-schedule-field at-schedule-toggle-row\">\n <label for=\"schedule-enabled\">Enabled</label>\n <input id=\"schedule-enabled\"\n type=\"checkbox\"\n class=\"mj-checkbox\"\n [(ngModel)]=\"ScheduleEnabled\" />\n </div>\n </div>\n <div class=\"at-schedule-dialog-footer\">\n <button class=\"at-action-btn at-primary-btn\" (click)=\"SaveSchedule()\" [disabled]=\"ScheduleSaving\">\n @if (ScheduleSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-check\"></i> Create Schedule\n }\n </button>\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"CloseScheduleDialog()\">Cancel</button>\n </div>\n </div>\n </div>\n}\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 DRY-RUN DISPOSITION PREVIEW (in-memory, nothing persisted) \u2550\u2550\u2550\u2550\u2550\u2550 -->\n<classify-dry-run-preview\n [Provider]=\"Provider\"\n [Show]=\"ShowDryRunPreview\"\n [SourceCard]=\"DryRunSourceCard\"\n (Closed)=\"CloseDryRunPreview()\">\n</classify-dry-run-preview>\n", styles: ["/*\n * Content Sources tab styles.\n *\n * The host (AutotaggingPipelineResourceComponent) uses ViewEncapsulation.None,\n * so its `.at-*` rules are global and already style this tab's markup (cards,\n * source-detail slide-in, schedule dialog) while it renders inside the host\n * shell. Tab-specific rules would live here; none are needed during the\n * host-slim step.\n */\n"] }]
1434
+ args: [{ standalone: false, selector: 'classify-sources-tab', template: "<mj-page-header-interior\n Title=\"Content Sources\"\n Subtitle=\"Configure where content is ingested from\">\n <div actions>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"Refresh()\" [disabled]=\"IsLoading\">\n @if (IsLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> <span class=\"mj-action-label\">Refreshing\u2026</span>\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> <span class=\"mj-action-label\">Refresh</span>\n }\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"onAddSourceGuided()\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> <span class=\"mj-action-label\">Add Source (Guided)</span>\n </button>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Source</span>\n </button>\n </div>\n</mj-page-header-interior>\n\n<mj-page-body-interior [Padding]=\"false\" [Flex]=\"true\">\n <div class=\"at-main-area\">\n @if (IsLoading) {\n <div class=\"at-loading-overlay\">\n <mj-loading text=\"Refreshing sources\u2026\"></mj-loading>\n </div>\n }\n <div class=\"at-page-body\">\n @if (SourceCards.length === 0 && !IsLoading) {\n <div class=\"at-sources-empty\">\n <i class=\"fa-solid fa-database\"></i>\n <h3>No content sources yet</h3>\n <p>Use the guided setup to stand up your first source \u2014 pick an entity or URL, configure its document, taxonomy, and domain context in one flow.</p>\n <div class=\"at-sources-empty-actions\">\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onAddSourceGuided()\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Add Source (Guided)\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus\"></i> Add manually\n </button>\n </div>\n </div>\n }\n\n <div class=\"at-sources-grid\">\n @for (card of SourceCards; track card.ID) {\n <div class=\"at-source-card-full at-source-card-clickable\" (click)=\"OpenSourceDetail(card)\">\n <div class=\"at-source-card-header\">\n <div class=\"at-source-card-icon\"><i [class]=\"card.Icon\"></i></div>\n <div>\n <div class=\"at-source-card-title\">{{ card.Name }}</div>\n <div class=\"at-source-card-type\">{{ card.SourceTypeName }}@if (card.RequiresFileType) { \u00B7 {{ card.FileTypeName }}}</div>\n </div>\n <div class=\"at-source-card-status\" [class]=\"card.StatusClass\">\n <div class=\"at-source-mini-status\" [class]=\"card.StatusClass\"></div>\n {{ card.StatusLabel }}\n </div>\n </div>\n @if (card.URL) {\n <div class=\"at-source-card-url\">{{ card.URL }}</div>\n }\n <div class=\"at-source-card-stats\">\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ formatNumber(card.ItemCount) }}</div>\n <div class=\"at-source-stat-label\">Items</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ formatNumber(card.TagCount) }}</div>\n <div class=\"at-source-stat-label\">Tags</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ card.AvgTags }}</div>\n <div class=\"at-source-stat-label\">Avg Tags</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ card.LastRunAgo }}</div>\n <div class=\"at-source-stat-label\">Last Run</div>\n </div>\n </div>\n <!-- Schedule indicator -->\n @if (card.ScheduledActionID) {\n <div class=\"at-schedule-indicator\" (click)=\"RemoveSchedule(card); $event.stopPropagation()\" title=\"Click to remove schedule\">\n <i class=\"fa-regular fa-clock\"></i>\n <span>{{ GetScheduleLabel(card) }}</span>\n </div>\n }\n <div class=\"at-source-card-actions\">\n <button class=\"at-source-action-btn\" (click)=\"onEditSource(card); $event.stopPropagation()\"><i class=\"fa-solid fa-pen\"></i> Edit</button>\n <button class=\"at-source-action-btn\" (click)=\"onRunSource(card.ID); $event.stopPropagation()\"><i class=\"fa-solid fa-play\"></i> Run</button>\n <button class=\"at-source-action-btn\" (click)=\"OpenDryRunPreview(card); $event.stopPropagation()\"><i class=\"fa-solid fa-flask\"></i> Preview</button>\n @if (!card.ScheduledActionID) {\n <button class=\"at-source-action-btn at-source-schedule-btn\" (click)=\"OpenScheduleDialog(card); $event.stopPropagation()\"><i class=\"fa-regular fa-clock\"></i> Schedule</button>\n }\n <button class=\"at-source-action-btn at-source-delete-btn\" (click)=\"DeleteSource(card); $event.stopPropagation()\"><i class=\"fa-solid fa-trash\"></i> Delete</button>\n </div>\n </div>\n }\n\n <!-- Add Source Card -->\n <div class=\"at-add-source-card\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n <span style=\"font-size: 0.85rem; font-weight: 600;\">Add Content Source</span>\n <span style=\"font-size: 0.72rem;\">Web, RSS, Email, Files, API</span>\n </div>\n </div>\n </div>\n </div>\n</mj-page-body-interior>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 SOURCE DETAIL SLIDE-IN \u2550\u2550\u2550\u2550\u2550\u2550 -->\n@if (ShowSourceDetail) {\n <div class=\"at-slide-overlay\" (click)=\"CloseSourceDetail()\"></div>\n <div class=\"at-slide-panel at-detail-panel\">\n <div class=\"at-slide-header\">\n <h3><i class=\"fa-solid fa-database\"></i> Source Detail</h3>\n <button class=\"at-slide-close\" aria-label=\"Close source detail\" (click)=\"CloseSourceDetail()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n <div class=\"at-slide-body\">\n @if (SourceDetailLoading) {\n <div class=\"at-loading-overlay\">\n <mj-loading text=\"Loading source details...\"></mj-loading>\n </div>\n }\n @if (!SourceDetailLoading && SelectedSource) {\n <!-- Source Header -->\n <div class=\"at-detail-source-header\">\n <div class=\"at-source-card-icon\"><i [class]=\"SelectedSource.Icon\"></i></div>\n <div>\n <h4 class=\"at-detail-item-name\">{{ SelectedSource.Name }}</h4>\n <div class=\"at-detail-badges\">\n <span class=\"at-detail-badge at-detail-badge-type\">{{ SelectedSource.SourceTypeName }}</span>\n <span class=\"at-detail-badge\" [class]=\"'at-detail-badge-status-' + SelectedSource.StatusClass\">\n {{ SelectedSource.StatusLabel }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Configuration -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Configuration</div>\n <div class=\"at-detail-meta-grid\">\n @if (SelectedSource.URL) {\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">URL</span>\n <a [href]=\"SelectedSource.URL\" target=\"_blank\" class=\"at-detail-link at-detail-meta-value\">{{ SelectedSource.URL }}</a>\n </div>\n }\n @if (SelectedSource.RequiresFileType) {\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Content Type</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.ContentTypeName }}</span>\n </div>\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">File Type</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.FileTypeName }}</span>\n </div>\n }\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Embedding Model</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.EmbeddingModelName }}</span>\n </div>\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Vector Index</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.VectorIndexName }}</span>\n </div>\n </div>\n </div>\n\n <!-- Stats -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Statistics</div>\n <div class=\"at-detail-stats-strip\">\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ formatNumber(SelectedSource.ItemCount) }}</div>\n <div class=\"at-detail-stat-label\">Items</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ formatNumber(SelectedSource.TagCount) }}</div>\n <div class=\"at-detail-stat-label\">Tags</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ SelectedSource.AvgTags }}</div>\n <div class=\"at-detail-stat-label\">Avg Tags</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ SelectedSource.LastRunAgo }}</div>\n <div class=\"at-detail-stat-label\">Last Run</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\" [class.at-kpi-error-value]=\"SelectedSource.ErrorCount > 0\">{{ SelectedSource.ErrorCount }}</div>\n <div class=\"at-detail-stat-label\">Errors</div>\n </div>\n </div>\n </div>\n\n <!-- Content Library (status badges, pagination) -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-header-row\">\n <div class=\"at-detail-section-label\">Content Library ({{ FilteredSourceDetailTotal }} of {{ SelectedSource.ItemCount | number }})</div>\n <div class=\"at-detail-section-controls\">\n <select class=\"at-detail-filter-select\" [(ngModel)]=\"SourceDetailStatusFilter\" (ngModelChange)=\"OnSourceDetailStatusFilterChange()\">\n @for (opt of SourceDetailStatusOptions; track opt) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n <button class=\"at-action-btn at-retry-btn\" (click)=\"RetryFailedItems()\" title=\"Re-queue failed items for processing\">\n <i class=\"fa-solid fa-rotate-right\"></i> Retry Failed\n </button>\n </div>\n </div>\n <div class=\"at-detail-content-list\">\n @if (FilteredSourceDetailItems.length === 0) {\n <div class=\"at-empty-state\" style=\"padding: 16px;\">\n <p>{{ SourceDetailStatusFilter === 'All' ? 'No content items yet.' : 'No items match this filter.' }}</p>\n </div>\n }\n @for (ci of FilteredSourceDetailItems; track ci.ID) {\n <div class=\"at-detail-content-item\" (click)=\"OpenContentItemDetail(ci)\">\n <div class=\"at-feed-status-dot\" [class]=\"ci.StatusDot\"></div>\n <span class=\"at-detail-content-item-name\">{{ ci.Name }}</span>\n <span class=\"at-status-badge\" [class]=\"GetStatusBadgeClass(ci.EmbeddingStatus)\">E:{{ ci.EmbeddingStatus }}</span>\n <span class=\"at-status-badge\" [class]=\"GetStatusBadgeClass(ci.TaggingStatus)\">T:{{ ci.TaggingStatus }}</span>\n <span class=\"at-detail-content-item-tags\">{{ ci.TagCount }} tags</span>\n <span class=\"at-detail-content-item-time\">{{ ci.UpdatedAt }}</span>\n </div>\n }\n </div>\n <!-- Pagination -->\n @if (SourceDetailTotalPages > 1) {\n <div class=\"at-detail-pagination\">\n <button class=\"at-page-btn\" [disabled]=\"SourceDetailPage === 0\" (click)=\"SourceDetailPrevPage()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Prev\n </button>\n <span class=\"at-page-info\">Page {{ SourceDetailPage + 1 }} of {{ SourceDetailTotalPages }}</span>\n <button class=\"at-page-btn\" [disabled]=\"SourceDetailPage >= SourceDetailTotalPages - 1\" (click)=\"SourceDetailNextPage()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n\n <!-- Run History -->\n @if (SelectedSource.RunHistory.length > 0) {\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Recent Runs</div>\n <div class=\"at-detail-run-history\">\n @for (run of SelectedSource.RunHistory; track run.ID) {\n <div class=\"at-detail-run-row\">\n <span class=\"at-run-status-badge\" [class]=\"run.StatusClass\">{{ run.Status }}</span>\n <span class=\"at-detail-run-time\">{{ run.StartedDisplay }}</span>\n <span class=\"at-detail-run-duration\">{{ run.Duration }}</span>\n <span class=\"at-detail-run-items\">{{ run.Items }} items</span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Actions -->\n <div class=\"at-detail-actions\">\n <button class=\"at-action-btn at-primary-btn\" (click)=\"OpenEditSourceFromDetail()\">\n <i class=\"fa-solid fa-pen\"></i> Edit\n </button>\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"RunSourceFromDetail()\">\n <i class=\"fa-solid fa-play\"></i> Run Now\n </button>\n <button class=\"at-action-btn at-secondary-btn at-source-delete-btn\" (click)=\"DeleteSourceFromDetail()\">\n <i class=\"fa-solid fa-trash\"></i> Delete\n </button>\n </div>\n }\n </div>\n </div>\n}\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 SCHEDULE DIALOG \u2550\u2550\u2550\u2550\u2550\u2550 -->\n@if (ShowScheduleDialog && SchedulingSourceCard) {\n <div class=\"at-schedule-overlay\" (click)=\"CloseScheduleDialog()\">\n <div class=\"at-schedule-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"at-schedule-dialog-header\">\n <h3><i class=\"fa-regular fa-clock\"></i> Schedule Pipeline</h3>\n <button class=\"at-schedule-dialog-close\" (click)=\"CloseScheduleDialog()\" aria-label=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"at-schedule-dialog-body\">\n <div class=\"at-schedule-field\">\n <label>Source</label>\n <div class=\"at-schedule-source-name\">\n <i [class]=\"SchedulingSourceCard.Icon\"></i>\n {{ SchedulingSourceCard.Name }}\n </div>\n </div>\n <div class=\"at-schedule-field\">\n <label>Action</label>\n <div class=\"at-schedule-action-name\">Autotag and Vectorize Content</div>\n </div>\n <div class=\"at-schedule-field\">\n <label for=\"schedule-cron\">Cron Expression</label>\n <input id=\"schedule-cron\"\n type=\"text\"\n class=\"mj-input at-schedule-cron-input\"\n [(ngModel)]=\"ScheduleCron\"\n placeholder=\"0 2 * * *\" />\n <div class=\"at-schedule-cron-preview\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ GetCronPreview(ScheduleCron) }}\n </div>\n </div>\n <div class=\"at-schedule-field at-schedule-toggle-row\">\n <label for=\"schedule-enabled\">Enabled</label>\n <input id=\"schedule-enabled\"\n type=\"checkbox\"\n class=\"mj-checkbox\"\n [(ngModel)]=\"ScheduleEnabled\" />\n </div>\n </div>\n <div class=\"at-schedule-dialog-footer\">\n <button class=\"at-action-btn at-primary-btn\" (click)=\"SaveSchedule()\" [disabled]=\"ScheduleSaving\">\n @if (ScheduleSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-check\"></i> Create Schedule\n }\n </button>\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"CloseScheduleDialog()\">Cancel</button>\n </div>\n </div>\n </div>\n}\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 DRY-RUN DISPOSITION PREVIEW (in-memory, nothing persisted) \u2550\u2550\u2550\u2550\u2550\u2550 -->\n<classify-dry-run-preview\n [Provider]=\"Provider\"\n [Show]=\"ShowDryRunPreview\"\n [SourceCard]=\"DryRunSourceCard\"\n (Closed)=\"CloseDryRunPreview()\">\n</classify-dry-run-preview>\n", styles: ["/*\n * Content Sources tab styles.\n *\n * The host (AutotaggingPipelineResourceComponent) uses ViewEncapsulation.None,\n * so its `.at-*` rules are global and already style this tab's markup (cards,\n * source-detail slide-in, schedule dialog) while it renders inside the host\n * shell. Tab-specific rules would live here; none are needed during the\n * host-slim step.\n */\n\n.at-sources-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 10px;\n padding: 48px 24px;\n background: var(--mj-bg-surface-card);\n border: 1px dashed var(--mj-border-default);\n border-radius: 12px;\n}\n.at-sources-empty > i {\n font-size: 2rem;\n color: var(--mj-brand-primary);\n}\n.at-sources-empty h3 {\n margin: 0;\n font-size: 1rem;\n color: var(--mj-text-primary);\n}\n.at-sources-empty p {\n margin: 0;\n max-width: 460px;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n.at-sources-empty-actions {\n display: flex;\n gap: 8px;\n margin-top: 6px;\n}\n"] }]
1356
1435
  }], null, { Sources: [{
1357
1436
  type: Input
1358
1437
  }], Items: [{
@@ -1371,6 +1450,8 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
1371
1450
  type: Input
1372
1451
  }], AddSourceRequested: [{
1373
1452
  type: Output
1453
+ }], AddSourceGuidedRequested: [{
1454
+ type: Output
1374
1455
  }], EditSourceRequested: [{
1375
1456
  type: Output
1376
1457
  }], RunSourceRequested: [{