@memberjunction/ng-dashboards 2.121.0 → 2.122.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 (203) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +23 -11
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +122 -95
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/agents/agent-editor.component.js +88 -90
  6. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  7. package/dist/AI/components/agents/agent-filter-panel.component.js +2 -2
  8. package/dist/AI/components/execution-monitoring.component.d.ts +23 -10
  9. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  10. package/dist/AI/components/execution-monitoring.component.js +143 -124
  11. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  12. package/dist/AI/components/models/model-management-v2.component.d.ts +17 -13
  13. package/dist/AI/components/models/model-management-v2.component.d.ts.map +1 -1
  14. package/dist/AI/components/models/model-management-v2.component.js +248 -266
  15. package/dist/AI/components/models/model-management-v2.component.js.map +1 -1
  16. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +76 -78
  17. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  18. package/dist/AI/components/prompts/prompt-filter-panel.component.js +2 -2
  19. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts +17 -15
  20. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts.map +1 -1
  21. package/dist/AI/components/prompts/prompt-management-v2.component.js +372 -397
  22. package/dist/AI/components/prompts/prompt-management-v2.component.js.map +1 -1
  23. package/dist/AI/components/prompts/prompt-version-control.component.js +100 -102
  24. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  25. package/dist/AI/components/system/system-config-filter-panel.component.js +2 -2
  26. package/dist/AI/components/system/system-configuration.component.d.ts +17 -10
  27. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  28. package/dist/AI/components/system/system-configuration.component.js +82 -61
  29. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  30. package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
  31. package/dist/AI/components/widgets/kpi-card.component.js +11 -7
  32. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  33. package/dist/AI/index.d.ts +4 -0
  34. package/dist/AI/index.d.ts.map +1 -1
  35. package/dist/AI/index.js +6 -1
  36. package/dist/AI/index.js.map +1 -1
  37. package/dist/Actions/components/actions-list-view.component.js +9 -9
  38. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  39. package/dist/Actions/components/actions-overview.component.d.ts +16 -13
  40. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  41. package/dist/Actions/components/actions-overview.component.js +62 -48
  42. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  43. package/dist/Actions/components/categories-list-view.component.js +9 -9
  44. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  45. package/dist/Actions/components/code-management.component.d.ts +17 -7
  46. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  47. package/dist/Actions/components/code-management.component.js +45 -12
  48. package/dist/Actions/components/code-management.component.js.map +1 -1
  49. package/dist/Actions/components/entity-integration.component.d.ts +17 -7
  50. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  51. package/dist/Actions/components/entity-integration.component.js +45 -12
  52. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  53. package/dist/Actions/components/execution-monitoring.component.d.ts +16 -10
  54. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  55. package/dist/Actions/components/execution-monitoring.component.js +56 -30
  56. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  57. package/dist/Actions/components/scheduled-actions.component.d.ts +17 -7
  58. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  59. package/dist/Actions/components/scheduled-actions.component.js +45 -12
  60. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  61. package/dist/Actions/components/security-permissions.component.d.ts +17 -7
  62. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  63. package/dist/Actions/components/security-permissions.component.js +45 -12
  64. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  65. package/dist/Actions/index.d.ts +6 -1
  66. package/dist/Actions/index.d.ts.map +1 -1
  67. package/dist/Actions/index.js +9 -1
  68. package/dist/Actions/index.js.map +1 -1
  69. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
  70. package/dist/ComponentStudio/component-studio-dashboard.component.js +8 -8
  71. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  72. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +52 -57
  73. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  74. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +8 -9
  75. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  76. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +107 -0
  77. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -0
  78. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +553 -0
  79. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -0
  80. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts +179 -0
  81. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts.map +1 -0
  82. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js +814 -0
  83. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js.map +1 -0
  84. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +151 -0
  85. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -0
  86. package/dist/DataExplorer/components/view-selector/view-selector.component.js +480 -0
  87. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -0
  88. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +439 -0
  89. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -0
  90. package/dist/DataExplorer/data-explorer-dashboard.component.js +2129 -0
  91. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -0
  92. package/dist/DataExplorer/index.d.ts +5 -0
  93. package/dist/DataExplorer/index.d.ts.map +1 -0
  94. package/dist/DataExplorer/index.js +10 -0
  95. package/dist/DataExplorer/index.js.map +1 -0
  96. package/dist/DataExplorer/models/explorer-state.interface.d.ts +183 -0
  97. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -0
  98. package/dist/DataExplorer/models/explorer-state.interface.js +31 -0
  99. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -0
  100. package/dist/DataExplorer/services/explorer-state.service.d.ts +232 -0
  101. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -0
  102. package/dist/DataExplorer/services/explorer-state.service.js +912 -0
  103. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -0
  104. package/dist/EntityAdmin/components/entity-details.component.d.ts.map +1 -1
  105. package/dist/EntityAdmin/components/entity-details.component.js +11 -13
  106. package/dist/EntityAdmin/components/entity-details.component.js.map +1 -1
  107. package/dist/EntityAdmin/components/entity-filter-panel.component.js +2 -2
  108. package/dist/EntityAdmin/components/erd-composite.component.js +2 -2
  109. package/dist/EntityAdmin/components/erd-diagram.component.js +2 -2
  110. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +1 -1
  111. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  112. package/dist/EntityAdmin/entity-admin-dashboard.component.js +14 -15
  113. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  114. package/dist/Home/home-dashboard.component.d.ts +122 -0
  115. package/dist/Home/home-dashboard.component.d.ts.map +1 -0
  116. package/dist/Home/home-dashboard.component.js +698 -0
  117. package/dist/Home/home-dashboard.component.js.map +1 -0
  118. package/dist/Scheduling/components/index.d.ts +11 -0
  119. package/dist/Scheduling/components/index.d.ts.map +1 -0
  120. package/dist/Scheduling/components/index.js +13 -0
  121. package/dist/Scheduling/components/index.js.map +1 -0
  122. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts +20 -0
  123. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts.map +1 -0
  124. package/dist/Scheduling/components/scheduling-health-resource.component.js +55 -0
  125. package/dist/Scheduling/components/scheduling-health-resource.component.js.map +1 -0
  126. package/dist/Scheduling/components/scheduling-health.component.js +7 -8
  127. package/dist/Scheduling/components/scheduling-health.component.js.map +1 -1
  128. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts +20 -0
  129. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts.map +1 -0
  130. package/dist/Scheduling/components/scheduling-history-resource.component.js +55 -0
  131. package/dist/Scheduling/components/scheduling-history-resource.component.js.map +1 -0
  132. package/dist/Scheduling/components/scheduling-history.component.js +7 -8
  133. package/dist/Scheduling/components/scheduling-history.component.js.map +1 -1
  134. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +20 -0
  135. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -0
  136. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +55 -0
  137. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -0
  138. package/dist/Scheduling/components/scheduling-jobs.component.js +7 -8
  139. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  140. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts +20 -0
  141. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts.map +1 -0
  142. package/dist/Scheduling/components/scheduling-monitor-resource.component.js +55 -0
  143. package/dist/Scheduling/components/scheduling-monitor-resource.component.js.map +1 -0
  144. package/dist/Scheduling/components/scheduling-monitoring.component.js +7 -8
  145. package/dist/Scheduling/components/scheduling-monitoring.component.js.map +1 -1
  146. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts +20 -0
  147. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts.map +1 -0
  148. package/dist/Scheduling/components/scheduling-types-resource.component.js +55 -0
  149. package/dist/Scheduling/components/scheduling-types-resource.component.js.map +1 -0
  150. package/dist/Scheduling/components/scheduling-types.component.js +7 -8
  151. package/dist/Scheduling/components/scheduling-types.component.js.map +1 -1
  152. package/dist/Scheduling/scheduling-dashboard.component.d.ts +1 -1
  153. package/dist/Scheduling/scheduling-dashboard.component.js +3 -3
  154. package/dist/Testing/components/index.d.ts +11 -0
  155. package/dist/Testing/components/index.d.ts.map +1 -0
  156. package/dist/Testing/components/index.js +13 -0
  157. package/dist/Testing/components/index.js.map +1 -0
  158. package/dist/Testing/components/testing-analytics-resource.component.d.ts +20 -0
  159. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -0
  160. package/dist/Testing/components/testing-analytics-resource.component.js +55 -0
  161. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -0
  162. package/dist/Testing/components/testing-execution-resource.component.d.ts +20 -0
  163. package/dist/Testing/components/testing-execution-resource.component.d.ts.map +1 -0
  164. package/dist/Testing/components/testing-execution-resource.component.js +55 -0
  165. package/dist/Testing/components/testing-execution-resource.component.js.map +1 -0
  166. package/dist/Testing/components/testing-execution.component.js +3 -3
  167. package/dist/Testing/components/testing-execution.component.js.map +1 -1
  168. package/dist/Testing/components/testing-feedback-resource.component.d.ts +20 -0
  169. package/dist/Testing/components/testing-feedback-resource.component.d.ts.map +1 -0
  170. package/dist/Testing/components/testing-feedback-resource.component.js +55 -0
  171. package/dist/Testing/components/testing-feedback-resource.component.js.map +1 -0
  172. package/dist/Testing/components/testing-overview-resource.component.d.ts +20 -0
  173. package/dist/Testing/components/testing-overview-resource.component.d.ts.map +1 -0
  174. package/dist/Testing/components/testing-overview-resource.component.js +55 -0
  175. package/dist/Testing/components/testing-overview-resource.component.js.map +1 -0
  176. package/dist/Testing/components/testing-version-resource.component.d.ts +20 -0
  177. package/dist/Testing/components/testing-version-resource.component.d.ts.map +1 -0
  178. package/dist/Testing/components/testing-version-resource.component.js +55 -0
  179. package/dist/Testing/components/testing-version-resource.component.js.map +1 -0
  180. package/dist/Testing/testing-dashboard.component.d.ts +1 -1
  181. package/dist/Testing/testing-dashboard.component.js +23 -25
  182. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  183. package/dist/module.d.ts +83 -66
  184. package/dist/module.d.ts.map +1 -1
  185. package/dist/module.js +137 -19
  186. package/dist/module.js.map +1 -1
  187. package/dist/public-api.d.ts +6 -4
  188. package/dist/public-api.d.ts.map +1 -1
  189. package/dist/public-api.js +41 -13
  190. package/dist/public-api.js.map +1 -1
  191. package/package.json +17 -14
  192. package/dist/AI/ai-dashboard.component.d.ts +0 -62
  193. package/dist/AI/ai-dashboard.component.d.ts.map +0 -1
  194. package/dist/AI/ai-dashboard.component.js +0 -338
  195. package/dist/AI/ai-dashboard.component.js.map +0 -1
  196. package/dist/Actions/actions-management-dashboard.component.d.ts +0 -52
  197. package/dist/Actions/actions-management-dashboard.component.d.ts.map +0 -1
  198. package/dist/Actions/actions-management-dashboard.component.js +0 -308
  199. package/dist/Actions/actions-management-dashboard.component.js.map +0 -1
  200. package/dist/generic/base-dashboard.d.ts +0 -65
  201. package/dist/generic/base-dashboard.d.ts.map +0 -1
  202. package/dist/generic/base-dashboard.js +0 -74
  203. package/dist/generic/base-dashboard.js.map +0 -1
@@ -4,6 +4,7 @@ import { Subject, BehaviorSubject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@memberjunction/ng-notifications";
6
6
  import * as i2 from "@angular/forms";
7
+ import * as i3 from "@memberjunction/ng-shared-generic";
7
8
  const _forTrack0 = ($index, $item) => $item.ID;
8
9
  const _forTrack1 = ($index, $item) => $item.promptId + "_" + $item.modelId;
9
10
  function ModelPromptPriorityMatrixComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
@@ -90,22 +91,19 @@ function ModelPromptPriorityMatrixComponent_Conditional_32_Template(rf, ctx) { i
90
91
  i0.ɵɵtextInterpolate1(" Editing ", ctx_r1.selectedCells.size, " selected cell(s). Use Ctrl+Click for multi-select, Shift+Click for range select. ");
91
92
  } }
92
93
  function ModelPromptPriorityMatrixComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
93
- i0.ɵɵelementStart(0, "div", 22)(1, "div", 47)(2, "div", 48)(3, "span", 49);
94
- i0.ɵɵtext(4, "Loading...");
95
- i0.ɵɵelementEnd()();
96
- i0.ɵɵelementStart(5, "p", 50);
97
- i0.ɵɵtext(6);
98
- i0.ɵɵelementEnd()()();
94
+ i0.ɵɵelementStart(0, "div", 22);
95
+ i0.ɵɵelement(1, "mj-loading", 47);
96
+ i0.ɵɵelementEnd();
99
97
  } if (rf & 2) {
100
98
  const ctx_r1 = i0.ɵɵnextContext();
101
- i0.ɵɵadvance(6);
102
- i0.ɵɵtextInterpolate(ctx_r1.loadingMessage);
99
+ i0.ɵɵadvance();
100
+ i0.ɵɵproperty("text", ctx_r1.loadingMessage);
103
101
  } }
104
102
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
105
- i0.ɵɵelementStart(0, "th", 56)(1, "div", 58)(2, "div", 59);
103
+ i0.ɵɵelementStart(0, "th", 53)(1, "div", 55)(2, "div", 56);
106
104
  i0.ɵɵtext(3);
107
105
  i0.ɵɵelementEnd();
108
- i0.ɵɵelementStart(4, "div", 60)(5, "small", 46);
106
+ i0.ɵɵelementStart(4, "div", 57)(5, "small", 46);
109
107
  i0.ɵɵtext(6);
110
108
  i0.ɵɵelementEnd()()()();
111
109
  } if (rf & 2) {
@@ -118,22 +116,22 @@ function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_8_T
118
116
  i0.ɵɵtextInterpolate(ctx_r1.getModelAssociationCount(model_r5.ID));
119
117
  } }
120
118
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
121
- i0.ɵɵelementStart(0, "div", 66);
122
- i0.ɵɵelement(1, "i", 70);
119
+ i0.ɵɵelementStart(0, "div", 63);
120
+ i0.ɵɵelement(1, "i", 67);
123
121
  i0.ɵɵelementEnd();
124
122
  } }
125
123
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
126
- i0.ɵɵelementStart(0, "div", 67);
127
- i0.ɵɵelement(1, "i", 71);
124
+ i0.ɵɵelementStart(0, "div", 64);
125
+ i0.ɵɵelement(1, "i", 68);
128
126
  i0.ɵɵelementEnd();
129
127
  } }
130
128
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
131
- i0.ɵɵelementStart(0, "div", 68);
129
+ i0.ɵɵelementStart(0, "div", 65);
132
130
  i0.ɵɵelement(1, "i", 26);
133
131
  i0.ɵɵelementEnd();
134
132
  } }
135
133
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
136
- i0.ɵɵelementStart(0, "div", 69)(1, "small");
134
+ i0.ɵɵelementStart(0, "div", 66)(1, "small");
137
135
  i0.ɵɵtext(2);
138
136
  i0.ɵɵelementEnd()();
139
137
  } if (rf & 2) {
@@ -143,10 +141,10 @@ function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_
143
141
  i0.ɵɵtextInterpolate1("", ctx_r1.performanceData[assoc_r11.promptId + "_" + assoc_r11.modelId].avgResponseTime, "ms");
144
142
  } }
145
143
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵelementStart(0, "div", 64)(1, "div");
144
+ i0.ɵɵelementStart(0, "div", 61)(1, "div");
147
145
  i0.ɵɵtext(2);
148
146
  i0.ɵɵelementEnd();
149
- i0.ɵɵtemplate(3, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_3_Template, 2, 0, "div", 66)(4, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_4_Template, 2, 0, "div", 67)(5, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_5_Template, 2, 0, "div", 68)(6, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_6_Template, 3, 1, "div", 69);
147
+ i0.ɵɵtemplate(3, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_3_Template, 2, 0, "div", 63)(4, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_4_Template, 2, 0, "div", 64)(5, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_5_Template, 2, 0, "div", 65)(6, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Conditional_6_Template, 3, 1, "div", 66);
150
148
  i0.ɵɵelementEnd();
151
149
  } if (rf & 2) {
152
150
  const assoc_r11 = ctx;
@@ -163,53 +161,53 @@ function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_
163
161
  i0.ɵɵconditional(ctx_r1.showPerformanceOverlay && ctx_r1.performanceData[assoc_r11.promptId + "_" + assoc_r11.modelId] ? 6 : -1);
164
162
  } }
165
163
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
166
- i0.ɵɵelementStart(0, "div", 72);
167
- i0.ɵɵelement(1, "i", 71);
164
+ i0.ɵɵelementStart(0, "div", 69);
165
+ i0.ɵɵelement(1, "i", 68);
168
166
  i0.ɵɵelementEnd();
169
167
  } }
170
168
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵelementStart(0, "div", 73);
172
- i0.ɵɵelement(1, "i", 70);
169
+ i0.ɵɵelementStart(0, "div", 70);
170
+ i0.ɵɵelement(1, "i", 67);
173
171
  i0.ɵɵelementEnd();
174
172
  } }
175
173
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
176
- i0.ɵɵelementStart(0, "div", 65);
177
- i0.ɵɵtemplate(1, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_2_Conditional_1_Template, 2, 0, "div", 72)(2, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_2_Conditional_2_Template, 2, 0, "div", 73);
174
+ i0.ɵɵelementStart(0, "div", 62);
175
+ i0.ɵɵtemplate(1, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_2_Conditional_1_Template, 2, 0, "div", 69)(2, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_2_Conditional_2_Template, 2, 0, "div", 70);
178
176
  i0.ɵɵelementEnd();
179
177
  } if (rf & 2) {
180
- const ɵ$index_183_r9 = i0.ɵɵnextContext().$index;
181
- const ɵ$index_168_r10 = i0.ɵɵnextContext().$index;
178
+ const ɵ$index_175_r9 = i0.ɵɵnextContext().$index;
179
+ const ɵ$index_160_r10 = i0.ɵɵnextContext().$index;
182
180
  const ctx_r1 = i0.ɵɵnextContext(3);
183
181
  i0.ɵɵadvance();
184
- i0.ɵɵconditional(ctx_r1.matrix[ɵ$index_168_r10][ɵ$index_183_r9].canAssign ? 1 : 2);
182
+ i0.ɵɵconditional(ctx_r1.matrix[ɵ$index_160_r10][ɵ$index_175_r9].canAssign ? 1 : 2);
185
183
  } }
186
184
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Template(rf, ctx) { if (rf & 1) {
187
185
  const _r8 = i0.ɵɵgetCurrentView();
188
- i0.ɵɵelementStart(0, "td", 63);
189
- i0.ɵɵlistener("click", function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Template_td_click_0_listener($event) { const ɵ$index_183_r9 = i0.ɵɵrestoreView(_r8).$index; const ɵ$index_168_r10 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onCellClick(ɵ$index_168_r10, ɵ$index_183_r9, $event)); })("dblclick", function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Template_td_dblclick_0_listener() { const ɵ$index_183_r9 = i0.ɵɵrestoreView(_r8).$index; const ɵ$index_168_r10 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onCellDoubleClick(ɵ$index_168_r10, ɵ$index_183_r9)); });
190
- i0.ɵɵtemplate(1, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Template, 7, 7, "div", 64)(2, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_2_Template, 3, 1, "div", 65);
186
+ i0.ɵɵelementStart(0, "td", 60);
187
+ i0.ɵɵlistener("click", function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Template_td_click_0_listener($event) { const ɵ$index_175_r9 = i0.ɵɵrestoreView(_r8).$index; const ɵ$index_160_r10 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onCellClick(ɵ$index_160_r10, ɵ$index_175_r9, $event)); })("dblclick", function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Template_td_dblclick_0_listener() { const ɵ$index_175_r9 = i0.ɵɵrestoreView(_r8).$index; const ɵ$index_160_r10 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onCellDoubleClick(ɵ$index_160_r10, ɵ$index_175_r9)); });
188
+ i0.ɵɵtemplate(1, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_1_Template, 7, 7, "div", 61)(2, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Conditional_2_Template, 3, 1, "div", 62);
191
189
  i0.ɵɵelementEnd();
192
190
  } if (rf & 2) {
193
191
  let tmp_26_0;
194
- const ɵ$index_183_r9 = ctx.$index;
195
- const ɵ$index_168_r10 = i0.ɵɵnextContext().$index;
192
+ const ɵ$index_175_r9 = ctx.$index;
193
+ const ɵ$index_160_r10 = i0.ɵɵnextContext().$index;
196
194
  const ctx_r1 = i0.ɵɵnextContext(3);
197
- i0.ɵɵclassMap(ctx_r1.getCellClass(ctx_r1.matrix[ɵ$index_168_r10][ɵ$index_183_r9]));
198
- i0.ɵɵproperty("title", ctx_r1.getCellTooltip(ctx_r1.matrix[ɵ$index_168_r10][ɵ$index_183_r9]));
195
+ i0.ɵɵclassMap(ctx_r1.getCellClass(ctx_r1.matrix[ɵ$index_160_r10][ɵ$index_175_r9]));
196
+ i0.ɵɵproperty("title", ctx_r1.getCellTooltip(ctx_r1.matrix[ɵ$index_160_r10][ɵ$index_175_r9]));
199
197
  i0.ɵɵadvance();
200
- i0.ɵɵconditional((tmp_26_0 = ctx_r1.matrix[ɵ$index_168_r10][ɵ$index_183_r9].association) ? 1 : 2, tmp_26_0);
198
+ i0.ɵɵconditional((tmp_26_0 = ctx_r1.matrix[ɵ$index_160_r10][ɵ$index_175_r9].association) ? 1 : 2, tmp_26_0);
201
199
  } }
202
200
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_Template(rf, ctx) { if (rf & 1) {
203
201
  const _r6 = i0.ɵɵgetCurrentView();
204
- i0.ɵɵelementStart(0, "tr", 57)(1, "th", 61);
202
+ i0.ɵɵelementStart(0, "tr", 54)(1, "th", 58);
205
203
  i0.ɵɵlistener("click", function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_Template_th_click_1_listener() { const prompt_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectPrompt(prompt_r7)); });
206
- i0.ɵɵelementStart(2, "div", 58)(3, "div", 59);
204
+ i0.ɵɵelementStart(2, "div", 55)(3, "div", 56);
207
205
  i0.ɵɵtext(4);
208
206
  i0.ɵɵelementEnd();
209
- i0.ɵɵelementStart(5, "div", 60)(6, "small", 46);
207
+ i0.ɵɵelementStart(5, "div", 57)(6, "small", 46);
210
208
  i0.ɵɵtext(7);
211
209
  i0.ɵɵelementEnd()()()();
212
- i0.ɵɵrepeaterCreate(8, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Template, 3, 4, "td", 62, _forTrack0);
210
+ i0.ɵɵrepeaterCreate(8, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_For_9_Template, 3, 4, "td", 59, _forTrack0);
213
211
  i0.ɵɵelementEnd();
214
212
  } if (rf & 2) {
215
213
  const prompt_r7 = ctx.$implicit;
@@ -224,13 +222,13 @@ function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_
224
222
  i0.ɵɵrepeater(ctx_r1.models);
225
223
  } }
226
224
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "div", 51)(1, "div", 53)(2, "table", 54)(3, "thead")(4, "tr")(5, "th", 55);
225
+ i0.ɵɵelementStart(0, "div", 48)(1, "div", 50)(2, "table", 51)(3, "thead")(4, "tr")(5, "th", 52);
228
226
  i0.ɵɵtext(6, "Prompts \\\\ Models");
229
227
  i0.ɵɵelementEnd();
230
- i0.ɵɵrepeaterCreate(7, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_8_Template, 7, 3, "th", 56, _forTrack0);
228
+ i0.ɵɵrepeaterCreate(7, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_8_Template, 7, 3, "th", 53, _forTrack0);
231
229
  i0.ɵɵelementEnd()();
232
230
  i0.ɵɵelementStart(9, "tbody");
233
- i0.ɵɵrepeaterCreate(10, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_Template, 10, 3, "tr", 57, _forTrack0);
231
+ i0.ɵɵrepeaterCreate(10, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_For_11_Template, 10, 3, "tr", 54, _forTrack0);
234
232
  i0.ɵɵelementEnd()()()();
235
233
  } if (rf & 2) {
236
234
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -241,50 +239,50 @@ function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_Templat
241
239
  } }
242
240
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
243
241
  const _r13 = i0.ɵɵgetCurrentView();
244
- i0.ɵɵelementStart(0, "button", 102);
242
+ i0.ɵɵelementStart(0, "button", 99);
245
243
  i0.ɵɵelement(1, "i", 26);
246
244
  i0.ɵɵelementEnd();
247
- i0.ɵɵelementStart(2, "button", 103);
245
+ i0.ɵɵelementStart(2, "button", 100);
248
246
  i0.ɵɵlistener("click", function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Conditional_9_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r13); const association_r14 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeAssociation(association_r14.promptId, association_r14.modelId)); });
249
247
  i0.ɵɵelement(3, "i", 28);
250
248
  i0.ɵɵelementEnd();
251
249
  } }
252
250
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Conditional_21_Template(rf, ctx) { if (rf & 1) {
253
- i0.ɵɵelementStart(0, "div", 99)(1, "span", 104);
254
- i0.ɵɵelement(2, "i", 71);
251
+ i0.ɵɵelementStart(0, "div", 96)(1, "span", 101);
252
+ i0.ɵɵelement(2, "i", 68);
255
253
  i0.ɵɵtext(3, " New ");
256
254
  i0.ɵɵelementEnd()();
257
255
  } }
258
256
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
259
- i0.ɵɵelementStart(0, "div", 99)(1, "span", 105);
257
+ i0.ɵɵelementStart(0, "div", 96)(1, "span", 102);
260
258
  i0.ɵɵelement(2, "i", 26);
261
259
  i0.ɵɵtext(3, " Modified ");
262
260
  i0.ɵɵelementEnd()();
263
261
  } }
264
262
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Template(rf, ctx) { if (rf & 1) {
265
- i0.ɵɵelementStart(0, "div", 91)(1, "div", 92)(2, "div", 93)(3, "strong", 94);
263
+ i0.ɵɵelementStart(0, "div", 88)(1, "div", 89)(2, "div", 90)(3, "strong", 91);
266
264
  i0.ɵɵtext(4);
267
265
  i0.ɵɵelementEnd();
268
- i0.ɵɵelement(5, "i", 95);
269
- i0.ɵɵelementStart(6, "strong", 96);
266
+ i0.ɵɵelement(5, "i", 92);
267
+ i0.ɵɵelementStart(6, "strong", 93);
270
268
  i0.ɵɵtext(7);
271
269
  i0.ɵɵelementEnd()();
272
- i0.ɵɵelementStart(8, "div", 97);
270
+ i0.ɵɵelementStart(8, "div", 94);
273
271
  i0.ɵɵtemplate(9, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Conditional_9_Template, 4, 0);
274
272
  i0.ɵɵelementEnd()();
275
- i0.ɵɵelementStart(10, "div", 98)(11, "div", 99)(12, "span", 100);
273
+ i0.ɵɵelementStart(10, "div", 95)(11, "div", 96)(12, "span", 97);
276
274
  i0.ɵɵtext(13, "Priority:");
277
275
  i0.ɵɵelementEnd();
278
276
  i0.ɵɵelementStart(14, "span");
279
277
  i0.ɵɵtext(15);
280
278
  i0.ɵɵelementEnd()();
281
- i0.ɵɵelementStart(16, "div", 99)(17, "span", 100);
279
+ i0.ɵɵelementStart(16, "div", 96)(17, "span", 97);
282
280
  i0.ɵɵtext(18, "Status:");
283
281
  i0.ɵɵelementEnd();
284
- i0.ɵɵelementStart(19, "span", 101);
282
+ i0.ɵɵelementStart(19, "span", 98);
285
283
  i0.ɵɵtext(20);
286
284
  i0.ɵɵelementEnd()();
287
- i0.ɵɵtemplate(21, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Conditional_21_Template, 4, 0, "div", 99)(22, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Conditional_22_Template, 4, 0, "div", 99);
285
+ i0.ɵɵtemplate(21, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Conditional_21_Template, 4, 0, "div", 96)(22, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Conditional_22_Template, 4, 0, "div", 96);
288
286
  i0.ɵɵelementEnd()();
289
287
  } if (rf & 2) {
290
288
  const association_r14 = i0.ɵɵnextContext().$implicit;
@@ -308,49 +306,49 @@ function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_
308
306
  i0.ɵɵconditional(association_r14.isNew ? 21 : association_r14.isModified ? 22 : -1);
309
307
  } }
310
308
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Template(rf, ctx) { if (rf & 1) {
311
- i0.ɵɵtemplate(0, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Template, 23, 19, "div", 90);
309
+ i0.ɵɵtemplate(0, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Conditional_0_Template, 23, 19, "div", 87);
312
310
  } if (rf & 2) {
313
311
  const association_r14 = ctx.$implicit;
314
312
  const ctx_r1 = i0.ɵɵnextContext(3);
315
313
  i0.ɵɵconditional(ctx_r1.showInactiveAssociations || association_r14.status === "Active" ? 0 : -1);
316
314
  } }
317
315
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
318
- i0.ɵɵelementStart(0, "div", 89);
319
- i0.ɵɵelement(1, "i", 106);
320
- i0.ɵɵelementStart(2, "p", 107);
316
+ i0.ɵɵelementStart(0, "div", 86);
317
+ i0.ɵɵelement(1, "i", 103);
318
+ i0.ɵɵelementStart(2, "p", 104);
321
319
  i0.ɵɵtext(3, "No prompt-model associations found. Click on matrix cells to create associations.");
322
320
  i0.ɵɵelementEnd()();
323
321
  } }
324
322
  function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Template(rf, ctx) { if (rf & 1) {
325
323
  const _r12 = i0.ɵɵgetCurrentView();
326
- i0.ɵɵelementStart(0, "div", 52)(1, "div", 74)(2, "div", 75)(3, "div", 76)(4, "label", 77);
324
+ i0.ɵɵelementStart(0, "div", 49)(1, "div", 71)(2, "div", 72)(3, "div", 73)(4, "label", 74);
327
325
  i0.ɵɵtext(5, "Sort by:");
328
326
  i0.ɵɵelementEnd();
329
- i0.ɵɵelementStart(6, "select", 78);
327
+ i0.ɵɵelementStart(6, "select", 75);
330
328
  i0.ɵɵtwoWayListener("ngModelChange", function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Template_select_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.sortBy, $event) || (ctx_r1.sortBy = $event); return i0.ɵɵresetView($event); });
331
329
  i0.ɵɵlistener("ngModelChange", function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Template_select_ngModelChange_6_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.sortAssociations()); });
332
- i0.ɵɵelementStart(7, "option", 79);
330
+ i0.ɵɵelementStart(7, "option", 76);
333
331
  i0.ɵɵtext(8, "Prompt Name");
334
332
  i0.ɵɵelementEnd();
335
- i0.ɵɵelementStart(9, "option", 80);
333
+ i0.ɵɵelementStart(9, "option", 77);
336
334
  i0.ɵɵtext(10, "Model Name");
337
335
  i0.ɵɵelementEnd();
338
- i0.ɵɵelementStart(11, "option", 81);
336
+ i0.ɵɵelementStart(11, "option", 78);
339
337
  i0.ɵɵtext(12, "Priority");
340
338
  i0.ɵɵelementEnd()();
341
- i0.ɵɵelementStart(13, "button", 82);
339
+ i0.ɵɵelementStart(13, "button", 79);
342
340
  i0.ɵɵlistener("click", function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleSortDirection()); });
343
- i0.ɵɵelement(14, "i", 83);
341
+ i0.ɵɵelement(14, "i", 80);
344
342
  i0.ɵɵelementEnd()();
345
- i0.ɵɵelementStart(15, "div", 84)(16, "div", 85)(17, "input", 86);
343
+ i0.ɵɵelementStart(15, "div", 81)(16, "div", 82)(17, "input", 83);
346
344
  i0.ɵɵtwoWayListener("ngModelChange", function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Template_input_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.showInactiveAssociations, $event) || (ctx_r1.showInactiveAssociations = $event); return i0.ɵɵresetView($event); });
347
345
  i0.ɵɵelementEnd();
348
- i0.ɵɵelementStart(18, "label", 87);
346
+ i0.ɵɵelementStart(18, "label", 84);
349
347
  i0.ɵɵtext(19, " Show inactive ");
350
348
  i0.ɵɵelementEnd()()()()();
351
- i0.ɵɵelementStart(20, "div", 88);
349
+ i0.ɵɵelementStart(20, "div", 85);
352
350
  i0.ɵɵrepeaterCreate(21, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_For_22_Template, 1, 1, null, null, _forTrack1);
353
- i0.ɵɵtemplate(23, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Conditional_23_Template, 4, 0, "div", 89);
351
+ i0.ɵɵtemplate(23, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Conditional_23_Template, 4, 0, "div", 86);
354
352
  i0.ɵɵelementEnd()();
355
353
  } if (rf & 2) {
356
354
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -368,7 +366,7 @@ function ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Templat
368
366
  i0.ɵɵconditional(ctx_r1.associations.length === 0 ? 23 : -1);
369
367
  } }
370
368
  function ModelPromptPriorityMatrixComponent_Conditional_34_Template(rf, ctx) { if (rf & 1) {
371
- i0.ɵɵtemplate(0, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_Template, 12, 0, "div", 51)(1, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Template, 24, 8, "div", 52);
369
+ i0.ɵɵtemplate(0, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_0_Template, 12, 0, "div", 48)(1, ModelPromptPriorityMatrixComponent_Conditional_34_Conditional_1_Template, 24, 8, "div", 49);
372
370
  } if (rf & 2) {
373
371
  const ctx_r1 = i0.ɵɵnextContext();
374
372
  i0.ɵɵconditional(ctx_r1.viewMode === "matrix" ? 0 : -1);
@@ -377,12 +375,12 @@ function ModelPromptPriorityMatrixComponent_Conditional_34_Template(rf, ctx) { i
377
375
  } }
378
376
  function ModelPromptPriorityMatrixComponent_Conditional_35_Template(rf, ctx) { if (rf & 1) {
379
377
  const _r15 = i0.ɵɵgetCurrentView();
380
- i0.ɵɵelementStart(0, "div", 23)(1, "div", 108);
378
+ i0.ɵɵelementStart(0, "div", 23)(1, "div", 105);
381
379
  i0.ɵɵelement(2, "i", 24);
382
380
  i0.ɵɵtext(3);
383
- i0.ɵɵelementStart(4, "button", 109);
381
+ i0.ɵɵelementStart(4, "button", 106);
384
382
  i0.ɵɵlistener("click", function ModelPromptPriorityMatrixComponent_Conditional_35_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.loadData()); });
385
- i0.ɵɵelement(5, "i", 110);
383
+ i0.ɵɵelement(5, "i", 107);
386
384
  i0.ɵɵtext(6, " Retry ");
387
385
  i0.ɵɵelementEnd()()();
388
386
  } if (rf & 2) {
@@ -851,7 +849,7 @@ export class ModelPromptPriorityMatrixComponent {
851
849
  this.promptSelected.emit(prompt);
852
850
  }
853
851
  static ɵfac = function ModelPromptPriorityMatrixComponent_Factory(t) { return new (t || ModelPromptPriorityMatrixComponent)(i0.ɵɵdirectiveInject(i1.MJNotificationService)); };
854
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ModelPromptPriorityMatrixComponent, selectors: [["app-model-prompt-priority-matrix"]], inputs: { selectedPrompts: "selectedPrompts", selectedModels: "selectedModels", readonly: "readonly" }, outputs: { associationsChange: "associationsChange", stateChange: "stateChange", promptSelected: "promptSelected" }, decls: 36, vars: 10, consts: [[1, "model-prompt-priority-matrix"], [1, "matrix-toolbar"], [1, "toolbar-section"], [1, "toolbar-title"], [1, "fa-solid", "fa-table-cells"], [1, "view-mode-toggle"], ["role", "group", 1, "btn-group"], ["type", "radio", "name", "viewMode", "id", "matrixView", "value", "matrix", 1, "btn-check", 3, "ngModelChange", "ngModel"], ["for", "matrixView", 1, "btn", "btn-outline-primary", "btn-sm"], ["type", "radio", "name", "viewMode", "id", "listView", "value", "list", 1, "btn-check", 3, "ngModelChange", "ngModel"], ["for", "listView", 1, "btn", "btn-outline-primary", "btn-sm"], [1, "fa-solid", "fa-list"], [1, "matrix-stats"], [1, "stat-item"], [1, "fa-solid", "fa-link", "text-primary"], [1, "fa-solid", "fa-star", "text-warning"], [1, "stat-item", "text-warning"], [1, "bulk-actions"], [1, "action-buttons"], ["type", "button", "title", "Export matrix", 1, "btn", "btn-sm", "btn-outline-info", 3, "click"], [1, "fa-solid", "fa-download"], [1, "bulk-edit-panel"], [1, "loading-container"], [1, "error-container"], [1, "fa-solid", "fa-exclamation-triangle"], ["type", "button", "title", "Bulk edit selected cells", 1, "btn", "btn-sm", "btn-outline-primary", 3, "click"], [1, "fa-solid", "fa-edit"], ["type", "button", "title", "Remove selected associations", 1, "btn", "btn-sm", "btn-outline-danger", 3, "click"], [1, "fa-solid", "fa-trash"], ["type", "button", "title", "Discard changes", 1, "btn", "btn-sm", "btn-outline-secondary", 3, "click"], [1, "fa-solid", "fa-undo"], ["type", "button", "title", "Save changes", 1, "btn", "btn-sm", "btn-success", 3, "click", "disabled"], [1, "fa-solid", "fa-save"], [1, "bulk-edit-controls"], [1, "form-group"], ["for", "bulkPriority", 1, "form-label"], ["type", "number", "id", "bulkPriority", "min", "1", "max", "10", 1, "form-control", "form-control-sm", 3, "ngModelChange", "ngModel"], ["for", "bulkStatus", 1, "form-label"], ["id", "bulkStatus", 1, "form-select", "form-select-sm", 3, "ngModelChange", "ngModel"], ["value", "Active"], ["value", "Inactive"], ["type", "button", "title", "Apply changes to selected cells", 1, "btn", "btn-sm", "btn-primary", 3, "click"], [1, "fa-solid", "fa-check"], ["type", "button", "title", "Cancel bulk edit", 1, "btn", "btn-sm", "btn-outline-secondary", 3, "click"], [1, "fa-solid", "fa-times"], [1, "bulk-edit-info"], [1, "text-muted"], [1, "loading-content"], ["role", "status", 1, "spinner-border", "text-primary"], [1, "visually-hidden"], [1, "loading-message"], [1, "matrix-container"], [1, "list-container"], [1, "matrix-scroll"], [1, "matrix-table"], [1, "prompt-header"], [1, "model-header", 3, "title"], [1, "matrix-row"], [1, "header-content"], [1, "header-name"], [1, "header-stats"], [1, "prompt-header", 3, "click", "title"], [3, "class", "title"], [3, "click", "dblclick", "title"], [1, "cell-content"], [1, "cell-content", "empty"], [1, "status-indicator", "inactive"], [1, "change-indicator", "new"], [1, "change-indicator", "modified"], [1, "performance-overlay"], [1, "fa-solid", "fa-ban"], [1, "fa-solid", "fa-plus"], [1, "empty-cell-indicator"], [1, "blocked-cell-indicator"], [1, "list-header"], [1, "list-controls"], [1, "sort-controls"], [1, "form-label"], [1, "form-select", "form-select-sm", 3, "ngModelChange", "ngModel"], ["value", "prompt"], ["value", "model"], ["value", "priority"], ["type", "button", 1, "btn", "btn-sm", "btn-outline-secondary", 3, "click", "title"], [1, "fa-solid"], [1, "filter-controls"], [1, "form-check", "form-switch"], ["type", "checkbox", "id", "showInactive", 1, "form-check-input", 3, "ngModelChange", "ngModel"], ["for", "showInactive", 1, "form-check-label"], [1, "associations-list"], [1, "no-associations-message"], [1, "association-item", 3, "inactive", "new", "modified"], [1, "association-item"], [1, "association-header"], [1, "association-names"], [1, "prompt-name"], [1, "fa-solid", "fa-arrow-right", "text-muted"], [1, "model-name"], [1, "association-actions"], [1, "association-details"], [1, "detail-item"], [1, "detail-label"], [1, "status-badge"], ["type", "button", "title", "Edit association", 1, "btn", "btn-sm", "btn-outline-primary"], ["type", "button", "title", "Remove association", 1, "btn", "btn-sm", "btn-outline-danger", 3, "click"], [1, "change-badge", "new"], [1, "change-badge", "modified"], [1, "fa-solid", "fa-info-circle", "text-muted"], [1, "text-muted", "mb-0"], ["role", "alert", 1, "alert", "alert-danger"], ["type", "button", 1, "btn", "btn-sm", "btn-outline-danger", "ms-2", 3, "click"], [1, "fa-solid", "fa-refresh"]], template: function ModelPromptPriorityMatrixComponent_Template(rf, ctx) { if (rf & 1) {
852
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ModelPromptPriorityMatrixComponent, selectors: [["app-model-prompt-priority-matrix"]], inputs: { selectedPrompts: "selectedPrompts", selectedModels: "selectedModels", readonly: "readonly" }, outputs: { associationsChange: "associationsChange", stateChange: "stateChange", promptSelected: "promptSelected" }, decls: 36, vars: 10, consts: [[1, "model-prompt-priority-matrix"], [1, "matrix-toolbar"], [1, "toolbar-section"], [1, "toolbar-title"], [1, "fa-solid", "fa-table-cells"], [1, "view-mode-toggle"], ["role", "group", 1, "btn-group"], ["type", "radio", "name", "viewMode", "id", "matrixView", "value", "matrix", 1, "btn-check", 3, "ngModelChange", "ngModel"], ["for", "matrixView", 1, "btn", "btn-outline-primary", "btn-sm"], ["type", "radio", "name", "viewMode", "id", "listView", "value", "list", 1, "btn-check", 3, "ngModelChange", "ngModel"], ["for", "listView", 1, "btn", "btn-outline-primary", "btn-sm"], [1, "fa-solid", "fa-list"], [1, "matrix-stats"], [1, "stat-item"], [1, "fa-solid", "fa-link", "text-primary"], [1, "fa-solid", "fa-star", "text-warning"], [1, "stat-item", "text-warning"], [1, "bulk-actions"], [1, "action-buttons"], ["type", "button", "title", "Export matrix", 1, "btn", "btn-sm", "btn-outline-info", 3, "click"], [1, "fa-solid", "fa-download"], [1, "bulk-edit-panel"], [1, "loading-container"], [1, "error-container"], [1, "fa-solid", "fa-exclamation-triangle"], ["type", "button", "title", "Bulk edit selected cells", 1, "btn", "btn-sm", "btn-outline-primary", 3, "click"], [1, "fa-solid", "fa-edit"], ["type", "button", "title", "Remove selected associations", 1, "btn", "btn-sm", "btn-outline-danger", 3, "click"], [1, "fa-solid", "fa-trash"], ["type", "button", "title", "Discard changes", 1, "btn", "btn-sm", "btn-outline-secondary", 3, "click"], [1, "fa-solid", "fa-undo"], ["type", "button", "title", "Save changes", 1, "btn", "btn-sm", "btn-success", 3, "click", "disabled"], [1, "fa-solid", "fa-save"], [1, "bulk-edit-controls"], [1, "form-group"], ["for", "bulkPriority", 1, "form-label"], ["type", "number", "id", "bulkPriority", "min", "1", "max", "10", 1, "form-control", "form-control-sm", 3, "ngModelChange", "ngModel"], ["for", "bulkStatus", 1, "form-label"], ["id", "bulkStatus", 1, "form-select", "form-select-sm", 3, "ngModelChange", "ngModel"], ["value", "Active"], ["value", "Inactive"], ["type", "button", "title", "Apply changes to selected cells", 1, "btn", "btn-sm", "btn-primary", 3, "click"], [1, "fa-solid", "fa-check"], ["type", "button", "title", "Cancel bulk edit", 1, "btn", "btn-sm", "btn-outline-secondary", 3, "click"], [1, "fa-solid", "fa-times"], [1, "bulk-edit-info"], [1, "text-muted"], ["size", "large", 3, "text"], [1, "matrix-container"], [1, "list-container"], [1, "matrix-scroll"], [1, "matrix-table"], [1, "prompt-header"], [1, "model-header", 3, "title"], [1, "matrix-row"], [1, "header-content"], [1, "header-name"], [1, "header-stats"], [1, "prompt-header", 3, "click", "title"], [3, "class", "title"], [3, "click", "dblclick", "title"], [1, "cell-content"], [1, "cell-content", "empty"], [1, "status-indicator", "inactive"], [1, "change-indicator", "new"], [1, "change-indicator", "modified"], [1, "performance-overlay"], [1, "fa-solid", "fa-ban"], [1, "fa-solid", "fa-plus"], [1, "empty-cell-indicator"], [1, "blocked-cell-indicator"], [1, "list-header"], [1, "list-controls"], [1, "sort-controls"], [1, "form-label"], [1, "form-select", "form-select-sm", 3, "ngModelChange", "ngModel"], ["value", "prompt"], ["value", "model"], ["value", "priority"], ["type", "button", 1, "btn", "btn-sm", "btn-outline-secondary", 3, "click", "title"], [1, "fa-solid"], [1, "filter-controls"], [1, "form-check", "form-switch"], ["type", "checkbox", "id", "showInactive", 1, "form-check-input", 3, "ngModelChange", "ngModel"], ["for", "showInactive", 1, "form-check-label"], [1, "associations-list"], [1, "no-associations-message"], [1, "association-item", 3, "inactive", "new", "modified"], [1, "association-item"], [1, "association-header"], [1, "association-names"], [1, "prompt-name"], [1, "fa-solid", "fa-arrow-right", "text-muted"], [1, "model-name"], [1, "association-actions"], [1, "association-details"], [1, "detail-item"], [1, "detail-label"], [1, "status-badge"], ["type", "button", "title", "Edit association", 1, "btn", "btn-sm", "btn-outline-primary"], ["type", "button", "title", "Remove association", 1, "btn", "btn-sm", "btn-outline-danger", 3, "click"], [1, "change-badge", "new"], [1, "change-badge", "modified"], [1, "fa-solid", "fa-info-circle", "text-muted"], [1, "text-muted", "mb-0"], ["role", "alert", 1, "alert", "alert-danger"], ["type", "button", 1, "btn", "btn-sm", "btn-outline-danger", "ms-2", 3, "click"], [1, "fa-solid", "fa-refresh"]], template: function ModelPromptPriorityMatrixComponent_Template(rf, ctx) { if (rf & 1) {
855
853
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h5", 3);
856
854
  i0.ɵɵelement(4, "i", 4);
857
855
  i0.ɵɵtext(5, " Model-Prompt Priority Matrix ");
@@ -891,7 +889,7 @@ export class ModelPromptPriorityMatrixComponent {
891
889
  i0.ɵɵelement(30, "i", 20);
892
890
  i0.ɵɵtext(31, " Export ");
893
891
  i0.ɵɵelementEnd()()()();
894
- i0.ɵɵtemplate(32, ModelPromptPriorityMatrixComponent_Conditional_32_Template, 24, 3, "div", 21)(33, ModelPromptPriorityMatrixComponent_Conditional_33_Template, 7, 1, "div", 22)(34, ModelPromptPriorityMatrixComponent_Conditional_34_Template, 2, 2)(35, ModelPromptPriorityMatrixComponent_Conditional_35_Template, 7, 1, "div", 23);
892
+ i0.ɵɵtemplate(32, ModelPromptPriorityMatrixComponent_Conditional_32_Template, 24, 3, "div", 21)(33, ModelPromptPriorityMatrixComponent_Conditional_33_Template, 2, 1, "div", 22)(34, ModelPromptPriorityMatrixComponent_Conditional_34_Template, 2, 2)(35, ModelPromptPriorityMatrixComponent_Conditional_35_Template, 7, 1, "div", 23);
895
893
  i0.ɵɵelementEnd();
896
894
  } if (rf & 2) {
897
895
  i0.ɵɵadvance(8);
@@ -914,11 +912,11 @@ export class ModelPromptPriorityMatrixComponent {
914
912
  i0.ɵɵconditional(ctx.isLoading ? 33 : 34);
915
913
  i0.ɵɵadvance(2);
916
914
  i0.ɵɵconditional(ctx.error ? 35 : -1);
917
- } }, dependencies: [i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.RadioControlValueAccessor, i2.NgControlStatus, i2.MinValidator, i2.MaxValidator, i2.NgModel], styles: [".model-prompt-priority-matrix[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n\n .matrix-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: white;\n border-bottom: 1px solid #dee2e6;\n flex-shrink: 0;\n gap: 1rem;\n flex-wrap: wrap;\n\n .toolbar-section {\n display: flex;\n align-items: center;\n gap: 1rem;\n\n .toolbar-title {\n margin: 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n\n i {\n color: #0d6efd;\n }\n }\n\n .matrix-stats {\n display: flex;\n gap: 1rem;\n\n .stat-item {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n font-size: 0.875rem;\n color: #6c757d;\n\n i {\n font-size: 1rem;\n }\n }\n }\n\n .bulk-actions,\n .action-buttons {\n display: flex;\n gap: 0.5rem;\n\n .btn {\n font-size: 0.875rem;\n }\n }\n }\n }\n\n .bulk-edit-panel {\n padding: 1rem;\n background: #fff3cd;\n border-bottom: 1px solid #ffeaa7;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n\n .bulk-edit-controls {\n display: flex;\n align-items: center;\n gap: 1rem;\n\n .form-group {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n .form-label {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n }\n\n .form-control,\n .form-select {\n min-width: 100px;\n }\n }\n }\n\n .bulk-edit-info {\n font-size: 0.875rem;\n color: #856404;\n }\n }\n\n .loading-container {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n\n .loading-content {\n text-align: center;\n \n .loading-message {\n margin-top: 1rem;\n color: #6c757d;\n }\n }\n }\n\n .matrix-container {\n flex: 1;\n overflow: hidden;\n\n .matrix-scroll {\n height: 100%;\n overflow: auto;\n padding: 1rem;\n\n .matrix-table {\n border-collapse: separate;\n border-spacing: 2px;\n background: white;\n border-radius: 0.5rem;\n overflow: hidden;\n\n .prompt-header,\n .model-header {\n background: #f8f9fa;\n border: 1px solid #dee2e6;\n padding: 0.75rem;\n font-weight: 600;\n text-align: center;\n position: sticky;\n top: 0;\n z-index: 10;\n\n .header-content {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n\n .header-name {\n font-size: 0.875rem;\n font-weight: 600;\n }\n\n .header-stats {\n font-size: 0.75rem;\n color: #6c757d;\n }\n }\n }\n\n .prompt-header {\n min-width: 200px;\n position: sticky;\n left: 0;\n z-index: 11;\n }\n\n .matrix-cell {\n width: 80px;\n height: 60px;\n border: 2px solid #e9ecef;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n position: relative;\n\n &:hover {\n border-color: #007bff;\n transform: scale(1.05);\n }\n\n &.selected {\n border-color: #007bff;\n background: rgba(0, 123, 255, 0.1);\n }\n\n &.editing {\n border-color: #28a745;\n background: rgba(40, 167, 69, 0.1);\n }\n\n &.no-association {\n background: #f8f9fa;\n border-style: dashed;\n\n .empty-cell-indicator {\n color: #6c757d;\n font-size: 1.5rem;\n opacity: 0.5;\n }\n }\n\n &.cannot-assign {\n background: #f5f5f5;\n cursor: not-allowed;\n opacity: 0.5;\n\n .blocked-cell-indicator {\n color: #dc3545;\n font-size: 1.25rem;\n }\n }\n\n &.has-association {\n background: white;\n\n &.priority-1 { border-color: #28a745; }\n &.priority-2 { border-color: #20c997; }\n &.priority-3 { border-color: #ffc107; }\n &.priority-4 { border-color: #fd7e14; }\n &.priority-5 { border-color: #dc3545; }\n\n &.inactive {\n opacity: 0.6;\n background: #f8f9fa;\n }\n\n &.new {\n box-shadow: 0 0 0 2px #28a745;\n }\n\n &.modified {\n box-shadow: 0 0 0 2px #ffc107;\n }\n }\n\n .cell-content {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n gap: 0.25rem;\n\n .priority-badge {\n background: #007bff;\n color: white;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.75rem;\n font-weight: 600;\n\n &.priority-1 { background: #28a745; }\n &.priority-2 { background: #20c997; }\n &.priority-3 { background: #ffc107; color: #212529; }\n &.priority-4 { background: #fd7e14; }\n &.priority-5 { background: #dc3545; }\n }\n\n .status-indicator {\n font-size: 0.75rem;\n\n &.inactive {\n color: #dc3545;\n }\n }\n\n .change-indicator {\n position: absolute;\n top: 2px;\n right: 2px;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n font-size: 0.625rem;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &.new {\n background: #28a745;\n color: white;\n }\n\n &.modified {\n background: #ffc107;\n color: #212529;\n }\n }\n\n .performance-overlay {\n position: absolute;\n bottom: 2px;\n left: 2px;\n right: 2px;\n background: rgba(0, 0, 0, 0.8);\n color: white;\n border-radius: 0.25rem;\n padding: 0.125rem;\n font-size: 0.625rem;\n }\n }\n }\n }\n }\n }\n\n .list-container {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n\n .list-header {\n margin-bottom: 1.5rem;\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 0.5rem;\n padding: 1rem;\n\n .list-controls {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n\n .sort-controls,\n .filter-controls {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n .form-label {\n margin: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n }\n\n .form-select {\n min-width: 120px;\n }\n\n .form-check {\n margin: 0;\n }\n }\n }\n }\n\n .associations-list {\n .association-item {\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 0.5rem;\n padding: 1rem;\n margin-bottom: 1rem;\n transition: all 0.2s ease;\n\n &:hover {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n transform: translateY(-1px);\n }\n\n &.inactive {\n opacity: 0.7;\n background: #f8f9fa;\n }\n\n &.new {\n border-color: #28a745;\n border-left-width: 4px;\n }\n\n &.modified {\n border-color: #ffc107;\n border-left-width: 4px;\n }\n\n .association-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 0.75rem;\n\n .association-names {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n\n .prompt-name,\n .model-name {\n color: #495057;\n font-weight: 500;\n }\n\n i {\n color: #6c757d;\n }\n }\n\n .association-actions {\n display: flex;\n gap: 0.5rem;\n\n .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n }\n }\n }\n\n .association-details {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .detail-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n .detail-label {\n font-size: 0.875rem;\n color: #6c757d;\n }\n\n .priority-badge {\n background: #007bff;\n color: white;\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 600;\n\n &.priority-1 { background: #28a745; }\n &.priority-2 { background: #20c997; }\n &.priority-3 { background: #ffc107; color: #212529; }\n &.priority-4 { background: #fd7e14; }\n &.priority-5 { background: #dc3545; }\n }\n\n .status-badge {\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 500;\n\n &.badge-success {\n background: #d4edda;\n color: #155724;\n }\n\n &.badge-secondary {\n background: #e2e3e5;\n color: #383d41;\n }\n }\n\n .change-badge {\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n\n &.new {\n background: #d4edda;\n color: #155724;\n }\n\n &.modified {\n background: #fff3cd;\n color: #856404;\n }\n }\n }\n }\n }\n\n .no-associations-message {\n text-align: center;\n padding: 3rem 1rem;\n color: #6c757d;\n\n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n display: block;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: 1rem;\n line-height: 1.5;\n }\n }\n }\n }\n\n .error-container {\n padding: 1rem;\n\n .alert {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n }\n}\n\n//[_ngcontent-%COMP%] Responsive[_ngcontent-%COMP%] adjustments\n@media[_ngcontent-%COMP%] (max-width[_ngcontent-%COMP%]: 1200px)[_ngcontent-%COMP%] {\n .model-prompt-priority-matrix {\n .matrix-toolbar {\n .toolbar-section {\n min-width: 100%;\n justify-content: space-between;\n }\n }\n\n .matrix-container {\n .matrix-scroll {\n .matrix-table {\n .matrix-cell {\n width: 60px;\n height: 50px;\n }\n }\n }\n }\n }\n}\n\n@media (max-width: 768px) {\n .model-prompt-priority-matrix[_ngcontent-%COMP%] {\n .matrix-toolbar {\n padding: 0.75rem;\n \n .toolbar-section {\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n }\n\n .bulk-edit-panel {\n padding: 0.75rem;\n\n .bulk-edit-controls {\n flex-direction: column;\n align-items: stretch;\n gap: 0.75rem;\n }\n }\n\n .matrix-container {\n .matrix-scroll {\n padding: 0.75rem;\n\n .matrix-table {\n .matrix-cell {\n width: 50px;\n height: 40px;\n }\n }\n }\n }\n\n .list-container {\n padding: 0.75rem;\n\n .list-header {\n .list-controls {\n flex-direction: column;\n align-items: stretch;\n }\n }\n\n .associations-list {\n .association-item {\n .association-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.75rem;\n }\n\n .association-details {\n flex-direction: column;\n align-items: flex-start;\n }\n }\n }\n }\n }\n}"] });
915
+ } }, dependencies: [i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.RadioControlValueAccessor, i2.NgControlStatus, i2.MinValidator, i2.MaxValidator, i2.NgModel, i3.LoadingComponent], styles: [".model-prompt-priority-matrix[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: white;\n border-bottom: 1px solid #dee2e6;\n flex-shrink: 0;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .toolbar-title[_ngcontent-%COMP%] {\n margin: 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .toolbar-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #0d6efd;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .matrix-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 1rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .matrix-stats[_ngcontent-%COMP%] .stat-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n font-size: 0.875rem;\n color: #6c757d;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .matrix-stats[_ngcontent-%COMP%] .stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .bulk-actions[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .bulk-actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .bulk-edit-panel[_ngcontent-%COMP%] {\n padding: 1rem;\n background: #fff3cd;\n border-bottom: 1px solid #ffeaa7;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .bulk-edit-panel[_ngcontent-%COMP%] .bulk-edit-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .bulk-edit-panel[_ngcontent-%COMP%] .bulk-edit-controls[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .bulk-edit-panel[_ngcontent-%COMP%] .bulk-edit-controls[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .bulk-edit-panel[_ngcontent-%COMP%] .bulk-edit-controls[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .bulk-edit-panel[_ngcontent-%COMP%] .bulk-edit-controls[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%] {\n min-width: 100px;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .bulk-edit-panel[_ngcontent-%COMP%] .bulk-edit-info[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n color: #856404;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] {\n text-align: center;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-message[_ngcontent-%COMP%] {\n margin-top: 1rem;\n color: #6c757d;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] {\n height: 100%;\n overflow: auto;\n padding: 1rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] {\n border-collapse: separate;\n border-spacing: 2px;\n background: white;\n border-radius: 0.5rem;\n overflow: hidden;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .model-header[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #dee2e6;\n padding: 0.75rem;\n font-weight: 600;\n text-align: center;\n position: sticky;\n top: 0;\n z-index: 10;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .model-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .header-name[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .model-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .header-name[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n font-weight: 600;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .header-stats[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .model-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .header-stats[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n color: #6c757d;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] {\n min-width: 200px;\n position: sticky;\n left: 0;\n z-index: 11;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] {\n width: 80px;\n height: 60px;\n border: 2px solid #e9ecef;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n position: relative;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%]:hover {\n border-color: #007bff;\n transform: scale(1.05);\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.selected[_ngcontent-%COMP%] {\n border-color: #007bff;\n background: rgba(0, 123, 255, 0.1);\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.editing[_ngcontent-%COMP%] {\n border-color: #28a745;\n background: rgba(40, 167, 69, 0.1);\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.no-association[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border-style: dashed;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.no-association[_ngcontent-%COMP%] .empty-cell-indicator[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 1.5rem;\n opacity: 0.5;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.cannot-assign[_ngcontent-%COMP%] {\n background: #f5f5f5;\n cursor: not-allowed;\n opacity: 0.5;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.cannot-assign[_ngcontent-%COMP%] .blocked-cell-indicator[_ngcontent-%COMP%] {\n color: #dc3545;\n font-size: 1.25rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.has-association[_ngcontent-%COMP%] {\n background: white;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.has-association.priority-1[_ngcontent-%COMP%] {\n border-color: #28a745;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.has-association.priority-2[_ngcontent-%COMP%] {\n border-color: #20c997;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.has-association.priority-3[_ngcontent-%COMP%] {\n border-color: #ffc107;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.has-association.priority-4[_ngcontent-%COMP%] {\n border-color: #fd7e14;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.has-association.priority-5[_ngcontent-%COMP%] {\n border-color: #dc3545;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.has-association.inactive[_ngcontent-%COMP%] {\n opacity: 0.6;\n background: #f8f9fa;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.has-association.new[_ngcontent-%COMP%] {\n box-shadow: 0 0 0 2px #28a745;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell.has-association.modified[_ngcontent-%COMP%] {\n box-shadow: 0 0 0 2px #ffc107;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n gap: 0.25rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .priority-badge[_ngcontent-%COMP%] {\n background: #007bff;\n color: white;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.75rem;\n font-weight: 600;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .priority-badge.priority-1[_ngcontent-%COMP%] {\n background: #28a745;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .priority-badge.priority-2[_ngcontent-%COMP%] {\n background: #20c997;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .priority-badge.priority-3[_ngcontent-%COMP%] {\n background: #ffc107;\n color: #212529;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .priority-badge.priority-4[_ngcontent-%COMP%] {\n background: #fd7e14;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .priority-badge.priority-5[_ngcontent-%COMP%] {\n background: #dc3545;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .status-indicator[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .status-indicator.inactive[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .change-indicator[_ngcontent-%COMP%] {\n position: absolute;\n top: 2px;\n right: 2px;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n font-size: 0.625rem;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .change-indicator.new[_ngcontent-%COMP%] {\n background: #28a745;\n color: white;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .change-indicator.modified[_ngcontent-%COMP%] {\n background: #ffc107;\n color: #212529;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] .cell-content[_ngcontent-%COMP%] .performance-overlay[_ngcontent-%COMP%] {\n position: absolute;\n bottom: 2px;\n left: 2px;\n right: 2px;\n background: rgba(0, 0, 0, 0.8);\n color: white;\n border-radius: 0.25rem;\n padding: 0.125rem;\n font-size: 0.625rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] {\n margin-bottom: 1.5rem;\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 0.5rem;\n padding: 1rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-controls[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-controls[_ngcontent-%COMP%] .sort-controls[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-controls[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-controls[_ngcontent-%COMP%] .sort-controls[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-controls[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-controls[_ngcontent-%COMP%] .sort-controls[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-controls[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%] {\n min-width: 120px;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-controls[_ngcontent-%COMP%] .sort-controls[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-controls[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] {\n margin: 0;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 0.5rem;\n padding: 1rem;\n margin-bottom: 1rem;\n transition: all 0.2s ease;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%]:hover {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n transform: translateY(-1px);\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item.inactive[_ngcontent-%COMP%] {\n opacity: 0.7;\n background: #f8f9fa;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item.new[_ngcontent-%COMP%] {\n border-color: #28a745;\n border-left-width: 4px;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item.modified[_ngcontent-%COMP%] {\n border-color: #ffc107;\n border-left-width: 4px;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 0.75rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-header[_ngcontent-%COMP%] .association-names[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-header[_ngcontent-%COMP%] .association-names[_ngcontent-%COMP%] .prompt-name[_ngcontent-%COMP%], \n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-header[_ngcontent-%COMP%] .association-names[_ngcontent-%COMP%] .model-name[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 500;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-header[_ngcontent-%COMP%] .association-names[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6c757d;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-header[_ngcontent-%COMP%] .association-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-header[_ngcontent-%COMP%] .association-actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%] {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .detail-label[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n color: #6c757d;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .priority-badge[_ngcontent-%COMP%] {\n background: #007bff;\n color: white;\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 600;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .priority-badge.priority-1[_ngcontent-%COMP%] {\n background: #28a745;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .priority-badge.priority-2[_ngcontent-%COMP%] {\n background: #20c997;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .priority-badge.priority-3[_ngcontent-%COMP%] {\n background: #ffc107;\n color: #212529;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .priority-badge.priority-4[_ngcontent-%COMP%] {\n background: #fd7e14;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .priority-badge.priority-5[_ngcontent-%COMP%] {\n background: #dc3545;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%] {\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 500;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .status-badge.badge-success[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #155724;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .status-badge.badge-secondary[_ngcontent-%COMP%] {\n background: #e2e3e5;\n color: #383d41;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .change-badge[_ngcontent-%COMP%] {\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .change-badge.new[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #155724;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .change-badge.modified[_ngcontent-%COMP%] {\n background: #fff3cd;\n color: #856404;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .no-associations-message[_ngcontent-%COMP%] {\n text-align: center;\n padding: 3rem 1rem;\n color: #6c757d;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .no-associations-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3rem;\n margin-bottom: 1rem;\n display: block;\n opacity: 0.5;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .no-associations-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1rem;\n line-height: 1.5;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .error-container[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n.model-prompt-priority-matrix[_ngcontent-%COMP%] .error-container[_ngcontent-%COMP%] .alert[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n@media (max-width: 1200px) {\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] {\n min-width: 100%;\n justify-content: space-between;\n }\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] {\n width: 60px;\n height: 50px;\n }\n}\n@media (max-width: 768px) {\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .bulk-edit-panel[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .bulk-edit-panel[_ngcontent-%COMP%] .bulk-edit-controls[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n gap: 0.75rem;\n }\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .matrix-container[_ngcontent-%COMP%] .matrix-scroll[_ngcontent-%COMP%] .matrix-table[_ngcontent-%COMP%] .matrix-cell[_ngcontent-%COMP%] {\n width: 50px;\n height: 40px;\n }\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-controls[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.75rem;\n }\n .model-prompt-priority-matrix[_ngcontent-%COMP%] .list-container[_ngcontent-%COMP%] .associations-list[_ngcontent-%COMP%] .association-item[_ngcontent-%COMP%] .association-details[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n }\n}"] });
918
916
  }
919
917
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ModelPromptPriorityMatrixComponent, [{
920
918
  type: Component,
921
- args: [{ selector: 'app-model-prompt-priority-matrix', template: "<div class=\"model-prompt-priority-matrix\">\n <!-- Header toolbar -->\n <div class=\"matrix-toolbar\">\n <div class=\"toolbar-section\">\n <h5 class=\"toolbar-title\">\n <i class=\"fa-solid fa-table-cells\"></i>\n Model-Prompt Priority Matrix\n </h5>\n \n <div class=\"view-mode-toggle\">\n <div class=\"btn-group\" role=\"group\">\n <input \n type=\"radio\" \n class=\"btn-check\" \n name=\"viewMode\" \n id=\"matrixView\" \n value=\"matrix\"\n [(ngModel)]=\"viewMode\"\n (ngModelChange)=\"onViewModeChange($event)\">\n <label class=\"btn btn-outline-primary btn-sm\" for=\"matrixView\">\n <i class=\"fa-solid fa-table-cells\"></i>\n Matrix\n </label>\n \n <input \n type=\"radio\" \n class=\"btn-check\" \n name=\"viewMode\" \n id=\"listView\" \n value=\"list\"\n [(ngModel)]=\"viewMode\"\n (ngModelChange)=\"onViewModeChange($event)\">\n <label class=\"btn btn-outline-primary btn-sm\" for=\"listView\">\n <i class=\"fa-solid fa-list\"></i>\n List\n </label>\n </div>\n </div>\n </div>\n \n <div class=\"toolbar-section\">\n <div class=\"matrix-stats\">\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-link text-primary\"></i>\n {{ getAssociationCount() }} associations\n </span>\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-star text-warning\"></i>\n {{ getAveragePriority() }} avg priority\n </span>\n @if (hasUnsavedChanges()) {\n <span class=\"stat-item text-warning\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n Unsaved changes\n </span>\n }\n </div>\n </div>\n \n <div class=\"toolbar-section\">\n @if (selectedCells.size > 0) {\n <div class=\"bulk-actions\">\n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-primary\"\n [class.active]=\"bulkEditMode\"\n (click)=\"bulkEditMode = !bulkEditMode\"\n title=\"Bulk edit selected cells\">\n <i class=\"fa-solid fa-edit\"></i>\n Edit ({{ selectedCells.size }})\n </button>\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-danger\"\n (click)=\"bulkRemoveSelectedCells()\"\n title=\"Remove selected associations\">\n <i class=\"fa-solid fa-trash\"></i>\n Remove\n </button>\n </div>\n }\n \n <div class=\"action-buttons\">\n @if (hasUnsavedChanges()) {\n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"discardChanges()\"\n title=\"Discard changes\">\n <i class=\"fa-solid fa-undo\"></i>\n Discard\n </button>\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-success\"\n (click)=\"saveChanges()\"\n [disabled]=\"isLoading\"\n title=\"Save changes\">\n <i class=\"fa-solid fa-save\"></i>\n Save\n </button>\n }\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-info\"\n (click)=\"exportMatrix()\"\n title=\"Export matrix\">\n <i class=\"fa-solid fa-download\"></i>\n Export\n </button>\n </div>\n </div>\n </div>\n \n <!-- Bulk edit panel -->\n @if (bulkEditMode && selectedCells.size > 0) {\n <div class=\"bulk-edit-panel\">\n <div class=\"bulk-edit-controls\">\n <div class=\"form-group\">\n <label for=\"bulkPriority\" class=\"form-label\">Priority:</label>\n <input \n type=\"number\" \n id=\"bulkPriority\"\n class=\"form-control form-control-sm\"\n [(ngModel)]=\"bulkEditPriority\"\n min=\"1\"\n max=\"10\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"bulkStatus\" class=\"form-label\">Status:</label>\n <select \n id=\"bulkStatus\"\n class=\"form-select form-select-sm\"\n [(ngModel)]=\"bulkEditStatus\">\n <option value=\"Active\">Active</option>\n <option value=\"Inactive\">Inactive</option>\n </select>\n </div>\n \n <div class=\"form-group\">\n <button \n type=\"button\" \n class=\"btn btn-sm btn-primary\"\n (click)=\"bulkUpdateSelectedCells()\"\n title=\"Apply changes to selected cells\">\n <i class=\"fa-solid fa-check\"></i>\n Apply\n </button>\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"bulkEditMode = false\"\n title=\"Cancel bulk edit\">\n <i class=\"fa-solid fa-times\"></i>\n Cancel\n </button>\n </div>\n </div>\n \n <div class=\"bulk-edit-info\">\n <small class=\"text-muted\">\n Editing {{ selectedCells.size }} selected cell(s). \n Use Ctrl+Click for multi-select, Shift+Click for range select.\n </small>\n </div>\n </div>\n }\n \n <!-- Loading state -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <div class=\"loading-content\">\n <div class=\"spinner-border text-primary\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n <p class=\"loading-message\">{{ loadingMessage }}</p>\n </div>\n </div>\n } @else {\n <!-- Matrix view -->\n @if (viewMode === 'matrix') {\n <div class=\"matrix-container\">\n <div class=\"matrix-scroll\">\n <table class=\"matrix-table\">\n <!-- Header row with model names -->\n <thead>\n <tr>\n <th class=\"prompt-header\">Prompts \\\\ Models</th>\n @for (model of models; track model.ID) {\n <th class=\"model-header\" [title]=\"model.Description || model.Name\">\n <div class=\"header-content\">\n <div class=\"header-name\">{{ model.Name }}</div>\n <div class=\"header-stats\">\n <small class=\"text-muted\">{{ getModelAssociationCount(model.ID) }}</small>\n </div>\n </div>\n </th>\n }\n </tr>\n </thead>\n \n <!-- Matrix body -->\n <tbody>\n @for (prompt of prompts; track prompt.ID; let promptIndex = $index) {\n <tr class=\"matrix-row\">\n <th class=\"prompt-header\" [title]=\"prompt.Description || prompt.Name\" (click)=\"selectPrompt(prompt)\">\n <div class=\"header-content\">\n <div class=\"header-name\">{{ prompt.Name }}</div>\n <div class=\"header-stats\">\n <small class=\"text-muted\">{{ getPromptAssociationCount(prompt.ID) }}</small>\n </div>\n </div>\n </th>\n \n @for (model of models; track model.ID; let modelIndex = $index) {\n <td \n [class]=\"getCellClass(matrix[promptIndex][modelIndex])\"\n (click)=\"onCellClick(promptIndex, modelIndex, $event)\"\n (dblclick)=\"onCellDoubleClick(promptIndex, modelIndex)\"\n [title]=\"getCellTooltip(matrix[promptIndex][modelIndex])\">\n \n @if (matrix[promptIndex][modelIndex].association; as assoc) {\n <div class=\"cell-content\">\n <div class=\"priority-badge priority-{{ assoc.priority }}\">\n {{ assoc.priority }}\n </div>\n \n @if (assoc.status === 'Inactive') {\n <div class=\"status-indicator inactive\">\n <i class=\"fa-solid fa-ban\"></i>\n </div>\n }\n \n @if (assoc.isNew) {\n <div class=\"change-indicator new\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n } @else if (assoc.isModified) {\n <div class=\"change-indicator modified\">\n <i class=\"fa-solid fa-edit\"></i>\n </div>\n }\n \n @if (showPerformanceOverlay && performanceData[assoc.promptId + '_' + assoc.modelId]) {\n <div class=\"performance-overlay\">\n <small>{{ performanceData[assoc.promptId + '_' + assoc.modelId].avgResponseTime }}ms</small>\n </div>\n }\n </div>\n } @else {\n <div class=\"cell-content empty\">\n @if (matrix[promptIndex][modelIndex].canAssign) {\n <div class=\"empty-cell-indicator\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n } @else {\n <div class=\"blocked-cell-indicator\">\n <i class=\"fa-solid fa-ban\"></i>\n </div>\n }\n </div>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n \n <!-- List view -->\n @if (viewMode === 'list') {\n <div class=\"list-container\">\n <div class=\"list-header\">\n <div class=\"list-controls\">\n <div class=\"sort-controls\">\n <label class=\"form-label\">Sort by:</label>\n <select \n class=\"form-select form-select-sm\"\n [(ngModel)]=\"sortBy\"\n (ngModelChange)=\"sortAssociations()\">\n <option value=\"prompt\">Prompt Name</option>\n <option value=\"model\">Model Name</option>\n <option value=\"priority\">Priority</option>\n </select>\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"toggleSortDirection()\"\n [title]=\"'Sort ' + (sortDirection === 'asc' ? 'descending' : 'ascending')\">\n <i class=\"fa-solid\" [class.fa-sort-up]=\"sortDirection === 'asc'\" [class.fa-sort-down]=\"sortDirection === 'desc'\"></i>\n </button>\n </div>\n \n <div class=\"filter-controls\">\n <div class=\"form-check form-switch\">\n <input \n class=\"form-check-input\" \n type=\"checkbox\" \n id=\"showInactive\"\n [(ngModel)]=\"showInactiveAssociations\">\n <label class=\"form-check-label\" for=\"showInactive\">\n Show inactive\n </label>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"associations-list\">\n @for (association of associations; track association.promptId + '_' + association.modelId) {\n @if (showInactiveAssociations || association.status === 'Active') {\n <div class=\"association-item\" \n [class.inactive]=\"association.status === 'Inactive'\"\n [class.new]=\"association.isNew\"\n [class.modified]=\"association.isModified\">\n \n <div class=\"association-header\">\n <div class=\"association-names\">\n <strong class=\"prompt-name\">{{ association.promptName }}</strong>\n <i class=\"fa-solid fa-arrow-right text-muted\"></i>\n <strong class=\"model-name\">{{ association.modelName }}</strong>\n </div>\n \n <div class=\"association-actions\">\n @if (!readonly) {\n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-primary\"\n title=\"Edit association\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-danger\"\n (click)=\"removeAssociation(association.promptId, association.modelId)\"\n title=\"Remove association\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n \n <div class=\"association-details\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Priority:</span>\n <span class=\"priority-badge priority-{{ association.priority }}\">\n {{ association.priority }}\n </span>\n </div>\n \n <div class=\"detail-item\">\n <span class=\"detail-label\">Status:</span>\n <span class=\"status-badge\" [class.badge-success]=\"association.status === 'Active'\" [class.badge-secondary]=\"association.status === 'Inactive'\">\n {{ association.status }}\n </span>\n </div>\n \n @if (association.isNew) {\n <div class=\"detail-item\">\n <span class=\"change-badge new\">\n <i class=\"fa-solid fa-plus\"></i>\n New\n </span>\n </div>\n } @else if (association.isModified) {\n <div class=\"detail-item\">\n <span class=\"change-badge modified\">\n <i class=\"fa-solid fa-edit\"></i>\n Modified\n </span>\n </div>\n }\n </div>\n </div>\n }\n }\n \n @if (associations.length === 0) {\n <div class=\"no-associations-message\">\n <i class=\"fa-solid fa-info-circle text-muted\"></i>\n <p class=\"text-muted mb-0\">No prompt-model associations found. Click on matrix cells to create associations.</p>\n </div>\n }\n </div>\n </div>\n }\n }\n \n <!-- Error state -->\n @if (error) {\n <div class=\"error-container\">\n <div class=\"alert alert-danger\" role=\"alert\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ error }}\n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-danger ms-2\"\n (click)=\"loadData()\">\n <i class=\"fa-solid fa-refresh\"></i>\n Retry\n </button>\n </div>\n </div>\n }\n</div>", styles: [".model-prompt-priority-matrix {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n\n .matrix-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: white;\n border-bottom: 1px solid #dee2e6;\n flex-shrink: 0;\n gap: 1rem;\n flex-wrap: wrap;\n\n .toolbar-section {\n display: flex;\n align-items: center;\n gap: 1rem;\n\n .toolbar-title {\n margin: 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n\n i {\n color: #0d6efd;\n }\n }\n\n .matrix-stats {\n display: flex;\n gap: 1rem;\n\n .stat-item {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n font-size: 0.875rem;\n color: #6c757d;\n\n i {\n font-size: 1rem;\n }\n }\n }\n\n .bulk-actions,\n .action-buttons {\n display: flex;\n gap: 0.5rem;\n\n .btn {\n font-size: 0.875rem;\n }\n }\n }\n }\n\n .bulk-edit-panel {\n padding: 1rem;\n background: #fff3cd;\n border-bottom: 1px solid #ffeaa7;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n\n .bulk-edit-controls {\n display: flex;\n align-items: center;\n gap: 1rem;\n\n .form-group {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n .form-label {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n }\n\n .form-control,\n .form-select {\n min-width: 100px;\n }\n }\n }\n\n .bulk-edit-info {\n font-size: 0.875rem;\n color: #856404;\n }\n }\n\n .loading-container {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n\n .loading-content {\n text-align: center;\n \n .loading-message {\n margin-top: 1rem;\n color: #6c757d;\n }\n }\n }\n\n .matrix-container {\n flex: 1;\n overflow: hidden;\n\n .matrix-scroll {\n height: 100%;\n overflow: auto;\n padding: 1rem;\n\n .matrix-table {\n border-collapse: separate;\n border-spacing: 2px;\n background: white;\n border-radius: 0.5rem;\n overflow: hidden;\n\n .prompt-header,\n .model-header {\n background: #f8f9fa;\n border: 1px solid #dee2e6;\n padding: 0.75rem;\n font-weight: 600;\n text-align: center;\n position: sticky;\n top: 0;\n z-index: 10;\n\n .header-content {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n\n .header-name {\n font-size: 0.875rem;\n font-weight: 600;\n }\n\n .header-stats {\n font-size: 0.75rem;\n color: #6c757d;\n }\n }\n }\n\n .prompt-header {\n min-width: 200px;\n position: sticky;\n left: 0;\n z-index: 11;\n }\n\n .matrix-cell {\n width: 80px;\n height: 60px;\n border: 2px solid #e9ecef;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n position: relative;\n\n &:hover {\n border-color: #007bff;\n transform: scale(1.05);\n }\n\n &.selected {\n border-color: #007bff;\n background: rgba(0, 123, 255, 0.1);\n }\n\n &.editing {\n border-color: #28a745;\n background: rgba(40, 167, 69, 0.1);\n }\n\n &.no-association {\n background: #f8f9fa;\n border-style: dashed;\n\n .empty-cell-indicator {\n color: #6c757d;\n font-size: 1.5rem;\n opacity: 0.5;\n }\n }\n\n &.cannot-assign {\n background: #f5f5f5;\n cursor: not-allowed;\n opacity: 0.5;\n\n .blocked-cell-indicator {\n color: #dc3545;\n font-size: 1.25rem;\n }\n }\n\n &.has-association {\n background: white;\n\n &.priority-1 { border-color: #28a745; }\n &.priority-2 { border-color: #20c997; }\n &.priority-3 { border-color: #ffc107; }\n &.priority-4 { border-color: #fd7e14; }\n &.priority-5 { border-color: #dc3545; }\n\n &.inactive {\n opacity: 0.6;\n background: #f8f9fa;\n }\n\n &.new {\n box-shadow: 0 0 0 2px #28a745;\n }\n\n &.modified {\n box-shadow: 0 0 0 2px #ffc107;\n }\n }\n\n .cell-content {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n gap: 0.25rem;\n\n .priority-badge {\n background: #007bff;\n color: white;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.75rem;\n font-weight: 600;\n\n &.priority-1 { background: #28a745; }\n &.priority-2 { background: #20c997; }\n &.priority-3 { background: #ffc107; color: #212529; }\n &.priority-4 { background: #fd7e14; }\n &.priority-5 { background: #dc3545; }\n }\n\n .status-indicator {\n font-size: 0.75rem;\n\n &.inactive {\n color: #dc3545;\n }\n }\n\n .change-indicator {\n position: absolute;\n top: 2px;\n right: 2px;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n font-size: 0.625rem;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &.new {\n background: #28a745;\n color: white;\n }\n\n &.modified {\n background: #ffc107;\n color: #212529;\n }\n }\n\n .performance-overlay {\n position: absolute;\n bottom: 2px;\n left: 2px;\n right: 2px;\n background: rgba(0, 0, 0, 0.8);\n color: white;\n border-radius: 0.25rem;\n padding: 0.125rem;\n font-size: 0.625rem;\n }\n }\n }\n }\n }\n }\n\n .list-container {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n\n .list-header {\n margin-bottom: 1.5rem;\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 0.5rem;\n padding: 1rem;\n\n .list-controls {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n\n .sort-controls,\n .filter-controls {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n .form-label {\n margin: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n }\n\n .form-select {\n min-width: 120px;\n }\n\n .form-check {\n margin: 0;\n }\n }\n }\n }\n\n .associations-list {\n .association-item {\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 0.5rem;\n padding: 1rem;\n margin-bottom: 1rem;\n transition: all 0.2s ease;\n\n &:hover {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n transform: translateY(-1px);\n }\n\n &.inactive {\n opacity: 0.7;\n background: #f8f9fa;\n }\n\n &.new {\n border-color: #28a745;\n border-left-width: 4px;\n }\n\n &.modified {\n border-color: #ffc107;\n border-left-width: 4px;\n }\n\n .association-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 0.75rem;\n\n .association-names {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n\n .prompt-name,\n .model-name {\n color: #495057;\n font-weight: 500;\n }\n\n i {\n color: #6c757d;\n }\n }\n\n .association-actions {\n display: flex;\n gap: 0.5rem;\n\n .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n }\n }\n }\n\n .association-details {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .detail-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n .detail-label {\n font-size: 0.875rem;\n color: #6c757d;\n }\n\n .priority-badge {\n background: #007bff;\n color: white;\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 600;\n\n &.priority-1 { background: #28a745; }\n &.priority-2 { background: #20c997; }\n &.priority-3 { background: #ffc107; color: #212529; }\n &.priority-4 { background: #fd7e14; }\n &.priority-5 { background: #dc3545; }\n }\n\n .status-badge {\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 500;\n\n &.badge-success {\n background: #d4edda;\n color: #155724;\n }\n\n &.badge-secondary {\n background: #e2e3e5;\n color: #383d41;\n }\n }\n\n .change-badge {\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n\n &.new {\n background: #d4edda;\n color: #155724;\n }\n\n &.modified {\n background: #fff3cd;\n color: #856404;\n }\n }\n }\n }\n }\n\n .no-associations-message {\n text-align: center;\n padding: 3rem 1rem;\n color: #6c757d;\n\n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n display: block;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: 1rem;\n line-height: 1.5;\n }\n }\n }\n }\n\n .error-container {\n padding: 1rem;\n\n .alert {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n }\n}\n\n// Responsive adjustments\n@media (max-width: 1200px) {\n .model-prompt-priority-matrix {\n .matrix-toolbar {\n .toolbar-section {\n min-width: 100%;\n justify-content: space-between;\n }\n }\n\n .matrix-container {\n .matrix-scroll {\n .matrix-table {\n .matrix-cell {\n width: 60px;\n height: 50px;\n }\n }\n }\n }\n }\n}\n\n@media (max-width: 768px) {\n .model-prompt-priority-matrix {\n .matrix-toolbar {\n padding: 0.75rem;\n \n .toolbar-section {\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n }\n\n .bulk-edit-panel {\n padding: 0.75rem;\n\n .bulk-edit-controls {\n flex-direction: column;\n align-items: stretch;\n gap: 0.75rem;\n }\n }\n\n .matrix-container {\n .matrix-scroll {\n padding: 0.75rem;\n\n .matrix-table {\n .matrix-cell {\n width: 50px;\n height: 40px;\n }\n }\n }\n }\n\n .list-container {\n padding: 0.75rem;\n\n .list-header {\n .list-controls {\n flex-direction: column;\n align-items: stretch;\n }\n }\n\n .associations-list {\n .association-item {\n .association-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.75rem;\n }\n\n .association-details {\n flex-direction: column;\n align-items: flex-start;\n }\n }\n }\n }\n }\n}"] }]
919
+ args: [{ selector: 'app-model-prompt-priority-matrix', template: "<div class=\"model-prompt-priority-matrix\">\n <!-- Header toolbar -->\n <div class=\"matrix-toolbar\">\n <div class=\"toolbar-section\">\n <h5 class=\"toolbar-title\">\n <i class=\"fa-solid fa-table-cells\"></i>\n Model-Prompt Priority Matrix\n </h5>\n \n <div class=\"view-mode-toggle\">\n <div class=\"btn-group\" role=\"group\">\n <input \n type=\"radio\" \n class=\"btn-check\" \n name=\"viewMode\" \n id=\"matrixView\" \n value=\"matrix\"\n [(ngModel)]=\"viewMode\"\n (ngModelChange)=\"onViewModeChange($event)\">\n <label class=\"btn btn-outline-primary btn-sm\" for=\"matrixView\">\n <i class=\"fa-solid fa-table-cells\"></i>\n Matrix\n </label>\n \n <input \n type=\"radio\" \n class=\"btn-check\" \n name=\"viewMode\" \n id=\"listView\" \n value=\"list\"\n [(ngModel)]=\"viewMode\"\n (ngModelChange)=\"onViewModeChange($event)\">\n <label class=\"btn btn-outline-primary btn-sm\" for=\"listView\">\n <i class=\"fa-solid fa-list\"></i>\n List\n </label>\n </div>\n </div>\n </div>\n \n <div class=\"toolbar-section\">\n <div class=\"matrix-stats\">\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-link text-primary\"></i>\n {{ getAssociationCount() }} associations\n </span>\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-star text-warning\"></i>\n {{ getAveragePriority() }} avg priority\n </span>\n @if (hasUnsavedChanges()) {\n <span class=\"stat-item text-warning\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n Unsaved changes\n </span>\n }\n </div>\n </div>\n \n <div class=\"toolbar-section\">\n @if (selectedCells.size > 0) {\n <div class=\"bulk-actions\">\n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-primary\"\n [class.active]=\"bulkEditMode\"\n (click)=\"bulkEditMode = !bulkEditMode\"\n title=\"Bulk edit selected cells\">\n <i class=\"fa-solid fa-edit\"></i>\n Edit ({{ selectedCells.size }})\n </button>\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-danger\"\n (click)=\"bulkRemoveSelectedCells()\"\n title=\"Remove selected associations\">\n <i class=\"fa-solid fa-trash\"></i>\n Remove\n </button>\n </div>\n }\n \n <div class=\"action-buttons\">\n @if (hasUnsavedChanges()) {\n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"discardChanges()\"\n title=\"Discard changes\">\n <i class=\"fa-solid fa-undo\"></i>\n Discard\n </button>\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-success\"\n (click)=\"saveChanges()\"\n [disabled]=\"isLoading\"\n title=\"Save changes\">\n <i class=\"fa-solid fa-save\"></i>\n Save\n </button>\n }\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-info\"\n (click)=\"exportMatrix()\"\n title=\"Export matrix\">\n <i class=\"fa-solid fa-download\"></i>\n Export\n </button>\n </div>\n </div>\n </div>\n \n <!-- Bulk edit panel -->\n @if (bulkEditMode && selectedCells.size > 0) {\n <div class=\"bulk-edit-panel\">\n <div class=\"bulk-edit-controls\">\n <div class=\"form-group\">\n <label for=\"bulkPriority\" class=\"form-label\">Priority:</label>\n <input \n type=\"number\" \n id=\"bulkPriority\"\n class=\"form-control form-control-sm\"\n [(ngModel)]=\"bulkEditPriority\"\n min=\"1\"\n max=\"10\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"bulkStatus\" class=\"form-label\">Status:</label>\n <select \n id=\"bulkStatus\"\n class=\"form-select form-select-sm\"\n [(ngModel)]=\"bulkEditStatus\">\n <option value=\"Active\">Active</option>\n <option value=\"Inactive\">Inactive</option>\n </select>\n </div>\n \n <div class=\"form-group\">\n <button \n type=\"button\" \n class=\"btn btn-sm btn-primary\"\n (click)=\"bulkUpdateSelectedCells()\"\n title=\"Apply changes to selected cells\">\n <i class=\"fa-solid fa-check\"></i>\n Apply\n </button>\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"bulkEditMode = false\"\n title=\"Cancel bulk edit\">\n <i class=\"fa-solid fa-times\"></i>\n Cancel\n </button>\n </div>\n </div>\n \n <div class=\"bulk-edit-info\">\n <small class=\"text-muted\">\n Editing {{ selectedCells.size }} selected cell(s). \n Use Ctrl+Click for multi-select, Shift+Click for range select.\n </small>\n </div>\n </div>\n }\n \n <!-- Loading state -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading [text]=\"loadingMessage\" size=\"large\"></mj-loading>\n </div>\n } @else {\n <!-- Matrix view -->\n @if (viewMode === 'matrix') {\n <div class=\"matrix-container\">\n <div class=\"matrix-scroll\">\n <table class=\"matrix-table\">\n <!-- Header row with model names -->\n <thead>\n <tr>\n <th class=\"prompt-header\">Prompts \\\\ Models</th>\n @for (model of models; track model.ID) {\n <th class=\"model-header\" [title]=\"model.Description || model.Name\">\n <div class=\"header-content\">\n <div class=\"header-name\">{{ model.Name }}</div>\n <div class=\"header-stats\">\n <small class=\"text-muted\">{{ getModelAssociationCount(model.ID) }}</small>\n </div>\n </div>\n </th>\n }\n </tr>\n </thead>\n \n <!-- Matrix body -->\n <tbody>\n @for (prompt of prompts; track prompt.ID; let promptIndex = $index) {\n <tr class=\"matrix-row\">\n <th class=\"prompt-header\" [title]=\"prompt.Description || prompt.Name\" (click)=\"selectPrompt(prompt)\">\n <div class=\"header-content\">\n <div class=\"header-name\">{{ prompt.Name }}</div>\n <div class=\"header-stats\">\n <small class=\"text-muted\">{{ getPromptAssociationCount(prompt.ID) }}</small>\n </div>\n </div>\n </th>\n \n @for (model of models; track model.ID; let modelIndex = $index) {\n <td \n [class]=\"getCellClass(matrix[promptIndex][modelIndex])\"\n (click)=\"onCellClick(promptIndex, modelIndex, $event)\"\n (dblclick)=\"onCellDoubleClick(promptIndex, modelIndex)\"\n [title]=\"getCellTooltip(matrix[promptIndex][modelIndex])\">\n \n @if (matrix[promptIndex][modelIndex].association; as assoc) {\n <div class=\"cell-content\">\n <div class=\"priority-badge priority-{{ assoc.priority }}\">\n {{ assoc.priority }}\n </div>\n \n @if (assoc.status === 'Inactive') {\n <div class=\"status-indicator inactive\">\n <i class=\"fa-solid fa-ban\"></i>\n </div>\n }\n \n @if (assoc.isNew) {\n <div class=\"change-indicator new\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n } @else if (assoc.isModified) {\n <div class=\"change-indicator modified\">\n <i class=\"fa-solid fa-edit\"></i>\n </div>\n }\n \n @if (showPerformanceOverlay && performanceData[assoc.promptId + '_' + assoc.modelId]) {\n <div class=\"performance-overlay\">\n <small>{{ performanceData[assoc.promptId + '_' + assoc.modelId].avgResponseTime }}ms</small>\n </div>\n }\n </div>\n } @else {\n <div class=\"cell-content empty\">\n @if (matrix[promptIndex][modelIndex].canAssign) {\n <div class=\"empty-cell-indicator\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n } @else {\n <div class=\"blocked-cell-indicator\">\n <i class=\"fa-solid fa-ban\"></i>\n </div>\n }\n </div>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n \n <!-- List view -->\n @if (viewMode === 'list') {\n <div class=\"list-container\">\n <div class=\"list-header\">\n <div class=\"list-controls\">\n <div class=\"sort-controls\">\n <label class=\"form-label\">Sort by:</label>\n <select \n class=\"form-select form-select-sm\"\n [(ngModel)]=\"sortBy\"\n (ngModelChange)=\"sortAssociations()\">\n <option value=\"prompt\">Prompt Name</option>\n <option value=\"model\">Model Name</option>\n <option value=\"priority\">Priority</option>\n </select>\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"toggleSortDirection()\"\n [title]=\"'Sort ' + (sortDirection === 'asc' ? 'descending' : 'ascending')\">\n <i class=\"fa-solid\" [class.fa-sort-up]=\"sortDirection === 'asc'\" [class.fa-sort-down]=\"sortDirection === 'desc'\"></i>\n </button>\n </div>\n \n <div class=\"filter-controls\">\n <div class=\"form-check form-switch\">\n <input \n class=\"form-check-input\" \n type=\"checkbox\" \n id=\"showInactive\"\n [(ngModel)]=\"showInactiveAssociations\">\n <label class=\"form-check-label\" for=\"showInactive\">\n Show inactive\n </label>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"associations-list\">\n @for (association of associations; track association.promptId + '_' + association.modelId) {\n @if (showInactiveAssociations || association.status === 'Active') {\n <div class=\"association-item\" \n [class.inactive]=\"association.status === 'Inactive'\"\n [class.new]=\"association.isNew\"\n [class.modified]=\"association.isModified\">\n \n <div class=\"association-header\">\n <div class=\"association-names\">\n <strong class=\"prompt-name\">{{ association.promptName }}</strong>\n <i class=\"fa-solid fa-arrow-right text-muted\"></i>\n <strong class=\"model-name\">{{ association.modelName }}</strong>\n </div>\n \n <div class=\"association-actions\">\n @if (!readonly) {\n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-primary\"\n title=\"Edit association\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n \n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-danger\"\n (click)=\"removeAssociation(association.promptId, association.modelId)\"\n title=\"Remove association\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n \n <div class=\"association-details\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Priority:</span>\n <span class=\"priority-badge priority-{{ association.priority }}\">\n {{ association.priority }}\n </span>\n </div>\n \n <div class=\"detail-item\">\n <span class=\"detail-label\">Status:</span>\n <span class=\"status-badge\" [class.badge-success]=\"association.status === 'Active'\" [class.badge-secondary]=\"association.status === 'Inactive'\">\n {{ association.status }}\n </span>\n </div>\n \n @if (association.isNew) {\n <div class=\"detail-item\">\n <span class=\"change-badge new\">\n <i class=\"fa-solid fa-plus\"></i>\n New\n </span>\n </div>\n } @else if (association.isModified) {\n <div class=\"detail-item\">\n <span class=\"change-badge modified\">\n <i class=\"fa-solid fa-edit\"></i>\n Modified\n </span>\n </div>\n }\n </div>\n </div>\n }\n }\n \n @if (associations.length === 0) {\n <div class=\"no-associations-message\">\n <i class=\"fa-solid fa-info-circle text-muted\"></i>\n <p class=\"text-muted mb-0\">No prompt-model associations found. Click on matrix cells to create associations.</p>\n </div>\n }\n </div>\n </div>\n }\n }\n \n <!-- Error state -->\n @if (error) {\n <div class=\"error-container\">\n <div class=\"alert alert-danger\" role=\"alert\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ error }}\n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-danger ms-2\"\n (click)=\"loadData()\">\n <i class=\"fa-solid fa-refresh\"></i>\n Retry\n </button>\n </div>\n </div>\n }\n</div>", styles: [".model-prompt-priority-matrix {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n}\n.model-prompt-priority-matrix .matrix-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: white;\n border-bottom: 1px solid #dee2e6;\n flex-shrink: 0;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.model-prompt-priority-matrix .matrix-toolbar .toolbar-section {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n.model-prompt-priority-matrix .matrix-toolbar .toolbar-section .toolbar-title {\n margin: 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n}\n.model-prompt-priority-matrix .matrix-toolbar .toolbar-section .toolbar-title i {\n color: #0d6efd;\n}\n.model-prompt-priority-matrix .matrix-toolbar .toolbar-section .matrix-stats {\n display: flex;\n gap: 1rem;\n}\n.model-prompt-priority-matrix .matrix-toolbar .toolbar-section .matrix-stats .stat-item {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n font-size: 0.875rem;\n color: #6c757d;\n}\n.model-prompt-priority-matrix .matrix-toolbar .toolbar-section .matrix-stats .stat-item i {\n font-size: 1rem;\n}\n.model-prompt-priority-matrix .matrix-toolbar .toolbar-section .bulk-actions,\n.model-prompt-priority-matrix .matrix-toolbar .toolbar-section .action-buttons {\n display: flex;\n gap: 0.5rem;\n}\n.model-prompt-priority-matrix .matrix-toolbar .toolbar-section .bulk-actions .btn,\n.model-prompt-priority-matrix .matrix-toolbar .toolbar-section .action-buttons .btn {\n font-size: 0.875rem;\n}\n.model-prompt-priority-matrix .bulk-edit-panel {\n padding: 1rem;\n background: #fff3cd;\n border-bottom: 1px solid #ffeaa7;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n}\n.model-prompt-priority-matrix .bulk-edit-panel .bulk-edit-controls {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n.model-prompt-priority-matrix .bulk-edit-panel .bulk-edit-controls .form-group {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.model-prompt-priority-matrix .bulk-edit-panel .bulk-edit-controls .form-group .form-label {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n}\n.model-prompt-priority-matrix .bulk-edit-panel .bulk-edit-controls .form-group .form-control,\n.model-prompt-priority-matrix .bulk-edit-panel .bulk-edit-controls .form-group .form-select {\n min-width: 100px;\n}\n.model-prompt-priority-matrix .bulk-edit-panel .bulk-edit-info {\n font-size: 0.875rem;\n color: #856404;\n}\n.model-prompt-priority-matrix .loading-container {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.model-prompt-priority-matrix .loading-container .loading-content {\n text-align: center;\n}\n.model-prompt-priority-matrix .loading-container .loading-content .loading-message {\n margin-top: 1rem;\n color: #6c757d;\n}\n.model-prompt-priority-matrix .matrix-container {\n flex: 1;\n overflow: hidden;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll {\n height: 100%;\n overflow: auto;\n padding: 1rem;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table {\n border-collapse: separate;\n border-spacing: 2px;\n background: white;\n border-radius: 0.5rem;\n overflow: hidden;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .prompt-header,\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .model-header {\n background: #f8f9fa;\n border: 1px solid #dee2e6;\n padding: 0.75rem;\n font-weight: 600;\n text-align: center;\n position: sticky;\n top: 0;\n z-index: 10;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .prompt-header .header-content,\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .model-header .header-content {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .prompt-header .header-content .header-name,\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .model-header .header-content .header-name {\n font-size: 0.875rem;\n font-weight: 600;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .prompt-header .header-content .header-stats,\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .model-header .header-content .header-stats {\n font-size: 0.75rem;\n color: #6c757d;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .prompt-header {\n min-width: 200px;\n position: sticky;\n left: 0;\n z-index: 11;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell {\n width: 80px;\n height: 60px;\n border: 2px solid #e9ecef;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n position: relative;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell:hover {\n border-color: #007bff;\n transform: scale(1.05);\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.selected {\n border-color: #007bff;\n background: rgba(0, 123, 255, 0.1);\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.editing {\n border-color: #28a745;\n background: rgba(40, 167, 69, 0.1);\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.no-association {\n background: #f8f9fa;\n border-style: dashed;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.no-association .empty-cell-indicator {\n color: #6c757d;\n font-size: 1.5rem;\n opacity: 0.5;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.cannot-assign {\n background: #f5f5f5;\n cursor: not-allowed;\n opacity: 0.5;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.cannot-assign .blocked-cell-indicator {\n color: #dc3545;\n font-size: 1.25rem;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.has-association {\n background: white;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.has-association.priority-1 {\n border-color: #28a745;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.has-association.priority-2 {\n border-color: #20c997;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.has-association.priority-3 {\n border-color: #ffc107;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.has-association.priority-4 {\n border-color: #fd7e14;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.has-association.priority-5 {\n border-color: #dc3545;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.has-association.inactive {\n opacity: 0.6;\n background: #f8f9fa;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.has-association.new {\n box-shadow: 0 0 0 2px #28a745;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell.has-association.modified {\n box-shadow: 0 0 0 2px #ffc107;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n gap: 0.25rem;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .priority-badge {\n background: #007bff;\n color: white;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.75rem;\n font-weight: 600;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .priority-badge.priority-1 {\n background: #28a745;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .priority-badge.priority-2 {\n background: #20c997;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .priority-badge.priority-3 {\n background: #ffc107;\n color: #212529;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .priority-badge.priority-4 {\n background: #fd7e14;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .priority-badge.priority-5 {\n background: #dc3545;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .status-indicator {\n font-size: 0.75rem;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .status-indicator.inactive {\n color: #dc3545;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .change-indicator {\n position: absolute;\n top: 2px;\n right: 2px;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n font-size: 0.625rem;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .change-indicator.new {\n background: #28a745;\n color: white;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .change-indicator.modified {\n background: #ffc107;\n color: #212529;\n}\n.model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell .cell-content .performance-overlay {\n position: absolute;\n bottom: 2px;\n left: 2px;\n right: 2px;\n background: rgba(0, 0, 0, 0.8);\n color: white;\n border-radius: 0.25rem;\n padding: 0.125rem;\n font-size: 0.625rem;\n}\n.model-prompt-priority-matrix .list-container {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.model-prompt-priority-matrix .list-container .list-header {\n margin-bottom: 1.5rem;\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 0.5rem;\n padding: 1rem;\n}\n.model-prompt-priority-matrix .list-container .list-header .list-controls {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n}\n.model-prompt-priority-matrix .list-container .list-header .list-controls .sort-controls,\n.model-prompt-priority-matrix .list-container .list-header .list-controls .filter-controls {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.model-prompt-priority-matrix .list-container .list-header .list-controls .sort-controls .form-label,\n.model-prompt-priority-matrix .list-container .list-header .list-controls .filter-controls .form-label {\n margin: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n.model-prompt-priority-matrix .list-container .list-header .list-controls .sort-controls .form-select,\n.model-prompt-priority-matrix .list-container .list-header .list-controls .filter-controls .form-select {\n min-width: 120px;\n}\n.model-prompt-priority-matrix .list-container .list-header .list-controls .sort-controls .form-check,\n.model-prompt-priority-matrix .list-container .list-header .list-controls .filter-controls .form-check {\n margin: 0;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item {\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 0.5rem;\n padding: 1rem;\n margin-bottom: 1rem;\n transition: all 0.2s ease;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item:hover {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n transform: translateY(-1px);\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item.inactive {\n opacity: 0.7;\n background: #f8f9fa;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item.new {\n border-color: #28a745;\n border-left-width: 4px;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item.modified {\n border-color: #ffc107;\n border-left-width: 4px;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 0.75rem;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-header .association-names {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-header .association-names .prompt-name,\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-header .association-names .model-name {\n color: #495057;\n font-weight: 500;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-header .association-names i {\n color: #6c757d;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-header .association-actions {\n display: flex;\n gap: 0.5rem;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-header .association-actions .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .detail-label {\n font-size: 0.875rem;\n color: #6c757d;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .priority-badge {\n background: #007bff;\n color: white;\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 600;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .priority-badge.priority-1 {\n background: #28a745;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .priority-badge.priority-2 {\n background: #20c997;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .priority-badge.priority-3 {\n background: #ffc107;\n color: #212529;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .priority-badge.priority-4 {\n background: #fd7e14;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .priority-badge.priority-5 {\n background: #dc3545;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .status-badge {\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 500;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .status-badge.badge-success {\n background: #d4edda;\n color: #155724;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .status-badge.badge-secondary {\n background: #e2e3e5;\n color: #383d41;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .change-badge {\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n font-size: 0.75rem;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .change-badge.new {\n background: #d4edda;\n color: #155724;\n}\n.model-prompt-priority-matrix .list-container .associations-list .association-item .association-details .detail-item .change-badge.modified {\n background: #fff3cd;\n color: #856404;\n}\n.model-prompt-priority-matrix .list-container .associations-list .no-associations-message {\n text-align: center;\n padding: 3rem 1rem;\n color: #6c757d;\n}\n.model-prompt-priority-matrix .list-container .associations-list .no-associations-message i {\n font-size: 3rem;\n margin-bottom: 1rem;\n display: block;\n opacity: 0.5;\n}\n.model-prompt-priority-matrix .list-container .associations-list .no-associations-message p {\n margin: 0;\n font-size: 1rem;\n line-height: 1.5;\n}\n.model-prompt-priority-matrix .error-container {\n padding: 1rem;\n}\n.model-prompt-priority-matrix .error-container .alert {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n@media (max-width: 1200px) {\n .model-prompt-priority-matrix .matrix-toolbar .toolbar-section {\n min-width: 100%;\n justify-content: space-between;\n }\n .model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell {\n width: 60px;\n height: 50px;\n }\n}\n@media (max-width: 768px) {\n .model-prompt-priority-matrix .matrix-toolbar {\n padding: 0.75rem;\n }\n .model-prompt-priority-matrix .matrix-toolbar .toolbar-section {\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n .model-prompt-priority-matrix .bulk-edit-panel {\n padding: 0.75rem;\n }\n .model-prompt-priority-matrix .bulk-edit-panel .bulk-edit-controls {\n flex-direction: column;\n align-items: stretch;\n gap: 0.75rem;\n }\n .model-prompt-priority-matrix .matrix-container .matrix-scroll {\n padding: 0.75rem;\n }\n .model-prompt-priority-matrix .matrix-container .matrix-scroll .matrix-table .matrix-cell {\n width: 50px;\n height: 40px;\n }\n .model-prompt-priority-matrix .list-container {\n padding: 0.75rem;\n }\n .model-prompt-priority-matrix .list-container .list-header .list-controls {\n flex-direction: column;\n align-items: stretch;\n }\n .model-prompt-priority-matrix .list-container .associations-list .association-item .association-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.75rem;\n }\n .model-prompt-priority-matrix .list-container .associations-list .association-item .association-details {\n flex-direction: column;\n align-items: flex-start;\n }\n}\n"] }]
922
920
  }], () => [{ type: i1.MJNotificationService }], { selectedPrompts: [{
923
921
  type: Input
924
922
  }], selectedModels: [{