@memberjunction/ng-dashboards 5.34.0 → 5.35.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 (348) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  41. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  45. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/models/model-management.component.js +370 -425
  47. package/dist/AI/components/models/model-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  49. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  51. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  52. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  53. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  55. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  57. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.js +403 -362
  59. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  60. package/dist/AI/components/tags/tags-resource.component.js +781 -783
  61. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  62. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  67. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  68. package/dist/Actions/components/actions-overview.component.js +79 -30
  69. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  70. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  71. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  72. package/dist/Actions/components/execution-monitoring.component.js +196 -142
  73. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  74. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  75. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  76. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  77. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  78. package/dist/Actions/components/explorer/index.d.ts +0 -1
  79. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/index.js +0 -1
  81. package/dist/Actions/components/explorer/index.js.map +1 -1
  82. package/dist/Admin/admin-data-schema.component.js +32 -40
  83. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  84. package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
  85. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  86. package/dist/Admin/admin-identity-access.component.js +32 -40
  87. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  88. package/dist/Admin/admin-monitoring.component.js +32 -40
  89. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  90. package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
  91. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  92. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  93. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  94. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  95. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  96. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  97. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  98. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  99. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  100. package/dist/Communication/communication-logs-resource.component.js +80 -99
  101. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  102. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  103. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  104. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  105. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  106. package/dist/Communication/communication-providers-resource.component.js +44 -45
  107. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  108. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  109. package/dist/Communication/communication-runs-resource.component.js +60 -58
  110. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  111. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  112. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  113. package/dist/Communication/communication-templates-resource.component.js +139 -162
  114. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  115. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  116. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  117. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  118. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  119. package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
  120. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  121. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  122. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  123. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  124. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  125. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  126. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  127. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  128. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  129. package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
  130. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  131. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  132. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  133. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
  134. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  135. package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
  136. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  137. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  138. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  139. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
  140. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  141. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
  142. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  143. package/dist/Home/home-dashboard.component.d.ts +6 -0
  144. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  145. package/dist/Home/home-dashboard.component.js +521 -485
  146. package/dist/Home/home-dashboard.component.js.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  148. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  149. package/dist/Integration/components/activity/activity.component.js +309 -318
  150. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  151. package/dist/Integration/components/connections/connections.component.js +866 -847
  152. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.js +182 -163
  156. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  157. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.js +241 -241
  162. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  163. package/dist/Integration/integration.module.d.ts +1 -1
  164. package/dist/Integration/integration.module.d.ts.map +1 -1
  165. package/dist/Integration/integration.module.js +28 -1
  166. package/dist/Integration/integration.module.js.map +1 -1
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
  168. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  171. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  173. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  174. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  175. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  177. package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
  178. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  179. package/dist/Lists/components/lists-browse-resource.component.js +486 -532
  180. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  181. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  182. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  183. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  184. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  185. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  186. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  187. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  188. package/dist/Lists/components/lists-operations-resource.component.js +234 -246
  189. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  190. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  191. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  192. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  193. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  194. package/dist/MCP/mcp.module.d.ts +1 -1
  195. package/dist/MCP/mcp.module.d.ts.map +1 -1
  196. package/dist/MCP/mcp.module.js +34 -1
  197. package/dist/MCP/mcp.module.js.map +1 -1
  198. package/dist/Permissions/audit-log-resource.component.js +76 -85
  199. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  200. package/dist/Permissions/resource-access-resource.component.js +64 -69
  201. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  202. package/dist/Permissions/user-access-resource.component.js +63 -74
  203. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  204. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  205. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  206. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  207. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  208. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  209. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  210. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  211. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  213. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  217. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  218. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  219. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  220. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  221. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  222. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  223. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  224. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  225. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  226. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  227. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  228. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  229. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  230. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  231. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  232. package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
  233. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  234. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -0
  235. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  236. package/dist/SystemDiagnostics/system-diagnostics.component.js +812 -784
  237. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  239. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  240. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  241. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  243. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  244. package/dist/Testing/components/testing-analytics.component.js +420 -393
  245. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  249. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  251. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  252. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  253. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  255. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  256. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  257. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  259. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  260. package/dist/Testing/components/testing-explorer.component.js +587 -608
  261. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  263. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  264. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  265. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  266. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  267. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  268. package/dist/Testing/components/testing-review.component.js +310 -274
  269. package/dist/Testing/components/testing-review.component.js.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  271. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  272. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  273. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  275. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  276. package/dist/Testing/components/testing-runs.component.js +307 -273
  277. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  279. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  280. package/dist/Testing/testing-dashboard.component.js +107 -93
  281. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  282. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  283. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  285. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  287. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  288. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  289. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  290. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  291. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  292. package/dist/actions-dashboards.module.d.ts +15 -16
  293. package/dist/actions-dashboards.module.d.ts.map +1 -1
  294. package/dist/actions-dashboards.module.js +34 -11
  295. package/dist/actions-dashboards.module.js.map +1 -1
  296. package/dist/ai-dashboards.module.d.ts +45 -48
  297. package/dist/ai-dashboards.module.d.ts.map +1 -1
  298. package/dist/ai-dashboards.module.js +36 -10
  299. package/dist/ai-dashboards.module.js.map +1 -1
  300. package/dist/archiving-dashboards.module.d.ts +2 -1
  301. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  302. package/dist/archiving-dashboards.module.js +12 -2
  303. package/dist/archiving-dashboards.module.js.map +1 -1
  304. package/dist/communication-dashboards.module.d.ts +2 -1
  305. package/dist/communication-dashboards.module.d.ts.map +1 -1
  306. package/dist/communication-dashboards.module.js +24 -3
  307. package/dist/communication-dashboards.module.js.map +1 -1
  308. package/dist/core-dashboards.module.d.ts +1 -1
  309. package/dist/core-dashboards.module.d.ts.map +1 -1
  310. package/dist/core-dashboards.module.js +31 -1
  311. package/dist/core-dashboards.module.js.map +1 -1
  312. package/dist/credentials-dashboards.module.d.ts +1 -1
  313. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  314. package/dist/credentials-dashboards.module.js +28 -1
  315. package/dist/credentials-dashboards.module.js.map +1 -1
  316. package/dist/lists-dashboards.module.d.ts +1 -1
  317. package/dist/lists-dashboards.module.d.ts.map +1 -1
  318. package/dist/lists-dashboards.module.js +28 -1
  319. package/dist/lists-dashboards.module.js.map +1 -1
  320. package/dist/public-api.d.ts +2 -2
  321. package/dist/public-api.d.ts.map +1 -1
  322. package/dist/public-api.js +3 -3
  323. package/dist/public-api.js.map +1 -1
  324. package/dist/scheduling-dashboards.module.d.ts +1 -1
  325. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  326. package/dist/scheduling-dashboards.module.js +31 -1
  327. package/dist/scheduling-dashboards.module.js.map +1 -1
  328. package/dist/testing-dashboards.module.d.ts +8 -7
  329. package/dist/testing-dashboards.module.d.ts.map +1 -1
  330. package/dist/testing-dashboards.module.js +30 -0
  331. package/dist/testing-dashboards.module.js.map +1 -1
  332. package/package.json +52 -52
  333. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  334. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  335. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  336. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  339. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  340. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  342. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  343. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  344. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  346. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  347. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  348. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -24,139 +24,152 @@ import { AIEngineBase } from '@memberjunction/ai-engine-base';
24
24
  import { MJNotificationService } from '@memberjunction/ng-notifications';
25
25
  import { CronToHumanReadable } from '../autotagging/autotagging-pipeline-resource.component';
26
26
  import * as i0 from "@angular/core";
27
- import * as i1 from "@angular/forms";
28
- import * as i2 from "@memberjunction/ng-code-editor";
29
- import * as i3 from "@memberjunction/ng-shared-generic";
30
- import * as i4 from "../widgets/kpi-card.component";
31
- import * as i5 from "@angular/common";
27
+ import * as i1 from "@angular/common";
28
+ import * as i2 from "@angular/forms";
29
+ import * as i3 from "@memberjunction/ng-code-editor";
30
+ import * as i4 from "@memberjunction/ng-shared-generic";
31
+ import * as i5 from "../widgets/kpi-card.component";
32
+ import * as i6 from "@memberjunction/ng-ui-components";
32
33
  const _c0 = ["entitySearchInput"];
33
34
  const _forTrack0 = ($index, $item) => $item.title;
34
35
  const _forTrack1 = ($index, $item) => $item.EntityDocumentID;
35
36
  const _forTrack2 = ($index, $item) => $item.ID;
36
37
  const _forTrack3 = ($index, $item) => $item.SchemaName;
37
38
  const _forTrack4 = ($index, $item) => $item.name;
38
- function VectorManagementResourceComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "div", 1);
40
- i0.ɵɵelement(1, "mj-loading", 2);
41
- i0.ɵɵelementEnd();
39
+ function VectorManagementResourceComponent_Conditional_0_ng_container_5_Template(rf, ctx) { if (rf & 1) {
40
+ i0.ɵɵelementContainer(0);
42
41
  } }
43
- function VectorManagementResourceComponent_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
44
- const _r2 = i0.ɵɵgetCurrentView();
45
- i0.ɵɵelementStart(0, "div", 4)(1, "button", 40);
46
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ViewMode = "index"); });
47
- i0.ɵɵelement(2, "i", 41);
48
- i0.ɵɵtext(3, " Index View ");
49
- i0.ɵɵelementEnd();
50
- i0.ɵɵelementStart(4, "button", 40);
51
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ViewMode = "operations"); });
52
- i0.ɵɵelement(5, "i", 42);
53
- i0.ɵɵtext(6, " Operations ");
42
+ function VectorManagementResourceComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
43
+ const _r1 = i0.ɵɵgetCurrentView();
44
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 2)(2, "div", 3)(3, "mj-view-toggle", 4);
45
+ i0.ɵɵlistener("KeyChange", function VectorManagementResourceComponent_Conditional_0_Template_mj_view_toggle_KeyChange_3_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ViewMode = $event); });
46
+ i0.ɵɵelementEnd()()();
47
+ i0.ɵɵelementStart(4, "mj-page-body", 5);
48
+ i0.ɵɵtemplate(5, VectorManagementResourceComponent_Conditional_0_ng_container_5_Template, 1, 0, "ng-container", 6);
54
49
  i0.ɵɵelementEnd()();
55
50
  } if (rf & 2) {
56
- const ctx_r2 = i0.ɵɵnextContext(2);
57
- i0.ɵɵadvance();
58
- i0.ɵɵclassProp("view-mode-btn-active", ctx_r2.ViewMode === "index");
51
+ const ctx_r1 = i0.ɵɵnextContext();
52
+ const vectorBody_r3 = i0.ɵɵreference(3);
59
53
  i0.ɵɵadvance(3);
60
- i0.ɵɵclassProp("view-mode-btn-active", ctx_r2.ViewMode === "operations");
54
+ i0.ɵɵproperty("Options", ctx_r1.VectorViewOptions)("ActiveKey", ctx_r1.ViewMode);
55
+ i0.ɵɵadvance();
56
+ i0.ɵɵproperty("Flex", true);
57
+ i0.ɵɵadvance();
58
+ i0.ɵɵproperty("ngTemplateOutlet", vectorBody_r3);
59
+ } }
60
+ function VectorManagementResourceComponent_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
61
+ i0.ɵɵelementContainer(0);
62
+ } }
63
+ function VectorManagementResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
64
+ i0.ɵɵtemplate(0, VectorManagementResourceComponent_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 6);
65
+ } if (rf & 2) {
66
+ i0.ɵɵnextContext();
67
+ const vectorBody_r3 = i0.ɵɵreference(3);
68
+ i0.ɵɵproperty("ngTemplateOutlet", vectorBody_r3);
69
+ } }
70
+ function VectorManagementResourceComponent_ng_template_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelementStart(0, "div", 7);
72
+ i0.ɵɵelement(1, "mj-loading", 8);
73
+ i0.ɵɵelementEnd();
61
74
  } }
62
- function VectorManagementResourceComponent_Conditional_1_For_4_Template(rf, ctx) { if (rf & 1) {
63
- i0.ɵɵelement(0, "app-kpi-card", 6);
75
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
76
+ i0.ɵɵelement(0, "app-kpi-card", 11);
64
77
  } if (rf & 2) {
65
- const card_r4 = ctx.$implicit;
66
- i0.ɵɵproperty("data", card_r4);
78
+ const card_r5 = ctx.$implicit;
79
+ i0.ɵɵproperty("data", card_r5);
67
80
  } }
68
- function VectorManagementResourceComponent_Conditional_1_Conditional_19_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelementStart(0, "div", 18);
70
- i0.ɵɵelement(1, "i", 43);
81
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
82
+ i0.ɵɵelementStart(0, "div", 23);
83
+ i0.ɵɵelement(1, "i", 45);
71
84
  i0.ɵɵelementStart(2, "p");
72
85
  i0.ɵɵtext(3, "No entity documents configured for vectorization.");
73
86
  i0.ɵɵelementEnd()();
74
87
  } }
75
- function VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Conditional_13_Template(rf, ctx) { if (rf & 1) {
88
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Conditional_13_Template(rf, ctx) { if (rf & 1) {
76
89
  i0.ɵɵtext(0);
77
90
  } if (rf & 2) {
78
- const row_r6 = i0.ɵɵnextContext().$implicit;
79
- i0.ɵɵtextInterpolate1(" ", row_r6.PercentComplete, "% ");
91
+ const row_r7 = i0.ɵɵnextContext().$implicit;
92
+ i0.ɵɵtextInterpolate1(" ", row_r7.PercentComplete, "% ");
80
93
  } }
81
- function VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Conditional_14_Template(rf, ctx) { if (rf & 1) {
94
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Conditional_14_Template(rf, ctx) { if (rf & 1) {
82
95
  i0.ɵɵtext(0);
83
96
  } if (rf & 2) {
84
- const row_r6 = i0.ɵɵnextContext().$implicit;
85
- i0.ɵɵtextInterpolate1(" ", row_r6.Status, " ");
97
+ const row_r7 = i0.ɵɵnextContext().$implicit;
98
+ i0.ɵɵtextInterpolate1(" ", row_r7.Status, " ");
86
99
  } }
87
- function VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Conditional_17_Template(rf, ctx) { if (rf & 1) {
88
- i0.ɵɵelement(0, "i", 58);
100
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Conditional_17_Template(rf, ctx) { if (rf & 1) {
101
+ i0.ɵɵelement(0, "i", 60);
89
102
  i0.ɵɵtext(1);
90
103
  } if (rf & 2) {
91
- const row_r6 = i0.ɵɵnextContext().$implicit;
104
+ const row_r7 = i0.ɵɵnextContext().$implicit;
92
105
  i0.ɵɵadvance();
93
- i0.ɵɵtextInterpolate1(" ", row_r6.PercentComplete > 0 ? row_r6.PercentComplete + "%" : "Sync", " ");
106
+ i0.ɵɵtextInterpolate1(" ", row_r7.PercentComplete > 0 ? row_r7.PercentComplete + "%" : "Sync", " ");
94
107
  } }
95
- function VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Conditional_18_Template(rf, ctx) { if (rf & 1) {
96
- i0.ɵɵelement(0, "i", 59);
108
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Conditional_18_Template(rf, ctx) { if (rf & 1) {
109
+ i0.ɵɵelement(0, "i", 61);
97
110
  i0.ɵɵtext(1, " Sync ");
98
111
  } }
99
- function VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Template(rf, ctx) { if (rf & 1) {
100
- const _r5 = i0.ɵɵgetCurrentView();
101
- i0.ɵɵelementStart(0, "tr")(1, "td", 47);
112
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Template(rf, ctx) { if (rf & 1) {
113
+ const _r6 = i0.ɵɵgetCurrentView();
114
+ i0.ɵɵelementStart(0, "tr")(1, "td", 49);
102
115
  i0.ɵɵtext(2);
103
116
  i0.ɵɵelementEnd();
104
- i0.ɵɵelementStart(3, "td", 48);
117
+ i0.ɵɵelementStart(3, "td", 50);
105
118
  i0.ɵɵtext(4);
106
119
  i0.ɵɵelementEnd();
107
- i0.ɵɵelementStart(5, "td", 49);
120
+ i0.ɵɵelementStart(5, "td", 51);
108
121
  i0.ɵɵtext(6);
109
122
  i0.ɵɵpipe(7, "number");
110
123
  i0.ɵɵelementEnd();
111
- i0.ɵɵelementStart(8, "td", 50);
124
+ i0.ɵɵelementStart(8, "td", 52);
112
125
  i0.ɵɵtext(9);
113
126
  i0.ɵɵelementEnd();
114
- i0.ɵɵelementStart(10, "td")(11, "span", 51);
127
+ i0.ɵɵelementStart(10, "td")(11, "span", 53);
115
128
  i0.ɵɵelement(12, "i");
116
- i0.ɵɵconditionalCreate(13, VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Conditional_13_Template, 1, 1)(14, VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Conditional_14_Template, 1, 1);
129
+ i0.ɵɵconditionalCreate(13, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Conditional_13_Template, 1, 1)(14, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Conditional_14_Template, 1, 1);
117
130
  i0.ɵɵelementEnd()();
118
- i0.ɵɵelementStart(15, "td", 52)(16, "button", 53);
119
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Template_button_click_16_listener() { const row_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SyncEntity(row_r6.EntityDocumentID)); });
120
- i0.ɵɵconditionalCreate(17, VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Conditional_17_Template, 2, 1)(18, VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Conditional_18_Template, 2, 0);
131
+ i0.ɵɵelementStart(15, "td", 54)(16, "button", 55);
132
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Template_button_click_16_listener() { const row_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SyncEntity(row_r7.EntityDocumentID)); });
133
+ i0.ɵɵconditionalCreate(17, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Conditional_17_Template, 2, 1)(18, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Conditional_18_Template, 2, 0);
121
134
  i0.ɵɵelementEnd();
122
- i0.ɵɵelementStart(19, "button", 54);
123
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Template_button_click_19_listener() { const row_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OpenScheduleSyncDialog(row_r6.EntityDocumentID)); });
124
- i0.ɵɵelement(20, "i", 55);
135
+ i0.ɵɵelementStart(19, "button", 56);
136
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Template_button_click_19_listener() { const row_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OpenScheduleSyncDialog(row_r7.EntityDocumentID)); });
137
+ i0.ɵɵelement(20, "i", 57);
125
138
  i0.ɵɵelementEnd();
126
- i0.ɵɵelementStart(21, "button", 56);
127
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Template_button_click_21_listener() { const row_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OpenEditPanel(row_r6.EntityDocumentID)); });
128
- i0.ɵɵelement(22, "i", 57);
139
+ i0.ɵɵelementStart(21, "button", 58);
140
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Template_button_click_21_listener() { const row_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OpenEditPanel(row_r7.EntityDocumentID)); });
141
+ i0.ɵɵelement(22, "i", 59);
129
142
  i0.ɵɵelementEnd()()();
130
143
  } if (rf & 2) {
131
- const row_r6 = ctx.$implicit;
132
- const ctx_r2 = i0.ɵɵnextContext(3);
144
+ const row_r7 = ctx.$implicit;
145
+ const ctx_r1 = i0.ɵɵnextContext(4);
133
146
  i0.ɵɵadvance(2);
134
- i0.ɵɵtextInterpolate(row_r6.EntityName);
147
+ i0.ɵɵtextInterpolate(row_r7.EntityName);
135
148
  i0.ɵɵadvance(2);
136
- i0.ɵɵtextInterpolate(row_r6.DocumentName);
149
+ i0.ɵɵtextInterpolate(row_r7.DocumentName);
137
150
  i0.ɵɵadvance(2);
138
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(7, 11, row_r6.VectorCount));
151
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(7, 11, row_r7.VectorCount));
139
152
  i0.ɵɵadvance(3);
140
- i0.ɵɵtextInterpolate(ctx_r2.FormatDate(row_r6.LastSynced));
153
+ i0.ɵɵtextInterpolate(ctx_r1.FormatDate(row_r7.LastSynced));
141
154
  i0.ɵɵadvance(2);
142
- i0.ɵɵclassMap(ctx_r2.GetStatusClass(row_r6.Status));
155
+ i0.ɵɵclassMap(ctx_r1.GetStatusClass(row_r7.Status));
143
156
  i0.ɵɵadvance();
144
- i0.ɵɵclassMap(ctx_r2.GetStatusIcon(row_r6.Status));
157
+ i0.ɵɵclassMap(ctx_r1.GetStatusIcon(row_r7.Status));
145
158
  i0.ɵɵadvance();
146
- i0.ɵɵconditional(row_r6.Status === "Syncing" && row_r6.PercentComplete > 0 ? 13 : 14);
159
+ i0.ɵɵconditional(row_r7.Status === "Syncing" && row_r7.PercentComplete > 0 ? 13 : 14);
147
160
  i0.ɵɵadvance(3);
148
- i0.ɵɵproperty("disabled", ctx_r2.SyncingIds.has(row_r6.EntityDocumentID));
161
+ i0.ɵɵproperty("disabled", ctx_r1.SyncingIds.has(row_r7.EntityDocumentID));
149
162
  i0.ɵɵadvance();
150
- i0.ɵɵconditional(ctx_r2.SyncingIds.has(row_r6.EntityDocumentID) ? 17 : 18);
163
+ i0.ɵɵconditional(ctx_r1.SyncingIds.has(row_r7.EntityDocumentID) ? 17 : 18);
151
164
  } }
152
- function VectorManagementResourceComponent_Conditional_1_Conditional_20_Template(rf, ctx) { if (rf & 1) {
153
- i0.ɵɵelementStart(0, "div", 19)(1, "table", 44)(2, "thead")(3, "tr")(4, "th");
165
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_Template(rf, ctx) { if (rf & 1) {
166
+ i0.ɵɵelementStart(0, "div", 24)(1, "table", 46)(2, "thead")(3, "tr")(4, "th");
154
167
  i0.ɵɵtext(5, "Entity");
155
168
  i0.ɵɵelementEnd();
156
169
  i0.ɵɵelementStart(6, "th");
157
170
  i0.ɵɵtext(7, "Document");
158
171
  i0.ɵɵelementEnd();
159
- i0.ɵɵelementStart(8, "th", 45);
172
+ i0.ɵɵelementStart(8, "th", 47);
160
173
  i0.ɵɵtext(9, "Vectors");
161
174
  i0.ɵɵelementEnd();
162
175
  i0.ɵɵelementStart(10, "th");
@@ -165,793 +178,795 @@ function VectorManagementResourceComponent_Conditional_1_Conditional_20_Template
165
178
  i0.ɵɵelementStart(12, "th");
166
179
  i0.ɵɵtext(13, "Status");
167
180
  i0.ɵɵelementEnd();
168
- i0.ɵɵelementStart(14, "th", 46);
181
+ i0.ɵɵelementStart(14, "th", 48);
169
182
  i0.ɵɵtext(15, "Actions");
170
183
  i0.ɵɵelementEnd()()();
171
184
  i0.ɵɵelementStart(16, "tbody");
172
- i0.ɵɵrepeaterCreate(17, VectorManagementResourceComponent_Conditional_1_Conditional_20_For_18_Template, 23, 13, "tr", null, _forTrack1);
185
+ i0.ɵɵrepeaterCreate(17, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_For_18_Template, 23, 13, "tr", null, _forTrack1);
173
186
  i0.ɵɵelementEnd()()();
174
187
  } if (rf & 2) {
175
- const ctx_r2 = i0.ɵɵnextContext(2);
188
+ const ctx_r1 = i0.ɵɵnextContext(3);
176
189
  i0.ɵɵadvance(17);
177
- i0.ɵɵrepeater(ctx_r2.SyncRows);
190
+ i0.ɵɵrepeater(ctx_r1.SyncRows);
178
191
  } }
179
- function VectorManagementResourceComponent_Conditional_1_Conditional_42_Template(rf, ctx) { if (rf & 1) {
180
- i0.ɵɵelementStart(0, "div", 30)(1, "span", 31);
192
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_41_Template(rf, ctx) { if (rf & 1) {
193
+ i0.ɵɵelementStart(0, "div", 35)(1, "span", 36);
181
194
  i0.ɵɵtext(2, "Dimensions");
182
195
  i0.ɵɵelementEnd();
183
- i0.ɵɵelementStart(3, "span", 32);
196
+ i0.ɵɵelementStart(3, "span", 37);
184
197
  i0.ɵɵtext(4);
185
198
  i0.ɵɵpipe(5, "number");
186
199
  i0.ɵɵelementEnd()();
187
200
  } if (rf & 2) {
188
- const ctx_r2 = i0.ɵɵnextContext(2);
201
+ const ctx_r1 = i0.ɵɵnextContext(3);
189
202
  i0.ɵɵadvance(4);
190
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 1, ctx_r2.EmbeddingModel.Dimensions));
203
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 1, ctx_r1.EmbeddingModel.Dimensions));
191
204
  } }
192
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_20_Template(rf, ctx) { if (rf & 1) {
193
- i0.ɵɵelement(0, "i", 58);
205
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_20_Template(rf, ctx) { if (rf & 1) {
206
+ i0.ɵɵelement(0, "i", 60);
194
207
  i0.ɵɵtext(1, " Regenerating... ");
195
208
  } }
196
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_21_Template(rf, ctx) { if (rf & 1) {
197
- i0.ɵɵelement(0, "i", 14);
209
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_21_Template(rf, ctx) { if (rf & 1) {
210
+ i0.ɵɵelement(0, "i", 19);
198
211
  i0.ɵɵtext(1, " Regenerate with AI ");
199
212
  } }
200
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_24_For_5_Template(rf, ctx) { if (rf & 1) {
201
- i0.ɵɵelementStart(0, "span", 85);
213
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_24_For_5_Template(rf, ctx) { if (rf & 1) {
214
+ i0.ɵɵelementStart(0, "span", 87);
202
215
  i0.ɵɵtext(1);
203
216
  i0.ɵɵelementEnd();
204
217
  } if (rf & 2) {
205
- const field_r8 = ctx.$implicit;
218
+ const field_r9 = ctx.$implicit;
206
219
  i0.ɵɵadvance();
207
- i0.ɵɵtextInterpolate(field_r8);
220
+ i0.ɵɵtextInterpolate(field_r9);
208
221
  } }
209
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_24_Template(rf, ctx) { if (rf & 1) {
210
- i0.ɵɵelementStart(0, "div", 68)(1, "label", 69);
222
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_24_Template(rf, ctx) { if (rf & 1) {
223
+ i0.ɵɵelementStart(0, "div", 70)(1, "label", 71);
211
224
  i0.ɵɵtext(2, "Selected Fields");
212
225
  i0.ɵɵelementEnd();
213
- i0.ɵɵelementStart(3, "div", 84);
214
- i0.ɵɵrepeaterCreate(4, VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_24_For_5_Template, 2, 1, "span", 85, i0.ɵɵrepeaterTrackByIdentity);
226
+ i0.ɵɵelementStart(3, "div", 86);
227
+ i0.ɵɵrepeaterCreate(4, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_24_For_5_Template, 2, 1, "span", 87, i0.ɵɵrepeaterTrackByIdentity);
215
228
  i0.ɵɵelementEnd()();
216
229
  } if (rf & 2) {
217
- const ctx_r2 = i0.ɵɵnextContext(3);
230
+ const ctx_r1 = i0.ɵɵnextContext(4);
218
231
  i0.ɵɵadvance(4);
219
- i0.ɵɵrepeater(ctx_r2.EditDocSelectedFields);
232
+ i0.ɵɵrepeater(ctx_r1.EditDocSelectedFields);
220
233
  } }
221
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_For_34_Template(rf, ctx) { if (rf & 1) {
222
- i0.ɵɵelementStart(0, "option", 77);
234
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_For_34_Template(rf, ctx) { if (rf & 1) {
235
+ i0.ɵɵelementStart(0, "option", 79);
223
236
  i0.ɵɵtext(1);
224
237
  i0.ɵɵelementEnd();
225
238
  } if (rf & 2) {
226
- const model_r9 = ctx.$implicit;
227
- i0.ɵɵproperty("value", model_r9.ID);
239
+ const model_r10 = ctx.$implicit;
240
+ i0.ɵɵproperty("value", model_r10.ID);
228
241
  i0.ɵɵadvance();
229
- i0.ɵɵtextInterpolate(model_r9.Name);
242
+ i0.ɵɵtextInterpolate(model_r10.Name);
230
243
  } }
231
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_For_40_Template(rf, ctx) { if (rf & 1) {
232
- i0.ɵɵelementStart(0, "option", 77);
244
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_For_40_Template(rf, ctx) { if (rf & 1) {
245
+ i0.ɵɵelementStart(0, "option", 79);
233
246
  i0.ɵɵtext(1);
234
247
  i0.ɵɵelementEnd();
235
248
  } if (rf & 2) {
236
- const db_r10 = ctx.$implicit;
237
- i0.ɵɵproperty("value", db_r10.ID);
249
+ const db_r11 = ctx.$implicit;
250
+ i0.ɵɵproperty("value", db_r11.ID);
238
251
  i0.ɵɵadvance();
239
- i0.ɵɵtextInterpolate(db_r10.Name);
252
+ i0.ɵɵtextInterpolate(db_r11.Name);
240
253
  } }
241
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_44_For_4_Template(rf, ctx) { if (rf & 1) {
242
- i0.ɵɵelementStart(0, "option", 77);
254
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_44_For_4_Template(rf, ctx) { if (rf & 1) {
255
+ i0.ɵɵelementStart(0, "option", 79);
243
256
  i0.ɵɵtext(1);
244
257
  i0.ɵɵelementEnd();
245
258
  } if (rf & 2) {
246
- const idx_r12 = ctx.$implicit;
247
- i0.ɵɵproperty("value", idx_r12.ID);
259
+ const idx_r13 = ctx.$implicit;
260
+ i0.ɵɵproperty("value", idx_r13.ID);
248
261
  i0.ɵɵadvance();
249
- i0.ɵɵtextInterpolate(idx_r12.Name);
262
+ i0.ɵɵtextInterpolate(idx_r13.Name);
250
263
  } }
251
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_44_Template(rf, ctx) { if (rf & 1) {
252
- const _r11 = i0.ɵɵgetCurrentView();
253
- i0.ɵɵelementStart(0, "select", 76);
254
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_44_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.EditDocVectorIndexID, $event) || (ctx_r2.EditDocVectorIndexID = $event); return i0.ɵɵresetView($event); });
255
- i0.ɵɵelementStart(1, "option", 86);
264
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_44_Template(rf, ctx) { if (rf & 1) {
265
+ const _r12 = i0.ɵɵgetCurrentView();
266
+ i0.ɵɵelementStart(0, "select", 78);
267
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_44_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.EditDocVectorIndexID, $event) || (ctx_r1.EditDocVectorIndexID = $event); return i0.ɵɵresetView($event); });
268
+ i0.ɵɵelementStart(1, "option", 88);
256
269
  i0.ɵɵtext(2, "Auto (create/find matching index)");
257
270
  i0.ɵɵelementEnd();
258
- i0.ɵɵrepeaterCreate(3, VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_44_For_4_Template, 2, 2, "option", 77, _forTrack2);
271
+ i0.ɵɵrepeaterCreate(3, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_44_For_4_Template, 2, 2, "option", 79, _forTrack2);
259
272
  i0.ɵɵelementEnd();
260
273
  } if (rf & 2) {
261
- const ctx_r2 = i0.ɵɵnextContext(3);
262
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.EditDocVectorIndexID);
274
+ const ctx_r1 = i0.ɵɵnextContext(4);
275
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditDocVectorIndexID);
263
276
  i0.ɵɵadvance(3);
264
- i0.ɵɵrepeater(ctx_r2.EditFilteredIndexes);
277
+ i0.ɵɵrepeater(ctx_r1.EditFilteredIndexes);
265
278
  } }
266
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_45_Template(rf, ctx) { if (rf & 1) {
267
- i0.ɵɵelementStart(0, "span", 79);
279
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_45_Template(rf, ctx) { if (rf & 1) {
280
+ i0.ɵɵelementStart(0, "span", 81);
268
281
  i0.ɵɵtext(1, " No indexes for this database \u2014 one will be created automatically on sync ");
269
282
  i0.ɵɵelementEnd();
270
283
  } }
271
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_55_Template(rf, ctx) { if (rf & 1) {
272
- i0.ɵɵelement(0, "mj-loading", 83);
284
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_55_Template(rf, ctx) { if (rf & 1) {
285
+ i0.ɵɵelement(0, "mj-loading", 85);
273
286
  } }
274
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_56_Template(rf, ctx) { if (rf & 1) {
275
- const _r13 = i0.ɵɵgetCurrentView();
276
- i0.ɵɵelementStart(0, "button", 87);
277
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_56_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SaveEditedDocument()); });
278
- i0.ɵɵelement(1, "i", 88);
287
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_56_Template(rf, ctx) { if (rf & 1) {
288
+ const _r14 = i0.ɵɵgetCurrentView();
289
+ i0.ɵɵelementStart(0, "button", 89);
290
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_56_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SaveEditedDocument()); });
291
+ i0.ɵɵelement(1, "i", 90);
279
292
  i0.ɵɵtext(2, " Save Changes ");
280
293
  i0.ɵɵelementEnd();
281
- i0.ɵɵelementStart(3, "button", 89);
282
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_56_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.DeleteEntityDocument()); });
283
- i0.ɵɵelement(4, "i", 90);
294
+ i0.ɵɵelementStart(3, "button", 91);
295
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_56_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.DeleteEntityDocument()); });
296
+ i0.ɵɵelement(4, "i", 92);
284
297
  i0.ɵɵtext(5, " Delete ");
285
298
  i0.ɵɵelementEnd();
286
- i0.ɵɵelementStart(6, "button", 91);
287
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_56_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseEditPanel()); });
299
+ i0.ɵɵelementStart(6, "button", 93);
300
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_56_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.CloseEditPanel()); });
288
301
  i0.ɵɵtext(7, " Cancel ");
289
302
  i0.ɵɵelementEnd();
290
303
  } }
291
- function VectorManagementResourceComponent_Conditional_1_Conditional_55_Template(rf, ctx) { if (rf & 1) {
292
- const _r7 = i0.ɵɵgetCurrentView();
293
- i0.ɵɵelementStart(0, "div", 60);
294
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseEditPanel()); });
295
- i0.ɵɵelementStart(1, "div", 61);
296
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r7); return i0.ɵɵresetView($event.stopPropagation()); });
297
- i0.ɵɵelementStart(2, "div", 62)(3, "h3", 63);
298
- i0.ɵɵelement(4, "i", 57);
304
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template(rf, ctx) { if (rf & 1) {
305
+ const _r8 = i0.ɵɵgetCurrentView();
306
+ i0.ɵɵelementStart(0, "div", 62);
307
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseEditPanel()); });
308
+ i0.ɵɵelementStart(1, "div", 63);
309
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
310
+ i0.ɵɵelementStart(2, "div", 64)(3, "h3", 65);
311
+ i0.ɵɵelement(4, "i", 59);
299
312
  i0.ɵɵtext(5, " Edit Entity Document ");
300
313
  i0.ɵɵelementEnd();
301
- i0.ɵɵelementStart(6, "button", 64);
302
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseEditPanel()); });
303
- i0.ɵɵelement(7, "i", 65);
314
+ i0.ɵɵelementStart(6, "button", 66);
315
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseEditPanel()); });
316
+ i0.ɵɵelement(7, "i", 67);
304
317
  i0.ɵɵelementEnd()();
305
- i0.ɵɵelementStart(8, "div", 66)(9, "div", 67)(10, "div", 68)(11, "label", 69);
318
+ i0.ɵɵelementStart(8, "div", 68)(9, "div", 69)(10, "div", 70)(11, "label", 71);
306
319
  i0.ɵɵtext(12, "Entity");
307
320
  i0.ɵɵelementEnd();
308
- i0.ɵɵelementStart(13, "span", 70);
321
+ i0.ɵɵelementStart(13, "span", 72);
309
322
  i0.ɵɵtext(14);
310
323
  i0.ɵɵelementEnd()();
311
- i0.ɵɵelementStart(15, "div", 68)(16, "div", 71)(17, "label", 69);
324
+ i0.ɵɵelementStart(15, "div", 70)(16, "div", 73)(17, "label", 71);
312
325
  i0.ɵɵtext(18, "Template");
313
326
  i0.ɵɵelementEnd();
314
- i0.ɵɵelementStart(19, "button", 72);
315
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.RegenerateTemplate()); });
316
- i0.ɵɵconditionalCreate(20, VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_20_Template, 2, 0)(21, VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_21_Template, 2, 0);
327
+ i0.ɵɵelementStart(19, "button", 74);
328
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RegenerateTemplate()); });
329
+ i0.ɵɵconditionalCreate(20, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_20_Template, 2, 0)(21, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_21_Template, 2, 0);
317
330
  i0.ɵɵelementEnd()();
318
- i0.ɵɵelementStart(22, "div", 73)(23, "mj-code-editor", 74);
319
- i0.ɵɵlistener("change", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Template_mj_code_editor_change_23_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnEditTemplateChange($event)); });
331
+ i0.ɵɵelementStart(22, "div", 75)(23, "mj-code-editor", 76);
332
+ i0.ɵɵlistener("change", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template_mj_code_editor_change_23_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnEditTemplateChange($event)); });
320
333
  i0.ɵɵelementEnd()()();
321
- i0.ɵɵconditionalCreate(24, VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_24_Template, 6, 0, "div", 68);
322
- i0.ɵɵelementStart(25, "div", 68)(26, "label", 69);
334
+ i0.ɵɵconditionalCreate(24, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_24_Template, 6, 0, "div", 70);
335
+ i0.ɵɵelementStart(25, "div", 70)(26, "label", 71);
323
336
  i0.ɵɵtext(27, "Document Name");
324
337
  i0.ɵɵelementEnd();
325
- i0.ɵɵelementStart(28, "input", 75);
326
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Template_input_ngModelChange_28_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.EditDocName, $event) || (ctx_r2.EditDocName = $event); return i0.ɵɵresetView($event); });
338
+ i0.ɵɵelementStart(28, "input", 77);
339
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template_input_ngModelChange_28_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.EditDocName, $event) || (ctx_r1.EditDocName = $event); return i0.ɵɵresetView($event); });
327
340
  i0.ɵɵelementEnd()();
328
- i0.ɵɵelementStart(29, "div", 68)(30, "label", 69);
341
+ i0.ɵɵelementStart(29, "div", 70)(30, "label", 71);
329
342
  i0.ɵɵtext(31, "Embedding Model");
330
343
  i0.ɵɵelementEnd();
331
- i0.ɵɵelementStart(32, "select", 76);
332
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Template_select_ngModelChange_32_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.EditDocAIModelID, $event) || (ctx_r2.EditDocAIModelID = $event); return i0.ɵɵresetView($event); });
333
- i0.ɵɵrepeaterCreate(33, VectorManagementResourceComponent_Conditional_1_Conditional_55_For_34_Template, 2, 2, "option", 77, _forTrack2);
344
+ i0.ɵɵelementStart(32, "select", 78);
345
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template_select_ngModelChange_32_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.EditDocAIModelID, $event) || (ctx_r1.EditDocAIModelID = $event); return i0.ɵɵresetView($event); });
346
+ i0.ɵɵrepeaterCreate(33, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_For_34_Template, 2, 2, "option", 79, _forTrack2);
334
347
  i0.ɵɵelementEnd()();
335
- i0.ɵɵelementStart(35, "div", 68)(36, "label", 69);
348
+ i0.ɵɵelementStart(35, "div", 70)(36, "label", 71);
336
349
  i0.ɵɵtext(37, "Vector Database");
337
350
  i0.ɵɵelementEnd();
338
- i0.ɵɵelementStart(38, "select", 76);
339
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Template_select_ngModelChange_38_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.EditDocVectorDBID, $event) || (ctx_r2.EditDocVectorDBID = $event); return i0.ɵɵresetView($event); });
340
- i0.ɵɵrepeaterCreate(39, VectorManagementResourceComponent_Conditional_1_Conditional_55_For_40_Template, 2, 2, "option", 77, _forTrack2);
351
+ i0.ɵɵelementStart(38, "select", 78);
352
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template_select_ngModelChange_38_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.EditDocVectorDBID, $event) || (ctx_r1.EditDocVectorDBID = $event); return i0.ɵɵresetView($event); });
353
+ i0.ɵɵrepeaterCreate(39, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_For_40_Template, 2, 2, "option", 79, _forTrack2);
341
354
  i0.ɵɵelementEnd()();
342
- i0.ɵɵelementStart(41, "div", 68)(42, "label", 69);
355
+ i0.ɵɵelementStart(41, "div", 70)(42, "label", 71);
343
356
  i0.ɵɵtext(43, "Vector Index");
344
357
  i0.ɵɵelementEnd();
345
- i0.ɵɵconditionalCreate(44, VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_44_Template, 5, 1, "select", 78)(45, VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_45_Template, 2, 0, "span", 79);
358
+ i0.ɵɵconditionalCreate(44, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_44_Template, 5, 1, "select", 80)(45, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_45_Template, 2, 0, "span", 81);
346
359
  i0.ɵɵelementEnd();
347
- i0.ɵɵelementStart(46, "div", 68)(47, "label", 69);
360
+ i0.ɵɵelementStart(46, "div", 70)(47, "label", 71);
348
361
  i0.ɵɵtext(48, "Status");
349
362
  i0.ɵɵelementEnd();
350
- i0.ɵɵelementStart(49, "select", 76);
351
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_55_Template_select_ngModelChange_49_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.EditDocStatus, $event) || (ctx_r2.EditDocStatus = $event); return i0.ɵɵresetView($event); });
352
- i0.ɵɵelementStart(50, "option", 80);
363
+ i0.ɵɵelementStart(49, "select", 78);
364
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template_select_ngModelChange_49_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.EditDocStatus, $event) || (ctx_r1.EditDocStatus = $event); return i0.ɵɵresetView($event); });
365
+ i0.ɵɵelementStart(50, "option", 82);
353
366
  i0.ɵɵtext(51, "Active");
354
367
  i0.ɵɵelementEnd();
355
- i0.ɵɵelementStart(52, "option", 81);
368
+ i0.ɵɵelementStart(52, "option", 83);
356
369
  i0.ɵɵtext(53, "Inactive");
357
370
  i0.ɵɵelementEnd()()();
358
- i0.ɵɵelementStart(54, "div", 82);
359
- i0.ɵɵconditionalCreate(55, VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_55_Template, 1, 0, "mj-loading", 83)(56, VectorManagementResourceComponent_Conditional_1_Conditional_55_Conditional_56_Template, 8, 0);
371
+ i0.ɵɵelementStart(54, "div", 84);
372
+ i0.ɵɵconditionalCreate(55, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_55_Template, 1, 0, "mj-loading", 85)(56, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Conditional_56_Template, 8, 0);
360
373
  i0.ɵɵelementEnd()()()()();
361
374
  } if (rf & 2) {
362
- const ctx_r2 = i0.ɵɵnextContext(2);
375
+ const ctx_r1 = i0.ɵɵnextContext(3);
363
376
  i0.ɵɵadvance(14);
364
- i0.ɵɵtextInterpolate(ctx_r2.EditDocEntityName);
377
+ i0.ɵɵtextInterpolate(ctx_r1.EditDocEntityName);
365
378
  i0.ɵɵadvance(5);
366
- i0.ɵɵproperty("disabled", ctx_r2.IsEditRegenerating);
379
+ i0.ɵɵproperty("disabled", ctx_r1.IsEditRegenerating);
367
380
  i0.ɵɵadvance();
368
- i0.ɵɵconditional(ctx_r2.IsEditRegenerating ? 20 : 21);
381
+ i0.ɵɵconditional(ctx_r1.IsEditRegenerating ? 20 : 21);
369
382
  i0.ɵɵadvance(3);
370
- i0.ɵɵproperty("value", ctx_r2.EditDocTemplate)("readonly", false)("lineWrapping", true);
383
+ i0.ɵɵproperty("value", ctx_r1.EditDocTemplate)("readonly", false)("lineWrapping", true);
371
384
  i0.ɵɵadvance();
372
- i0.ɵɵconditional(ctx_r2.EditDocSelectedFields.length > 0 ? 24 : -1);
385
+ i0.ɵɵconditional(ctx_r1.EditDocSelectedFields.length > 0 ? 24 : -1);
373
386
  i0.ɵɵadvance(4);
374
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.EditDocName);
387
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditDocName);
375
388
  i0.ɵɵadvance(4);
376
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.EditDocAIModelID);
389
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditDocAIModelID);
377
390
  i0.ɵɵadvance();
378
- i0.ɵɵrepeater(ctx_r2.AvailableEmbeddingModels);
391
+ i0.ɵɵrepeater(ctx_r1.AvailableEmbeddingModels);
379
392
  i0.ɵɵadvance(5);
380
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.EditDocVectorDBID);
393
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditDocVectorDBID);
381
394
  i0.ɵɵadvance();
382
- i0.ɵɵrepeater(ctx_r2.vectorDatabases);
395
+ i0.ɵɵrepeater(ctx_r1.vectorDatabases);
383
396
  i0.ɵɵadvance(5);
384
- i0.ɵɵconditional(ctx_r2.EditFilteredIndexes.length > 0 ? 44 : 45);
397
+ i0.ɵɵconditional(ctx_r1.EditFilteredIndexes.length > 0 ? 44 : 45);
385
398
  i0.ɵɵadvance(5);
386
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.EditDocStatus);
399
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditDocStatus);
387
400
  i0.ɵɵadvance(6);
388
- i0.ɵɵconditional(ctx_r2.IsEditSaving || ctx_r2.IsEditDeleting ? 55 : 56);
401
+ i0.ɵɵconditional(ctx_r1.IsEditSaving || ctx_r1.IsEditDeleting ? 55 : 56);
389
402
  } }
390
- function VectorManagementResourceComponent_Conditional_1_Conditional_56_Conditional_32_Template(rf, ctx) { if (rf & 1) {
391
- i0.ɵɵelement(0, "mj-loading", 83);
403
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Conditional_32_Template(rf, ctx) { if (rf & 1) {
404
+ i0.ɵɵelement(0, "mj-loading", 85);
392
405
  } }
393
- function VectorManagementResourceComponent_Conditional_1_Conditional_56_Conditional_33_Template(rf, ctx) { if (rf & 1) {
394
- const _r15 = i0.ɵɵgetCurrentView();
395
- i0.ɵɵelementStart(0, "button", 87);
396
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_56_Conditional_33_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SaveScheduleSync()); });
397
- i0.ɵɵelement(1, "i", 98);
406
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Conditional_33_Template(rf, ctx) { if (rf & 1) {
407
+ const _r16 = i0.ɵɵgetCurrentView();
408
+ i0.ɵɵelementStart(0, "button", 89);
409
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Conditional_33_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SaveScheduleSync()); });
410
+ i0.ɵɵelement(1, "i", 100);
398
411
  i0.ɵɵtext(2, " Create Schedule ");
399
412
  i0.ɵɵelementEnd();
400
- i0.ɵɵelementStart(3, "button", 91);
401
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_56_Conditional_33_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseScheduleSyncDialog()); });
413
+ i0.ɵɵelementStart(3, "button", 93);
414
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Conditional_33_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.CloseScheduleSyncDialog()); });
402
415
  i0.ɵɵtext(4, " Cancel ");
403
416
  i0.ɵɵelementEnd();
404
417
  } }
405
- function VectorManagementResourceComponent_Conditional_1_Conditional_56_Template(rf, ctx) { if (rf & 1) {
406
- const _r14 = i0.ɵɵgetCurrentView();
407
- i0.ɵɵelementStart(0, "div", 60);
408
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_56_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseScheduleSyncDialog()); });
409
- i0.ɵɵelementStart(1, "div", 92);
410
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_56_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r14); return i0.ɵɵresetView($event.stopPropagation()); });
411
- i0.ɵɵelementStart(2, "div", 62)(3, "h3", 63);
412
- i0.ɵɵelement(4, "i", 55);
418
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Template(rf, ctx) { if (rf & 1) {
419
+ const _r15 = i0.ɵɵgetCurrentView();
420
+ i0.ɵɵelementStart(0, "div", 62);
421
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseScheduleSyncDialog()); });
422
+ i0.ɵɵelementStart(1, "div", 94);
423
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r15); return i0.ɵɵresetView($event.stopPropagation()); });
424
+ i0.ɵɵelementStart(2, "div", 64)(3, "h3", 65);
425
+ i0.ɵɵelement(4, "i", 57);
413
426
  i0.ɵɵtext(5, " Schedule Vector Sync ");
414
427
  i0.ɵɵelementEnd();
415
- i0.ɵɵelementStart(6, "button", 64);
416
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_56_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseScheduleSyncDialog()); });
417
- i0.ɵɵelement(7, "i", 65);
428
+ i0.ɵɵelementStart(6, "button", 66);
429
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseScheduleSyncDialog()); });
430
+ i0.ɵɵelement(7, "i", 67);
418
431
  i0.ɵɵelementEnd()();
419
- i0.ɵɵelementStart(8, "div", 66)(9, "div", 67)(10, "div", 68)(11, "label", 69);
432
+ i0.ɵɵelementStart(8, "div", 68)(9, "div", 69)(10, "div", 70)(11, "label", 71);
420
433
  i0.ɵɵtext(12, "Entity Document");
421
434
  i0.ɵɵelementEnd();
422
- i0.ɵɵelementStart(13, "span", 70);
435
+ i0.ɵɵelementStart(13, "span", 72);
423
436
  i0.ɵɵtext(14);
424
437
  i0.ɵɵelementEnd()();
425
- i0.ɵɵelementStart(15, "div", 68)(16, "label", 69);
438
+ i0.ɵɵelementStart(15, "div", 70)(16, "label", 71);
426
439
  i0.ɵɵtext(17, "Action");
427
440
  i0.ɵɵelementEnd();
428
- i0.ɵɵelementStart(18, "span", 70);
441
+ i0.ɵɵelementStart(18, "span", 72);
429
442
  i0.ɵɵtext(19, "__VectorizeEntity");
430
443
  i0.ɵɵelementEnd()();
431
- i0.ɵɵelementStart(20, "div", 68)(21, "label", 69);
444
+ i0.ɵɵelementStart(20, "div", 70)(21, "label", 71);
432
445
  i0.ɵɵtext(22, "Cron Expression");
433
446
  i0.ɵɵelementEnd();
434
- i0.ɵɵelementStart(23, "input", 93);
435
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_56_Template_input_ngModelChange_23_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.ScheduleSyncCron, $event) || (ctx_r2.ScheduleSyncCron = $event); return i0.ɵɵresetView($event); });
447
+ i0.ɵɵelementStart(23, "input", 95);
448
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Template_input_ngModelChange_23_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.ScheduleSyncCron, $event) || (ctx_r1.ScheduleSyncCron = $event); return i0.ɵɵresetView($event); });
436
449
  i0.ɵɵelementEnd();
437
- i0.ɵɵelementStart(24, "div", 94);
438
- i0.ɵɵelement(25, "i", 95);
450
+ i0.ɵɵelementStart(24, "div", 96);
451
+ i0.ɵɵelement(25, "i", 97);
439
452
  i0.ɵɵtext(26);
440
453
  i0.ɵɵelementEnd()();
441
- i0.ɵɵelementStart(27, "div", 96)(28, "label", 69);
454
+ i0.ɵɵelementStart(27, "div", 98)(28, "label", 71);
442
455
  i0.ɵɵtext(29, "Enabled");
443
456
  i0.ɵɵelementEnd();
444
- i0.ɵɵelementStart(30, "input", 97);
445
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_56_Template_input_ngModelChange_30_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.ScheduleSyncEnabled, $event) || (ctx_r2.ScheduleSyncEnabled = $event); return i0.ɵɵresetView($event); });
457
+ i0.ɵɵelementStart(30, "input", 99);
458
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Template_input_ngModelChange_30_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.ScheduleSyncEnabled, $event) || (ctx_r1.ScheduleSyncEnabled = $event); return i0.ɵɵresetView($event); });
446
459
  i0.ɵɵelementEnd()();
447
- i0.ɵɵelementStart(31, "div", 82);
448
- i0.ɵɵconditionalCreate(32, VectorManagementResourceComponent_Conditional_1_Conditional_56_Conditional_32_Template, 1, 0, "mj-loading", 83)(33, VectorManagementResourceComponent_Conditional_1_Conditional_56_Conditional_33_Template, 5, 0);
460
+ i0.ɵɵelementStart(31, "div", 84);
461
+ i0.ɵɵconditionalCreate(32, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Conditional_32_Template, 1, 0, "mj-loading", 85)(33, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Conditional_33_Template, 5, 0);
449
462
  i0.ɵɵelementEnd()()()()();
450
463
  } if (rf & 2) {
451
- const ctx_r2 = i0.ɵɵnextContext(2);
464
+ const ctx_r1 = i0.ɵɵnextContext(3);
452
465
  i0.ɵɵadvance(14);
453
- i0.ɵɵtextInterpolate(ctx_r2.ScheduleSyncDocName);
466
+ i0.ɵɵtextInterpolate(ctx_r1.ScheduleSyncDocName);
454
467
  i0.ɵɵadvance(9);
455
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.ScheduleSyncCron);
468
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ScheduleSyncCron);
456
469
  i0.ɵɵadvance(3);
457
- i0.ɵɵtextInterpolate1(" ", ctx_r2.GetScheduleCronPreview(ctx_r2.ScheduleSyncCron), " ");
470
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.GetScheduleCronPreview(ctx_r1.ScheduleSyncCron), " ");
458
471
  i0.ɵɵadvance(4);
459
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.ScheduleSyncEnabled);
472
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ScheduleSyncEnabled);
460
473
  i0.ɵɵadvance(2);
461
- i0.ɵɵconditional(ctx_r2.ScheduleSyncSaving ? 32 : 33);
474
+ i0.ɵɵconditional(ctx_r1.ScheduleSyncSaving ? 32 : 33);
462
475
  } }
463
- function VectorManagementResourceComponent_Conditional_1_Conditional_57_Template(rf, ctx) { if (rf & 1) {
464
- const _r16 = i0.ɵɵgetCurrentView();
465
- i0.ɵɵelementStart(0, "div", 60);
466
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_57_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseNoIndexWarning()); });
467
- i0.ɵɵelementStart(1, "div", 99);
468
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_57_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r16); return i0.ɵɵresetView($event.stopPropagation()); });
469
- i0.ɵɵelementStart(2, "div", 100);
470
- i0.ɵɵelement(3, "i", 101);
471
- i0.ɵɵelementEnd();
472
- i0.ɵɵelementStart(4, "h3", 102);
476
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_56_Template(rf, ctx) { if (rf & 1) {
477
+ const _r17 = i0.ɵɵgetCurrentView();
478
+ i0.ɵɵelementStart(0, "div", 62);
479
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_56_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseNoIndexWarning()); });
480
+ i0.ɵɵelementStart(1, "div", 101);
481
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_56_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r17); return i0.ɵɵresetView($event.stopPropagation()); });
482
+ i0.ɵɵelementStart(2, "div", 102);
483
+ i0.ɵɵelement(3, "i", 103);
484
+ i0.ɵɵelementEnd();
485
+ i0.ɵɵelementStart(4, "h3", 104);
473
486
  i0.ɵɵtext(5, "Vector Index Required");
474
487
  i0.ɵɵelementEnd();
475
- i0.ɵɵelementStart(6, "p", 103);
488
+ i0.ɵɵelementStart(6, "p", 105);
476
489
  i0.ɵɵtext(7, " You need to create at least one vector database and index before creating entity documents. Go to the Configuration section to set up a vector database and create an index. ");
477
490
  i0.ɵɵelementEnd();
478
- i0.ɵɵelementStart(8, "div", 104)(9, "button", 87);
479
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_57_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.GoToConfiguration()); });
480
- i0.ɵɵelement(10, "i", 105);
491
+ i0.ɵɵelementStart(8, "div", 106)(9, "button", 89);
492
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_56_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.GoToConfiguration()); });
493
+ i0.ɵɵelement(10, "i", 107);
481
494
  i0.ɵɵtext(11, " Go to Configuration ");
482
495
  i0.ɵɵelementEnd();
483
- i0.ɵɵelementStart(12, "button", 91);
484
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_57_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseNoIndexWarning()); });
496
+ i0.ɵɵelementStart(12, "button", 93);
497
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_56_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseNoIndexWarning()); });
485
498
  i0.ɵɵtext(13, " Close ");
486
499
  i0.ɵɵelementEnd()()()();
487
500
  } }
488
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
489
- i0.ɵɵelement(0, "i", 119);
490
- i0.ɵɵelementStart(1, "span", 120);
501
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
502
+ i0.ɵɵelement(0, "i", 121);
503
+ i0.ɵɵelementStart(1, "span", 122);
491
504
  i0.ɵɵtext(2);
492
505
  i0.ɵɵelementEnd();
493
506
  } if (rf & 2) {
494
- const ctx_r2 = i0.ɵɵnextContext(4);
507
+ const ctx_r1 = i0.ɵɵnextContext(5);
495
508
  i0.ɵɵadvance(2);
496
- i0.ɵɵtextInterpolate(ctx_r2.SuggestEntityName);
509
+ i0.ɵɵtextInterpolate(ctx_r1.SuggestEntityName);
497
510
  } }
498
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
499
- i0.ɵɵelement(0, "i", 121);
500
- i0.ɵɵelementStart(1, "span", 122);
511
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
512
+ i0.ɵɵelement(0, "i", 123);
513
+ i0.ɵɵelementStart(1, "span", 124);
501
514
  i0.ɵɵtext(2, "Search and select an entity...");
502
515
  i0.ɵɵelementEnd();
503
516
  } }
504
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_For_7_For_5_Template(rf, ctx) { if (rf & 1) {
505
- const _r20 = i0.ɵɵgetCurrentView();
506
- i0.ɵɵelementStart(0, "button", 132);
507
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_For_7_For_5_Template_button_click_0_listener() { const entity_r21 = i0.ɵɵrestoreView(_r20).$implicit; const ctx_r2 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r2.SelectEntity(entity_r21.Name)); });
508
- i0.ɵɵelement(1, "i", 119);
517
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_For_7_For_5_Template(rf, ctx) { if (rf & 1) {
518
+ const _r21 = i0.ɵɵgetCurrentView();
519
+ i0.ɵɵelementStart(0, "button", 134);
520
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_For_7_For_5_Template_button_click_0_listener() { const entity_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r1 = i0.ɵɵnextContext(7); return i0.ɵɵresetView(ctx_r1.SelectEntity(entity_r22.Name)); });
521
+ i0.ɵɵelement(1, "i", 121);
509
522
  i0.ɵɵtext(2);
510
523
  i0.ɵɵelementEnd();
511
524
  } if (rf & 2) {
512
- const entity_r21 = ctx.$implicit;
513
- const ctx_r2 = i0.ɵɵnextContext(6);
514
- i0.ɵɵclassProp("entity-picker-item-selected", entity_r21.Name === ctx_r2.SuggestEntityName)("entity-picker-item-focused", (ctx_r2.FlatFilteredEntities[ctx_r2.SelectedEntityIndex] == null ? null : ctx_r2.FlatFilteredEntities[ctx_r2.SelectedEntityIndex].ID) === entity_r21.ID);
525
+ const entity_r22 = ctx.$implicit;
526
+ const ctx_r1 = i0.ɵɵnextContext(7);
527
+ i0.ɵɵclassProp("entity-picker-item-selected", entity_r22.Name === ctx_r1.SuggestEntityName)("entity-picker-item-focused", (ctx_r1.FlatFilteredEntities[ctx_r1.SelectedEntityIndex] == null ? null : ctx_r1.FlatFilteredEntities[ctx_r1.SelectedEntityIndex].ID) === entity_r22.ID);
515
528
  i0.ɵɵadvance(2);
516
- i0.ɵɵtextInterpolate1(" ", entity_r21.Name, " ");
529
+ i0.ɵɵtextInterpolate1(" ", entity_r22.Name, " ");
517
530
  } }
518
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_For_7_Template(rf, ctx) { if (rf & 1) {
519
- i0.ɵɵelementStart(0, "div", 127)(1, "div", 129);
520
- i0.ɵɵelement(2, "i", 130);
531
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_For_7_Template(rf, ctx) { if (rf & 1) {
532
+ i0.ɵɵelementStart(0, "div", 129)(1, "div", 131);
533
+ i0.ɵɵelement(2, "i", 132);
521
534
  i0.ɵɵtext(3);
522
535
  i0.ɵɵelementEnd();
523
- i0.ɵɵrepeaterCreate(4, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_For_7_For_5_Template, 3, 5, "button", 131, _forTrack2);
536
+ i0.ɵɵrepeaterCreate(4, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_For_7_For_5_Template, 3, 5, "button", 133, _forTrack2);
524
537
  i0.ɵɵelementEnd();
525
538
  } if (rf & 2) {
526
- const group_r22 = ctx.$implicit;
539
+ const group_r23 = ctx.$implicit;
527
540
  i0.ɵɵadvance(3);
528
- i0.ɵɵtextInterpolate1(" ", group_r22.SchemaName, " ");
541
+ i0.ɵɵtextInterpolate1(" ", group_r23.SchemaName, " ");
529
542
  i0.ɵɵadvance();
530
- i0.ɵɵrepeater(group_r22.Entities);
543
+ i0.ɵɵrepeater(group_r23.Entities);
531
544
  } }
532
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
533
- i0.ɵɵelementStart(0, "div", 128);
545
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
546
+ i0.ɵɵelementStart(0, "div", 130);
534
547
  i0.ɵɵtext(1);
535
548
  i0.ɵɵelementEnd();
536
549
  } if (rf & 2) {
537
- const ctx_r2 = i0.ɵɵnextContext(5);
550
+ const ctx_r1 = i0.ɵɵnextContext(6);
538
551
  i0.ɵɵadvance();
539
- i0.ɵɵtextInterpolate1(" No entities matching \"", ctx_r2.EntitySearchText, "\" ");
552
+ i0.ɵɵtextInterpolate1(" No entities matching \"", ctx_r1.EntitySearchText, "\" ");
540
553
  } }
541
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_Template(rf, ctx) { if (rf & 1) {
542
- const _r19 = i0.ɵɵgetCurrentView();
543
- i0.ɵɵelementStart(0, "div", 123);
544
- i0.ɵɵlistener("mousedown", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
545
- i0.ɵɵelementStart(1, "div", 124);
546
- i0.ɵɵelement(2, "i", 121);
547
- i0.ɵɵelementStart(3, "input", 125, 0);
548
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r2.EntitySearchText, $event) || (ctx_r2.EntitySearchText = $event); return i0.ɵɵresetView($event); });
549
- i0.ɵɵlistener("input", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_Template_input_input_3_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.FilterEntities()); })("keydown", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_Template_input_keydown_3_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.OnEntityPickerKeyDown($event)); });
554
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_Template(rf, ctx) { if (rf & 1) {
555
+ const _r20 = i0.ɵɵgetCurrentView();
556
+ i0.ɵɵelementStart(0, "div", 125);
557
+ i0.ɵɵlistener("mousedown", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r20); return i0.ɵɵresetView($event.stopPropagation()); });
558
+ i0.ɵɵelementStart(1, "div", 126);
559
+ i0.ɵɵelement(2, "i", 123);
560
+ i0.ɵɵelementStart(3, "input", 127, 1);
561
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(5); i0.ɵɵtwoWayBindingSet(ctx_r1.EntitySearchText, $event) || (ctx_r1.EntitySearchText = $event); return i0.ɵɵresetView($event); });
562
+ i0.ɵɵlistener("input", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_Template_input_input_3_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.FilterEntities()); })("keydown", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_Template_input_keydown_3_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OnEntityPickerKeyDown($event)); });
550
563
  i0.ɵɵelementEnd()();
551
- i0.ɵɵelementStart(5, "div", 126);
552
- i0.ɵɵrepeaterCreate(6, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_For_7_Template, 6, 1, "div", 127, _forTrack3);
553
- i0.ɵɵconditionalCreate(8, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_Conditional_8_Template, 2, 1, "div", 128);
564
+ i0.ɵɵelementStart(5, "div", 128);
565
+ i0.ɵɵrepeaterCreate(6, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_For_7_Template, 6, 1, "div", 129, _forTrack3);
566
+ i0.ɵɵconditionalCreate(8, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_Conditional_8_Template, 2, 1, "div", 130);
554
567
  i0.ɵɵelementEnd()();
555
568
  } if (rf & 2) {
556
- const ctx_r2 = i0.ɵɵnextContext(4);
569
+ const ctx_r1 = i0.ɵɵnextContext(5);
557
570
  i0.ɵɵadvance(3);
558
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.EntitySearchText);
571
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EntitySearchText);
559
572
  i0.ɵɵadvance(3);
560
- i0.ɵɵrepeater(ctx_r2.FilteredEntityGroups);
573
+ i0.ɵɵrepeater(ctx_r1.FilteredEntityGroups);
561
574
  i0.ɵɵadvance(2);
562
- i0.ɵɵconditional(ctx_r2.FilteredEntityGroups.length === 0 ? 8 : -1);
575
+ i0.ɵɵconditional(ctx_r1.FilteredEntityGroups.length === 0 ? 8 : -1);
563
576
  } }
564
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_24_Template(rf, ctx) { if (rf & 1) {
565
- i0.ɵɵelement(0, "i", 58);
577
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_24_Template(rf, ctx) { if (rf & 1) {
578
+ i0.ɵɵelement(0, "i", 60);
566
579
  i0.ɵɵtext(1, " Generating with AI... ");
567
580
  } }
568
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_25_Template(rf, ctx) { if (rf & 1) {
569
- i0.ɵɵelement(0, "i", 14);
581
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_25_Template(rf, ctx) { if (rf & 1) {
582
+ i0.ɵɵelement(0, "i", 19);
570
583
  i0.ɵɵtext(1, " Generate Template ");
571
584
  } }
572
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_26_Template(rf, ctx) { if (rf & 1) {
573
- i0.ɵɵelementStart(0, "div", 118);
574
- i0.ɵɵelement(1, "i", 133);
585
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_26_Template(rf, ctx) { if (rf & 1) {
586
+ i0.ɵɵelementStart(0, "div", 120);
587
+ i0.ɵɵelement(1, "i", 135);
575
588
  i0.ɵɵtext(2);
576
589
  i0.ɵɵelementEnd();
577
590
  } if (rf & 2) {
578
- const ctx_r2 = i0.ɵɵnextContext(4);
591
+ const ctx_r1 = i0.ɵɵnextContext(5);
579
592
  i0.ɵɵadvance(2);
580
- i0.ɵɵtextInterpolate1(" ", ctx_r2.SuggestionError, " ");
593
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.SuggestionError, " ");
581
594
  } }
582
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Template(rf, ctx) { if (rf & 1) {
583
- const _r18 = i0.ɵɵgetCurrentView();
584
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 68)(2, "label", 69);
595
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Template(rf, ctx) { if (rf & 1) {
596
+ const _r19 = i0.ɵɵgetCurrentView();
597
+ i0.ɵɵelementStart(0, "div", 69)(1, "div", 70)(2, "label", 71);
585
598
  i0.ɵɵtext(3, "Entity");
586
599
  i0.ɵɵelementEnd();
587
- i0.ɵɵelementStart(4, "div", 108)(5, "button", 109);
588
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.ToggleEntityPicker()); });
589
- i0.ɵɵconditionalCreate(6, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_6_Template, 3, 1)(7, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_7_Template, 3, 0);
590
- i0.ɵɵelement(8, "i", 110);
600
+ i0.ɵɵelementStart(4, "div", 110)(5, "button", 111);
601
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ToggleEntityPicker()); });
602
+ i0.ɵɵconditionalCreate(6, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_6_Template, 3, 1)(7, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_7_Template, 3, 0);
603
+ i0.ɵɵelement(8, "i", 112);
591
604
  i0.ɵɵelementEnd();
592
- i0.ɵɵconditionalCreate(9, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_9_Template, 9, 2, "div", 111);
605
+ i0.ɵɵconditionalCreate(9, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_9_Template, 9, 2, "div", 113);
593
606
  i0.ɵɵelementEnd()();
594
- i0.ɵɵelementStart(10, "div", 68)(11, "label", 69);
607
+ i0.ɵɵelementStart(10, "div", 70)(11, "label", 71);
595
608
  i0.ɵɵtext(12, "Use Case");
596
609
  i0.ɵɵelementEnd();
597
- i0.ɵɵelementStart(13, "div", 112)(14, "button", 113);
598
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SuggestUseCase = "duplicate detection"); });
599
- i0.ɵɵelement(15, "i", 114);
610
+ i0.ɵɵelementStart(13, "div", 114)(14, "button", 115);
611
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SuggestUseCase = "duplicate detection"); });
612
+ i0.ɵɵelement(15, "i", 116);
600
613
  i0.ɵɵtext(16, " Duplicate Detection ");
601
614
  i0.ɵɵelementEnd();
602
- i0.ɵɵelementStart(17, "button", 113);
603
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SuggestUseCase = "search"); });
604
- i0.ɵɵelement(18, "i", 115);
615
+ i0.ɵɵelementStart(17, "button", 115);
616
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SuggestUseCase = "search"); });
617
+ i0.ɵɵelement(18, "i", 117);
605
618
  i0.ɵɵtext(19, " Search ");
606
619
  i0.ɵɵelementEnd();
607
- i0.ɵɵelementStart(20, "button", 113);
608
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SuggestUseCase = "classification"); });
609
- i0.ɵɵelement(21, "i", 116);
620
+ i0.ɵɵelementStart(20, "button", 115);
621
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SuggestUseCase = "classification"); });
622
+ i0.ɵɵelement(21, "i", 118);
610
623
  i0.ɵɵtext(22, " Classification ");
611
624
  i0.ɵɵelementEnd()()();
612
- i0.ɵɵelementStart(23, "button", 117);
613
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.RunSuggestion()); });
614
- i0.ɵɵconditionalCreate(24, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_24_Template, 2, 0)(25, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_25_Template, 2, 0);
625
+ i0.ɵɵelementStart(23, "button", 119);
626
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSuggestion()); });
627
+ i0.ɵɵconditionalCreate(24, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_24_Template, 2, 0)(25, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_25_Template, 2, 0);
615
628
  i0.ɵɵelementEnd();
616
- i0.ɵɵconditionalCreate(26, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Conditional_26_Template, 3, 1, "div", 118);
629
+ i0.ɵɵconditionalCreate(26, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Conditional_26_Template, 3, 1, "div", 120);
617
630
  i0.ɵɵelementEnd();
618
631
  } if (rf & 2) {
619
- const ctx_r2 = i0.ɵɵnextContext(3);
632
+ const ctx_r1 = i0.ɵɵnextContext(4);
620
633
  i0.ɵɵadvance(6);
621
- i0.ɵɵconditional(ctx_r2.SuggestEntityName ? 6 : 7);
634
+ i0.ɵɵconditional(ctx_r1.SuggestEntityName ? 6 : 7);
622
635
  i0.ɵɵadvance(3);
623
- i0.ɵɵconditional(ctx_r2.ShowEntityPicker ? 9 : -1);
636
+ i0.ɵɵconditional(ctx_r1.ShowEntityPicker ? 9 : -1);
624
637
  i0.ɵɵadvance(5);
625
- i0.ɵɵclassProp("use-case-btn-active", ctx_r2.SuggestUseCase === "duplicate detection");
638
+ i0.ɵɵclassProp("use-case-btn-active", ctx_r1.SuggestUseCase === "duplicate detection");
626
639
  i0.ɵɵadvance(3);
627
- i0.ɵɵclassProp("use-case-btn-active", ctx_r2.SuggestUseCase === "search");
640
+ i0.ɵɵclassProp("use-case-btn-active", ctx_r1.SuggestUseCase === "search");
628
641
  i0.ɵɵadvance(3);
629
- i0.ɵɵclassProp("use-case-btn-active", ctx_r2.SuggestUseCase === "classification");
642
+ i0.ɵɵclassProp("use-case-btn-active", ctx_r1.SuggestUseCase === "classification");
630
643
  i0.ɵɵadvance(3);
631
- i0.ɵɵproperty("disabled", ctx_r2.IsSuggesting || !ctx_r2.SuggestEntityName);
644
+ i0.ɵɵproperty("disabled", ctx_r1.IsSuggesting || !ctx_r1.SuggestEntityName);
632
645
  i0.ɵɵadvance();
633
- i0.ɵɵconditional(ctx_r2.IsSuggesting ? 24 : 25);
646
+ i0.ɵɵconditional(ctx_r1.IsSuggesting ? 24 : 25);
634
647
  i0.ɵɵadvance(2);
635
- i0.ɵɵconditional(ctx_r2.SuggestionError ? 26 : -1);
648
+ i0.ɵɵconditional(ctx_r1.SuggestionError ? 26 : -1);
636
649
  } }
637
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_For_11_Template(rf, ctx) { if (rf & 1) {
638
- i0.ɵɵelementStart(0, "span", 85);
650
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_For_11_Template(rf, ctx) { if (rf & 1) {
651
+ i0.ɵɵelementStart(0, "span", 87);
639
652
  i0.ɵɵtext(1);
640
653
  i0.ɵɵelementEnd();
641
654
  } if (rf & 2) {
642
- const field_r24 = ctx.$implicit;
655
+ const field_r25 = ctx.$implicit;
643
656
  i0.ɵɵadvance();
644
- i0.ɵɵtextInterpolate(field_r24);
657
+ i0.ɵɵtextInterpolate(field_r25);
645
658
  } }
646
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_12_For_4_Template(rf, ctx) { if (rf & 1) {
647
- i0.ɵɵelementStart(0, "div", 144)(1, "span", 145);
659
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_12_For_4_Template(rf, ctx) { if (rf & 1) {
660
+ i0.ɵɵelementStart(0, "div", 146)(1, "span", 147);
648
661
  i0.ɵɵtext(2);
649
662
  i0.ɵɵelementEnd();
650
- i0.ɵɵelementStart(3, "span", 146);
663
+ i0.ɵɵelementStart(3, "span", 148);
651
664
  i0.ɵɵtext(4);
652
665
  i0.ɵɵelementEnd()();
653
666
  } if (rf & 2) {
654
- const rel_r25 = ctx.$implicit;
667
+ const rel_r26 = ctx.$implicit;
655
668
  i0.ɵɵadvance(2);
656
- i0.ɵɵtextInterpolate(rel_r25.name);
669
+ i0.ɵɵtextInterpolate(rel_r26.name);
657
670
  i0.ɵɵadvance(2);
658
- i0.ɵɵtextInterpolate(rel_r25.fields.join(", "));
671
+ i0.ɵɵtextInterpolate(rel_r26.fields.join(", "));
659
672
  } }
660
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_12_Template(rf, ctx) { if (rf & 1) {
661
- i0.ɵɵelementStart(0, "div", 134)(1, "h4", 135);
673
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_12_Template(rf, ctx) { if (rf & 1) {
674
+ i0.ɵɵelementStart(0, "div", 136)(1, "h4", 137);
662
675
  i0.ɵɵtext(2, "Related Entities");
663
676
  i0.ɵɵelementEnd();
664
- i0.ɵɵrepeaterCreate(3, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_12_For_4_Template, 5, 2, "div", 144, _forTrack4);
677
+ i0.ɵɵrepeaterCreate(3, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_12_For_4_Template, 5, 2, "div", 146, _forTrack4);
665
678
  i0.ɵɵelementEnd();
666
679
  } if (rf & 2) {
667
- const ctx_r2 = i0.ɵɵnextContext(4);
680
+ const ctx_r1 = i0.ɵɵnextContext(5);
668
681
  i0.ɵɵadvance(3);
669
- i0.ɵɵrepeater(ctx_r2.SuggestionResult.selectedRelationships);
682
+ i0.ɵɵrepeater(ctx_r1.SuggestionResult.selectedRelationships);
670
683
  } }
671
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_For_39_Template(rf, ctx) { if (rf & 1) {
672
- i0.ɵɵelementStart(0, "option", 77);
684
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_For_39_Template(rf, ctx) { if (rf & 1) {
685
+ i0.ɵɵelementStart(0, "option", 79);
673
686
  i0.ɵɵtext(1);
674
687
  i0.ɵɵelementEnd();
675
688
  } if (rf & 2) {
676
- const model_r26 = ctx.$implicit;
677
- i0.ɵɵproperty("value", model_r26.ID);
689
+ const model_r27 = ctx.$implicit;
690
+ i0.ɵɵproperty("value", model_r27.ID);
678
691
  i0.ɵɵadvance();
679
- i0.ɵɵtextInterpolate(model_r26.Name);
692
+ i0.ɵɵtextInterpolate(model_r27.Name);
680
693
  } }
681
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_For_45_Template(rf, ctx) { if (rf & 1) {
682
- i0.ɵɵelementStart(0, "option", 77);
694
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_For_45_Template(rf, ctx) { if (rf & 1) {
695
+ i0.ɵɵelementStart(0, "option", 79);
683
696
  i0.ɵɵtext(1);
684
697
  i0.ɵɵelementEnd();
685
698
  } if (rf & 2) {
686
- const db_r27 = ctx.$implicit;
687
- i0.ɵɵproperty("value", db_r27.ID);
699
+ const db_r28 = ctx.$implicit;
700
+ i0.ɵɵproperty("value", db_r28.ID);
688
701
  i0.ɵɵadvance();
689
- i0.ɵɵtextInterpolate(db_r27.Name);
702
+ i0.ɵɵtextInterpolate(db_r28.Name);
690
703
  } }
691
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_49_For_4_Template(rf, ctx) { if (rf & 1) {
692
- i0.ɵɵelementStart(0, "option", 77);
704
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_49_For_4_Template(rf, ctx) { if (rf & 1) {
705
+ i0.ɵɵelementStart(0, "option", 79);
693
706
  i0.ɵɵtext(1);
694
707
  i0.ɵɵelementEnd();
695
708
  } if (rf & 2) {
696
- const idx_r29 = ctx.$implicit;
697
- i0.ɵɵproperty("value", idx_r29.ID);
709
+ const idx_r30 = ctx.$implicit;
710
+ i0.ɵɵproperty("value", idx_r30.ID);
698
711
  i0.ɵɵadvance();
699
- i0.ɵɵtextInterpolate(idx_r29.Name);
712
+ i0.ɵɵtextInterpolate(idx_r30.Name);
700
713
  } }
701
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_49_Template(rf, ctx) { if (rf & 1) {
702
- const _r28 = i0.ɵɵgetCurrentView();
703
- i0.ɵɵelementStart(0, "select", 76);
704
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_49_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r2 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r2.SelectedVectorIndexID, $event) || (ctx_r2.SelectedVectorIndexID = $event); return i0.ɵɵresetView($event); });
705
- i0.ɵɵelementStart(1, "option", 86);
714
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_49_Template(rf, ctx) { if (rf & 1) {
715
+ const _r29 = i0.ɵɵgetCurrentView();
716
+ i0.ɵɵelementStart(0, "select", 78);
717
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_49_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(5); i0.ɵɵtwoWayBindingSet(ctx_r1.SelectedVectorIndexID, $event) || (ctx_r1.SelectedVectorIndexID = $event); return i0.ɵɵresetView($event); });
718
+ i0.ɵɵelementStart(1, "option", 88);
706
719
  i0.ɵɵtext(2, "Auto (create/find matching index)");
707
720
  i0.ɵɵelementEnd();
708
- i0.ɵɵrepeaterCreate(3, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_49_For_4_Template, 2, 2, "option", 77, _forTrack2);
721
+ i0.ɵɵrepeaterCreate(3, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_49_For_4_Template, 2, 2, "option", 79, _forTrack2);
709
722
  i0.ɵɵelementEnd();
710
723
  } if (rf & 2) {
711
- const ctx_r2 = i0.ɵɵnextContext(4);
712
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.SelectedVectorIndexID);
724
+ const ctx_r1 = i0.ɵɵnextContext(5);
725
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedVectorIndexID);
713
726
  i0.ɵɵadvance(3);
714
- i0.ɵɵrepeater(ctx_r2.FilteredIndexesForSelectedDB);
727
+ i0.ɵɵrepeater(ctx_r1.FilteredIndexesForSelectedDB);
715
728
  } }
716
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_50_Template(rf, ctx) { if (rf & 1) {
717
- i0.ɵɵelementStart(0, "span", 79);
729
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_50_Template(rf, ctx) { if (rf & 1) {
730
+ i0.ɵɵelementStart(0, "span", 81);
718
731
  i0.ɵɵtext(1, " No indexes yet \u2014 create one in Configuration > Vector Database, or one will be created on sync ");
719
732
  i0.ɵɵelementEnd();
720
733
  } }
721
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_52_Template(rf, ctx) { if (rf & 1) {
722
- i0.ɵɵelementStart(0, "div", 143);
723
- i0.ɵɵelement(1, "mj-loading", 83);
734
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_52_Template(rf, ctx) { if (rf & 1) {
735
+ i0.ɵɵelementStart(0, "div", 145);
736
+ i0.ɵɵelement(1, "mj-loading", 85);
724
737
  i0.ɵɵelementEnd();
725
738
  } }
726
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_53_Template(rf, ctx) { if (rf & 1) {
727
- const _r30 = i0.ɵɵgetCurrentView();
728
- i0.ɵɵelementStart(0, "button", 87);
729
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_53_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.SaveAsEntityDocument()); });
730
- i0.ɵɵelement(1, "i", 147);
739
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_53_Template(rf, ctx) { if (rf & 1) {
740
+ const _r31 = i0.ɵɵgetCurrentView();
741
+ i0.ɵɵelementStart(0, "button", 89);
742
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_53_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.SaveAsEntityDocument()); });
743
+ i0.ɵɵelement(1, "i", 149);
731
744
  i0.ɵɵtext(2, " Save as Entity Document ");
732
745
  i0.ɵɵelementEnd();
733
- i0.ɵɵelementStart(3, "button", 148);
734
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_53_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ClearSuggestion()); });
735
- i0.ɵɵelement(4, "i", 149);
746
+ i0.ɵɵelementStart(3, "button", 150);
747
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_53_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.ClearSuggestion()); });
748
+ i0.ɵɵelement(4, "i", 151);
736
749
  i0.ɵɵtext(5, " Try Again ");
737
750
  i0.ɵɵelementEnd();
738
- i0.ɵɵelementStart(6, "button", 91);
739
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_53_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.CloseSuggestDialog()); });
751
+ i0.ɵɵelementStart(6, "button", 93);
752
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_53_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.CloseSuggestDialog()); });
740
753
  i0.ɵɵtext(7, " Close ");
741
754
  i0.ɵɵelementEnd();
742
755
  } }
743
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Template(rf, ctx) { if (rf & 1) {
744
- const _r23 = i0.ɵɵgetCurrentView();
745
- i0.ɵɵelementStart(0, "div", 107)(1, "div", 134)(2, "h4", 135);
756
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Template(rf, ctx) { if (rf & 1) {
757
+ const _r24 = i0.ɵɵgetCurrentView();
758
+ i0.ɵɵelementStart(0, "div", 109)(1, "div", 136)(2, "h4", 137);
746
759
  i0.ɵɵtext(3, "Suggested Template");
747
760
  i0.ɵɵelementEnd();
748
- i0.ɵɵelementStart(4, "div", 73)(5, "mj-code-editor", 74);
749
- i0.ɵɵlistener("change", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Template_mj_code_editor_change_5_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnTemplateChange($event)); });
761
+ i0.ɵɵelementStart(4, "div", 75)(5, "mj-code-editor", 76);
762
+ i0.ɵɵlistener("change", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Template_mj_code_editor_change_5_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnTemplateChange($event)); });
750
763
  i0.ɵɵelementEnd()()();
751
- i0.ɵɵelementStart(6, "div", 134)(7, "h4", 135);
764
+ i0.ɵɵelementStart(6, "div", 136)(7, "h4", 137);
752
765
  i0.ɵɵtext(8, "Selected Fields");
753
766
  i0.ɵɵelementEnd();
754
- i0.ɵɵelementStart(9, "div", 84);
755
- i0.ɵɵrepeaterCreate(10, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_For_11_Template, 2, 1, "span", 85, i0.ɵɵrepeaterTrackByIdentity);
767
+ i0.ɵɵelementStart(9, "div", 86);
768
+ i0.ɵɵrepeaterCreate(10, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_For_11_Template, 2, 1, "span", 87, i0.ɵɵrepeaterTrackByIdentity);
756
769
  i0.ɵɵelementEnd()();
757
- i0.ɵɵconditionalCreate(12, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_12_Template, 5, 0, "div", 134);
758
- i0.ɵɵelementStart(13, "div", 136)(14, "div", 137)(15, "span", 138);
770
+ i0.ɵɵconditionalCreate(12, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_12_Template, 5, 0, "div", 136);
771
+ i0.ɵɵelementStart(13, "div", 138)(14, "div", 139)(15, "span", 140);
759
772
  i0.ɵɵtext(16, "Potential Match");
760
773
  i0.ɵɵelementEnd();
761
- i0.ɵɵelementStart(17, "span", 139);
774
+ i0.ɵɵelementStart(17, "span", 141);
762
775
  i0.ɵɵtext(18);
763
776
  i0.ɵɵelementEnd()();
764
- i0.ɵɵelementStart(19, "div", 137)(20, "span", 138);
777
+ i0.ɵɵelementStart(19, "div", 139)(20, "span", 140);
765
778
  i0.ɵɵtext(21, "Absolute Match");
766
779
  i0.ɵɵelementEnd();
767
- i0.ɵɵelementStart(22, "span", 139);
780
+ i0.ɵɵelementStart(22, "span", 141);
768
781
  i0.ɵɵtext(23);
769
782
  i0.ɵɵelementEnd()()();
770
- i0.ɵɵelementStart(24, "div", 134)(25, "h4", 135);
783
+ i0.ɵɵelementStart(24, "div", 136)(25, "h4", 137);
771
784
  i0.ɵɵtext(26, "Reasoning");
772
785
  i0.ɵɵelementEnd();
773
- i0.ɵɵelementStart(27, "p", 140);
786
+ i0.ɵɵelementStart(27, "p", 142);
774
787
  i0.ɵɵtext(28);
775
788
  i0.ɵɵelementEnd()();
776
- i0.ɵɵelementStart(29, "div", 134)(30, "div", 68)(31, "label", 69);
789
+ i0.ɵɵelementStart(29, "div", 136)(30, "div", 70)(31, "label", 71);
777
790
  i0.ɵɵtext(32, "Document Name");
778
791
  i0.ɵɵelementEnd();
779
- i0.ɵɵelementStart(33, "input", 75);
780
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Template_input_ngModelChange_33_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.SaveDocumentName, $event) || (ctx_r2.SaveDocumentName = $event); return i0.ɵɵresetView($event); });
792
+ i0.ɵɵelementStart(33, "input", 77);
793
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Template_input_ngModelChange_33_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.SaveDocumentName, $event) || (ctx_r1.SaveDocumentName = $event); return i0.ɵɵresetView($event); });
781
794
  i0.ɵɵelementEnd()();
782
- i0.ɵɵelementStart(34, "div", 141)(35, "label", 69);
795
+ i0.ɵɵelementStart(34, "div", 143)(35, "label", 71);
783
796
  i0.ɵɵtext(36, "Embedding Model");
784
797
  i0.ɵɵelementEnd();
785
- i0.ɵɵelementStart(37, "select", 76);
786
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Template_select_ngModelChange_37_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.SelectedEmbeddingModelID, $event) || (ctx_r2.SelectedEmbeddingModelID = $event); return i0.ɵɵresetView($event); });
787
- i0.ɵɵrepeaterCreate(38, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_For_39_Template, 2, 2, "option", 77, _forTrack2);
798
+ i0.ɵɵelementStart(37, "select", 78);
799
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Template_select_ngModelChange_37_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.SelectedEmbeddingModelID, $event) || (ctx_r1.SelectedEmbeddingModelID = $event); return i0.ɵɵresetView($event); });
800
+ i0.ɵɵrepeaterCreate(38, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_For_39_Template, 2, 2, "option", 79, _forTrack2);
788
801
  i0.ɵɵelementEnd()();
789
- i0.ɵɵelementStart(40, "div", 141)(41, "label", 69);
802
+ i0.ɵɵelementStart(40, "div", 143)(41, "label", 71);
790
803
  i0.ɵɵtext(42, "Vector Database");
791
804
  i0.ɵɵelementEnd();
792
- i0.ɵɵelementStart(43, "select", 76);
793
- i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Template_select_ngModelChange_43_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.SelectedVectorDBID, $event) || (ctx_r2.SelectedVectorDBID = $event); return i0.ɵɵresetView($event); });
794
- i0.ɵɵrepeaterCreate(44, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_For_45_Template, 2, 2, "option", 77, _forTrack2);
805
+ i0.ɵɵelementStart(43, "select", 78);
806
+ i0.ɵɵtwoWayListener("ngModelChange", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Template_select_ngModelChange_43_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.SelectedVectorDBID, $event) || (ctx_r1.SelectedVectorDBID = $event); return i0.ɵɵresetView($event); });
807
+ i0.ɵɵrepeaterCreate(44, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_For_45_Template, 2, 2, "option", 79, _forTrack2);
795
808
  i0.ɵɵelementEnd()();
796
- i0.ɵɵelementStart(46, "div", 141)(47, "label", 69);
809
+ i0.ɵɵelementStart(46, "div", 143)(47, "label", 71);
797
810
  i0.ɵɵtext(48, "Vector Index");
798
811
  i0.ɵɵelementEnd();
799
- i0.ɵɵconditionalCreate(49, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_49_Template, 5, 1, "select", 78)(50, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_50_Template, 2, 0, "span", 79);
812
+ i0.ɵɵconditionalCreate(49, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_49_Template, 5, 1, "select", 80)(50, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_50_Template, 2, 0, "span", 81);
800
813
  i0.ɵɵelementEnd()();
801
- i0.ɵɵelementStart(51, "div", 142);
802
- i0.ɵɵconditionalCreate(52, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_52_Template, 2, 0, "div", 143)(53, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Conditional_53_Template, 8, 0);
814
+ i0.ɵɵelementStart(51, "div", 144);
815
+ i0.ɵɵconditionalCreate(52, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_52_Template, 2, 0, "div", 145)(53, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Conditional_53_Template, 8, 0);
803
816
  i0.ɵɵelementEnd()();
804
817
  } if (rf & 2) {
805
- const ctx_r2 = i0.ɵɵnextContext(3);
818
+ const ctx_r1 = i0.ɵɵnextContext(4);
806
819
  i0.ɵɵadvance(5);
807
- i0.ɵɵproperty("value", ctx_r2.EditableTemplate)("readonly", false)("lineWrapping", true);
820
+ i0.ɵɵproperty("value", ctx_r1.EditableTemplate)("readonly", false)("lineWrapping", true);
808
821
  i0.ɵɵadvance(5);
809
- i0.ɵɵrepeater(ctx_r2.SuggestionResult.selectedFields);
822
+ i0.ɵɵrepeater(ctx_r1.SuggestionResult.selectedFields);
810
823
  i0.ɵɵadvance(2);
811
- i0.ɵɵconditional(((ctx_r2.SuggestionResult.selectedRelationships == null ? null : ctx_r2.SuggestionResult.selectedRelationships.length) ?? 0) > 0 ? 12 : -1);
824
+ i0.ɵɵconditional(((ctx_r1.SuggestionResult.selectedRelationships == null ? null : ctx_r1.SuggestionResult.selectedRelationships.length) ?? 0) > 0 ? 12 : -1);
812
825
  i0.ɵɵadvance(6);
813
- i0.ɵɵtextInterpolate1("", (ctx_r2.SuggestionResult.potentialMatchThreshold * 100).toFixed(0), "%");
826
+ i0.ɵɵtextInterpolate1("", (ctx_r1.SuggestionResult.potentialMatchThreshold * 100).toFixed(0), "%");
814
827
  i0.ɵɵadvance(5);
815
- i0.ɵɵtextInterpolate1("", (ctx_r2.SuggestionResult.absoluteMatchThreshold * 100).toFixed(0), "%");
828
+ i0.ɵɵtextInterpolate1("", (ctx_r1.SuggestionResult.absoluteMatchThreshold * 100).toFixed(0), "%");
816
829
  i0.ɵɵadvance(5);
817
- i0.ɵɵtextInterpolate(ctx_r2.SuggestionResult.reasoning);
830
+ i0.ɵɵtextInterpolate(ctx_r1.SuggestionResult.reasoning);
818
831
  i0.ɵɵadvance(5);
819
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.SaveDocumentName);
832
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SaveDocumentName);
820
833
  i0.ɵɵadvance(4);
821
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.SelectedEmbeddingModelID);
834
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedEmbeddingModelID);
822
835
  i0.ɵɵadvance();
823
- i0.ɵɵrepeater(ctx_r2.AvailableEmbeddingModels);
836
+ i0.ɵɵrepeater(ctx_r1.AvailableEmbeddingModels);
824
837
  i0.ɵɵadvance(5);
825
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.SelectedVectorDBID);
838
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedVectorDBID);
826
839
  i0.ɵɵadvance();
827
- i0.ɵɵrepeater(ctx_r2.vectorDatabases);
840
+ i0.ɵɵrepeater(ctx_r1.vectorDatabases);
828
841
  i0.ɵɵadvance(5);
829
- i0.ɵɵconditional(ctx_r2.FilteredIndexesForSelectedDB.length > 0 ? 49 : 50);
842
+ i0.ɵɵconditional(ctx_r1.FilteredIndexesForSelectedDB.length > 0 ? 49 : 50);
830
843
  i0.ɵɵadvance(3);
831
- i0.ɵɵconditional(ctx_r2.IsSavingDocument ? 52 : 53);
844
+ i0.ɵɵconditional(ctx_r1.IsSavingDocument ? 52 : 53);
832
845
  } }
833
- function VectorManagementResourceComponent_Conditional_1_Conditional_58_Template(rf, ctx) { if (rf & 1) {
834
- const _r17 = i0.ɵɵgetCurrentView();
835
- i0.ɵɵelementStart(0, "div", 60);
836
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseSuggestDialog()); });
837
- i0.ɵɵelementStart(1, "div", 106);
838
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r17); return i0.ɵɵresetView($event.stopPropagation()); });
839
- i0.ɵɵelementStart(2, "div", 62)(3, "h3", 63);
840
- i0.ɵɵelement(4, "i", 14);
846
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Template(rf, ctx) { if (rf & 1) {
847
+ const _r18 = i0.ɵɵgetCurrentView();
848
+ i0.ɵɵelementStart(0, "div", 62);
849
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseSuggestDialog()); });
850
+ i0.ɵɵelementStart(1, "div", 108);
851
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r18); return i0.ɵɵresetView($event.stopPropagation()); });
852
+ i0.ɵɵelementStart(2, "div", 64)(3, "h3", 65);
853
+ i0.ɵɵelement(4, "i", 19);
841
854
  i0.ɵɵtext(5, " AI Document Suggestion ");
842
855
  i0.ɵɵelementEnd();
843
- i0.ɵɵelementStart(6, "button", 64);
844
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Conditional_58_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseSuggestDialog()); });
845
- i0.ɵɵelement(7, "i", 65);
856
+ i0.ɵɵelementStart(6, "button", 66);
857
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseSuggestDialog()); });
858
+ i0.ɵɵelement(7, "i", 67);
846
859
  i0.ɵɵelementEnd()();
847
- i0.ɵɵelementStart(8, "div", 66);
848
- i0.ɵɵconditionalCreate(9, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_9_Template, 27, 11, "div", 67)(10, VectorManagementResourceComponent_Conditional_1_Conditional_58_Conditional_10_Template, 54, 12, "div", 107);
860
+ i0.ɵɵelementStart(8, "div", 68);
861
+ i0.ɵɵconditionalCreate(9, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_9_Template, 27, 11, "div", 69)(10, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Conditional_10_Template, 54, 12, "div", 109);
849
862
  i0.ɵɵelementEnd()()();
850
863
  } if (rf & 2) {
851
- const ctx_r2 = i0.ɵɵnextContext(2);
864
+ const ctx_r1 = i0.ɵɵnextContext(3);
852
865
  i0.ɵɵadvance();
853
- i0.ɵɵclassProp("open", ctx_r2.ShowSuggestDialog);
866
+ i0.ɵɵclassProp("open", ctx_r1.ShowSuggestDialog);
854
867
  i0.ɵɵadvance(8);
855
- i0.ɵɵconditional(!ctx_r2.SuggestionResult ? 9 : 10);
868
+ i0.ɵɵconditional(!ctx_r1.SuggestionResult ? 9 : 10);
856
869
  } }
857
- function VectorManagementResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
858
- const _r1 = i0.ɵɵgetCurrentView();
859
- i0.ɵɵelementStart(0, "div", 3);
860
- i0.ɵɵconditionalCreate(1, VectorManagementResourceComponent_Conditional_1_Conditional_1_Template, 7, 4, "div", 4);
861
- i0.ɵɵelementStart(2, "div", 5);
862
- i0.ɵɵrepeaterCreate(3, VectorManagementResourceComponent_Conditional_1_For_4_Template, 1, 1, "app-kpi-card", 6, _forTrack0);
863
- i0.ɵɵelementEnd();
864
- i0.ɵɵelementStart(5, "div", 7)(6, "div", 8)(7, "div", 9)(8, "h3", 10);
865
- i0.ɵɵelement(9, "i", 11);
866
- i0.ɵɵtext(10, " Entity Sync Status ");
867
- i0.ɵɵelementEnd();
868
- i0.ɵɵelementStart(11, "div", 12)(12, "button", 13);
869
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OpenSuggestDialog()); });
870
- i0.ɵɵelement(13, "i", 14);
871
- i0.ɵɵelementStart(14, "span", 15);
872
- i0.ɵɵtext(15, "Suggest Document");
870
+ function VectorManagementResourceComponent_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
871
+ const _r4 = i0.ɵɵgetCurrentView();
872
+ i0.ɵɵelementStart(0, "div", 9)(1, "div", 10);
873
+ i0.ɵɵrepeaterCreate(2, VectorManagementResourceComponent_ng_template_2_Conditional_1_For_3_Template, 1, 1, "app-kpi-card", 11, _forTrack0);
874
+ i0.ɵɵelementEnd();
875
+ i0.ɵɵelementStart(4, "div", 12)(5, "div", 13)(6, "div", 14)(7, "h3", 15);
876
+ i0.ɵɵelement(8, "i", 16);
877
+ i0.ɵɵtext(9, " Entity Sync Status ");
878
+ i0.ɵɵelementEnd();
879
+ i0.ɵɵelementStart(10, "div", 17)(11, "button", 18);
880
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenSuggestDialog()); });
881
+ i0.ɵɵelement(12, "i", 19);
882
+ i0.ɵɵelementStart(13, "span", 20);
883
+ i0.ɵɵtext(14, "Suggest Document");
873
884
  i0.ɵɵelementEnd()();
874
- i0.ɵɵelementStart(16, "button", 16);
875
- i0.ɵɵlistener("click", function VectorManagementResourceComponent_Conditional_1_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.LoadData()); });
876
- i0.ɵɵelement(17, "i", 17);
877
- i0.ɵɵtext(18, " Refresh ");
885
+ i0.ɵɵelementStart(15, "button", 21);
886
+ i0.ɵɵlistener("click", function VectorManagementResourceComponent_ng_template_2_Conditional_1_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.LoadData()); });
887
+ i0.ɵɵelement(16, "i", 22);
888
+ i0.ɵɵtext(17, " Refresh ");
878
889
  i0.ɵɵelementEnd()()();
879
- i0.ɵɵconditionalCreate(19, VectorManagementResourceComponent_Conditional_1_Conditional_19_Template, 4, 0, "div", 18)(20, VectorManagementResourceComponent_Conditional_1_Conditional_20_Template, 19, 0, "div", 19);
890
+ i0.ɵɵconditionalCreate(18, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_18_Template, 4, 0, "div", 23)(19, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_19_Template, 19, 0, "div", 24);
880
891
  i0.ɵɵelementEnd();
881
- i0.ɵɵelementStart(21, "div", 20)(22, "div", 21)(23, "h4", 22);
882
- i0.ɵɵelement(24, "i", 23);
883
- i0.ɵɵtext(25, " Vector DB Health ");
892
+ i0.ɵɵelementStart(20, "div", 25)(21, "div", 26)(22, "h4", 27);
893
+ i0.ɵɵelement(23, "i", 28);
894
+ i0.ɵɵtext(24, " Vector DB Health ");
884
895
  i0.ɵɵelementEnd();
885
- i0.ɵɵelementStart(26, "div", 24);
886
- i0.ɵɵelement(27, "span", 25);
887
- i0.ɵɵelementStart(28, "span", 26);
888
- i0.ɵɵtext(29);
896
+ i0.ɵɵelementStart(25, "div", 29);
897
+ i0.ɵɵelement(26, "span", 30);
898
+ i0.ɵɵelementStart(27, "span", 31);
899
+ i0.ɵɵtext(28);
889
900
  i0.ɵɵelementEnd()();
890
- i0.ɵɵelementStart(30, "div", 27);
891
- i0.ɵɵtext(31);
901
+ i0.ɵɵelementStart(29, "div", 32);
902
+ i0.ɵɵtext(30);
892
903
  i0.ɵɵelementEnd()();
893
- i0.ɵɵelementStart(32, "div", 21)(33, "h4", 22);
894
- i0.ɵɵelement(34, "i", 28);
895
- i0.ɵɵtext(35, " Embedding Model ");
904
+ i0.ɵɵelementStart(31, "div", 26)(32, "h4", 27);
905
+ i0.ɵɵelement(33, "i", 33);
906
+ i0.ɵɵtext(34, " Embedding Model ");
896
907
  i0.ɵɵelementEnd();
897
- i0.ɵɵelementStart(36, "div", 29)(37, "div", 30)(38, "span", 31);
898
- i0.ɵɵtext(39, "Model");
908
+ i0.ɵɵelementStart(35, "div", 34)(36, "div", 35)(37, "span", 36);
909
+ i0.ɵɵtext(38, "Model");
899
910
  i0.ɵɵelementEnd();
900
- i0.ɵɵelementStart(40, "span", 32);
901
- i0.ɵɵtext(41);
911
+ i0.ɵɵelementStart(39, "span", 37);
912
+ i0.ɵɵtext(40);
902
913
  i0.ɵɵelementEnd()();
903
- i0.ɵɵconditionalCreate(42, VectorManagementResourceComponent_Conditional_1_Conditional_42_Template, 6, 3, "div", 30);
914
+ i0.ɵɵconditionalCreate(41, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_41_Template, 6, 3, "div", 35);
904
915
  i0.ɵɵelementEnd()();
905
- i0.ɵɵelementStart(43, "div", 21)(44, "h4", 22);
906
- i0.ɵɵelement(45, "i", 33);
907
- i0.ɵɵtext(46, " Vectorization Coverage ");
916
+ i0.ɵɵelementStart(42, "div", 26)(43, "h4", 27);
917
+ i0.ɵɵelement(44, "i", 38);
918
+ i0.ɵɵtext(45, " Vectorization Coverage ");
908
919
  i0.ɵɵelementEnd();
909
- i0.ɵɵelementStart(47, "div", 34)(48, "div", 35);
910
- i0.ɵɵelement(49, "div", 36);
920
+ i0.ɵɵelementStart(46, "div", 39)(47, "div", 40);
921
+ i0.ɵɵelement(48, "div", 41);
911
922
  i0.ɵɵelementEnd();
912
- i0.ɵɵelementStart(50, "div", 37);
913
- i0.ɵɵtext(51);
923
+ i0.ɵɵelementStart(49, "div", 42);
924
+ i0.ɵɵtext(50);
914
925
  i0.ɵɵelementEnd()();
915
- i0.ɵɵelementStart(52, "div", 38);
916
- i0.ɵɵtext(53);
917
- i0.ɵɵpipe(54, "number");
926
+ i0.ɵɵelementStart(51, "div", 43);
927
+ i0.ɵɵtext(52);
928
+ i0.ɵɵpipe(53, "number");
918
929
  i0.ɵɵelementEnd()()()()();
919
- i0.ɵɵconditionalCreate(55, VectorManagementResourceComponent_Conditional_1_Conditional_55_Template, 57, 13, "div", 39);
920
- i0.ɵɵconditionalCreate(56, VectorManagementResourceComponent_Conditional_1_Conditional_56_Template, 34, 5, "div", 39);
921
- i0.ɵɵconditionalCreate(57, VectorManagementResourceComponent_Conditional_1_Conditional_57_Template, 14, 0, "div", 39);
922
- i0.ɵɵconditionalCreate(58, VectorManagementResourceComponent_Conditional_1_Conditional_58_Template, 11, 3, "div", 39);
930
+ i0.ɵɵconditionalCreate(54, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_54_Template, 57, 13, "div", 44);
931
+ i0.ɵɵconditionalCreate(55, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_55_Template, 34, 5, "div", 44);
932
+ i0.ɵɵconditionalCreate(56, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_56_Template, 14, 0, "div", 44);
933
+ i0.ɵɵconditionalCreate(57, VectorManagementResourceComponent_ng_template_2_Conditional_1_Conditional_57_Template, 11, 3, "div", 44);
923
934
  } if (rf & 2) {
924
- const ctx_r2 = i0.ɵɵnextContext();
925
- i0.ɵɵadvance();
926
- i0.ɵɵconditional(!ctx_r2.EmbeddedMode ? 1 : -1);
935
+ const ctx_r1 = i0.ɵɵnextContext(2);
927
936
  i0.ɵɵadvance(2);
928
- i0.ɵɵrepeater(ctx_r2.KPICards);
937
+ i0.ɵɵrepeater(ctx_r1.KPICards);
929
938
  i0.ɵɵadvance(16);
930
- i0.ɵɵconditional(ctx_r2.SyncRows.length === 0 ? 19 : 20);
939
+ i0.ɵɵconditional(ctx_r1.SyncRows.length === 0 ? 18 : 19);
931
940
  i0.ɵɵadvance(8);
932
- i0.ɵɵclassMap(ctx_r2.DBHealthClass);
941
+ i0.ɵɵclassMap(ctx_r1.DBHealthClass);
933
942
  i0.ɵɵadvance(2);
934
- i0.ɵɵtextInterpolate(ctx_r2.VectorDBName);
943
+ i0.ɵɵtextInterpolate(ctx_r1.VectorDBName);
935
944
  i0.ɵɵadvance(2);
936
- i0.ɵɵtextInterpolate(ctx_r2.VectorDBStatus);
945
+ i0.ɵɵtextInterpolate(ctx_r1.VectorDBStatus);
937
946
  i0.ɵɵadvance(10);
938
- i0.ɵɵtextInterpolate(ctx_r2.EmbeddingModel.Name);
947
+ i0.ɵɵtextInterpolate(ctx_r1.EmbeddingModel.Name);
939
948
  i0.ɵɵadvance();
940
- i0.ɵɵconditional(ctx_r2.EmbeddingModel.Dimensions != null ? 42 : -1);
949
+ i0.ɵɵconditional(ctx_r1.EmbeddingModel.Dimensions != null ? 41 : -1);
941
950
  i0.ɵɵadvance(7);
942
- i0.ɵɵstyleProp("width", ctx_r2.StorageUsagePercent, "%");
951
+ i0.ɵɵstyleProp("width", ctx_r1.StorageUsagePercent, "%");
943
952
  i0.ɵɵadvance(2);
944
- i0.ɵɵtextInterpolate1("", ctx_r2.StorageLabel, " of records vectorized");
953
+ i0.ɵɵtextInterpolate1("", ctx_r1.StorageLabel, " of records vectorized");
945
954
  i0.ɵɵadvance(2);
946
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(54, 16, ctx_r2.TotalVectors), " vectors stored ");
955
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(53, 15, ctx_r1.TotalVectors), " vectors stored ");
947
956
  i0.ɵɵadvance(2);
948
- i0.ɵɵconditional(ctx_r2.ShowEditPanel ? 55 : -1);
957
+ i0.ɵɵconditional(ctx_r1.ShowEditPanel ? 54 : -1);
949
958
  i0.ɵɵadvance();
950
- i0.ɵɵconditional(ctx_r2.ShowScheduleSyncDialog ? 56 : -1);
959
+ i0.ɵɵconditional(ctx_r1.ShowScheduleSyncDialog ? 55 : -1);
951
960
  i0.ɵɵadvance();
952
- i0.ɵɵconditional(ctx_r2.ShowNoIndexWarning ? 57 : -1);
961
+ i0.ɵɵconditional(ctx_r1.ShowNoIndexWarning ? 56 : -1);
953
962
  i0.ɵɵadvance();
954
- i0.ɵɵconditional(ctx_r2.ShowSuggestDialog ? 58 : -1);
963
+ i0.ɵɵconditional(ctx_r1.ShowSuggestDialog ? 57 : -1);
964
+ } }
965
+ function VectorManagementResourceComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
966
+ i0.ɵɵconditionalCreate(0, VectorManagementResourceComponent_ng_template_2_Conditional_0_Template, 2, 0, "div", 7)(1, VectorManagementResourceComponent_ng_template_2_Conditional_1_Template, 58, 17);
967
+ } if (rf & 2) {
968
+ const ctx_r1 = i0.ɵɵnextContext();
969
+ i0.ɵɵconditional(ctx_r1.IsLoading ? 0 : 1);
955
970
  } }
956
971
  let VectorManagementResourceComponent = class VectorManagementResourceComponent extends BaseResourceComponent {
957
972
  cdr = inject(ChangeDetectorRef);
@@ -960,8 +975,15 @@ let VectorManagementResourceComponent = class VectorManagementResourceComponent
960
975
  /** View mode: 'index' = Option A (shared index as hero, entity docs as children),
961
976
  * 'operations' = Option C (operations monitoring with real-time sync status) */
962
977
  ViewMode = 'index';
963
- /** Whether this component is embedded inside the Knowledge Hub shell */
964
- EmbeddedMode = false;
978
+ VectorViewOptions = [
979
+ { key: 'index', icon: 'fa-solid fa-cubes', title: 'Index View' },
980
+ { key: 'operations', icon: 'fa-solid fa-gauge-high', title: 'Operations View' }
981
+ ];
982
+ /**
983
+ * When true, renders only the body content (no chrome). Set by parent shells
984
+ * that embed this resource. See plans/explorer-chrome-conventions.md Section 5.
985
+ */
986
+ HideToolbar = false;
965
987
  /** Toggle between view modes */
966
988
  ToggleViewMode() {
967
989
  this.ViewMode = this.ViewMode === 'index' ? 'operations' : 'index';
@@ -2211,11 +2233,15 @@ let VectorManagementResourceComponent = class VectorManagementResourceComponent
2211
2233
  } if (rf & 2) {
2212
2234
  let _t;
2213
2235
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entitySearchInput = _t.first);
2214
- } }, inputs: { EmbeddedMode: "EmbeddedMode" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [["entitySearchInput", ""], [1, "vector-loading"], ["text", "Loading vector management data..."], [1, "vector-dashboard"], [1, "view-mode-toggle"], [1, "kpi-row"], [3, "data"], [1, "content-area"], [1, "sync-table-panel"], [1, "panel-header"], [1, "panel-title"], [1, "fa-solid", "fa-table-list"], [1, "panel-actions"], ["title", "Use AI to suggest an Entity Document template", 1, "suggest-btn", 3, "click"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "suggest-btn-text"], ["title", "Refresh data", 1, "refresh-btn", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [1, "empty-state"], [1, "table-wrapper"], [1, "sidebar"], [1, "sidebar-card"], [1, "sidebar-title"], [1, "fa-solid", "fa-heart-pulse"], [1, "health-row"], [1, "health-dot"], [1, "health-label"], [1, "health-status"], [1, "fa-solid", "fa-microchip"], [1, "model-info"], [1, "info-row"], [1, "info-label"], [1, "info-value"], [1, "fa-solid", "fa-hard-drive"], [1, "gauge-container"], [1, "gauge-bar"], [1, "gauge-fill"], [1, "gauge-label"], [1, "storage-detail"], [1, "slide-panel-overlay"], [1, "view-mode-btn", 3, "click"], [1, "fa-solid", "fa-cubes"], [1, "fa-solid", "fa-gauge-high"], [1, "fa-solid", "fa-folder-open"], [1, "sync-table"], [1, "text-right"], [1, "text-center"], [1, "entity-name"], [1, "document-name"], [1, "text-right", "vector-count"], [1, "last-synced"], [1, "status-badge"], [1, "text-center", "actions-cell"], ["title", "Sync now", 1, "sync-btn", 3, "click", "disabled"], ["title", "Schedule recurring sync", 1, "schedule-btn", 3, "click"], [1, "fa-regular", "fa-clock"], ["title", "Edit entity document", 1, "edit-btn", 3, "click"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"], [1, "slide-panel-overlay", 3, "click"], [1, "slide-panel", "open", 3, "click"], [1, "suggest-dialog-header"], [1, "suggest-dialog-title"], [1, "suggest-close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "suggest-dialog-body"], [1, "suggest-form"], [1, "suggest-field"], [1, "suggest-label"], [1, "edit-readonly-value"], [1, "edit-template-header"], ["title", "Regenerate template using AI", 1, "edit-regenerate-btn", 3, "click", "disabled"], [1, "template-editor-wrapper"], ["language", "markdown", 3, "change", "value", "readonly", "lineWrapping"], ["type", "text", 1, "suggest-input", 3, "ngModelChange", "ngModel"], [1, "suggest-select", 3, "ngModelChange", "ngModel"], [3, "value"], [1, "suggest-select", 3, "ngModel"], [1, "edit-readonly-value", 2, "font-size", "13px", "color", "var(--mj-text-muted)"], ["value", "Active"], ["value", "Inactive"], [1, "result-actions", 2, "margin-top", "1rem"], ["text", "Saving...", "size", "small"], [1, "result-tags"], [1, "result-tag"], ["value", ""], [1, "suggest-submit-btn", 3, "click"], [1, "fa-solid", "fa-save"], [1, "edit-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash-can"], [1, "suggest-close-action", 3, "click"], [1, "schedule-dialog", 3, "click"], ["type", "text", "placeholder", "0 2 * * *", 1, "suggest-input", 3, "ngModelChange", "ngModel"], [1, "schedule-cron-preview"], [1, "fa-solid", "fa-info-circle"], [1, "suggest-field", "schedule-toggle-row"], ["type", "checkbox", 1, "mj-checkbox", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-check"], [1, "no-index-warning-dialog", 3, "click"], [1, "no-index-warning-icon"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "no-index-warning-title"], [1, "no-index-warning-message"], [1, "no-index-warning-actions"], [1, "fa-solid", "fa-gear"], [1, "slide-panel", 3, "click"], [1, "suggest-result"], [1, "entity-picker"], [1, "entity-picker-trigger", 3, "click"], [1, "fa-solid", "fa-chevron-down", "entity-picker-arrow"], [1, "entity-picker-dropdown"], [1, "use-case-options"], [1, "use-case-btn", 3, "click"], [1, "fa-solid", "fa-clone"], [1, "fa-solid", "fa-magnifying-glass"], [1, "fa-solid", "fa-tags"], [1, "suggest-submit-btn", 3, "click", "disabled"], [1, "suggestion-error"], [1, "fa-solid", "fa-table"], [1, "entity-picker-value"], [1, "fa-solid", "fa-search"], [1, "entity-picker-placeholder"], [1, "entity-picker-dropdown", 3, "mousedown"], [1, "entity-picker-search"], ["type", "text", "placeholder", "Filter entities...", 1, "entity-picker-search-input", 3, "ngModelChange", "input", "keydown", "ngModel"], [1, "entity-picker-list"], [1, "entity-picker-group"], [1, "entity-picker-empty"], [1, "entity-picker-group-header"], [1, "fa-solid", "fa-database"], [1, "entity-picker-item", 3, "entity-picker-item-selected", "entity-picker-item-focused"], [1, "entity-picker-item", 3, "click"], [1, "fa-solid", "fa-circle-exclamation"], [1, "result-section"], [1, "result-heading"], [1, "result-section", "result-thresholds"], [1, "threshold-item"], [1, "threshold-label"], [1, "threshold-value"], [1, "result-reasoning"], [1, "suggest-field", 2, "margin-top", "0.75rem"], [1, "result-actions"], [1, "save-spinner"], [1, "result-relationship"], [1, "rel-name"], [1, "rel-fields"], [1, "fa-solid", "fa-floppy-disk"], [1, "suggest-submit-btn", "suggest-try-again-btn", 3, "click"], [1, "fa-solid", "fa-rotate"]], template: function VectorManagementResourceComponent_Template(rf, ctx) { if (rf & 1) {
2215
- i0.ɵɵconditionalCreate(0, VectorManagementResourceComponent_Conditional_0_Template, 2, 0, "div", 1)(1, VectorManagementResourceComponent_Conditional_1_Template, 59, 18);
2236
+ } }, inputs: { HideToolbar: "HideToolbar" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 2, consts: [["vectorBody", ""], ["entitySearchInput", ""], ["Title", "Vector Management", "Icon", "fa-solid fa-cubes", "Subtitle", "Vector index health, embeddings, and entity sync status"], ["actions", ""], [3, "KeyChange", "Options", "ActiveKey"], [3, "Flex"], [4, "ngTemplateOutlet"], [1, "vector-loading"], ["text", "Loading vector management data..."], [1, "vector-dashboard"], [1, "kpi-row"], [3, "data"], [1, "content-area"], [1, "sync-table-panel"], [1, "panel-header"], [1, "panel-title"], [1, "fa-solid", "fa-table-list"], [1, "panel-actions"], ["title", "Use AI to suggest an Entity Document template", 1, "suggest-btn", 3, "click"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "suggest-btn-text"], ["title", "Refresh data", 1, "refresh-btn", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [1, "empty-state"], [1, "table-wrapper"], [1, "sidebar"], [1, "sidebar-card"], [1, "sidebar-title"], [1, "fa-solid", "fa-heart-pulse"], [1, "health-row"], [1, "health-dot"], [1, "health-label"], [1, "health-status"], [1, "fa-solid", "fa-microchip"], [1, "model-info"], [1, "info-row"], [1, "info-label"], [1, "info-value"], [1, "fa-solid", "fa-hard-drive"], [1, "gauge-container"], [1, "gauge-bar"], [1, "gauge-fill"], [1, "gauge-label"], [1, "storage-detail"], [1, "slide-panel-overlay"], [1, "fa-solid", "fa-folder-open"], [1, "sync-table"], [1, "text-right"], [1, "text-center"], [1, "entity-name"], [1, "document-name"], [1, "text-right", "vector-count"], [1, "last-synced"], [1, "status-badge"], [1, "text-center", "actions-cell"], ["title", "Sync now", 1, "sync-btn", 3, "click", "disabled"], ["title", "Schedule recurring sync", 1, "schedule-btn", 3, "click"], [1, "fa-regular", "fa-clock"], ["title", "Edit entity document", 1, "edit-btn", 3, "click"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"], [1, "slide-panel-overlay", 3, "click"], [1, "slide-panel", "open", 3, "click"], [1, "suggest-dialog-header"], [1, "suggest-dialog-title"], [1, "suggest-close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "suggest-dialog-body"], [1, "suggest-form"], [1, "suggest-field"], [1, "suggest-label"], [1, "edit-readonly-value"], [1, "edit-template-header"], ["title", "Regenerate template using AI", 1, "edit-regenerate-btn", 3, "click", "disabled"], [1, "template-editor-wrapper"], ["language", "markdown", 3, "change", "value", "readonly", "lineWrapping"], ["type", "text", 1, "suggest-input", 3, "ngModelChange", "ngModel"], [1, "suggest-select", 3, "ngModelChange", "ngModel"], [3, "value"], [1, "suggest-select", 3, "ngModel"], [1, "edit-readonly-value", 2, "font-size", "13px", "color", "var(--mj-text-muted)"], ["value", "Active"], ["value", "Inactive"], [1, "result-actions", 2, "margin-top", "1rem"], ["text", "Saving...", "size", "small"], [1, "result-tags"], [1, "result-tag"], ["value", ""], [1, "suggest-submit-btn", 3, "click"], [1, "fa-solid", "fa-save"], [1, "edit-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash-can"], [1, "suggest-close-action", 3, "click"], [1, "schedule-dialog", 3, "click"], ["type", "text", "placeholder", "0 2 * * *", 1, "suggest-input", 3, "ngModelChange", "ngModel"], [1, "schedule-cron-preview"], [1, "fa-solid", "fa-info-circle"], [1, "suggest-field", "schedule-toggle-row"], ["type", "checkbox", 1, "mj-checkbox", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-check"], [1, "no-index-warning-dialog", 3, "click"], [1, "no-index-warning-icon"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "no-index-warning-title"], [1, "no-index-warning-message"], [1, "no-index-warning-actions"], [1, "fa-solid", "fa-gear"], [1, "slide-panel", 3, "click"], [1, "suggest-result"], [1, "entity-picker"], [1, "entity-picker-trigger", 3, "click"], [1, "fa-solid", "fa-chevron-down", "entity-picker-arrow"], [1, "entity-picker-dropdown"], [1, "use-case-options"], [1, "use-case-btn", 3, "click"], [1, "fa-solid", "fa-clone"], [1, "fa-solid", "fa-magnifying-glass"], [1, "fa-solid", "fa-tags"], [1, "suggest-submit-btn", 3, "click", "disabled"], [1, "suggestion-error"], [1, "fa-solid", "fa-table"], [1, "entity-picker-value"], [1, "fa-solid", "fa-search"], [1, "entity-picker-placeholder"], [1, "entity-picker-dropdown", 3, "mousedown"], [1, "entity-picker-search"], ["type", "text", "placeholder", "Filter entities...", 1, "entity-picker-search-input", 3, "ngModelChange", "input", "keydown", "ngModel"], [1, "entity-picker-list"], [1, "entity-picker-group"], [1, "entity-picker-empty"], [1, "entity-picker-group-header"], [1, "fa-solid", "fa-database"], [1, "entity-picker-item", 3, "entity-picker-item-selected", "entity-picker-item-focused"], [1, "entity-picker-item", 3, "click"], [1, "fa-solid", "fa-circle-exclamation"], [1, "result-section"], [1, "result-heading"], [1, "result-section", "result-thresholds"], [1, "threshold-item"], [1, "threshold-label"], [1, "threshold-value"], [1, "result-reasoning"], [1, "suggest-field", 2, "margin-top", "0.75rem"], [1, "result-actions"], [1, "save-spinner"], [1, "result-relationship"], [1, "rel-name"], [1, "rel-fields"], [1, "fa-solid", "fa-floppy-disk"], [1, "suggest-submit-btn", "suggest-try-again-btn", 3, "click"], [1, "fa-solid", "fa-rotate"]], template: function VectorManagementResourceComponent_Template(rf, ctx) { if (rf & 1) {
2237
+ i0.ɵɵconditionalCreate(0, VectorManagementResourceComponent_Conditional_0_Template, 6, 4, "mj-page-layout");
2238
+ i0.ɵɵconditionalCreate(1, VectorManagementResourceComponent_Conditional_1_Template, 1, 1, "ng-container");
2239
+ i0.ɵɵtemplate(2, VectorManagementResourceComponent_ng_template_2_Template, 2, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
2216
2240
  } if (rf & 2) {
2217
- i0.ɵɵconditional(ctx.IsLoading ? 0 : 1);
2218
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.CodeEditorComponent, i3.LoadingComponent, i4.KPICardComponent, i5.DecimalPipe], styles: ["\n\n\n\n\n\n\n\n.vector-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n}\n\n\n\n.view-mode-toggle[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.25rem;\n padding: 0 24px 0;\n margin-bottom: -12px;\n}\n\n.view-mode-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.4rem;\n padding: 0.4rem 0.85rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.view-mode-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.view-mode-btn-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n\n\n.vector-dashboard[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 24px;\n background: var(--mj-bg-page);\n min-height: 100%;\n}\n\n\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n}\n\n@media (max-width: 1200px) {\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 600px) {\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 300px;\n gap: 24px;\n align-items: start;\n}\n\n@media (max-width: 1024px) {\n .content-area[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n.sync-table-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.panel-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.refresh-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.refresh-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n.table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n\n.sync-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.sync-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 10px 16px;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n text-align: left;\n white-space: nowrap;\n}\n\n.sync-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n font-size: 13px;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-subtle);\n vertical-align: middle;\n}\n\n.sync-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.text-right[_ngcontent-%COMP%] {\n text-align: right;\n}\n\n.text-center[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.entity-name[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n.document-name[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.vector-count[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n font-weight: 600;\n}\n\n.last-synced[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 12px;\n white-space: nowrap;\n}\n\n\n\n\n.actions-cell[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n align-items: center;\n justify-content: center;\n}\n\n.schedule-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.schedule-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n}\n\n.edit-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.schedule-dialog[_ngcontent-%COMP%] {\n width: 440px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n}\n\n.schedule-cron-preview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 0 0;\n font-size: 0.82rem;\n color: var(--mj-text-muted);\n}\n\n.schedule-toggle-row[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 12px;\n}\n\n.edit-delete-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-status-error-border);\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error-text);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.edit-delete-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n}\n\n.edit-readonly-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 4px 10px;\n border-radius: 999px;\n font-size: 11px;\n font-weight: 600;\n white-space: nowrap;\n}\n\n.status-synced[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n\n.status-syncing[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.status-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error-text, var(--mj-status-error));\n}\n\n.status-pending[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n}\n\n\n\n.sync-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.sync-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.sync-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n\n\n.sidebar[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.sidebar-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n}\n\n.sidebar-title[_ngcontent-%COMP%] {\n margin: 0 0 14px 0;\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sidebar-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n\n\n.health-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n}\n\n.health-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.health-healthy[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-success) 50%, transparent);\n}\n\n.health-degraded[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-warning) 50%, transparent);\n}\n\n.health-offline[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-error) 50%, transparent);\n}\n\n.health-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.health-status[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding-left: 18px;\n}\n\n\n\n.model-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.info-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.info-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n\n\n.gauge-container[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.gauge-bar[_ngcontent-%COMP%] {\n height: 8px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n margin-bottom: 6px;\n}\n\n.gauge-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 4px;\n background: var(--mj-brand-primary);\n transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 2px;\n}\n\n.gauge-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.storage-detail[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n\n\n.suggest-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.suggest-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary-hover);\n}\n\n\n\n.slide-panel-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 100000;\n}\n\n.slide-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n height: 100vh;\n width: 480px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 24px color-mix(in srgb, var(--mj-text-primary) 12%, transparent);\n transform: translateX(100%);\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n overflow-y: auto;\n}\n\n.slide-panel.open[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n.suggest-dialog-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.suggest-dialog-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.suggest-dialog-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.suggest-close-btn[_ngcontent-%COMP%] {\n border: none;\n background: none;\n color: var(--mj-text-muted);\n font-size: 16px;\n cursor: pointer;\n padding: 4px;\n}\n\n.suggest-close-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n}\n\n.suggest-dialog-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.suggest-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.suggest-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.suggest-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.suggest-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n}\n\n.suggest-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n\n\n\n.use-case-options[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.use-case-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.use-case-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n.use-case-btn-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.use-case-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n\n.entity-picker[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.entity-picker-trigger[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 9px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: border-color 0.15s;\n}\n\n.entity-picker-trigger[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.entity-picker-placeholder[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.entity-picker-value[_ngcontent-%COMP%] {\n flex: 1;\n font-weight: 500;\n}\n\n.entity-picker-arrow[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.2s;\n}\n\n.entity-picker-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n background: var(--mj-bg-surface-elevated, var(--mj-bg-surface));\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n box-shadow: 0 8px 32px color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n z-index: 100;\n max-height: 350px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.entity-picker-search[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-picker-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.entity-picker-search-input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n background: transparent;\n color: var(--mj-text-primary);\n font-size: 13px;\n outline: none;\n}\n\n.entity-picker-search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.entity-picker-list[_ngcontent-%COMP%] {\n overflow-y: auto;\n max-height: 300px;\n padding: 4px 0;\n}\n\n.entity-picker-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px 4px;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n background: var(--mj-bg-surface-elevated, var(--mj-bg-surface));\n}\n\n.entity-picker-group-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.entity-picker-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 14px 7px 28px;\n border: none;\n background: transparent;\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 0.1s;\n}\n\n.entity-picker-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.entity-picker-item-selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-picker-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-picker-item-selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.entity-picker-item-focused[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: -2px;\n}\n\n.entity-picker-empty[_ngcontent-%COMP%] {\n padding: 20px 14px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n\n\n\n.template-editor-wrapper[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n min-height: 120px;\n max-height: 300px;\n}\n\n.template-editor-wrapper[_ngcontent-%COMP%] .cm-editor {\n min-height: 120px;\n max-height: 300px;\n font-size: 13px;\n}\n\n.suggest-submit-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 10px 20px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.suggest-submit-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.suggestion-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n font-size: 13px;\n line-height: 1.4;\n}\n\n.suggestion-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n.suggest-submit-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.suggest-result[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.result-section[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n padding-bottom: 12px;\n}\n\n.result-section[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.result-heading[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.result-template[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 6px;\n padding: 12px;\n font-size: 12px;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-all;\n margin: 0;\n}\n\n.result-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.result-tag[_ngcontent-%COMP%] {\n padding: 3px 10px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 500;\n}\n\n.result-relationship[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.rel-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.rel-fields[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.result-thresholds[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n}\n\n.threshold-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.threshold-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.threshold-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.result-reasoning[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.result-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding-top: 8px;\n}\n\n.suggest-close-action[_ngcontent-%COMP%] {\n padding: 10px 20px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.suggest-close-action[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n\n\n.suggest-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n width: 100%;\n box-sizing: border-box;\n}\n\n.suggest-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n\n\n.suggest-try-again-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-primary);\n}\n\n.suggest-try-again-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n\n\n.save-spinner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 0;\n}\n\n\n\n.edit-template-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.edit-regenerate-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 4px 10px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.edit-regenerate-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.edit-regenerate-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.no-index-warning-dialog[_ngcontent-%COMP%] {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 440px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 20px 60px color-mix(in srgb, var(--mj-text-primary) 20%, transparent);\n padding: 32px;\n text-align: center;\n}\n\n.no-index-warning-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n margin: 0 auto 16px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n}\n\n.no-index-warning-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-warning);\n}\n\n.no-index-warning-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.no-index-warning-message[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n font-size: 14px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n}\n\n.no-index-warning-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n\n\n\n\n\n\n@media (max-width: 768px) {\n .panel-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .panel-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 600px) {\n .slide-panel[_ngcontent-%COMP%] {\n width: 100vw;\n max-width: 100vw;\n }\n}\n\n@media (max-width: 480px) {\n .vector-dashboard[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .suggest-btn[_ngcontent-%COMP%] .suggest-btn-text[_ngcontent-%COMP%] {\n display: none;\n }\n}"] });
2241
+ i0.ɵɵconditional(!ctx.HideToolbar ? 0 : -1);
2242
+ i0.ɵɵadvance();
2243
+ i0.ɵɵconditional(ctx.HideToolbar ? 1 : -1);
2244
+ } }, dependencies: [i1.NgTemplateOutlet, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.CodeEditorComponent, i4.LoadingComponent, i5.KPICardComponent, i6.MJPageHeaderComponent, i6.MJPageLayoutComponent, i6.MJPageBodyComponent, i6.MJViewToggleComponent, i1.DecimalPipe], styles: ["\n\n\n\n\n\n\n\n\n.vector-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n}\n\n\n\n.view-mode-toggle[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.25rem;\n padding: 0 24px 0;\n margin-bottom: -12px;\n}\n\n.view-mode-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.4rem;\n padding: 0.4rem 0.85rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.view-mode-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.view-mode-btn-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n\n\n.vector-dashboard[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 24px;\n background: var(--mj-bg-page);\n min-height: 100%;\n}\n\n\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n}\n\n@media (max-width: 1200px) {\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 600px) {\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 300px;\n gap: 24px;\n align-items: start;\n}\n\n@media (max-width: 1024px) {\n .content-area[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n.sync-table-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.panel-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.refresh-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.refresh-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n.table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n\n.sync-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.sync-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 10px 16px;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n text-align: left;\n white-space: nowrap;\n}\n\n.sync-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n font-size: 13px;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-subtle);\n vertical-align: middle;\n}\n\n.sync-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.text-right[_ngcontent-%COMP%] {\n text-align: right;\n}\n\n.text-center[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.entity-name[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n.document-name[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.vector-count[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n font-weight: 600;\n}\n\n.last-synced[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 12px;\n white-space: nowrap;\n}\n\n\n\n\n.actions-cell[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n align-items: center;\n justify-content: center;\n}\n\n.schedule-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.schedule-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n}\n\n.edit-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.schedule-dialog[_ngcontent-%COMP%] {\n width: 440px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n}\n\n.schedule-cron-preview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 0 0;\n font-size: 0.82rem;\n color: var(--mj-text-muted);\n}\n\n.schedule-toggle-row[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 12px;\n}\n\n.edit-delete-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-status-error-border);\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error-text);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.edit-delete-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n}\n\n.edit-readonly-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 4px 10px;\n border-radius: 999px;\n font-size: 11px;\n font-weight: 600;\n white-space: nowrap;\n}\n\n.status-synced[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n\n.status-syncing[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.status-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error-text, var(--mj-status-error));\n}\n\n.status-pending[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n}\n\n\n\n.sync-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.sync-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.sync-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n\n\n.sidebar[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.sidebar-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n}\n\n.sidebar-title[_ngcontent-%COMP%] {\n margin: 0 0 14px 0;\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sidebar-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n\n\n.health-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n}\n\n.health-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.health-healthy[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-success) 50%, transparent);\n}\n\n.health-degraded[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-warning) 50%, transparent);\n}\n\n.health-offline[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-error) 50%, transparent);\n}\n\n.health-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.health-status[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding-left: 18px;\n}\n\n\n\n.model-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.info-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.info-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n\n\n.gauge-container[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.gauge-bar[_ngcontent-%COMP%] {\n height: 8px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n margin-bottom: 6px;\n}\n\n.gauge-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 4px;\n background: var(--mj-brand-primary);\n transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 2px;\n}\n\n.gauge-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.storage-detail[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n\n\n.suggest-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.suggest-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary-hover);\n}\n\n\n\n.slide-panel-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 100000;\n}\n\n.slide-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n height: 100vh;\n width: 480px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 24px color-mix(in srgb, var(--mj-text-primary) 12%, transparent);\n transform: translateX(100%);\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n overflow-y: auto;\n}\n\n.slide-panel.open[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n.suggest-dialog-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.suggest-dialog-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.suggest-dialog-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.suggest-close-btn[_ngcontent-%COMP%] {\n border: none;\n background: none;\n color: var(--mj-text-muted);\n font-size: 16px;\n cursor: pointer;\n padding: 4px;\n}\n\n.suggest-close-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n}\n\n.suggest-dialog-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.suggest-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.suggest-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.suggest-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.suggest-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n}\n\n.suggest-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n\n\n\n.use-case-options[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.use-case-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.use-case-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n.use-case-btn-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.use-case-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n\n.entity-picker[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.entity-picker-trigger[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 9px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: border-color 0.15s;\n}\n\n.entity-picker-trigger[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.entity-picker-placeholder[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.entity-picker-value[_ngcontent-%COMP%] {\n flex: 1;\n font-weight: 500;\n}\n\n.entity-picker-arrow[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.2s;\n}\n\n.entity-picker-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n background: var(--mj-bg-surface-elevated, var(--mj-bg-surface));\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n box-shadow: 0 8px 32px color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n z-index: 100;\n max-height: 350px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.entity-picker-search[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-picker-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.entity-picker-search-input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n background: transparent;\n color: var(--mj-text-primary);\n font-size: 13px;\n outline: none;\n}\n\n.entity-picker-search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.entity-picker-list[_ngcontent-%COMP%] {\n overflow-y: auto;\n max-height: 300px;\n padding: 4px 0;\n}\n\n.entity-picker-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px 4px;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n background: var(--mj-bg-surface-elevated, var(--mj-bg-surface));\n}\n\n.entity-picker-group-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.entity-picker-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 14px 7px 28px;\n border: none;\n background: transparent;\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 0.1s;\n}\n\n.entity-picker-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.entity-picker-item-selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-picker-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-picker-item-selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.entity-picker-item-focused[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: -2px;\n}\n\n.entity-picker-empty[_ngcontent-%COMP%] {\n padding: 20px 14px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n\n\n\n.template-editor-wrapper[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n min-height: 120px;\n max-height: 300px;\n}\n\n.template-editor-wrapper[_ngcontent-%COMP%] .cm-editor {\n min-height: 120px;\n max-height: 300px;\n font-size: 13px;\n}\n\n.suggest-submit-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 10px 20px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.suggest-submit-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.suggestion-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n font-size: 13px;\n line-height: 1.4;\n}\n\n.suggestion-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n.suggest-submit-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.suggest-result[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.result-section[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n padding-bottom: 12px;\n}\n\n.result-section[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.result-heading[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.result-template[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 6px;\n padding: 12px;\n font-size: 12px;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-all;\n margin: 0;\n}\n\n.result-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.result-tag[_ngcontent-%COMP%] {\n padding: 3px 10px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 500;\n}\n\n.result-relationship[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.rel-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.rel-fields[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.result-thresholds[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n}\n\n.threshold-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.threshold-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.threshold-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.result-reasoning[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.result-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding-top: 8px;\n}\n\n.suggest-close-action[_ngcontent-%COMP%] {\n padding: 10px 20px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.suggest-close-action[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n\n\n.suggest-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n width: 100%;\n box-sizing: border-box;\n}\n\n.suggest-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n\n\n.suggest-try-again-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-primary);\n}\n\n.suggest-try-again-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n\n\n.save-spinner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 0;\n}\n\n\n\n.edit-template-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.edit-regenerate-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 4px 10px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.edit-regenerate-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.edit-regenerate-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.no-index-warning-dialog[_ngcontent-%COMP%] {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 440px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 20px 60px color-mix(in srgb, var(--mj-text-primary) 20%, transparent);\n padding: 32px;\n text-align: center;\n}\n\n.no-index-warning-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n margin: 0 auto 16px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n}\n\n.no-index-warning-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-warning);\n}\n\n.no-index-warning-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.no-index-warning-message[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n font-size: 14px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n}\n\n.no-index-warning-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n\n\n\n\n\n\n@media (max-width: 768px) {\n .panel-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .panel-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 600px) {\n .slide-panel[_ngcontent-%COMP%] {\n width: 100vw;\n max-width: 100vw;\n }\n}\n\n@media (max-width: 480px) {\n .vector-dashboard[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .suggest-btn[_ngcontent-%COMP%] .suggest-btn-text[_ngcontent-%COMP%] {\n display: none;\n }\n}"] });
2219
2245
  };
2220
2246
  VectorManagementResourceComponent = __decorate([
2221
2247
  RegisterClass(BaseResourceComponent, 'VectorManagementResource')
@@ -2223,14 +2249,14 @@ VectorManagementResourceComponent = __decorate([
2223
2249
  export { VectorManagementResourceComponent };
2224
2250
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(VectorManagementResourceComponent, [{
2225
2251
  type: Component,
2226
- args: [{ standalone: false, selector: 'app-vector-management-resource', template: "@if (IsLoading) {\n <div class=\"vector-loading\">\n <mj-loading text=\"Loading vector management data...\"></mj-loading>\n </div>\n} @else {\n <div class=\"vector-dashboard\">\n <!-- View Mode Toggle -->\n @if (!EmbeddedMode) {\n <div class=\"view-mode-toggle\">\n <button class=\"view-mode-btn\" [class.view-mode-btn-active]=\"ViewMode === 'index'\" (click)=\"ViewMode = 'index'\">\n <i class=\"fa-solid fa-cubes\"></i> Index View\n </button>\n <button class=\"view-mode-btn\" [class.view-mode-btn-active]=\"ViewMode === 'operations'\" (click)=\"ViewMode = 'operations'\">\n <i class=\"fa-solid fa-gauge-high\"></i> Operations\n </button>\n </div>\n }\n\n <!-- KPI Cards Row -->\n <div class=\"kpi-row\">\n @for (card of KPICards; track card.title) {\n <app-kpi-card [data]=\"card\"></app-kpi-card>\n }\n </div>\n\n <!-- Main Content Area: Table + Sidebar -->\n <div class=\"content-area\">\n <!-- Entity Sync Table -->\n <div class=\"sync-table-panel\">\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-table-list\"></i>\n Entity Sync Status\n </h3>\n <div class=\"panel-actions\">\n <button class=\"suggest-btn\" (click)=\"OpenSuggestDialog()\" title=\"Use AI to suggest an Entity Document template\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <span class=\"suggest-btn-text\">Suggest Document</span>\n </button>\n <button class=\"refresh-btn\" (click)=\"LoadData()\" title=\"Refresh data\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n Refresh\n </button>\n </div>\n </div>\n\n @if (SyncRows.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <p>No entity documents configured for vectorization.</p>\n </div>\n } @else {\n <div class=\"table-wrapper\">\n <table class=\"sync-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th>Document</th>\n <th class=\"text-right\">Vectors</th>\n <th>Last Synced</th>\n <th>Status</th>\n <th class=\"text-center\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (row of SyncRows; track row.EntityDocumentID) {\n <tr>\n <td class=\"entity-name\">{{ row.EntityName }}</td>\n <td class=\"document-name\">{{ row.DocumentName }}</td>\n <td class=\"text-right vector-count\">{{ row.VectorCount | number }}</td>\n <td class=\"last-synced\">{{ FormatDate(row.LastSynced) }}</td>\n <td>\n <span class=\"status-badge\" [class]=\"GetStatusClass(row.Status)\">\n <i [class]=\"GetStatusIcon(row.Status)\"></i>\n @if (row.Status === 'Syncing' && row.PercentComplete > 0) {\n {{ row.PercentComplete }}%\n } @else {\n {{ row.Status }}\n }\n </span>\n </td>\n <td class=\"text-center actions-cell\">\n <button\n class=\"sync-btn\"\n [disabled]=\"SyncingIds.has(row.EntityDocumentID)\"\n (click)=\"SyncEntity(row.EntityDocumentID)\"\n title=\"Sync now\">\n @if (SyncingIds.has(row.EntityDocumentID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n {{ row.PercentComplete > 0 ? row.PercentComplete + '%' : 'Sync' }}\n } @else {\n <i class=\"fa-solid fa-play\"></i>\n Sync\n }\n </button>\n <button\n class=\"schedule-btn\"\n (click)=\"OpenScheduleSyncDialog(row.EntityDocumentID)\"\n title=\"Schedule recurring sync\">\n <i class=\"fa-regular fa-clock\"></i>\n </button>\n <button\n class=\"edit-btn\"\n (click)=\"OpenEditPanel(row.EntityDocumentID)\"\n title=\"Edit entity document\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n\n <!-- Sidebar Panels -->\n <div class=\"sidebar\">\n <!-- Vector DB Health -->\n <div class=\"sidebar-card\">\n <h4 class=\"sidebar-title\">\n <i class=\"fa-solid fa-heart-pulse\"></i>\n Vector DB Health\n </h4>\n <div class=\"health-row\">\n <span class=\"health-dot\" [class]=\"DBHealthClass\"></span>\n <span class=\"health-label\">{{ VectorDBName }}</span>\n </div>\n <div class=\"health-status\">{{ VectorDBStatus }}</div>\n </div>\n\n <!-- Embedding Model Info -->\n <div class=\"sidebar-card\">\n <h4 class=\"sidebar-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Embedding Model\n </h4>\n <div class=\"model-info\">\n <div class=\"info-row\">\n <span class=\"info-label\">Model</span>\n <span class=\"info-value\">{{ EmbeddingModel.Name }}</span>\n </div>\n @if (EmbeddingModel.Dimensions != null) {\n <div class=\"info-row\">\n <span class=\"info-label\">Dimensions</span>\n <span class=\"info-value\">{{ EmbeddingModel.Dimensions | number }}</span>\n </div>\n }\n </div>\n </div>\n\n <!-- Storage Usage -->\n <div class=\"sidebar-card\">\n <h4 class=\"sidebar-title\">\n <i class=\"fa-solid fa-hard-drive\"></i>\n Vectorization Coverage\n </h4>\n <div class=\"gauge-container\">\n <div class=\"gauge-bar\">\n <div class=\"gauge-fill\" [style.width.%]=\"StorageUsagePercent\"></div>\n </div>\n <div class=\"gauge-label\">{{ StorageLabel }} of records vectorized</div>\n </div>\n <div class=\"storage-detail\">\n {{ TotalVectors | number }} vectors stored\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Edit Entity Document Slide-in Panel -->\n @if (ShowEditPanel) {\n <div class=\"slide-panel-overlay\" (click)=\"CloseEditPanel()\">\n <div class=\"slide-panel open\" (click)=\"$event.stopPropagation()\">\n <div class=\"suggest-dialog-header\">\n <h3 class=\"suggest-dialog-title\">\n <i class=\"fa-solid fa-pen\"></i>\n Edit Entity Document\n </h3>\n <button class=\"suggest-close-btn\" (click)=\"CloseEditPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"suggest-dialog-body\">\n <div class=\"suggest-form\">\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Entity</label>\n <span class=\"edit-readonly-value\">{{ EditDocEntityName }}</span>\n </div>\n\n <!-- Template Section -->\n <div class=\"suggest-field\">\n <div class=\"edit-template-header\">\n <label class=\"suggest-label\">Template</label>\n <button class=\"edit-regenerate-btn\"\n [disabled]=\"IsEditRegenerating\"\n (click)=\"RegenerateTemplate()\"\n title=\"Regenerate template using AI\">\n @if (IsEditRegenerating) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Regenerating...\n } @else {\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Regenerate with AI\n }\n </button>\n </div>\n <div class=\"template-editor-wrapper\">\n <mj-code-editor\n [value]=\"EditDocTemplate\"\n language=\"markdown\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"OnEditTemplateChange($event)\">\n </mj-code-editor>\n </div>\n </div>\n\n <!-- Selected Fields (parsed from template) -->\n @if (EditDocSelectedFields.length > 0) {\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Selected Fields</label>\n <div class=\"result-tags\">\n @for (field of EditDocSelectedFields; track field) {\n <span class=\"result-tag\">{{ field }}</span>\n }\n </div>\n </div>\n }\n\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Document Name</label>\n <input class=\"suggest-input\" type=\"text\" [(ngModel)]=\"EditDocName\" />\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Embedding Model</label>\n <select class=\"suggest-select\" [(ngModel)]=\"EditDocAIModelID\">\n @for (model of AvailableEmbeddingModels; track model.ID) {\n <option [value]=\"model.ID\">{{ model.Name }}</option>\n }\n </select>\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Vector Database</label>\n <select class=\"suggest-select\" [(ngModel)]=\"EditDocVectorDBID\">\n @for (db of vectorDatabases; track db.ID) {\n <option [value]=\"db.ID\">{{ db.Name }}</option>\n }\n </select>\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Vector Index</label>\n @if (EditFilteredIndexes.length > 0) {\n <select class=\"suggest-select\" [(ngModel)]=\"EditDocVectorIndexID\">\n <option value=\"\">Auto (create/find matching index)</option>\n @for (idx of EditFilteredIndexes; track idx.ID) {\n <option [value]=\"idx.ID\">{{ idx.Name }}</option>\n }\n </select>\n } @else {\n <span class=\"edit-readonly-value\" style=\"font-size: 13px; color: var(--mj-text-muted);\">\n No indexes for this database \u2014 one will be created automatically on sync\n </span>\n }\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Status</label>\n <select class=\"suggest-select\" [(ngModel)]=\"EditDocStatus\">\n <option value=\"Active\">Active</option>\n <option value=\"Inactive\">Inactive</option>\n </select>\n </div>\n <div class=\"result-actions\" style=\"margin-top: 1rem\">\n @if (IsEditSaving || IsEditDeleting) {\n <mj-loading text=\"Saving...\" size=\"small\"></mj-loading>\n } @else {\n <button class=\"suggest-submit-btn\" (click)=\"SaveEditedDocument()\">\n <i class=\"fa-solid fa-save\"></i> Save Changes\n </button>\n <button class=\"edit-delete-btn\" (click)=\"DeleteEntityDocument()\">\n <i class=\"fa-solid fa-trash-can\"></i> Delete\n </button>\n <button class=\"suggest-close-action\" (click)=\"CloseEditPanel()\">\n Cancel\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- Schedule Sync Dialog -->\n @if (ShowScheduleSyncDialog) {\n <div class=\"slide-panel-overlay\" (click)=\"CloseScheduleSyncDialog()\">\n <div class=\"schedule-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"suggest-dialog-header\">\n <h3 class=\"suggest-dialog-title\">\n <i class=\"fa-regular fa-clock\"></i>\n Schedule Vector Sync\n </h3>\n <button class=\"suggest-close-btn\" (click)=\"CloseScheduleSyncDialog()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"suggest-dialog-body\">\n <div class=\"suggest-form\">\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Entity Document</label>\n <span class=\"edit-readonly-value\">{{ ScheduleSyncDocName }}</span>\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Action</label>\n <span class=\"edit-readonly-value\">__VectorizeEntity</span>\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Cron Expression</label>\n <input class=\"suggest-input\" type=\"text\" [(ngModel)]=\"ScheduleSyncCron\" placeholder=\"0 2 * * *\" />\n <div class=\"schedule-cron-preview\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ GetScheduleCronPreview(ScheduleSyncCron) }}\n </div>\n </div>\n <div class=\"suggest-field schedule-toggle-row\">\n <label class=\"suggest-label\">Enabled</label>\n <input type=\"checkbox\" class=\"mj-checkbox\" [(ngModel)]=\"ScheduleSyncEnabled\" />\n </div>\n <div class=\"result-actions\" style=\"margin-top: 1rem\">\n @if (ScheduleSyncSaving) {\n <mj-loading text=\"Saving...\" size=\"small\"></mj-loading>\n } @else {\n <button class=\"suggest-submit-btn\" (click)=\"SaveScheduleSync()\">\n <i class=\"fa-solid fa-check\"></i> Create Schedule\n </button>\n <button class=\"suggest-close-action\" (click)=\"CloseScheduleSyncDialog()\">\n Cancel\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- No Vector Index Warning Dialog -->\n @if (ShowNoIndexWarning) {\n <div class=\"slide-panel-overlay\" (click)=\"CloseNoIndexWarning()\">\n <div class=\"no-index-warning-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"no-index-warning-icon\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </div>\n <h3 class=\"no-index-warning-title\">Vector Index Required</h3>\n <p class=\"no-index-warning-message\">\n You need to create at least one vector database and index before creating entity documents.\n Go to the Configuration section to set up a vector database and create an index.\n </p>\n <div class=\"no-index-warning-actions\">\n <button class=\"suggest-submit-btn\" (click)=\"GoToConfiguration()\">\n <i class=\"fa-solid fa-gear\"></i> Go to Configuration\n </button>\n <button class=\"suggest-close-action\" (click)=\"CloseNoIndexWarning()\">\n Close\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- Suggest Document Slide-in Panel -->\n @if (ShowSuggestDialog) {\n <div class=\"slide-panel-overlay\" (click)=\"CloseSuggestDialog()\">\n <div class=\"slide-panel\" [class.open]=\"ShowSuggestDialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"suggest-dialog-header\">\n <h3 class=\"suggest-dialog-title\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n AI Document Suggestion\n </h3>\n <button class=\"suggest-close-btn\" (click)=\"CloseSuggestDialog()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"suggest-dialog-body\">\n @if (!SuggestionResult) {\n <div class=\"suggest-form\">\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Entity</label>\n <div class=\"entity-picker\">\n <button class=\"entity-picker-trigger\" (click)=\"ToggleEntityPicker()\">\n @if (SuggestEntityName) {\n <i class=\"fa-solid fa-table\"></i>\n <span class=\"entity-picker-value\">{{ SuggestEntityName }}</span>\n } @else {\n <i class=\"fa-solid fa-search\"></i>\n <span class=\"entity-picker-placeholder\">Search and select an entity...</span>\n }\n <i class=\"fa-solid fa-chevron-down entity-picker-arrow\"></i>\n </button>\n @if (ShowEntityPicker) {\n <div class=\"entity-picker-dropdown\" (mousedown)=\"$event.stopPropagation()\">\n <div class=\"entity-picker-search\">\n <i class=\"fa-solid fa-search\"></i>\n <input #entitySearchInput\n type=\"text\"\n class=\"entity-picker-search-input\"\n placeholder=\"Filter entities...\"\n [(ngModel)]=\"EntitySearchText\"\n (input)=\"FilterEntities()\"\n (keydown)=\"OnEntityPickerKeyDown($event)\" />\n </div>\n <div class=\"entity-picker-list\">\n @for (group of FilteredEntityGroups; track group.SchemaName) {\n <div class=\"entity-picker-group\">\n <div class=\"entity-picker-group-header\">\n <i class=\"fa-solid fa-database\"></i>\n {{ group.SchemaName }}\n </div>\n @for (entity of group.Entities; track entity.ID) {\n <button class=\"entity-picker-item\"\n [class.entity-picker-item-selected]=\"entity.Name === SuggestEntityName\"\n [class.entity-picker-item-focused]=\"FlatFilteredEntities[SelectedEntityIndex]?.ID === entity.ID\"\n (click)=\"SelectEntity(entity.Name)\">\n <i class=\"fa-solid fa-table\"></i>\n {{ entity.Name }}\n </button>\n }\n </div>\n }\n @if (FilteredEntityGroups.length === 0) {\n <div class=\"entity-picker-empty\">\n No entities matching \"{{ EntitySearchText }}\"\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Use Case</label>\n <div class=\"use-case-options\">\n <button class=\"use-case-btn\"\n [class.use-case-btn-active]=\"SuggestUseCase === 'duplicate detection'\"\n (click)=\"SuggestUseCase = 'duplicate detection'\">\n <i class=\"fa-solid fa-clone\"></i>\n Duplicate Detection\n </button>\n <button class=\"use-case-btn\"\n [class.use-case-btn-active]=\"SuggestUseCase === 'search'\"\n (click)=\"SuggestUseCase = 'search'\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n Search\n </button>\n <button class=\"use-case-btn\"\n [class.use-case-btn-active]=\"SuggestUseCase === 'classification'\"\n (click)=\"SuggestUseCase = 'classification'\">\n <i class=\"fa-solid fa-tags\"></i>\n Classification\n </button>\n </div>\n </div>\n <button class=\"suggest-submit-btn\"\n [disabled]=\"IsSuggesting || !SuggestEntityName\"\n (click)=\"RunSuggestion()\">\n @if (IsSuggesting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Generating with AI...\n } @else {\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Generate Template\n }\n </button>\n @if (SuggestionError) {\n <div class=\"suggestion-error\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n {{ SuggestionError }}\n </div>\n }\n </div>\n } @else {\n <div class=\"suggest-result\">\n <div class=\"result-section\">\n <h4 class=\"result-heading\">Suggested Template</h4>\n <div class=\"template-editor-wrapper\">\n <mj-code-editor\n [value]=\"EditableTemplate\"\n language=\"markdown\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"OnTemplateChange($event)\">\n </mj-code-editor>\n </div>\n </div>\n <div class=\"result-section\">\n <h4 class=\"result-heading\">Selected Fields</h4>\n <div class=\"result-tags\">\n @for (field of SuggestionResult.selectedFields; track field) {\n <span class=\"result-tag\">{{ field }}</span>\n }\n </div>\n </div>\n @if ((SuggestionResult.selectedRelationships?.length ?? 0) > 0) {\n <div class=\"result-section\">\n <h4 class=\"result-heading\">Related Entities</h4>\n @for (rel of SuggestionResult.selectedRelationships; track rel.name) {\n <div class=\"result-relationship\">\n <span class=\"rel-name\">{{ rel.name }}</span>\n <span class=\"rel-fields\">{{ rel.fields.join(', ') }}</span>\n </div>\n }\n </div>\n }\n <div class=\"result-section result-thresholds\">\n <div class=\"threshold-item\">\n <span class=\"threshold-label\">Potential Match</span>\n <span class=\"threshold-value\">{{ (SuggestionResult.potentialMatchThreshold * 100).toFixed(0) }}%</span>\n </div>\n <div class=\"threshold-item\">\n <span class=\"threshold-label\">Absolute Match</span>\n <span class=\"threshold-value\">{{ (SuggestionResult.absoluteMatchThreshold * 100).toFixed(0) }}%</span>\n </div>\n </div>\n <div class=\"result-section\">\n <h4 class=\"result-heading\">Reasoning</h4>\n <p class=\"result-reasoning\">{{ SuggestionResult.reasoning }}</p>\n </div>\n <div class=\"result-section\">\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Document Name</label>\n <input class=\"suggest-input\" type=\"text\" [(ngModel)]=\"SaveDocumentName\" />\n </div>\n <div class=\"suggest-field\" style=\"margin-top: 0.75rem\">\n <label class=\"suggest-label\">Embedding Model</label>\n <select class=\"suggest-select\" [(ngModel)]=\"SelectedEmbeddingModelID\">\n @for (model of AvailableEmbeddingModels; track model.ID) {\n <option [value]=\"model.ID\">{{ model.Name }}</option>\n }\n </select>\n </div>\n <div class=\"suggest-field\" style=\"margin-top: 0.75rem\">\n <label class=\"suggest-label\">Vector Database</label>\n <select class=\"suggest-select\" [(ngModel)]=\"SelectedVectorDBID\">\n @for (db of vectorDatabases; track db.ID) {\n <option [value]=\"db.ID\">{{ db.Name }}</option>\n }\n </select>\n </div>\n <div class=\"suggest-field\" style=\"margin-top: 0.75rem\">\n <label class=\"suggest-label\">Vector Index</label>\n @if (FilteredIndexesForSelectedDB.length > 0) {\n <select class=\"suggest-select\" [(ngModel)]=\"SelectedVectorIndexID\">\n <option value=\"\">Auto (create/find matching index)</option>\n @for (idx of FilteredIndexesForSelectedDB; track idx.ID) {\n <option [value]=\"idx.ID\">{{ idx.Name }}</option>\n }\n </select>\n } @else {\n <span class=\"edit-readonly-value\" style=\"font-size: 13px; color: var(--mj-text-muted);\">\n No indexes yet \u2014 create one in Configuration > Vector Database, or one will be created on sync\n </span>\n }\n </div>\n </div>\n <div class=\"result-actions\">\n @if (IsSavingDocument) {\n <div class=\"save-spinner\">\n <mj-loading text=\"Saving...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n <button class=\"suggest-submit-btn\" (click)=\"SaveAsEntityDocument()\">\n <i class=\"fa-solid fa-floppy-disk\"></i> Save as Entity Document\n </button>\n <button class=\"suggest-submit-btn suggest-try-again-btn\" (click)=\"ClearSuggestion()\">\n <i class=\"fa-solid fa-rotate\"></i> Try Again\n </button>\n <button class=\"suggest-close-action\" (click)=\"CloseSuggestDialog()\">\n Close\n </button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n}\n", styles: ["/* ================================================================\n Vector Management Dashboard\n All colors use MJ design tokens from _tokens.scss\n ================================================================ */\n\n/* --- Loading state --- */\n.vector-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n}\n\n/* --- View Mode Toggle --- */\n.view-mode-toggle {\n display: flex;\n gap: 0.25rem;\n padding: 0 24px 0;\n margin-bottom: -12px;\n}\n\n.view-mode-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.4rem;\n padding: 0.4rem 0.85rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.view-mode-btn:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.view-mode-btn-active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n/* --- Dashboard container --- */\n.vector-dashboard {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 24px;\n background: var(--mj-bg-page);\n min-height: 100%;\n}\n\n/* --- KPI cards row --- */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n}\n\n@media (max-width: 1200px) {\n .kpi-row {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 600px) {\n .kpi-row {\n grid-template-columns: 1fr;\n }\n}\n\n/* --- Main content: table + sidebar --- */\n.content-area {\n display: grid;\n grid-template-columns: 1fr 300px;\n gap: 24px;\n align-items: start;\n}\n\n@media (max-width: 1024px) {\n .content-area {\n grid-template-columns: 1fr;\n }\n}\n\n/* --- Sync table panel --- */\n.sync-table-panel {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.panel-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.refresh-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.refresh-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* --- Empty state --- */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 36px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* --- Table --- */\n.table-wrapper {\n overflow-x: auto;\n}\n\n.sync-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.sync-table th {\n padding: 10px 16px;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n text-align: left;\n white-space: nowrap;\n}\n\n.sync-table td {\n padding: 12px 16px;\n font-size: 13px;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-subtle);\n vertical-align: middle;\n}\n\n.sync-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.text-right {\n text-align: right;\n}\n\n.text-center {\n text-align: center;\n}\n\n.entity-name {\n font-weight: 600;\n}\n\n.document-name {\n color: var(--mj-text-secondary);\n}\n\n.vector-count {\n font-variant-numeric: tabular-nums;\n font-weight: 600;\n}\n\n.last-synced {\n color: var(--mj-text-secondary);\n font-size: 12px;\n white-space: nowrap;\n}\n\n/* --- Action buttons in table --- */\n\n.actions-cell {\n display: flex;\n gap: 6px;\n align-items: center;\n justify-content: center;\n}\n\n.schedule-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.schedule-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n}\n\n.edit-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.edit-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* --- Schedule Dialog --- */\n.schedule-dialog {\n width: 440px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n}\n\n.schedule-cron-preview {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 0 0;\n font-size: 0.82rem;\n color: var(--mj-text-muted);\n}\n\n.schedule-toggle-row {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 12px;\n}\n\n.edit-delete-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-status-error-border);\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error-text);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.edit-delete-btn:hover {\n background: color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n}\n\n.edit-readonly-value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0;\n}\n\n/* --- Status badges --- */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 4px 10px;\n border-radius: 999px;\n font-size: 11px;\n font-weight: 600;\n white-space: nowrap;\n}\n\n.status-synced {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n\n.status-syncing {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.status-error {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error-text, var(--mj-status-error));\n}\n\n.status-pending {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n}\n\n/* --- Sync button --- */\n.sync-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.sync-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.sync-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ================================================================\n Sidebar\n ================================================================ */\n.sidebar {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.sidebar-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n}\n\n.sidebar-title {\n margin: 0 0 14px 0;\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sidebar-title i {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n/* --- Vector DB Health --- */\n.health-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n}\n\n.health-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.health-healthy {\n background: var(--mj-status-success);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-success) 50%, transparent);\n}\n\n.health-degraded {\n background: var(--mj-status-warning);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-warning) 50%, transparent);\n}\n\n.health-offline {\n background: var(--mj-status-error);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-error) 50%, transparent);\n}\n\n.health-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.health-status {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding-left: 18px;\n}\n\n/* --- Model Info --- */\n.model-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.info-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.info-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.info-value {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n/* --- Storage / Coverage Gauge --- */\n.gauge-container {\n margin-bottom: 8px;\n}\n\n.gauge-bar {\n height: 8px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n margin-bottom: 6px;\n}\n\n.gauge-fill {\n height: 100%;\n border-radius: 4px;\n background: var(--mj-brand-primary);\n transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 2px;\n}\n\n.gauge-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.storage-detail {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n/* --- Panel actions row --- */\n.panel-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* --- Suggest Document Button --- */\n.suggest-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.suggest-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary-hover);\n}\n\n/* --- Slide-in Panel Overlay --- */\n.slide-panel-overlay {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 100000;\n}\n\n.slide-panel {\n position: fixed;\n top: 0;\n right: 0;\n height: 100vh;\n width: 480px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 24px color-mix(in srgb, var(--mj-text-primary) 12%, transparent);\n transform: translateX(100%);\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n overflow-y: auto;\n}\n\n.slide-panel.open {\n transform: translateX(0);\n}\n\n.suggest-dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.suggest-dialog-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.suggest-dialog-title i {\n color: var(--mj-brand-primary);\n}\n\n.suggest-close-btn {\n border: none;\n background: none;\n color: var(--mj-text-muted);\n font-size: 16px;\n cursor: pointer;\n padding: 4px;\n}\n\n.suggest-close-btn:hover {\n color: var(--mj-text-primary);\n}\n\n.suggest-dialog-body {\n padding: 24px;\n}\n\n/* --- Suggest Form --- */\n.suggest-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.suggest-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.suggest-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.suggest-select {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n}\n\n.suggest-select:focus {\n outline: none;\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n/* ---- Use Case Button Group ---- */\n\n.use-case-options {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.use-case-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.use-case-btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n.use-case-btn-active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.use-case-btn i {\n font-size: 12px;\n}\n\n/* ---- Entity Picker (grouped by schema) ---- */\n\n.entity-picker {\n position: relative;\n}\n\n.entity-picker-trigger {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 9px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: border-color 0.15s;\n}\n\n.entity-picker-trigger:hover {\n border-color: var(--mj-border-strong);\n}\n\n.entity-picker-placeholder {\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.entity-picker-value {\n flex: 1;\n font-weight: 500;\n}\n\n.entity-picker-arrow {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.2s;\n}\n\n.entity-picker-dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n background: var(--mj-bg-surface-elevated, var(--mj-bg-surface));\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n box-shadow: 0 8px 32px color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n z-index: 100;\n max-height: 350px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.entity-picker-search {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-picker-search i {\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.entity-picker-search-input {\n flex: 1;\n border: none;\n background: transparent;\n color: var(--mj-text-primary);\n font-size: 13px;\n outline: none;\n}\n\n.entity-picker-search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.entity-picker-list {\n overflow-y: auto;\n max-height: 300px;\n padding: 4px 0;\n}\n\n.entity-picker-group-header {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px 4px;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n background: var(--mj-bg-surface-elevated, var(--mj-bg-surface));\n}\n\n.entity-picker-group-header i {\n font-size: 10px;\n}\n\n.entity-picker-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 14px 7px 28px;\n border: none;\n background: transparent;\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 0.1s;\n}\n\n.entity-picker-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.entity-picker-item-selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-picker-item i {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-picker-item-selected i {\n color: var(--mj-brand-primary);\n}\n\n.entity-picker-item-focused {\n background: var(--mj-bg-surface-hover);\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: -2px;\n}\n\n.entity-picker-empty {\n padding: 20px 14px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n/* ---- Template Editor ---- */\n\n.template-editor-wrapper {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n min-height: 120px;\n max-height: 300px;\n}\n\n.template-editor-wrapper ::ng-deep .cm-editor {\n min-height: 120px;\n max-height: 300px;\n font-size: 13px;\n}\n\n.suggest-submit-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 10px 20px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.suggest-submit-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.suggestion-error {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n font-size: 13px;\n line-height: 1.4;\n}\n\n.suggestion-error i {\n flex-shrink: 0;\n}\n\n.suggest-submit-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* --- Suggestion Result --- */\n.suggest-result {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.result-section {\n border-bottom: 1px solid var(--mj-border-subtle);\n padding-bottom: 12px;\n}\n\n.result-section:last-child {\n border-bottom: none;\n}\n\n.result-heading {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.result-template {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 6px;\n padding: 12px;\n font-size: 12px;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-all;\n margin: 0;\n}\n\n.result-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.result-tag {\n padding: 3px 10px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 500;\n}\n\n.result-relationship {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.rel-name {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.rel-fields {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.result-thresholds {\n display: flex;\n gap: 24px;\n}\n\n.threshold-item {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.threshold-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.threshold-value {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.result-reasoning {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.result-actions {\n display: flex;\n gap: 8px;\n padding-top: 8px;\n}\n\n.suggest-close-action {\n padding: 10px 20px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.suggest-close-action:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n/* --- Suggest Input --- */\n.suggest-input {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n width: 100%;\n box-sizing: border-box;\n}\n\n.suggest-input:focus {\n outline: none;\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n/* --- Try Again Button (secondary style) --- */\n.suggest-try-again-btn {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-primary);\n}\n\n.suggest-try-again-btn:hover:not(:disabled) {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n/* --- Save Spinner --- */\n.save-spinner {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 0;\n}\n\n/* --- Edit Panel Template Header --- */\n.edit-template-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.edit-regenerate-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 4px 10px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.edit-regenerate-btn:hover:not(:disabled) {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.edit-regenerate-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* --- No Vector Index Warning Dialog --- */\n.no-index-warning-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 440px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 20px 60px color-mix(in srgb, var(--mj-text-primary) 20%, transparent);\n padding: 32px;\n text-align: center;\n}\n\n.no-index-warning-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n margin: 0 auto 16px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n}\n\n.no-index-warning-icon i {\n font-size: 24px;\n color: var(--mj-status-warning);\n}\n\n.no-index-warning-title {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.no-index-warning-message {\n margin: 0 0 24px 0;\n font-size: 14px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n}\n\n.no-index-warning-actions {\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n\n/* ================================================================\n Responsive \u2014 Vector Management\n ================================================================ */\n\n@media (max-width: 768px) {\n .panel-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .panel-actions {\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 600px) {\n .slide-panel {\n width: 100vw;\n max-width: 100vw;\n }\n}\n\n@media (max-width: 480px) {\n .vector-dashboard {\n padding: 12px;\n }\n\n .suggest-btn .suggest-btn-text {\n display: none;\n }\n}\n"] }]
2227
- }], null, { EmbeddedMode: [{
2252
+ args: [{ standalone: false, selector: 'app-vector-management-resource', template: "@if (!HideToolbar) {\n <mj-page-layout>\n <mj-page-header\n Title=\"Vector Management\"\n Icon=\"fa-solid fa-cubes\"\n Subtitle=\"Vector index health, embeddings, and entity sync status\">\n <div actions>\n <mj-view-toggle\n [Options]=\"VectorViewOptions\"\n [ActiveKey]=\"ViewMode\"\n (KeyChange)=\"ViewMode = $any($event)\">\n </mj-view-toggle>\n </div>\n </mj-page-header>\n <mj-page-body [Flex]=\"true\">\n <ng-container *ngTemplateOutlet=\"vectorBody\"></ng-container>\n </mj-page-body>\n </mj-page-layout>\n}\n@if (HideToolbar) {\n <ng-container *ngTemplateOutlet=\"vectorBody\"></ng-container>\n}\n\n<ng-template #vectorBody>\n@if (IsLoading) {\n <div class=\"vector-loading\">\n <mj-loading text=\"Loading vector management data...\"></mj-loading>\n </div>\n} @else {\n <div class=\"vector-dashboard\">\n\n <!-- KPI Cards Row -->\n <div class=\"kpi-row\">\n @for (card of KPICards; track card.title) {\n <app-kpi-card [data]=\"card\"></app-kpi-card>\n }\n </div>\n\n <!-- Main Content Area: Table + Sidebar -->\n <div class=\"content-area\">\n <!-- Entity Sync Table -->\n <div class=\"sync-table-panel\">\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">\n <i class=\"fa-solid fa-table-list\"></i>\n Entity Sync Status\n </h3>\n <div class=\"panel-actions\">\n <button class=\"suggest-btn\" (click)=\"OpenSuggestDialog()\" title=\"Use AI to suggest an Entity Document template\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <span class=\"suggest-btn-text\">Suggest Document</span>\n </button>\n <button class=\"refresh-btn\" (click)=\"LoadData()\" title=\"Refresh data\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n Refresh\n </button>\n </div>\n </div>\n\n @if (SyncRows.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <p>No entity documents configured for vectorization.</p>\n </div>\n } @else {\n <div class=\"table-wrapper\">\n <table class=\"sync-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th>Document</th>\n <th class=\"text-right\">Vectors</th>\n <th>Last Synced</th>\n <th>Status</th>\n <th class=\"text-center\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (row of SyncRows; track row.EntityDocumentID) {\n <tr>\n <td class=\"entity-name\">{{ row.EntityName }}</td>\n <td class=\"document-name\">{{ row.DocumentName }}</td>\n <td class=\"text-right vector-count\">{{ row.VectorCount | number }}</td>\n <td class=\"last-synced\">{{ FormatDate(row.LastSynced) }}</td>\n <td>\n <span class=\"status-badge\" [class]=\"GetStatusClass(row.Status)\">\n <i [class]=\"GetStatusIcon(row.Status)\"></i>\n @if (row.Status === 'Syncing' && row.PercentComplete > 0) {\n {{ row.PercentComplete }}%\n } @else {\n {{ row.Status }}\n }\n </span>\n </td>\n <td class=\"text-center actions-cell\">\n <button\n class=\"sync-btn\"\n [disabled]=\"SyncingIds.has(row.EntityDocumentID)\"\n (click)=\"SyncEntity(row.EntityDocumentID)\"\n title=\"Sync now\">\n @if (SyncingIds.has(row.EntityDocumentID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n {{ row.PercentComplete > 0 ? row.PercentComplete + '%' : 'Sync' }}\n } @else {\n <i class=\"fa-solid fa-play\"></i>\n Sync\n }\n </button>\n <button\n class=\"schedule-btn\"\n (click)=\"OpenScheduleSyncDialog(row.EntityDocumentID)\"\n title=\"Schedule recurring sync\">\n <i class=\"fa-regular fa-clock\"></i>\n </button>\n <button\n class=\"edit-btn\"\n (click)=\"OpenEditPanel(row.EntityDocumentID)\"\n title=\"Edit entity document\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n\n <!-- Sidebar Panels -->\n <div class=\"sidebar\">\n <!-- Vector DB Health -->\n <div class=\"sidebar-card\">\n <h4 class=\"sidebar-title\">\n <i class=\"fa-solid fa-heart-pulse\"></i>\n Vector DB Health\n </h4>\n <div class=\"health-row\">\n <span class=\"health-dot\" [class]=\"DBHealthClass\"></span>\n <span class=\"health-label\">{{ VectorDBName }}</span>\n </div>\n <div class=\"health-status\">{{ VectorDBStatus }}</div>\n </div>\n\n <!-- Embedding Model Info -->\n <div class=\"sidebar-card\">\n <h4 class=\"sidebar-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Embedding Model\n </h4>\n <div class=\"model-info\">\n <div class=\"info-row\">\n <span class=\"info-label\">Model</span>\n <span class=\"info-value\">{{ EmbeddingModel.Name }}</span>\n </div>\n @if (EmbeddingModel.Dimensions != null) {\n <div class=\"info-row\">\n <span class=\"info-label\">Dimensions</span>\n <span class=\"info-value\">{{ EmbeddingModel.Dimensions | number }}</span>\n </div>\n }\n </div>\n </div>\n\n <!-- Storage Usage -->\n <div class=\"sidebar-card\">\n <h4 class=\"sidebar-title\">\n <i class=\"fa-solid fa-hard-drive\"></i>\n Vectorization Coverage\n </h4>\n <div class=\"gauge-container\">\n <div class=\"gauge-bar\">\n <div class=\"gauge-fill\" [style.width.%]=\"StorageUsagePercent\"></div>\n </div>\n <div class=\"gauge-label\">{{ StorageLabel }} of records vectorized</div>\n </div>\n <div class=\"storage-detail\">\n {{ TotalVectors | number }} vectors stored\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Edit Entity Document Slide-in Panel -->\n @if (ShowEditPanel) {\n <div class=\"slide-panel-overlay\" (click)=\"CloseEditPanel()\">\n <div class=\"slide-panel open\" (click)=\"$event.stopPropagation()\">\n <div class=\"suggest-dialog-header\">\n <h3 class=\"suggest-dialog-title\">\n <i class=\"fa-solid fa-pen\"></i>\n Edit Entity Document\n </h3>\n <button class=\"suggest-close-btn\" (click)=\"CloseEditPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"suggest-dialog-body\">\n <div class=\"suggest-form\">\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Entity</label>\n <span class=\"edit-readonly-value\">{{ EditDocEntityName }}</span>\n </div>\n\n <!-- Template Section -->\n <div class=\"suggest-field\">\n <div class=\"edit-template-header\">\n <label class=\"suggest-label\">Template</label>\n <button class=\"edit-regenerate-btn\"\n [disabled]=\"IsEditRegenerating\"\n (click)=\"RegenerateTemplate()\"\n title=\"Regenerate template using AI\">\n @if (IsEditRegenerating) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Regenerating...\n } @else {\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Regenerate with AI\n }\n </button>\n </div>\n <div class=\"template-editor-wrapper\">\n <mj-code-editor\n [value]=\"EditDocTemplate\"\n language=\"markdown\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"OnEditTemplateChange($event)\">\n </mj-code-editor>\n </div>\n </div>\n\n <!-- Selected Fields (parsed from template) -->\n @if (EditDocSelectedFields.length > 0) {\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Selected Fields</label>\n <div class=\"result-tags\">\n @for (field of EditDocSelectedFields; track field) {\n <span class=\"result-tag\">{{ field }}</span>\n }\n </div>\n </div>\n }\n\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Document Name</label>\n <input class=\"suggest-input\" type=\"text\" [(ngModel)]=\"EditDocName\" />\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Embedding Model</label>\n <select class=\"suggest-select\" [(ngModel)]=\"EditDocAIModelID\">\n @for (model of AvailableEmbeddingModels; track model.ID) {\n <option [value]=\"model.ID\">{{ model.Name }}</option>\n }\n </select>\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Vector Database</label>\n <select class=\"suggest-select\" [(ngModel)]=\"EditDocVectorDBID\">\n @for (db of vectorDatabases; track db.ID) {\n <option [value]=\"db.ID\">{{ db.Name }}</option>\n }\n </select>\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Vector Index</label>\n @if (EditFilteredIndexes.length > 0) {\n <select class=\"suggest-select\" [(ngModel)]=\"EditDocVectorIndexID\">\n <option value=\"\">Auto (create/find matching index)</option>\n @for (idx of EditFilteredIndexes; track idx.ID) {\n <option [value]=\"idx.ID\">{{ idx.Name }}</option>\n }\n </select>\n } @else {\n <span class=\"edit-readonly-value\" style=\"font-size: 13px; color: var(--mj-text-muted);\">\n No indexes for this database \u2014 one will be created automatically on sync\n </span>\n }\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Status</label>\n <select class=\"suggest-select\" [(ngModel)]=\"EditDocStatus\">\n <option value=\"Active\">Active</option>\n <option value=\"Inactive\">Inactive</option>\n </select>\n </div>\n <div class=\"result-actions\" style=\"margin-top: 1rem\">\n @if (IsEditSaving || IsEditDeleting) {\n <mj-loading text=\"Saving...\" size=\"small\"></mj-loading>\n } @else {\n <button class=\"suggest-submit-btn\" (click)=\"SaveEditedDocument()\">\n <i class=\"fa-solid fa-save\"></i> Save Changes\n </button>\n <button class=\"edit-delete-btn\" (click)=\"DeleteEntityDocument()\">\n <i class=\"fa-solid fa-trash-can\"></i> Delete\n </button>\n <button class=\"suggest-close-action\" (click)=\"CloseEditPanel()\">\n Cancel\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- Schedule Sync Dialog -->\n @if (ShowScheduleSyncDialog) {\n <div class=\"slide-panel-overlay\" (click)=\"CloseScheduleSyncDialog()\">\n <div class=\"schedule-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"suggest-dialog-header\">\n <h3 class=\"suggest-dialog-title\">\n <i class=\"fa-regular fa-clock\"></i>\n Schedule Vector Sync\n </h3>\n <button class=\"suggest-close-btn\" (click)=\"CloseScheduleSyncDialog()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"suggest-dialog-body\">\n <div class=\"suggest-form\">\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Entity Document</label>\n <span class=\"edit-readonly-value\">{{ ScheduleSyncDocName }}</span>\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Action</label>\n <span class=\"edit-readonly-value\">__VectorizeEntity</span>\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Cron Expression</label>\n <input class=\"suggest-input\" type=\"text\" [(ngModel)]=\"ScheduleSyncCron\" placeholder=\"0 2 * * *\" />\n <div class=\"schedule-cron-preview\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ GetScheduleCronPreview(ScheduleSyncCron) }}\n </div>\n </div>\n <div class=\"suggest-field schedule-toggle-row\">\n <label class=\"suggest-label\">Enabled</label>\n <input type=\"checkbox\" class=\"mj-checkbox\" [(ngModel)]=\"ScheduleSyncEnabled\" />\n </div>\n <div class=\"result-actions\" style=\"margin-top: 1rem\">\n @if (ScheduleSyncSaving) {\n <mj-loading text=\"Saving...\" size=\"small\"></mj-loading>\n } @else {\n <button class=\"suggest-submit-btn\" (click)=\"SaveScheduleSync()\">\n <i class=\"fa-solid fa-check\"></i> Create Schedule\n </button>\n <button class=\"suggest-close-action\" (click)=\"CloseScheduleSyncDialog()\">\n Cancel\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- No Vector Index Warning Dialog -->\n @if (ShowNoIndexWarning) {\n <div class=\"slide-panel-overlay\" (click)=\"CloseNoIndexWarning()\">\n <div class=\"no-index-warning-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"no-index-warning-icon\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </div>\n <h3 class=\"no-index-warning-title\">Vector Index Required</h3>\n <p class=\"no-index-warning-message\">\n You need to create at least one vector database and index before creating entity documents.\n Go to the Configuration section to set up a vector database and create an index.\n </p>\n <div class=\"no-index-warning-actions\">\n <button class=\"suggest-submit-btn\" (click)=\"GoToConfiguration()\">\n <i class=\"fa-solid fa-gear\"></i> Go to Configuration\n </button>\n <button class=\"suggest-close-action\" (click)=\"CloseNoIndexWarning()\">\n Close\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- Suggest Document Slide-in Panel -->\n @if (ShowSuggestDialog) {\n <div class=\"slide-panel-overlay\" (click)=\"CloseSuggestDialog()\">\n <div class=\"slide-panel\" [class.open]=\"ShowSuggestDialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"suggest-dialog-header\">\n <h3 class=\"suggest-dialog-title\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n AI Document Suggestion\n </h3>\n <button class=\"suggest-close-btn\" (click)=\"CloseSuggestDialog()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"suggest-dialog-body\">\n @if (!SuggestionResult) {\n <div class=\"suggest-form\">\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Entity</label>\n <div class=\"entity-picker\">\n <button class=\"entity-picker-trigger\" (click)=\"ToggleEntityPicker()\">\n @if (SuggestEntityName) {\n <i class=\"fa-solid fa-table\"></i>\n <span class=\"entity-picker-value\">{{ SuggestEntityName }}</span>\n } @else {\n <i class=\"fa-solid fa-search\"></i>\n <span class=\"entity-picker-placeholder\">Search and select an entity...</span>\n }\n <i class=\"fa-solid fa-chevron-down entity-picker-arrow\"></i>\n </button>\n @if (ShowEntityPicker) {\n <div class=\"entity-picker-dropdown\" (mousedown)=\"$event.stopPropagation()\">\n <div class=\"entity-picker-search\">\n <i class=\"fa-solid fa-search\"></i>\n <input #entitySearchInput\n type=\"text\"\n class=\"entity-picker-search-input\"\n placeholder=\"Filter entities...\"\n [(ngModel)]=\"EntitySearchText\"\n (input)=\"FilterEntities()\"\n (keydown)=\"OnEntityPickerKeyDown($event)\" />\n </div>\n <div class=\"entity-picker-list\">\n @for (group of FilteredEntityGroups; track group.SchemaName) {\n <div class=\"entity-picker-group\">\n <div class=\"entity-picker-group-header\">\n <i class=\"fa-solid fa-database\"></i>\n {{ group.SchemaName }}\n </div>\n @for (entity of group.Entities; track entity.ID) {\n <button class=\"entity-picker-item\"\n [class.entity-picker-item-selected]=\"entity.Name === SuggestEntityName\"\n [class.entity-picker-item-focused]=\"FlatFilteredEntities[SelectedEntityIndex]?.ID === entity.ID\"\n (click)=\"SelectEntity(entity.Name)\">\n <i class=\"fa-solid fa-table\"></i>\n {{ entity.Name }}\n </button>\n }\n </div>\n }\n @if (FilteredEntityGroups.length === 0) {\n <div class=\"entity-picker-empty\">\n No entities matching \"{{ EntitySearchText }}\"\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Use Case</label>\n <div class=\"use-case-options\">\n <button class=\"use-case-btn\"\n [class.use-case-btn-active]=\"SuggestUseCase === 'duplicate detection'\"\n (click)=\"SuggestUseCase = 'duplicate detection'\">\n <i class=\"fa-solid fa-clone\"></i>\n Duplicate Detection\n </button>\n <button class=\"use-case-btn\"\n [class.use-case-btn-active]=\"SuggestUseCase === 'search'\"\n (click)=\"SuggestUseCase = 'search'\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n Search\n </button>\n <button class=\"use-case-btn\"\n [class.use-case-btn-active]=\"SuggestUseCase === 'classification'\"\n (click)=\"SuggestUseCase = 'classification'\">\n <i class=\"fa-solid fa-tags\"></i>\n Classification\n </button>\n </div>\n </div>\n <button class=\"suggest-submit-btn\"\n [disabled]=\"IsSuggesting || !SuggestEntityName\"\n (click)=\"RunSuggestion()\">\n @if (IsSuggesting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Generating with AI...\n } @else {\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Generate Template\n }\n </button>\n @if (SuggestionError) {\n <div class=\"suggestion-error\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n {{ SuggestionError }}\n </div>\n }\n </div>\n } @else {\n <div class=\"suggest-result\">\n <div class=\"result-section\">\n <h4 class=\"result-heading\">Suggested Template</h4>\n <div class=\"template-editor-wrapper\">\n <mj-code-editor\n [value]=\"EditableTemplate\"\n language=\"markdown\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"OnTemplateChange($event)\">\n </mj-code-editor>\n </div>\n </div>\n <div class=\"result-section\">\n <h4 class=\"result-heading\">Selected Fields</h4>\n <div class=\"result-tags\">\n @for (field of SuggestionResult.selectedFields; track field) {\n <span class=\"result-tag\">{{ field }}</span>\n }\n </div>\n </div>\n @if ((SuggestionResult.selectedRelationships?.length ?? 0) > 0) {\n <div class=\"result-section\">\n <h4 class=\"result-heading\">Related Entities</h4>\n @for (rel of SuggestionResult.selectedRelationships; track rel.name) {\n <div class=\"result-relationship\">\n <span class=\"rel-name\">{{ rel.name }}</span>\n <span class=\"rel-fields\">{{ rel.fields.join(', ') }}</span>\n </div>\n }\n </div>\n }\n <div class=\"result-section result-thresholds\">\n <div class=\"threshold-item\">\n <span class=\"threshold-label\">Potential Match</span>\n <span class=\"threshold-value\">{{ (SuggestionResult.potentialMatchThreshold * 100).toFixed(0) }}%</span>\n </div>\n <div class=\"threshold-item\">\n <span class=\"threshold-label\">Absolute Match</span>\n <span class=\"threshold-value\">{{ (SuggestionResult.absoluteMatchThreshold * 100).toFixed(0) }}%</span>\n </div>\n </div>\n <div class=\"result-section\">\n <h4 class=\"result-heading\">Reasoning</h4>\n <p class=\"result-reasoning\">{{ SuggestionResult.reasoning }}</p>\n </div>\n <div class=\"result-section\">\n <div class=\"suggest-field\">\n <label class=\"suggest-label\">Document Name</label>\n <input class=\"suggest-input\" type=\"text\" [(ngModel)]=\"SaveDocumentName\" />\n </div>\n <div class=\"suggest-field\" style=\"margin-top: 0.75rem\">\n <label class=\"suggest-label\">Embedding Model</label>\n <select class=\"suggest-select\" [(ngModel)]=\"SelectedEmbeddingModelID\">\n @for (model of AvailableEmbeddingModels; track model.ID) {\n <option [value]=\"model.ID\">{{ model.Name }}</option>\n }\n </select>\n </div>\n <div class=\"suggest-field\" style=\"margin-top: 0.75rem\">\n <label class=\"suggest-label\">Vector Database</label>\n <select class=\"suggest-select\" [(ngModel)]=\"SelectedVectorDBID\">\n @for (db of vectorDatabases; track db.ID) {\n <option [value]=\"db.ID\">{{ db.Name }}</option>\n }\n </select>\n </div>\n <div class=\"suggest-field\" style=\"margin-top: 0.75rem\">\n <label class=\"suggest-label\">Vector Index</label>\n @if (FilteredIndexesForSelectedDB.length > 0) {\n <select class=\"suggest-select\" [(ngModel)]=\"SelectedVectorIndexID\">\n <option value=\"\">Auto (create/find matching index)</option>\n @for (idx of FilteredIndexesForSelectedDB; track idx.ID) {\n <option [value]=\"idx.ID\">{{ idx.Name }}</option>\n }\n </select>\n } @else {\n <span class=\"edit-readonly-value\" style=\"font-size: 13px; color: var(--mj-text-muted);\">\n No indexes yet \u2014 create one in Configuration > Vector Database, or one will be created on sync\n </span>\n }\n </div>\n </div>\n <div class=\"result-actions\">\n @if (IsSavingDocument) {\n <div class=\"save-spinner\">\n <mj-loading text=\"Saving...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n <button class=\"suggest-submit-btn\" (click)=\"SaveAsEntityDocument()\">\n <i class=\"fa-solid fa-floppy-disk\"></i> Save as Entity Document\n </button>\n <button class=\"suggest-submit-btn suggest-try-again-btn\" (click)=\"ClearSuggestion()\">\n <i class=\"fa-solid fa-rotate\"></i> Try Again\n </button>\n <button class=\"suggest-close-action\" (click)=\"CloseSuggestDialog()\">\n Close\n </button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n}\n</ng-template>\n", styles: ["/* ================================================================\n Vector Management Dashboard\n All colors use MJ design tokens from _tokens.scss\n ================================================================ */\n\n\n/* --- Loading state --- */\n.vector-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n}\n\n/* --- View Mode Toggle --- */\n.view-mode-toggle {\n display: flex;\n gap: 0.25rem;\n padding: 0 24px 0;\n margin-bottom: -12px;\n}\n\n.view-mode-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.4rem;\n padding: 0.4rem 0.85rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.82rem;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.view-mode-btn:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.view-mode-btn-active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n/* --- Dashboard container --- */\n.vector-dashboard {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 24px;\n background: var(--mj-bg-page);\n min-height: 100%;\n}\n\n/* --- KPI cards row --- */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n}\n\n@media (max-width: 1200px) {\n .kpi-row {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 600px) {\n .kpi-row {\n grid-template-columns: 1fr;\n }\n}\n\n/* --- Main content: table + sidebar --- */\n.content-area {\n display: grid;\n grid-template-columns: 1fr 300px;\n gap: 24px;\n align-items: start;\n}\n\n@media (max-width: 1024px) {\n .content-area {\n grid-template-columns: 1fr;\n }\n}\n\n/* --- Sync table panel --- */\n.sync-table-panel {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.panel-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.panel-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.refresh-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.refresh-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* --- Empty state --- */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 36px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* --- Table --- */\n.table-wrapper {\n overflow-x: auto;\n}\n\n.sync-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.sync-table th {\n padding: 10px 16px;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n text-align: left;\n white-space: nowrap;\n}\n\n.sync-table td {\n padding: 12px 16px;\n font-size: 13px;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-subtle);\n vertical-align: middle;\n}\n\n.sync-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n.text-right {\n text-align: right;\n}\n\n.text-center {\n text-align: center;\n}\n\n.entity-name {\n font-weight: 600;\n}\n\n.document-name {\n color: var(--mj-text-secondary);\n}\n\n.vector-count {\n font-variant-numeric: tabular-nums;\n font-weight: 600;\n}\n\n.last-synced {\n color: var(--mj-text-secondary);\n font-size: 12px;\n white-space: nowrap;\n}\n\n/* --- Action buttons in table --- */\n\n.actions-cell {\n display: flex;\n gap: 6px;\n align-items: center;\n justify-content: center;\n}\n\n.schedule-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.schedule-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n}\n\n.edit-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.edit-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* --- Schedule Dialog --- */\n.schedule-dialog {\n width: 440px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n}\n\n.schedule-cron-preview {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 0 0;\n font-size: 0.82rem;\n color: var(--mj-text-muted);\n}\n\n.schedule-toggle-row {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 12px;\n}\n\n.edit-delete-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-status-error-border);\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error-text);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.edit-delete-btn:hover {\n background: color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n}\n\n.edit-readonly-value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0;\n}\n\n/* --- Status badges --- */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 4px 10px;\n border-radius: 999px;\n font-size: 11px;\n font-weight: 600;\n white-space: nowrap;\n}\n\n.status-synced {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n\n.status-syncing {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.status-error {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error-text, var(--mj-status-error));\n}\n\n.status-pending {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n}\n\n/* --- Sync button --- */\n.sync-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.sync-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.sync-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ================================================================\n Sidebar\n ================================================================ */\n.sidebar {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.sidebar-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n}\n\n.sidebar-title {\n margin: 0 0 14px 0;\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sidebar-title i {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n/* --- Vector DB Health --- */\n.health-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n}\n\n.health-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.health-healthy {\n background: var(--mj-status-success);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-success) 50%, transparent);\n}\n\n.health-degraded {\n background: var(--mj-status-warning);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-warning) 50%, transparent);\n}\n\n.health-offline {\n background: var(--mj-status-error);\n box-shadow: 0 0 6px color-mix(in srgb, var(--mj-status-error) 50%, transparent);\n}\n\n.health-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.health-status {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding-left: 18px;\n}\n\n/* --- Model Info --- */\n.model-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.info-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.info-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.info-value {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n/* --- Storage / Coverage Gauge --- */\n.gauge-container {\n margin-bottom: 8px;\n}\n\n.gauge-bar {\n height: 8px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n margin-bottom: 6px;\n}\n\n.gauge-fill {\n height: 100%;\n border-radius: 4px;\n background: var(--mj-brand-primary);\n transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 2px;\n}\n\n.gauge-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.storage-detail {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n/* --- Panel actions row --- */\n.panel-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* --- Suggest Document Button --- */\n.suggest-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.suggest-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary-hover);\n}\n\n/* --- Slide-in Panel Overlay --- */\n.slide-panel-overlay {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 100000;\n}\n\n.slide-panel {\n position: fixed;\n top: 0;\n right: 0;\n height: 100vh;\n width: 480px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 24px color-mix(in srgb, var(--mj-text-primary) 12%, transparent);\n transform: translateX(100%);\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n overflow-y: auto;\n}\n\n.slide-panel.open {\n transform: translateX(0);\n}\n\n.suggest-dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.suggest-dialog-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.suggest-dialog-title i {\n color: var(--mj-brand-primary);\n}\n\n.suggest-close-btn {\n border: none;\n background: none;\n color: var(--mj-text-muted);\n font-size: 16px;\n cursor: pointer;\n padding: 4px;\n}\n\n.suggest-close-btn:hover {\n color: var(--mj-text-primary);\n}\n\n.suggest-dialog-body {\n padding: 24px;\n}\n\n/* --- Suggest Form --- */\n.suggest-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.suggest-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.suggest-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.suggest-select {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n}\n\n.suggest-select:focus {\n outline: none;\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n/* ---- Use Case Button Group ---- */\n\n.use-case-options {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.use-case-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.use-case-btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n.use-case-btn-active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.use-case-btn i {\n font-size: 12px;\n}\n\n/* ---- Entity Picker (grouped by schema) ---- */\n\n.entity-picker {\n position: relative;\n}\n\n.entity-picker-trigger {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 9px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: border-color 0.15s;\n}\n\n.entity-picker-trigger:hover {\n border-color: var(--mj-border-strong);\n}\n\n.entity-picker-placeholder {\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.entity-picker-value {\n flex: 1;\n font-weight: 500;\n}\n\n.entity-picker-arrow {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.2s;\n}\n\n.entity-picker-dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n background: var(--mj-bg-surface-elevated, var(--mj-bg-surface));\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n box-shadow: 0 8px 32px color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n z-index: 100;\n max-height: 350px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.entity-picker-search {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-picker-search i {\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.entity-picker-search-input {\n flex: 1;\n border: none;\n background: transparent;\n color: var(--mj-text-primary);\n font-size: 13px;\n outline: none;\n}\n\n.entity-picker-search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.entity-picker-list {\n overflow-y: auto;\n max-height: 300px;\n padding: 4px 0;\n}\n\n.entity-picker-group-header {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px 4px;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n background: var(--mj-bg-surface-elevated, var(--mj-bg-surface));\n}\n\n.entity-picker-group-header i {\n font-size: 10px;\n}\n\n.entity-picker-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 14px 7px 28px;\n border: none;\n background: transparent;\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 0.1s;\n}\n\n.entity-picker-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.entity-picker-item-selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-picker-item i {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-picker-item-selected i {\n color: var(--mj-brand-primary);\n}\n\n.entity-picker-item-focused {\n background: var(--mj-bg-surface-hover);\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: -2px;\n}\n\n.entity-picker-empty {\n padding: 20px 14px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n/* ---- Template Editor ---- */\n\n.template-editor-wrapper {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n min-height: 120px;\n max-height: 300px;\n}\n\n.template-editor-wrapper ::ng-deep .cm-editor {\n min-height: 120px;\n max-height: 300px;\n font-size: 13px;\n}\n\n.suggest-submit-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 10px 20px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.suggest-submit-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.suggestion-error {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n font-size: 13px;\n line-height: 1.4;\n}\n\n.suggestion-error i {\n flex-shrink: 0;\n}\n\n.suggest-submit-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* --- Suggestion Result --- */\n.suggest-result {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.result-section {\n border-bottom: 1px solid var(--mj-border-subtle);\n padding-bottom: 12px;\n}\n\n.result-section:last-child {\n border-bottom: none;\n}\n\n.result-heading {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.result-template {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 6px;\n padding: 12px;\n font-size: 12px;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-all;\n margin: 0;\n}\n\n.result-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.result-tag {\n padding: 3px 10px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 500;\n}\n\n.result-relationship {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.rel-name {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.rel-fields {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.result-thresholds {\n display: flex;\n gap: 24px;\n}\n\n.threshold-item {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.threshold-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.threshold-value {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.result-reasoning {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.result-actions {\n display: flex;\n gap: 8px;\n padding-top: 8px;\n}\n\n.suggest-close-action {\n padding: 10px 20px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.suggest-close-action:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n/* --- Suggest Input --- */\n.suggest-input {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n width: 100%;\n box-sizing: border-box;\n}\n\n.suggest-input:focus {\n outline: none;\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n/* --- Try Again Button (secondary style) --- */\n.suggest-try-again-btn {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-primary);\n}\n\n.suggest-try-again-btn:hover:not(:disabled) {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n/* --- Save Spinner --- */\n.save-spinner {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 0;\n}\n\n/* --- Edit Panel Template Header --- */\n.edit-template-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.edit-regenerate-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 4px 10px;\n border: 1px solid var(--mj-brand-primary);\n border-radius: 6px;\n background: transparent;\n color: var(--mj-brand-primary);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.edit-regenerate-btn:hover:not(:disabled) {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.edit-regenerate-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* --- No Vector Index Warning Dialog --- */\n.no-index-warning-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 440px;\n max-width: 90vw;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 20px 60px color-mix(in srgb, var(--mj-text-primary) 20%, transparent);\n padding: 32px;\n text-align: center;\n}\n\n.no-index-warning-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n margin: 0 auto 16px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n}\n\n.no-index-warning-icon i {\n font-size: 24px;\n color: var(--mj-status-warning);\n}\n\n.no-index-warning-title {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.no-index-warning-message {\n margin: 0 0 24px 0;\n font-size: 14px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n}\n\n.no-index-warning-actions {\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n\n/* ================================================================\n Responsive \u2014 Vector Management\n ================================================================ */\n\n@media (max-width: 768px) {\n .panel-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .panel-actions {\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 600px) {\n .slide-panel {\n width: 100vw;\n max-width: 100vw;\n }\n}\n\n@media (max-width: 480px) {\n .vector-dashboard {\n padding: 12px;\n }\n\n .suggest-btn .suggest-btn-text {\n display: none;\n }\n}\n"] }]
2253
+ }], null, { HideToolbar: [{
2228
2254
  type: Input
2229
2255
  }], entitySearchInput: [{
2230
2256
  type: ViewChild,
2231
2257
  args: ['entitySearchInput']
2232
2258
  }] }); })();
2233
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VectorManagementResourceComponent, { className: "VectorManagementResourceComponent", filePath: "src/AI/components/vectors/vector-management-resource.component.ts", lineNumber: 71 }); })();
2259
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VectorManagementResourceComponent, { className: "VectorManagementResourceComponent", filePath: "src/AI/components/vectors/vector-management-resource.component.ts", lineNumber: 72 }); })();
2234
2260
  export function LoadVectorManagementResource() {
2235
2261
  // Prevents tree-shaking
2236
2262
  }