@memberjunction/ng-dashboards 5.34.1 → 5.36.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 (407) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +96 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +453 -122
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  40. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2084 -2079
  41. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  44. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  45. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  46. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  47. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  48. package/dist/AI/components/models/model-management.component.js +370 -425
  49. package/dist/AI/components/models/model-management.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  51. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  52. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  53. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  55. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  56. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  57. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  59. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  60. package/dist/AI/components/system/system-configuration.component.js +403 -362
  61. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  62. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  63. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/tags/tags-resource.component.js +1423 -1438
  65. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  66. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  67. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  68. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  69. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  70. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  71. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  72. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  73. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  74. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  75. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  76. package/dist/Actions/components/actions-overview.component.js +202 -158
  77. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  78. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  79. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  80. package/dist/Actions/components/execution-monitoring.component.js +191 -142
  81. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  82. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  83. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  84. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  85. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  86. package/dist/Actions/components/explorer/index.d.ts +0 -1
  87. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  88. package/dist/Actions/components/explorer/index.js +0 -1
  89. package/dist/Actions/components/explorer/index.js.map +1 -1
  90. package/dist/Admin/admin-data-schema.component.js +19 -79
  91. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  92. package/dist/Admin/admin-dev-tools-resource.component.js +19 -79
  93. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  94. package/dist/Admin/admin-identity-access.component.js +19 -79
  95. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  96. package/dist/Admin/admin-monitoring.component.js +19 -79
  97. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  98. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  99. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  100. package/dist/Admin/base-admin-container.component.js +26 -17
  101. package/dist/Admin/base-admin-container.component.js.map +1 -1
  102. package/dist/ApplicationRoles/application-roles-resource.component.js +92 -91
  103. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  104. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  105. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  106. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  107. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  108. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  109. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  110. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  111. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  112. package/dist/Communication/communication-logs-resource.component.js +80 -99
  113. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  114. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  115. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  116. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  117. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  118. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  119. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  120. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  121. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  122. package/dist/Communication/communication-providers-resource.component.js +44 -45
  123. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  124. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  125. package/dist/Communication/communication-runs-resource.component.js +60 -58
  126. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  127. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  128. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  129. package/dist/Communication/communication-templates-resource.component.js +139 -162
  130. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  131. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  132. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  133. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  134. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  135. package/dist/Credentials/components/credentials-categories-resource.component.js +238 -266
  136. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  137. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  138. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  139. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  140. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  141. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  142. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  143. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  144. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  145. package/dist/Credentials/components/credentials-types-resource.component.js +290 -305
  146. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  147. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  148. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  149. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +41 -21
  150. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  151. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  152. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  153. package/dist/DatabaseDesigner/components/entity-list.component.js +148 -155
  154. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  155. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  156. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  157. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +25 -1
  158. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  159. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  160. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  161. package/dist/DevTools/app-state-inspector.component.js +46 -72
  162. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  163. package/dist/DevTools/class-registry.component.js +88 -100
  164. package/dist/DevTools/class-registry.component.js.map +1 -1
  165. package/dist/DevTools/event-monitor.component.js +158 -168
  166. package/dist/DevTools/event-monitor.component.js.map +1 -1
  167. package/dist/DevTools/graphql-console.component.js +257 -264
  168. package/dist/DevTools/graphql-console.component.js.map +1 -1
  169. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  170. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  171. package/dist/DevTools/layout-inspector.component.js +46 -64
  172. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  173. package/dist/DevTools/lazy-module-status.component.js +75 -84
  174. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  175. package/dist/DevTools/settings-explorer.component.js +76 -85
  176. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  177. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  178. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  179. package/dist/EntityAdmin/entity-admin-dashboard.component.js +24 -16
  180. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  181. package/dist/Home/home-dashboard.component.d.ts +6 -0
  182. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  183. package/dist/Home/home-dashboard.component.js +521 -485
  184. package/dist/Home/home-dashboard.component.js.map +1 -1
  185. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  186. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  187. package/dist/Integration/components/activity/activity.component.js +307 -318
  188. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  189. package/dist/Integration/components/connections/connections.component.js +654 -648
  190. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  191. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  192. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  193. package/dist/Integration/components/overview/overview.component.js +182 -163
  194. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  195. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  196. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  197. package/dist/Integration/components/pipelines/pipelines.component.js +595 -606
  198. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  199. package/dist/Integration/components/schedules/schedules.component.js +230 -241
  200. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  201. package/dist/Integration/integration.module.d.ts +1 -1
  202. package/dist/Integration/integration.module.d.ts.map +1 -1
  203. package/dist/Integration/integration.module.js +28 -1
  204. package/dist/Integration/integration.module.js.map +1 -1
  205. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  206. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  207. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1138 -1147
  208. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  209. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  210. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  211. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  212. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  213. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +684 -697
  214. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  215. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  216. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  217. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  218. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  219. package/dist/Lists/components/lists-browse-resource.component.d.ts +120 -1
  220. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  221. package/dist/Lists/components/lists-browse-resource.component.js +1239 -610
  222. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  223. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  224. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  225. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  226. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  227. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  228. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  229. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  230. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  231. package/dist/Lists/components/lists-operations-resource.component.js +1460 -272
  232. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  233. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  234. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  235. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  236. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  237. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  238. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  239. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  240. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  241. package/dist/Lists/index.d.ts +1 -0
  242. package/dist/Lists/index.d.ts.map +1 -1
  243. package/dist/Lists/index.js +1 -0
  244. package/dist/Lists/index.js.map +1 -1
  245. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  246. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  247. package/dist/Lists/services/list-set-operations.service.js +236 -10
  248. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  249. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  250. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  251. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  252. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  253. package/dist/MCP/mcp.module.d.ts +1 -1
  254. package/dist/MCP/mcp.module.d.ts.map +1 -1
  255. package/dist/MCP/mcp.module.js +34 -1
  256. package/dist/MCP/mcp.module.js.map +1 -1
  257. package/dist/Permissions/audit-log-resource.component.js +76 -85
  258. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  259. package/dist/Permissions/resource-access-resource.component.js +64 -69
  260. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  261. package/dist/Permissions/user-access-resource.component.js +63 -74
  262. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  264. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  266. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  267. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  268. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  270. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  271. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  272. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  273. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  274. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  275. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  276. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  277. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  278. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  279. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  280. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  281. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  282. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  283. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  284. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  285. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  286. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  287. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  288. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  289. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  290. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  291. package/dist/Scheduling/scheduling-dashboard.component.js +259 -103
  292. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  293. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  294. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  295. package/dist/SystemDiagnostics/system-diagnostics.component.js +1009 -1264
  296. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  297. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  298. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  300. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  301. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  302. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  303. package/dist/Testing/components/testing-analytics.component.js +420 -393
  304. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  305. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  306. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  307. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  308. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  309. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  310. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  311. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  312. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  313. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  314. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  315. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  316. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  317. package/dist/Testing/components/testing-explorer.component.d.ts +38 -6
  318. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  319. package/dist/Testing/components/testing-explorer.component.js +679 -786
  320. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  321. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  322. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  323. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  324. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  325. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  326. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  327. package/dist/Testing/components/testing-review.component.js +310 -274
  328. package/dist/Testing/components/testing-review.component.js.map +1 -1
  329. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  330. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  331. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  332. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  333. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  334. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  335. package/dist/Testing/components/testing-runs.component.js +307 -273
  336. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  337. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  338. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  339. package/dist/Testing/testing-dashboard.component.js +114 -99
  340. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  341. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  342. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  343. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  344. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  345. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  346. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  347. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  348. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  349. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  350. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  351. package/dist/actions-dashboards.module.d.ts +15 -16
  352. package/dist/actions-dashboards.module.d.ts.map +1 -1
  353. package/dist/actions-dashboards.module.js +34 -11
  354. package/dist/actions-dashboards.module.js.map +1 -1
  355. package/dist/ai-dashboards.module.d.ts +45 -48
  356. package/dist/ai-dashboards.module.d.ts.map +1 -1
  357. package/dist/ai-dashboards.module.js +51 -10
  358. package/dist/ai-dashboards.module.js.map +1 -1
  359. package/dist/archiving-dashboards.module.d.ts +2 -1
  360. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  361. package/dist/archiving-dashboards.module.js +12 -2
  362. package/dist/archiving-dashboards.module.js.map +1 -1
  363. package/dist/communication-dashboards.module.d.ts +9 -6
  364. package/dist/communication-dashboards.module.d.ts.map +1 -1
  365. package/dist/communication-dashboards.module.js +37 -7
  366. package/dist/communication-dashboards.module.js.map +1 -1
  367. package/dist/core-dashboards.module.d.ts +1 -1
  368. package/dist/core-dashboards.module.d.ts.map +1 -1
  369. package/dist/core-dashboards.module.js +46 -1
  370. package/dist/core-dashboards.module.js.map +1 -1
  371. package/dist/credentials-dashboards.module.d.ts +1 -1
  372. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  373. package/dist/credentials-dashboards.module.js +28 -1
  374. package/dist/credentials-dashboards.module.js.map +1 -1
  375. package/dist/lists-dashboards.module.d.ts +10 -9
  376. package/dist/lists-dashboards.module.d.ts.map +1 -1
  377. package/dist/lists-dashboards.module.js +40 -2
  378. package/dist/lists-dashboards.module.js.map +1 -1
  379. package/dist/public-api.d.ts +3 -2
  380. package/dist/public-api.d.ts.map +1 -1
  381. package/dist/public-api.js +4 -3
  382. package/dist/public-api.js.map +1 -1
  383. package/dist/scheduling-dashboards.module.d.ts +1 -1
  384. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  385. package/dist/scheduling-dashboards.module.js +31 -1
  386. package/dist/scheduling-dashboards.module.js.map +1 -1
  387. package/dist/testing-dashboards.module.d.ts +8 -7
  388. package/dist/testing-dashboards.module.d.ts.map +1 -1
  389. package/dist/testing-dashboards.module.js +42 -0
  390. package/dist/testing-dashboards.module.js.map +1 -1
  391. package/package.json +53 -52
  392. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  393. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  394. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  395. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  396. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  397. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  398. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  399. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  400. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  401. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  402. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  403. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  404. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  405. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  406. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  407. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"graphql-console.component.js","sourceRoot":"","sources":["../../src/DevTools/graphql-console.component.ts","../../src/DevTools/graphql-console.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ElementRef, ViewChild, HostListener, inject } from '@angular/core';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { EntityInfo, EntityFieldInfo, getGraphQLTypeNameBase } from '@memberjunction/core';\nimport { GraphQLDataProvider, FieldMapper } from '@memberjunction/graphql-dataprovider';\nimport { DevToolsPrefs } from './dev-tools-prefs';\n\ninterface HistoryEntry {\n id: string;\n query: string;\n variables: string;\n timestamp: Date;\n durationMs?: number;\n status: 'ok' | 'error' | 'pending';\n favorite: boolean;\n label?: string;\n}\n\n/** GraphQL introspection — minimal subset sufficient for the explorer. */\ninterface IntrospectedTypeRef {\n kind: 'NON_NULL' | 'LIST' | 'SCALAR' | 'OBJECT' | 'ENUM' | 'INPUT_OBJECT' | 'INTERFACE' | 'UNION' | string;\n name: string | null;\n ofType?: IntrospectedTypeRef | null;\n}\ninterface IntrospectedArg {\n name: string;\n description?: string | null;\n type: IntrospectedTypeRef;\n defaultValue?: string | null;\n}\ninterface IntrospectedField {\n name: string;\n description?: string | null;\n args: IntrospectedArg[];\n type: IntrospectedTypeRef;\n}\ninterface IntrospectedType {\n kind: string;\n name: string;\n description?: string | null;\n fields?: IntrospectedField[] | null;\n}\ninterface SchemaOperation {\n name: string;\n kind: 'query' | 'mutation';\n description: string;\n argSummary: string;\n returnSummary: string;\n field: IntrospectedField;\n}\n\ntype SidebarTab = 'history' | 'schema' | 'entities';\ntype EntityOpKind = 'view' | 'byId' | 'create' | 'update' | 'delete';\n\ninterface EntityListItem {\n info: EntityInfo;\n typeName: string;\n schema: string;\n /** True when this entity is currently expanded showing operation buttons. */\n expanded: boolean;\n}\n\nconst PREFS_KEY = 'graphqlConsole';\nconst HISTORY_LIMIT = 30;\n\nconst SAMPLE_QUERY = `# Welcome to the GraphQL Console\n# Press Cmd/Ctrl+Enter to run.\n# Authentication is handled by the active GraphQL provider.\n\nquery GetCurrentUser {\n CurrentUser {\n ID\n Name\n Email\n }\n}\n`;\n\n/**\n * GraphQL Console — write and run arbitrary GraphQL queries against the\n * connected MJ API. Re-uses the active GraphQLDataProvider client (auth +\n * session intact). Local history with copy / favorite / replay; copy-as-curl;\n * keyboard shortcut (Cmd/Ctrl+Enter) to run.\n */\n@RegisterClass(BaseResourceComponent, 'GraphQLConsoleInspector')\n@Component({\n standalone: false,\n selector: 'mj-graphql-console',\n templateUrl: './graphql-console.component.html',\n styleUrls: ['./inspector-shared.css', './graphql-console.component.css']\n})\nexport class GraphQLConsoleComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n\n @ViewChild('queryEditor') queryEditor?: ElementRef<HTMLTextAreaElement>;\n\n public Query = SAMPLE_QUERY;\n public Variables = '{}';\n public ShowVariables = false;\n\n public Running = false;\n public ResponseJson = '';\n public ResponseStatus: 'ok' | 'error' | 'idle' = 'idle';\n public ResponseDurationMs: number | null = null;\n public ResponseSizeBytes: number | null = null;\n public ErrorMessage: string | null = null;\n\n public History: HistoryEntry[] = [];\n public ShowHistory = true;\n public CopyConfirmed = false;\n\n public ApiUrl = '';\n\n // Schema explorer state\n public SidebarTab: SidebarTab = 'history';\n public SchemaLoading = false;\n public SchemaError: string | null = null;\n public SchemaIntrospectionDisabled = false;\n public SchemaSearch = '';\n public SchemaKindFilter: 'all' | 'query' | 'mutation' = 'all';\n public Operations: SchemaOperation[] = [];\n private schemaLoaded = false;\n\n // Entities tab state\n public EntitiesSearch = '';\n public Entities: EntityListItem[] = [];\n public EntitySchemaFilter = ''; // '' = all\n public KnownSchemas: string[] = [];\n\n // Pane sizing (resizable splitters)\n public SidebarWidthPx = 280;\n public EditorHeightPct = 50; // % of main pane height for editor (50/50 split default)\n private resizing: 'sidebar' | 'editor' | null = null;\n private elementRef = inject(ElementRef);\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n public ngOnInit(): void {\n this.loadFromStorage();\n try {\n this.ApiUrl = GraphQLDataProvider.Instance.ConfigData?.URL ?? '';\n } catch { /* not configured */ }\n this.loadEntities();\n this.NotifyLoadComplete();\n }\n\n public ngOnDestroy(): void {\n this.saveToStorage();\n this.detachResizeListeners();\n }\n\n private loadEntities(): void {\n try {\n const md = this.ProviderToUse;\n if (!md) return;\n const items: EntityListItem[] = (md.Entities ?? []).map(e => ({\n info: e,\n typeName: getGraphQLTypeNameBase(e),\n schema: e.SchemaName ?? '(unknown)',\n expanded: false\n })).sort((a, b) => a.info.Name.localeCompare(b.info.Name));\n this.Entities = items;\n const schemas = new Set<string>();\n for (const i of items) schemas.add(i.schema);\n this.KnownSchemas = Array.from(schemas).sort();\n } catch { /* metadata not ready */ }\n }\n\n public override async GetResourceDisplayName(): Promise<string> { return 'GraphQL Console'; }\n public override async GetResourceIconClass(): Promise<string> { return 'fa-solid fa-code'; }\n\n @HostListener('keydown', ['$event'])\n public OnHostKeydown(event: KeyboardEvent): void {\n if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {\n event.preventDefault();\n void this.OnRun();\n }\n }\n\n public async OnRun(): Promise<void> {\n const trimmedQuery = this.Query.trim();\n if (!trimmedQuery) {\n this.ErrorMessage = 'Query is empty.';\n return;\n }\n let parsedVars: Record<string, unknown> | null = null;\n if (this.Variables.trim()) {\n try {\n parsedVars = JSON.parse(this.Variables);\n } catch (err) {\n this.ResponseStatus = 'error';\n this.ErrorMessage = 'Variables must be valid JSON: ' + (err instanceof Error ? err.message : String(err));\n this.ResponseJson = '';\n this.cdr.markForCheck();\n return;\n }\n }\n\n this.Running = true;\n this.ErrorMessage = null;\n this.ResponseStatus = 'idle';\n this.ResponseJson = '';\n this.cdr.markForCheck();\n\n const start = performance.now();\n try {\n const data = await GraphQLDataProvider.ExecuteGQL(trimmedQuery, parsedVars);\n const elapsed = performance.now() - start;\n const text = JSON.stringify(data, null, 2);\n this.ResponseJson = text;\n this.ResponseStatus = 'ok';\n this.ResponseDurationMs = Math.round(elapsed);\n this.ResponseSizeBytes = new Blob([text]).size;\n this.recordHistory(trimmedQuery, this.Variables, 'ok', this.ResponseDurationMs);\n } catch (err: unknown) {\n const elapsed = performance.now() - start;\n this.ResponseStatus = 'error';\n this.ResponseDurationMs = Math.round(elapsed);\n const formatted = this.formatError(err);\n this.ResponseJson = formatted;\n this.ResponseSizeBytes = new Blob([formatted]).size;\n this.ErrorMessage = this.extractErrorSummary(err);\n this.recordHistory(trimmedQuery, this.Variables, 'error', this.ResponseDurationMs);\n } finally {\n this.Running = false;\n this.cdr.markForCheck();\n }\n }\n\n public OnRestoreHistory(entry: HistoryEntry): void {\n this.Query = entry.query;\n this.Variables = entry.variables;\n if (entry.variables.trim() && entry.variables.trim() !== '{}') {\n this.ShowVariables = true;\n }\n this.cdr.markForCheck();\n }\n\n public OnToggleFavorite(entry: HistoryEntry, event: Event): void {\n event.stopPropagation();\n entry.favorite = !entry.favorite;\n this.saveToStorage();\n this.cdr.markForCheck();\n }\n\n public OnDeleteHistory(entry: HistoryEntry, event: Event): void {\n event.stopPropagation();\n this.History = this.History.filter(h => h.id !== entry.id);\n this.saveToStorage();\n this.cdr.markForCheck();\n }\n\n public OnClearHistory(): void {\n // Keep favorites\n this.History = this.History.filter(h => h.favorite);\n this.saveToStorage();\n this.cdr.markForCheck();\n }\n\n public async OnCopyResponse(): Promise<void> {\n if (!this.ResponseJson) return;\n try {\n await navigator.clipboard.writeText(this.ResponseJson);\n this.CopyConfirmed = true;\n setTimeout(() => { this.CopyConfirmed = false; this.cdr.markForCheck(); }, 1800);\n this.cdr.markForCheck();\n } catch { /* unavailable */ }\n }\n\n public async OnCopyAsCurl(): Promise<void> {\n const url = this.ApiUrl || '<API_URL>';\n const body = JSON.stringify({\n query: this.Query.trim(),\n variables: this.Variables.trim() ? JSON.parse(this.Variables) : null\n });\n const escaped = body.replace(/'/g, `'\\\\''`);\n const curl = [\n `curl -X POST '${url}'`,\n ` -H 'Content-Type: application/json'`,\n ` -H 'Authorization: Bearer <YOUR_TOKEN>'`,\n ` -d '${escaped}'`\n ].join(' \\\\\\n');\n try { await navigator.clipboard.writeText(curl); } catch { /* unavailable */ }\n }\n\n public OnFormatQuery(): void {\n // Tiny pretty-printer: collapse multiple blank lines + trim trailing whitespace\n this.Query = this.Query\n .split('\\n')\n .map(line => line.replace(/\\s+$/, ''))\n .join('\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim() + '\\n';\n }\n\n public ToggleHistoryPanel(): void {\n this.ShowHistory = !this.ShowHistory;\n }\n\n public ToggleVariables(): void {\n this.ShowVariables = !this.ShowVariables;\n }\n\n public OnSidebarTabChange(tab: SidebarTab): void {\n this.SidebarTab = tab;\n this.saveToStorage();\n if (tab === 'schema' && !this.schemaLoaded && !this.SchemaLoading) {\n void this.loadSchema();\n }\n }\n\n public async OnReloadSchema(): Promise<void> {\n this.schemaLoaded = false;\n await this.loadSchema();\n }\n\n public OnInsertOperation(op: SchemaOperation, event?: MouseEvent): void {\n const template = this.buildOperationTemplate(op);\n this.insertTemplate(template, !!event?.shiftKey);\n }\n\n public OnClearQuery(): void {\n this.Query = '';\n this.saveToStorage();\n this.cdr.markForCheck();\n }\n\n public get FilteredOperations(): SchemaOperation[] {\n const q = this.SchemaSearch.trim().toLowerCase();\n return this.Operations.filter(op => {\n if (this.SchemaKindFilter !== 'all' && op.kind !== this.SchemaKindFilter) return false;\n if (!q) return true;\n return op.name.toLowerCase().includes(q)\n || op.returnSummary.toLowerCase().includes(q)\n || op.description.toLowerCase().includes(q);\n });\n }\n\n public get OperationCounts(): { all: number; query: number; mutation: number } {\n const q = this.Operations.filter(o => o.kind === 'query').length;\n const m = this.Operations.filter(o => o.kind === 'mutation').length;\n return { all: this.Operations.length, query: q, mutation: m };\n }\n\n public TrackByOp = (_i: number, o: SchemaOperation) => o.kind + ':' + o.name;\n\n // ---------- Entities tab ----------\n\n public TrackByEntity = (_i: number, e: EntityListItem) => e.info.ID;\n\n public get FilteredEntities(): EntityListItem[] {\n const q = this.EntitiesSearch.trim().toLowerCase();\n return this.Entities.filter(e => {\n if (this.EntitySchemaFilter && e.schema !== this.EntitySchemaFilter) return false;\n if (!q) return true;\n return e.info.Name.toLowerCase().includes(q)\n || e.typeName.toLowerCase().includes(q)\n || e.schema.toLowerCase().includes(q)\n || (e.info.Description ?? '').toLowerCase().includes(q);\n });\n }\n\n public ToggleEntity(e: EntityListItem): void {\n e.expanded = !e.expanded;\n }\n\n public OnEntityOp(item: EntityListItem, op: EntityOpKind, event: MouseEvent): void {\n event.stopPropagation();\n const template = this.buildEntityOpTemplate(item, op);\n this.insertTemplate(template, !!event.shiftKey);\n }\n\n /**\n * Default: replace the editor contents with the new template.\n * Shift-click: append to the end (with a blank-line separator) so the\n * user can stage multiple operations in one document.\n */\n private insertTemplate(template: string, append: boolean): void {\n const trimmed = this.Query.trimEnd();\n const isFresh = trimmed.length === 0 || trimmed === SAMPLE_QUERY.trimEnd();\n if (append && !isFresh) {\n this.Query = trimmed + '\\n\\n' + template;\n } else {\n this.Query = template;\n }\n this.saveToStorage();\n this.cdr.markForCheck();\n }\n\n private buildEntityOpTemplate(item: EntityListItem, op: EntityOpKind): string {\n const e = item.info;\n const typeName = item.typeName;\n const mapper = new FieldMapper();\n const fieldList = this.pickRepresentativeFields(e).map(name => {\n const mapped = mapper.MapFieldName(name);\n // Annotate any remapped fields so users see why the GraphQL field\n // name differs from the database column. (`__` is reserved by the\n // GraphQL spec, so MJ rewrites `__mj_*` columns to `_mj__*` over\n // the wire.)\n return mapped === name ? mapped : `${mapped} # from ${name}`;\n });\n const fieldSelection = fieldList.join('\\n ');\n const pkField = mapper.MapFieldName(e.PrimaryKeys?.[0]?.Name ?? 'ID');\n\n switch (op) {\n case 'view':\n return `# Run a dynamic view over ${e.Name}\nquery Run${typeName}DynamicView {\n Run${typeName}DynamicView(input: {\n EntityName: \"${e.Name}\"\n ExtraFilter: \"\"\n OrderBy: \"\"\n UserSearchString: \"\"\n Fields: null\n MaxRows: 100\n StartRow: 0\n IgnoreMaxRows: false\n ForceAuditLog: false\n ResultType: \"simple\"\n }) {\n Success\n RowCount\n TotalRowCount\n ExecutionTime\n ErrorMessage\n Results {\n ${fieldSelection}\n }\n }\n}\n`;\n case 'byId':\n return `# Fetch a single ${e.Name} record by primary key\nquery Run${typeName}ByID($id: String!) {\n Run${typeName}DynamicView(input: {\n EntityName: \"${e.Name}\"\n ExtraFilter: \"${pkField}='\" + $id + \"'\"\n Fields: null\n MaxRows: 1\n StartRow: 0\n IgnoreMaxRows: false\n ForceAuditLog: false\n ResultType: \"simple\"\n OrderBy: \"\"\n UserSearchString: \"\"\n }) {\n Success\n Results {\n ${fieldSelection}\n }\n }\n}\n\n# Variables (paste into the Variables panel):\n# { \"id\": \"<your-id-here>\" }\n`;\n case 'create':\n return `# Create a new ${e.Name}\nmutation Create${typeName}($input: Create${typeName}Input!) {\n Create${typeName}(input: $input) {\n ${fieldSelection}\n }\n}\n\n# Variables — populate the writable fields, then Run\n# {\n# \"input\": {\n# # required + writable fields go here\n# }\n# }\n`;\n case 'update':\n return `# Update an existing ${e.Name}\nmutation Update${typeName}($input: Update${typeName}Input!) {\n Update${typeName}(input: $input) {\n ${fieldSelection}\n }\n}\n\n# Variables — must include the primary key (${pkField})\n# {\n# \"input\": {\n# \"${pkField}\": \"<id-here>\"\n# # ...changed fields\n# }\n# }\n`;\n case 'delete':\n return `# Delete a ${e.Name}\nmutation Delete${typeName}($input: Delete${typeName}Input!) {\n Delete${typeName}(input: $input) {\n ${pkField}\n }\n}\n\n# Variables:\n# { \"input\": { \"${pkField}\": \"<id-here>\" } }\n`;\n }\n }\n\n /** Pick the first ~10 displayable fields, prioritizing primary key and common fields. */\n private pickRepresentativeFields(e: EntityInfo): string[] {\n const fields = e.Fields ?? [];\n if (fields.length === 0) return ['ID'];\n const out: string[] = [];\n const seen = new Set<string>();\n const push = (n: string) => { if (n && !seen.has(n)) { seen.add(n); out.push(n); } };\n\n for (const f of fields) {\n if (f.IsPrimaryKey) push(f.Name);\n }\n // Prefer common, lightweight fields\n for (const f of fields) {\n if (out.length >= 10) break;\n if (f.IsBinaryFieldType) continue;\n const lower = f.Name.toLowerCase();\n if (lower === 'name' || lower === 'description' || lower === 'status' || lower === 'type') {\n push(f.Name);\n }\n }\n // Fill with the rest, skipping huge / private fields\n for (const f of fields) {\n if (out.length >= 10) break;\n if (f.IsBinaryFieldType) continue;\n if (this.isExpensiveField(f)) continue;\n push(f.Name);\n }\n return out;\n }\n\n private isExpensiveField(f: EntityFieldInfo): boolean {\n const t = (f.Type ?? '').toLowerCase();\n if (t === 'nvarchar(max)' || t === 'varchar(max)' || t === 'text' || t === 'ntext') return true;\n if (t.includes('blob') || t.includes('binary') || t === 'image' || t === 'varbinary') return true;\n return false;\n }\n\n public ClearEntityFilters(): void {\n this.EntitiesSearch = '';\n this.EntitySchemaFilter = '';\n }\n\n // ---------- Resizable splitters ----------\n\n public OnSplitterDown(event: MouseEvent, kind: 'sidebar' | 'editor'): void {\n event.preventDefault();\n this.resizing = kind;\n document.addEventListener('mousemove', this.onMouseMove);\n document.addEventListener('mouseup', this.onMouseUp);\n document.body.style.cursor = kind === 'sidebar' ? 'col-resize' : 'row-resize';\n document.body.style.userSelect = 'none';\n }\n\n private onMouseMove = (e: MouseEvent): void => {\n if (!this.resizing) return;\n const host = this.elementRef.nativeElement as HTMLElement;\n if (this.resizing === 'sidebar') {\n const bodyRect = host.querySelector('.gc-body')?.getBoundingClientRect();\n if (!bodyRect) return;\n const x = e.clientX - bodyRect.left;\n this.SidebarWidthPx = Math.max(200, Math.min(560, x));\n } else if (this.resizing === 'editor') {\n const mainRect = host.querySelector('.gc-main')?.getBoundingClientRect();\n if (!mainRect) return;\n const yPct = ((e.clientY - mainRect.top) / mainRect.height) * 100;\n this.EditorHeightPct = Math.max(20, Math.min(80, yPct));\n }\n this.cdr.markForCheck();\n };\n\n private onMouseUp = (): void => {\n if (!this.resizing) return;\n this.resizing = null;\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n this.detachResizeListeners();\n this.saveToStorage();\n };\n\n private detachResizeListeners(): void {\n document.removeEventListener('mousemove', this.onMouseMove);\n document.removeEventListener('mouseup', this.onMouseUp);\n }\n\n public get FormattedSize(): string {\n if (this.ResponseSizeBytes == null) return '';\n const b = this.ResponseSizeBytes;\n if (b < 1024) return `${b} B`;\n if (b < 1024 * 1024) return `${(b / 1024).toFixed(1)} KB`;\n return `${(b / 1024 / 1024).toFixed(2)} MB`;\n }\n\n public TrackByHistory = (_i: number, h: HistoryEntry) => h.id;\n\n // ---------- private ----------\n\n private recordHistory(query: string, variables: string, status: 'ok' | 'error', durationMs: number): void {\n const entry: HistoryEntry = {\n id: `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,\n query,\n variables,\n timestamp: new Date(),\n durationMs,\n status,\n favorite: false,\n label: this.deriveLabel(query)\n };\n // De-dupe: if last non-favorite entry has the same query+vars, replace it instead of stacking\n const last = this.History[0];\n if (last && !last.favorite && last.query === query && last.variables === variables) {\n this.History[0] = entry;\n } else {\n this.History = [entry, ...this.History];\n }\n // Trim history (preserve favorites)\n if (this.History.length > HISTORY_LIMIT) {\n const favorites = this.History.filter(h => h.favorite);\n const nonFavorites = this.History.filter(h => !h.favorite).slice(0, HISTORY_LIMIT - favorites.length);\n this.History = [...favorites, ...nonFavorites].sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());\n }\n this.saveToStorage();\n }\n\n private deriveLabel(query: string): string {\n const m = query.match(/(query|mutation|subscription)\\s+(\\w+)/);\n if (m) return `${m[1]} ${m[2]}`;\n const firstField = query.match(/[\\{\\s](\\w+)\\s*[\\(\\{]/);\n if (firstField) return firstField[1];\n return 'unnamed';\n }\n\n private formatError(err: unknown): string {\n if (err && typeof err === 'object') {\n const e = err as { response?: { errors?: unknown[] }; message?: string };\n if (e.response?.errors) {\n return JSON.stringify({ errors: e.response.errors }, null, 2);\n }\n if (e.message) {\n return JSON.stringify({ error: e.message }, null, 2);\n }\n }\n return JSON.stringify({ error: String(err) }, null, 2);\n }\n\n private extractErrorSummary(err: unknown): string {\n if (err && typeof err === 'object') {\n const e = err as { response?: { errors?: Array<{ message?: string }> }; message?: string };\n if (e.response?.errors?.[0]?.message) return e.response.errors[0].message!;\n if (e.message) return e.message;\n }\n return String(err);\n }\n\n private loadFromStorage(): void {\n const parsed = DevToolsPrefs.Get<{\n history?: HistoryEntry[];\n query?: string;\n variables?: string;\n sidebarTab?: SidebarTab;\n schemaKindFilter?: 'all' | 'query' | 'mutation';\n entitiesSearch?: string;\n entitySchemaFilter?: string;\n sidebarWidthPx?: number;\n editorHeightPct?: number;\n }>(PREFS_KEY);\n if (!parsed) return;\n if (parsed.history) {\n this.History = parsed.history.map(h => ({ ...h, timestamp: new Date(h.timestamp) }));\n }\n if (parsed.query) this.Query = parsed.query;\n if (parsed.variables) this.Variables = parsed.variables;\n if (parsed.sidebarTab) this.SidebarTab = parsed.sidebarTab;\n if (parsed.schemaKindFilter) this.SchemaKindFilter = parsed.schemaKindFilter;\n if (parsed.entitiesSearch) this.EntitiesSearch = parsed.entitiesSearch;\n if (parsed.entitySchemaFilter) this.EntitySchemaFilter = parsed.entitySchemaFilter;\n if (typeof parsed.sidebarWidthPx === 'number') this.SidebarWidthPx = parsed.sidebarWidthPx;\n if (typeof parsed.editorHeightPct === 'number') this.EditorHeightPct = parsed.editorHeightPct;\n }\n\n private saveToStorage(): void {\n DevToolsPrefs.Save(PREFS_KEY, {\n history: this.History,\n query: this.Query,\n variables: this.Variables,\n sidebarTab: this.SidebarTab,\n schemaKindFilter: this.SchemaKindFilter,\n entitiesSearch: this.EntitiesSearch,\n entitySchemaFilter: this.EntitySchemaFilter,\n sidebarWidthPx: this.SidebarWidthPx,\n editorHeightPct: this.EditorHeightPct\n });\n }\n\n // ---------- schema introspection ----------\n\n private async loadSchema(): Promise<void> {\n this.SchemaLoading = true;\n this.SchemaError = null;\n this.SchemaIntrospectionDisabled = false;\n this.cdr.markForCheck();\n try {\n const data = await GraphQLDataProvider.ExecuteGQL(INTROSPECTION_QUERY, null);\n const schema = (data as { __schema?: { queryType?: { name: string }; mutationType?: { name: string } | null; types: IntrospectedType[] } }).__schema;\n if (!schema) throw new Error('No __schema in introspection response');\n\n const queryTypeName = schema.queryType?.name;\n const mutationTypeName = schema.mutationType?.name;\n const ops: SchemaOperation[] = [];\n\n for (const type of schema.types) {\n if (type.name === queryTypeName) {\n for (const f of type.fields ?? []) ops.push(this.toOperation(f, 'query'));\n } else if (type.name === mutationTypeName) {\n for (const f of type.fields ?? []) ops.push(this.toOperation(f, 'mutation'));\n }\n }\n\n ops.sort((a, b) => {\n if (a.kind !== b.kind) return a.kind === 'query' ? -1 : 1;\n return a.name.localeCompare(b.name);\n });\n this.Operations = ops;\n this.schemaLoaded = true;\n } catch (err: unknown) {\n // Detect introspection-disabled (Apollo + most servers in production)\n const errStr = this.extractErrorSummary(err);\n const code = this.extractErrorCode(err);\n const looksDisabled =\n code === 'INTROSPECTION_DISABLED' ||\n code === 'GRAPHQL_VALIDATION_FAILED' ||\n /__schema|__type|introspection/i.test(errStr);\n\n if (looksDisabled) {\n this.SchemaIntrospectionDisabled = true;\n this.SchemaError = null;\n } else {\n // Trim huge stack-laden messages — show first 240 chars\n this.SchemaError = errStr.length > 240 ? errStr.slice(0, 240) + '…' : errStr;\n }\n } finally {\n this.SchemaLoading = false;\n this.cdr.markForCheck();\n }\n }\n\n private extractErrorCode(err: unknown): string | undefined {\n if (err && typeof err === 'object') {\n const e = err as { response?: { errors?: Array<{ extensions?: { code?: string } }> } };\n return e.response?.errors?.[0]?.extensions?.code;\n }\n return undefined;\n }\n\n private toOperation(field: IntrospectedField, kind: 'query' | 'mutation'): SchemaOperation {\n const argSummary = field.args.length === 0\n ? ''\n : field.args.map(a => `${a.name}: ${this.typeRefToString(a.type)}`).join(', ');\n return {\n name: field.name,\n kind,\n description: field.description ?? '',\n argSummary,\n returnSummary: this.typeRefToString(field.type),\n field\n };\n }\n\n private typeRefToString(t: IntrospectedTypeRef | null | undefined): string {\n if (!t) return '?';\n if (t.kind === 'NON_NULL') return this.typeRefToString(t.ofType) + '!';\n if (t.kind === 'LIST') return '[' + this.typeRefToString(t.ofType) + ']';\n return t.name ?? '?';\n }\n\n private isObjectReturn(t: IntrospectedTypeRef): boolean {\n let cur: IntrospectedTypeRef | null | undefined = t;\n while (cur && (cur.kind === 'NON_NULL' || cur.kind === 'LIST')) cur = cur.ofType;\n return !!cur && (cur.kind === 'OBJECT' || cur.kind === 'INTERFACE' || cur.kind === 'UNION');\n }\n\n private buildOperationTemplate(op: SchemaOperation): string {\n const opNameUpper = op.name.charAt(0).toUpperCase() + op.name.slice(1);\n const f = op.field;\n\n // Variable declarations + arg passing\n let varDecls = '';\n let argPass = '';\n if (f.args.length > 0) {\n varDecls = '(' + f.args.map(a => `$${a.name}: ${this.typeRefToString(a.type)}`).join(', ') + ')';\n argPass = '(' + f.args.map(a => `${a.name}: $${a.name}`).join(', ') + ')';\n }\n\n const isObject = this.isObjectReturn(f.type);\n const selection = isObject\n ? ' {\\n # TODO: select fields from ' + this.typeRefToString(f.type) + '\\n }'\n : '';\n\n return `${op.kind} ${opNameUpper}${varDecls} {\\n ${op.name}${argPass}${selection}\\n}\\n`;\n }\n}\n\nconst INTROSPECTION_QUERY = `\nquery MJDevToolsIntrospection {\n __schema {\n queryType { name }\n mutationType { name }\n types {\n kind\n name\n description\n fields(includeDeprecated: false) {\n name\n description\n args {\n name\n description\n type { ...TypeRef }\n defaultValue\n }\n type { ...TypeRef }\n }\n }\n }\n}\nfragment TypeRef on __Type {\n kind\n name\n ofType { kind name ofType { kind name ofType { kind name ofType { kind name } } } }\n}\n`;\n","<div class=\"mj-inspector mj-inspector--solo\">\n <div class=\"mj-inspector__header\">\n <div class=\"mj-inspector__header-icon\"><i class=\"fa-solid fa-code\"></i></div>\n <div>\n <h3 class=\"mj-inspector__header-title\">GraphQL Console</h3>\n <div class=\"mj-inspector__header-sub\">\n @if (ApiUrl) {\n Connected to <code class=\"gc-endpoint\">{{ ApiUrl }}</code>\n } @else {\n Run queries against the connected MJ API\n }\n </div>\n </div>\n <span class=\"mj-inspector__header-spacer\"></span>\n <div class=\"mj-inspector__header-actions\">\n <button class=\"mj-inspector__btn\"\n [class.gc-toggle--active]=\"ShowHistory\"\n type=\"button\" (click)=\"ToggleHistoryPanel()\"\n title=\"Toggle history sidebar\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i> History\n </button>\n <button class=\"mj-inspector__btn\" type=\"button\" (click)=\"OnCopyAsCurl()\" title=\"Copy as cURL command\">\n <i class=\"fa-solid fa-terminal\"></i> Copy cURL\n </button>\n </div>\n </div>\n\n <div class=\"gc-body\">\n @if (ShowHistory) {\n <aside class=\"gc-sidebar\" [style.width.px]=\"SidebarWidthPx\">\n <div class=\"gc-sidebar-tabs\">\n <button type=\"button\"\n class=\"gc-sidebar-tab\"\n [class.gc-sidebar-tab--active]=\"SidebarTab === 'history'\"\n (click)=\"OnSidebarTabChange('history')\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i> History\n </button>\n <button type=\"button\"\n class=\"gc-sidebar-tab\"\n [class.gc-sidebar-tab--active]=\"SidebarTab === 'entities'\"\n (click)=\"OnSidebarTabChange('entities')\">\n <i class=\"fa-solid fa-table-list\"></i> Entities\n </button>\n <button type=\"button\"\n class=\"gc-sidebar-tab\"\n [class.gc-sidebar-tab--active]=\"SidebarTab === 'schema'\"\n (click)=\"OnSidebarTabChange('schema')\">\n <i class=\"fa-solid fa-sitemap\"></i> Schema\n </button>\n </div>\n\n @if (SidebarTab === 'history') {\n <div class=\"gc-history-head\">\n <span>{{ History.length }} {{ History.length === 1 ? 'entry' : 'entries' }}</span>\n <button class=\"gc-history-clear\"\n type=\"button\"\n (click)=\"OnClearHistory()\"\n title=\"Clear non-favorite history\">\n <i class=\"fa-solid fa-broom\"></i>\n </button>\n </div>\n @if (History.length === 0) {\n <div class=\"gc-history-empty\">\n <i class=\"fa-regular fa-circle-question\"></i>\n Run a query to see it here. Star <i class=\"fa-solid fa-star\"></i> to keep it.\n </div>\n } @else {\n <div class=\"gc-history-list\">\n @for (h of History; track TrackByHistory($index, h)) {\n <button type=\"button\"\n class=\"gc-history-item\"\n [class.gc-history-item--error]=\"h.status === 'error'\"\n [class.gc-history-item--fav]=\"h.favorite\"\n (click)=\"OnRestoreHistory(h)\">\n <div class=\"gc-history-item-head\">\n <i class=\"gc-history-status\"\n [class.fa-solid]=\"true\"\n [class.fa-circle-check]=\"h.status === 'ok'\"\n [class.fa-circle-xmark]=\"h.status === 'error'\"\n [class.gc-status--ok]=\"h.status === 'ok'\"\n [class.gc-status--err]=\"h.status === 'error'\"></i>\n <span class=\"gc-history-label\">{{ h.label || 'unnamed' }}</span>\n <button class=\"gc-history-fav\"\n type=\"button\"\n (click)=\"OnToggleFavorite(h, $event)\"\n [title]=\"h.favorite ? 'Unfavorite' : 'Favorite'\">\n <i [class]=\"h.favorite ? 'fa-solid fa-star' : 'fa-regular fa-star'\"></i>\n </button>\n <button class=\"gc-history-del\"\n type=\"button\"\n (click)=\"OnDeleteHistory(h, $event)\"\n title=\"Remove from history\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n <div class=\"gc-history-meta\">\n <span>{{ h.timestamp | date:'HH:mm:ss' }}</span>\n @if (h.durationMs != null) {\n <span>·</span>\n <span>{{ h.durationMs }}ms</span>\n }\n </div>\n </button>\n }\n </div>\n }\n } @else if (SidebarTab === 'entities') {\n <div class=\"gc-ent-toolbar\">\n <div class=\"gc-ent-search-wrap\">\n <i class=\"fa-solid fa-search gc-ent-search-icon\"></i>\n <input type=\"search\"\n class=\"gc-ent-search\"\n placeholder=\"Search entities…\"\n [(ngModel)]=\"EntitiesSearch\" />\n </div>\n @if (KnownSchemas.length > 1) {\n <select class=\"gc-ent-schema\" [(ngModel)]=\"EntitySchemaFilter\">\n <option value=\"\">All schemas ({{ KnownSchemas.length }})</option>\n @for (s of KnownSchemas; track s) {\n <option [value]=\"s\">{{ s }}</option>\n }\n </select>\n }\n </div>\n <div class=\"gc-ent-meta\">\n <span>{{ FilteredEntities.length }} of {{ Entities.length }}</span>\n <span class=\"gc-ent-hint\">Click an entity to see operations</span>\n </div>\n <div class=\"gc-ent-list\">\n @for (item of FilteredEntities; track TrackByEntity($index, item)) {\n <div class=\"gc-ent-card\" [class.gc-ent-card--expanded]=\"item.expanded\">\n <button type=\"button\"\n class=\"gc-ent-row\"\n (click)=\"ToggleEntity(item)\">\n <i class=\"fa-solid fa-chevron-right gc-ent-chev\"\n [class.gc-ent-chev--down]=\"item.expanded\"></i>\n <div class=\"gc-ent-info\">\n <div class=\"gc-ent-name\">{{ item.info.Name }}</div>\n <div class=\"gc-ent-meta-row\">\n <code class=\"gc-ent-typename\">{{ item.typeName }}</code>\n <span class=\"gc-ent-schema-badge\">{{ item.schema }}</span>\n </div>\n </div>\n </button>\n @if (item.expanded) {\n <div class=\"gc-ent-actions\">\n <button type=\"button\" class=\"gc-ent-op gc-ent-op--read\"\n (click)=\"OnEntityOp(item, 'view', $event)\"\n title=\"Insert a Run View template (Shift-click to append)\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n Run view\n </button>\n <button type=\"button\" class=\"gc-ent-op gc-ent-op--read\"\n (click)=\"OnEntityOp(item, 'byId', $event)\"\n title=\"Fetch a single record by ID (Shift-click to append)\">\n <i class=\"fa-solid fa-fingerprint\"></i>\n Get by ID\n </button>\n @if (item.info.AllowCreateAPI) {\n <button type=\"button\" class=\"gc-ent-op gc-ent-op--write\"\n (click)=\"OnEntityOp(item, 'create', $event)\"\n title=\"Create a new record (Shift-click to append)\">\n <i class=\"fa-solid fa-plus\"></i>\n Create\n </button>\n }\n @if (item.info.AllowUpdateAPI) {\n <button type=\"button\" class=\"gc-ent-op gc-ent-op--write\"\n (click)=\"OnEntityOp(item, 'update', $event)\"\n title=\"Update an existing record (Shift-click to append)\">\n <i class=\"fa-solid fa-pen\"></i>\n Update\n </button>\n }\n @if (item.info.AllowDeleteAPI) {\n <button type=\"button\" class=\"gc-ent-op gc-ent-op--danger\"\n (click)=\"OnEntityOp(item, 'delete', $event)\"\n title=\"Delete a record (Shift-click to append)\">\n <i class=\"fa-solid fa-trash\"></i>\n Delete\n </button>\n }\n </div>\n @if (item.info.Description) {\n <div class=\"gc-ent-desc\">{{ item.info.Description }}</div>\n }\n }\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <div class=\"gc-ent-empty\">\n <i class=\"fa-solid fa-search\"></i>\n <span>No entities match.</span>\n @if (EntitiesSearch || EntitySchemaFilter) {\n <button class=\"gc-ent-clear\" type=\"button\" (click)=\"ClearEntityFilters()\">\n Clear filters\n </button>\n }\n </div>\n }\n </div>\n } @else {\n <div class=\"gc-schema-toolbar\">\n <div class=\"gc-schema-search-wrap\">\n <i class=\"fa-solid fa-search gc-schema-search-icon\"></i>\n <input type=\"search\"\n class=\"gc-schema-search\"\n placeholder=\"Search operations…\"\n [(ngModel)]=\"SchemaSearch\" />\n </div>\n <button class=\"gc-schema-reload\"\n type=\"button\"\n (click)=\"OnReloadSchema()\"\n [disabled]=\"SchemaLoading\"\n title=\"Reload schema\">\n <i class=\"fa-solid\" [class.fa-rotate]=\"!SchemaLoading\" [class.fa-spinner]=\"SchemaLoading\" [class.fa-spin]=\"SchemaLoading\"></i>\n </button>\n </div>\n\n @if (Operations.length > 0) {\n <div class=\"gc-schema-kinds\">\n <button type=\"button\"\n class=\"gc-schema-kind\"\n [class.gc-schema-kind--active]=\"SchemaKindFilter === 'all'\"\n (click)=\"SchemaKindFilter = 'all'\">\n All <span>{{ OperationCounts.all }}</span>\n </button>\n <button type=\"button\"\n class=\"gc-schema-kind gc-schema-kind--query\"\n [class.gc-schema-kind--active]=\"SchemaKindFilter === 'query'\"\n (click)=\"SchemaKindFilter = 'query'\">\n <i class=\"fa-solid fa-magnifying-glass\"></i> Query <span>{{ OperationCounts.query }}</span>\n </button>\n <button type=\"button\"\n class=\"gc-schema-kind gc-schema-kind--mutation\"\n [class.gc-schema-kind--active]=\"SchemaKindFilter === 'mutation'\"\n (click)=\"SchemaKindFilter = 'mutation'\">\n <i class=\"fa-solid fa-pen\"></i> Mutation <span>{{ OperationCounts.mutation }}</span>\n </button>\n </div>\n }\n\n @if (SchemaLoading) {\n <div class=\"gc-schema-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Introspecting schema…</span>\n </div>\n } @else if (SchemaIntrospectionDisabled) {\n <div class=\"gc-schema-state gc-schema-disabled\">\n <i class=\"fa-solid fa-lock\"></i>\n <div class=\"gc-schema-disabled-title\">Introspection disabled</div>\n <div class=\"gc-schema-disabled-body\">\n This server has GraphQL introspection turned off (typical in production). Schema browsing isn't available — write queries directly in the editor, or use the History tab to revisit previous queries.\n </div>\n </div>\n } @else if (SchemaError) {\n <div class=\"gc-schema-state gc-schema-state--err\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <div class=\"gc-schema-err-title\">Couldn't load schema</div>\n <div class=\"gc-schema-err-body\">{{ SchemaError }}</div>\n </div>\n } @else if (FilteredOperations.length === 0) {\n <div class=\"gc-schema-state\">\n <i class=\"fa-solid fa-search\"></i>\n <span>No operations match.</span>\n </div>\n } @else {\n <div class=\"gc-schema-list\">\n @for (op of FilteredOperations; track TrackByOp($index, op)) {\n <button type=\"button\"\n class=\"gc-schema-op\"\n [class.gc-schema-op--mutation]=\"op.kind === 'mutation'\"\n (click)=\"OnInsertOperation(op, $event)\"\n [title]=\"(op.description || ('Insert ' + op.kind + ' template')) + ' · Shift-click to append'\">\n <div class=\"gc-schema-op-head\">\n <span class=\"gc-schema-op-kind\">{{ op.kind }}</span>\n <span class=\"gc-schema-op-name\">{{ op.name }}</span>\n </div>\n @if (op.argSummary) {\n <div class=\"gc-schema-op-args\">({{ op.argSummary }})</div>\n }\n <div class=\"gc-schema-op-return\">\n <i class=\"fa-solid fa-arrow-right\"></i> {{ op.returnSummary }}\n </div>\n @if (op.description) {\n <div class=\"gc-schema-op-desc\">{{ op.description }}</div>\n }\n </button>\n }\n </div>\n }\n }\n </aside>\n <div class=\"gc-splitter gc-splitter--vert\"\n (mousedown)=\"OnSplitterDown($event, 'sidebar')\"\n title=\"Drag to resize sidebar\"></div>\n }\n\n <div class=\"gc-main\">\n <div class=\"gc-editor-wrap\" [style.flex]=\"'0 0 ' + EditorHeightPct + '%'\">\n <div class=\"gc-editor-head\">\n <span class=\"gc-editor-label\">Query</span>\n <span class=\"gc-editor-hint\">⌘/Ctrl+Enter to run · Shift+click an entity/op to append</span>\n <button class=\"gc-mini-btn\" type=\"button\" (click)=\"OnFormatQuery()\" title=\"Tidy whitespace\">\n <i class=\"fa-solid fa-broom\"></i> Tidy\n </button>\n <button class=\"gc-mini-btn gc-mini-btn--danger\" type=\"button\" (click)=\"OnClearQuery()\" title=\"Clear editor\">\n <i class=\"fa-solid fa-eraser\"></i> Clear\n </button>\n </div>\n <mj-code-editor\n class=\"gc-editor\"\n [(ngModel)]=\"Query\"\n [language]=\"'graphql'\"\n [lineWrapping]=\"true\"\n placeholder=\"Enter your GraphQL query…\">\n </mj-code-editor>\n </div>\n\n <div class=\"gc-splitter gc-splitter--horiz\"\n (mousedown)=\"OnSplitterDown($event, 'editor')\"\n title=\"Drag to resize editor / response\"></div>\n\n <div class=\"gc-vars-wrap\">\n <button class=\"gc-vars-toggle\" type=\"button\" (click)=\"ToggleVariables()\">\n <i class=\"fa-solid fa-chevron-right gc-vars-chev\" [class.gc-vars-chev--down]=\"ShowVariables\"></i>\n Variables\n @if (Variables && Variables.trim() !== '{}' && Variables.trim() !== '') {\n <span class=\"gc-vars-pill\">configured</span>\n }\n </button>\n @if (ShowVariables) {\n <mj-code-editor\n class=\"gc-editor gc-editor--vars\"\n [(ngModel)]=\"Variables\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n placeholder=\"{}\">\n </mj-code-editor>\n }\n </div>\n\n <div class=\"gc-run-bar\">\n <button class=\"gc-run-btn\"\n type=\"button\"\n [disabled]=\"Running\"\n (click)=\"OnRun()\">\n @if (Running) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Running…\n } @else {\n <i class=\"fa-solid fa-play\"></i> Run\n }\n </button>\n @if (ResponseStatus !== 'idle') {\n <div class=\"gc-run-meta\">\n @if (ResponseStatus === 'ok') {\n <span class=\"gc-status-badge gc-status-badge--ok\">\n <i class=\"fa-solid fa-circle-check\"></i> 200 OK\n </span>\n } @else {\n <span class=\"gc-status-badge gc-status-badge--err\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error\n </span>\n }\n @if (ResponseDurationMs != null) {\n <span class=\"gc-meta-pill\"><i class=\"fa-regular fa-clock\"></i> {{ ResponseDurationMs }}ms</span>\n }\n @if (ResponseSizeBytes != null) {\n <span class=\"gc-meta-pill\"><i class=\"fa-solid fa-database\"></i> {{ FormattedSize }}</span>\n }\n </div>\n }\n <span class=\"gc-spacer\"></span>\n @if (ResponseJson) {\n <button class=\"mj-inspector__btn\"\n [class.mj-inspector__btn--success]=\"CopyConfirmed\"\n type=\"button\"\n (click)=\"OnCopyResponse()\">\n <i class=\"fa-solid\" [class.fa-clipboard]=\"!CopyConfirmed\" [class.fa-check]=\"CopyConfirmed\"></i>\n {{ CopyConfirmed ? 'Copied' : 'Copy' }}\n </button>\n }\n </div>\n\n <div class=\"gc-response-wrap\">\n <div class=\"gc-response-head\">\n <span class=\"gc-editor-label\">Response</span>\n </div>\n @if (ErrorMessage && !ResponseJson) {\n <div class=\"gc-error\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>{{ ErrorMessage }}</span>\n </div>\n } @else if (ResponseJson) {\n @if (ErrorMessage) {\n <div class=\"gc-error gc-error--inline\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>{{ ErrorMessage }}</span>\n </div>\n }\n <pre class=\"gc-response\"><code>{{ ResponseJson }}</code></pre>\n } @else {\n <div class=\"gc-empty\">\n <i class=\"fa-solid fa-arrow-up-from-bracket\"></i>\n <span>Run a query to see results here.</span>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n"]}
1
+ {"version":3,"file":"graphql-console.component.js","sourceRoot":"","sources":["../../src/DevTools/graphql-console.component.ts","../../src/DevTools/graphql-console.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ElementRef, ViewChild, HostListener, inject } from '@angular/core';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { EntityInfo, EntityFieldInfo, getGraphQLTypeNameBase } from '@memberjunction/core';\nimport { GraphQLDataProvider, FieldMapper } from '@memberjunction/graphql-dataprovider';\nimport { DevToolsPrefs } from './dev-tools-prefs';\n\ninterface HistoryEntry {\n id: string;\n query: string;\n variables: string;\n timestamp: Date;\n durationMs?: number;\n status: 'ok' | 'error' | 'pending';\n favorite: boolean;\n label?: string;\n}\n\n/** GraphQL introspection — minimal subset sufficient for the explorer. */\ninterface IntrospectedTypeRef {\n kind: 'NON_NULL' | 'LIST' | 'SCALAR' | 'OBJECT' | 'ENUM' | 'INPUT_OBJECT' | 'INTERFACE' | 'UNION' | string;\n name: string | null;\n ofType?: IntrospectedTypeRef | null;\n}\ninterface IntrospectedArg {\n name: string;\n description?: string | null;\n type: IntrospectedTypeRef;\n defaultValue?: string | null;\n}\ninterface IntrospectedField {\n name: string;\n description?: string | null;\n args: IntrospectedArg[];\n type: IntrospectedTypeRef;\n}\ninterface IntrospectedType {\n kind: string;\n name: string;\n description?: string | null;\n fields?: IntrospectedField[] | null;\n}\ninterface SchemaOperation {\n name: string;\n kind: 'query' | 'mutation';\n description: string;\n argSummary: string;\n returnSummary: string;\n field: IntrospectedField;\n}\n\ntype SidebarTab = 'history' | 'schema' | 'entities';\ntype EntityOpKind = 'view' | 'byId' | 'create' | 'update' | 'delete';\n\ninterface EntityListItem {\n info: EntityInfo;\n typeName: string;\n schema: string;\n /** True when this entity is currently expanded showing operation buttons. */\n expanded: boolean;\n}\n\nconst PREFS_KEY = 'graphqlConsole';\nconst HISTORY_LIMIT = 30;\n\nconst SAMPLE_QUERY = `# Welcome to the GraphQL Console\n# Press Cmd/Ctrl+Enter to run.\n# Authentication is handled by the active GraphQL provider.\n\nquery GetCurrentUser {\n CurrentUser {\n ID\n Name\n Email\n }\n}\n`;\n\n/**\n * GraphQL Console — write and run arbitrary GraphQL queries against the\n * connected MJ API. Re-uses the active GraphQLDataProvider client (auth +\n * session intact). Local history with copy / favorite / replay; copy-as-curl;\n * keyboard shortcut (Cmd/Ctrl+Enter) to run.\n */\n@RegisterClass(BaseResourceComponent, 'GraphQLConsoleInspector')\n@Component({\n standalone: false,\n selector: 'mj-graphql-console',\n templateUrl: './graphql-console.component.html',\n styleUrls: ['./inspector-shared.css', './graphql-console.component.css']\n})\nexport class GraphQLConsoleComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n\n @ViewChild('queryEditor') queryEditor?: ElementRef<HTMLTextAreaElement>;\n\n public Query = SAMPLE_QUERY;\n public Variables = '{}';\n public ShowVariables = false;\n\n public Running = false;\n public ResponseJson = '';\n public ResponseStatus: 'ok' | 'error' | 'idle' = 'idle';\n public ResponseDurationMs: number | null = null;\n public ResponseSizeBytes: number | null = null;\n public ErrorMessage: string | null = null;\n\n public History: HistoryEntry[] = [];\n public ShowHistory = true;\n public CopyConfirmed = false;\n\n public ApiUrl = '';\n\n // Schema explorer state\n public SidebarTab: SidebarTab = 'history';\n public SchemaLoading = false;\n public SchemaError: string | null = null;\n public SchemaIntrospectionDisabled = false;\n public SchemaSearch = '';\n public SchemaKindFilter: 'all' | 'query' | 'mutation' = 'all';\n public Operations: SchemaOperation[] = [];\n private schemaLoaded = false;\n\n // Entities tab state\n public EntitiesSearch = '';\n public Entities: EntityListItem[] = [];\n public EntitySchemaFilter = ''; // '' = all\n public KnownSchemas: string[] = [];\n\n // Pane sizing (resizable splitters)\n public SidebarWidthPx = 280;\n public EditorHeightPct = 50; // % of main pane height for editor (50/50 split default)\n private resizing: 'sidebar' | 'editor' | null = null;\n private elementRef = inject(ElementRef);\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n public ngOnInit(): void {\n this.loadFromStorage();\n try {\n this.ApiUrl = GraphQLDataProvider.Instance.ConfigData?.URL ?? '';\n } catch { /* not configured */ }\n this.loadEntities();\n this.NotifyLoadComplete();\n }\n\n public ngOnDestroy(): void {\n this.saveToStorage();\n this.detachResizeListeners();\n }\n\n private loadEntities(): void {\n try {\n const md = this.ProviderToUse;\n if (!md) return;\n const items: EntityListItem[] = (md.Entities ?? []).map(e => ({\n info: e,\n typeName: getGraphQLTypeNameBase(e),\n schema: e.SchemaName ?? '(unknown)',\n expanded: false\n })).sort((a, b) => a.info.Name.localeCompare(b.info.Name));\n this.Entities = items;\n const schemas = new Set<string>();\n for (const i of items) schemas.add(i.schema);\n this.KnownSchemas = Array.from(schemas).sort();\n } catch { /* metadata not ready */ }\n }\n\n public override async GetResourceDisplayName(): Promise<string> { return 'GraphQL Console'; }\n public override async GetResourceIconClass(): Promise<string> { return 'fa-solid fa-code'; }\n\n @HostListener('keydown', ['$event'])\n public OnHostKeydown(event: KeyboardEvent): void {\n if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {\n event.preventDefault();\n void this.OnRun();\n }\n }\n\n public async OnRun(): Promise<void> {\n const trimmedQuery = this.Query.trim();\n if (!trimmedQuery) {\n this.ErrorMessage = 'Query is empty.';\n return;\n }\n let parsedVars: Record<string, unknown> | null = null;\n if (this.Variables.trim()) {\n try {\n parsedVars = JSON.parse(this.Variables);\n } catch (err) {\n this.ResponseStatus = 'error';\n this.ErrorMessage = 'Variables must be valid JSON: ' + (err instanceof Error ? err.message : String(err));\n this.ResponseJson = '';\n this.cdr.markForCheck();\n return;\n }\n }\n\n this.Running = true;\n this.ErrorMessage = null;\n this.ResponseStatus = 'idle';\n this.ResponseJson = '';\n this.cdr.markForCheck();\n\n const start = performance.now();\n try {\n const data = await GraphQLDataProvider.ExecuteGQL(trimmedQuery, parsedVars);\n const elapsed = performance.now() - start;\n const text = JSON.stringify(data, null, 2);\n this.ResponseJson = text;\n this.ResponseStatus = 'ok';\n this.ResponseDurationMs = Math.round(elapsed);\n this.ResponseSizeBytes = new Blob([text]).size;\n this.recordHistory(trimmedQuery, this.Variables, 'ok', this.ResponseDurationMs);\n } catch (err: unknown) {\n const elapsed = performance.now() - start;\n this.ResponseStatus = 'error';\n this.ResponseDurationMs = Math.round(elapsed);\n const formatted = this.formatError(err);\n this.ResponseJson = formatted;\n this.ResponseSizeBytes = new Blob([formatted]).size;\n this.ErrorMessage = this.extractErrorSummary(err);\n this.recordHistory(trimmedQuery, this.Variables, 'error', this.ResponseDurationMs);\n } finally {\n this.Running = false;\n this.cdr.markForCheck();\n }\n }\n\n public OnRestoreHistory(entry: HistoryEntry): void {\n this.Query = entry.query;\n this.Variables = entry.variables;\n if (entry.variables.trim() && entry.variables.trim() !== '{}') {\n this.ShowVariables = true;\n }\n this.cdr.markForCheck();\n }\n\n public OnToggleFavorite(entry: HistoryEntry, event: Event): void {\n event.stopPropagation();\n entry.favorite = !entry.favorite;\n this.saveToStorage();\n this.cdr.markForCheck();\n }\n\n public OnDeleteHistory(entry: HistoryEntry, event: Event): void {\n event.stopPropagation();\n this.History = this.History.filter(h => h.id !== entry.id);\n this.saveToStorage();\n this.cdr.markForCheck();\n }\n\n public OnClearHistory(): void {\n // Keep favorites\n this.History = this.History.filter(h => h.favorite);\n this.saveToStorage();\n this.cdr.markForCheck();\n }\n\n public async OnCopyResponse(): Promise<void> {\n if (!this.ResponseJson) return;\n try {\n await navigator.clipboard.writeText(this.ResponseJson);\n this.CopyConfirmed = true;\n setTimeout(() => { this.CopyConfirmed = false; this.cdr.markForCheck(); }, 1800);\n this.cdr.markForCheck();\n } catch { /* unavailable */ }\n }\n\n public async OnCopyAsCurl(): Promise<void> {\n const url = this.ApiUrl || '<API_URL>';\n const body = JSON.stringify({\n query: this.Query.trim(),\n variables: this.Variables.trim() ? JSON.parse(this.Variables) : null\n });\n const escaped = body.replace(/'/g, `'\\\\''`);\n const curl = [\n `curl -X POST '${url}'`,\n ` -H 'Content-Type: application/json'`,\n ` -H 'Authorization: Bearer <YOUR_TOKEN>'`,\n ` -d '${escaped}'`\n ].join(' \\\\\\n');\n try { await navigator.clipboard.writeText(curl); } catch { /* unavailable */ }\n }\n\n public OnFormatQuery(): void {\n // Tiny pretty-printer: collapse multiple blank lines + trim trailing whitespace\n this.Query = this.Query\n .split('\\n')\n .map(line => line.replace(/\\s+$/, ''))\n .join('\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim() + '\\n';\n }\n\n public ToggleHistoryPanel(): void {\n this.ShowHistory = !this.ShowHistory;\n }\n\n public ToggleVariables(): void {\n this.ShowVariables = !this.ShowVariables;\n }\n\n public OnSidebarTabChange(tab: SidebarTab): void {\n this.SidebarTab = tab;\n this.saveToStorage();\n if (tab === 'schema' && !this.schemaLoaded && !this.SchemaLoading) {\n void this.loadSchema();\n }\n }\n\n public async OnReloadSchema(): Promise<void> {\n this.schemaLoaded = false;\n await this.loadSchema();\n }\n\n public OnInsertOperation(op: SchemaOperation, event?: MouseEvent): void {\n const template = this.buildOperationTemplate(op);\n this.insertTemplate(template, !!event?.shiftKey);\n }\n\n public OnClearQuery(): void {\n this.Query = '';\n this.saveToStorage();\n this.cdr.markForCheck();\n }\n\n public get FilteredOperations(): SchemaOperation[] {\n const q = this.SchemaSearch.trim().toLowerCase();\n return this.Operations.filter(op => {\n if (this.SchemaKindFilter !== 'all' && op.kind !== this.SchemaKindFilter) return false;\n if (!q) return true;\n return op.name.toLowerCase().includes(q)\n || op.returnSummary.toLowerCase().includes(q)\n || op.description.toLowerCase().includes(q);\n });\n }\n\n public get OperationCounts(): { all: number; query: number; mutation: number } {\n const q = this.Operations.filter(o => o.kind === 'query').length;\n const m = this.Operations.filter(o => o.kind === 'mutation').length;\n return { all: this.Operations.length, query: q, mutation: m };\n }\n\n public TrackByOp = (_i: number, o: SchemaOperation) => o.kind + ':' + o.name;\n\n // ---------- Entities tab ----------\n\n public TrackByEntity = (_i: number, e: EntityListItem) => e.info.ID;\n\n public get FilteredEntities(): EntityListItem[] {\n const q = this.EntitiesSearch.trim().toLowerCase();\n return this.Entities.filter(e => {\n if (this.EntitySchemaFilter && e.schema !== this.EntitySchemaFilter) return false;\n if (!q) return true;\n return e.info.Name.toLowerCase().includes(q)\n || e.typeName.toLowerCase().includes(q)\n || e.schema.toLowerCase().includes(q)\n || (e.info.Description ?? '').toLowerCase().includes(q);\n });\n }\n\n public ToggleEntity(e: EntityListItem): void {\n e.expanded = !e.expanded;\n }\n\n public OnEntityOp(item: EntityListItem, op: EntityOpKind, event: MouseEvent): void {\n event.stopPropagation();\n const template = this.buildEntityOpTemplate(item, op);\n this.insertTemplate(template, !!event.shiftKey);\n }\n\n /**\n * Default: replace the editor contents with the new template.\n * Shift-click: append to the end (with a blank-line separator) so the\n * user can stage multiple operations in one document.\n */\n private insertTemplate(template: string, append: boolean): void {\n const trimmed = this.Query.trimEnd();\n const isFresh = trimmed.length === 0 || trimmed === SAMPLE_QUERY.trimEnd();\n if (append && !isFresh) {\n this.Query = trimmed + '\\n\\n' + template;\n } else {\n this.Query = template;\n }\n this.saveToStorage();\n this.cdr.markForCheck();\n }\n\n private buildEntityOpTemplate(item: EntityListItem, op: EntityOpKind): string {\n const e = item.info;\n const typeName = item.typeName;\n const mapper = new FieldMapper();\n const fieldList = this.pickRepresentativeFields(e).map(name => {\n const mapped = mapper.MapFieldName(name);\n // Annotate any remapped fields so users see why the GraphQL field\n // name differs from the database column. (`__` is reserved by the\n // GraphQL spec, so MJ rewrites `__mj_*` columns to `_mj__*` over\n // the wire.)\n return mapped === name ? mapped : `${mapped} # from ${name}`;\n });\n const fieldSelection = fieldList.join('\\n ');\n const pkField = mapper.MapFieldName(e.PrimaryKeys?.[0]?.Name ?? 'ID');\n\n switch (op) {\n case 'view':\n return `# Run a dynamic view over ${e.Name}\nquery Run${typeName}DynamicView {\n Run${typeName}DynamicView(input: {\n EntityName: \"${e.Name}\"\n ExtraFilter: \"\"\n OrderBy: \"\"\n UserSearchString: \"\"\n Fields: null\n MaxRows: 100\n StartRow: 0\n IgnoreMaxRows: false\n ForceAuditLog: false\n ResultType: \"simple\"\n }) {\n Success\n RowCount\n TotalRowCount\n ExecutionTime\n ErrorMessage\n Results {\n ${fieldSelection}\n }\n }\n}\n`;\n case 'byId':\n return `# Fetch a single ${e.Name} record by primary key\nquery Run${typeName}ByID($id: String!) {\n Run${typeName}DynamicView(input: {\n EntityName: \"${e.Name}\"\n ExtraFilter: \"${pkField}='\" + $id + \"'\"\n Fields: null\n MaxRows: 1\n StartRow: 0\n IgnoreMaxRows: false\n ForceAuditLog: false\n ResultType: \"simple\"\n OrderBy: \"\"\n UserSearchString: \"\"\n }) {\n Success\n Results {\n ${fieldSelection}\n }\n }\n}\n\n# Variables (paste into the Variables panel):\n# { \"id\": \"<your-id-here>\" }\n`;\n case 'create':\n return `# Create a new ${e.Name}\nmutation Create${typeName}($input: Create${typeName}Input!) {\n Create${typeName}(input: $input) {\n ${fieldSelection}\n }\n}\n\n# Variables — populate the writable fields, then Run\n# {\n# \"input\": {\n# # required + writable fields go here\n# }\n# }\n`;\n case 'update':\n return `# Update an existing ${e.Name}\nmutation Update${typeName}($input: Update${typeName}Input!) {\n Update${typeName}(input: $input) {\n ${fieldSelection}\n }\n}\n\n# Variables — must include the primary key (${pkField})\n# {\n# \"input\": {\n# \"${pkField}\": \"<id-here>\"\n# # ...changed fields\n# }\n# }\n`;\n case 'delete':\n return `# Delete a ${e.Name}\nmutation Delete${typeName}($input: Delete${typeName}Input!) {\n Delete${typeName}(input: $input) {\n ${pkField}\n }\n}\n\n# Variables:\n# { \"input\": { \"${pkField}\": \"<id-here>\" } }\n`;\n }\n }\n\n /** Pick the first ~10 displayable fields, prioritizing primary key and common fields. */\n private pickRepresentativeFields(e: EntityInfo): string[] {\n const fields = e.Fields ?? [];\n if (fields.length === 0) return ['ID'];\n const out: string[] = [];\n const seen = new Set<string>();\n const push = (n: string) => { if (n && !seen.has(n)) { seen.add(n); out.push(n); } };\n\n for (const f of fields) {\n if (f.IsPrimaryKey) push(f.Name);\n }\n // Prefer common, lightweight fields\n for (const f of fields) {\n if (out.length >= 10) break;\n if (f.IsBinaryFieldType) continue;\n const lower = f.Name.toLowerCase();\n if (lower === 'name' || lower === 'description' || lower === 'status' || lower === 'type') {\n push(f.Name);\n }\n }\n // Fill with the rest, skipping huge / private fields\n for (const f of fields) {\n if (out.length >= 10) break;\n if (f.IsBinaryFieldType) continue;\n if (this.isExpensiveField(f)) continue;\n push(f.Name);\n }\n return out;\n }\n\n private isExpensiveField(f: EntityFieldInfo): boolean {\n const t = (f.Type ?? '').toLowerCase();\n if (t === 'nvarchar(max)' || t === 'varchar(max)' || t === 'text' || t === 'ntext') return true;\n if (t.includes('blob') || t.includes('binary') || t === 'image' || t === 'varbinary') return true;\n return false;\n }\n\n public ClearEntityFilters(): void {\n this.EntitiesSearch = '';\n this.EntitySchemaFilter = '';\n }\n\n // ---------- Resizable splitters ----------\n\n public OnSplitterDown(event: MouseEvent, kind: 'sidebar' | 'editor'): void {\n event.preventDefault();\n this.resizing = kind;\n document.addEventListener('mousemove', this.onMouseMove);\n document.addEventListener('mouseup', this.onMouseUp);\n document.body.style.cursor = kind === 'sidebar' ? 'col-resize' : 'row-resize';\n document.body.style.userSelect = 'none';\n }\n\n private onMouseMove = (e: MouseEvent): void => {\n if (!this.resizing) return;\n const host = this.elementRef.nativeElement as HTMLElement;\n if (this.resizing === 'sidebar') {\n const bodyRect = host.querySelector('.gc-body')?.getBoundingClientRect();\n if (!bodyRect) return;\n const x = e.clientX - bodyRect.left;\n this.SidebarWidthPx = Math.max(200, Math.min(560, x));\n } else if (this.resizing === 'editor') {\n const mainRect = host.querySelector('.gc-main')?.getBoundingClientRect();\n if (!mainRect) return;\n const yPct = ((e.clientY - mainRect.top) / mainRect.height) * 100;\n this.EditorHeightPct = Math.max(20, Math.min(80, yPct));\n }\n this.cdr.markForCheck();\n };\n\n private onMouseUp = (): void => {\n if (!this.resizing) return;\n this.resizing = null;\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n this.detachResizeListeners();\n this.saveToStorage();\n };\n\n private detachResizeListeners(): void {\n document.removeEventListener('mousemove', this.onMouseMove);\n document.removeEventListener('mouseup', this.onMouseUp);\n }\n\n public get FormattedSize(): string {\n if (this.ResponseSizeBytes == null) return '';\n const b = this.ResponseSizeBytes;\n if (b < 1024) return `${b} B`;\n if (b < 1024 * 1024) return `${(b / 1024).toFixed(1)} KB`;\n return `${(b / 1024 / 1024).toFixed(2)} MB`;\n }\n\n public TrackByHistory = (_i: number, h: HistoryEntry) => h.id;\n\n // ---------- private ----------\n\n private recordHistory(query: string, variables: string, status: 'ok' | 'error', durationMs: number): void {\n const entry: HistoryEntry = {\n id: `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,\n query,\n variables,\n timestamp: new Date(),\n durationMs,\n status,\n favorite: false,\n label: this.deriveLabel(query)\n };\n // De-dupe: if last non-favorite entry has the same query+vars, replace it instead of stacking\n const last = this.History[0];\n if (last && !last.favorite && last.query === query && last.variables === variables) {\n this.History[0] = entry;\n } else {\n this.History = [entry, ...this.History];\n }\n // Trim history (preserve favorites)\n if (this.History.length > HISTORY_LIMIT) {\n const favorites = this.History.filter(h => h.favorite);\n const nonFavorites = this.History.filter(h => !h.favorite).slice(0, HISTORY_LIMIT - favorites.length);\n this.History = [...favorites, ...nonFavorites].sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());\n }\n this.saveToStorage();\n }\n\n private deriveLabel(query: string): string {\n const m = query.match(/(query|mutation|subscription)\\s+(\\w+)/);\n if (m) return `${m[1]} ${m[2]}`;\n const firstField = query.match(/[\\{\\s](\\w+)\\s*[\\(\\{]/);\n if (firstField) return firstField[1];\n return 'unnamed';\n }\n\n private formatError(err: unknown): string {\n if (err && typeof err === 'object') {\n const e = err as { response?: { errors?: unknown[] }; message?: string };\n if (e.response?.errors) {\n return JSON.stringify({ errors: e.response.errors }, null, 2);\n }\n if (e.message) {\n return JSON.stringify({ error: e.message }, null, 2);\n }\n }\n return JSON.stringify({ error: String(err) }, null, 2);\n }\n\n private extractErrorSummary(err: unknown): string {\n if (err && typeof err === 'object') {\n const e = err as { response?: { errors?: Array<{ message?: string }> }; message?: string };\n if (e.response?.errors?.[0]?.message) return e.response.errors[0].message!;\n if (e.message) return e.message;\n }\n return String(err);\n }\n\n private loadFromStorage(): void {\n const parsed = DevToolsPrefs.Get<{\n history?: HistoryEntry[];\n query?: string;\n variables?: string;\n sidebarTab?: SidebarTab;\n schemaKindFilter?: 'all' | 'query' | 'mutation';\n entitiesSearch?: string;\n entitySchemaFilter?: string;\n sidebarWidthPx?: number;\n editorHeightPct?: number;\n }>(PREFS_KEY);\n if (!parsed) return;\n if (parsed.history) {\n this.History = parsed.history.map(h => ({ ...h, timestamp: new Date(h.timestamp) }));\n }\n if (parsed.query) this.Query = parsed.query;\n if (parsed.variables) this.Variables = parsed.variables;\n if (parsed.sidebarTab) this.SidebarTab = parsed.sidebarTab;\n if (parsed.schemaKindFilter) this.SchemaKindFilter = parsed.schemaKindFilter;\n if (parsed.entitiesSearch) this.EntitiesSearch = parsed.entitiesSearch;\n if (parsed.entitySchemaFilter) this.EntitySchemaFilter = parsed.entitySchemaFilter;\n if (typeof parsed.sidebarWidthPx === 'number') this.SidebarWidthPx = parsed.sidebarWidthPx;\n if (typeof parsed.editorHeightPct === 'number') this.EditorHeightPct = parsed.editorHeightPct;\n }\n\n private saveToStorage(): void {\n DevToolsPrefs.Save(PREFS_KEY, {\n history: this.History,\n query: this.Query,\n variables: this.Variables,\n sidebarTab: this.SidebarTab,\n schemaKindFilter: this.SchemaKindFilter,\n entitiesSearch: this.EntitiesSearch,\n entitySchemaFilter: this.EntitySchemaFilter,\n sidebarWidthPx: this.SidebarWidthPx,\n editorHeightPct: this.EditorHeightPct\n });\n }\n\n // ---------- schema introspection ----------\n\n private async loadSchema(): Promise<void> {\n this.SchemaLoading = true;\n this.SchemaError = null;\n this.SchemaIntrospectionDisabled = false;\n this.cdr.markForCheck();\n try {\n const data = await GraphQLDataProvider.ExecuteGQL(INTROSPECTION_QUERY, null);\n const schema = (data as { __schema?: { queryType?: { name: string }; mutationType?: { name: string } | null; types: IntrospectedType[] } }).__schema;\n if (!schema) throw new Error('No __schema in introspection response');\n\n const queryTypeName = schema.queryType?.name;\n const mutationTypeName = schema.mutationType?.name;\n const ops: SchemaOperation[] = [];\n\n for (const type of schema.types) {\n if (type.name === queryTypeName) {\n for (const f of type.fields ?? []) ops.push(this.toOperation(f, 'query'));\n } else if (type.name === mutationTypeName) {\n for (const f of type.fields ?? []) ops.push(this.toOperation(f, 'mutation'));\n }\n }\n\n ops.sort((a, b) => {\n if (a.kind !== b.kind) return a.kind === 'query' ? -1 : 1;\n return a.name.localeCompare(b.name);\n });\n this.Operations = ops;\n this.schemaLoaded = true;\n } catch (err: unknown) {\n // Detect introspection-disabled (Apollo + most servers in production)\n const errStr = this.extractErrorSummary(err);\n const code = this.extractErrorCode(err);\n const looksDisabled =\n code === 'INTROSPECTION_DISABLED' ||\n code === 'GRAPHQL_VALIDATION_FAILED' ||\n /__schema|__type|introspection/i.test(errStr);\n\n if (looksDisabled) {\n this.SchemaIntrospectionDisabled = true;\n this.SchemaError = null;\n } else {\n // Trim huge stack-laden messages — show first 240 chars\n this.SchemaError = errStr.length > 240 ? errStr.slice(0, 240) + '…' : errStr;\n }\n } finally {\n this.SchemaLoading = false;\n this.cdr.markForCheck();\n }\n }\n\n private extractErrorCode(err: unknown): string | undefined {\n if (err && typeof err === 'object') {\n const e = err as { response?: { errors?: Array<{ extensions?: { code?: string } }> } };\n return e.response?.errors?.[0]?.extensions?.code;\n }\n return undefined;\n }\n\n private toOperation(field: IntrospectedField, kind: 'query' | 'mutation'): SchemaOperation {\n const argSummary = field.args.length === 0\n ? ''\n : field.args.map(a => `${a.name}: ${this.typeRefToString(a.type)}`).join(', ');\n return {\n name: field.name,\n kind,\n description: field.description ?? '',\n argSummary,\n returnSummary: this.typeRefToString(field.type),\n field\n };\n }\n\n private typeRefToString(t: IntrospectedTypeRef | null | undefined): string {\n if (!t) return '?';\n if (t.kind === 'NON_NULL') return this.typeRefToString(t.ofType) + '!';\n if (t.kind === 'LIST') return '[' + this.typeRefToString(t.ofType) + ']';\n return t.name ?? '?';\n }\n\n private isObjectReturn(t: IntrospectedTypeRef): boolean {\n let cur: IntrospectedTypeRef | null | undefined = t;\n while (cur && (cur.kind === 'NON_NULL' || cur.kind === 'LIST')) cur = cur.ofType;\n return !!cur && (cur.kind === 'OBJECT' || cur.kind === 'INTERFACE' || cur.kind === 'UNION');\n }\n\n private buildOperationTemplate(op: SchemaOperation): string {\n const opNameUpper = op.name.charAt(0).toUpperCase() + op.name.slice(1);\n const f = op.field;\n\n // Variable declarations + arg passing\n let varDecls = '';\n let argPass = '';\n if (f.args.length > 0) {\n varDecls = '(' + f.args.map(a => `$${a.name}: ${this.typeRefToString(a.type)}`).join(', ') + ')';\n argPass = '(' + f.args.map(a => `${a.name}: $${a.name}`).join(', ') + ')';\n }\n\n const isObject = this.isObjectReturn(f.type);\n const selection = isObject\n ? ' {\\n # TODO: select fields from ' + this.typeRefToString(f.type) + '\\n }'\n : '';\n\n return `${op.kind} ${opNameUpper}${varDecls} {\\n ${op.name}${argPass}${selection}\\n}\\n`;\n }\n}\n\nconst INTROSPECTION_QUERY = `\nquery MJDevToolsIntrospection {\n __schema {\n queryType { name }\n mutationType { name }\n types {\n kind\n name\n description\n fields(includeDeprecated: false) {\n name\n description\n args {\n name\n description\n type { ...TypeRef }\n defaultValue\n }\n type { ...TypeRef }\n }\n }\n }\n}\nfragment TypeRef on __Type {\n kind\n name\n ofType { kind name ofType { kind name ofType { kind name ofType { kind name } } } }\n}\n`;\n","<div class=\"mj-inspector mj-inspector--solo\">\n <mj-page-header-interior\n Role=\"region\"\n AriaLabel=\"GraphQL console\"\n Title=\"GraphQL Console\"\n Subtitle=\"Run queries against the connected MJ API\">\n <div meta>\n @if (ApiUrl) {\n <span class=\"gc-endpoint-meta\">\n <i class=\"fa-solid fa-plug\" aria-hidden=\"true\"></i>\n <code class=\"gc-endpoint\">{{ ApiUrl }}</code>\n </span>\n }\n </div>\n <div actions>\n <button mjButton\n variant=\"secondary\"\n size=\"sm\"\n [toggleable]=\"true\"\n [(selected)]=\"ShowHistory\"\n title=\"Toggle history sidebar\">\n <i class=\"fa-solid fa-clock-rotate-left\" aria-hidden=\"true\"></i> History\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"OnCopyAsCurl()\" title=\"Copy as cURL command\">\n <i class=\"fa-solid fa-terminal\" aria-hidden=\"true\"></i> Copy cURL\n </button>\n </div>\n </mj-page-header-interior>\n\n <div class=\"gc-body\">\n @if (ShowHistory) {\n <aside class=\"gc-sidebar\" [style.width.px]=\"SidebarWidthPx\">\n <div class=\"gc-sidebar-tabs\">\n <button type=\"button\"\n class=\"gc-sidebar-tab\"\n [class.gc-sidebar-tab--active]=\"SidebarTab === 'history'\"\n (click)=\"OnSidebarTabChange('history')\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i> History\n </button>\n <button type=\"button\"\n class=\"gc-sidebar-tab\"\n [class.gc-sidebar-tab--active]=\"SidebarTab === 'entities'\"\n (click)=\"OnSidebarTabChange('entities')\">\n <i class=\"fa-solid fa-table-list\"></i> Entities\n </button>\n <button type=\"button\"\n class=\"gc-sidebar-tab\"\n [class.gc-sidebar-tab--active]=\"SidebarTab === 'schema'\"\n (click)=\"OnSidebarTabChange('schema')\">\n <i class=\"fa-solid fa-sitemap\"></i> Schema\n </button>\n </div>\n\n @if (SidebarTab === 'history') {\n <div class=\"gc-history-head\">\n <span>{{ History.length }} {{ History.length === 1 ? 'entry' : 'entries' }}</span>\n <button class=\"gc-history-clear\"\n type=\"button\"\n (click)=\"OnClearHistory()\"\n title=\"Clear non-favorite history\">\n <i class=\"fa-solid fa-broom\"></i>\n </button>\n </div>\n @if (History.length === 0) {\n <div class=\"gc-history-empty\">\n <i class=\"fa-regular fa-circle-question\"></i>\n Run a query to see it here. Star <i class=\"fa-solid fa-star\"></i> to keep it.\n </div>\n } @else {\n <div class=\"gc-history-list\">\n @for (h of History; track TrackByHistory($index, h)) {\n <button type=\"button\"\n class=\"gc-history-item\"\n [class.gc-history-item--error]=\"h.status === 'error'\"\n [class.gc-history-item--fav]=\"h.favorite\"\n (click)=\"OnRestoreHistory(h)\">\n <div class=\"gc-history-item-head\">\n <i class=\"gc-history-status\"\n [class.fa-solid]=\"true\"\n [class.fa-circle-check]=\"h.status === 'ok'\"\n [class.fa-circle-xmark]=\"h.status === 'error'\"\n [class.gc-status--ok]=\"h.status === 'ok'\"\n [class.gc-status--err]=\"h.status === 'error'\"></i>\n <span class=\"gc-history-label\">{{ h.label || 'unnamed' }}</span>\n <button class=\"gc-history-fav\"\n type=\"button\"\n (click)=\"OnToggleFavorite(h, $event)\"\n [title]=\"h.favorite ? 'Unfavorite' : 'Favorite'\">\n <i [class]=\"h.favorite ? 'fa-solid fa-star' : 'fa-regular fa-star'\"></i>\n </button>\n <button class=\"gc-history-del\"\n type=\"button\"\n (click)=\"OnDeleteHistory(h, $event)\"\n title=\"Remove from history\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n <div class=\"gc-history-meta\">\n <span>{{ h.timestamp | date:'HH:mm:ss' }}</span>\n @if (h.durationMs != null) {\n <span>·</span>\n <span>{{ h.durationMs }}ms</span>\n }\n </div>\n </button>\n }\n </div>\n }\n } @else if (SidebarTab === 'entities') {\n <div class=\"gc-ent-toolbar\">\n <div class=\"gc-ent-search-wrap\">\n <i class=\"fa-solid fa-search gc-ent-search-icon\"></i>\n <input type=\"search\"\n class=\"gc-ent-search\"\n placeholder=\"Search entities…\"\n [(ngModel)]=\"EntitiesSearch\" />\n </div>\n @if (KnownSchemas.length > 1) {\n <select class=\"gc-ent-schema\" [(ngModel)]=\"EntitySchemaFilter\">\n <option value=\"\">All schemas ({{ KnownSchemas.length }})</option>\n @for (s of KnownSchemas; track s) {\n <option [value]=\"s\">{{ s }}</option>\n }\n </select>\n }\n </div>\n <div class=\"gc-ent-meta\">\n <span>{{ FilteredEntities.length }} of {{ Entities.length }}</span>\n <span class=\"gc-ent-hint\">Click an entity to see operations</span>\n </div>\n <div class=\"gc-ent-list\">\n @for (item of FilteredEntities; track TrackByEntity($index, item)) {\n <div class=\"gc-ent-card\" [class.gc-ent-card--expanded]=\"item.expanded\">\n <button type=\"button\"\n class=\"gc-ent-row\"\n (click)=\"ToggleEntity(item)\">\n <i class=\"fa-solid fa-chevron-right gc-ent-chev\"\n [class.gc-ent-chev--down]=\"item.expanded\"></i>\n <div class=\"gc-ent-info\">\n <div class=\"gc-ent-name\">{{ item.info.Name }}</div>\n <div class=\"gc-ent-meta-row\">\n <code class=\"gc-ent-typename\">{{ item.typeName }}</code>\n <span class=\"gc-ent-schema-badge\">{{ item.schema }}</span>\n </div>\n </div>\n </button>\n @if (item.expanded) {\n <div class=\"gc-ent-actions\">\n <button type=\"button\" class=\"gc-ent-op gc-ent-op--read\"\n (click)=\"OnEntityOp(item, 'view', $event)\"\n title=\"Insert a Run View template (Shift-click to append)\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n Run view\n </button>\n <button type=\"button\" class=\"gc-ent-op gc-ent-op--read\"\n (click)=\"OnEntityOp(item, 'byId', $event)\"\n title=\"Fetch a single record by ID (Shift-click to append)\">\n <i class=\"fa-solid fa-fingerprint\"></i>\n Get by ID\n </button>\n @if (item.info.AllowCreateAPI) {\n <button type=\"button\" class=\"gc-ent-op gc-ent-op--write\"\n (click)=\"OnEntityOp(item, 'create', $event)\"\n title=\"Create a new record (Shift-click to append)\">\n <i class=\"fa-solid fa-plus\"></i>\n Create\n </button>\n }\n @if (item.info.AllowUpdateAPI) {\n <button type=\"button\" class=\"gc-ent-op gc-ent-op--write\"\n (click)=\"OnEntityOp(item, 'update', $event)\"\n title=\"Update an existing record (Shift-click to append)\">\n <i class=\"fa-solid fa-pen\"></i>\n Update\n </button>\n }\n @if (item.info.AllowDeleteAPI) {\n <button type=\"button\" class=\"gc-ent-op gc-ent-op--danger\"\n (click)=\"OnEntityOp(item, 'delete', $event)\"\n title=\"Delete a record (Shift-click to append)\">\n <i class=\"fa-solid fa-trash\"></i>\n Delete\n </button>\n }\n </div>\n @if (item.info.Description) {\n <div class=\"gc-ent-desc\">{{ item.info.Description }}</div>\n }\n }\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <div class=\"gc-ent-empty\">\n <i class=\"fa-solid fa-search\"></i>\n <span>No entities match.</span>\n @if (EntitiesSearch || EntitySchemaFilter) {\n <button class=\"gc-ent-clear\" type=\"button\" (click)=\"ClearEntityFilters()\">\n Clear filters\n </button>\n }\n </div>\n }\n </div>\n } @else {\n <div class=\"gc-schema-toolbar\">\n <div class=\"gc-schema-search-wrap\">\n <i class=\"fa-solid fa-search gc-schema-search-icon\"></i>\n <input type=\"search\"\n class=\"gc-schema-search\"\n placeholder=\"Search operations…\"\n [(ngModel)]=\"SchemaSearch\" />\n </div>\n <button class=\"gc-schema-reload\"\n type=\"button\"\n (click)=\"OnReloadSchema()\"\n [disabled]=\"SchemaLoading\"\n title=\"Reload schema\">\n <i class=\"fa-solid\" [class.fa-rotate]=\"!SchemaLoading\" [class.fa-spinner]=\"SchemaLoading\" [class.fa-spin]=\"SchemaLoading\"></i>\n </button>\n </div>\n\n @if (Operations.length > 0) {\n <div class=\"gc-schema-kinds\">\n <button type=\"button\"\n class=\"gc-schema-kind\"\n [class.gc-schema-kind--active]=\"SchemaKindFilter === 'all'\"\n (click)=\"SchemaKindFilter = 'all'\">\n All <span>{{ OperationCounts.all }}</span>\n </button>\n <button type=\"button\"\n class=\"gc-schema-kind gc-schema-kind--query\"\n [class.gc-schema-kind--active]=\"SchemaKindFilter === 'query'\"\n (click)=\"SchemaKindFilter = 'query'\">\n <i class=\"fa-solid fa-magnifying-glass\"></i> Query <span>{{ OperationCounts.query }}</span>\n </button>\n <button type=\"button\"\n class=\"gc-schema-kind gc-schema-kind--mutation\"\n [class.gc-schema-kind--active]=\"SchemaKindFilter === 'mutation'\"\n (click)=\"SchemaKindFilter = 'mutation'\">\n <i class=\"fa-solid fa-pen\"></i> Mutation <span>{{ OperationCounts.mutation }}</span>\n </button>\n </div>\n }\n\n @if (SchemaLoading) {\n <div class=\"gc-schema-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Introspecting schema…</span>\n </div>\n } @else if (SchemaIntrospectionDisabled) {\n <div class=\"gc-schema-state gc-schema-disabled\">\n <i class=\"fa-solid fa-lock\"></i>\n <div class=\"gc-schema-disabled-title\">Introspection disabled</div>\n <div class=\"gc-schema-disabled-body\">\n This server has GraphQL introspection turned off (typical in production). Schema browsing isn't available — write queries directly in the editor, or use the History tab to revisit previous queries.\n </div>\n </div>\n } @else if (SchemaError) {\n <div class=\"gc-schema-state gc-schema-state--err\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <div class=\"gc-schema-err-title\">Couldn't load schema</div>\n <div class=\"gc-schema-err-body\">{{ SchemaError }}</div>\n </div>\n } @else if (FilteredOperations.length === 0) {\n <div class=\"gc-schema-state\">\n <i class=\"fa-solid fa-search\"></i>\n <span>No operations match.</span>\n </div>\n } @else {\n <div class=\"gc-schema-list\">\n @for (op of FilteredOperations; track TrackByOp($index, op)) {\n <button type=\"button\"\n class=\"gc-schema-op\"\n [class.gc-schema-op--mutation]=\"op.kind === 'mutation'\"\n (click)=\"OnInsertOperation(op, $event)\"\n [title]=\"(op.description || ('Insert ' + op.kind + ' template')) + ' · Shift-click to append'\">\n <div class=\"gc-schema-op-head\">\n <span class=\"gc-schema-op-kind\">{{ op.kind }}</span>\n <span class=\"gc-schema-op-name\">{{ op.name }}</span>\n </div>\n @if (op.argSummary) {\n <div class=\"gc-schema-op-args\">({{ op.argSummary }})</div>\n }\n <div class=\"gc-schema-op-return\">\n <i class=\"fa-solid fa-arrow-right\"></i> {{ op.returnSummary }}\n </div>\n @if (op.description) {\n <div class=\"gc-schema-op-desc\">{{ op.description }}</div>\n }\n </button>\n }\n </div>\n }\n }\n </aside>\n <div class=\"gc-splitter gc-splitter--vert\"\n (mousedown)=\"OnSplitterDown($event, 'sidebar')\"\n title=\"Drag to resize sidebar\"></div>\n }\n\n <div class=\"gc-main\">\n <div class=\"gc-editor-wrap\" [style.flex]=\"'0 0 ' + EditorHeightPct + '%'\">\n <div class=\"gc-editor-head\">\n <span class=\"gc-editor-label\">Query</span>\n <span class=\"gc-editor-hint\">⌘/Ctrl+Enter to run · Shift+click an entity/op to append</span>\n <button class=\"gc-mini-btn\" type=\"button\" (click)=\"OnFormatQuery()\" title=\"Tidy whitespace\">\n <i class=\"fa-solid fa-broom\"></i> Tidy\n </button>\n <button class=\"gc-mini-btn gc-mini-btn--danger\" type=\"button\" (click)=\"OnClearQuery()\" title=\"Clear editor\">\n <i class=\"fa-solid fa-eraser\"></i> Clear\n </button>\n </div>\n <mj-code-editor\n class=\"gc-editor\"\n [(ngModel)]=\"Query\"\n [language]=\"'graphql'\"\n [lineWrapping]=\"true\"\n placeholder=\"Enter your GraphQL query…\">\n </mj-code-editor>\n </div>\n\n <div class=\"gc-splitter gc-splitter--horiz\"\n (mousedown)=\"OnSplitterDown($event, 'editor')\"\n title=\"Drag to resize editor / response\"></div>\n\n <div class=\"gc-vars-wrap\">\n <button class=\"gc-vars-toggle\" type=\"button\" (click)=\"ToggleVariables()\">\n <i class=\"fa-solid fa-chevron-right gc-vars-chev\" [class.gc-vars-chev--down]=\"ShowVariables\"></i>\n Variables\n @if (Variables && Variables.trim() !== '{}' && Variables.trim() !== '') {\n <span class=\"gc-vars-pill\">configured</span>\n }\n </button>\n @if (ShowVariables) {\n <mj-code-editor\n class=\"gc-editor gc-editor--vars\"\n [(ngModel)]=\"Variables\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n placeholder=\"{}\">\n </mj-code-editor>\n }\n </div>\n\n <div class=\"gc-run-bar\">\n <button class=\"gc-run-btn\"\n type=\"button\"\n [disabled]=\"Running\"\n (click)=\"OnRun()\">\n @if (Running) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Running…\n } @else {\n <i class=\"fa-solid fa-play\"></i> Run\n }\n </button>\n @if (ResponseStatus !== 'idle') {\n <div class=\"gc-run-meta\">\n @if (ResponseStatus === 'ok') {\n <span class=\"gc-status-badge gc-status-badge--ok\">\n <i class=\"fa-solid fa-circle-check\"></i> 200 OK\n </span>\n } @else {\n <span class=\"gc-status-badge gc-status-badge--err\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error\n </span>\n }\n @if (ResponseDurationMs != null) {\n <span class=\"gc-meta-pill\"><i class=\"fa-regular fa-clock\"></i> {{ ResponseDurationMs }}ms</span>\n }\n @if (ResponseSizeBytes != null) {\n <span class=\"gc-meta-pill\"><i class=\"fa-solid fa-database\"></i> {{ FormattedSize }}</span>\n }\n </div>\n }\n <span class=\"gc-spacer\"></span>\n @if (ResponseJson) {\n <button mjButton\n [variant]=\"CopyConfirmed ? 'success' : 'secondary'\"\n size=\"sm\"\n (click)=\"OnCopyResponse()\">\n <i class=\"fa-solid\" [class.fa-clipboard]=\"!CopyConfirmed\" [class.fa-check]=\"CopyConfirmed\" aria-hidden=\"true\"></i>\n {{ CopyConfirmed ? 'Copied' : 'Copy' }}\n </button>\n }\n </div>\n\n <div class=\"gc-response-wrap\">\n <div class=\"gc-response-head\">\n <span class=\"gc-editor-label\">Response</span>\n </div>\n @if (ErrorMessage && !ResponseJson) {\n <div class=\"gc-error\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>{{ ErrorMessage }}</span>\n </div>\n } @else if (ResponseJson) {\n @if (ErrorMessage) {\n <div class=\"gc-error gc-error--inline\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>{{ ErrorMessage }}</span>\n </div>\n }\n <pre class=\"gc-response\"><code>{{ ResponseJson }}</code></pre>\n } @else {\n <div class=\"gc-empty\">\n <i class=\"fa-solid fa-arrow-up-from-bracket\"></i>\n <span>Run a query to see results here.</span>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n"]}
@@ -1,5 +1,6 @@
1
1
  import { OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
2
2
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
3
+ import { TabConfig } from '@memberjunction/ng-ui-components';
3
4
  import { WorkspaceStateManager, GoldenLayoutManager } from '@memberjunction/ng-base-application';
4
5
  import * as i0 from "@angular/core";
5
6
  interface LayoutSection {
@@ -27,6 +28,10 @@ export declare class LayoutInspectorComponent extends BaseResourceComponent impl
27
28
  ngOnDestroy(): void;
28
29
  GetResourceDisplayName(): Promise<string>;
29
30
  GetResourceIconClass(): Promise<string>;
31
+ /** Sections rendered as horizontal tabs in the chrome's [toolbar] slot. */
32
+ get tabsConfig(): TabConfig[];
33
+ /** Adapter for `<mj-tab-nav>`'s string-typed `(TabChange)` output. */
34
+ onTabChange(key: string): void;
30
35
  OnSectionClick(section: LayoutSection): void;
31
36
  refresh(): void;
32
37
  OnCopy(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"layout-inspector.component.d.ts","sourceRoot":"","sources":["../../src/DevTools/layout-inspector.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;;AAGjG,UAAU,aAAa;IACnB,EAAE,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,qBAOa,wBAAyB,SAAQ,qBAAsB,YAAW,MAAM,EAAE,SAAS;IAaxF,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IAbX,QAAQ,EAAE,aAAa,EAAE,CAG9B;IAEK,aAAa,EAAE,WAAW,GAAG,QAAQ,CAAe;IACpD,UAAU,SAAQ;IAClB,aAAa,UAAS;IACtB,aAAa,OAAc;gBAGtB,GAAG,EAAE,iBAAiB,EACtB,SAAS,EAAE,qBAAqB,EAChC,MAAM,EAAE,mBAAmB;IAKhC,QAAQ,IAAI,IAAI;IAOP,WAAW,IAAI,IAAI;IAKb,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IACzC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAEtD,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAO5C,OAAO,IAAI,IAAI;IAMT,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAc7B,UAAU,IAAI,IAAI;IAWzB,IAAW,kBAAkB,IAAI,MAAM,CAEtC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAID,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,YAAY;yCAlGX,wBAAwB;2CAAxB,wBAAwB;CAyGpC"}
1
+ {"version":3,"file":"layout-inspector.component.d.ts","sourceRoot":"","sources":["../../src/DevTools/layout-inspector.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;;AAGjG,UAAU,aAAa;IACnB,EAAE,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,qBAOa,wBAAyB,SAAQ,qBAAsB,YAAW,MAAM,EAAE,SAAS;IAaxF,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IAbX,QAAQ,EAAE,aAAa,EAAE,CAG9B;IAEK,aAAa,EAAE,WAAW,GAAG,QAAQ,CAAe;IACpD,UAAU,SAAQ;IAClB,aAAa,UAAS;IACtB,aAAa,OAAc;gBAGtB,GAAG,EAAE,iBAAiB,EACtB,SAAS,EAAE,qBAAqB,EAChC,MAAM,EAAE,mBAAmB;IAKhC,QAAQ,IAAI,IAAI;IAOP,WAAW,IAAI,IAAI;IAKb,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IACzC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAE7D,2EAA2E;IAC3E,IAAW,UAAU,IAAI,SAAS,EAAE,CAMnC;IAED,sEAAsE;IAC/D,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO9B,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAO5C,OAAO,IAAI,IAAI;IAMT,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAc7B,UAAU,IAAI,IAAI;IAWzB,IAAW,kBAAkB,IAAI,MAAM,CAEtC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAID,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,YAAY;yCAnHX,wBAAwB;2CAAxB,wBAAwB;CA0HpC"}