@memberjunction/ng-dashboards 6.2.0-edge.5 → 6.2.0-edge.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/README.md +35 -0
  2. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +2 -2
  3. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  4. package/dist/AI/components/analytics/realtime/realtime-management.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/realtime/realtime-management.component.js +3 -1
  6. package/dist/AI/components/analytics/realtime/realtime-management.component.js.map +1 -1
  7. package/dist/AI/components/analytics/realtime/realtime-overview.component.d.ts +1 -1
  8. package/dist/AI/components/analytics/realtime/realtime-overview.component.js +3 -3
  9. package/dist/AI/components/analytics/realtime/realtime-overview.component.js.map +1 -1
  10. package/dist/AI/components/analytics/realtime/realtime-session-data.d.ts +6 -4
  11. package/dist/AI/components/analytics/realtime/realtime-session-data.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/realtime/realtime-session-data.js +8 -2
  13. package/dist/AI/components/analytics/realtime/realtime-session-data.js.map +1 -1
  14. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +1 -1
  15. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  16. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +21 -13
  17. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  18. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +1 -1
  19. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -1
  20. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -1
  21. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +1 -0
  22. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -1
  23. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -1
  24. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +1 -0
  25. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -1
  27. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1 -0
  28. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
  29. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +7 -1
  30. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  31. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +210 -57
  32. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  33. package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts +12 -11
  34. package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts.map +1 -1
  35. package/dist/AI/components/duplicates/duplicate-detection-run-scope.js +15 -15
  36. package/dist/AI/components/duplicates/duplicate-detection-run-scope.js.map +1 -1
  37. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  38. package/dist/AI/components/execution-monitoring.component.js +28 -16
  39. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  40. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +1 -0
  41. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  42. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +32 -8
  43. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  44. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -1
  45. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  46. package/dist/AI/components/tags/tags-resource.component.js +18 -9
  47. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  48. package/dist/AI/components/vectors/sensitive-fields.d.ts +9 -4
  49. package/dist/AI/components/vectors/sensitive-fields.d.ts.map +1 -1
  50. package/dist/AI/components/vectors/sensitive-fields.js +39 -14
  51. package/dist/AI/components/vectors/sensitive-fields.js.map +1 -1
  52. package/dist/AI/components/vectors/vector-document-rules.d.ts +13 -0
  53. package/dist/AI/components/vectors/vector-document-rules.d.ts.map +1 -1
  54. package/dist/AI/components/vectors/vector-document-rules.js +14 -0
  55. package/dist/AI/components/vectors/vector-document-rules.js.map +1 -1
  56. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +34 -14
  57. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  58. package/dist/AI/components/vectors/vector-management-resource.component.js +134 -51
  59. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  60. package/dist/AI/components/vectors/vector-store-selection.d.ts +32 -0
  61. package/dist/AI/components/vectors/vector-store-selection.d.ts.map +1 -0
  62. package/dist/AI/components/vectors/vector-store-selection.js +57 -0
  63. package/dist/AI/components/vectors/vector-store-selection.js.map +1 -0
  64. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  65. package/dist/AI/services/ai-instrumentation.service.js +4 -2
  66. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  67. package/dist/Actions/action-result-code.d.ts +80 -0
  68. package/dist/Actions/action-result-code.d.ts.map +1 -0
  69. package/dist/Actions/action-result-code.js +163 -0
  70. package/dist/Actions/action-result-code.js.map +1 -0
  71. package/dist/Actions/components/actions-overview.component.d.ts +8 -0
  72. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  73. package/dist/Actions/components/actions-overview.component.js +12 -9
  74. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  75. package/dist/Actions/components/execution-monitoring.component.d.ts +29 -9
  76. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  77. package/dist/Actions/components/execution-monitoring.component.js +65 -42
  78. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  79. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/action-card.component.js +5 -4
  81. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  82. package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts +198 -0
  83. package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts.map +1 -0
  84. package/dist/ChiefOfStaff/chief-of-staff-agent-context.js +289 -0
  85. package/dist/ChiefOfStaff/chief-of-staff-agent-context.js.map +1 -0
  86. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.d.ts +29 -0
  87. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.d.ts.map +1 -0
  88. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.js +666 -0
  89. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.js.map +1 -0
  90. package/dist/ChiefOfStaff/chief-of-staff-governance.component.d.ts +56 -0
  91. package/dist/ChiefOfStaff/chief-of-staff-governance.component.d.ts.map +1 -0
  92. package/dist/ChiefOfStaff/chief-of-staff-governance.component.js +515 -0
  93. package/dist/ChiefOfStaff/chief-of-staff-governance.component.js.map +1 -0
  94. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.d.ts +14 -0
  95. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.d.ts.map +1 -0
  96. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.js +39 -0
  97. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.js.map +1 -0
  98. package/dist/ChiefOfStaff/chief-of-staff-overview.component.d.ts +17 -0
  99. package/dist/ChiefOfStaff/chief-of-staff-overview.component.d.ts.map +1 -0
  100. package/dist/ChiefOfStaff/chief-of-staff-overview.component.js +485 -0
  101. package/dist/ChiefOfStaff/chief-of-staff-overview.component.js.map +1 -0
  102. package/dist/ChiefOfStaff/chief-of-staff-page-base.d.ts +139 -0
  103. package/dist/ChiefOfStaff/chief-of-staff-page-base.d.ts.map +1 -0
  104. package/dist/ChiefOfStaff/chief-of-staff-page-base.js +602 -0
  105. package/dist/ChiefOfStaff/chief-of-staff-page-base.js.map +1 -0
  106. package/dist/ChiefOfStaff/index.d.ts +6 -0
  107. package/dist/ChiefOfStaff/index.d.ts.map +1 -0
  108. package/dist/ChiefOfStaff/index.js +6 -0
  109. package/dist/ChiefOfStaff/index.js.map +1 -0
  110. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  111. package/dist/Communication/communication-logs-resource.component.js +2 -1
  112. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  113. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  114. package/dist/Communication/communication-monitor-resource.component.js +26 -21
  115. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  116. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  117. package/dist/Communication/communication-runs-resource.component.js +14 -13
  118. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  119. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  120. package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
  121. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  122. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  123. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +2 -1
  124. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  125. package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
  126. package/dist/ComponentStudio/services/component-version.service.js +3 -0
  127. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  128. package/dist/DashboardEditor/dashboard-editor.component.d.ts +17 -2
  129. package/dist/DashboardEditor/dashboard-editor.component.d.ts.map +1 -1
  130. package/dist/DashboardEditor/dashboard-editor.component.js +94 -43
  131. package/dist/DashboardEditor/dashboard-editor.component.js.map +1 -1
  132. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +45 -2
  133. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  134. package/dist/DataExplorer/data-explorer-dashboard.component.js +178 -55
  135. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  136. package/dist/DataExplorer/models/explorer-state.interface.d.ts +2 -0
  137. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
  138. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
  139. package/dist/DevTools/graphql-console.component.js +2 -2
  140. package/dist/DevTools/lazy-module-status.component.js +2 -2
  141. package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -1
  142. package/dist/FormBuilder/form-builder-resource.component.js +5 -0
  143. package/dist/FormBuilder/form-builder-resource.component.js.map +1 -1
  144. package/dist/Integration/components/connections/connections.component.js +2 -2
  145. package/dist/Integration/services/integration-data.service.d.ts +1 -1
  146. package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
  147. package/dist/Integration/services/integration-data.service.js +4 -3
  148. package/dist/Integration/services/integration-data.service.js.map +1 -1
  149. package/dist/Lists/components/lists-browse-resource.component.js +1 -1
  150. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  151. package/dist/Lists/components/lists-my-lists-resource.component.js +1 -1
  152. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  153. package/dist/LoginStudio/login-studio-resource.component.d.ts +10 -2
  154. package/dist/LoginStudio/login-studio-resource.component.d.ts.map +1 -1
  155. package/dist/LoginStudio/login-studio-resource.component.js +111 -77
  156. package/dist/LoginStudio/login-studio-resource.component.js.map +1 -1
  157. package/dist/MCP/mcp-dashboard.component.d.ts +24 -4
  158. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  159. package/dist/MCP/mcp-dashboard.component.js +118 -65
  160. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  161. package/dist/PredictiveStudio/business-predictions.view-models.d.ts +1 -1
  162. package/dist/PredictiveStudio/business-predictions.view-models.d.ts.map +1 -1
  163. package/dist/PredictiveStudio/business-predictions.view-models.js +3 -3
  164. package/dist/PredictiveStudio/business-predictions.view-models.js.map +1 -1
  165. package/dist/PredictiveStudio/components/ps-experiments.component.d.ts +6 -63
  166. package/dist/PredictiveStudio/components/ps-experiments.component.d.ts.map +1 -1
  167. package/dist/PredictiveStudio/components/ps-experiments.component.js +257 -521
  168. package/dist/PredictiveStudio/components/ps-experiments.component.js.map +1 -1
  169. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts +0 -18
  170. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts.map +1 -1
  171. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js +124 -251
  172. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js.map +1 -1
  173. package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts +5 -9
  174. package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts.map +1 -1
  175. package/dist/PredictiveStudio/components/ps-pipelines.component.js +98 -130
  176. package/dist/PredictiveStudio/components/ps-pipelines.component.js.map +1 -1
  177. package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts +53 -4
  178. package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts.map +1 -1
  179. package/dist/PredictiveStudio/components/ps-predictions-grid.component.js +338 -326
  180. package/dist/PredictiveStudio/components/ps-predictions-grid.component.js.map +1 -1
  181. package/dist/PredictiveStudio/components/ps-row-drivers.component.d.ts +19 -0
  182. package/dist/PredictiveStudio/components/ps-row-drivers.component.d.ts.map +1 -0
  183. package/dist/PredictiveStudio/components/ps-row-drivers.component.js +85 -0
  184. package/dist/PredictiveStudio/components/ps-row-drivers.component.js.map +1 -0
  185. package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts +19 -1
  186. package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts.map +1 -1
  187. package/dist/PredictiveStudio/engine/predictive-studio.engine.js +52 -2
  188. package/dist/PredictiveStudio/engine/predictive-studio.engine.js.map +1 -1
  189. package/dist/PredictiveStudio/predictive-studio-agent-context.d.ts +3 -1
  190. package/dist/PredictiveStudio/predictive-studio-agent-context.d.ts.map +1 -1
  191. package/dist/PredictiveStudio/predictive-studio-agent-context.js +3 -0
  192. package/dist/PredictiveStudio/predictive-studio-agent-context.js.map +1 -1
  193. package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts +27 -4
  194. package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts.map +1 -1
  195. package/dist/PredictiveStudio/predictive-studio-score-history.service.js +94 -61
  196. package/dist/PredictiveStudio/predictive-studio-score-history.service.js.map +1 -1
  197. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts +29 -5
  198. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts.map +1 -1
  199. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js +186 -103
  200. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js.map +1 -1
  201. package/dist/PredictiveStudio/resources/ps-studio-resource.component.js +1 -1
  202. package/dist/PredictiveStudio/resources/ps-studio-resource.component.js.map +1 -1
  203. package/dist/QueryBrowser/query-browser-resource.component.d.ts +26 -0
  204. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  205. package/dist/QueryBrowser/query-browser-resource.component.js +375 -252
  206. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  207. package/dist/UserRoutines/user-routines-resource.component.d.ts +8 -1
  208. package/dist/UserRoutines/user-routines-resource.component.d.ts.map +1 -1
  209. package/dist/UserRoutines/user-routines-resource.component.js +22 -4
  210. package/dist/UserRoutines/user-routines-resource.component.js.map +1 -1
  211. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  212. package/dist/VersionHistory/components/diff-resource.component.js +1 -0
  213. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  214. package/dist/VideoStudio/components/vs-archetype-editor.component.d.ts +162 -0
  215. package/dist/VideoStudio/components/vs-archetype-editor.component.d.ts.map +1 -0
  216. package/dist/VideoStudio/components/vs-archetype-editor.component.js +1105 -0
  217. package/dist/VideoStudio/components/vs-archetype-editor.component.js.map +1 -0
  218. package/dist/VideoStudio/components/vs-audio-options.component.d.ts +27 -0
  219. package/dist/VideoStudio/components/vs-audio-options.component.d.ts.map +1 -0
  220. package/dist/VideoStudio/components/vs-audio-options.component.js +119 -0
  221. package/dist/VideoStudio/components/vs-audio-options.component.js.map +1 -0
  222. package/dist/VideoStudio/components/vs-copilot-panel.component.d.ts +105 -0
  223. package/dist/VideoStudio/components/vs-copilot-panel.component.d.ts.map +1 -0
  224. package/dist/VideoStudio/components/vs-copilot-panel.component.js +560 -0
  225. package/dist/VideoStudio/components/vs-copilot-panel.component.js.map +1 -0
  226. package/dist/VideoStudio/components/vs-production-brief.component.d.ts +163 -0
  227. package/dist/VideoStudio/components/vs-production-brief.component.d.ts.map +1 -0
  228. package/dist/VideoStudio/components/vs-production-brief.component.js +1054 -0
  229. package/dist/VideoStudio/components/vs-production-brief.component.js.map +1 -0
  230. package/dist/VideoStudio/components/vs-setup-health-card.component.d.ts +43 -0
  231. package/dist/VideoStudio/components/vs-setup-health-card.component.d.ts.map +1 -0
  232. package/dist/VideoStudio/components/vs-setup-health-card.component.js +412 -0
  233. package/dist/VideoStudio/components/vs-setup-health-card.component.js.map +1 -0
  234. package/dist/VideoStudio/components/vs-studio-slide-in.component.d.ts +73 -0
  235. package/dist/VideoStudio/components/vs-studio-slide-in.component.d.ts.map +1 -0
  236. package/dist/VideoStudio/components/vs-studio-slide-in.component.js +271 -0
  237. package/dist/VideoStudio/components/vs-studio-slide-in.component.js.map +1 -0
  238. package/dist/VideoStudio/index.d.ts +12 -0
  239. package/dist/VideoStudio/index.d.ts.map +1 -0
  240. package/dist/VideoStudio/index.js +12 -0
  241. package/dist/VideoStudio/index.js.map +1 -0
  242. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.d.ts +118 -0
  243. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.d.ts.map +1 -0
  244. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.js +964 -0
  245. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.js.map +1 -0
  246. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.d.ts +70 -0
  247. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.d.ts.map +1 -0
  248. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.js +600 -0
  249. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.js.map +1 -0
  250. package/dist/VideoStudio/resources/video-studio-productions-resource.component.d.ts +182 -0
  251. package/dist/VideoStudio/resources/video-studio-productions-resource.component.d.ts.map +1 -0
  252. package/dist/VideoStudio/resources/video-studio-productions-resource.component.js +1481 -0
  253. package/dist/VideoStudio/resources/video-studio-productions-resource.component.js.map +1 -0
  254. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.d.ts +102 -0
  255. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.d.ts.map +1 -0
  256. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.js +240 -0
  257. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.js.map +1 -0
  258. package/dist/VideoStudio/video-studio-agent-context.d.ts +495 -0
  259. package/dist/VideoStudio/video-studio-agent-context.d.ts.map +1 -0
  260. package/dist/VideoStudio/video-studio-agent-context.js +992 -0
  261. package/dist/VideoStudio/video-studio-agent-context.js.map +1 -0
  262. package/dist/ai-dashboards.module.d.ts +25 -21
  263. package/dist/ai-dashboards.module.d.ts.map +1 -1
  264. package/dist/ai-dashboards.module.js +25 -3
  265. package/dist/ai-dashboards.module.js.map +1 -1
  266. package/dist/module.d.ts +13 -12
  267. package/dist/module.d.ts.map +1 -1
  268. package/dist/module.js +7 -0
  269. package/dist/module.js.map +1 -1
  270. package/dist/public-api.d.ts +8 -0
  271. package/dist/public-api.d.ts.map +1 -1
  272. package/dist/public-api.js +10 -0
  273. package/dist/public-api.js.map +1 -1
  274. package/dist/shared/action-scheduled-job.d.ts.map +1 -1
  275. package/dist/shared/action-scheduled-job.js +2 -0
  276. package/dist/shared/action-scheduled-job.js.map +1 -1
  277. package/dist/video-studio-dashboards.module.d.ts +40 -0
  278. package/dist/video-studio-dashboards.module.d.ts.map +1 -0
  279. package/dist/video-studio-dashboards.module.js +159 -0
  280. package/dist/video-studio-dashboards.module.js.map +1 -0
  281. package/package.json +77 -71
  282. package/dist/PredictiveStudio/at-risk.view-models.d.ts +0 -120
  283. package/dist/PredictiveStudio/at-risk.view-models.d.ts.map +0 -1
  284. package/dist/PredictiveStudio/at-risk.view-models.js +0 -261
  285. package/dist/PredictiveStudio/at-risk.view-models.js.map +0 -1
  286. package/dist/PredictiveStudio/components/ps-confirm-modal.component.d.ts +0 -109
  287. package/dist/PredictiveStudio/components/ps-confirm-modal.component.d.ts.map +0 -1
  288. package/dist/PredictiveStudio/components/ps-confirm-modal.component.js +0 -323
  289. package/dist/PredictiveStudio/components/ps-confirm-modal.component.js.map +0 -1
  290. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts +0 -137
  291. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts.map +0 -1
  292. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js +0 -826
  293. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-selection-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts","../../../src/ComponentStudio/components/artifact-selection-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { RunView, UserInfo } from '@memberjunction/core';\nimport { MJArtifactEntity, MJArtifactVersionEntity } from '@memberjunction/core-entities';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { MJConfirmService } from '@memberjunction/ng-ui-components';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nexport interface ArtifactSelectionResult {\n artifact: MJArtifactEntity;\n action: 'new-version' | 'update-version';\n versionToUpdate?: MJArtifactVersionEntity;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-selection-dialog',\n templateUrl: './artifact-selection-dialog.component.html',\n styleUrl: './artifact-selection-dialog.component.css'\n})\nexport class ArtifactSelectionDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactSelectionResult | undefined>();\n\n // Data\n Artifacts: MJArtifactEntity[] = [];\n\n /** @deprecated Use {@link Artifacts}. */\n get artifacts(): MJArtifactEntity[] {\n return this.Artifacts;\n }\n /** @deprecated Use {@link Artifacts}. */\n set artifacts(value: MJArtifactEntity[]) {\n this.Artifacts = value;\n }\n ArtifactVersions: MJArtifactVersionEntity[] = [];\n\n /** @deprecated Use {@link ArtifactVersions}. */\n get artifactVersions(): MJArtifactVersionEntity[] {\n return this.ArtifactVersions;\n }\n /** @deprecated Use {@link ArtifactVersions}. */\n set artifactVersions(value: MJArtifactVersionEntity[]) {\n this.ArtifactVersions = value;\n }\n\n // Paging State\n CurrentPage = 0;\n\n /** @deprecated Use {@link CurrentPage}. */\n get currentPage() {\n return this.CurrentPage;\n }\n /** @deprecated Use {@link CurrentPage}. */\n set currentPage(value) {\n this.CurrentPage = value;\n }\n pageSize = 25;\n TotalArtifacts = 0;\n\n /** @deprecated Use {@link TotalArtifacts}. */\n get totalArtifacts() {\n return this.TotalArtifacts;\n }\n /** @deprecated Use {@link TotalArtifacts}. */\n set totalArtifacts(value) {\n this.TotalArtifacts = value;\n }\n HasMorePages = false;\n\n /** @deprecated Use {@link HasMorePages}. */\n get hasMorePages() {\n return this.HasMorePages;\n }\n /** @deprecated Use {@link HasMorePages}. */\n set hasMorePages(value) {\n this.HasMorePages = value;\n }\n\n // UI State\n isLoading = true;\n SearchTerm = '';\n\n /** @deprecated Use {@link SearchTerm}. */\n get searchTerm() {\n return this.SearchTerm;\n }\n /** @deprecated Use {@link SearchTerm}. */\n set searchTerm(value) {\n this.SearchTerm = value;\n }\n UserEmail = '';\n\n /** @deprecated Use {@link UserEmail}. */\n get userEmail() {\n return this.UserEmail;\n }\n /** @deprecated Use {@link UserEmail}. */\n set userEmail(value) {\n this.UserEmail = value;\n }\n SelectedArtifactType = '';\n\n /** @deprecated Use {@link SelectedArtifactType}. */\n get selectedArtifactType() {\n return this.SelectedArtifactType;\n }\n /** @deprecated Use {@link SelectedArtifactType}. */\n set selectedArtifactType(value) {\n this.SelectedArtifactType = value;\n }\n ShowNewArtifactForm = false;\n\n /** @deprecated Use {@link ShowNewArtifactForm}. */\n get showNewArtifactForm() {\n return this.ShowNewArtifactForm;\n }\n /** @deprecated Use {@link ShowNewArtifactForm}. */\n set showNewArtifactForm(value) {\n this.ShowNewArtifactForm = value;\n }\n IsFilterPanelCollapsed = false;\n\n /** @deprecated Use {@link IsFilterPanelCollapsed}. */\n get isFilterPanelCollapsed() {\n return this.IsFilterPanelCollapsed;\n }\n /** @deprecated Use {@link IsFilterPanelCollapsed}. */\n set isFilterPanelCollapsed(value) {\n this.IsFilterPanelCollapsed = value;\n }\n\n\n // Selection State\n SelectedArtifact: MJArtifactEntity | null = null;\n\n /** @deprecated Use {@link SelectedArtifact}. */\n get selectedArtifact(): MJArtifactEntity | null {\n return this.SelectedArtifact;\n }\n /** @deprecated Use {@link SelectedArtifact}. */\n set selectedArtifact(value: MJArtifactEntity | null) {\n this.SelectedArtifact = value;\n }\n SelectedVersion: MJArtifactVersionEntity | null = null;\n\n /** @deprecated Use {@link SelectedVersion}. */\n get selectedVersion(): MJArtifactVersionEntity | null {\n return this.SelectedVersion;\n }\n /** @deprecated Use {@link SelectedVersion}. */\n set selectedVersion(value: MJArtifactVersionEntity | null) {\n this.SelectedVersion = value;\n }\n VersionAction: 'new' | 'update' = 'new';\n\n /** @deprecated Use {@link VersionAction}. */\n get versionAction(): 'new' | 'update' {\n return this.VersionAction;\n }\n /** @deprecated Use {@link VersionAction}. */\n set versionAction(value: 'new' | 'update') {\n this.VersionAction = value;\n }\n \n // New Artifact Form\n NewArtifactName = '';\n\n /** @deprecated Use {@link NewArtifactName}. */\n get newArtifactName() {\n return this.NewArtifactName;\n }\n /** @deprecated Use {@link NewArtifactName}. */\n set newArtifactName(value) {\n this.NewArtifactName = value;\n }\n NewArtifactDescription = '';\n\n /** @deprecated Use {@link NewArtifactDescription}. */\n get newArtifactDescription() {\n return this.NewArtifactDescription;\n }\n /** @deprecated Use {@link NewArtifactDescription}. */\n set newArtifactDescription(value) {\n this.NewArtifactDescription = value;\n }\n \n private get metadata() { return this.ProviderToUse; }\n private currentUser: UserInfo | null = null;\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n private notificationService = inject(MJNotificationService);\n private confirmService = inject(MJConfirmService);\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 this.FilterArtifacts();\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\n // Calculate StartRow for server-side paging\n const startRow = this.CurrentPage * this.pageSize;\n\n // Load artifacts with paging\n const result = await rv.RunView<MJArtifactEntity>({\n ExtraFilter: this._artifactFilter,\n EntityName: 'MJ: Artifacts',\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\n // Calculate total pages using TotalRowCount from server\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 /** @deprecated Use {@link LoadArtifacts}. */\n async loadArtifacts() {\n return this.LoadArtifacts();\n }\n\n private _artifactFilter: string | undefined= undefined;\n public async FilterArtifacts() {\n // Reset to first page when filters change\n this.CurrentPage = 0;\n \n const filters: string[] = [];\n \n // Filter by search term\n if (this.SearchTerm?.trim()) {\n const term = this.SearchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n \n // Filter by artifact type\n if (this.SelectedArtifactType) {\n filters.push(`ArtifactTypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.SelectedArtifactType}')`);\n }\n \n // Filter by user email if provided\n if (this.UserEmail?.trim()) {\n const md = this.ProviderToUse;\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n const userFilter = `UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.UserEmail.trim()}%')`;\n filters.push(userFilter);\n }\n \n // Combine all filters\n this._artifactFilter = filters.length > 0 ? filters.join(' AND ') : undefined;\n\n await this.LoadArtifacts();\n }\n\n /** @deprecated Use {@link FilterArtifacts}. */\n public async filterArtifacts() {\n return this.FilterArtifacts();\n }\n\n SelectCreateNew() {\n this.ShowNewArtifactForm = true;\n this.SelectedArtifact = null;\n this.SelectedVersion = null;\n }\n\n /** @deprecated Use {@link SelectCreateNew}. */\n selectCreateNew() {\n return this.SelectCreateNew();\n }\n\n async SelectArtifact(artifact: MJArtifactEntity) {\n this.SelectedArtifact = artifact;\n this.ShowNewArtifactForm = false;\n this.VersionAction = 'new';\n this.SelectedVersion = null;\n this.cdr.detectChanges();\n\n // Load versions for this artifact\n await this.LoadVersions(artifact.ID);\n }\n\n /** @deprecated Use {@link SelectArtifact}. */\n async selectArtifact(artifact: MJArtifactEntity) {\n return this.SelectArtifact(artifact);\n }\n\n async LoadVersions(artifactId: string) {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n // conversation-scope: artifact-wide read, no conversation path applies\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 } catch (error) {\n console.error('Error loading versions:', error);\n this.ArtifactVersions = [];\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadVersions}. */\n async loadVersions(artifactId: string) {\n return this.LoadVersions(artifactId);\n }\n\n GetNextVersionNumber(): number {\n if (this.ArtifactVersions.length === 0) return 1;\n return Math.max(...this.ArtifactVersions.map(v => v.VersionNumber)) + 1;\n }\n\n /** @deprecated Use {@link GetNextVersionNumber}. */\n getNextVersionNumber(): number {\n return this.GetNextVersionNumber();\n }\n\n // Paging methods\n async NextPage() {\n if (this.HasMorePages) {\n this.CurrentPage++;\n await this.LoadArtifacts();\n }\n }\n\n /** @deprecated Use {@link NextPage}. */\n async nextPage() {\n return this.NextPage();\n }\n\n async PreviousPage() {\n if (this.CurrentPage > 0) {\n this.CurrentPage--;\n await this.LoadArtifacts();\n }\n }\n\n /** @deprecated Use {@link PreviousPage}. */\n async previousPage() {\n return this.PreviousPage();\n }\n\n CanGoNext(): boolean {\n return this.HasMorePages;\n }\n\n /** @deprecated Use {@link CanGoNext}. */\n canGoNext(): boolean {\n return this.CanGoNext();\n }\n\n CanGoPrevious(): boolean {\n return this.CurrentPage > 0;\n }\n\n /** @deprecated Use {@link CanGoPrevious}. */\n canGoPrevious(): boolean {\n return this.CanGoPrevious();\n }\n\n GetTotalPages(): number {\n return Math.ceil(this.TotalArtifacts / this.pageSize);\n }\n\n /** @deprecated Use {@link GetTotalPages}. */\n getTotalPages(): number {\n return this.GetTotalPages();\n }\n\n ToggleFilterPanel() {\n this.IsFilterPanelCollapsed = !this.IsFilterPanelCollapsed;\n }\n\n /** @deprecated Use {@link ToggleFilterPanel}. */\n toggleFilterPanel() {\n return this.ToggleFilterPanel();\n }\n\n OnSearchInput() {\n this.searchSubject.next(this.SearchTerm);\n }\n\n /** @deprecated Use {@link OnSearchInput}. */\n onSearchInput() {\n return this.OnSearchInput();\n }\n\n OnArtifactTypeChange() {\n // Clear selected artifact when type changes\n this.SelectedArtifact = null;\n this.SelectedVersion = null;\n this.ArtifactVersions = [];\n this.FilterArtifacts();\n }\n\n /** @deprecated Use {@link OnArtifactTypeChange}. */\n onArtifactTypeChange() {\n return this.OnArtifactTypeChange();\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 /** @deprecated Use {@link GetActiveFilterCount}. */\n getActiveFilterCount(): number {\n return this.GetActiveFilterCount();\n }\n\n CanSave(): boolean {\n if (this.ShowNewArtifactForm) {\n return this.NewArtifactName.trim().length > 0;\n }\n \n if (!this.SelectedArtifact) return false;\n \n if (this.VersionAction === 'update') {\n return this.SelectedVersion !== null;\n }\n \n return true;\n }\n\n /** @deprecated Use {@link CanSave}. */\n canSave(): boolean {\n return this.CanSave();\n }\n\n GetSaveButtonText(): string {\n if (this.ShowNewArtifactForm) {\n return 'Create & Save';\n }\n\n if (this.VersionAction === 'update' && this.SelectedVersion) {\n return `Update Version ${this.SelectedVersion.VersionNumber}`;\n }\n\n return `Save as Version ${this.GetNextVersionNumber()}`;\n }\n\n /** @deprecated Use {@link GetSaveButtonText}. */\n getSaveButtonText(): string {\n return this.GetSaveButtonText();\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n async save() {\n if (!this.CanSave()) return;\n \n // Handle new artifact creation\n if (this.ShowNewArtifactForm) {\n const newArtifact = await this.createNewArtifact();\n if (newArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: newArtifact,\n action: 'new-version'\n };\n this.Close.emit(result);\n }\n return;\n }\n \n // Handle existing artifact selection\n if (this.SelectedArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: this.SelectedArtifact,\n action: this.VersionAction === 'update' ? 'update-version' : 'new-version',\n versionToUpdate: this.VersionAction === 'update' ? this.SelectedVersion! : undefined\n };\n \n // If updating, show confirmation\n if (this.VersionAction === 'update') {\n const confirmed = await this.confirmService.Confirm({ title: 'Overwrite version', message: `Overwrite version ${this.SelectedVersion!.VersionNumber}?`, detail: 'This action cannot be undone.' });\n if (!confirmed) return;\n }\n\n this.Close.emit(result);\n }\n }\n\n private async createNewArtifact(): Promise<MJArtifactEntity | null> {\n try {\n const artifact = await this.metadata.GetEntityObject<MJArtifactEntity>('MJ: Artifacts');\n artifact.Name = this.NewArtifactName;\n artifact.Description = this.NewArtifactDescription || null;\n\n // Get Component artifact type\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const typeResult = await rv.RunView({\n EntityName: 'MJ: Artifact Types',\n ExtraFilter: `Name = 'Component'`,\n MaxRows: 1\n });\n\n if (typeResult.Success && typeResult.Results?.length > 0) {\n artifact.TypeID = typeResult.Results[0].ID;\n }\n\n // Set default environment if available from current user\n // Environment ID is optional - will be set by server if not provided\n const envId = (this.metadata.CurrentUser as any)?.EnvironmentID;\n if (envId) {\n artifact.EnvironmentID = envId;\n }\n\n artifact.Comments = 'Created from Component Studio';\n\n const saveResult = await artifact.Save();\n if (saveResult) {\n this.notificationService.CreateSimpleNotification(\n `Artifact \"${artifact.Name}\" created successfully`,\n 'success',\n 3000\n );\n return artifact;\n } else {\n console.error('Failed to create artifact - Full LatestResult:', artifact.LatestResult);\n this.notificationService.CreateSimpleNotification(\n 'Failed to create artifact',\n 'error'\n );\n return null;\n }\n } catch (error) {\n console.error('Error creating artifact:', error);\n this.notificationService.CreateSimpleNotification(\n 'Error creating artifact',\n 'error'\n );\n return null;\n }\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 version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.SelectedVersion?.ID, version.ID);\n }\n}","<mj-dialog [Visible]=\"true\" Title=\"Save Component to Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-selection-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <!-- Panel Header -->\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=\"\">All Types</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 <!-- 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 items)\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 <!-- Existing Artifacts -->\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 <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-inbox\"\n Title=\"No artifacts found\" />\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 \n <!-- Create New Artifact Section (at bottom) -->\n <div class=\"create-section\">\n <div class=\"divider\">OR CREATE NEW ARTIFACT</div>\n \n <button mjButton\n (click)=\"selectCreateNew()\"\n variant=\"primary\"\n class=\"create-btn\">\n <i class=\"fa-solid fa-plus\"></i> Create New Artifact\n </button>\n \n @if (showNewArtifactForm) {\n <div class=\"new-artifact-form\">\n <input class=\"mj-input\"\n [(ngModel)]=\"newArtifactName\"\n placeholder=\"Artifact name...\">\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"newArtifactDescription\"\n placeholder=\"Description (optional)...\">\n </textarea>\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version Panel (only show when artifact selected) -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Version</h4>\n </div>\n \n @if (artifactVersions.length > 0) {\n <div class=\"version-content\">\n <div class=\"version-actions\">\n <label>Action</label>\n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"new\"\n [(ngModel)]=\"versionAction\"\n (change)=\"selectedVersion = null\">\n <span>Create New Version (v{{ getNextVersionNumber() }})</span>\n </label>\n \n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"update\"\n [(ngModel)]=\"versionAction\">\n <span>Update Existing Version</span>\n </label>\n </div>\n \n @if (versionAction === 'update') {\n <div class=\"version-selection\">\n <label>Select Version</label>\n @for (version of artifactVersions; track version.ID) {\n <label class=\"version-item\" \n [class.selected]=\"IsVersionSelected(version)\">\n <input type=\"radio\"\n name=\"selectedVersion\"\n [value]=\"version\"\n [(ngModel)]=\"selectedVersion\">\n <div class=\"version-info\">\n <div class=\"version-number\">Version {{ version.VersionNumber }}</div>\n <div class=\"version-date\">{{ version.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </label>\n }\n </div>\n \n @if (selectedVersion) {\n <div class=\"warning\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>Warning: This will overwrite version {{ selectedVersion.VersionNumber }}</span>\n </div>\n }\n }\n </div>\n } @else {\n <div class=\"info-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available for this artifact.</p>\n <p>A new version will be created.</p>\n </div>\n }\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n [variant]=\"versionAction === 'update' && selectedVersion ? 'warning' : 'primary'\"\n (click)=\"save()\"\n [disabled]=\"!canSave()\">\n <i class=\"fa-solid fa-save\"></i>\n {{ getSaveButtonText() }}\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
1
+ {"version":3,"file":"artifact-selection-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts","../../../src/ComponentStudio/components/artifact-selection-dialog.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EAAE,OAAO,EAAY,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,MAAM,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;;;;;;;ICDjD,4BAAM;IAAA,uBAAO;IAAA,iBAAO;;;IAOhB,+BAA2B;IAAA,YAA4B;IAAA,iBAAO;;;IAAnC,cAA4B;IAA5B,mDAA4B;;;;IASvD,AADJ,AAFJ,8BAA4B,cAEE,YACf;IAAA,sBAAM;IAAA,iBAAQ;IACrB,iCAI4B;IAHrB,4TAAwB;IACxB,mMAAS,sBAAe,KAAC;IAGpC,AALI,iBAI4B,EAC1B;IAIF,AADJ,+BAA0B,YACf;IAAA,6BAAa;IAAA,iBAAQ;IAC5B,kCAE8B;IAFtB,iVAAkC;IAClC,sMAAU,6BAAsB,KAAC;IAErC,kCAAiB;IAAA,0BAAS;IAAA,iBAAS;IACnC,mCAA0B;IAAA,0BAAS;IAAA,iBAAS;IAC5C,mCAAuB;IAAA,uBAAM;IAAA,iBAAS;IACtC,mCAA0B;IAAA,0BAAS;IAE3C,AADI,AADuC,iBAAS,EACvC,EACP;IAIF,AADJ,gCAA0B,aACf;IAAA,+BAAc;IAAA,iBAAQ;IAC7B,kCAI4B;IAHrB,2TAAuB;IACvB,oMAAS,wBAAiB,KAAC;IAI1C,AADI,AALI,iBAI4B,EAC1B,EACJ;;;IA5BS,eAAwB;IAAxB,iDAAwB;IASvB,eAAkC;IAAlC,2DAAkC;IAcnC,gBAAuB;IAAvB,gDAAuB;;;IAgClC,+BAA2B;IACvB,iCAAkE;IACtE,iBAAM;;;IAGN,qCACiC;;;IAcb,+BAAkC;IAC9B,YACJ;IAAA,iBAAM;;;IADF,cACJ;IADI,wDACJ;;;;IAZhB,+BAEuC;IAAnC,uOAAS,kCAAwB,KAAC;IAG1B,AADJ,AADJ,+BAA8B,cACC,cACI;IACvB,wBAAqC;IACrC,4BAAM;IAAA,YAAmB;IAC7B,AAD6B,iBAAO,EAC9B;IACN,wHAA4B;IAKhC,iBAAM;IAEF,AADJ,+BAA2B,UAClB;IAAA,aAAmB;IAAA,iBAAM;IAC9B,4BAAK;IAAA,aAA4C;;IAG7D,AADI,AADI,AADqD,iBAAM,EACrD,EACJ,EACJ;;;;IAnBF,kEAA+C;IAM7B,eAAmB;IAAnB,sCAAmB;IAE7B,cAIC;IAJD,kDAIC;IAGI,eAAmB;IAAnB,sCAAmB;IACnB,eAA4C;IAA5C,gFAA4C;;;IAlBjE,oHAsBC;;;IAtBD,+BAsBC;;;;IAiBG,AADJ,+BAA+B,gBAGI;IAD/B,uUAA6B;IAD7B,iBAE+B;IAC/B,oCAEwC;IADxC,wVAAoC;IAEpC,wCAAA;IACJ,AADI,iBAAW,EACT;;;IANF,cAA6B;IAA7B,sDAA6B;IAG7B,cAAoC;IAApC,6DAAoC;;;;IA2CpB,AAFJ,iCACqD,gBAIf;IAA9B,2WAA6B;IAHjC,iBAGkC;IAE9B,AADJ,+BAA0B,cACM;IAAA,YAAmC;IAAA,iBAAM;IACrE,+BAA0B;IAAA,YAA2C;;IAE7E,AADI,AADyE,iBAAM,EACzE,EACF;;;;IATD,gEAA6C;IAG5C,cAAiB;IAAjB,kCAAiB;IACjB,sDAA6B;IAED,eAAmC;IAAnC,2DAAmC;IACrC,eAA2C;IAA3C,8EAA2C;;;IAOjF,+BAAqB;IACjB,wBAAgD;IAChD,4BAAM;IAAA,YAAwE;IAClF,AADkF,iBAAO,EACnF;;;IADI,eAAwE;IAAxE,oGAAwE;;;IAnBlF,AADJ,+BAA+B,YACpB;IAAA,8BAAc;IAAA,iBAAQ;IAC7B,kJAYC;IACL,iBAAM;IAEN,+IAAuB;;;IAfnB,eAYC;IAZD,sCAYC;IAGL,eAKC;IALD,iDAKC;;;;IA1CD,AADJ,AADJ,+BAA6B,cACI,YAClB;IAAA,sBAAM;IAAA,iBAAQ;IAEjB,AADJ,iCAA2B,gBAKe;IADlC,kVAA2B;IAC3B,8OAA4B,IAAI,KAAC;IAJrC,iBAIsC;IACtC,4BAAM;IAAA,YAAkD;IAC5D,AAD4D,iBAAO,EAC3D;IAGJ,AADJ,iCAA2B,gBAIS;IAA5B,kVAA2B;IAH/B,iBAGgC;IAChC,6BAAM;IAAA,wCAAuB;IAErC,AADI,AADiC,iBAAO,EAChC,EACN;IAEN,uHAAkC;IAyBtC,iBAAM;;;IAvCU,eAA2B;IAA3B,oDAA2B;IAEzB,eAAkD;IAAlD,kFAAkD;IAOpD,eAA2B;IAA3B,oDAA2B;IAKvC,eAwBC;IAxBD,6DAwBC;;;IAGL,+BAAwB;IACpB,wBAAuC;IACvC,yBAAG;IAAA,wDAAwC;IAAA,iBAAI;IAC/C,yBAAG;IAAA,8CAA8B;IACrC,AADqC,iBAAI,EACnC;;;IAxDN,AADJ,AADJ,+BAA2B,aACG,SAClB;IAAA,wBAAuC;IAAC,wBAAO;IACvD,AADuD,iBAAK,EACtD;IAkDJ,AAhDF,mHAAmC,4FAgD1B;IAOb,iBAAM;;;IAvDF,eAsDC;IAtDD,4DAsDC;;ADnLjB,MAAM,OAAO,gCAAiC,SAAQ,oBAAoB;IAC/D,OAAO,GAAG,KAAK,CAAC;IACf,KAAK,GAAG,IAAI,YAAY,EAAuC,CAAC;IAE1E,OAAO;IACP,SAAS,GAAuB,EAAE,CAAC;IAEnC,yCAAyC;IACzC,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,yCAAyC;IACzC,IAAI,SAAS,CAAC,KAAyB;QACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,gBAAgB,GAA8B,EAAE,CAAC;IAEjD,gDAAgD;IAChD,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IACD,gDAAgD;IAChD,IAAI,gBAAgB,CAAC,KAAgC;QACnD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,eAAe;IACf,WAAW,GAAG,CAAC,CAAC;IAEhB,2CAA2C;IAC3C,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,2CAA2C;IAC3C,IAAI,WAAW,CAAC,KAAK;QACnB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,QAAQ,GAAG,EAAE,CAAC;IACd,cAAc,GAAG,CAAC,CAAC;IAEnB,8CAA8C;IAC9C,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,8CAA8C;IAC9C,IAAI,cAAc,CAAC,KAAK;QACtB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IACD,YAAY,GAAG,KAAK,CAAC;IAErB,4CAA4C;IAC5C,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IACD,4CAA4C;IAC5C,IAAI,YAAY,CAAC,KAAK;QACpB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,WAAW;IACX,SAAS,GAAG,IAAI,CAAC;IACjB,UAAU,GAAG,EAAE,CAAC;IAEhB,0CAA0C;IAC1C,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,0CAA0C;IAC1C,IAAI,UAAU,CAAC,KAAK;QAClB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,SAAS,GAAG,EAAE,CAAC;IAEf,yCAAyC;IACzC,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,yCAAyC;IACzC,IAAI,SAAS,CAAC,KAAK;QACjB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,oBAAoB,GAAG,EAAE,CAAC;IAE1B,oDAAoD;IACpD,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IACD,oDAAoD;IACpD,IAAI,oBAAoB,CAAC,KAAK;QAC5B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,CAAC;IACD,mBAAmB,GAAG,KAAK,CAAC;IAE5B,mDAAmD;IACnD,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IACD,mDAAmD;IACnD,IAAI,mBAAmB,CAAC,KAAK;QAC3B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IACnC,CAAC;IACD,sBAAsB,GAAG,KAAK,CAAC;IAE/B,sDAAsD;IACtD,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IACD,sDAAsD;IACtD,IAAI,sBAAsB,CAAC,KAAK;QAC9B,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACtC,CAAC;IAGD,kBAAkB;IAClB,gBAAgB,GAA4B,IAAI,CAAC;IAEjD,gDAAgD;IAChD,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IACD,gDAAgD;IAChD,IAAI,gBAAgB,CAAC,KAA8B;QACjD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;IACD,eAAe,GAAmC,IAAI,CAAC;IAEvD,+CAA+C;IAC/C,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IACD,+CAA+C;IAC/C,IAAI,eAAe,CAAC,KAAqC;QACvD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IACD,aAAa,GAAqB,KAAK,CAAC;IAExC,6CAA6C;IAC7C,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACD,6CAA6C;IAC7C,IAAI,aAAa,CAAC,KAAuB;QACvC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,oBAAoB;IACpB,eAAe,GAAG,EAAE,CAAC;IAErB,+CAA+C;IAC/C,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IACD,+CAA+C;IAC/C,IAAI,eAAe,CAAC,KAAK;QACvB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IACD,sBAAsB,GAAG,EAAE,CAAC;IAE5B,sDAAsD;IACtD,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IACD,sDAAsD;IACtD,IAAI,sBAAsB,CAAC,KAAK;QAC9B,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,IAAY,QAAQ,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7C,WAAW,GAAoB,IAAI,CAAC;IACpC,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;IAC/B,aAAa,GAAG,IAAI,OAAO,EAAU,CAAC;IAEtC,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACpD,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1C,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAExC,KAAK,CAAC,QAAQ;QACZ,0BAA0B;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB,CAAC,SAAS,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE5D,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;YAElD,6BAA6B;YAC7B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAmB;gBAChD,WAAW,EAAE,IAAI,CAAC,eAAe;gBACjC,UAAU,EAAE,eAAe;gBAC3B,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;gBAEhC,wDAAwD;gBACxD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAEO,eAAe,GAAsB,SAAS,CAAC;IAChD,KAAK,CAAC,eAAe;QAC1B,0CAA0C;QAC1C,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QAErB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,wBAAwB;QACxB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,4BAA4B,IAAI,KAAK,CAAC,CAAC;QAC1E,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,wEAAwE,IAAI,CAAC,oBAAoB,IAAI,CAAC,CAAC;QACtH,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;YAC9B,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,UAAU,IAAI,MAAM,CAAC;YACtE,MAAM,UAAU,GAAG,6BAA6B,UAAU,+BAA+B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;YACpH,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9E,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,+CAA+C;IACxC,KAAK,CAAC,eAAe;QAC1B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAED,eAAe;QACb,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,+CAA+C;IAC/C,eAAe;QACb,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAA0B;QAC7C,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAEzB,kCAAkC;QAClC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,cAAc,CAAC,QAA0B;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,uEAAuE;YACvE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAA0B;gBACvD,UAAU,EAAE,uBAAuB;gBACnC,WAAW,EAAE,iBAAiB,UAAU,GAAG;gBAC3C,OAAO,EAAE,oBAAoB;gBAC7B,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1E,CAAC;IAED,oDAAoD;IACpD,oBAAoB;QAClB,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACrC,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,yCAAyC;IACzC,SAAS;QACP,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,6CAA6C;IAC7C,aAAa;QACX,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,6CAA6C;IAC7C,aAAa;QACX,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;IAC7D,CAAC;IAED,iDAAiD;IACjD,iBAAiB;QACf,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,6CAA6C;IAC7C,aAAa;QACX,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,oBAAoB;QAClB,4CAA4C;QAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,oDAAoD;IACpD,oBAAoB;QAClB,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACrC,CAAC;IAED,oBAAoB;QAClB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;YAAE,KAAK,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,oBAAoB;YAAE,KAAK,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;YAAE,KAAK,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oDAAoD;IACpD,oBAAoB;QAClB,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACrC,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAO,KAAK,CAAC;QAEzC,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC;QACvC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAuC;IACvC,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5D,OAAO,kBAAkB,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;QAChE,CAAC;QAED,OAAO,mBAAmB,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAC1D,CAAC;IAED,iDAAiD;IACjD,iBAAiB;QACf,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;QAE5B,+BAA+B;QAC/B,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACnD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,MAAM,GAA4B;oBACtC,QAAQ,EAAE,WAAW;oBACrB,MAAM,EAAE,aAAa;iBACtB,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO;QACT,CAAC;QAED,qCAAqC;QACrC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,MAAM,GAA4B;gBACtC,QAAQ,EAAE,IAAI,CAAC,gBAAgB;gBAC/B,MAAM,EAAE,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa;gBAC1E,eAAe,EAAE,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,eAAgB,CAAC,CAAC,CAAC,SAAS;aACrF,CAAC;YAEF,iCAAiC;YACjC,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,qBAAqB,IAAI,CAAC,eAAgB,CAAC,aAAa,GAAG,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC,CAAC;gBACnM,IAAI,CAAC,SAAS;oBAAE,OAAO;YACzB,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAmB,eAAe,CAAC,CAAC;YACxF,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;YACrC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC;YAE3D,8BAA8B;YAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;gBAClC,UAAU,EAAE,oBAAoB;gBAChC,WAAW,EAAE,oBAAoB;gBACjC,OAAO,EAAE,CAAC;gBACV,iBAAiB,EAAE,IAAI;aACxB,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,CAAC;YAED,yDAAyD;YACzD,qEAAqE;YACrE,MAAM,KAAK,GAAI,IAAI,CAAC,QAAQ,CAAC,WAAmB,EAAE,aAAa,CAAC;YAChE,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC;YACjC,CAAC;YAED,QAAQ,CAAC,QAAQ,GAAG,+BAA+B,CAAC;YAEpD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAC/C,aAAa,QAAQ,CAAC,IAAI,wBAAwB,EAClD,SAAS,EACT,IAAI,CACL,CAAC;gBACF,OAAO,QAAQ,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvF,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAC/C,2BAA2B,EAC3B,OAAO,CACR,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAC/C,yBAAyB,EACzB,OAAO,CACR,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,0FAA0F;IAC1F,kBAAkB,CAAC,QAA0B;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,uFAAuF;IACvF,iBAAiB,CAAC,OAAgC;QAChD,OAAO,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;6SAvjBU,gCAAgC,yBAAhC,gCAAgC;6DAAhC,gCAAgC;YCtB7C,oCAAkH;YAAnD,gHAAS,YAAQ,IAAC;YAKrE,AAFJ,AAFJ,8BAAwC,aAEgD,aAEtD;YACtB,gGAA+B;YAG/B,iCAE2D;YAF1C,6GAAS,uBAAmB,IAAC;YAG1C,uBAAkC;YAClC,mGAA4D;YAIpE,AADI,iBAAS,EACP;YAEN,mGAA+B;YAoCnC,iBAAM;YAME,AADJ,AAFJ,8BAA0B,cAEO,kBAGS;YAD9B,8GAAS,kBAAc,IAAC;YAExB,yBAAwC;YAAC,2BAC7C;YAAA,iBAAS;YACT,iCAAwB;YACpB,aAEJ;YAAA,iBAAO;YACP,mCAE8B;YAD1B,8GAAS,cAAU,IAAC;YAEpB,uBAAK;YAAA,yBAAyC;YAEtD,AADI,iBAAS,EACP;YAGN,gCAA4B;YAUxB,AAJA,AALA,qGAAiB,0FAKkB,oEAI5B;YAyBX,iBAAM;YAIF,AADJ,gCAA4B,eACH;YAAA,uCAAsB;YAAA,iBAAM;YAEjD,mCAGmB;YAFnB,8GAAS,qBAAiB,IAAC;YAG3B,yBAAgC;YAAC,sCACjC;YAAA,iBAAS;YAET,qGAA2B;YAYnC,AADI,iBAAM,EACJ;YAGN,qGAAwB;YA+D5B,iBAAM;YAGF,AADJ,0CAAmB,kBAIa;YADxB,8GAAS,UAAM,IAAC;YAEhB,yBAAgC;YAChC,aACJ;YAAA,iBAAS;YACT,mCAAoC;YAAnB,8GAAS,YAAQ,IAAC;YAAC,uBAAM;YAElD,AADI,AAD8C,iBAAS,EACnC,EACZ;;YAxNqF,AAAf,AAAvE,8BAAgB,eAAqE,iBAAiB;YAG/E,eAAyD;YAAzD,sEAAyD;YAG3E,eAEC;YAFD,sDAEC;YAGO,cAAkD;YAAlD,+DAAkD;YAEtD,eAEC;YAFD,uFAEC;YAIT,cAmCC;YAnCD,sDAmCC;YASO,eAA6B;YAA7B,+CAA6B;YAI7B,eAEJ;YAFI,6HAEJ;YAGI,cAAyB;YAAzB,2CAAyB;YAO7B,eAiCC;YAjCD,2EAiCC;YAcD,eAUC;YAVD,mDAUC;YAKT,cA8DC;YA9DD,gDA8DC;YAKG,eAAiF;YAEjF,AAFA,uGAAiF,4BAE1D;YAEvB,eACJ;YADI,wDACJ;;;iFD/LK,gCAAgC;cAN5C,SAAS;6BACI,KAAK,YACP,+BAA+B;;kBAKxC,KAAK;;kBACL,MAAM;;kFAFI,gCAAgC","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { RunView, UserInfo } from '@memberjunction/core';\nimport { MJArtifactEntity, MJArtifactVersionEntity } from '@memberjunction/core-entities';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { MJConfirmService } from '@memberjunction/ng-ui-components';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nexport interface ArtifactSelectionResult {\n artifact: MJArtifactEntity;\n action: 'new-version' | 'update-version';\n versionToUpdate?: MJArtifactVersionEntity;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-selection-dialog',\n templateUrl: './artifact-selection-dialog.component.html',\n styleUrl: './artifact-selection-dialog.component.css'\n})\nexport class ArtifactSelectionDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactSelectionResult | undefined>();\n\n // Data\n Artifacts: MJArtifactEntity[] = [];\n\n /** @deprecated Use {@link Artifacts}. */\n get artifacts(): MJArtifactEntity[] {\n return this.Artifacts;\n }\n /** @deprecated Use {@link Artifacts}. */\n set artifacts(value: MJArtifactEntity[]) {\n this.Artifacts = value;\n }\n ArtifactVersions: MJArtifactVersionEntity[] = [];\n\n /** @deprecated Use {@link ArtifactVersions}. */\n get artifactVersions(): MJArtifactVersionEntity[] {\n return this.ArtifactVersions;\n }\n /** @deprecated Use {@link ArtifactVersions}. */\n set artifactVersions(value: MJArtifactVersionEntity[]) {\n this.ArtifactVersions = value;\n }\n\n // Paging State\n CurrentPage = 0;\n\n /** @deprecated Use {@link CurrentPage}. */\n get currentPage() {\n return this.CurrentPage;\n }\n /** @deprecated Use {@link CurrentPage}. */\n set currentPage(value) {\n this.CurrentPage = value;\n }\n pageSize = 25;\n TotalArtifacts = 0;\n\n /** @deprecated Use {@link TotalArtifacts}. */\n get totalArtifacts() {\n return this.TotalArtifacts;\n }\n /** @deprecated Use {@link TotalArtifacts}. */\n set totalArtifacts(value) {\n this.TotalArtifacts = value;\n }\n HasMorePages = false;\n\n /** @deprecated Use {@link HasMorePages}. */\n get hasMorePages() {\n return this.HasMorePages;\n }\n /** @deprecated Use {@link HasMorePages}. */\n set hasMorePages(value) {\n this.HasMorePages = value;\n }\n\n // UI State\n isLoading = true;\n SearchTerm = '';\n\n /** @deprecated Use {@link SearchTerm}. */\n get searchTerm() {\n return this.SearchTerm;\n }\n /** @deprecated Use {@link SearchTerm}. */\n set searchTerm(value) {\n this.SearchTerm = value;\n }\n UserEmail = '';\n\n /** @deprecated Use {@link UserEmail}. */\n get userEmail() {\n return this.UserEmail;\n }\n /** @deprecated Use {@link UserEmail}. */\n set userEmail(value) {\n this.UserEmail = value;\n }\n SelectedArtifactType = '';\n\n /** @deprecated Use {@link SelectedArtifactType}. */\n get selectedArtifactType() {\n return this.SelectedArtifactType;\n }\n /** @deprecated Use {@link SelectedArtifactType}. */\n set selectedArtifactType(value) {\n this.SelectedArtifactType = value;\n }\n ShowNewArtifactForm = false;\n\n /** @deprecated Use {@link ShowNewArtifactForm}. */\n get showNewArtifactForm() {\n return this.ShowNewArtifactForm;\n }\n /** @deprecated Use {@link ShowNewArtifactForm}. */\n set showNewArtifactForm(value) {\n this.ShowNewArtifactForm = value;\n }\n IsFilterPanelCollapsed = false;\n\n /** @deprecated Use {@link IsFilterPanelCollapsed}. */\n get isFilterPanelCollapsed() {\n return this.IsFilterPanelCollapsed;\n }\n /** @deprecated Use {@link IsFilterPanelCollapsed}. */\n set isFilterPanelCollapsed(value) {\n this.IsFilterPanelCollapsed = value;\n }\n\n\n // Selection State\n SelectedArtifact: MJArtifactEntity | null = null;\n\n /** @deprecated Use {@link SelectedArtifact}. */\n get selectedArtifact(): MJArtifactEntity | null {\n return this.SelectedArtifact;\n }\n /** @deprecated Use {@link SelectedArtifact}. */\n set selectedArtifact(value: MJArtifactEntity | null) {\n this.SelectedArtifact = value;\n }\n SelectedVersion: MJArtifactVersionEntity | null = null;\n\n /** @deprecated Use {@link SelectedVersion}. */\n get selectedVersion(): MJArtifactVersionEntity | null {\n return this.SelectedVersion;\n }\n /** @deprecated Use {@link SelectedVersion}. */\n set selectedVersion(value: MJArtifactVersionEntity | null) {\n this.SelectedVersion = value;\n }\n VersionAction: 'new' | 'update' = 'new';\n\n /** @deprecated Use {@link VersionAction}. */\n get versionAction(): 'new' | 'update' {\n return this.VersionAction;\n }\n /** @deprecated Use {@link VersionAction}. */\n set versionAction(value: 'new' | 'update') {\n this.VersionAction = value;\n }\n \n // New Artifact Form\n NewArtifactName = '';\n\n /** @deprecated Use {@link NewArtifactName}. */\n get newArtifactName() {\n return this.NewArtifactName;\n }\n /** @deprecated Use {@link NewArtifactName}. */\n set newArtifactName(value) {\n this.NewArtifactName = value;\n }\n NewArtifactDescription = '';\n\n /** @deprecated Use {@link NewArtifactDescription}. */\n get newArtifactDescription() {\n return this.NewArtifactDescription;\n }\n /** @deprecated Use {@link NewArtifactDescription}. */\n set newArtifactDescription(value) {\n this.NewArtifactDescription = value;\n }\n \n private get metadata() { return this.ProviderToUse; }\n private currentUser: UserInfo | null = null;\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n private notificationService = inject(MJNotificationService);\n private confirmService = inject(MJConfirmService);\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 this.FilterArtifacts();\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\n // Calculate StartRow for server-side paging\n const startRow = this.CurrentPage * this.pageSize;\n\n // Load artifacts with paging\n const result = await rv.RunView<MJArtifactEntity>({\n ExtraFilter: this._artifactFilter,\n EntityName: 'MJ: Artifacts',\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\n // Calculate total pages using TotalRowCount from server\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 /** @deprecated Use {@link LoadArtifacts}. */\n async loadArtifacts() {\n return this.LoadArtifacts();\n }\n\n private _artifactFilter: string | undefined= undefined;\n public async FilterArtifacts() {\n // Reset to first page when filters change\n this.CurrentPage = 0;\n \n const filters: string[] = [];\n \n // Filter by search term\n if (this.SearchTerm?.trim()) {\n const term = this.SearchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n \n // Filter by artifact type\n if (this.SelectedArtifactType) {\n filters.push(`ArtifactTypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.SelectedArtifactType}')`);\n }\n \n // Filter by user email if provided\n if (this.UserEmail?.trim()) {\n const md = this.ProviderToUse;\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n const userFilter = `UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.UserEmail.trim()}%')`;\n filters.push(userFilter);\n }\n \n // Combine all filters\n this._artifactFilter = filters.length > 0 ? filters.join(' AND ') : undefined;\n\n await this.LoadArtifacts();\n }\n\n /** @deprecated Use {@link FilterArtifacts}. */\n public async filterArtifacts() {\n return this.FilterArtifacts();\n }\n\n SelectCreateNew() {\n this.ShowNewArtifactForm = true;\n this.SelectedArtifact = null;\n this.SelectedVersion = null;\n }\n\n /** @deprecated Use {@link SelectCreateNew}. */\n selectCreateNew() {\n return this.SelectCreateNew();\n }\n\n async SelectArtifact(artifact: MJArtifactEntity) {\n this.SelectedArtifact = artifact;\n this.ShowNewArtifactForm = false;\n this.VersionAction = 'new';\n this.SelectedVersion = null;\n this.cdr.detectChanges();\n\n // Load versions for this artifact\n await this.LoadVersions(artifact.ID);\n }\n\n /** @deprecated Use {@link SelectArtifact}. */\n async selectArtifact(artifact: MJArtifactEntity) {\n return this.SelectArtifact(artifact);\n }\n\n async LoadVersions(artifactId: string) {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n // conversation-scope: artifact-wide read, no conversation path applies\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 } catch (error) {\n console.error('Error loading versions:', error);\n this.ArtifactVersions = [];\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadVersions}. */\n async loadVersions(artifactId: string) {\n return this.LoadVersions(artifactId);\n }\n\n GetNextVersionNumber(): number {\n if (this.ArtifactVersions.length === 0) return 1;\n return Math.max(...this.ArtifactVersions.map(v => v.VersionNumber)) + 1;\n }\n\n /** @deprecated Use {@link GetNextVersionNumber}. */\n getNextVersionNumber(): number {\n return this.GetNextVersionNumber();\n }\n\n // Paging methods\n async NextPage() {\n if (this.HasMorePages) {\n this.CurrentPage++;\n await this.LoadArtifacts();\n }\n }\n\n /** @deprecated Use {@link NextPage}. */\n async nextPage() {\n return this.NextPage();\n }\n\n async PreviousPage() {\n if (this.CurrentPage > 0) {\n this.CurrentPage--;\n await this.LoadArtifacts();\n }\n }\n\n /** @deprecated Use {@link PreviousPage}. */\n async previousPage() {\n return this.PreviousPage();\n }\n\n CanGoNext(): boolean {\n return this.HasMorePages;\n }\n\n /** @deprecated Use {@link CanGoNext}. */\n canGoNext(): boolean {\n return this.CanGoNext();\n }\n\n CanGoPrevious(): boolean {\n return this.CurrentPage > 0;\n }\n\n /** @deprecated Use {@link CanGoPrevious}. */\n canGoPrevious(): boolean {\n return this.CanGoPrevious();\n }\n\n GetTotalPages(): number {\n return Math.ceil(this.TotalArtifacts / this.pageSize);\n }\n\n /** @deprecated Use {@link GetTotalPages}. */\n getTotalPages(): number {\n return this.GetTotalPages();\n }\n\n ToggleFilterPanel() {\n this.IsFilterPanelCollapsed = !this.IsFilterPanelCollapsed;\n }\n\n /** @deprecated Use {@link ToggleFilterPanel}. */\n toggleFilterPanel() {\n return this.ToggleFilterPanel();\n }\n\n OnSearchInput() {\n this.searchSubject.next(this.SearchTerm);\n }\n\n /** @deprecated Use {@link OnSearchInput}. */\n onSearchInput() {\n return this.OnSearchInput();\n }\n\n OnArtifactTypeChange() {\n // Clear selected artifact when type changes\n this.SelectedArtifact = null;\n this.SelectedVersion = null;\n this.ArtifactVersions = [];\n this.FilterArtifacts();\n }\n\n /** @deprecated Use {@link OnArtifactTypeChange}. */\n onArtifactTypeChange() {\n return this.OnArtifactTypeChange();\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 /** @deprecated Use {@link GetActiveFilterCount}. */\n getActiveFilterCount(): number {\n return this.GetActiveFilterCount();\n }\n\n CanSave(): boolean {\n if (this.ShowNewArtifactForm) {\n return this.NewArtifactName.trim().length > 0;\n }\n \n if (!this.SelectedArtifact) return false;\n \n if (this.VersionAction === 'update') {\n return this.SelectedVersion !== null;\n }\n \n return true;\n }\n\n /** @deprecated Use {@link CanSave}. */\n canSave(): boolean {\n return this.CanSave();\n }\n\n GetSaveButtonText(): string {\n if (this.ShowNewArtifactForm) {\n return 'Create & Save';\n }\n\n if (this.VersionAction === 'update' && this.SelectedVersion) {\n return `Update Version ${this.SelectedVersion.VersionNumber}`;\n }\n\n return `Save as Version ${this.GetNextVersionNumber()}`;\n }\n\n /** @deprecated Use {@link GetSaveButtonText}. */\n getSaveButtonText(): string {\n return this.GetSaveButtonText();\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n async save() {\n if (!this.CanSave()) return;\n \n // Handle new artifact creation\n if (this.ShowNewArtifactForm) {\n const newArtifact = await this.createNewArtifact();\n if (newArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: newArtifact,\n action: 'new-version'\n };\n this.Close.emit(result);\n }\n return;\n }\n \n // Handle existing artifact selection\n if (this.SelectedArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: this.SelectedArtifact,\n action: this.VersionAction === 'update' ? 'update-version' : 'new-version',\n versionToUpdate: this.VersionAction === 'update' ? this.SelectedVersion! : undefined\n };\n \n // If updating, show confirmation\n if (this.VersionAction === 'update') {\n const confirmed = await this.confirmService.Confirm({ title: 'Overwrite version', message: `Overwrite version ${this.SelectedVersion!.VersionNumber}?`, detail: 'This action cannot be undone.' });\n if (!confirmed) return;\n }\n\n this.Close.emit(result);\n }\n }\n\n private async createNewArtifact(): Promise<MJArtifactEntity | null> {\n try {\n const artifact = await this.metadata.GetEntityObject<MJArtifactEntity>('MJ: Artifacts');\n artifact.Name = this.NewArtifactName;\n artifact.Description = this.NewArtifactDescription || null;\n\n // Get Component artifact type\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const typeResult = await rv.RunView({\n EntityName: 'MJ: Artifact Types',\n ExtraFilter: `Name = 'Component'`,\n MaxRows: 1,\n SkipTotalRowCount: true\n });\n\n if (typeResult.Success && typeResult.Results?.length > 0) {\n artifact.TypeID = typeResult.Results[0].ID;\n }\n\n // Set default environment if available from current user\n // Environment ID is optional - will be set by server if not provided\n const envId = (this.metadata.CurrentUser as any)?.EnvironmentID;\n if (envId) {\n artifact.EnvironmentID = envId;\n }\n\n artifact.Comments = 'Created from Component Studio';\n\n const saveResult = await artifact.Save();\n if (saveResult) {\n this.notificationService.CreateSimpleNotification(\n `Artifact \"${artifact.Name}\" created successfully`,\n 'success',\n 3000\n );\n return artifact;\n } else {\n console.error('Failed to create artifact - Full LatestResult:', artifact.LatestResult);\n this.notificationService.CreateSimpleNotification(\n 'Failed to create artifact',\n 'error'\n );\n return null;\n }\n } catch (error) {\n console.error('Error creating artifact:', error);\n this.notificationService.CreateSimpleNotification(\n 'Error creating artifact',\n 'error'\n );\n return null;\n }\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 version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.SelectedVersion?.ID, version.ID);\n }\n}","<mj-dialog [Visible]=\"true\" Title=\"Save Component to Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-selection-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <!-- Panel Header -->\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=\"\">All Types</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 <!-- 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 items)\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 <!-- Existing Artifacts -->\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 <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-inbox\"\n Title=\"No artifacts found\" />\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 \n <!-- Create New Artifact Section (at bottom) -->\n <div class=\"create-section\">\n <div class=\"divider\">OR CREATE NEW ARTIFACT</div>\n \n <button mjButton\n (click)=\"selectCreateNew()\"\n variant=\"primary\"\n class=\"create-btn\">\n <i class=\"fa-solid fa-plus\"></i> Create New Artifact\n </button>\n \n @if (showNewArtifactForm) {\n <div class=\"new-artifact-form\">\n <input class=\"mj-input\"\n [(ngModel)]=\"newArtifactName\"\n placeholder=\"Artifact name...\">\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"newArtifactDescription\"\n placeholder=\"Description (optional)...\">\n </textarea>\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version Panel (only show when artifact selected) -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Version</h4>\n </div>\n \n @if (artifactVersions.length > 0) {\n <div class=\"version-content\">\n <div class=\"version-actions\">\n <label>Action</label>\n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"new\"\n [(ngModel)]=\"versionAction\"\n (change)=\"selectedVersion = null\">\n <span>Create New Version (v{{ getNextVersionNumber() }})</span>\n </label>\n \n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"update\"\n [(ngModel)]=\"versionAction\">\n <span>Update Existing Version</span>\n </label>\n </div>\n \n @if (versionAction === 'update') {\n <div class=\"version-selection\">\n <label>Select Version</label>\n @for (version of artifactVersions; track version.ID) {\n <label class=\"version-item\" \n [class.selected]=\"IsVersionSelected(version)\">\n <input type=\"radio\"\n name=\"selectedVersion\"\n [value]=\"version\"\n [(ngModel)]=\"selectedVersion\">\n <div class=\"version-info\">\n <div class=\"version-number\">Version {{ version.VersionNumber }}</div>\n <div class=\"version-date\">{{ version.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </label>\n }\n </div>\n \n @if (selectedVersion) {\n <div class=\"warning\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>Warning: This will overwrite version {{ selectedVersion.VersionNumber }}</span>\n </div>\n }\n }\n </div>\n } @else {\n <div class=\"info-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available for this artifact.</p>\n <p>A new version will be created.</p>\n </div>\n }\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n [variant]=\"versionAction === 'update' && selectedVersion ? 'warning' : 'primary'\"\n (click)=\"save()\"\n [disabled]=\"!canSave()\">\n <i class=\"fa-solid fa-save\"></i>\n {{ getSaveButtonText() }}\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"component-version.service.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/services/component-version.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAO5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;AAE/E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBACa,uBAAuB;IA+BtB,OAAO,CAAC,YAAY;IA5BhC,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,wBAAwB,CAAuB;IACvD,OAAO,CAAC,qBAAqB,CAAuB;IAEpD,OAAO,CAAC,SAAS,CAAkC;IAEnD,sGAAsG;IACtG,IAAW,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAElD;IAED,IAAW,QAAQ,IAAI,iBAAiB,CAEvC;IAED,OAAO,KAAK,QAAQ,GAEnB;IAED,IAAI,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAAoC;IAC1E,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAsC;IAEhF,IAAI,oBAAoB,IAAI,MAAM,CAAuC;IAEzE,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAiC;gBAExD,YAAY,EAAE,2BAA2B;IAM7D;;;;;OAKG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCrD;;;;OAIG;IACG,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoC9D;;;;OAIG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAM5E;;;;;OAKG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BzD;;;;;OAKG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAYxG;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;;OAGG;YACW,oBAAoB;IAQlC;;OAEG;YACW,cAAc;IAmC5B;;;OAGG;YACW,8BAA8B;IAsB5C;;;OAGG;YACW,qBAAqB;IA6CnC;;OAEG;YACW,wBAAwB;IAkBtC;;OAEG;YACW,aAAa;IAsB3B;;OAEG;YACW,iBAAiB;IAa/B;;OAEG;YACW,uBAAuB;IAgBrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;YACW,mBAAmB;IAiBjC;;OAEG;IACH,OAAO,CAAC,wBAAwB;yCA3brB,uBAAuB;6CAAvB,uBAAuB;CAmcnC"}
1
+ {"version":3,"file":"component-version.service.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/services/component-version.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAO5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;AAE/E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBACa,uBAAuB;IA+BtB,OAAO,CAAC,YAAY;IA5BhC,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,wBAAwB,CAAuB;IACvD,OAAO,CAAC,qBAAqB,CAAuB;IAEpD,OAAO,CAAC,SAAS,CAAkC;IAEnD,sGAAsG;IACtG,IAAW,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAElD;IAED,IAAW,QAAQ,IAAI,iBAAiB,CAEvC;IAED,OAAO,KAAK,QAAQ,GAEnB;IAED,IAAI,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAAoC;IAC1E,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAsC;IAEhF,IAAI,oBAAoB,IAAI,MAAM,CAAuC;IAEzE,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAiC;gBAExD,YAAY,EAAE,2BAA2B;IAM7D;;;;;OAKG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCrD;;;;OAIG;IACG,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoC9D;;;;OAIG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAM5E;;;;;OAKG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BzD;;;;;OAKG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAYxG;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;;OAGG;YACW,oBAAoB;IAQlC;;OAEG;YACW,cAAc;IAmC5B;;;OAGG;YACW,8BAA8B;IAsB5C;;;OAGG;YACW,qBAAqB;IA8CnC;;OAEG;YACW,wBAAwB;IAmBtC;;OAEG;YACW,aAAa;IAsB3B;;OAEG;YACW,iBAAiB;IAa/B;;OAEG;YACW,uBAAuB;IAiBrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;YACW,mBAAmB;IAiBjC;;OAEG;IACH,OAAO,CAAC,wBAAwB;yCA9brB,uBAAuB;6CAAvB,uBAAuB;CAscnC"}
@@ -260,6 +260,7 @@ export class ComponentVersionService {
260
260
  ExtraFilter: `UserID='${currentUser.ID}' AND Name='Component Studio'`,
261
261
  Fields: ['ID'],
262
262
  MaxRows: 1,
263
+ SkipTotalRowCount: true,
263
264
  ResultType: 'simple'
264
265
  });
265
266
  if (result.Success && result.Results.length > 0) {
@@ -293,6 +294,7 @@ export class ComponentVersionService {
293
294
  Fields: ['Version'],
294
295
  OrderBy: 'Version DESC',
295
296
  MaxRows: 1,
297
+ SkipTotalRowCount: true,
296
298
  ResultType: 'simple'
297
299
  });
298
300
  if (result.Success && result.Results.length > 0) {
@@ -341,6 +343,7 @@ export class ComponentVersionService {
341
343
  ExtraFilter: `ConversationArtifactID='${artifactId}'`,
342
344
  OrderBy: 'Version DESC',
343
345
  MaxRows: 1,
346
+ SkipTotalRowCount: true,
344
347
  ResultType: 'entity_object'
345
348
  });
346
349
  if (result.Success && result.Results.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"component-version.service.js","sourceRoot":"","sources":["../../../src/ComponentStudio/services/component-version.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;;;AAoB5E;;;GAGG;AAEH,MAAM,OAAO,uBAAuB;IA+Bd;IA7BpB,yBAAyB;IACjB,kBAAkB,GAAkB,IAAI,CAAC;IACzC,qBAAqB,GAAG,CAAC,CAAC;IAC1B,eAAe,GAA0B,EAAE,CAAC;IAC5C,wBAAwB,GAAkB,IAAI,CAAC;IAC/C,qBAAqB,GAAkB,IAAI,CAAC;IAE5C,SAAS,GAA6B,IAAI,CAAC;IAEnD,sGAAsG;IACtG,IAAW,QAAQ,CAAC,KAA+B;QAC/C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAC/C,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,iBAAiB,KAAoB,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC1E,IAAI,iBAAiB,CAAC,KAAoB,IAAI,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC;IAEhF,IAAI,oBAAoB,KAAa,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEzE,IAAI,cAAc,KAA4B,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAE5E,YAAoB,YAAyC;QAAzC,iBAAY,GAAZ,YAAY,CAA6B;IAAG,CAAC;IAEjE,+DAA+D;IAC/D,aAAa;IACb,+DAA+D;IAE/D;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,OAAgB;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;gBAC7E,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;gBAChF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;YACpE,MAAM,cAAc,GAAG,OAAO,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YAE9E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YACtF,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;gBACrC,IAAI,CAAC,qBAAqB,GAAG,WAAW,CAAC;gBACzC,6BAA6B;gBAC7B,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAC,OAAgB;QACzC,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,qBAAqB,KAAK,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBACxE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBACrE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAClF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;gBAChF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACtD,IAAI,OAAO,EAAE,CAAC;gBACZ,aAAa,CAAC,QAAQ,GAAG,OAAO,CAAC;YACnC,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC/E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,KAAK,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,SAAS,CAAC,CAAC;gBAC5E,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;gBAC1E,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,qBAAqB,GAAG,aAAa,CAAC,OAAO,CAAC;YACpD,MAAM,cAAc,GAAG,kBAAkB,qBAAqB,EAAE,CAAC;YAEjE,wDAAwD;YACxD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEnC,oEAAoE;YACpE,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;YAC1E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,UAAkB;QACzD,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;SACnC,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;YAC/B,KAAK,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;SAC/B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,oEAAoE;IACtE,CAAC;IAED,+DAA+D;IAC/D,+BAA+B;IAC/B,+DAA+D;IAE/D;;;OAGG;IACK,KAAK,CAAC,oBAAoB,CAAC,IAAmB;QACpD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,IAAmB;QAC9C,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC;YACnE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;gBACvF,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;gBAC9F,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAA+B,4BAA4B,CAAC,CAAC;YACjH,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,oBAAoB,CAAC;YAClD,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;YAChD,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;YACzC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;YACzC,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC;YAE/B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,EAAE,CAAC;gBACtC,OAAO,QAAQ,CAAC,EAAE,CAAC;YACrB,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,8BAA8B;QAC1C,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,wBAAwB,CAAC;QACvC,CAAC;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAiB;YAC9C,UAAU,EAAE,oBAAoB;YAChC,WAAW,EAAE,kBAAkB;YAC/B,MAAM,EAAE,CAAC,IAAI,CAAC;YACd,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,wBAAwB,CAAC;QACvC,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,qBAAqB;QACjC,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mEAAmE;QACnE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAiB;YAC9C,UAAU,EAAE,mBAAmB;YAC/B,WAAW,EAAE,WAAW,WAAW,CAAC,EAAE,+BAA+B;YACrE,MAAM,EAAE,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,iDAAiD;QACjD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAuB,mBAAmB,CAAC,CAAC;QACpG,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC;QACrC,YAAY,CAAC,IAAI,GAAG,kBAAkB,CAAC;QACvC,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC;QAE3B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+DAA+D;IAC/D,8BAA8B;IAC9B,+DAA+D;IAE/D;;OAEG;IACK,KAAK,CAAC,wBAAwB,CAAC,UAAkB;QACvD,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAsB;YACnD,UAAU,EAAE,oCAAoC;YAChD,WAAW,EAAE,2BAA2B,UAAU,GAAG;YACrD,MAAM,EAAE,CAAC,SAAS,CAAC;YACnB,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CACzB,UAAkB,EAClB,aAAqB,EACrB,IAAmB,EACnB,OAAe;QAEf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CACjD,oCAAoC,CACrC,CAAC;YACF,OAAO,CAAC,sBAAsB,GAAG,UAAU,CAAC;YAC5C,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC;YAChC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;YAE3B,OAAO,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,KAAK,CAAC,CAAC;YAChF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QAC/C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAChD,oCAAoC,CACrC,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wDAAwD,EAAE,KAAK,CAAC,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CAAC,UAAkB;QACtD,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAsC;YACnE,UAAU,EAAE,oCAAoC;YAChD,WAAW,EAAE,2BAA2B,UAAU,GAAG;YACrD,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,eAAe;SAC5B,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,aAAkD;QAC5E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;YACtC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2DAA2D,EAAE,KAAK,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,2BAA2B;IAC3B,+DAA+D;IAE/D;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAClD,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAsC;YACnE,UAAU,EAAE,oCAAoC;YAChD,WAAW,EAAE,2BAA2B,UAAU,GAAG;YACrD,OAAO,EAAE,cAAc;YACvB,UAAU,EAAE,eAAe;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YAC/F,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,OAA4C;QAC3E,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,aAAa,EAAE,OAAO,CAAC,OAAO;YAC9B,SAAS,EAAE,OAAO,CAAC,cAAc;YACjC,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;SAChC,CAAC;IACJ,CAAC;iHAlcU,uBAAuB;gEAAvB,uBAAuB,WAAvB,uBAAuB;;iFAAvB,uBAAuB;cADnC,UAAU","sourcesContent":["import { Injectable } from '@angular/core';\nimport { RunView, Metadata, IMetadataProvider } from '@memberjunction/core';\nimport {\n MJConversationEntity,\n MJConversationArtifactEntity,\n MJConversationArtifactVersionEntity\n} from '@memberjunction/core-entities';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\nimport { ComponentStudioStateService } from './component-studio-state.service';\n\n/**\n * Represents a single entry in the version history for a component artifact.\n */\nexport interface VersionHistoryEntry {\n ID: string;\n VersionNumber: number;\n Timestamp: Date;\n Comment: string;\n AuthorName?: string;\n}\n\n/**\n * Service that handles explicit, user-triggered versioning for Component Studio.\n * Follows a git-commit style model where each save creates a new immutable version.\n */\n@Injectable()\nexport class ComponentVersionService {\n\n // --- State Tracking ---\n private _currentArtifactID: string | null = null;\n private _currentVersionNumber = 0;\n private _versionHistory: VersionHistoryEntry[] = [];\n private _componentArtifactTypeID: string | null = null;\n private _cachedConversationID: string | null = null;\n\n private _provider: IMetadataProvider | null = null;\n\n /** Set the metadata provider this service should use. Components should call this after injection. */\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n }\n\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n\n private get metadata(): IMetadataProvider {\n return this.Provider;\n }\n\n get CurrentArtifactID(): string | null { return this._currentArtifactID; }\n set CurrentArtifactID(value: string | null) { this._currentArtifactID = value; }\n\n get CurrentVersionNumber(): number { return this._currentVersionNumber; }\n\n get VersionHistory(): VersionHistoryEntry[] { return this._versionHistory; }\n\n constructor(private stateService: ComponentStudioStateService) {}\n\n // ============================================================\n // PUBLIC API\n // ============================================================\n\n /**\n * Save current working state as a new version.\n * Creates the ConversationArtifact if one does not yet exist for this component.\n * @param comment - optional user comment describing the version\n * @returns true if the version was saved successfully\n */\n async SaveVersion(comment?: string): Promise<boolean> {\n try {\n const spec = this.stateService.GetCurrentSpec();\n if (!spec) {\n console.error('ComponentVersionService: No current spec available to save.');\n return false;\n }\n\n const artifactId = await this.ensureArtifactExists(spec);\n if (!artifactId) {\n console.error('ComponentVersionService: Failed to create or resolve artifact.');\n return false;\n }\n\n const nextVersion = await this.resolveNextVersionNumber(artifactId);\n const versionComment = comment || `Auto-saved at ${new Date().toISOString()}`;\n\n const saved = await this.createVersion(artifactId, nextVersion, spec, versionComment);\n if (saved) {\n this._currentArtifactID = artifactId;\n this._currentVersionNumber = nextVersion;\n // Refresh the cached history\n this._versionHistory = await this.fetchVersionHistory(artifactId);\n return true;\n }\n\n return false;\n } catch (error) {\n console.error('ComponentVersionService: Error saving version:', error);\n return false;\n }\n }\n\n /**\n * Update the current (latest) version in place instead of creating a new one.\n * @param comment - optional updated comment\n * @returns true if the version was updated successfully\n */\n async UpdateCurrentVersion(comment?: string): Promise<boolean> {\n try {\n if (!this._currentArtifactID || this._currentVersionNumber === 0) {\n console.error('ComponentVersionService: No current version to update.');\n return false;\n }\n\n const spec = this.stateService.GetCurrentSpec();\n if (!spec) {\n console.error('ComponentVersionService: No current spec available.');\n return false;\n }\n\n const latestVersion = await this.findLatestVersionEntity(this._currentArtifactID);\n if (!latestVersion) {\n console.error('ComponentVersionService: Could not find latest version entity.');\n return false;\n }\n\n latestVersion.Content = JSON.stringify(spec, null, 2);\n if (comment) {\n latestVersion.Comments = comment;\n }\n\n const saved = await latestVersion.Save();\n if (saved) {\n this._versionHistory = await this.fetchVersionHistory(this._currentArtifactID);\n return true;\n }\n return false;\n } catch (error) {\n console.error('ComponentVersionService: Error updating current version:', error);\n return false;\n }\n }\n\n /**\n * Load all versions for a given artifact, ordered by version number descending.\n * @param artifactId - the ConversationArtifact ID to load history for\n * @returns array of version history entries, newest first\n */\n async LoadVersionHistory(artifactId: string): Promise<VersionHistoryEntry[]> {\n const history = await this.fetchVersionHistory(artifactId);\n this._versionHistory = history;\n return history;\n }\n\n /**\n * Restore a previous version by creating a NEW version with the old content.\n * This preserves the full history chain rather than overwriting.\n * @param versionId - the ConversationArtifactVersion ID to restore\n * @returns true if the version was restored successfully\n */\n async RestoreVersion(versionId: string): Promise<boolean> {\n try {\n const versionEntity = await this.loadVersionEntity(versionId);\n if (!versionEntity) {\n console.error('ComponentVersionService: Could not load version', versionId);\n return false;\n }\n\n const spec = this.parseVersionContent(versionEntity);\n if (!spec) {\n console.error('ComponentVersionService: Could not parse version content');\n return false;\n }\n\n const restoredVersionNumber = versionEntity.Version;\n const restoreComment = `Restored from v${restoredVersionNumber}`;\n\n // Update the state with the restored spec before saving\n this.stateService.UpdateSpec(spec);\n\n // SaveVersion will pick up the restored spec from the state service\n return await this.SaveVersion(restoreComment);\n } catch (error) {\n console.error('ComponentVersionService: Error restoring version:', error);\n return false;\n }\n }\n\n /**\n * Load two versions and return their content for diffing.\n * @param versionId1 - the first version ID (typically the older one)\n * @param versionId2 - the second version ID (typically the newer one)\n * @returns an object with the before and after content strings\n */\n async GetVersionDiff(versionId1: string, versionId2: string): Promise<{ before: string; after: string }> {\n const [version1, version2] = await Promise.all([\n this.loadVersionEntity(versionId1),\n this.loadVersionEntity(versionId2)\n ]);\n\n return {\n before: version1?.Content || '',\n after: version2?.Content || ''\n };\n }\n\n /**\n * Reset the service state, typically when switching components.\n */\n Reset(): void {\n this._currentArtifactID = null;\n this._currentVersionNumber = 0;\n this._versionHistory = [];\n // Keep _cachedConversationID — it's user-level, not component-level\n }\n\n // ============================================================\n // PRIVATE: ARTIFACT MANAGEMENT\n // ============================================================\n\n /**\n * Ensures a ConversationArtifact record exists for the current component.\n * If CurrentArtifactID is already set, returns that. Otherwise creates a new one.\n */\n private async ensureArtifactExists(spec: ComponentSpec): Promise<string | null> {\n if (this._currentArtifactID) {\n return this._currentArtifactID;\n }\n\n return await this.createArtifact(spec);\n }\n\n /**\n * Creates a new ConversationArtifact for the given component spec.\n */\n private async createArtifact(spec: ComponentSpec): Promise<string | null> {\n try {\n const artifactTypeId = await this.resolveComponentArtifactTypeID();\n if (!artifactTypeId) {\n console.error('ComponentVersionService: Could not resolve \"Component\" artifact type.');\n return null;\n }\n\n const conversationId = await this.resolveConversationID();\n if (!conversationId) {\n console.error('ComponentVersionService: No conversation ID available for artifact creation.');\n return null;\n }\n\n const artifact = await this.metadata.GetEntityObject<MJConversationArtifactEntity>('MJ: Conversation Artifacts');\n artifact.Name = spec.name || 'Untitled Component';\n artifact.Description = spec.description || null;\n artifact.ConversationID = conversationId;\n artifact.ArtifactTypeID = artifactTypeId;\n artifact.SharingScope = 'None';\n\n const saved = await artifact.Save();\n if (saved) {\n this._currentArtifactID = artifact.ID;\n return artifact.ID;\n }\n\n console.error('ComponentVersionService: Failed to save artifact.');\n return null;\n } catch (error) {\n console.error('ComponentVersionService: Error creating artifact:', error);\n return null;\n }\n }\n\n /**\n * Looks up the artifact type ID for \"Component\" from MJ: Artifact Types.\n * Caches the result to avoid repeated lookups.\n */\n private async resolveComponentArtifactTypeID(): Promise<string | null> {\n if (this._componentArtifactTypeID) {\n return this._componentArtifactTypeID;\n }\n\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<{ ID: string }>({\n EntityName: 'MJ: Artifact Types',\n ExtraFilter: `Name='Component'`,\n Fields: ['ID'],\n ResultType: 'simple'\n });\n\n if (result.Success && result.Results.length > 0) {\n this._componentArtifactTypeID = result.Results[0].ID;\n return this._componentArtifactTypeID;\n }\n\n console.error('ComponentVersionService: \"Component\" artifact type not found.');\n return null;\n }\n\n /**\n * Resolves or creates a Conversation record for Component Studio artifacts.\n * Caches the result for subsequent saves within the same session.\n */\n private async resolveConversationID(): Promise<string | null> {\n if (this._cachedConversationID) {\n return this._cachedConversationID;\n }\n\n const currentUser = this.metadata.CurrentUser;\n if (!currentUser) {\n return null;\n }\n\n // Look for an existing Component Studio conversation for this user\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<{ ID: string }>({\n EntityName: 'MJ: Conversations',\n ExtraFilter: `UserID='${currentUser.ID}' AND Name='Component Studio'`,\n Fields: ['ID'],\n MaxRows: 1,\n ResultType: 'simple'\n });\n\n if (result.Success && result.Results.length > 0) {\n this._cachedConversationID = result.Results[0].ID;\n return this._cachedConversationID;\n }\n\n // Create a new conversation for Component Studio\n const conversation = await this.metadata.GetEntityObject<MJConversationEntity>('MJ: Conversations');\n conversation.UserID = currentUser.ID;\n conversation.Name = 'Component Studio';\n conversation.Type = 'Skip';\n\n const saved = await conversation.Save();\n if (saved) {\n this._cachedConversationID = conversation.ID;\n return this._cachedConversationID;\n }\n\n console.error('ComponentVersionService: Failed to create Component Studio conversation.');\n return null;\n }\n\n // ============================================================\n // PRIVATE: VERSION MANAGEMENT\n // ============================================================\n\n /**\n * Determines the next version number for the given artifact.\n */\n private async resolveNextVersionNumber(artifactId: string): Promise<number> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<{ Version: number }>({\n EntityName: 'MJ: Conversation Artifact Versions',\n ExtraFilter: `ConversationArtifactID='${artifactId}'`,\n Fields: ['Version'],\n OrderBy: 'Version DESC',\n MaxRows: 1,\n ResultType: 'simple'\n });\n\n if (result.Success && result.Results.length > 0) {\n return result.Results[0].Version + 1;\n }\n\n return 1;\n }\n\n /**\n * Creates and saves a new ConversationArtifactVersion record.\n */\n private async createVersion(\n artifactId: string,\n versionNumber: number,\n spec: ComponentSpec,\n comment: string\n ): Promise<boolean> {\n try {\n const version = await this.metadata.GetEntityObject<MJConversationArtifactVersionEntity>(\n 'MJ: Conversation Artifact Versions'\n );\n version.ConversationArtifactID = artifactId;\n version.Version = versionNumber;\n version.Content = JSON.stringify(spec, null, 2);\n version.Comments = comment;\n\n return await version.Save();\n } catch (error) {\n console.error('ComponentVersionService: Error creating version record:', error);\n return false;\n }\n }\n\n /**\n * Loads a single ConversationArtifactVersion entity by ID.\n */\n private async loadVersionEntity(versionId: string): Promise<MJConversationArtifactVersionEntity | null> {\n try {\n const entity = await this.metadata.GetEntityObject<MJConversationArtifactVersionEntity>(\n 'MJ: Conversation Artifact Versions'\n );\n const loaded = await entity.Load(versionId);\n return loaded ? entity : null;\n } catch (error) {\n console.error('ComponentVersionService: Error loading version entity:', error);\n return null;\n }\n }\n\n /**\n * Finds the latest version entity for the given artifact.\n */\n private async findLatestVersionEntity(artifactId: string): Promise<MJConversationArtifactVersionEntity | null> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<MJConversationArtifactVersionEntity>({\n EntityName: 'MJ: Conversation Artifact Versions',\n ExtraFilter: `ConversationArtifactID='${artifactId}'`,\n OrderBy: 'Version DESC',\n MaxRows: 1,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results.length > 0) {\n return result.Results[0];\n }\n return null;\n }\n\n /**\n * Parses the Content field of a version entity back into a ComponentSpec.\n */\n private parseVersionContent(versionEntity: MJConversationArtifactVersionEntity): ComponentSpec | null {\n try {\n const content = versionEntity.Content;\n if (!content) {\n return null;\n }\n return JSON.parse(content) as ComponentSpec;\n } catch (error) {\n console.error('ComponentVersionService: Failed to parse version content:', error);\n return null;\n }\n }\n\n // ============================================================\n // PRIVATE: HISTORY LOADING\n // ============================================================\n\n /**\n * Fetches the full version history for an artifact, ordered newest-first.\n */\n private async fetchVersionHistory(artifactId: string): Promise<VersionHistoryEntry[]> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<MJConversationArtifactVersionEntity>({\n EntityName: 'MJ: Conversation Artifact Versions',\n ExtraFilter: `ConversationArtifactID='${artifactId}'`,\n OrderBy: 'Version DESC',\n ResultType: 'entity_object'\n });\n\n if (!result.Success) {\n console.error('ComponentVersionService: Failed to load version history:', result.ErrorMessage);\n return [];\n }\n\n return result.Results.map(v => this.mapVersionToHistoryEntry(v));\n }\n\n /**\n * Maps a MJConversationArtifactVersionEntity to a VersionHistoryEntry.\n */\n private mapVersionToHistoryEntry(version: MJConversationArtifactVersionEntity): VersionHistoryEntry {\n return {\n ID: version.ID,\n VersionNumber: version.Version,\n Timestamp: version.__mj_CreatedAt,\n Comment: version.Comments || ''\n };\n }\n}\n"]}
1
+ {"version":3,"file":"component-version.service.js","sourceRoot":"","sources":["../../../src/ComponentStudio/services/component-version.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { RunView, Metadata, IMetadataProvider } from '@memberjunction/core';\nimport {\n MJConversationEntity,\n MJConversationArtifactEntity,\n MJConversationArtifactVersionEntity\n} from '@memberjunction/core-entities';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\nimport { ComponentStudioStateService } from './component-studio-state.service';\n\n/**\n * Represents a single entry in the version history for a component artifact.\n */\nexport interface VersionHistoryEntry {\n ID: string;\n VersionNumber: number;\n Timestamp: Date;\n Comment: string;\n AuthorName?: string;\n}\n\n/**\n * Service that handles explicit, user-triggered versioning for Component Studio.\n * Follows a git-commit style model where each save creates a new immutable version.\n */\n@Injectable()\nexport class ComponentVersionService {\n\n // --- State Tracking ---\n private _currentArtifactID: string | null = null;\n private _currentVersionNumber = 0;\n private _versionHistory: VersionHistoryEntry[] = [];\n private _componentArtifactTypeID: string | null = null;\n private _cachedConversationID: string | null = null;\n\n private _provider: IMetadataProvider | null = null;\n\n /** Set the metadata provider this service should use. Components should call this after injection. */\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n }\n\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n\n private get metadata(): IMetadataProvider {\n return this.Provider;\n }\n\n get CurrentArtifactID(): string | null { return this._currentArtifactID; }\n set CurrentArtifactID(value: string | null) { this._currentArtifactID = value; }\n\n get CurrentVersionNumber(): number { return this._currentVersionNumber; }\n\n get VersionHistory(): VersionHistoryEntry[] { return this._versionHistory; }\n\n constructor(private stateService: ComponentStudioStateService) {}\n\n // ============================================================\n // PUBLIC API\n // ============================================================\n\n /**\n * Save current working state as a new version.\n * Creates the ConversationArtifact if one does not yet exist for this component.\n * @param comment - optional user comment describing the version\n * @returns true if the version was saved successfully\n */\n async SaveVersion(comment?: string): Promise<boolean> {\n try {\n const spec = this.stateService.GetCurrentSpec();\n if (!spec) {\n console.error('ComponentVersionService: No current spec available to save.');\n return false;\n }\n\n const artifactId = await this.ensureArtifactExists(spec);\n if (!artifactId) {\n console.error('ComponentVersionService: Failed to create or resolve artifact.');\n return false;\n }\n\n const nextVersion = await this.resolveNextVersionNumber(artifactId);\n const versionComment = comment || `Auto-saved at ${new Date().toISOString()}`;\n\n const saved = await this.createVersion(artifactId, nextVersion, spec, versionComment);\n if (saved) {\n this._currentArtifactID = artifactId;\n this._currentVersionNumber = nextVersion;\n // Refresh the cached history\n this._versionHistory = await this.fetchVersionHistory(artifactId);\n return true;\n }\n\n return false;\n } catch (error) {\n console.error('ComponentVersionService: Error saving version:', error);\n return false;\n }\n }\n\n /**\n * Update the current (latest) version in place instead of creating a new one.\n * @param comment - optional updated comment\n * @returns true if the version was updated successfully\n */\n async UpdateCurrentVersion(comment?: string): Promise<boolean> {\n try {\n if (!this._currentArtifactID || this._currentVersionNumber === 0) {\n console.error('ComponentVersionService: No current version to update.');\n return false;\n }\n\n const spec = this.stateService.GetCurrentSpec();\n if (!spec) {\n console.error('ComponentVersionService: No current spec available.');\n return false;\n }\n\n const latestVersion = await this.findLatestVersionEntity(this._currentArtifactID);\n if (!latestVersion) {\n console.error('ComponentVersionService: Could not find latest version entity.');\n return false;\n }\n\n latestVersion.Content = JSON.stringify(spec, null, 2);\n if (comment) {\n latestVersion.Comments = comment;\n }\n\n const saved = await latestVersion.Save();\n if (saved) {\n this._versionHistory = await this.fetchVersionHistory(this._currentArtifactID);\n return true;\n }\n return false;\n } catch (error) {\n console.error('ComponentVersionService: Error updating current version:', error);\n return false;\n }\n }\n\n /**\n * Load all versions for a given artifact, ordered by version number descending.\n * @param artifactId - the ConversationArtifact ID to load history for\n * @returns array of version history entries, newest first\n */\n async LoadVersionHistory(artifactId: string): Promise<VersionHistoryEntry[]> {\n const history = await this.fetchVersionHistory(artifactId);\n this._versionHistory = history;\n return history;\n }\n\n /**\n * Restore a previous version by creating a NEW version with the old content.\n * This preserves the full history chain rather than overwriting.\n * @param versionId - the ConversationArtifactVersion ID to restore\n * @returns true if the version was restored successfully\n */\n async RestoreVersion(versionId: string): Promise<boolean> {\n try {\n const versionEntity = await this.loadVersionEntity(versionId);\n if (!versionEntity) {\n console.error('ComponentVersionService: Could not load version', versionId);\n return false;\n }\n\n const spec = this.parseVersionContent(versionEntity);\n if (!spec) {\n console.error('ComponentVersionService: Could not parse version content');\n return false;\n }\n\n const restoredVersionNumber = versionEntity.Version;\n const restoreComment = `Restored from v${restoredVersionNumber}`;\n\n // Update the state with the restored spec before saving\n this.stateService.UpdateSpec(spec);\n\n // SaveVersion will pick up the restored spec from the state service\n return await this.SaveVersion(restoreComment);\n } catch (error) {\n console.error('ComponentVersionService: Error restoring version:', error);\n return false;\n }\n }\n\n /**\n * Load two versions and return their content for diffing.\n * @param versionId1 - the first version ID (typically the older one)\n * @param versionId2 - the second version ID (typically the newer one)\n * @returns an object with the before and after content strings\n */\n async GetVersionDiff(versionId1: string, versionId2: string): Promise<{ before: string; after: string }> {\n const [version1, version2] = await Promise.all([\n this.loadVersionEntity(versionId1),\n this.loadVersionEntity(versionId2)\n ]);\n\n return {\n before: version1?.Content || '',\n after: version2?.Content || ''\n };\n }\n\n /**\n * Reset the service state, typically when switching components.\n */\n Reset(): void {\n this._currentArtifactID = null;\n this._currentVersionNumber = 0;\n this._versionHistory = [];\n // Keep _cachedConversationID — it's user-level, not component-level\n }\n\n // ============================================================\n // PRIVATE: ARTIFACT MANAGEMENT\n // ============================================================\n\n /**\n * Ensures a ConversationArtifact record exists for the current component.\n * If CurrentArtifactID is already set, returns that. Otherwise creates a new one.\n */\n private async ensureArtifactExists(spec: ComponentSpec): Promise<string | null> {\n if (this._currentArtifactID) {\n return this._currentArtifactID;\n }\n\n return await this.createArtifact(spec);\n }\n\n /**\n * Creates a new ConversationArtifact for the given component spec.\n */\n private async createArtifact(spec: ComponentSpec): Promise<string | null> {\n try {\n const artifactTypeId = await this.resolveComponentArtifactTypeID();\n if (!artifactTypeId) {\n console.error('ComponentVersionService: Could not resolve \"Component\" artifact type.');\n return null;\n }\n\n const conversationId = await this.resolveConversationID();\n if (!conversationId) {\n console.error('ComponentVersionService: No conversation ID available for artifact creation.');\n return null;\n }\n\n const artifact = await this.metadata.GetEntityObject<MJConversationArtifactEntity>('MJ: Conversation Artifacts');\n artifact.Name = spec.name || 'Untitled Component';\n artifact.Description = spec.description || null;\n artifact.ConversationID = conversationId;\n artifact.ArtifactTypeID = artifactTypeId;\n artifact.SharingScope = 'None';\n\n const saved = await artifact.Save();\n if (saved) {\n this._currentArtifactID = artifact.ID;\n return artifact.ID;\n }\n\n console.error('ComponentVersionService: Failed to save artifact.');\n return null;\n } catch (error) {\n console.error('ComponentVersionService: Error creating artifact:', error);\n return null;\n }\n }\n\n /**\n * Looks up the artifact type ID for \"Component\" from MJ: Artifact Types.\n * Caches the result to avoid repeated lookups.\n */\n private async resolveComponentArtifactTypeID(): Promise<string | null> {\n if (this._componentArtifactTypeID) {\n return this._componentArtifactTypeID;\n }\n\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<{ ID: string }>({\n EntityName: 'MJ: Artifact Types',\n ExtraFilter: `Name='Component'`,\n Fields: ['ID'],\n ResultType: 'simple'\n });\n\n if (result.Success && result.Results.length > 0) {\n this._componentArtifactTypeID = result.Results[0].ID;\n return this._componentArtifactTypeID;\n }\n\n console.error('ComponentVersionService: \"Component\" artifact type not found.');\n return null;\n }\n\n /**\n * Resolves or creates a Conversation record for Component Studio artifacts.\n * Caches the result for subsequent saves within the same session.\n */\n private async resolveConversationID(): Promise<string | null> {\n if (this._cachedConversationID) {\n return this._cachedConversationID;\n }\n\n const currentUser = this.metadata.CurrentUser;\n if (!currentUser) {\n return null;\n }\n\n // Look for an existing Component Studio conversation for this user\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<{ ID: string }>({\n EntityName: 'MJ: Conversations',\n ExtraFilter: `UserID='${currentUser.ID}' AND Name='Component Studio'`,\n Fields: ['ID'],\n MaxRows: 1,\n SkipTotalRowCount: true,\n ResultType: 'simple'\n });\n\n if (result.Success && result.Results.length > 0) {\n this._cachedConversationID = result.Results[0].ID;\n return this._cachedConversationID;\n }\n\n // Create a new conversation for Component Studio\n const conversation = await this.metadata.GetEntityObject<MJConversationEntity>('MJ: Conversations');\n conversation.UserID = currentUser.ID;\n conversation.Name = 'Component Studio';\n conversation.Type = 'Skip';\n\n const saved = await conversation.Save();\n if (saved) {\n this._cachedConversationID = conversation.ID;\n return this._cachedConversationID;\n }\n\n console.error('ComponentVersionService: Failed to create Component Studio conversation.');\n return null;\n }\n\n // ============================================================\n // PRIVATE: VERSION MANAGEMENT\n // ============================================================\n\n /**\n * Determines the next version number for the given artifact.\n */\n private async resolveNextVersionNumber(artifactId: string): Promise<number> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<{ Version: number }>({\n EntityName: 'MJ: Conversation Artifact Versions',\n ExtraFilter: `ConversationArtifactID='${artifactId}'`,\n Fields: ['Version'],\n OrderBy: 'Version DESC',\n MaxRows: 1,\n SkipTotalRowCount: true,\n ResultType: 'simple'\n });\n\n if (result.Success && result.Results.length > 0) {\n return result.Results[0].Version + 1;\n }\n\n return 1;\n }\n\n /**\n * Creates and saves a new ConversationArtifactVersion record.\n */\n private async createVersion(\n artifactId: string,\n versionNumber: number,\n spec: ComponentSpec,\n comment: string\n ): Promise<boolean> {\n try {\n const version = await this.metadata.GetEntityObject<MJConversationArtifactVersionEntity>(\n 'MJ: Conversation Artifact Versions'\n );\n version.ConversationArtifactID = artifactId;\n version.Version = versionNumber;\n version.Content = JSON.stringify(spec, null, 2);\n version.Comments = comment;\n\n return await version.Save();\n } catch (error) {\n console.error('ComponentVersionService: Error creating version record:', error);\n return false;\n }\n }\n\n /**\n * Loads a single ConversationArtifactVersion entity by ID.\n */\n private async loadVersionEntity(versionId: string): Promise<MJConversationArtifactVersionEntity | null> {\n try {\n const entity = await this.metadata.GetEntityObject<MJConversationArtifactVersionEntity>(\n 'MJ: Conversation Artifact Versions'\n );\n const loaded = await entity.Load(versionId);\n return loaded ? entity : null;\n } catch (error) {\n console.error('ComponentVersionService: Error loading version entity:', error);\n return null;\n }\n }\n\n /**\n * Finds the latest version entity for the given artifact.\n */\n private async findLatestVersionEntity(artifactId: string): Promise<MJConversationArtifactVersionEntity | null> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<MJConversationArtifactVersionEntity>({\n EntityName: 'MJ: Conversation Artifact Versions',\n ExtraFilter: `ConversationArtifactID='${artifactId}'`,\n OrderBy: 'Version DESC',\n MaxRows: 1,\n SkipTotalRowCount: true,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results.length > 0) {\n return result.Results[0];\n }\n return null;\n }\n\n /**\n * Parses the Content field of a version entity back into a ComponentSpec.\n */\n private parseVersionContent(versionEntity: MJConversationArtifactVersionEntity): ComponentSpec | null {\n try {\n const content = versionEntity.Content;\n if (!content) {\n return null;\n }\n return JSON.parse(content) as ComponentSpec;\n } catch (error) {\n console.error('ComponentVersionService: Failed to parse version content:', error);\n return null;\n }\n }\n\n // ============================================================\n // PRIVATE: HISTORY LOADING\n // ============================================================\n\n /**\n * Fetches the full version history for an artifact, ordered newest-first.\n */\n private async fetchVersionHistory(artifactId: string): Promise<VersionHistoryEntry[]> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<MJConversationArtifactVersionEntity>({\n EntityName: 'MJ: Conversation Artifact Versions',\n ExtraFilter: `ConversationArtifactID='${artifactId}'`,\n OrderBy: 'Version DESC',\n ResultType: 'entity_object'\n });\n\n if (!result.Success) {\n console.error('ComponentVersionService: Failed to load version history:', result.ErrorMessage);\n return [];\n }\n\n return result.Results.map(v => this.mapVersionToHistoryEntry(v));\n }\n\n /**\n * Maps a MJConversationArtifactVersionEntity to a VersionHistoryEntry.\n */\n private mapVersionToHistoryEntry(version: MJConversationArtifactVersionEntity): VersionHistoryEntry {\n return {\n ID: version.ID,\n VersionNumber: version.Version,\n Timestamp: version.__mj_CreatedAt,\n Comment: version.Comments || ''\n };\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { AfterViewInit, EventEmitter, OnDestroy, TemplateRef } from '@angular/core';
2
2
  import type { DashboardUserPermissions, MJDashboardEntity, MJDashboardPartTypeEntity } from '@memberjunction/core-entities';
3
3
  import { BaseAngularComponent } from '@memberjunction/ng-base-types';
4
- import type { DashboardNavRequestEvent, DashboardPanel, DashboardPartDialogMode, DashboardPartDialogResult, DashboardViewerComponent } from '@memberjunction/ng-dashboard-viewer';
4
+ import type { DashboardNavRequestEvent, DashboardPanel, DashboardPartDialogMode, DashboardPartDialogResult, DashboardPropertiesDialogResult, DashboardProperty, DashboardViewerComponent, DashboardWire } from '@memberjunction/ng-dashboard-viewer';
5
5
  import type { DashboardEditorBodyStyle, DashboardEditorLoadError, DashboardEditorTitleContext, DashboardSaveOverrides } from './dashboard-editor.types';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
@@ -85,6 +85,10 @@ export declare class DashboardEditorComponent extends BaseAngularComponent imple
85
85
  PartDialogMode: DashboardPartDialogMode | null;
86
86
  /** The part the part dialog edits in edit mode. */
87
87
  EditPartPanel: DashboardPanel | null;
88
+ /** True while the dashboard's Properties and wires dialog is open. */
89
+ PropertiesDialogOpen: boolean;
90
+ /** The dashboard's parts when the Properties and wires dialog opened. */
91
+ PropertiesDialogPanels: DashboardPanel[];
88
92
  private _dashboard;
89
93
  private viewer;
90
94
  private viewerRef;
@@ -109,6 +113,10 @@ export declare class DashboardEditorComponent extends BaseAngularComponent imple
109
113
  get CanEdit(): boolean;
110
114
  /** The part types the part dialog offers: the viewer's part types. */
111
115
  get PartTypes(): MJDashboardPartTypeEntity[];
116
+ /** The dashboard's properties, which the part dialog maps onto a part's inputs. */
117
+ get DashboardProperties(): DashboardProperty[];
118
+ /** The dashboard's wires. */
119
+ get DashboardWires(): DashboardWire[];
112
120
  /** True when someone else owns the dashboard and shared it with the user. */
113
121
  get IsSharedWithUser(): boolean;
114
122
  /** True when the shown dashboard is one of the user's favorites. False when the favorites cannot be read. */
@@ -225,7 +233,10 @@ export declare class DashboardEditorComponent extends BaseAngularComponent imple
225
233
  * Returns the message the user sees.
226
234
  */
227
235
  private onSaveFailed;
228
- /** Why a save failed: the thrown error, else the dashboard's failed save result. Empty when neither says. */
236
+ /**
237
+ * Why a save failed: the thrown error, else the viewer's refusal (a broken mapping or wire), else the
238
+ * dashboard's failed save result. Empty when none says.
239
+ */
229
240
  private saveFailureReason;
230
241
  /** Passes a save of the viewer on to the host, with the new name when it changed. */
231
242
  private onViewerSaved;
@@ -274,6 +285,10 @@ export declare class DashboardEditorComponent extends BaseAngularComponent imple
274
285
  ClosePartDialog(): void;
275
286
  /** Closes every part dialog. A part dialog belongs to one edit session. */
276
287
  private closePartDialogs;
288
+ /** Opens the dashboard's Properties and wires dialog. Only while editing and not saving. */
289
+ OpenPropertiesDialog(): void;
290
+ /** Applies the dialog's properties and wires to the viewer. They are saved with the dashboard's Save. */
291
+ OnPropertiesDialogSaved(result: DashboardPropertiesDialogResult): Promise<void>;
277
292
  /**
278
293
  * Asks the user to confirm removing a part, then removes it. Changes nothing when the user cancels, or when the
279
294
  * edit session, the viewer or the part changed while the confirm was open.
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-editor.component.d.ts","sourceRoot":"","sources":["../../src/DashboardEditor/dashboard-editor.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-editor.component.d.ts","sourceRoot":"","sources":["../../src/DashboardEditor/dashboard-editor.component.ts"],"names":[],"mappings":"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"}