@memberjunction/ng-dashboards 5.30.0 → 5.31.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 (424) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  2. package/dist/AI/components/agents/agent-configuration.component.js +4 -4
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/agents/agent-editor.component.d.ts +2 -1
  5. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  6. package/dist/AI/components/agents/agent-editor.component.js +8 -6
  7. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +2 -1
  9. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  10. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +6 -5
  11. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  12. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +2 -1
  13. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  14. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +6 -5
  15. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  16. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +2 -1
  17. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  18. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +6 -5
  19. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  20. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts +2 -1
  21. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  22. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +7 -4
  23. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  24. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +3 -2
  25. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/model-performance/model-performance.component.js +10 -6
  27. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  28. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +2 -1
  29. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +6 -5
  31. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  32. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +2 -1
  33. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  34. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +6 -5
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  36. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  37. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +55 -52
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  39. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +15 -15
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  41. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  42. package/dist/AI/components/execution-monitoring.component.js +4 -3
  43. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.js +2 -2
  45. package/dist/AI/components/models/model-management.component.js.map +1 -1
  46. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +2 -1
  47. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  48. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +10 -8
  49. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  51. package/dist/AI/components/prompts/prompt-management.component.js +2 -2
  52. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  53. package/dist/AI/components/prompts/prompt-version-control.component.d.ts +2 -1
  54. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  55. package/dist/AI/components/prompts/prompt-version-control.component.js +13 -10
  56. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  57. package/dist/AI/components/requests/agent-requests-resource.component.js +1 -1
  58. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  59. package/dist/AI/components/tags/tags-resource.component.d.ts +1181 -0
  60. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -0
  61. package/dist/AI/components/tags/tags-resource.component.js +7487 -0
  62. package/dist/AI/components/tags/tags-resource.component.js.map +1 -0
  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 +25 -21
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/AI/index.d.ts +1 -0
  67. package/dist/AI/index.d.ts.map +1 -1
  68. package/dist/AI/index.js +5 -0
  69. package/dist/AI/index.js.map +1 -1
  70. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  71. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  72. package/dist/AI/services/ai-instrumentation.service.js +12 -4
  73. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  74. package/dist/APIKeys/api-applications-panel.component.d.ts +3 -2
  75. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  76. package/dist/APIKeys/api-applications-panel.component.js +5 -4
  77. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  78. package/dist/APIKeys/api-key-create-dialog.component.d.ts +2 -1
  79. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
  80. package/dist/APIKeys/api-key-create-dialog.component.js +5 -5
  81. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  82. package/dist/APIKeys/api-key-edit-panel.component.d.ts +3 -2
  83. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  84. package/dist/APIKeys/api-key-edit-panel.component.js +11 -10
  85. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  86. package/dist/APIKeys/api-key-list.component.d.ts +2 -1
  87. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
  88. package/dist/APIKeys/api-key-list.component.js +6 -5
  89. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  90. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  91. package/dist/APIKeys/api-keys-resource.component.js +4 -4
  92. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  93. package/dist/APIKeys/api-scopes-panel.component.d.ts +3 -2
  94. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
  95. package/dist/APIKeys/api-scopes-panel.component.js +8 -6
  96. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  97. package/dist/APIKeys/api-usage-panel.component.d.ts +3 -2
  98. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
  99. package/dist/APIKeys/api-usage-panel.component.js +10 -8
  100. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  101. package/dist/Actions/components/actions-list-view.component.d.ts +2 -1
  102. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
  103. package/dist/Actions/components/actions-list-view.component.js +6 -5
  104. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  105. package/dist/Actions/components/actions-overview.component.js +2 -2
  106. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  107. package/dist/Actions/components/categories-list-view.component.d.ts +2 -1
  108. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  109. package/dist/Actions/components/categories-list-view.component.js +6 -5
  110. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  111. package/dist/Actions/components/execution-monitoring.component.js +1 -1
  112. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  113. package/dist/Actions/components/explorer/action-card.component.d.ts +2 -1
  114. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  115. package/dist/Actions/components/explorer/action-card.component.js +6 -4
  116. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  117. package/dist/Actions/components/explorer/action-explorer.component.js +1 -1
  118. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/new-action-panel.component.d.ts +2 -1
  120. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
  121. package/dist/Actions/components/explorer/new-action-panel.component.js +7 -5
  122. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  123. package/dist/Actions/components/explorer/new-category-panel.component.d.ts +2 -1
  124. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
  125. package/dist/Actions/components/explorer/new-category-panel.component.js +7 -5
  126. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  127. package/dist/ApplicationRoles/application-roles-resource.component.js +4 -4
  128. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  129. package/dist/Communication/communication-logs-resource.component.js +1 -1
  130. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  131. package/dist/Communication/communication-monitor-resource.component.js +1 -1
  132. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  133. package/dist/Communication/communication-providers-resource.component.js +3 -3
  134. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  135. package/dist/Communication/communication-runs-resource.component.js +1 -1
  136. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  137. package/dist/Communication/communication-templates-resource.component.js +3 -3
  138. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  139. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
  140. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  141. package/dist/ComponentStudio/component-studio-dashboard.component.js +5 -4
  142. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  143. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +2 -1
  144. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  145. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +6 -4
  146. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  147. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +11 -2
  148. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  149. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +61 -27
  150. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  151. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +4 -2
  152. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  153. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +19 -11
  154. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  155. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts +4 -2
  156. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
  157. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +11 -3
  158. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  159. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +10 -1
  160. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  161. package/dist/ComponentStudio/components/workspace/component-preview.component.js +18 -9
  162. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  163. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +11 -1
  164. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
  165. package/dist/ComponentStudio/services/component-studio-state.service.js +23 -3
  166. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  167. package/dist/ComponentStudio/services/component-version.service.d.ts +6 -1
  168. package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
  169. package/dist/ComponentStudio/services/component-version.service.js +16 -6
  170. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  171. package/dist/Credentials/components/credentials-audit-resource.component.js +1 -1
  172. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  173. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  174. package/dist/Credentials/components/credentials-categories-resource.component.js +3 -3
  175. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  176. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  177. package/dist/Credentials/components/credentials-list-resource.component.js +3 -3
  178. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  179. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  180. package/dist/Credentials/components/credentials-overview-resource.component.js +3 -3
  181. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  182. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  183. package/dist/Credentials/components/credentials-types-resource.component.js +3 -3
  184. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  185. package/dist/Credentials/credentials-dashboard.component.js +1 -1
  186. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  187. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +13 -13
  188. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  189. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts +4 -0
  190. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts.map +1 -1
  191. package/dist/DashboardBrowser/dashboard-share-adapter.js +5 -2
  192. package/dist/DashboardBrowser/dashboard-share-adapter.js.map +1 -1
  193. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +3 -1
  194. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  195. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -4
  196. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  197. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +3 -2
  198. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  199. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +7 -6
  200. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  201. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +3 -2
  202. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
  203. package/dist/DataExplorer/components/view-selector/view-selector.component.js +6 -5
  204. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  205. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  206. package/dist/DataExplorer/data-explorer-dashboard.component.js +10 -9
  207. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  208. package/dist/DataExplorer/services/explorer-state.service.d.ts +6 -1
  209. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
  210. package/dist/DataExplorer/services/explorer-state.service.js +15 -5
  211. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
  212. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts +64 -0
  213. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts.map +1 -0
  214. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js +400 -0
  215. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js.map +1 -0
  216. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts +42 -0
  217. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts.map +1 -0
  218. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js +232 -0
  219. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js.map +1 -0
  220. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts +14 -0
  221. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts.map +1 -0
  222. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js +38 -0
  223. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js.map +1 -0
  224. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts +24 -0
  225. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts.map +1 -0
  226. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js +77 -0
  227. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js.map +1 -0
  228. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts +88 -0
  229. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts.map +1 -0
  230. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js +404 -0
  231. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js.map +1 -0
  232. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts +12 -0
  233. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts.map +1 -0
  234. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js +116 -0
  235. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js.map +1 -0
  236. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +55 -0
  237. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -0
  238. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +204 -0
  239. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -0
  240. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +61 -0
  241. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -0
  242. package/dist/DatabaseDesigner/components/entity-list.component.js +485 -0
  243. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -0
  244. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts +52 -0
  245. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts.map +1 -0
  246. package/dist/DatabaseDesigner/components/modify/database-modify.component.js +320 -0
  247. package/dist/DatabaseDesigner/components/modify/database-modify.component.js.map +1 -0
  248. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts +79 -0
  249. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts.map +1 -0
  250. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js +378 -0
  251. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js.map +1 -0
  252. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts +85 -0
  253. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts.map +1 -0
  254. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js +429 -0
  255. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js.map +1 -0
  256. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts +58 -0
  257. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts.map +1 -0
  258. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js +333 -0
  259. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js.map +1 -0
  260. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts +36 -0
  261. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts.map +1 -0
  262. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js +345 -0
  263. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js.map +1 -0
  264. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts +13 -0
  265. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts.map +1 -0
  266. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js +81 -0
  267. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js.map +1 -0
  268. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +30 -0
  269. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -0
  270. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +131 -0
  271. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -0
  272. package/dist/DatabaseDesigner/database-designer-erd.d.ts +19 -0
  273. package/dist/DatabaseDesigner/database-designer-erd.d.ts.map +1 -0
  274. package/dist/DatabaseDesigner/database-designer-erd.js +84 -0
  275. package/dist/DatabaseDesigner/database-designer-erd.js.map +1 -0
  276. package/dist/DatabaseDesigner/database-designer.types.d.ts +167 -0
  277. package/dist/DatabaseDesigner/database-designer.types.d.ts.map +1 -0
  278. package/dist/DatabaseDesigner/database-designer.types.js +26 -0
  279. package/dist/DatabaseDesigner/database-designer.types.js.map +1 -0
  280. package/dist/DatabaseDesigner/services/database-designer.engine.d.ts +94 -0
  281. package/dist/DatabaseDesigner/services/database-designer.engine.d.ts.map +1 -0
  282. package/dist/DatabaseDesigner/services/database-designer.engine.js +392 -0
  283. package/dist/DatabaseDesigner/services/database-designer.engine.js.map +1 -0
  284. package/dist/DatabaseDesigner/services/database-designer.service.d.ts +78 -0
  285. package/dist/DatabaseDesigner/services/database-designer.service.d.ts.map +1 -0
  286. package/dist/DatabaseDesigner/services/database-designer.service.js +273 -0
  287. package/dist/DatabaseDesigner/services/database-designer.service.js.map +1 -0
  288. package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts +79 -0
  289. package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts.map +1 -0
  290. package/dist/DatabaseDesigner/services/entity-wizard-state.service.js +204 -0
  291. package/dist/DatabaseDesigner/services/entity-wizard-state.service.js.map +1 -0
  292. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  293. package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
  294. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  295. package/dist/Home/action-pin-config-dialog.component.d.ts +2 -1
  296. package/dist/Home/action-pin-config-dialog.component.d.ts.map +1 -1
  297. package/dist/Home/action-pin-config-dialog.component.js +6 -4
  298. package/dist/Home/action-pin-config-dialog.component.js.map +1 -1
  299. package/dist/Home/action-pin-runner-dialog.component.d.ts +2 -1
  300. package/dist/Home/action-pin-runner-dialog.component.d.ts.map +1 -1
  301. package/dist/Home/action-pin-runner-dialog.component.js +5 -4
  302. package/dist/Home/action-pin-runner-dialog.component.js.map +1 -1
  303. package/dist/Home/home-application.d.ts.map +1 -1
  304. package/dist/Home/home-application.js +10 -12
  305. package/dist/Home/home-application.js.map +1 -1
  306. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  307. package/dist/Home/home-dashboard.component.js +3 -3
  308. package/dist/Home/home-dashboard.component.js.map +1 -1
  309. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  310. package/dist/Integration/components/activity/activity.component.js +1 -0
  311. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  312. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  313. package/dist/Integration/components/connections/connections.component.js +11 -10
  314. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  315. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
  316. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +2 -2
  317. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  318. package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
  319. package/dist/Integration/components/overview/overview.component.js +1 -0
  320. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  321. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  322. package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
  323. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  324. package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
  325. package/dist/Integration/components/schedules/schedules.component.js +5 -4
  326. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  327. package/dist/Integration/services/integration-data.service.d.ts +5 -1
  328. package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
  329. package/dist/Integration/services/integration-data.service.js +27 -19
  330. package/dist/Integration/services/integration-data.service.js.map +1 -1
  331. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +6 -6
  332. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  333. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  334. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +8 -6
  335. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  336. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +6 -6
  337. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  338. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +3 -3
  339. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  340. package/dist/Lists/components/lists-browse-resource.component.js +6 -6
  341. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  342. package/dist/Lists/components/lists-categories-resource.component.js +4 -4
  343. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  344. package/dist/Lists/components/lists-my-lists-resource.component.js +6 -6
  345. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  346. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  347. package/dist/Lists/components/lists-operations-resource.component.js +11 -10
  348. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  349. package/dist/Lists/services/list-set-operations.service.d.ts +5 -0
  350. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  351. package/dist/Lists/services/list-set-operations.service.js +11 -3
  352. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  353. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +2 -1
  354. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
  355. package/dist/MCP/components/mcp-connection-dialog.component.js +8 -6
  356. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  357. package/dist/MCP/components/mcp-server-dialog.component.d.ts +2 -1
  358. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
  359. package/dist/MCP/components/mcp-server-dialog.component.js +7 -5
  360. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  361. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  362. package/dist/MCP/mcp-dashboard.component.js +12 -12
  363. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  364. package/dist/Permissions/permissions-shared.d.ts +3 -3
  365. package/dist/Permissions/permissions-shared.d.ts.map +1 -1
  366. package/dist/Permissions/permissions-shared.js +5 -5
  367. package/dist/Permissions/permissions-shared.js.map +1 -1
  368. package/dist/Permissions/resource-access-resource.component.js +1 -1
  369. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  370. package/dist/Permissions/user-access-resource.component.js +1 -2
  371. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  372. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  373. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  374. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  375. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  376. package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
  377. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  378. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +5 -0
  379. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  380. package/dist/Scheduling/services/scheduling-instrumentation.service.js +21 -13
  381. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  382. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  383. package/dist/SystemDiagnostics/system-diagnostics.component.js +2 -2
  384. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  385. package/dist/Testing/components/testing-explorer.component.d.ts +2 -1
  386. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  387. package/dist/Testing/components/testing-explorer.component.js +9 -7
  388. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  389. package/dist/Testing/services/testing-instrumentation.service.d.ts +6 -1
  390. package/dist/Testing/services/testing-instrumentation.service.d.ts.map +1 -1
  391. package/dist/Testing/services/testing-instrumentation.service.js +21 -11
  392. package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
  393. package/dist/Testing/testing-dashboard.component.d.ts +3 -1
  394. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  395. package/dist/Testing/testing-dashboard.component.js +15 -11
  396. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  397. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  398. package/dist/VersionHistory/components/diff-resource.component.js +5 -5
  399. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  400. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
  401. package/dist/VersionHistory/components/graph-resource.component.js +1 -2
  402. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  403. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  404. package/dist/VersionHistory/components/labels-resource.component.js +3 -3
  405. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  406. package/dist/VersionHistory/components/restore-resource.component.js +1 -1
  407. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  408. package/dist/ai-dashboards.module.d.ts +35 -34
  409. package/dist/ai-dashboards.module.d.ts.map +1 -1
  410. package/dist/ai-dashboards.module.js +6 -0
  411. package/dist/ai-dashboards.module.js.map +1 -1
  412. package/dist/module.d.ts +13 -12
  413. package/dist/module.d.ts.map +1 -1
  414. package/dist/module.js +7 -0
  415. package/dist/module.js.map +1 -1
  416. package/dist/public-api.d.ts +3 -1
  417. package/dist/public-api.d.ts.map +1 -1
  418. package/dist/public-api.js +3 -1
  419. package/dist/public-api.js.map +1 -1
  420. package/dist/shared/entity-field-display.d.ts +4 -3
  421. package/dist/shared/entity-field-display.d.ts.map +1 -1
  422. package/dist/shared/entity-field-display.js +9 -9
  423. package/dist/shared/entity-field-display.js.map +1 -1
  424. package/package.json +52 -51
@@ -1,6 +1,7 @@
1
1
  import { OnInit, OnDestroy, EventEmitter } from '@angular/core';
2
2
  import { MJArtifactEntity, MJArtifactVersionEntity, MJCollectionEntity } from '@memberjunction/core-entities';
3
3
  import { ComponentSpec } from '@memberjunction/interactive-component-types';
4
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
4
5
  import * as i0 from "@angular/core";
5
6
  export interface ArtifactLoadResult {
6
7
  spec: ComponentSpec;
@@ -9,7 +10,7 @@ export interface ArtifactLoadResult {
9
10
  versionNumber: number;
10
11
  artifactName: string;
11
12
  }
12
- export declare class ArtifactLoadDialogComponent implements OnInit, OnDestroy {
13
+ export declare class ArtifactLoadDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {
13
14
  Visible: boolean;
14
15
  Close: EventEmitter<ArtifactLoadResult | undefined>;
15
16
  activeTab: number;
@@ -34,9 +35,10 @@ export declare class ArtifactLoadDialogComponent implements OnInit, OnDestroy {
34
35
  previewSpec: ComponentSpec | null;
35
36
  previewError: string | null;
36
37
  showJsonPreview: boolean;
37
- private metadata;
38
+ private get metadata();
38
39
  private destroy$;
39
40
  private searchSubject;
41
+ private cdr;
40
42
  ngOnInit(): Promise<void>;
41
43
  ngOnDestroy(): void;
42
44
  loadArtifacts(): Promise<void>;
@@ -47,6 +49,13 @@ export declare class ArtifactLoadDialogComponent implements OnInit, OnDestroy {
47
49
  loadVersions(artifactId: string): Promise<void>;
48
50
  selectVersion(version: MJArtifactVersionEntity): Promise<void>;
49
51
  loadPreview(version: MJArtifactVersionEntity): Promise<void>;
52
+ /**
53
+ * Skip emits artifact content as a `SkipAPIAnalysisCompleteResponse` envelope whose
54
+ * actual ComponentSpec lives at `componentOptions[0].option`. Older saves may put the
55
+ * envelope in `Configuration`; newer saves put it in `Content`. Either field can also
56
+ * contain a raw spec, so this helper handles both shapes.
57
+ */
58
+ private unwrapSpec;
50
59
  filterArtifacts(): Promise<void>;
51
60
  onSearchInput(): void;
52
61
  onArtifactTypeChange(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-load-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAAE,MAAM,eAAe,CAAC;AAE1F,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;;AAK5E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAMa,2BAA4B,YAAW,MAAM,EAAE,SAAS;IAC1D,OAAO,UAAS;IACf,KAAK,+CAAsD;IAGrE,SAAS,SAAK;IAGd,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,gBAAgB,EAAE,uBAAuB,EAAE,CAAM;IACjD,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACjD,eAAe,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IAGvD,WAAW,EAAE,kBAAkB,EAAE,CAAM;IACvC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IACrD,mBAAmB,EAAE,gBAAgB,EAAE,CAAM;IAG7C,UAAU,SAAM;IAChB,oBAAoB,SAAM;IAC1B,SAAS,SAAM;IAGf,WAAW,SAAK;IAChB,QAAQ,SAAM;IACd,cAAc,SAAK;IACnB,YAAY,UAAS;IAGrB,SAAS,UAAQ;IACjB,iBAAiB,UAAS;IAC1B,oBAAoB,UAAS;IAC7B,sBAAsB,UAAS;IAG/B,WAAW,EAAE,aAAa,GAAG,IAAI,CAAQ;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,eAAe,UAAS;IAExB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAyB;IAExC,QAAQ;IAgBd,WAAW;IAKL,aAAa;IA4Bb,eAAe;IA+Bf,gBAAgB,CAAC,UAAU,EAAE,kBAAkB;IA8BrD,OAAO,CAAC,mBAAmB;IA0BrB,cAAc,CAAC,QAAQ,EAAE,gBAAgB;IASzC,YAAY,CAAC,UAAU,EAAE,MAAM;IA2B/B,aAAa,CAAC,OAAO,EAAE,uBAAuB;IAK9C,WAAW,CAAC,OAAO,EAAE,uBAAuB;IA4B5C,eAAe;IAKrB,aAAa;IAIb,oBAAoB;IAOd,QAAQ;IAOR,YAAY;IAOlB,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,OAAO;IAIxB,aAAa,IAAI,MAAM;IAIvB,iBAAiB;IAIjB,oBAAoB,IAAI,MAAM;IAQ9B,OAAO,IAAI,OAAO;IAMlB,MAAM;IAIN,IAAI;IAcJ,WAAW,CAAC,KAAK,EAAE,MAAM;IAIzB,iBAAiB,IAAI,gBAAgB,EAAE;IAIvC,iBAAiB,IAAI,IAAI;IAIzB,cAAc,IAAI,MAAM;IAIxB,0FAA0F;IAC1F,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAIvD,6FAA6F;IAC7F,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO;IAI7D,uFAAuF;IACvF,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO;yCAlWjD,2BAA2B;2CAA3B,2BAA2B;CAqWvC"}
1
+ {"version":3,"file":"artifact-load-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAA6B,MAAM,eAAe,CAAC;AAErH,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAI5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AAErE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAMa,2BAA4B,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;IACvF,OAAO,UAAS;IACf,KAAK,+CAAsD;IAGrE,SAAS,SAAK;IAGd,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,gBAAgB,EAAE,uBAAuB,EAAE,CAAM;IACjD,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACjD,eAAe,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IAGvD,WAAW,EAAE,kBAAkB,EAAE,CAAM;IACvC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IACrD,mBAAmB,EAAE,gBAAgB,EAAE,CAAM;IAG7C,UAAU,SAAM;IAChB,oBAAoB,SAAM;IAC1B,SAAS,SAAM;IAGf,WAAW,SAAK;IAChB,QAAQ,SAAM;IACd,cAAc,SAAK;IACnB,YAAY,UAAS;IAGrB,SAAS,UAAQ;IACjB,iBAAiB,UAAS;IAC1B,oBAAoB,UAAS;IAC7B,sBAAsB,UAAS;IAG/B,WAAW,EAAE,aAAa,GAAG,IAAI,CAAQ;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,eAAe,UAAS;IAExB,OAAO,KAAK,QAAQ,GAAiC;IACrD,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,GAAG,CAA6B;IAElC,QAAQ;IAgBd,WAAW;IAKL,aAAa;IA8Bb,eAAe;IAiCf,gBAAgB,CAAC,UAAU,EAAE,kBAAkB;IAiCrD,OAAO,CAAC,mBAAmB;IA0BrB,cAAc,CAAC,QAAQ,EAAE,gBAAgB;IAUzC,YAAY,CAAC,UAAU,EAAE,MAAM;IA6B/B,aAAa,CAAC,OAAO,EAAE,uBAAuB;IAK9C,WAAW,CAAC,OAAO,EAAE,uBAAuB;IAoClD;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IASZ,eAAe;IAKrB,aAAa;IAIb,oBAAoB;IAOd,QAAQ;IAOR,YAAY;IAOlB,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,OAAO;IAIxB,aAAa,IAAI,MAAM;IAIvB,iBAAiB;IAIjB,oBAAoB,IAAI,MAAM;IAQ9B,OAAO,IAAI,OAAO;IAMlB,MAAM;IAIN,IAAI;IAcJ,WAAW,CAAC,KAAK,EAAE,MAAM;IAIzB,iBAAiB,IAAI,gBAAgB,EAAE;IAIvC,iBAAiB,IAAI,IAAI;IAIzB,cAAc,IAAI,MAAM;IAIxB,0FAA0F;IAC1F,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAIvD,6FAA6F;IAC7F,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO;IAI7D,uFAAuF;IACvF,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO;yCApYjD,2BAA2B;2CAA3B,2BAA2B;CAuYvC"}
@@ -1,8 +1,9 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { RunView, Metadata } from '@memberjunction/core';
1
+ import { Component, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';
2
+ import { RunView } from '@memberjunction/core';
3
3
  import { UUIDsEqual } from '@memberjunction/global';
4
4
  import { Subject, debounceTime, distinctUntilChanged } from 'rxjs';
5
5
  import { takeUntil } from 'rxjs/operators';
6
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/forms";
8
9
  import * as i2 from "@memberjunction/ng-code-editor";
@@ -460,7 +461,7 @@ function ArtifactLoadDialogComponent_Conditional_20_Template(rf, ctx) { if (rf &
460
461
  i0.ɵɵadvance(6);
461
462
  i0.ɵɵconditional(ctx_r0.isLoadingVersions ? 6 : ctx_r0.artifactVersions.length === 0 ? 7 : 8);
462
463
  } }
463
- export class ArtifactLoadDialogComponent {
464
+ export class ArtifactLoadDialogComponent extends BaseAngularComponent {
464
465
  Visible = false;
465
466
  Close = new EventEmitter();
466
467
  // Tab state
@@ -492,9 +493,10 @@ export class ArtifactLoadDialogComponent {
492
493
  previewSpec = null;
493
494
  previewError = null;
494
495
  showJsonPreview = false;
495
- metadata = new Metadata();
496
+ get metadata() { return this.ProviderToUse; }
496
497
  destroy$ = new Subject();
497
498
  searchSubject = new Subject();
499
+ cdr = inject(ChangeDetectorRef);
498
500
  async ngOnInit() {
499
501
  // Setup search debouncing
500
502
  this.searchSubject.pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.destroy$)).subscribe(() => {
@@ -511,8 +513,9 @@ export class ArtifactLoadDialogComponent {
511
513
  }
512
514
  async loadArtifacts() {
513
515
  this.isLoading = true;
516
+ this.cdr.detectChanges();
514
517
  try {
515
- const rv = new RunView();
518
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
516
519
  const startRow = this.currentPage * this.pageSize;
517
520
  const result = await rv.RunView({
518
521
  EntityName: 'MJ: Artifacts',
@@ -534,17 +537,19 @@ export class ArtifactLoadDialogComponent {
534
537
  }
535
538
  finally {
536
539
  this.isLoading = false;
540
+ this.cdr.detectChanges();
537
541
  }
538
542
  }
539
543
  async loadCollections() {
540
544
  this.isLoadingCollections = true;
545
+ this.cdr.detectChanges();
541
546
  try {
542
547
  const currentUserId = this.metadata.CurrentUser?.ID;
543
548
  if (!currentUserId) {
544
549
  this.collections = [];
545
550
  return;
546
551
  }
547
- const rv = new RunView();
552
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
548
553
  const result = await rv.RunView({
549
554
  EntityName: 'MJ: Collections',
550
555
  ExtraFilter: `UserID = '${currentUserId}' OR ID IN (
@@ -564,6 +569,7 @@ export class ArtifactLoadDialogComponent {
564
569
  }
565
570
  finally {
566
571
  this.isLoadingCollections = false;
572
+ this.cdr.detectChanges();
567
573
  }
568
574
  }
569
575
  async selectCollection(collection) {
@@ -571,9 +577,10 @@ export class ArtifactLoadDialogComponent {
571
577
  this.selectedArtifact = null;
572
578
  this.selectedVersion = null;
573
579
  this.artifactVersions = [];
580
+ this.cdr.detectChanges();
574
581
  // Load artifacts in this collection
575
582
  try {
576
- const rv = new RunView();
583
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
577
584
  const result = await rv.RunView({
578
585
  EntityName: 'MJ: Artifacts',
579
586
  ExtraFilter: `ID IN (
@@ -593,6 +600,9 @@ export class ArtifactLoadDialogComponent {
593
600
  console.error('Error loading collection artifacts:', error);
594
601
  this.collectionArtifacts = [];
595
602
  }
603
+ finally {
604
+ this.cdr.detectChanges();
605
+ }
596
606
  }
597
607
  buildArtifactFilter() {
598
608
  const filters = [];
@@ -610,7 +620,7 @@ export class ArtifactLoadDialogComponent {
610
620
  }
611
621
  // User email filter
612
622
  if (this.userEmail?.trim()) {
613
- const md = new Metadata();
623
+ const md = this.ProviderToUse;
614
624
  const schemaName = md.EntityByName("MJ: Users")?.SchemaName || "__mj";
615
625
  filters.push(`UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`);
616
626
  }
@@ -621,12 +631,14 @@ export class ArtifactLoadDialogComponent {
621
631
  this.selectedVersion = null;
622
632
  this.previewSpec = null;
623
633
  this.previewError = null;
634
+ this.cdr.detectChanges();
624
635
  await this.loadVersions(artifact.ID);
625
636
  }
626
637
  async loadVersions(artifactId) {
627
638
  this.isLoadingVersions = true;
639
+ this.cdr.detectChanges();
628
640
  try {
629
- const rv = new RunView();
641
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
630
642
  const result = await rv.RunView({
631
643
  EntityName: 'MJ: Artifact Versions',
632
644
  ExtraFilter: `ArtifactID = '${artifactId}'`,
@@ -647,6 +659,7 @@ export class ArtifactLoadDialogComponent {
647
659
  }
648
660
  finally {
649
661
  this.isLoadingVersions = false;
662
+ this.cdr.detectChanges();
650
663
  }
651
664
  }
652
665
  async selectVersion(version) {
@@ -656,29 +669,50 @@ export class ArtifactLoadDialogComponent {
656
669
  async loadPreview(version) {
657
670
  try {
658
671
  this.previewError = null;
659
- // Try Content field first (new schema)
660
- if (version.Content) {
661
- this.previewSpec = JSON.parse(version.Content);
672
+ const raw = version.Content ?? version.Configuration;
673
+ if (!raw) {
674
+ this.previewSpec = null;
675
+ this.previewError = 'No content found in this version';
676
+ return;
662
677
  }
663
- // Fallback to Configuration field (legacy)
664
- else if (version.Configuration) {
665
- const config = JSON.parse(version.Configuration);
666
- // Extract from SkipAPIAnalysisCompleteResponse if needed
667
- if (config.componentOptions && config.componentOptions.length > 0) {
668
- this.previewSpec = config.componentOptions[0].option;
669
- }
670
- else {
671
- this.previewSpec = config;
672
- }
678
+ const spec = this.unwrapSpec(JSON.parse(raw));
679
+ if (!spec) {
680
+ this.previewSpec = null;
681
+ this.previewError = 'Artifact content is not a recognized component spec';
682
+ return;
673
683
  }
674
- else {
675
- this.previewError = 'No content found in this version';
684
+ const hasCode = typeof spec.code === 'string' && spec.code.trim().length > 0;
685
+ const hasDeps = Array.isArray(spec.dependencies) && spec.dependencies.length > 0;
686
+ const isRegistryRef = spec.location === 'registry' && !!spec.registry && !!spec.namespace && !!spec.name;
687
+ if (!hasCode && !hasDeps && !isRegistryRef) {
688
+ this.previewSpec = null;
689
+ this.previewError = 'Artifact contains no component code, dependencies, or registry reference';
690
+ return;
676
691
  }
692
+ this.previewSpec = spec;
677
693
  }
678
694
  catch (error) {
679
695
  this.previewError = `Failed to parse: ${error}`;
680
696
  this.previewSpec = null;
681
697
  }
698
+ finally {
699
+ this.cdr.detectChanges();
700
+ }
701
+ }
702
+ /**
703
+ * Skip emits artifact content as a `SkipAPIAnalysisCompleteResponse` envelope whose
704
+ * actual ComponentSpec lives at `componentOptions[0].option`. Older saves may put the
705
+ * envelope in `Configuration`; newer saves put it in `Content`. Either field can also
706
+ * contain a raw spec, so this helper handles both shapes.
707
+ */
708
+ unwrapSpec(parsed) {
709
+ if (!parsed || typeof parsed !== 'object')
710
+ return null;
711
+ const obj = parsed;
712
+ if (Array.isArray(obj.componentOptions) && obj.componentOptions.length > 0 && obj.componentOptions[0]?.option) {
713
+ return obj.componentOptions[0].option;
714
+ }
715
+ return parsed;
682
716
  }
683
717
  async filterArtifacts() {
684
718
  this.currentPage = 0;
@@ -771,8 +805,8 @@ export class ArtifactLoadDialogComponent {
771
805
  IsVersionSelected(version) {
772
806
  return UUIDsEqual(this.selectedVersion?.ID, version.ID);
773
807
  }
774
- static ɵfac = function ArtifactLoadDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ArtifactLoadDialogComponent)(); };
775
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactLoadDialogComponent, selectors: [["app-artifact-load-dialog"]], inputs: { Visible: "Visible" }, outputs: { Close: "Close" }, standalone: false, decls: 27, vars: 18, consts: [["Title", "Load Component from Artifact", 3, "Close", "Visible", "Width", "MinWidth"], [1, "artifact-load-content"], [1, "filter-panel"], [1, "panel-header"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "filter-count"], [1, "filter-content"], [1, "main-content"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fa-solid", "fa-file-code"], [1, "fa-solid", "fa-folder"], [1, "tab-content"], [1, "artifacts-view"], [1, "collections-view"], [1, "version-panel"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-download"], ["mjButton", "", 3, "click"], [1, "filter-group"], ["type", "text", "placeholder", "Name or description...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "filter-select", 3, "ngModelChange", "change", "ngModel"], ["value", ""], ["value", "Component"], ["value", "Report"], ["value", "Dashboard"], ["type", "text", "placeholder", "Enter user email...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "paging-controls"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "artifacts-list"], [1, "loading-state"], [1, "empty-state"], ["text", "Loading artifacts...", "size", "small"], [1, "fa-solid", "fa-inbox"], [1, "artifact-item", 3, "selected"], [1, "artifact-item", 3, "click"], [1, "artifact-content"], [1, "artifact-main"], [1, "artifact-name"], [1, "artifact-description"], [1, "artifact-meta"], [1, "collections-list"], [1, "collection-artifacts"], ["text", "Loading collections...", "size", "small"], [1, "fa-solid", "fa-folder-open"], [1, "collection-item", 3, "selected"], [1, "collection-item", 3, "click"], [1, "collection-icon"], [1, "collection-info"], [1, "collection-name"], [1, "collection-description"], [1, "section-header"], [1, "fa-solid", "fa-code-branch"], [1, "version-content"], ["text", "Loading versions...", "size", "small"], [1, "fa-solid", "fa-info-circle"], [1, "version-list"], [1, "version-item", 3, "selected"], [1, "preview-section"], [1, "version-item", 3, "click"], [1, "version-number"], [1, "version-meta"], [1, "version-comments"], [1, "preview-header"], [1, "fa-solid", "fa-eye"], [1, "preview-error"], [1, "preview-content"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "preview-item"], [1, "preview-json-section"], [1, "preview-json-header", 3, "click"], [1, "fa-solid"], [1, "preview-json-content"], [2, "height", "300px", "width", "100%", 3, "value", "language", "readonly", "lineWrapping", "setup"]], template: function ArtifactLoadDialogComponent_Template(rf, ctx) { if (rf & 1) {
808
+ static ɵfac = /*@__PURE__*/ (() => { let ɵArtifactLoadDialogComponent_BaseFactory; return function ArtifactLoadDialogComponent_Factory(__ngFactoryType__) { return (ɵArtifactLoadDialogComponent_BaseFactory || (ɵArtifactLoadDialogComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ArtifactLoadDialogComponent)))(__ngFactoryType__ || ArtifactLoadDialogComponent); }; })();
809
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactLoadDialogComponent, selectors: [["app-artifact-load-dialog"]], inputs: { Visible: "Visible" }, outputs: { Close: "Close" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 27, vars: 18, consts: [["Title", "Load Component from Artifact", 3, "Close", "Visible", "Width", "MinWidth"], [1, "artifact-load-content"], [1, "filter-panel"], [1, "panel-header"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "filter-count"], [1, "filter-content"], [1, "main-content"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fa-solid", "fa-file-code"], [1, "fa-solid", "fa-folder"], [1, "tab-content"], [1, "artifacts-view"], [1, "collections-view"], [1, "version-panel"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-download"], ["mjButton", "", 3, "click"], [1, "filter-group"], ["type", "text", "placeholder", "Name or description...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "filter-select", 3, "ngModelChange", "change", "ngModel"], ["value", ""], ["value", "Component"], ["value", "Report"], ["value", "Dashboard"], ["type", "text", "placeholder", "Enter user email...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "paging-controls"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "artifacts-list"], [1, "loading-state"], [1, "empty-state"], ["text", "Loading artifacts...", "size", "small"], [1, "fa-solid", "fa-inbox"], [1, "artifact-item", 3, "selected"], [1, "artifact-item", 3, "click"], [1, "artifact-content"], [1, "artifact-main"], [1, "artifact-name"], [1, "artifact-description"], [1, "artifact-meta"], [1, "collections-list"], [1, "collection-artifacts"], ["text", "Loading collections...", "size", "small"], [1, "fa-solid", "fa-folder-open"], [1, "collection-item", 3, "selected"], [1, "collection-item", 3, "click"], [1, "collection-icon"], [1, "collection-info"], [1, "collection-name"], [1, "collection-description"], [1, "section-header"], [1, "fa-solid", "fa-code-branch"], [1, "version-content"], ["text", "Loading versions...", "size", "small"], [1, "fa-solid", "fa-info-circle"], [1, "version-list"], [1, "version-item", 3, "selected"], [1, "preview-section"], [1, "version-item", 3, "click"], [1, "version-number"], [1, "version-meta"], [1, "version-comments"], [1, "preview-header"], [1, "fa-solid", "fa-eye"], [1, "preview-error"], [1, "preview-content"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "preview-item"], [1, "preview-json-section"], [1, "preview-json-header", 3, "click"], [1, "fa-solid"], [1, "preview-json-content"], [2, "height", "300px", "width", "100%", 3, "value", "language", "readonly", "lineWrapping", "setup"]], template: function ArtifactLoadDialogComponent_Template(rf, ctx) { if (rf & 1) {
776
810
  i0.ɵɵelementStart(0, "mj-dialog", 0);
777
811
  i0.ɵɵlistener("Close", function ArtifactLoadDialogComponent_Template_mj_dialog_Close_0_listener() { return ctx.cancel(); });
778
812
  i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "div", 3);
@@ -843,5 +877,5 @@ export class ArtifactLoadDialogComponent {
843
877
  }], Close: [{
844
878
  type: Output
845
879
  }] }); })();
846
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactLoadDialogComponent, { className: "ArtifactLoadDialogComponent", filePath: "src/ComponentStudio/components/artifact-load-dialog.component.ts", lineNumber: 28 }); })();
880
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactLoadDialogComponent, { className: "ArtifactLoadDialogComponent", filePath: "src/ComponentStudio/components/artifact-load-dialog.component.ts", lineNumber: 29 }); })();
847
881
  //# sourceMappingURL=artifact-load-dialog.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-load-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts","../../../src/ComponentStudio/components/artifact-load-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter } from '@angular/core';\nimport { RunView, Metadata } from '@memberjunction/core';\nimport {\n MJArtifactEntity,\n MJArtifactVersionEntity,\n MJCollectionEntity,\n MJCollectionArtifactEntity\n} from '@memberjunction/core-entities';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport interface ArtifactLoadResult {\n spec: ComponentSpec;\n artifactID: string;\n versionID: string;\n versionNumber: number;\n artifactName: string;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-load-dialog',\n templateUrl: './artifact-load-dialog.component.html',\n styleUrl: './artifact-load-dialog.component.css'\n})\nexport class ArtifactLoadDialogComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactLoadResult | undefined>();\n\n // Tab state\n activeTab = 0; // 0 = Artifacts, 1 = Collections\n\n // Artifacts data\n artifacts: MJArtifactEntity[] = [];\n artifactVersions: MJArtifactVersionEntity[] = [];\n selectedArtifact: MJArtifactEntity | null = null;\n selectedVersion: MJArtifactVersionEntity | null = null;\n\n // Collections data\n collections: MJCollectionEntity[] = [];\n selectedCollection: MJCollectionEntity | null = null;\n collectionArtifacts: MJArtifactEntity[] = [];\n\n // Search and filter\n searchTerm = '';\n selectedArtifactType = '';\n userEmail = '';\n\n // Paging\n currentPage = 0;\n pageSize = 25;\n totalArtifacts = 0;\n hasMorePages = false;\n\n // UI state\n isLoading = true;\n isLoadingVersions = false;\n isLoadingCollections = false;\n isFilterPanelCollapsed = false;\n\n // Preview\n previewSpec: ComponentSpec | null = null;\n previewError: string | null = null;\n showJsonPreview = false;\n\n private metadata = new Metadata();\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n async ngOnInit() {\n // Setup search debouncing\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.filterArtifacts();\n });\n\n await Promise.all([\n this.loadArtifacts(),\n this.loadCollections()\n ]);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async loadArtifacts() {\n this.isLoading = true;\n try {\n const rv = new RunView();\n const startRow = this.currentPage * this.pageSize;\n\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: this.buildArtifactFilter(),\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: this.pageSize,\n StartRow: startRow,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifacts = result.Results;\n this.totalArtifacts = result.TotalRowCount || 0;\n const totalPages = Math.ceil(this.totalArtifacts / this.pageSize);\n this.hasMorePages = this.currentPage < totalPages - 1;\n }\n } catch (error) {\n console.error('Error loading artifacts:', error);\n } finally {\n this.isLoading = false;\n }\n }\n\n async loadCollections() {\n this.isLoadingCollections = true;\n try {\n const currentUserId = this.metadata.CurrentUser?.ID;\n if (!currentUserId) {\n this.collections = [];\n return;\n }\n\n const rv = new RunView();\n const result = await rv.RunView<MJCollectionEntity>({\n EntityName: 'MJ: Collections',\n ExtraFilter: `UserID = '${currentUserId}' OR ID IN (\n SELECT CollectionID FROM __mj.vwCollectionPermissions\n WHERE UserID = '${currentUserId}' AND CanRead = 1\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.collections = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collections:', error);\n this.collections = [];\n } finally {\n this.isLoadingCollections = false;\n }\n }\n\n async selectCollection(collection: MJCollectionEntity) {\n this.selectedCollection = collection;\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n\n // Load artifacts in this collection\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: `ID IN (\n SELECT DISTINCT av.ArtifactID\n FROM __mj.vwArtifactVersions av\n INNER JOIN __mj.vwCollectionArtifacts ca ON ca.ArtifactVersionID = av.ID\n WHERE ca.CollectionID = '${collection.ID}'\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.collectionArtifacts = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collection artifacts:', error);\n this.collectionArtifacts = [];\n }\n }\n\n private buildArtifactFilter(): string {\n const filters: string[] = [];\n\n // Always filter to Component type by default\n if (this.selectedArtifactType) {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.selectedArtifactType}')`);\n } else {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = 'Component')`);\n }\n\n // Search filter\n if (this.searchTerm?.trim()) {\n const term = this.searchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n\n // User email filter\n if (this.userEmail?.trim()) {\n const md = new Metadata();\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n filters.push(`UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`);\n }\n\n return filters.length > 0 ? filters.join(' AND ') : '';\n }\n\n async selectArtifact(artifact: MJArtifactEntity) {\n this.selectedArtifact = artifact;\n this.selectedVersion = null;\n this.previewSpec = null;\n this.previewError = null;\n\n await this.loadVersions(artifact.ID);\n }\n\n async loadVersions(artifactId: string) {\n this.isLoadingVersions = true;\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifactVersions = result.Results;\n\n // Auto-select the latest version\n if (this.artifactVersions.length > 0) {\n await this.selectVersion(this.artifactVersions[0]);\n }\n }\n } catch (error) {\n console.error('Error loading versions:', error);\n this.artifactVersions = [];\n } finally {\n this.isLoadingVersions = false;\n }\n }\n\n async selectVersion(version: MJArtifactVersionEntity) {\n this.selectedVersion = version;\n await this.loadPreview(version);\n }\n\n async loadPreview(version: MJArtifactVersionEntity) {\n try {\n this.previewError = null;\n\n // Try Content field first (new schema)\n if (version.Content) {\n this.previewSpec = JSON.parse(version.Content) as ComponentSpec;\n }\n // Fallback to Configuration field (legacy)\n else if (version.Configuration) {\n const config = JSON.parse(version.Configuration);\n\n // Extract from SkipAPIAnalysisCompleteResponse if needed\n if (config.componentOptions && config.componentOptions.length > 0) {\n this.previewSpec = config.componentOptions[0].option;\n } else {\n this.previewSpec = config;\n }\n }\n else {\n this.previewError = 'No content found in this version';\n }\n } catch (error) {\n this.previewError = `Failed to parse: ${error}`;\n this.previewSpec = null;\n }\n }\n\n async filterArtifacts() {\n this.currentPage = 0;\n await this.loadArtifacts();\n }\n\n onSearchInput() {\n this.searchSubject.next(this.searchTerm);\n }\n\n onArtifactTypeChange() {\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n this.filterArtifacts();\n }\n\n async nextPage() {\n if (this.hasMorePages) {\n this.currentPage++;\n await this.loadArtifacts();\n }\n }\n\n async previousPage() {\n if (this.currentPage > 0) {\n this.currentPage--;\n await this.loadArtifacts();\n }\n }\n\n canGoNext(): boolean {\n return this.hasMorePages;\n }\n\n canGoPrevious(): boolean {\n return this.currentPage > 0;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.totalArtifacts / this.pageSize);\n }\n\n toggleFilterPanel() {\n this.isFilterPanelCollapsed = !this.isFilterPanelCollapsed;\n }\n\n getActiveFilterCount(): number {\n let count = 0;\n if (this.searchTerm?.trim()) count++;\n if (this.selectedArtifactType) count++;\n if (this.userEmail?.trim()) count++;\n return count;\n }\n\n canLoad(): boolean {\n return this.selectedArtifact !== null &&\n this.selectedVersion !== null &&\n this.previewSpec !== null;\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n load() {\n if (!this.canLoad()) return;\n\n const result: ArtifactLoadResult = {\n spec: this.previewSpec!,\n artifactID: this.selectedArtifact!.ID,\n versionID: this.selectedVersion!.ID,\n versionNumber: this.selectedVersion!.VersionNumber,\n artifactName: this.selectedArtifact!.Name\n };\n\n this.Close.emit(result);\n }\n\n onTabSelect(index: number) {\n this.activeTab = index;\n }\n\n getArtifactsByTab(): MJArtifactEntity[] {\n return this.activeTab === 0 ? this.artifacts : this.collectionArtifacts;\n }\n\n toggleJsonPreview(): void {\n this.showJsonPreview = !this.showJsonPreview;\n }\n\n getPreviewJSON(): string {\n return this.previewSpec ? JSON.stringify(this.previewSpec, null, 2) : '';\n }\n\n /** Case-insensitive UUID check whether an artifact is the currently selected artifact. */\n IsArtifactSelected(artifact: MJArtifactEntity): boolean {\n return UUIDsEqual(this.selectedArtifact?.ID, artifact.ID);\n }\n\n /** Case-insensitive UUID check whether a collection is the currently selected collection. */\n IsCollectionSelected(collection: MJCollectionEntity): boolean {\n return UUIDsEqual(this.selectedCollection?.ID, collection.ID);\n }\n\n /** Case-insensitive UUID check whether a version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.selectedVersion?.ID, version.ID);\n }\n}\n","<mj-dialog [Visible]=\"true\" Title=\"Load Component from Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-load-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button mjButton (click)=\"toggleFilterPanel()\"\n variant=\"flat\"\n [class.filter-active]=\"getActiveFilterCount() > 0\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\"\n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\"\n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">Component (default)</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n\n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\"\n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 0\"\n (click)=\"onTabSelect(0)\">\n <i class=\"fa-solid fa-file-code\"></i> All Artifacts\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 1\"\n (click)=\"onTabSelect(1)\">\n <i class=\"fa-solid fa-folder\"></i> Collections\n </button>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Artifacts Tab -->\n @if (activeTab === 0) {\n <div class=\"artifacts-view\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button mjButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total)\n </span>\n <button mjButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Artifacts List -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading artifacts...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts found</p>\n </div>\n }\n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n\n <!-- Collections Tab -->\n @if (activeTab === 1) {\n <div class=\"collections-view\">\n <div class=\"collections-list\">\n @if (isLoadingCollections) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading collections...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (collections.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <p>No collections found</p>\n </div>\n }\n @else {\n @for (collection of collections; track collection.ID) {\n <div class=\"collection-item\"\n [class.selected]=\"IsCollectionSelected(collection)\"\n (click)=\"selectCollection(collection)\">\n <div class=\"collection-icon\">\n <i class=\"fa-solid fa-folder\"></i>\n </div>\n <div class=\"collection-info\">\n <div class=\"collection-name\">{{ collection.Name }}</div>\n @if (collection.Description) {\n <div class=\"collection-description\">{{ collection.Description }}</div>\n }\n </div>\n </div>\n }\n }\n </div>\n\n @if (selectedCollection) {\n <div class=\"collection-artifacts\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-file-code\"></i>\n Artifacts in \"{{ selectedCollection.Name }}\"\n </div>\n @if (collectionArtifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts in this collection</p>\n </div>\n }\n @else {\n @for (artifact of collectionArtifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version/Preview Panel -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Versions</h4>\n </div>\n\n <div class=\"version-content\">\n @if (isLoadingVersions) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading versions...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifactVersions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available</p>\n </div>\n }\n @else {\n <div class=\"version-list\">\n @for (version of artifactVersions; track version.ID) {\n <div class=\"version-item\"\n [class.selected]=\"IsVersionSelected(version)\"\n (click)=\"selectVersion(version)\">\n <div class=\"version-number\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Version {{ version.VersionNumber }}\n </div>\n <div class=\"version-meta\">\n <div>{{ version.__mj_UpdatedAt | date:'short' }}</div>\n @if (version.Comments) {\n <div class=\"version-comments\">{{ version.Comments }}</div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Preview Section -->\n @if (selectedVersion) {\n <div class=\"preview-section\">\n <div class=\"preview-header\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n @if (previewError) {\n <div class=\"preview-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ previewError }}\n </div>\n }\n @else if (previewSpec) {\n <div class=\"preview-content\">\n <div class=\"preview-item\">\n <strong>Name:</strong> {{ previewSpec.name }}\n </div>\n @if (previewSpec.description) {\n <div class=\"preview-item\">\n <strong>Description:</strong> {{ previewSpec.description }}\n </div>\n }\n @if (previewSpec.type) {\n <div class=\"preview-item\">\n <strong>Type:</strong> {{ previewSpec.type }}\n </div>\n }\n @if (previewSpec.namespace) {\n <div class=\"preview-item\">\n <strong>Namespace:</strong> {{ previewSpec.namespace }}\n </div>\n }\n <div class=\"preview-item\">\n <strong>Has Code:</strong> {{ previewSpec.code ? 'Yes' : 'No' }}\n </div>\n @if (previewSpec.dependencies && previewSpec.dependencies.length > 0) {\n <div class=\"preview-item\">\n <strong>Dependencies:</strong> {{ previewSpec.dependencies.length }}\n </div>\n }\n\n <!-- Full Spec JSON Viewer -->\n <div class=\"preview-json-section\">\n <div class=\"preview-json-header\" (click)=\"toggleJsonPreview()\">\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"!showJsonPreview\" [class.fa-chevron-down]=\"showJsonPreview\"></i>\n <strong>Full Specification (JSON)</strong>\n </div>\n @if (showJsonPreview) {\n <div class=\"preview-json-content\">\n <mj-code-editor\n [value]=\"getPreviewJSON()\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n [lineWrapping]=\"true\"\n [setup]=\"'basic'\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n variant=\"primary\"\n (click)=\"load()\"\n [disabled]=\"!canLoad()\">\n <i class=\"fa-solid fa-download\"></i>\n Load Component\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
1
+ {"version":3,"file":"artifact-load-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts","../../../src/ComponentStudio/components/artifact-load-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { RunView } from '@memberjunction/core';\nimport {\n MJArtifactEntity,\n MJArtifactVersionEntity,\n MJCollectionEntity,\n MJCollectionArtifactEntity\n} from '@memberjunction/core-entities';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nexport interface ArtifactLoadResult {\n spec: ComponentSpec;\n artifactID: string;\n versionID: string;\n versionNumber: number;\n artifactName: string;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-load-dialog',\n templateUrl: './artifact-load-dialog.component.html',\n styleUrl: './artifact-load-dialog.component.css'\n})\nexport class ArtifactLoadDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactLoadResult | undefined>();\n\n // Tab state\n activeTab = 0; // 0 = Artifacts, 1 = Collections\n\n // Artifacts data\n artifacts: MJArtifactEntity[] = [];\n artifactVersions: MJArtifactVersionEntity[] = [];\n selectedArtifact: MJArtifactEntity | null = null;\n selectedVersion: MJArtifactVersionEntity | null = null;\n\n // Collections data\n collections: MJCollectionEntity[] = [];\n selectedCollection: MJCollectionEntity | null = null;\n collectionArtifacts: MJArtifactEntity[] = [];\n\n // Search and filter\n searchTerm = '';\n selectedArtifactType = '';\n userEmail = '';\n\n // Paging\n currentPage = 0;\n pageSize = 25;\n totalArtifacts = 0;\n hasMorePages = false;\n\n // UI state\n isLoading = true;\n isLoadingVersions = false;\n isLoadingCollections = false;\n isFilterPanelCollapsed = false;\n\n // Preview\n previewSpec: ComponentSpec | null = null;\n previewError: string | null = null;\n showJsonPreview = false;\n\n private get metadata() { return this.ProviderToUse; }\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n private cdr = inject(ChangeDetectorRef);\n\n async ngOnInit() {\n // Setup search debouncing\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.filterArtifacts();\n });\n\n await Promise.all([\n this.loadArtifacts(),\n this.loadCollections()\n ]);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async loadArtifacts() {\n this.isLoading = true;\n this.cdr.detectChanges();\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const startRow = this.currentPage * this.pageSize;\n\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: this.buildArtifactFilter(),\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: this.pageSize,\n StartRow: startRow,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifacts = result.Results;\n this.totalArtifacts = result.TotalRowCount || 0;\n const totalPages = Math.ceil(this.totalArtifacts / this.pageSize);\n this.hasMorePages = this.currentPage < totalPages - 1;\n }\n } catch (error) {\n console.error('Error loading artifacts:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n async loadCollections() {\n this.isLoadingCollections = true;\n this.cdr.detectChanges();\n try {\n const currentUserId = this.metadata.CurrentUser?.ID;\n if (!currentUserId) {\n this.collections = [];\n return;\n }\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJCollectionEntity>({\n EntityName: 'MJ: Collections',\n ExtraFilter: `UserID = '${currentUserId}' OR ID IN (\n SELECT CollectionID FROM __mj.vwCollectionPermissions\n WHERE UserID = '${currentUserId}' AND CanRead = 1\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.collections = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collections:', error);\n this.collections = [];\n } finally {\n this.isLoadingCollections = false;\n this.cdr.detectChanges();\n }\n }\n\n async selectCollection(collection: MJCollectionEntity) {\n this.selectedCollection = collection;\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n this.cdr.detectChanges();\n\n // Load artifacts in this collection\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: `ID IN (\n SELECT DISTINCT av.ArtifactID\n FROM __mj.vwArtifactVersions av\n INNER JOIN __mj.vwCollectionArtifacts ca ON ca.ArtifactVersionID = av.ID\n WHERE ca.CollectionID = '${collection.ID}'\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.collectionArtifacts = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collection artifacts:', error);\n this.collectionArtifacts = [];\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n private buildArtifactFilter(): string {\n const filters: string[] = [];\n\n // Always filter to Component type by default\n if (this.selectedArtifactType) {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.selectedArtifactType}')`);\n } else {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = 'Component')`);\n }\n\n // Search filter\n if (this.searchTerm?.trim()) {\n const term = this.searchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n\n // User email filter\n if (this.userEmail?.trim()) {\n const md = this.ProviderToUse;\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n filters.push(`UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`);\n }\n\n return filters.length > 0 ? filters.join(' AND ') : '';\n }\n\n async selectArtifact(artifact: MJArtifactEntity) {\n this.selectedArtifact = artifact;\n this.selectedVersion = null;\n this.previewSpec = null;\n this.previewError = null;\n this.cdr.detectChanges();\n\n await this.loadVersions(artifact.ID);\n }\n\n async loadVersions(artifactId: string) {\n this.isLoadingVersions = true;\n this.cdr.detectChanges();\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifactVersions = result.Results;\n\n // Auto-select the latest version\n if (this.artifactVersions.length > 0) {\n await this.selectVersion(this.artifactVersions[0]);\n }\n }\n } catch (error) {\n console.error('Error loading versions:', error);\n this.artifactVersions = [];\n } finally {\n this.isLoadingVersions = false;\n this.cdr.detectChanges();\n }\n }\n\n async selectVersion(version: MJArtifactVersionEntity) {\n this.selectedVersion = version;\n await this.loadPreview(version);\n }\n\n async loadPreview(version: MJArtifactVersionEntity) {\n try {\n this.previewError = null;\n\n const raw = version.Content ?? version.Configuration;\n if (!raw) {\n this.previewSpec = null;\n this.previewError = 'No content found in this version';\n return;\n }\n\n const spec = this.unwrapSpec(JSON.parse(raw));\n if (!spec) {\n this.previewSpec = null;\n this.previewError = 'Artifact content is not a recognized component spec';\n return;\n }\n\n const hasCode = typeof spec.code === 'string' && spec.code.trim().length > 0;\n const hasDeps = Array.isArray(spec.dependencies) && spec.dependencies.length > 0;\n const isRegistryRef = spec.location === 'registry' && !!spec.registry && !!spec.namespace && !!spec.name;\n if (!hasCode && !hasDeps && !isRegistryRef) {\n this.previewSpec = null;\n this.previewError = 'Artifact contains no component code, dependencies, or registry reference';\n return;\n }\n\n this.previewSpec = spec;\n } catch (error) {\n this.previewError = `Failed to parse: ${error}`;\n this.previewSpec = null;\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Skip emits artifact content as a `SkipAPIAnalysisCompleteResponse` envelope whose\n * actual ComponentSpec lives at `componentOptions[0].option`. Older saves may put the\n * envelope in `Configuration`; newer saves put it in `Content`. Either field can also\n * contain a raw spec, so this helper handles both shapes.\n */\n private unwrapSpec(parsed: unknown): ComponentSpec | null {\n if (!parsed || typeof parsed !== 'object') return null;\n const obj = parsed as { componentOptions?: Array<{ option?: ComponentSpec }> };\n if (Array.isArray(obj.componentOptions) && obj.componentOptions.length > 0 && obj.componentOptions[0]?.option) {\n return obj.componentOptions[0].option;\n }\n return parsed as ComponentSpec;\n }\n\n async filterArtifacts() {\n this.currentPage = 0;\n await this.loadArtifacts();\n }\n\n onSearchInput() {\n this.searchSubject.next(this.searchTerm);\n }\n\n onArtifactTypeChange() {\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n this.filterArtifacts();\n }\n\n async nextPage() {\n if (this.hasMorePages) {\n this.currentPage++;\n await this.loadArtifacts();\n }\n }\n\n async previousPage() {\n if (this.currentPage > 0) {\n this.currentPage--;\n await this.loadArtifacts();\n }\n }\n\n canGoNext(): boolean {\n return this.hasMorePages;\n }\n\n canGoPrevious(): boolean {\n return this.currentPage > 0;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.totalArtifacts / this.pageSize);\n }\n\n toggleFilterPanel() {\n this.isFilterPanelCollapsed = !this.isFilterPanelCollapsed;\n }\n\n getActiveFilterCount(): number {\n let count = 0;\n if (this.searchTerm?.trim()) count++;\n if (this.selectedArtifactType) count++;\n if (this.userEmail?.trim()) count++;\n return count;\n }\n\n canLoad(): boolean {\n return this.selectedArtifact !== null &&\n this.selectedVersion !== null &&\n this.previewSpec !== null;\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n load() {\n if (!this.canLoad()) return;\n\n const result: ArtifactLoadResult = {\n spec: this.previewSpec!,\n artifactID: this.selectedArtifact!.ID,\n versionID: this.selectedVersion!.ID,\n versionNumber: this.selectedVersion!.VersionNumber,\n artifactName: this.selectedArtifact!.Name\n };\n\n this.Close.emit(result);\n }\n\n onTabSelect(index: number) {\n this.activeTab = index;\n }\n\n getArtifactsByTab(): MJArtifactEntity[] {\n return this.activeTab === 0 ? this.artifacts : this.collectionArtifacts;\n }\n\n toggleJsonPreview(): void {\n this.showJsonPreview = !this.showJsonPreview;\n }\n\n getPreviewJSON(): string {\n return this.previewSpec ? JSON.stringify(this.previewSpec, null, 2) : '';\n }\n\n /** Case-insensitive UUID check whether an artifact is the currently selected artifact. */\n IsArtifactSelected(artifact: MJArtifactEntity): boolean {\n return UUIDsEqual(this.selectedArtifact?.ID, artifact.ID);\n }\n\n /** Case-insensitive UUID check whether a collection is the currently selected collection. */\n IsCollectionSelected(collection: MJCollectionEntity): boolean {\n return UUIDsEqual(this.selectedCollection?.ID, collection.ID);\n }\n\n /** Case-insensitive UUID check whether a version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.selectedVersion?.ID, version.ID);\n }\n}\n","<mj-dialog [Visible]=\"true\" Title=\"Load Component from Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-load-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button mjButton (click)=\"toggleFilterPanel()\"\n variant=\"flat\"\n [class.filter-active]=\"getActiveFilterCount() > 0\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\"\n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\"\n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">Component (default)</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n\n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\"\n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 0\"\n (click)=\"onTabSelect(0)\">\n <i class=\"fa-solid fa-file-code\"></i> All Artifacts\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 1\"\n (click)=\"onTabSelect(1)\">\n <i class=\"fa-solid fa-folder\"></i> Collections\n </button>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Artifacts Tab -->\n @if (activeTab === 0) {\n <div class=\"artifacts-view\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button mjButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total)\n </span>\n <button mjButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Artifacts List -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading artifacts...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts found</p>\n </div>\n }\n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n\n <!-- Collections Tab -->\n @if (activeTab === 1) {\n <div class=\"collections-view\">\n <div class=\"collections-list\">\n @if (isLoadingCollections) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading collections...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (collections.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <p>No collections found</p>\n </div>\n }\n @else {\n @for (collection of collections; track collection.ID) {\n <div class=\"collection-item\"\n [class.selected]=\"IsCollectionSelected(collection)\"\n (click)=\"selectCollection(collection)\">\n <div class=\"collection-icon\">\n <i class=\"fa-solid fa-folder\"></i>\n </div>\n <div class=\"collection-info\">\n <div class=\"collection-name\">{{ collection.Name }}</div>\n @if (collection.Description) {\n <div class=\"collection-description\">{{ collection.Description }}</div>\n }\n </div>\n </div>\n }\n }\n </div>\n\n @if (selectedCollection) {\n <div class=\"collection-artifacts\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-file-code\"></i>\n Artifacts in \"{{ selectedCollection.Name }}\"\n </div>\n @if (collectionArtifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts in this collection</p>\n </div>\n }\n @else {\n @for (artifact of collectionArtifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version/Preview Panel -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Versions</h4>\n </div>\n\n <div class=\"version-content\">\n @if (isLoadingVersions) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading versions...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifactVersions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available</p>\n </div>\n }\n @else {\n <div class=\"version-list\">\n @for (version of artifactVersions; track version.ID) {\n <div class=\"version-item\"\n [class.selected]=\"IsVersionSelected(version)\"\n (click)=\"selectVersion(version)\">\n <div class=\"version-number\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Version {{ version.VersionNumber }}\n </div>\n <div class=\"version-meta\">\n <div>{{ version.__mj_UpdatedAt | date:'short' }}</div>\n @if (version.Comments) {\n <div class=\"version-comments\">{{ version.Comments }}</div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Preview Section -->\n @if (selectedVersion) {\n <div class=\"preview-section\">\n <div class=\"preview-header\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n @if (previewError) {\n <div class=\"preview-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ previewError }}\n </div>\n }\n @else if (previewSpec) {\n <div class=\"preview-content\">\n <div class=\"preview-item\">\n <strong>Name:</strong> {{ previewSpec.name }}\n </div>\n @if (previewSpec.description) {\n <div class=\"preview-item\">\n <strong>Description:</strong> {{ previewSpec.description }}\n </div>\n }\n @if (previewSpec.type) {\n <div class=\"preview-item\">\n <strong>Type:</strong> {{ previewSpec.type }}\n </div>\n }\n @if (previewSpec.namespace) {\n <div class=\"preview-item\">\n <strong>Namespace:</strong> {{ previewSpec.namespace }}\n </div>\n }\n <div class=\"preview-item\">\n <strong>Has Code:</strong> {{ previewSpec.code ? 'Yes' : 'No' }}\n </div>\n @if (previewSpec.dependencies && previewSpec.dependencies.length > 0) {\n <div class=\"preview-item\">\n <strong>Dependencies:</strong> {{ previewSpec.dependencies.length }}\n </div>\n }\n\n <!-- Full Spec JSON Viewer -->\n <div class=\"preview-json-section\">\n <div class=\"preview-json-header\" (click)=\"toggleJsonPreview()\">\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"!showJsonPreview\" [class.fa-chevron-down]=\"showJsonPreview\"></i>\n <strong>Full Specification (JSON)</strong>\n </div>\n @if (showJsonPreview) {\n <div class=\"preview-json-content\">\n <mj-code-editor\n [value]=\"getPreviewJSON()\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n [lineWrapping]=\"true\"\n [setup]=\"'basic'\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n variant=\"primary\"\n (click)=\"load()\"\n [disabled]=\"!canLoad()\">\n <i class=\"fa-solid fa-download\"></i>\n Load Component\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
@@ -1,12 +1,13 @@
1
1
  import { OnInit, OnDestroy, EventEmitter } from '@angular/core';
2
2
  import { MJArtifactEntity, MJArtifactVersionEntity } from '@memberjunction/core-entities';
3
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
3
4
  import * as i0 from "@angular/core";
4
5
  export interface ArtifactSelectionResult {
5
6
  artifact: MJArtifactEntity;
6
7
  action: 'new-version' | 'update-version';
7
8
  versionToUpdate?: MJArtifactVersionEntity;
8
9
  }
9
- export declare class ArtifactSelectionDialogComponent implements OnInit, OnDestroy {
10
+ export declare class ArtifactSelectionDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {
10
11
  Visible: boolean;
11
12
  Close: EventEmitter<ArtifactSelectionResult | undefined>;
12
13
  artifacts: MJArtifactEntity[];
@@ -26,11 +27,12 @@ export declare class ArtifactSelectionDialogComponent implements OnInit, OnDestr
26
27
  versionAction: 'new' | 'update';
27
28
  newArtifactName: string;
28
29
  newArtifactDescription: string;
29
- private metadata;
30
+ private get metadata();
30
31
  private currentUser;
31
32
  private destroy$;
32
33
  private searchSubject;
33
34
  private notificationService;
35
+ private cdr;
34
36
  ngOnInit(): Promise<void>;
35
37
  ngOnDestroy(): void;
36
38
  loadArtifacts(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-selection-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAAU,MAAM,eAAe,CAAC;AAElG,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;;AAM1F,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,aAAa,GAAG,gBAAgB,CAAC;IACzC,eAAe,CAAC,EAAE,uBAAuB,CAAC;CAC3C;AAED,qBAMa,gCAAiC,YAAW,MAAM,EAAE,SAAS;IAC/D,OAAO,UAAS;IACf,KAAK,oDAA2D;IAG1E,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,gBAAgB,EAAE,uBAAuB,EAAE,CAAM;IAGjD,WAAW,SAAK;IAChB,QAAQ,SAAM;IACd,cAAc,SAAK;IACnB,YAAY,UAAS;IAGrB,SAAS,UAAQ;IACjB,UAAU,SAAM;IAChB,SAAS,SAAM;IACf,oBAAoB,SAAM;IAC1B,mBAAmB,UAAS;IAC5B,sBAAsB,UAAS;IAI/B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACjD,eAAe,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IACvD,aAAa,EAAE,KAAK,GAAG,QAAQ,CAAS;IAGxC,eAAe,SAAM;IACrB,sBAAsB,SAAM;IAE5B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAyB;IAE9C,OAAO,CAAC,mBAAmB,CAAiC;IAEtD,QAAQ;IAad,WAAW;IAKL,aAAa;IAiCnB,OAAO,CAAC,eAAe,CAAgC;IAC1C,eAAe;IA+B5B,eAAe;IAMT,cAAc,CAAC,QAAQ,EAAE,gBAAgB;IAUzC,YAAY,CAAC,UAAU,EAAE,MAAM;IAmBrC,oBAAoB,IAAI,MAAM;IAMxB,QAAQ;IAOR,YAAY;IAOlB,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,OAAO;IAIxB,aAAa,IAAI,MAAM;IAIvB,iBAAiB;IAIjB,aAAa;IAIb,oBAAoB;IAQpB,oBAAoB,IAAI,MAAM;IAQ9B,OAAO,IAAI,OAAO;IAclB,iBAAiB,IAAI,MAAM;IAY3B,MAAM;IAIA,IAAI;YAqCI,iBAAiB;IAqD/B,0FAA0F;IAC1F,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAIvD,uFAAuF;IACvF,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO;yCAnVjD,gCAAgC;2CAAhC,gCAAgC;CAsV5C"}
1
+ {"version":3,"file":"artifact-selection-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAA6B,MAAM,eAAe,CAAC;AAErH,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAK1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AAErE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,aAAa,GAAG,gBAAgB,CAAC;IACzC,eAAe,CAAC,EAAE,uBAAuB,CAAC;CAC3C;AAED,qBAMa,gCAAiC,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;IAC5F,OAAO,UAAS;IACf,KAAK,oDAA2D;IAG1E,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,gBAAgB,EAAE,uBAAuB,EAAE,CAAM;IAGjD,WAAW,SAAK;IAChB,QAAQ,SAAM;IACd,cAAc,SAAK;IACnB,YAAY,UAAS;IAGrB,SAAS,UAAQ;IACjB,UAAU,SAAM;IAChB,SAAS,SAAM;IACf,oBAAoB,SAAM;IAC1B,mBAAmB,UAAS;IAC5B,sBAAsB,UAAS;IAI/B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACjD,eAAe,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IACvD,aAAa,EAAE,KAAK,GAAG,QAAQ,CAAS;IAGxC,eAAe,SAAM;IACrB,sBAAsB,SAAM;IAE5B,OAAO,KAAK,QAAQ,GAAiC;IACrD,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAyB;IAE9C,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,GAAG,CAA6B;IAElC,QAAQ;IAad,WAAW;IAKL,aAAa;IAmCnB,OAAO,CAAC,eAAe,CAAgC;IAC1C,eAAe;IA+B5B,eAAe;IAMT,cAAc,CAAC,QAAQ,EAAE,gBAAgB;IAWzC,YAAY,CAAC,UAAU,EAAE,MAAM;IAqBrC,oBAAoB,IAAI,MAAM;IAMxB,QAAQ;IAOR,YAAY;IAOlB,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,OAAO;IAIxB,aAAa,IAAI,MAAM;IAIvB,iBAAiB;IAIjB,aAAa;IAIb,oBAAoB;IAQpB,oBAAoB,IAAI,MAAM;IAQ9B,OAAO,IAAI,OAAO;IAclB,iBAAiB,IAAI,MAAM;IAY3B,MAAM;IAIA,IAAI;YAqCI,iBAAiB;IAqD/B,0FAA0F;IAC1F,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAIvD,uFAAuF;IACvF,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO;yCAzVjD,gCAAgC;2CAAhC,gCAAgC;CA4V5C"}