@memberjunction/ng-dashboards 5.30.0 → 5.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  2. package/dist/AI/components/agents/agent-configuration.component.js +4 -4
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/agents/agent-editor.component.d.ts +2 -1
  5. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  6. package/dist/AI/components/agents/agent-editor.component.js +8 -6
  7. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +2 -1
  9. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  10. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +6 -5
  11. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  12. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +2 -1
  13. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  14. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +6 -5
  15. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  16. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +2 -1
  17. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  18. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +6 -5
  19. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  20. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts +2 -1
  21. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  22. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +7 -4
  23. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  24. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +3 -2
  25. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/model-performance/model-performance.component.js +10 -6
  27. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  28. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +2 -1
  29. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +6 -5
  31. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  32. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +2 -1
  33. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  34. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +6 -5
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  36. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  37. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +55 -52
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  39. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +15 -15
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  41. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  42. package/dist/AI/components/execution-monitoring.component.js +4 -3
  43. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.js +2 -2
  45. package/dist/AI/components/models/model-management.component.js.map +1 -1
  46. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +2 -1
  47. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  48. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +10 -8
  49. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  51. package/dist/AI/components/prompts/prompt-management.component.js +2 -2
  52. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  53. package/dist/AI/components/prompts/prompt-version-control.component.d.ts +2 -1
  54. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  55. package/dist/AI/components/prompts/prompt-version-control.component.js +13 -10
  56. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  57. package/dist/AI/components/requests/agent-requests-resource.component.js +1 -1
  58. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  59. package/dist/AI/components/tags/tags-resource.component.d.ts +1181 -0
  60. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -0
  61. package/dist/AI/components/tags/tags-resource.component.js +7487 -0
  62. package/dist/AI/components/tags/tags-resource.component.js.map +1 -0
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +25 -21
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/AI/index.d.ts +1 -0
  67. package/dist/AI/index.d.ts.map +1 -1
  68. package/dist/AI/index.js +5 -0
  69. package/dist/AI/index.js.map +1 -1
  70. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  71. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  72. package/dist/AI/services/ai-instrumentation.service.js +12 -4
  73. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  74. package/dist/APIKeys/api-applications-panel.component.d.ts +3 -2
  75. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  76. package/dist/APIKeys/api-applications-panel.component.js +5 -4
  77. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  78. package/dist/APIKeys/api-key-create-dialog.component.d.ts +2 -1
  79. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
  80. package/dist/APIKeys/api-key-create-dialog.component.js +5 -5
  81. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  82. package/dist/APIKeys/api-key-edit-panel.component.d.ts +3 -2
  83. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  84. package/dist/APIKeys/api-key-edit-panel.component.js +11 -10
  85. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  86. package/dist/APIKeys/api-key-list.component.d.ts +2 -1
  87. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
  88. package/dist/APIKeys/api-key-list.component.js +6 -5
  89. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  90. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  91. package/dist/APIKeys/api-keys-resource.component.js +4 -4
  92. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  93. package/dist/APIKeys/api-scopes-panel.component.d.ts +3 -2
  94. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
  95. package/dist/APIKeys/api-scopes-panel.component.js +8 -6
  96. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  97. package/dist/APIKeys/api-usage-panel.component.d.ts +3 -2
  98. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
  99. package/dist/APIKeys/api-usage-panel.component.js +10 -8
  100. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  101. package/dist/Actions/components/actions-list-view.component.d.ts +2 -1
  102. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
  103. package/dist/Actions/components/actions-list-view.component.js +6 -5
  104. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  105. package/dist/Actions/components/actions-overview.component.js +2 -2
  106. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  107. package/dist/Actions/components/categories-list-view.component.d.ts +2 -1
  108. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  109. package/dist/Actions/components/categories-list-view.component.js +6 -5
  110. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  111. package/dist/Actions/components/execution-monitoring.component.js +1 -1
  112. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  113. package/dist/Actions/components/explorer/action-card.component.d.ts +2 -1
  114. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  115. package/dist/Actions/components/explorer/action-card.component.js +6 -4
  116. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  117. package/dist/Actions/components/explorer/action-explorer.component.js +1 -1
  118. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/new-action-panel.component.d.ts +2 -1
  120. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
  121. package/dist/Actions/components/explorer/new-action-panel.component.js +7 -5
  122. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  123. package/dist/Actions/components/explorer/new-category-panel.component.d.ts +2 -1
  124. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
  125. package/dist/Actions/components/explorer/new-category-panel.component.js +7 -5
  126. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  127. package/dist/ApplicationRoles/application-roles-resource.component.js +4 -4
  128. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  129. package/dist/Communication/communication-logs-resource.component.js +1 -1
  130. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  131. package/dist/Communication/communication-monitor-resource.component.js +1 -1
  132. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  133. package/dist/Communication/communication-providers-resource.component.js +3 -3
  134. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  135. package/dist/Communication/communication-runs-resource.component.js +1 -1
  136. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  137. package/dist/Communication/communication-templates-resource.component.js +3 -3
  138. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  139. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
  140. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  141. package/dist/ComponentStudio/component-studio-dashboard.component.js +5 -4
  142. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  143. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +2 -1
  144. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  145. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +6 -4
  146. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  147. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +11 -2
  148. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  149. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +61 -27
  150. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  151. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +4 -2
  152. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  153. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +19 -11
  154. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  155. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts +4 -2
  156. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
  157. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +11 -3
  158. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  159. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +10 -1
  160. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  161. package/dist/ComponentStudio/components/workspace/component-preview.component.js +18 -9
  162. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  163. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +11 -1
  164. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
  165. package/dist/ComponentStudio/services/component-studio-state.service.js +23 -3
  166. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  167. package/dist/ComponentStudio/services/component-version.service.d.ts +6 -1
  168. package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
  169. package/dist/ComponentStudio/services/component-version.service.js +16 -6
  170. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  171. package/dist/Credentials/components/credentials-audit-resource.component.js +1 -1
  172. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  173. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  174. package/dist/Credentials/components/credentials-categories-resource.component.js +3 -3
  175. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  176. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  177. package/dist/Credentials/components/credentials-list-resource.component.js +3 -3
  178. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  179. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  180. package/dist/Credentials/components/credentials-overview-resource.component.js +3 -3
  181. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  182. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  183. package/dist/Credentials/components/credentials-types-resource.component.js +3 -3
  184. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  185. package/dist/Credentials/credentials-dashboard.component.js +1 -1
  186. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  187. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +13 -13
  188. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  189. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts +4 -0
  190. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts.map +1 -1
  191. package/dist/DashboardBrowser/dashboard-share-adapter.js +5 -2
  192. package/dist/DashboardBrowser/dashboard-share-adapter.js.map +1 -1
  193. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +3 -1
  194. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  195. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -4
  196. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  197. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +3 -2
  198. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  199. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +7 -6
  200. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  201. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +3 -2
  202. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
  203. package/dist/DataExplorer/components/view-selector/view-selector.component.js +6 -5
  204. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  205. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  206. package/dist/DataExplorer/data-explorer-dashboard.component.js +10 -9
  207. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  208. package/dist/DataExplorer/services/explorer-state.service.d.ts +6 -1
  209. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
  210. package/dist/DataExplorer/services/explorer-state.service.js +15 -5
  211. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
  212. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts +64 -0
  213. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts.map +1 -0
  214. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js +400 -0
  215. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js.map +1 -0
  216. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts +42 -0
  217. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts.map +1 -0
  218. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js +232 -0
  219. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js.map +1 -0
  220. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts +14 -0
  221. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts.map +1 -0
  222. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js +38 -0
  223. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js.map +1 -0
  224. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts +24 -0
  225. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts.map +1 -0
  226. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js +77 -0
  227. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js.map +1 -0
  228. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts +88 -0
  229. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts.map +1 -0
  230. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js +404 -0
  231. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js.map +1 -0
  232. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts +12 -0
  233. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts.map +1 -0
  234. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js +116 -0
  235. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js.map +1 -0
  236. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +55 -0
  237. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -0
  238. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +204 -0
  239. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -0
  240. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +61 -0
  241. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -0
  242. package/dist/DatabaseDesigner/components/entity-list.component.js +485 -0
  243. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -0
  244. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts +52 -0
  245. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts.map +1 -0
  246. package/dist/DatabaseDesigner/components/modify/database-modify.component.js +320 -0
  247. package/dist/DatabaseDesigner/components/modify/database-modify.component.js.map +1 -0
  248. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts +79 -0
  249. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts.map +1 -0
  250. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js +378 -0
  251. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js.map +1 -0
  252. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts +85 -0
  253. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts.map +1 -0
  254. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js +429 -0
  255. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js.map +1 -0
  256. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts +58 -0
  257. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts.map +1 -0
  258. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js +333 -0
  259. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js.map +1 -0
  260. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts +36 -0
  261. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts.map +1 -0
  262. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js +345 -0
  263. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js.map +1 -0
  264. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts +13 -0
  265. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts.map +1 -0
  266. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js +81 -0
  267. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js.map +1 -0
  268. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +30 -0
  269. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -0
  270. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +131 -0
  271. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -0
  272. package/dist/DatabaseDesigner/database-designer-erd.d.ts +19 -0
  273. package/dist/DatabaseDesigner/database-designer-erd.d.ts.map +1 -0
  274. package/dist/DatabaseDesigner/database-designer-erd.js +84 -0
  275. package/dist/DatabaseDesigner/database-designer-erd.js.map +1 -0
  276. package/dist/DatabaseDesigner/database-designer.types.d.ts +167 -0
  277. package/dist/DatabaseDesigner/database-designer.types.d.ts.map +1 -0
  278. package/dist/DatabaseDesigner/database-designer.types.js +26 -0
  279. package/dist/DatabaseDesigner/database-designer.types.js.map +1 -0
  280. package/dist/DatabaseDesigner/services/database-designer.engine.d.ts +94 -0
  281. package/dist/DatabaseDesigner/services/database-designer.engine.d.ts.map +1 -0
  282. package/dist/DatabaseDesigner/services/database-designer.engine.js +392 -0
  283. package/dist/DatabaseDesigner/services/database-designer.engine.js.map +1 -0
  284. package/dist/DatabaseDesigner/services/database-designer.service.d.ts +78 -0
  285. package/dist/DatabaseDesigner/services/database-designer.service.d.ts.map +1 -0
  286. package/dist/DatabaseDesigner/services/database-designer.service.js +273 -0
  287. package/dist/DatabaseDesigner/services/database-designer.service.js.map +1 -0
  288. package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts +79 -0
  289. package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts.map +1 -0
  290. package/dist/DatabaseDesigner/services/entity-wizard-state.service.js +204 -0
  291. package/dist/DatabaseDesigner/services/entity-wizard-state.service.js.map +1 -0
  292. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  293. package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
  294. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  295. package/dist/Home/action-pin-config-dialog.component.d.ts +2 -1
  296. package/dist/Home/action-pin-config-dialog.component.d.ts.map +1 -1
  297. package/dist/Home/action-pin-config-dialog.component.js +6 -4
  298. package/dist/Home/action-pin-config-dialog.component.js.map +1 -1
  299. package/dist/Home/action-pin-runner-dialog.component.d.ts +2 -1
  300. package/dist/Home/action-pin-runner-dialog.component.d.ts.map +1 -1
  301. package/dist/Home/action-pin-runner-dialog.component.js +5 -4
  302. package/dist/Home/action-pin-runner-dialog.component.js.map +1 -1
  303. package/dist/Home/home-application.d.ts.map +1 -1
  304. package/dist/Home/home-application.js +10 -12
  305. package/dist/Home/home-application.js.map +1 -1
  306. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  307. package/dist/Home/home-dashboard.component.js +3 -3
  308. package/dist/Home/home-dashboard.component.js.map +1 -1
  309. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  310. package/dist/Integration/components/activity/activity.component.js +1 -0
  311. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  312. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  313. package/dist/Integration/components/connections/connections.component.js +11 -10
  314. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  315. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
  316. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +2 -2
  317. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  318. package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
  319. package/dist/Integration/components/overview/overview.component.js +1 -0
  320. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  321. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  322. package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
  323. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  324. package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
  325. package/dist/Integration/components/schedules/schedules.component.js +5 -4
  326. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  327. package/dist/Integration/services/integration-data.service.d.ts +5 -1
  328. package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
  329. package/dist/Integration/services/integration-data.service.js +27 -19
  330. package/dist/Integration/services/integration-data.service.js.map +1 -1
  331. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +6 -6
  332. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  333. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  334. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +8 -6
  335. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  336. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +6 -6
  337. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  338. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +3 -3
  339. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  340. package/dist/Lists/components/lists-browse-resource.component.js +6 -6
  341. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  342. package/dist/Lists/components/lists-categories-resource.component.js +4 -4
  343. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  344. package/dist/Lists/components/lists-my-lists-resource.component.js +6 -6
  345. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  346. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  347. package/dist/Lists/components/lists-operations-resource.component.js +11 -10
  348. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  349. package/dist/Lists/services/list-set-operations.service.d.ts +5 -0
  350. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  351. package/dist/Lists/services/list-set-operations.service.js +11 -3
  352. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  353. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +2 -1
  354. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
  355. package/dist/MCP/components/mcp-connection-dialog.component.js +8 -6
  356. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  357. package/dist/MCP/components/mcp-server-dialog.component.d.ts +2 -1
  358. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
  359. package/dist/MCP/components/mcp-server-dialog.component.js +7 -5
  360. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  361. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  362. package/dist/MCP/mcp-dashboard.component.js +12 -12
  363. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  364. package/dist/Permissions/permissions-shared.d.ts +3 -3
  365. package/dist/Permissions/permissions-shared.d.ts.map +1 -1
  366. package/dist/Permissions/permissions-shared.js +5 -5
  367. package/dist/Permissions/permissions-shared.js.map +1 -1
  368. package/dist/Permissions/resource-access-resource.component.js +1 -1
  369. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  370. package/dist/Permissions/user-access-resource.component.js +1 -2
  371. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  372. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  373. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  374. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  375. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  376. package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
  377. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  378. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +5 -0
  379. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  380. package/dist/Scheduling/services/scheduling-instrumentation.service.js +21 -13
  381. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  382. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  383. package/dist/SystemDiagnostics/system-diagnostics.component.js +2 -2
  384. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  385. package/dist/Testing/components/testing-explorer.component.d.ts +2 -1
  386. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  387. package/dist/Testing/components/testing-explorer.component.js +9 -7
  388. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  389. package/dist/Testing/services/testing-instrumentation.service.d.ts +6 -1
  390. package/dist/Testing/services/testing-instrumentation.service.d.ts.map +1 -1
  391. package/dist/Testing/services/testing-instrumentation.service.js +21 -11
  392. package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
  393. package/dist/Testing/testing-dashboard.component.d.ts +3 -1
  394. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  395. package/dist/Testing/testing-dashboard.component.js +15 -11
  396. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  397. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  398. package/dist/VersionHistory/components/diff-resource.component.js +5 -5
  399. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  400. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
  401. package/dist/VersionHistory/components/graph-resource.component.js +1 -2
  402. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  403. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  404. package/dist/VersionHistory/components/labels-resource.component.js +3 -3
  405. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  406. package/dist/VersionHistory/components/restore-resource.component.js +1 -1
  407. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  408. package/dist/ai-dashboards.module.d.ts +35 -34
  409. package/dist/ai-dashboards.module.d.ts.map +1 -1
  410. package/dist/ai-dashboards.module.js +6 -0
  411. package/dist/ai-dashboards.module.js.map +1 -1
  412. package/dist/module.d.ts +13 -12
  413. package/dist/module.d.ts.map +1 -1
  414. package/dist/module.js +7 -0
  415. package/dist/module.js.map +1 -1
  416. package/dist/public-api.d.ts +3 -1
  417. package/dist/public-api.d.ts.map +1 -1
  418. package/dist/public-api.js +3 -1
  419. package/dist/public-api.js.map +1 -1
  420. package/dist/shared/entity-field-display.d.ts +4 -3
  421. package/dist/shared/entity-field-display.d.ts.map +1 -1
  422. package/dist/shared/entity-field-display.js +9 -9
  423. package/dist/shared/entity-field-display.js.map +1 -1
  424. package/package.json +52 -51
@@ -0,0 +1,400 @@
1
+ /**
2
+ * @module database-create-wizard.component
3
+ * @description Multi-step wizard for creating a new Database Designer entity.
4
+ *
5
+ * Rendered inside an `mj-slide-panel` by the dashboard. Manages step routing
6
+ * and owns one `EntityWizardStateService` instance for the duration the panel
7
+ * is open.
8
+ *
9
+ * Wizard steps:
10
+ * 1 Basics — entity name, table name, schema, description
11
+ * 2 Fields — column definitions (EntityFieldsGridComponent)
12
+ * 3 Relationships — optional foreign keys
13
+ * 4 Review — read-only schema preview + server-side validation
14
+ * 5 Create — pipeline execution + result (EntityPipelinePanelComponent)
15
+ *
16
+ * Step 5 is terminal — once the pipeline starts there is no Back navigation.
17
+ */
18
+ import { Component, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, inject, ViewChild, } from '@angular/core';
19
+ import { Subject } from 'rxjs';
20
+ import { takeUntil } from 'rxjs/operators';
21
+ import { DatabaseDesignerService } from '../../services/database-designer.service.js';
22
+ import { EntityWizardStateService } from '../../services/entity-wizard-state.service.js';
23
+ import { DatabaseDesignerEngine } from '../../services/database-designer.engine.js';
24
+ import { StepPipelineComponent } from './steps/step-pipeline.component.js';
25
+ import * as i0 from "@angular/core";
26
+ import * as i1 from "@memberjunction/ng-ui-components";
27
+ import * as i2 from "angular-split";
28
+ import * as i3 from "../shared/wizard-step-indicator.component";
29
+ import * as i4 from "../shared/database-preview-pane.component";
30
+ import * as i5 from "./steps/step-basics.component";
31
+ import * as i6 from "./steps/step-fields.component";
32
+ import * as i7 from "./steps/step-relationships.component";
33
+ import * as i8 from "./steps/step-review.component";
34
+ import * as i9 from "./steps/step-pipeline.component";
35
+ import * as i10 from "@angular/common";
36
+ const _c0 = () => ({});
37
+ const _c1 = () => [];
38
+ function DatabaseCreateWizardComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
39
+ const _r1 = i0.ɵɵgetCurrentView();
40
+ i0.ɵɵelementStart(0, "div", 2)(1, "mj-entity-step-pipeline", 5);
41
+ i0.ɵɵlistener("PipelineCompleted", function DatabaseCreateWizardComponent_Conditional_2_Template_mj_entity_step_pipeline_PipelineCompleted_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnPipelineCompleted($event)); })("CreateAnother", function DatabaseCreateWizardComponent_Conditional_2_Template_mj_entity_step_pipeline_CreateAnother_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnCreateAnother()); });
42
+ i0.ɵɵelementEnd()();
43
+ } if (rf & 2) {
44
+ const ctx_r1 = i0.ɵɵnextContext();
45
+ i0.ɵɵadvance();
46
+ i0.ɵɵproperty("TableDefinition", ctx_r1.TableDefinition);
47
+ } }
48
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
49
+ i0.ɵɵtext(0, " We hit a problem ");
50
+ } }
51
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵtext(0);
53
+ } if (rf & 2) {
54
+ const ctx_r1 = i0.ɵɵnextContext(3);
55
+ i0.ɵɵtextInterpolate1(" We hit ", ctx_r1.ValidationErrors.length, " problems ");
56
+ } }
57
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_3_For_8_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵelementStart(0, "li");
59
+ i0.ɵɵtext(1);
60
+ i0.ɵɵelementEnd();
61
+ } if (rf & 2) {
62
+ const err_r4 = ctx.$implicit;
63
+ i0.ɵɵadvance();
64
+ i0.ɵɵtextInterpolate(err_r4);
65
+ } }
66
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_10_Conditional_1_Template(rf, ctx) { if (rf & 1) {
67
+ i0.ɵɵelement(0, "i", 23);
68
+ i0.ɵɵtext(1, " Retrying\u2026 ");
69
+ } }
70
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelement(0, "i", 24);
72
+ i0.ɵɵtext(1, " Retry ");
73
+ } }
74
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
75
+ const _r5 = i0.ɵɵgetCurrentView();
76
+ i0.ɵɵelementStart(0, "button", 22);
77
+ i0.ɵɵlistener("click", function DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnRetryValidation()); });
78
+ i0.ɵɵconditionalCreate(1, DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_10_Conditional_1_Template, 2, 0)(2, DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_10_Conditional_2_Template, 2, 0);
79
+ i0.ɵɵelementEnd();
80
+ } if (rf & 2) {
81
+ const ctx_r1 = i0.ɵɵnextContext(3);
82
+ i0.ɵɵproperty("disabled", ctx_r1.IsValidating);
83
+ i0.ɵɵadvance();
84
+ i0.ɵɵconditional(ctx_r1.IsValidating ? 1 : 2);
85
+ } }
86
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
87
+ const _r3 = i0.ɵɵgetCurrentView();
88
+ i0.ɵɵelementStart(0, "div", 8);
89
+ i0.ɵɵelement(1, "i", 14);
90
+ i0.ɵɵelementStart(2, "div", 15)(3, "div", 16);
91
+ i0.ɵɵconditionalCreate(4, DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_4_Template, 1, 0)(5, DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_5_Template, 1, 1);
92
+ i0.ɵɵelementEnd();
93
+ i0.ɵɵelementStart(6, "ul", 17);
94
+ i0.ɵɵrepeaterCreate(7, DatabaseCreateWizardComponent_Conditional_3_Conditional_3_For_8_Template, 2, 1, "li", null, i0.ɵɵrepeaterTrackByIndex);
95
+ i0.ɵɵelementEnd()();
96
+ i0.ɵɵelementStart(9, "div", 18);
97
+ i0.ɵɵconditionalCreate(10, DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Conditional_10_Template, 3, 2, "button", 19);
98
+ i0.ɵɵelementStart(11, "button", 20);
99
+ i0.ɵɵlistener("click", function DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnDismissErrors()); });
100
+ i0.ɵɵelement(12, "i", 21);
101
+ i0.ɵɵelementEnd()()();
102
+ } if (rf & 2) {
103
+ const ctx_r1 = i0.ɵɵnextContext(2);
104
+ i0.ɵɵadvance(4);
105
+ i0.ɵɵconditional(ctx_r1.ValidationErrors.length === 1 ? 4 : 5);
106
+ i0.ɵɵadvance(3);
107
+ i0.ɵɵrepeater(ctx_r1.ValidationErrors);
108
+ i0.ɵɵadvance(3);
109
+ i0.ɵɵconditional(ctx_r1.CurrentStep === "relationships" || ctx_r1.CurrentStep === "review" ? 10 : -1);
110
+ } }
111
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
112
+ const _r6 = i0.ɵɵgetCurrentView();
113
+ i0.ɵɵelementStart(0, "mj-entity-step-basics", 25);
114
+ i0.ɵɵlistener("ValueChanged", function DatabaseCreateWizardComponent_Conditional_3_Conditional_4_Template_mj_entity_step_basics_ValueChanged_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnBasicsChanged($event)); });
115
+ i0.ɵɵelementEnd();
116
+ } if (rf & 2) {
117
+ const ctx_r1 = i0.ɵɵnextContext(2);
118
+ i0.ɵɵproperty("AvailableSchemas", ctx_r1.AvailableSchemas);
119
+ } }
120
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
121
+ const _r7 = i0.ɵɵgetCurrentView();
122
+ i0.ɵɵelementStart(0, "mj-entity-step-fields", 26);
123
+ i0.ɵɵlistener("ColumnsChanged", function DatabaseCreateWizardComponent_Conditional_3_Conditional_5_Template_mj_entity_step_fields_ColumnsChanged_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFieldsChanged($event)); });
124
+ i0.ɵɵelementEnd();
125
+ } if (rf & 2) {
126
+ const ctx_r1 = i0.ɵɵnextContext(2);
127
+ i0.ɵɵproperty("InitialColumns", ctx_r1.TableDefinition.Columns ?? i0.ɵɵpureFunction0(1, _c1));
128
+ } }
129
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
130
+ const _r8 = i0.ɵɵgetCurrentView();
131
+ i0.ɵɵelementStart(0, "mj-entity-step-relationships", 27);
132
+ i0.ɵɵlistener("ForeignKeysChanged", function DatabaseCreateWizardComponent_Conditional_3_Conditional_6_Template_mj_entity_step_relationships_ForeignKeysChanged_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnRelationshipsChanged($event)); });
133
+ i0.ɵɵelementEnd();
134
+ } if (rf & 2) {
135
+ const ctx_r1 = i0.ɵɵnextContext(2);
136
+ i0.ɵɵproperty("InitialForeignKeys", ctx_r1.TableDefinition.ForeignKeys ?? i0.ɵɵpureFunction0(2, _c1))("AvailableColumns", ctx_r1.TableDefinition.Columns ?? i0.ɵɵpureFunction0(3, _c1));
137
+ } }
138
+ function DatabaseCreateWizardComponent_Conditional_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
139
+ i0.ɵɵelement(0, "mj-entity-step-review", 12);
140
+ } if (rf & 2) {
141
+ const ctx_r1 = i0.ɵɵnextContext(2);
142
+ i0.ɵɵproperty("TableDefinition", ctx_r1.TableDefinition)("ValidationErrors", ctx_r1.ValidationErrors)("IsValidating", ctx_r1.IsValidating);
143
+ } }
144
+ function DatabaseCreateWizardComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
145
+ i0.ɵɵelementStart(0, "as-split", 3)(1, "as-split-area", 6)(2, "div", 7);
146
+ i0.ɵɵconditionalCreate(3, DatabaseCreateWizardComponent_Conditional_3_Conditional_3_Template, 13, 2, "div", 8);
147
+ i0.ɵɵconditionalCreate(4, DatabaseCreateWizardComponent_Conditional_3_Conditional_4_Template, 1, 1, "mj-entity-step-basics", 9);
148
+ i0.ɵɵconditionalCreate(5, DatabaseCreateWizardComponent_Conditional_3_Conditional_5_Template, 1, 2, "mj-entity-step-fields", 10);
149
+ i0.ɵɵconditionalCreate(6, DatabaseCreateWizardComponent_Conditional_3_Conditional_6_Template, 1, 4, "mj-entity-step-relationships", 11);
150
+ i0.ɵɵconditionalCreate(7, DatabaseCreateWizardComponent_Conditional_3_Conditional_7_Template, 1, 3, "mj-entity-step-review", 12);
151
+ i0.ɵɵelementEnd()();
152
+ i0.ɵɵelementStart(8, "as-split-area", 6);
153
+ i0.ɵɵelement(9, "mj-database-preview-pane", 13);
154
+ i0.ɵɵpipe(10, "async");
155
+ i0.ɵɵelementEnd()();
156
+ } if (rf & 2) {
157
+ const ctx_r1 = i0.ɵɵnextContext();
158
+ i0.ɵɵadvance();
159
+ i0.ɵɵproperty("size", 55)("minSize", 40);
160
+ i0.ɵɵadvance(2);
161
+ i0.ɵɵconditional(ctx_r1.ValidationErrors.length > 0 ? 3 : -1);
162
+ i0.ɵɵadvance();
163
+ i0.ɵɵconditional(ctx_r1.CurrentStep === "basics" ? 4 : -1);
164
+ i0.ɵɵadvance();
165
+ i0.ɵɵconditional(ctx_r1.CurrentStep === "fields" ? 5 : -1);
166
+ i0.ɵɵadvance();
167
+ i0.ɵɵconditional(ctx_r1.CurrentStep === "relationships" ? 6 : -1);
168
+ i0.ɵɵadvance();
169
+ i0.ɵɵconditional(ctx_r1.CurrentStep === "review" ? 7 : -1);
170
+ i0.ɵɵadvance();
171
+ i0.ɵɵproperty("size", 45)("minSize", 25);
172
+ i0.ɵɵadvance();
173
+ i0.ɵɵproperty("TableDefinition", i0.ɵɵpipeBind1(10, 10, ctx_r1.WizardState.tableDefinition$) ?? i0.ɵɵpureFunction0(12, _c0));
174
+ } }
175
+ function DatabaseCreateWizardComponent_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
176
+ const _r10 = i0.ɵɵgetCurrentView();
177
+ i0.ɵɵelementStart(0, "button", 33);
178
+ i0.ɵɵlistener("click", function DatabaseCreateWizardComponent_Conditional_4_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnBack()); });
179
+ i0.ɵɵelement(1, "i", 34);
180
+ i0.ɵɵtext(2, " Back ");
181
+ i0.ɵɵelementEnd();
182
+ } }
183
+ function DatabaseCreateWizardComponent_Conditional_4_Conditional_7_Template(rf, ctx) { if (rf & 1) {
184
+ i0.ɵɵelement(0, "i", 23);
185
+ i0.ɵɵtext(1, " Validating\u2026 ");
186
+ } }
187
+ function DatabaseCreateWizardComponent_Conditional_4_Conditional_8_Template(rf, ctx) { if (rf & 1) {
188
+ i0.ɵɵtext(0, " Create Entity ");
189
+ i0.ɵɵelement(1, "i", 35);
190
+ } }
191
+ function DatabaseCreateWizardComponent_Conditional_4_Conditional_9_Template(rf, ctx) { if (rf & 1) {
192
+ i0.ɵɵtext(0, " Next ");
193
+ i0.ɵɵelement(1, "i", 36);
194
+ } }
195
+ function DatabaseCreateWizardComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
196
+ const _r9 = i0.ɵɵgetCurrentView();
197
+ i0.ɵɵelementStart(0, "div", 4)(1, "div", 28);
198
+ i0.ɵɵconditionalCreate(2, DatabaseCreateWizardComponent_Conditional_4_Conditional_2_Template, 3, 0, "button", 29);
199
+ i0.ɵɵelementEnd();
200
+ i0.ɵɵelementStart(3, "div", 30)(4, "button", 31);
201
+ i0.ɵɵlistener("click", function DatabaseCreateWizardComponent_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnCancel()); });
202
+ i0.ɵɵtext(5, " Cancel ");
203
+ i0.ɵɵelementEnd();
204
+ i0.ɵɵelementStart(6, "button", 32);
205
+ i0.ɵɵlistener("click", function DatabaseCreateWizardComponent_Conditional_4_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnNext()); });
206
+ i0.ɵɵconditionalCreate(7, DatabaseCreateWizardComponent_Conditional_4_Conditional_7_Template, 2, 0)(8, DatabaseCreateWizardComponent_Conditional_4_Conditional_8_Template, 2, 0)(9, DatabaseCreateWizardComponent_Conditional_4_Conditional_9_Template, 2, 0);
207
+ i0.ɵɵelementEnd()()();
208
+ } if (rf & 2) {
209
+ const ctx_r1 = i0.ɵɵnextContext();
210
+ i0.ɵɵadvance(2);
211
+ i0.ɵɵconditional(!ctx_r1.IsFirstStep ? 2 : -1);
212
+ i0.ɵɵadvance(4);
213
+ i0.ɵɵproperty("disabled", ctx_r1.IsValidating);
214
+ i0.ɵɵadvance();
215
+ i0.ɵɵconditional(ctx_r1.IsValidating ? 7 : ctx_r1.CurrentStep === "review" ? 8 : 9);
216
+ } }
217
+ const WIZARD_STEP_DEFS = [
218
+ { id: 'basics', label: 'Basics' },
219
+ { id: 'fields', label: 'Fields' },
220
+ { id: 'relationships', label: 'Relationships' },
221
+ { id: 'review', label: 'Review & Create' },
222
+ ];
223
+ const STEP_ORDER = ['basics', 'fields', 'relationships', 'review'];
224
+ export class DatabaseCreateWizardComponent {
225
+ // ─── Injected ──────────────────────────────────────────────────────────
226
+ designerService = inject(DatabaseDesignerService);
227
+ cdr = inject(ChangeDetectorRef);
228
+ // ─── Per-instance wizard state service ────────────────────────────────
229
+ WizardState = new EntityWizardStateService(this.designerService);
230
+ // ─── Outputs ───────────────────────────────────────────────────────────
231
+ /** Emitted when the wizard completes successfully. */
232
+ EntityCreated = new EventEmitter();
233
+ /** Emitted when the user cancels or clicks "Create Another". */
234
+ Cancelled = new EventEmitter();
235
+ // ─── Pipeline step ref ─────────────────────────────────────────────────
236
+ // StepPipelineComponent is rendered directly in the wizard's own template
237
+ // (via <mj-entity-step-pipeline>) so this ViewChild resolves correctly,
238
+ // unlike @ViewChild(EntityPipelinePanelComponent) which lives one level
239
+ // deeper inside StepPipelineComponent's own view.
240
+ stepPipelineRef;
241
+ // ─── View state ────────────────────────────────────────────────────────
242
+ CurrentStep = 'basics';
243
+ StepDefs = [];
244
+ IsValidating = false;
245
+ ValidationErrors = [];
246
+ /** True once the user has clicked "Create Entity" — pipeline runs inline on the review step. */
247
+ IsExecuting = false;
248
+ get StepIndex() {
249
+ return STEP_ORDER.indexOf(this.CurrentStep);
250
+ }
251
+ get IsFirstStep() { return this.StepIndex === 0; }
252
+ get IsLastStep() { return this.CurrentStep === 'review'; }
253
+ // ─── Lifecycle ─────────────────────────────────────────────────────────
254
+ destroy$ = new Subject();
255
+ AvailableSchemas = [];
256
+ constructor() {
257
+ this.WizardState.currentStep$
258
+ .pipe(takeUntil(this.destroy$))
259
+ .subscribe(step => {
260
+ this.CurrentStep = step;
261
+ this.rebuildStepDefs(step);
262
+ this.cdr.markForCheck();
263
+ });
264
+ this.WizardState.isValidating$
265
+ .pipe(takeUntil(this.destroy$))
266
+ .subscribe(v => { this.IsValidating = v; this.cdr.markForCheck(); });
267
+ this.WizardState.stepErrors$
268
+ .pipe(takeUntil(this.destroy$))
269
+ .subscribe(errors => {
270
+ this.ValidationErrors = Object.values(errors);
271
+ this.cdr.markForCheck();
272
+ });
273
+ // Build initial step defs
274
+ this.rebuildStepDefs('basics');
275
+ // Load available schemas asynchronously — wizard renders synchronously but
276
+ // the schema dropdown populates when the async result arrives
277
+ DatabaseDesignerEngine.Instance.loadAvailableSchemas().then(schemas => {
278
+ this.AvailableSchemas = schemas;
279
+ this.cdr.markForCheck();
280
+ });
281
+ }
282
+ ngOnDestroy() {
283
+ this.destroy$.next();
284
+ this.destroy$.complete();
285
+ this.WizardState.Destroy();
286
+ }
287
+ // ─── Step data handlers (called by child step components) ─────────────
288
+ OnBasicsChanged(value) {
289
+ this.WizardState.UpdateBasics(value);
290
+ }
291
+ OnFieldsChanged(columns) {
292
+ this.WizardState.UpdateFields(columns);
293
+ }
294
+ OnRelationshipsChanged(fks) {
295
+ this.WizardState.UpdateRelationshipsAndAutoColumns(fks);
296
+ }
297
+ // ─── Navigation ────────────────────────────────────────────────────────
298
+ async OnNext() {
299
+ const currentStep = this.CurrentStep;
300
+ // Synchronous validation for the current step
301
+ if (!this.WizardState.ValidateStep(currentStep))
302
+ return;
303
+ // Entering Review (step 4): run server-side validation first
304
+ if (currentStep === 'relationships') {
305
+ const result = await this.WizardState.ValidateSchema();
306
+ if (!result.Valid)
307
+ return;
308
+ }
309
+ // Review is the last step — "Create Entity" button triggers inline pipeline execution.
310
+ if (currentStep === 'review') {
311
+ this.IsExecuting = true;
312
+ this.cdr.markForCheck();
313
+ // @ViewChild(StepPipelineComponent) resolves after the @if block renders on the
314
+ // next CD cycle. The setTimeout gives Angular that cycle before we call StartPipeline().
315
+ // StepPipelineComponent.ngAfterViewInit() is also wired up as a belt-and-suspenders
316
+ // trigger — if it fires first, StartPipeline() is a no-op (idempotent guard inside).
317
+ setTimeout(() => this.stepPipelineRef?.StartPipeline());
318
+ return;
319
+ }
320
+ this.advanceToStep(STEP_ORDER[this.StepIndex + 1]);
321
+ }
322
+ OnBack() {
323
+ if (this.IsFirstStep || this.IsExecuting)
324
+ return;
325
+ this.advanceToStep(STEP_ORDER[this.StepIndex - 1]);
326
+ }
327
+ OnCancel() {
328
+ this.Cancelled.emit();
329
+ }
330
+ /** Re-run server-side schema validation without advancing the step. */
331
+ async OnRetryValidation() {
332
+ await this.WizardState.ValidateSchema();
333
+ }
334
+ /** Clear the current validation errors without re-running validation. */
335
+ OnDismissErrors() {
336
+ this.ValidationErrors = [];
337
+ this.cdr.markForCheck();
338
+ }
339
+ // ─── Pipeline events ───────────────────────────────────────────────────
340
+ OnPipelineCompleted(result) {
341
+ DatabaseDesignerEngine.Instance.invalidateCache();
342
+ this.EntityCreated.emit(result);
343
+ }
344
+ OnPipelineErrored(_msg) {
345
+ // Panel handles the error UI inline — nothing extra needed here
346
+ this.cdr.markForCheck();
347
+ }
348
+ OnCreateAnother() {
349
+ this.Cancelled.emit(); // Parent will re-open a fresh wizard if needed
350
+ }
351
+ // ─── Template helpers ──────────────────────────────────────────────────
352
+ get TableDefinition() { return this.WizardState.TableDefinition; }
353
+ TrackByStep(_, def) { return def.id; }
354
+ // ─── Private helpers ───────────────────────────────────────────────────
355
+ advanceToStep(step) {
356
+ this.ValidationErrors = [];
357
+ this.WizardState.GoToStep(step);
358
+ }
359
+ rebuildStepDefs(activeStep) {
360
+ const activeIndex = STEP_ORDER.indexOf(activeStep);
361
+ this.StepDefs = WIZARD_STEP_DEFS.map((def, i) => ({
362
+ ...def,
363
+ isActive: def.id === activeStep,
364
+ isComplete: i < activeIndex,
365
+ }));
366
+ }
367
+ static ɵfac = function DatabaseCreateWizardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DatabaseCreateWizardComponent)(); };
368
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DatabaseCreateWizardComponent, selectors: [["mj-database-create-wizard"]], viewQuery: function DatabaseCreateWizardComponent_Query(rf, ctx) { if (rf & 1) {
369
+ i0.ɵɵviewQuery(StepPipelineComponent, 5);
370
+ } if (rf & 2) {
371
+ let _t;
372
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.stepPipelineRef = _t.first);
373
+ } }, outputs: { EntityCreated: "EntityCreated", Cancelled: "Cancelled" }, standalone: false, decls: 5, vars: 4, consts: [[1, "wizard-root"], [3, "Steps", "CurrentStep"], [1, "wizard-body", "wizard-body-full"], ["direction", "horizontal", "gutterSize", "6", 1, "wizard-split"], [1, "wizard-footer"], [3, "PipelineCompleted", "CreateAnother", "TableDefinition"], [3, "size", "minSize"], [1, "wizard-body"], ["role", "alert", 1, "wizard-banner", "wizard-banner-error"], [3, "AvailableSchemas"], [3, "InitialColumns"], [3, "InitialForeignKeys", "AvailableColumns"], [3, "TableDefinition", "ValidationErrors", "IsValidating"], [1, "wizard-preview", 3, "TableDefinition"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "wizard-banner-body"], [1, "wizard-banner-title"], [1, "wizard-banner-list"], [1, "wizard-banner-actions"], ["mjButton", "", "buttonStyle", "secondary", "type", "button", 3, "disabled"], ["type", "button", "title", "Dismiss", 1, "wizard-banner-dismiss", 3, "click"], [1, "fa-solid", "fa-xmark"], ["mjButton", "", "buttonStyle", "secondary", "type", "button", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-rotate-right"], [3, "ValueChanged", "AvailableSchemas"], [3, "ColumnsChanged", "InitialColumns"], [3, "ForeignKeysChanged", "InitialForeignKeys", "AvailableColumns"], [1, "footer-left"], ["mjButton", "", "buttonStyle", "ghost", "type", "button"], [1, "footer-right"], ["mjButton", "", "buttonStyle", "secondary", "type", "button", 3, "click"], ["mjButton", "", "buttonStyle", "primary", "type", "button", 3, "click", "disabled"], ["mjButton", "", "buttonStyle", "ghost", "type", "button", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "fa-solid", "fa-rocket-launch"], [1, "fa-solid", "fa-arrow-right"]], template: function DatabaseCreateWizardComponent_Template(rf, ctx) { if (rf & 1) {
374
+ i0.ɵɵelementStart(0, "div", 0);
375
+ i0.ɵɵelement(1, "mj-entity-wizard-step-indicator", 1);
376
+ i0.ɵɵconditionalCreate(2, DatabaseCreateWizardComponent_Conditional_2_Template, 2, 1, "div", 2)(3, DatabaseCreateWizardComponent_Conditional_3_Template, 11, 13, "as-split", 3);
377
+ i0.ɵɵconditionalCreate(4, DatabaseCreateWizardComponent_Conditional_4_Template, 10, 3, "div", 4);
378
+ i0.ɵɵelementEnd();
379
+ } if (rf & 2) {
380
+ i0.ɵɵadvance();
381
+ i0.ɵɵproperty("Steps", ctx.StepDefs)("CurrentStep", ctx.StepIndex);
382
+ i0.ɵɵadvance();
383
+ i0.ɵɵconditional(ctx.IsExecuting ? 2 : 3);
384
+ i0.ɵɵadvance(2);
385
+ i0.ɵɵconditional(!ctx.IsExecuting ? 4 : -1);
386
+ } }, dependencies: [i1.MJButtonDirective, i2.SplitComponent, i2.SplitAreaComponent, i3.WizardStepIndicatorComponent, i4.DatabasePreviewPaneComponent, i5.StepBasicsComponent, i6.StepFieldsComponent, i7.StepRelationshipsComponent, i8.StepReviewComponent, i9.StepPipelineComponent, i10.AsyncPipe], styles: [".wizard-root[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n\n\n\n.wizard-split[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n width: 100%;\n}\n\n.wizard-split[_ngcontent-%COMP%] as-split-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n}\n\n.wizard-preview[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n min-width: 0;\n}\n\n\n\n\n.wizard-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 0;\n}\n\n.wizard-body-full[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n\n.wizard-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 12px 16px;\n margin: 16px 20px 0;\n border-radius: 8px;\n border: 1px solid var(--mj-status-error-border);\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n flex-shrink: 0;\n}\n\n.wizard-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 16px;\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n.wizard-banner-body[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.wizard-banner-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.9375rem;\n}\n\n.wizard-banner-list[_ngcontent-%COMP%] {\n margin: 0;\n padding-left: 18px;\n font-size: 0.875rem;\n line-height: 1.5;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.wizard-banner-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n word-break: break-word;\n}\n\n.wizard-banner-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.wizard-banner-dismiss[_ngcontent-%COMP%] {\n background: transparent;\n border: 0;\n color: var(--mj-status-error-text);\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 4px;\n opacity: 0.7;\n transition: opacity 120ms, background-color 120ms;\n}\n\n.wizard-banner-dismiss[_ngcontent-%COMP%]:hover {\n opacity: 1;\n background: color-mix(in srgb, var(--mj-status-error) 15%, transparent);\n}\n\n\n\n\n.wizard-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 20px;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n}\n\n.footer-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n}"], changeDetection: 0 });
387
+ }
388
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DatabaseCreateWizardComponent, [{
389
+ type: Component,
390
+ args: [{ standalone: false, selector: 'mj-database-create-wizard', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"wizard-root\">\n\n <!-- \u2500\u2500 Step indicator \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <mj-entity-wizard-step-indicator\n [Steps]=\"StepDefs\"\n [CurrentStep]=\"StepIndex\">\n </mj-entity-wizard-step-indicator>\n\n <!-- \u2500\u2500 Split body: steps (left) + live preview (right) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (IsExecuting) {\n\n <!-- Pipeline takes the full width while it runs -->\n <div class=\"wizard-body wizard-body-full\">\n <mj-entity-step-pipeline\n [TableDefinition]=\"TableDefinition\"\n (PipelineCompleted)=\"OnPipelineCompleted($event)\"\n (CreateAnother)=\"OnCreateAnother()\">\n </mj-entity-step-pipeline>\n </div>\n\n } @else {\n\n <as-split direction=\"horizontal\" class=\"wizard-split\" gutterSize=\"6\">\n\n <as-split-area [size]=\"55\" [minSize]=\"40\">\n <div class=\"wizard-body\">\n\n <!-- \u2500\u2500 Inline validation banner (replaces bottom-floating error bar) \u2500\u2500\u2500 -->\n @if (ValidationErrors.length > 0) {\n <div class=\"wizard-banner wizard-banner-error\" role=\"alert\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <div class=\"wizard-banner-body\">\n <div class=\"wizard-banner-title\">\n @if (ValidationErrors.length === 1) {\n We hit a problem\n } @else {\n We hit {{ ValidationErrors.length }} problems\n }\n </div>\n <ul class=\"wizard-banner-list\">\n @for (err of ValidationErrors; track $index) {\n <li>{{ err }}</li>\n }\n </ul>\n </div>\n <div class=\"wizard-banner-actions\">\n @if (CurrentStep === 'relationships' || CurrentStep === 'review') {\n <button\n mjButton\n buttonStyle=\"secondary\"\n type=\"button\"\n [disabled]=\"IsValidating\"\n (click)=\"OnRetryValidation()\">\n @if (IsValidating) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Retrying\u2026\n } @else {\n <i class=\"fa-solid fa-rotate-right\"></i>\n Retry\n }\n </button>\n }\n <button\n type=\"button\"\n class=\"wizard-banner-dismiss\"\n title=\"Dismiss\"\n (click)=\"OnDismissErrors()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n }\n\n <!-- Step 1: Basics -->\n @if (CurrentStep === 'basics') {\n <mj-entity-step-basics\n [AvailableSchemas]=\"AvailableSchemas\"\n (ValueChanged)=\"OnBasicsChanged($event)\">\n </mj-entity-step-basics>\n }\n\n <!-- Step 2: Fields -->\n @if (CurrentStep === 'fields') {\n <mj-entity-step-fields\n [InitialColumns]=\"TableDefinition.Columns ?? []\"\n (ColumnsChanged)=\"OnFieldsChanged($event)\">\n </mj-entity-step-fields>\n }\n\n <!-- Step 3: Relationships -->\n @if (CurrentStep === 'relationships') {\n <mj-entity-step-relationships\n [InitialForeignKeys]=\"TableDefinition.ForeignKeys ?? []\"\n [AvailableColumns]=\"TableDefinition.Columns ?? []\"\n (ForeignKeysChanged)=\"OnRelationshipsChanged($event)\">\n </mj-entity-step-relationships>\n }\n\n <!-- Step 4: Review & Create -->\n @if (CurrentStep === 'review') {\n <mj-entity-step-review\n [TableDefinition]=\"TableDefinition\"\n [ValidationErrors]=\"ValidationErrors\"\n [IsValidating]=\"IsValidating\">\n </mj-entity-step-review>\n }\n\n </div>\n </as-split-area>\n\n <as-split-area [size]=\"45\" [minSize]=\"25\">\n <mj-database-preview-pane\n class=\"wizard-preview\"\n [TableDefinition]=\"(WizardState.tableDefinition$ | async) ?? {}\">\n </mj-database-preview-pane>\n </as-split-area>\n\n </as-split>\n\n }\n\n <!-- \u2500\u2500 Footer navigation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (!IsExecuting) {\n <div class=\"wizard-footer\">\n <div class=\"footer-left\">\n @if (!IsFirstStep) {\n <button\n mjButton\n buttonStyle=\"ghost\"\n type=\"button\"\n (click)=\"OnBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back\n </button>\n }\n </div>\n <div class=\"footer-right\">\n <button\n mjButton\n buttonStyle=\"secondary\"\n type=\"button\"\n (click)=\"OnCancel()\">\n Cancel\n </button>\n <button\n mjButton\n buttonStyle=\"primary\"\n type=\"button\"\n [disabled]=\"IsValidating\"\n (click)=\"OnNext()\">\n @if (IsValidating) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Validating\u2026\n } @else if (CurrentStep === 'review') {\n Create Entity\n <i class=\"fa-solid fa-rocket-launch\"></i>\n } @else {\n Next\n <i class=\"fa-solid fa-arrow-right\"></i>\n }\n </button>\n </div>\n </div>\n }\n\n</div>\n", styles: [".wizard-root {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n/* \u2500\u2500 Split body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.wizard-split {\n flex: 1;\n min-height: 0;\n width: 100%;\n}\n\n.wizard-split as-split-area {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n}\n\n.wizard-preview {\n display: block;\n height: 100%;\n min-width: 0;\n}\n\n/* \u2500\u2500 Body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.wizard-body {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 0;\n}\n\n.wizard-body-full {\n width: 100%;\n}\n\n/* \u2500\u2500 Inline banner (at top of step content) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.wizard-banner {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 12px 16px;\n margin: 16px 20px 0;\n border-radius: 8px;\n border: 1px solid var(--mj-status-error-border);\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n flex-shrink: 0;\n}\n\n.wizard-banner > i {\n font-size: 16px;\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n.wizard-banner-body {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.wizard-banner-title {\n font-weight: 600;\n font-size: 0.9375rem;\n}\n\n.wizard-banner-list {\n margin: 0;\n padding-left: 18px;\n font-size: 0.875rem;\n line-height: 1.5;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.wizard-banner-list li {\n word-break: break-word;\n}\n\n.wizard-banner-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.wizard-banner-dismiss {\n background: transparent;\n border: 0;\n color: var(--mj-status-error-text);\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 4px;\n opacity: 0.7;\n transition: opacity 120ms, background-color 120ms;\n}\n\n.wizard-banner-dismiss:hover {\n opacity: 1;\n background: color-mix(in srgb, var(--mj-status-error) 15%, transparent);\n}\n\n/* \u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.wizard-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 20px;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n}\n\n.footer-right {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n"] }]
391
+ }], () => [], { EntityCreated: [{
392
+ type: Output
393
+ }], Cancelled: [{
394
+ type: Output
395
+ }], stepPipelineRef: [{
396
+ type: ViewChild,
397
+ args: [StepPipelineComponent]
398
+ }] }); })();
399
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DatabaseCreateWizardComponent, { className: "DatabaseCreateWizardComponent", filePath: "src/DatabaseDesigner/components/create-wizard/database-create-wizard.component.ts", lineNumber: 51 }); })();
400
+ //# sourceMappingURL=database-create-wizard.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-create-wizard.component.js","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/create-wizard/database-create-wizard.component.ts","../../../../src/DatabaseDesigner/components/create-wizard/database-create-wizard.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @module database-create-wizard.component\n * @description Multi-step wizard for creating a new Database Designer entity.\n *\n * Rendered inside an `mj-slide-panel` by the dashboard. Manages step routing\n * and owns one `EntityWizardStateService` instance for the duration the panel\n * is open.\n *\n * Wizard steps:\n * 1 Basics — entity name, table name, schema, description\n * 2 Fields — column definitions (EntityFieldsGridComponent)\n * 3 Relationships — optional foreign keys\n * 4 Review — read-only schema preview + server-side validation\n * 5 Create — pipeline execution + result (EntityPipelinePanelComponent)\n *\n * Step 5 is terminal — once the pipeline starts there is no Back navigation.\n */\n\nimport {\n Component, Output, EventEmitter, OnDestroy,\n ChangeDetectionStrategy, ChangeDetectorRef, inject, ViewChild,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { DatabaseDesignerService } from '../../services/database-designer.service.js';\nimport { EntityWizardStateService } from '../../services/entity-wizard-state.service.js';\nimport { DatabaseDesignerEngine } from '../../services/database-designer.engine.js';\nimport { StepPipelineComponent } from './steps/step-pipeline.component.js';\nimport type {\n WizardStep, WizardStepDef, BasicsStepValue,\n ColumnSpec, ForeignKeySpec, EntityPipelineResult, SchemaOption,\n} from '../../database-designer.types.js';\n\nconst WIZARD_STEP_DEFS: Omit<WizardStepDef, 'isComplete' | 'isActive'>[] = [\n { id: 'basics', label: 'Basics' },\n { id: 'fields', label: 'Fields' },\n { id: 'relationships', label: 'Relationships' },\n { id: 'review', label: 'Review & Create' },\n];\n\nconst STEP_ORDER: WizardStep[] = ['basics', 'fields', 'relationships', 'review'];\n\n@Component({\n standalone: false,\n selector: 'mj-database-create-wizard',\n templateUrl: './database-create-wizard.component.html',\n styleUrls: ['./database-create-wizard.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatabaseCreateWizardComponent implements OnDestroy {\n\n // ─── Injected ──────────────────────────────────────────────────────────\n\n private readonly designerService = inject(DatabaseDesignerService);\n private readonly cdr = inject(ChangeDetectorRef);\n\n // ─── Per-instance wizard state service ────────────────────────────────\n\n public readonly WizardState = new EntityWizardStateService(this.designerService);\n\n // ─── Outputs ───────────────────────────────────────────────────────────\n\n /** Emitted when the wizard completes successfully. */\n @Output() public readonly EntityCreated = new EventEmitter<EntityPipelineResult>();\n\n /** Emitted when the user cancels or clicks \"Create Another\". */\n @Output() public readonly Cancelled = new EventEmitter<void>();\n\n // ─── Pipeline step ref ─────────────────────────────────────────────────\n\n // StepPipelineComponent is rendered directly in the wizard's own template\n // (via <mj-entity-step-pipeline>) so this ViewChild resolves correctly,\n // unlike @ViewChild(EntityPipelinePanelComponent) which lives one level\n // deeper inside StepPipelineComponent's own view.\n @ViewChild(StepPipelineComponent)\n private stepPipelineRef?: StepPipelineComponent;\n\n // ─── View state ────────────────────────────────────────────────────────\n\n public CurrentStep: WizardStep = 'basics';\n public StepDefs: WizardStepDef[] = [];\n public IsValidating = false;\n public ValidationErrors: string[] = [];\n /** True once the user has clicked \"Create Entity\" — pipeline runs inline on the review step. */\n public IsExecuting = false;\n\n public get StepIndex(): number {\n return STEP_ORDER.indexOf(this.CurrentStep);\n }\n\n public get IsFirstStep(): boolean { return this.StepIndex === 0; }\n public get IsLastStep(): boolean { return this.CurrentStep === 'review'; }\n\n // ─── Lifecycle ─────────────────────────────────────────────────────────\n\n private readonly destroy$ = new Subject<void>();\n\n public AvailableSchemas: SchemaOption[] = [];\n\n constructor() {\n this.WizardState.currentStep$\n .pipe(takeUntil(this.destroy$))\n .subscribe(step => {\n this.CurrentStep = step;\n this.rebuildStepDefs(step);\n this.cdr.markForCheck();\n });\n\n this.WizardState.isValidating$\n .pipe(takeUntil(this.destroy$))\n .subscribe(v => { this.IsValidating = v; this.cdr.markForCheck(); });\n\n this.WizardState.stepErrors$\n .pipe(takeUntil(this.destroy$))\n .subscribe(errors => {\n this.ValidationErrors = Object.values(errors);\n this.cdr.markForCheck();\n });\n\n // Build initial step defs\n this.rebuildStepDefs('basics');\n\n // Load available schemas asynchronously — wizard renders synchronously but\n // the schema dropdown populates when the async result arrives\n DatabaseDesignerEngine.Instance.loadAvailableSchemas().then(schemas => {\n this.AvailableSchemas = schemas;\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.WizardState.Destroy();\n }\n\n // ─── Step data handlers (called by child step components) ─────────────\n\n public OnBasicsChanged(value: BasicsStepValue): void {\n this.WizardState.UpdateBasics(value);\n }\n\n public OnFieldsChanged(columns: ColumnSpec[]): void {\n this.WizardState.UpdateFields(columns);\n }\n\n public OnRelationshipsChanged(fks: ForeignKeySpec[]): void {\n this.WizardState.UpdateRelationshipsAndAutoColumns(fks);\n }\n\n // ─── Navigation ────────────────────────────────────────────────────────\n\n public async OnNext(): Promise<void> {\n const currentStep = this.CurrentStep;\n\n // Synchronous validation for the current step\n if (!this.WizardState.ValidateStep(currentStep)) return;\n\n // Entering Review (step 4): run server-side validation first\n if (currentStep === 'relationships') {\n const result = await this.WizardState.ValidateSchema();\n if (!result.Valid) return;\n }\n\n // Review is the last step — \"Create Entity\" button triggers inline pipeline execution.\n if (currentStep === 'review') {\n this.IsExecuting = true;\n this.cdr.markForCheck();\n // @ViewChild(StepPipelineComponent) resolves after the @if block renders on the\n // next CD cycle. The setTimeout gives Angular that cycle before we call StartPipeline().\n // StepPipelineComponent.ngAfterViewInit() is also wired up as a belt-and-suspenders\n // trigger — if it fires first, StartPipeline() is a no-op (idempotent guard inside).\n setTimeout(() => this.stepPipelineRef?.StartPipeline());\n return;\n }\n\n this.advanceToStep(STEP_ORDER[this.StepIndex + 1]);\n }\n\n public OnBack(): void {\n if (this.IsFirstStep || this.IsExecuting) return;\n this.advanceToStep(STEP_ORDER[this.StepIndex - 1]);\n }\n\n public OnCancel(): void {\n this.Cancelled.emit();\n }\n\n /** Re-run server-side schema validation without advancing the step. */\n public async OnRetryValidation(): Promise<void> {\n await this.WizardState.ValidateSchema();\n }\n\n /** Clear the current validation errors without re-running validation. */\n public OnDismissErrors(): void {\n this.ValidationErrors = [];\n this.cdr.markForCheck();\n }\n\n // ─── Pipeline events ───────────────────────────────────────────────────\n\n public OnPipelineCompleted(result: EntityPipelineResult): void {\n DatabaseDesignerEngine.Instance.invalidateCache();\n this.EntityCreated.emit(result);\n }\n\n public OnPipelineErrored(_msg: string): void {\n // Panel handles the error UI inline — nothing extra needed here\n this.cdr.markForCheck();\n }\n\n public OnCreateAnother(): void {\n this.Cancelled.emit(); // Parent will re-open a fresh wizard if needed\n }\n\n // ─── Template helpers ──────────────────────────────────────────────────\n\n public get TableDefinition() { return this.WizardState.TableDefinition; }\n\n public TrackByStep(_: number, def: WizardStepDef): string { return def.id; }\n\n // ─── Private helpers ───────────────────────────────────────────────────\n\n private advanceToStep(step: WizardStep): void {\n this.ValidationErrors = [];\n this.WizardState.GoToStep(step);\n }\n\n private rebuildStepDefs(activeStep: WizardStep): void {\n const activeIndex = STEP_ORDER.indexOf(activeStep);\n this.StepDefs = WIZARD_STEP_DEFS.map((def, i) => ({\n ...def,\n isActive: def.id === activeStep,\n isComplete: i < activeIndex,\n }));\n }\n}\n","<div class=\"wizard-root\">\n\n <!-- ── Step indicator ──────────────────────────────────────────────────── -->\n <mj-entity-wizard-step-indicator\n [Steps]=\"StepDefs\"\n [CurrentStep]=\"StepIndex\">\n </mj-entity-wizard-step-indicator>\n\n <!-- ── Split body: steps (left) + live preview (right) ─────────────────── -->\n @if (IsExecuting) {\n\n <!-- Pipeline takes the full width while it runs -->\n <div class=\"wizard-body wizard-body-full\">\n <mj-entity-step-pipeline\n [TableDefinition]=\"TableDefinition\"\n (PipelineCompleted)=\"OnPipelineCompleted($event)\"\n (CreateAnother)=\"OnCreateAnother()\">\n </mj-entity-step-pipeline>\n </div>\n\n } @else {\n\n <as-split direction=\"horizontal\" class=\"wizard-split\" gutterSize=\"6\">\n\n <as-split-area [size]=\"55\" [minSize]=\"40\">\n <div class=\"wizard-body\">\n\n <!-- ── Inline validation banner (replaces bottom-floating error bar) ─── -->\n @if (ValidationErrors.length > 0) {\n <div class=\"wizard-banner wizard-banner-error\" role=\"alert\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <div class=\"wizard-banner-body\">\n <div class=\"wizard-banner-title\">\n @if (ValidationErrors.length === 1) {\n We hit a problem\n } @else {\n We hit {{ ValidationErrors.length }} problems\n }\n </div>\n <ul class=\"wizard-banner-list\">\n @for (err of ValidationErrors; track $index) {\n <li>{{ err }}</li>\n }\n </ul>\n </div>\n <div class=\"wizard-banner-actions\">\n @if (CurrentStep === 'relationships' || CurrentStep === 'review') {\n <button\n mjButton\n buttonStyle=\"secondary\"\n type=\"button\"\n [disabled]=\"IsValidating\"\n (click)=\"OnRetryValidation()\">\n @if (IsValidating) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Retrying…\n } @else {\n <i class=\"fa-solid fa-rotate-right\"></i>\n Retry\n }\n </button>\n }\n <button\n type=\"button\"\n class=\"wizard-banner-dismiss\"\n title=\"Dismiss\"\n (click)=\"OnDismissErrors()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n }\n\n <!-- Step 1: Basics -->\n @if (CurrentStep === 'basics') {\n <mj-entity-step-basics\n [AvailableSchemas]=\"AvailableSchemas\"\n (ValueChanged)=\"OnBasicsChanged($event)\">\n </mj-entity-step-basics>\n }\n\n <!-- Step 2: Fields -->\n @if (CurrentStep === 'fields') {\n <mj-entity-step-fields\n [InitialColumns]=\"TableDefinition.Columns ?? []\"\n (ColumnsChanged)=\"OnFieldsChanged($event)\">\n </mj-entity-step-fields>\n }\n\n <!-- Step 3: Relationships -->\n @if (CurrentStep === 'relationships') {\n <mj-entity-step-relationships\n [InitialForeignKeys]=\"TableDefinition.ForeignKeys ?? []\"\n [AvailableColumns]=\"TableDefinition.Columns ?? []\"\n (ForeignKeysChanged)=\"OnRelationshipsChanged($event)\">\n </mj-entity-step-relationships>\n }\n\n <!-- Step 4: Review & Create -->\n @if (CurrentStep === 'review') {\n <mj-entity-step-review\n [TableDefinition]=\"TableDefinition\"\n [ValidationErrors]=\"ValidationErrors\"\n [IsValidating]=\"IsValidating\">\n </mj-entity-step-review>\n }\n\n </div>\n </as-split-area>\n\n <as-split-area [size]=\"45\" [minSize]=\"25\">\n <mj-database-preview-pane\n class=\"wizard-preview\"\n [TableDefinition]=\"(WizardState.tableDefinition$ | async) ?? {}\">\n </mj-database-preview-pane>\n </as-split-area>\n\n </as-split>\n\n }\n\n <!-- ── Footer navigation ─────────────────────────────────────────────── -->\n @if (!IsExecuting) {\n <div class=\"wizard-footer\">\n <div class=\"footer-left\">\n @if (!IsFirstStep) {\n <button\n mjButton\n buttonStyle=\"ghost\"\n type=\"button\"\n (click)=\"OnBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back\n </button>\n }\n </div>\n <div class=\"footer-right\">\n <button\n mjButton\n buttonStyle=\"secondary\"\n type=\"button\"\n (click)=\"OnCancel()\">\n Cancel\n </button>\n <button\n mjButton\n buttonStyle=\"primary\"\n type=\"button\"\n [disabled]=\"IsValidating\"\n (click)=\"OnNext()\">\n @if (IsValidating) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Validating…\n } @else if (CurrentStep === 'review') {\n Create Entity\n <i class=\"fa-solid fa-rocket-launch\"></i>\n } @else {\n Next\n <i class=\"fa-solid fa-arrow-right\"></i>\n }\n </button>\n </div>\n </div>\n }\n\n</div>\n"]}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @module step-basics.component
3
+ * @description Step 1 of the create wizard — entity name, table name, schema, description.
4
+ *
5
+ * Auto-derives the table name from entity name (PascalCase, no spaces) but
6
+ * lets the user override it freely. Once the user manually edits the table
7
+ * name it stops tracking entity name changes.
8
+ */
9
+ import { EventEmitter, OnInit } from '@angular/core';
10
+ import type { BasicsStepValue, SchemaOption } from '../../../database-designer.types.js';
11
+ import * as i0 from "@angular/core";
12
+ export declare class StepBasicsComponent implements OnInit {
13
+ private readonly cdr;
14
+ InitialValue: Partial<BasicsStepValue>;
15
+ private _availableSchemas;
16
+ set AvailableSchemas(schemas: SchemaOption[]);
17
+ get AvailableSchemas(): SchemaOption[];
18
+ readonly ValueChanged: EventEmitter<BasicsStepValue>;
19
+ EntityName: string;
20
+ TableName: string;
21
+ SchemaName: string;
22
+ Description: string;
23
+ /** When true, TableName auto-tracks EntityName changes. */
24
+ tableNameIsAuto: boolean;
25
+ ShowCustomSchemaInput: boolean;
26
+ CustomSchemaName: string;
27
+ ngOnInit(): void;
28
+ OnEntityNameChange(value: string): void;
29
+ OnTableNameChange(value: string): void;
30
+ OnSchemaChange(value: string): void;
31
+ OnCustomSchemaChange(value: string): void;
32
+ OnDescriptionChange(value: string): void;
33
+ /** Pick the first schema in the list as default (usually '__mj_UDT'). */
34
+ private defaultSchema;
35
+ private updateCustomSchemaVisibility;
36
+ /** Convert "Support Tickets" → "SupportTickets". */
37
+ deriveTableName(entityName: string): string;
38
+ private emit;
39
+ static ɵfac: i0.ɵɵFactoryDeclaration<StepBasicsComponent, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepBasicsComponent, "mj-entity-step-basics", never, { "InitialValue": { "alias": "InitialValue"; "required": false; }; "AvailableSchemas": { "alias": "AvailableSchemas"; "required": false; }; }, { "ValueChanged": "ValueChanged"; }, never, never, false, never>;
41
+ }
42
+ //# sourceMappingURL=step-basics.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-basics.component.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseDesigner/components/create-wizard/steps/step-basics.component.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACuB,YAAY,EAAE,MAAM,EAEjD,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;;AAEzF,qBAOa,mBAAoB,YAAW,MAAM;IAE9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IAEjC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IAE5D,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,IACI,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAS3C;IACD,IAAI,gBAAgB,IAAI,YAAY,EAAE,CAAmC;IAEzE,SAA0B,YAAY,gCAAuC;IAItE,UAAU,SAAM;IAChB,SAAS,SAAM;IACf,UAAU,SAAM;IAChB,WAAW,SAAM;IAExB,2DAA2D;IACpD,eAAe,UAAQ;IAIvB,qBAAqB,UAAS;IAC9B,gBAAgB,SAAM;IAI7B,QAAQ,IAAI,IAAI;IAiBT,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQvC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOtC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOnC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMzC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO/C,yEAAyE;IACzE,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,4BAA4B;IASpC,oDAAoD;IAC7C,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IASlD,OAAO,CAAC,IAAI;yCApHH,mBAAmB;2CAAnB,mBAAmB;CA8H/B"}