@memberjunction/ng-core-entity-forms 3.4.0 → 4.1.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 (1334) hide show
  1. package/README.md +85 -2
  2. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts +13 -25
  3. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -1
  4. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +33 -379
  5. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
  6. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  7. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +15 -14
  8. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  9. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js +1 -0
  10. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js.map +1 -1
  11. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
  12. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +14 -13
  13. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +45 -15
  15. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  16. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1443 -1267
  17. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  18. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
  19. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +15 -14
  20. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
  21. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
  22. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +12 -12
  23. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  24. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
  25. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +9 -8
  26. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  27. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
  28. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +14 -14
  29. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  30. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
  31. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +12 -11
  32. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  33. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  34. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +18 -16
  35. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  36. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +3 -8
  37. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  38. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +107 -77
  39. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  40. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
  41. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +9 -9
  42. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  43. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +1 -8
  44. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  45. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +599 -587
  46. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  47. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +11 -10
  48. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  49. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +1 -6
  50. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
  51. package/dist/lib/custom/Actions/action-execution-log-form.component.js +20 -21
  52. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  53. package/dist/lib/custom/Actions/action-form.component.d.ts +2 -6
  54. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  55. package/dist/lib/custom/Actions/action-form.component.js +64 -59
  56. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  57. package/dist/lib/custom/Entities/entity-form.component.d.ts +73 -1
  58. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  59. package/dist/lib/custom/Entities/entity-form.component.js +1592 -914
  60. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  61. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +15 -1
  62. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
  63. package/dist/lib/custom/EntityActions/entityaction.form.component.js +51 -30
  64. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  65. package/dist/lib/custom/Lists/list-form.component.d.ts +1 -1
  66. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  67. package/dist/lib/custom/Lists/list-form.component.js +437 -448
  68. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  69. package/dist/lib/custom/Queries/query-category-dialog.component.d.ts.map +1 -1
  70. package/dist/lib/custom/Queries/query-category-dialog.component.js +28 -29
  71. package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
  72. package/dist/lib/custom/Queries/query-form.component.d.ts +1 -3
  73. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  74. package/dist/lib/custom/Queries/query-form.component.js +189 -188
  75. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  76. package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
  77. package/dist/lib/custom/Queries/query-run-dialog.component.js +90 -89
  78. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  79. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
  80. package/dist/lib/custom/Templates/template-param-dialog.component.js +76 -75
  81. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  82. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  83. package/dist/lib/custom/Templates/template-params-grid.component.js +98 -93
  84. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  85. package/dist/lib/custom/Templates/templates-form.component.d.ts +0 -1
  86. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  87. package/dist/lib/custom/Templates/templates-form.component.js +28 -39
  88. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  89. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +0 -1
  90. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
  91. package/dist/lib/custom/Tests/entity-link-pill.component.js +16 -18
  92. package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
  93. package/dist/lib/custom/Tests/test-form.component.d.ts +7 -13
  94. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  95. package/dist/lib/custom/Tests/test-form.component.js +440 -423
  96. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  97. package/dist/lib/custom/Tests/test-rubric-form.component.d.ts +0 -7
  98. package/dist/lib/custom/Tests/test-rubric-form.component.d.ts.map +1 -1
  99. package/dist/lib/custom/Tests/test-rubric-form.component.js +11 -20
  100. package/dist/lib/custom/Tests/test-rubric-form.component.js.map +1 -1
  101. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +0 -7
  102. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
  103. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +18 -25
  104. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  105. package/dist/lib/custom/Tests/test-run-form.component.d.ts +5 -12
  106. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  107. package/dist/lib/custom/Tests/test-run-form.component.js +423 -410
  108. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  109. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +7 -13
  110. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  111. package/dist/lib/custom/Tests/test-suite-form.component.js +665 -642
  112. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  113. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +7 -13
  114. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  115. package/dist/lib/custom/Tests/test-suite-run-form.component.js +635 -606
  116. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  117. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  118. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +240 -243
  119. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  120. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  121. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +42 -40
  122. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  123. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
  124. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +37 -36
  125. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
  126. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  127. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +68 -78
  128. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  129. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -1
  130. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +6 -6
  131. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
  132. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +5 -10
  133. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  134. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +310 -292
  135. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  136. package/dist/lib/custom/custom-forms.module.d.ts +50 -54
  137. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  138. package/dist/lib/custom/custom-forms.module.js +29 -63
  139. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  140. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  141. package/dist/lib/custom/shared/entity-selector-dialog.component.js +85 -82
  142. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  143. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.d.ts +0 -1
  144. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.d.ts.map +1 -1
  145. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js +36 -41
  146. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js.map +1 -1
  147. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.d.ts +0 -1
  148. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.d.ts.map +1 -1
  149. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +252 -267
  150. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
  151. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.d.ts +0 -1
  152. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.d.ts.map +1 -1
  153. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js +34 -42
  154. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js.map +1 -1
  155. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts +0 -1
  156. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts.map +1 -1
  157. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js +19 -27
  158. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js.map +1 -1
  159. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.d.ts +0 -1
  160. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.d.ts.map +1 -1
  161. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js +26 -32
  162. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js.map +1 -1
  163. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.d.ts +0 -1
  164. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.d.ts.map +1 -1
  165. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js +43 -47
  166. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js.map +1 -1
  167. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.d.ts +0 -1
  168. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.d.ts.map +1 -1
  169. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js +48 -66
  170. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js.map +1 -1
  171. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.d.ts +0 -1
  172. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.d.ts.map +1 -1
  173. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js +26 -30
  174. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js.map +1 -1
  175. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.d.ts +0 -1
  176. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.d.ts.map +1 -1
  177. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js +24 -30
  178. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js.map +1 -1
  179. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.d.ts +0 -1
  180. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.d.ts.map +1 -1
  181. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js +20 -26
  182. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js.map +1 -1
  183. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.d.ts +0 -1
  184. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.d.ts.map +1 -1
  185. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js +44 -64
  186. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js.map +1 -1
  187. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.d.ts +0 -1
  188. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.d.ts.map +1 -1
  189. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js +22 -26
  190. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js.map +1 -1
  191. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts +0 -1
  192. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts.map +1 -1
  193. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js +27 -35
  194. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js.map +1 -1
  195. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.d.ts +0 -1
  196. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.d.ts.map +1 -1
  197. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js +25 -35
  198. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js.map +1 -1
  199. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.d.ts +0 -1
  200. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.d.ts.map +1 -1
  201. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js +29 -35
  202. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js.map +1 -1
  203. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.d.ts +0 -1
  204. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.d.ts.map +1 -1
  205. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js +27 -35
  206. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js.map +1 -1
  207. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.d.ts +0 -1
  208. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.d.ts.map +1 -1
  209. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +121 -150
  210. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
  211. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts +0 -1
  212. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts.map +1 -1
  213. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js +37 -47
  214. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js.map +1 -1
  215. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.d.ts +0 -1
  216. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.d.ts.map +1 -1
  217. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +52 -59
  218. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
  219. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts +0 -1
  220. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts.map +1 -1
  221. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +55 -66
  222. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -1
  223. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts +0 -1
  224. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts.map +1 -1
  225. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +24 -30
  226. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -1
  227. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.d.ts +0 -1
  228. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.d.ts.map +1 -1
  229. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js +37 -42
  230. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js.map +1 -1
  231. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.d.ts +0 -1
  232. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.d.ts.map +1 -1
  233. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js +42 -47
  234. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js.map +1 -1
  235. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.d.ts +0 -1
  236. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.d.ts.map +1 -1
  237. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +86 -97
  238. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
  239. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.d.ts +0 -1
  240. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.d.ts.map +1 -1
  241. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js +23 -27
  242. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js.map +1 -1
  243. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.d.ts +0 -1
  244. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.d.ts.map +1 -1
  245. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js +19 -29
  246. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js.map +1 -1
  247. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.d.ts +0 -1
  248. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.d.ts.map +1 -1
  249. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js +70 -73
  250. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js.map +1 -1
  251. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.d.ts +0 -1
  252. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.d.ts.map +1 -1
  253. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +179 -184
  254. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
  255. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.d.ts +0 -1
  256. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.d.ts.map +1 -1
  257. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js +21 -27
  258. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js.map +1 -1
  259. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.d.ts +0 -1
  260. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.d.ts.map +1 -1
  261. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js +23 -29
  262. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js.map +1 -1
  263. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.d.ts +0 -1
  264. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.d.ts.map +1 -1
  265. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js +33 -43
  266. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js.map +1 -1
  267. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.d.ts +0 -1
  268. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.d.ts.map +1 -1
  269. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js +31 -37
  270. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js.map +1 -1
  271. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.d.ts +0 -1
  272. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.d.ts.map +1 -1
  273. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js +21 -24
  274. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js.map +1 -1
  275. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.d.ts +0 -1
  276. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.d.ts.map +1 -1
  277. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js +22 -25
  278. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js.map +1 -1
  279. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.d.ts +0 -1
  280. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.d.ts.map +1 -1
  281. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +35 -42
  282. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
  283. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.d.ts +0 -1
  284. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.d.ts.map +1 -1
  285. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js +39 -48
  286. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js.map +1 -1
  287. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.d.ts +0 -1
  288. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.d.ts.map +1 -1
  289. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +161 -174
  290. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
  291. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.d.ts +0 -1
  292. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.d.ts.map +1 -1
  293. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js +35 -40
  294. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js.map +1 -1
  295. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.d.ts +0 -1
  296. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.d.ts.map +1 -1
  297. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js +44 -55
  298. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js.map +1 -1
  299. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.d.ts +0 -1
  300. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.d.ts.map +1 -1
  301. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +134 -163
  302. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
  303. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts +0 -1
  304. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts.map +1 -1
  305. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js +43 -52
  306. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js.map +1 -1
  307. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.d.ts +0 -1
  308. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.d.ts.map +1 -1
  309. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js +21 -24
  310. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js.map +1 -1
  311. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.d.ts +0 -1
  312. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.d.ts.map +1 -1
  313. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +36 -50
  314. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
  315. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.d.ts +0 -1
  316. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.d.ts.map +1 -1
  317. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +76 -81
  318. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
  319. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.d.ts +0 -1
  320. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.d.ts.map +1 -1
  321. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js +25 -31
  322. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js.map +1 -1
  323. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.d.ts +0 -1
  324. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.d.ts.map +1 -1
  325. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js +28 -31
  326. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js.map +1 -1
  327. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.d.ts +0 -1
  328. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.d.ts.map +1 -1
  329. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.js +37 -40
  330. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.js.map +1 -1
  331. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.d.ts +0 -1
  332. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.d.ts.map +1 -1
  333. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.js +24 -30
  334. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.js.map +1 -1
  335. package/dist/lib/generated/Entities/APIKey/apikey.form.component.d.ts +0 -1
  336. package/dist/lib/generated/Entities/APIKey/apikey.form.component.d.ts.map +1 -1
  337. package/dist/lib/generated/Entities/APIKey/apikey.form.component.js +49 -56
  338. package/dist/lib/generated/Entities/APIKey/apikey.form.component.js.map +1 -1
  339. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.d.ts +0 -1
  340. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.d.ts.map +1 -1
  341. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.js +17 -23
  342. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.js.map +1 -1
  343. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.d.ts +0 -1
  344. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.d.ts.map +1 -1
  345. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.js +24 -30
  346. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.js.map +1 -1
  347. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.d.ts +0 -1
  348. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.d.ts.map +1 -1
  349. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.js +30 -36
  350. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.js.map +1 -1
  351. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.d.ts +0 -1
  352. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.d.ts.map +1 -1
  353. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js +47 -52
  354. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js.map +1 -1
  355. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.d.ts +0 -1
  356. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.d.ts.map +1 -1
  357. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js +32 -38
  358. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js.map +1 -1
  359. package/dist/lib/generated/Entities/Action/action.form.component.d.ts +0 -1
  360. package/dist/lib/generated/Entities/Action/action.form.component.d.ts.map +1 -1
  361. package/dist/lib/generated/Entities/Action/action.form.component.js +130 -141
  362. package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
  363. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.d.ts +0 -1
  364. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.d.ts.map +1 -1
  365. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +19 -25
  366. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js.map +1 -1
  367. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.d.ts +0 -1
  368. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.d.ts.map +1 -1
  369. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +43 -48
  370. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js.map +1 -1
  371. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.d.ts +0 -1
  372. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.d.ts.map +1 -1
  373. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +21 -27
  374. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js.map +1 -1
  375. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.d.ts +0 -1
  376. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.d.ts.map +1 -1
  377. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js +21 -24
  378. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js.map +1 -1
  379. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.d.ts +0 -1
  380. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.d.ts.map +1 -1
  381. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js +27 -33
  382. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js.map +1 -1
  383. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.d.ts +0 -1
  384. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.d.ts.map +1 -1
  385. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js +23 -26
  386. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js.map +1 -1
  387. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.d.ts +0 -1
  388. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.d.ts.map +1 -1
  389. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js +19 -25
  390. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js.map +1 -1
  391. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.d.ts +0 -1
  392. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.d.ts.map +1 -1
  393. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js +42 -47
  394. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js.map +1 -1
  395. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.d.ts +0 -1
  396. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.d.ts.map +1 -1
  397. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js +22 -26
  398. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js.map +1 -1
  399. package/dist/lib/generated/Entities/Application/application.form.component.d.ts +0 -1
  400. package/dist/lib/generated/Entities/Application/application.form.component.d.ts.map +1 -1
  401. package/dist/lib/generated/Entities/Application/application.form.component.js +64 -67
  402. package/dist/lib/generated/Entities/Application/application.form.component.js.map +1 -1
  403. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.d.ts +0 -1
  404. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.d.ts.map +1 -1
  405. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js +26 -32
  406. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js.map +1 -1
  407. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.d.ts +0 -1
  408. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.d.ts.map +1 -1
  409. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js +22 -26
  410. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js.map +1 -1
  411. package/dist/lib/generated/Entities/Artifact/artifact.form.component.d.ts +0 -1
  412. package/dist/lib/generated/Entities/Artifact/artifact.form.component.d.ts.map +1 -1
  413. package/dist/lib/generated/Entities/Artifact/artifact.form.component.js +47 -56
  414. package/dist/lib/generated/Entities/Artifact/artifact.form.component.js.map +1 -1
  415. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.d.ts +0 -1
  416. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.d.ts.map +1 -1
  417. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js +25 -33
  418. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js.map +1 -1
  419. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.d.ts +0 -1
  420. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.d.ts.map +1 -1
  421. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +61 -66
  422. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
  423. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.d.ts +0 -1
  424. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.d.ts.map +1 -1
  425. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js +22 -28
  426. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js.map +1 -1
  427. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.d.ts +0 -1
  428. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.d.ts.map +1 -1
  429. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js +55 -62
  430. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js.map +1 -1
  431. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts +0 -1
  432. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts.map +1 -1
  433. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js +26 -30
  434. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js.map +1 -1
  435. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.d.ts +0 -1
  436. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.d.ts.map +1 -1
  437. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js +26 -36
  438. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js.map +1 -1
  439. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.d.ts +0 -1
  440. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.d.ts.map +1 -1
  441. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js +38 -45
  442. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js.map +1 -1
  443. package/dist/lib/generated/Entities/Authorization/authorization.form.component.d.ts +0 -1
  444. package/dist/lib/generated/Entities/Authorization/authorization.form.component.d.ts.map +1 -1
  445. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js +60 -65
  446. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js.map +1 -1
  447. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.d.ts +0 -1
  448. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.d.ts.map +1 -1
  449. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js +19 -25
  450. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js.map +1 -1
  451. package/dist/lib/generated/Entities/Collection/collection.form.component.d.ts +0 -1
  452. package/dist/lib/generated/Entities/Collection/collection.form.component.d.ts.map +1 -1
  453. package/dist/lib/generated/Entities/Collection/collection.form.component.js +50 -59
  454. package/dist/lib/generated/Entities/Collection/collection.form.component.js.map +1 -1
  455. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.d.ts +0 -1
  456. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.d.ts.map +1 -1
  457. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js +19 -25
  458. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js.map +1 -1
  459. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.d.ts +0 -1
  460. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.d.ts.map +1 -1
  461. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js +25 -33
  462. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js.map +1 -1
  463. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.d.ts +0 -1
  464. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.d.ts.map +1 -1
  465. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js +32 -35
  466. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js.map +1 -1
  467. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.d.ts +0 -1
  468. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.d.ts.map +1 -1
  469. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js +28 -38
  470. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js.map +1 -1
  471. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.d.ts +0 -1
  472. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.d.ts.map +1 -1
  473. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js +37 -40
  474. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js.map +1 -1
  475. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.d.ts +0 -1
  476. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.d.ts.map +1 -1
  477. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js +31 -38
  478. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js.map +1 -1
  479. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.d.ts +0 -1
  480. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.d.ts.map +1 -1
  481. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js +36 -41
  482. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js.map +1 -1
  483. package/dist/lib/generated/Entities/Company/company.form.component.d.ts +0 -1
  484. package/dist/lib/generated/Entities/Company/company.form.component.d.ts.map +1 -1
  485. package/dist/lib/generated/Entities/Company/company.form.component.js +60 -63
  486. package/dist/lib/generated/Entities/Company/company.form.component.js.map +1 -1
  487. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.d.ts +0 -1
  488. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.d.ts.map +1 -1
  489. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js +71 -78
  490. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js.map +1 -1
  491. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.d.ts +0 -1
  492. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.d.ts.map +1 -1
  493. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js +20 -26
  494. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js.map +1 -1
  495. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.d.ts +0 -1
  496. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.d.ts.map +1 -1
  497. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js +54 -59
  498. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js.map +1 -1
  499. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.d.ts +0 -1
  500. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.d.ts.map +1 -1
  501. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js +23 -29
  502. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js.map +1 -1
  503. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.d.ts +0 -1
  504. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.d.ts.map +1 -1
  505. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js +37 -42
  506. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js.map +1 -1
  507. package/dist/lib/generated/Entities/Component/component.form.component.d.ts +0 -1
  508. package/dist/lib/generated/Entities/Component/component.form.component.d.ts.map +1 -1
  509. package/dist/lib/generated/Entities/Component/component.form.component.js +66 -71
  510. package/dist/lib/generated/Entities/Component/component.form.component.js.map +1 -1
  511. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.d.ts +0 -1
  512. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.d.ts.map +1 -1
  513. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js +17 -23
  514. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js.map +1 -1
  515. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.d.ts +0 -1
  516. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.d.ts.map +1 -1
  517. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js +33 -36
  518. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js.map +1 -1
  519. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.d.ts +0 -1
  520. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.d.ts.map +1 -1
  521. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js +21 -27
  522. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js.map +1 -1
  523. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.d.ts +0 -1
  524. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.d.ts.map +1 -1
  525. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js +26 -29
  526. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js.map +1 -1
  527. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.d.ts +0 -1
  528. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.d.ts.map +1 -1
  529. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js +27 -30
  530. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js.map +1 -1
  531. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.d.ts +0 -1
  532. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.d.ts.map +1 -1
  533. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js +38 -54
  534. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js.map +1 -1
  535. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.d.ts +0 -1
  536. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.d.ts.map +1 -1
  537. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js +17 -22
  538. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js.map +1 -1
  539. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.d.ts +0 -1
  540. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.d.ts.map +1 -1
  541. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js +16 -21
  542. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js.map +1 -1
  543. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.d.ts +0 -1
  544. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.d.ts.map +1 -1
  545. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js +19 -24
  546. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js.map +1 -1
  547. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.d.ts +0 -1
  548. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.d.ts.map +1 -1
  549. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js +41 -55
  550. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js.map +1 -1
  551. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.d.ts +0 -1
  552. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.d.ts.map +1 -1
  553. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js +17 -22
  554. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js.map +1 -1
  555. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.d.ts +0 -1
  556. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.d.ts.map +1 -1
  557. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js +27 -30
  558. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js.map +1 -1
  559. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.d.ts +0 -1
  560. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.d.ts.map +1 -1
  561. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js +16 -18
  562. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js.map +1 -1
  563. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.d.ts +0 -1
  564. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.d.ts.map +1 -1
  565. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js +33 -40
  566. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js.map +1 -1
  567. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.d.ts +0 -1
  568. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.d.ts.map +1 -1
  569. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js +15 -17
  570. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js.map +1 -1
  571. package/dist/lib/generated/Entities/Conversation/conversation.form.component.d.ts +0 -1
  572. package/dist/lib/generated/Entities/Conversation/conversation.form.component.d.ts.map +1 -1
  573. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +80 -95
  574. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
  575. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.d.ts +0 -1
  576. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.d.ts.map +1 -1
  577. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +44 -51
  578. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
  579. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.d.ts +0 -1
  580. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.d.ts.map +1 -1
  581. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js +19 -25
  582. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js.map +1 -1
  583. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.d.ts +0 -1
  584. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.d.ts.map +1 -1
  585. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js +31 -36
  586. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js.map +1 -1
  587. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.d.ts +0 -1
  588. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.d.ts.map +1 -1
  589. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +111 -130
  590. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js.map +1 -1
  591. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.d.ts +0 -1
  592. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.d.ts.map +1 -1
  593. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js +21 -29
  594. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -1
  595. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.d.ts +0 -1
  596. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.d.ts.map +1 -1
  597. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js +34 -42
  598. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js.map +1 -1
  599. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.d.ts +0 -1
  600. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.d.ts.map +1 -1
  601. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js +20 -32
  602. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js.map +1 -1
  603. package/dist/lib/generated/Entities/Credential/credential.form.component.d.ts +0 -1
  604. package/dist/lib/generated/Entities/Credential/credential.form.component.d.ts.map +1 -1
  605. package/dist/lib/generated/Entities/Credential/credential.form.component.js +72 -61
  606. package/dist/lib/generated/Entities/Credential/credential.form.component.js.map +1 -1
  607. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.d.ts +0 -1
  608. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.d.ts.map +1 -1
  609. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js +36 -41
  610. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js.map +1 -1
  611. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.d.ts +0 -1
  612. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.d.ts.map +1 -1
  613. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js +40 -43
  614. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js.map +1 -1
  615. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.d.ts +0 -1
  616. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.d.ts.map +1 -1
  617. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js +60 -71
  618. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js.map +1 -1
  619. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.d.ts +0 -1
  620. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.d.ts.map +1 -1
  621. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js +52 -59
  622. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js.map +1 -1
  623. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts +0 -1
  624. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts.map +1 -1
  625. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js +21 -29
  626. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js.map +1 -1
  627. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts +0 -1
  628. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts.map +1 -1
  629. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js +28 -36
  630. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js.map +1 -1
  631. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts +0 -1
  632. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts.map +1 -1
  633. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js +21 -23
  634. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js.map +1 -1
  635. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts +0 -1
  636. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts.map +1 -1
  637. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js +25 -33
  638. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js.map +1 -1
  639. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.d.ts +0 -1
  640. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.d.ts.map +1 -1
  641. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js +26 -34
  642. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js.map +1 -1
  643. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.d.ts +0 -1
  644. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.d.ts.map +1 -1
  645. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js +19 -25
  646. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js.map +1 -1
  647. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.d.ts +0 -1
  648. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.d.ts.map +1 -1
  649. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js +44 -49
  650. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js.map +1 -1
  651. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.d.ts +0 -1
  652. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.d.ts.map +1 -1
  653. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js +32 -42
  654. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js.map +1 -1
  655. package/dist/lib/generated/Entities/Dataset/dataset.form.component.d.ts +0 -1
  656. package/dist/lib/generated/Entities/Dataset/dataset.form.component.d.ts.map +1 -1
  657. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js +21 -24
  658. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js.map +1 -1
  659. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.d.ts +0 -1
  660. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.d.ts.map +1 -1
  661. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js +25 -31
  662. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js.map +1 -1
  663. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.d.ts +0 -1
  664. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.d.ts.map +1 -1
  665. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js +39 -50
  666. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js.map +1 -1
  667. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.d.ts +0 -1
  668. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.d.ts.map +1 -1
  669. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +33 -38
  670. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
  671. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.d.ts +0 -1
  672. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.d.ts.map +1 -1
  673. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js +27 -35
  674. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js.map +1 -1
  675. package/dist/lib/generated/Entities/Employee/employee.form.component.d.ts +0 -1
  676. package/dist/lib/generated/Entities/Employee/employee.form.component.d.ts.map +1 -1
  677. package/dist/lib/generated/Entities/Employee/employee.form.component.js +66 -71
  678. package/dist/lib/generated/Entities/Employee/employee.form.component.js.map +1 -1
  679. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.d.ts +0 -1
  680. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.d.ts.map +1 -1
  681. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +22 -28
  682. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
  683. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.d.ts +0 -1
  684. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.d.ts.map +1 -1
  685. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +19 -33
  686. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
  687. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.d.ts +0 -1
  688. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.d.ts.map +1 -1
  689. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +17 -23
  690. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
  691. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.d.ts +0 -1
  692. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.d.ts.map +1 -1
  693. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js +25 -28
  694. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js.map +1 -1
  695. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.d.ts +0 -1
  696. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.d.ts.map +1 -1
  697. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js +31 -38
  698. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js.map +1 -1
  699. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.d.ts +0 -1
  700. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.d.ts.map +1 -1
  701. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js +25 -28
  702. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js.map +1 -1
  703. package/dist/lib/generated/Entities/Entity/entity.form.component.d.ts +0 -1
  704. package/dist/lib/generated/Entities/Entity/entity.form.component.d.ts.map +1 -1
  705. package/dist/lib/generated/Entities/Entity/entity.form.component.js +424 -391
  706. package/dist/lib/generated/Entities/Entity/entity.form.component.js.map +1 -1
  707. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.d.ts +0 -1
  708. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.d.ts.map +1 -1
  709. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js +33 -43
  710. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js.map +1 -1
  711. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.d.ts +0 -1
  712. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.d.ts.map +1 -1
  713. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js +41 -48
  714. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js.map +1 -1
  715. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.d.ts +0 -1
  716. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.d.ts.map +1 -1
  717. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +23 -25
  718. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
  719. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.d.ts +0 -1
  720. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.d.ts.map +1 -1
  721. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +21 -27
  722. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
  723. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.d.ts +0 -1
  724. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.d.ts.map +1 -1
  725. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js +22 -25
  726. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js.map +1 -1
  727. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.d.ts +0 -1
  728. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.d.ts.map +1 -1
  729. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +24 -26
  730. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
  731. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.d.ts +0 -1
  732. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.d.ts.map +1 -1
  733. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +17 -22
  734. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
  735. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.d.ts +0 -1
  736. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.d.ts.map +1 -1
  737. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js +27 -34
  738. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js.map +1 -1
  739. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.d.ts +0 -1
  740. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.d.ts.map +1 -1
  741. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js +52 -65
  742. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js.map +1 -1
  743. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.d.ts +0 -1
  744. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.d.ts.map +1 -1
  745. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js +22 -26
  746. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js.map +1 -1
  747. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.d.ts +0 -1
  748. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.d.ts.map +1 -1
  749. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js +22 -26
  750. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js.map +1 -1
  751. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.d.ts +0 -1
  752. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.d.ts.map +1 -1
  753. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js +20 -24
  754. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js.map +1 -1
  755. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.d.ts +0 -1
  756. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.d.ts.map +1 -1
  757. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js +102 -103
  758. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js.map +1 -1
  759. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.d.ts +0 -1
  760. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.d.ts.map +1 -1
  761. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js +25 -29
  762. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js.map +1 -1
  763. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.d.ts +0 -1
  764. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.d.ts.map +1 -1
  765. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js +33 -45
  766. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js.map +1 -1
  767. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.d.ts +0 -1
  768. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.d.ts.map +1 -1
  769. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js +32 -40
  770. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js.map +1 -1
  771. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.d.ts +0 -1
  772. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.d.ts.map +1 -1
  773. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js +54 -60
  774. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js.map +1 -1
  775. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.d.ts +0 -1
  776. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.d.ts.map +1 -1
  777. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js +22 -25
  778. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js.map +1 -1
  779. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.d.ts +0 -1
  780. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.d.ts.map +1 -1
  781. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js +19 -23
  782. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js.map +1 -1
  783. package/dist/lib/generated/Entities/Environment/environment.form.component.d.ts +0 -1
  784. package/dist/lib/generated/Entities/Environment/environment.form.component.d.ts.map +1 -1
  785. package/dist/lib/generated/Entities/Environment/environment.form.component.js +65 -69
  786. package/dist/lib/generated/Entities/Environment/environment.form.component.js.map +1 -1
  787. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.d.ts +0 -1
  788. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.d.ts.map +1 -1
  789. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +29 -35
  790. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
  791. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.d.ts +0 -1
  792. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.d.ts.map +1 -1
  793. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js +23 -25
  794. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js.map +1 -1
  795. package/dist/lib/generated/Entities/File/file.form.component.d.ts +0 -1
  796. package/dist/lib/generated/Entities/File/file.form.component.d.ts.map +1 -1
  797. package/dist/lib/generated/Entities/File/file.form.component.js +55 -62
  798. package/dist/lib/generated/Entities/File/file.form.component.js.map +1 -1
  799. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.d.ts +0 -1
  800. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.d.ts.map +1 -1
  801. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js +35 -40
  802. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js.map +1 -1
  803. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.d.ts +0 -1
  804. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.d.ts.map +1 -1
  805. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js +19 -25
  806. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js.map +1 -1
  807. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.d.ts +0 -1
  808. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.d.ts.map +1 -1
  809. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.js +22 -28
  810. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.js.map +1 -1
  811. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.d.ts +0 -1
  812. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.d.ts.map +1 -1
  813. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js +52 -55
  814. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js.map +1 -1
  815. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.d.ts +0 -1
  816. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.d.ts.map +1 -1
  817. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js +35 -43
  818. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js.map +1 -1
  819. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.d.ts +0 -1
  820. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.d.ts.map +1 -1
  821. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js +35 -40
  822. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js.map +1 -1
  823. package/dist/lib/generated/Entities/Integration/integration.form.component.d.ts +0 -1
  824. package/dist/lib/generated/Entities/Integration/integration.form.component.d.ts.map +1 -1
  825. package/dist/lib/generated/Entities/Integration/integration.form.component.js +41 -44
  826. package/dist/lib/generated/Entities/Integration/integration.form.component.js.map +1 -1
  827. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.d.ts +0 -1
  828. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.d.ts.map +1 -1
  829. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js +27 -31
  830. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js.map +1 -1
  831. package/dist/lib/generated/Entities/Library/library.form.component.d.ts +0 -1
  832. package/dist/lib/generated/Entities/Library/library.form.component.d.ts.map +1 -1
  833. package/dist/lib/generated/Entities/Library/library.form.component.js +32 -35
  834. package/dist/lib/generated/Entities/Library/library.form.component.js.map +1 -1
  835. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.d.ts +0 -1
  836. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.d.ts.map +1 -1
  837. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js +18 -22
  838. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js.map +1 -1
  839. package/dist/lib/generated/Entities/List/list.form.component.d.ts +0 -1
  840. package/dist/lib/generated/Entities/List/list.form.component.d.ts.map +1 -1
  841. package/dist/lib/generated/Entities/List/list.form.component.js +52 -63
  842. package/dist/lib/generated/Entities/List/list.form.component.js.map +1 -1
  843. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.d.ts +0 -1
  844. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.d.ts.map +1 -1
  845. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js +39 -46
  846. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js.map +1 -1
  847. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.d.ts +0 -1
  848. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.d.ts.map +1 -1
  849. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js +23 -27
  850. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js.map +1 -1
  851. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.d.ts +0 -1
  852. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.d.ts.map +1 -1
  853. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js +22 -28
  854. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js.map +1 -1
  855. package/dist/lib/generated/Entities/ListShare/listshare.form.component.d.ts +0 -1
  856. package/dist/lib/generated/Entities/ListShare/listshare.form.component.d.ts.map +1 -1
  857. package/dist/lib/generated/Entities/ListShare/listshare.form.component.js +19 -25
  858. package/dist/lib/generated/Entities/ListShare/listshare.form.component.js.map +1 -1
  859. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts +0 -1
  860. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts.map +1 -1
  861. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js +87 -56
  862. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js.map +1 -1
  863. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts +0 -1
  864. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts.map +1 -1
  865. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js +110 -65
  866. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js.map +1 -1
  867. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts +0 -1
  868. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts.map +1 -1
  869. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js +24 -32
  870. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js.map +1 -1
  871. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts +0 -1
  872. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts.map +1 -1
  873. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js +23 -29
  874. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js.map +1 -1
  875. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts +0 -1
  876. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts.map +1 -1
  877. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js +48 -57
  878. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js.map +1 -1
  879. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts +0 -1
  880. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts.map +1 -1
  881. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js +36 -44
  882. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js.map +1 -1
  883. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.d.ts +10 -0
  884. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.d.ts.map +1 -0
  885. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.js +73 -0
  886. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.js.map +1 -0
  887. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.d.ts +10 -0
  888. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.d.ts.map +1 -0
  889. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.js +75 -0
  890. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.js.map +1 -0
  891. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.d.ts +10 -0
  892. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.d.ts.map +1 -0
  893. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.js +75 -0
  894. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.js.map +1 -0
  895. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.d.ts +10 -0
  896. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.d.ts.map +1 -0
  897. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.js +61 -0
  898. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.js.map +1 -0
  899. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.d.ts +0 -1
  900. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.d.ts.map +1 -1
  901. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js +21 -24
  902. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js.map +1 -1
  903. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.d.ts +0 -1
  904. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.d.ts.map +1 -1
  905. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js +22 -25
  906. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js.map +1 -1
  907. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.d.ts +0 -1
  908. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.d.ts.map +1 -1
  909. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js +21 -24
  910. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js.map +1 -1
  911. package/dist/lib/generated/Entities/Project/project.form.component.d.ts +0 -1
  912. package/dist/lib/generated/Entities/Project/project.form.component.d.ts.map +1 -1
  913. package/dist/lib/generated/Entities/Project/project.form.component.js +49 -56
  914. package/dist/lib/generated/Entities/Project/project.form.component.js.map +1 -1
  915. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.d.ts +0 -1
  916. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.d.ts.map +1 -1
  917. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js +30 -34
  918. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js.map +1 -1
  919. package/dist/lib/generated/Entities/Query/query.form.component.d.ts +0 -1
  920. package/dist/lib/generated/Entities/Query/query.form.component.d.ts.map +1 -1
  921. package/dist/lib/generated/Entities/Query/query.form.component.js +79 -86
  922. package/dist/lib/generated/Entities/Query/query.form.component.js.map +1 -1
  923. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.d.ts +0 -1
  924. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.d.ts.map +1 -1
  925. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js +42 -49
  926. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js.map +1 -1
  927. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.d.ts +0 -1
  928. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.d.ts.map +1 -1
  929. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js +20 -26
  930. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js.map +1 -1
  931. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.d.ts +0 -1
  932. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.d.ts.map +1 -1
  933. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js +32 -38
  934. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js.map +1 -1
  935. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.d.ts +0 -1
  936. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.d.ts.map +1 -1
  937. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js +28 -32
  938. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js.map +1 -1
  939. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.d.ts +0 -1
  940. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.d.ts.map +1 -1
  941. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js +18 -26
  942. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js.map +1 -1
  943. package/dist/lib/generated/Entities/Queue/queue.form.component.d.ts +0 -1
  944. package/dist/lib/generated/Entities/Queue/queue.form.component.d.ts.map +1 -1
  945. package/dist/lib/generated/Entities/Queue/queue.form.component.js +45 -50
  946. package/dist/lib/generated/Entities/Queue/queue.form.component.js.map +1 -1
  947. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.d.ts +0 -1
  948. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.d.ts.map +1 -1
  949. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js +30 -34
  950. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js.map +1 -1
  951. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.d.ts +0 -1
  952. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.d.ts.map +1 -1
  953. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js +25 -28
  954. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js.map +1 -1
  955. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.d.ts +0 -1
  956. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.d.ts.map +1 -1
  957. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js +25 -38
  958. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js.map +1 -1
  959. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.d.ts +0 -1
  960. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.d.ts.map +1 -1
  961. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js +18 -31
  962. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js.map +1 -1
  963. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.d.ts +0 -1
  964. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.d.ts.map +1 -1
  965. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js +21 -24
  966. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js.map +1 -1
  967. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.d.ts +0 -1
  968. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.d.ts.map +1 -1
  969. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js +31 -38
  970. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js.map +1 -1
  971. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.d.ts +0 -1
  972. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.d.ts.map +1 -1
  973. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js +51 -49
  974. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js.map +1 -1
  975. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.d.ts +0 -1
  976. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.d.ts.map +1 -1
  977. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js +30 -35
  978. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js.map +1 -1
  979. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.d.ts +0 -1
  980. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.d.ts.map +1 -1
  981. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js +26 -32
  982. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js.map +1 -1
  983. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.d.ts +0 -1
  984. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.d.ts.map +1 -1
  985. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js +17 -27
  986. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js.map +1 -1
  987. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.d.ts +0 -1
  988. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.d.ts.map +1 -1
  989. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js +46 -55
  990. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js.map +1 -1
  991. package/dist/lib/generated/Entities/Report/report.form.component.d.ts +0 -1
  992. package/dist/lib/generated/Entities/Report/report.form.component.d.ts.map +1 -1
  993. package/dist/lib/generated/Entities/Report/report.form.component.js +60 -89
  994. package/dist/lib/generated/Entities/Report/report.form.component.js.map +1 -1
  995. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.d.ts +0 -1
  996. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.d.ts.map +1 -1
  997. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js +36 -43
  998. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js.map +1 -1
  999. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.d.ts +0 -1
  1000. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.d.ts.map +1 -1
  1001. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js +19 -25
  1002. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js.map +1 -1
  1003. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.d.ts +0 -1
  1004. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.d.ts.map +1 -1
  1005. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js +19 -25
  1006. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js.map +1 -1
  1007. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.d.ts +0 -1
  1008. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.d.ts.map +1 -1
  1009. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js +24 -28
  1010. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js.map +1 -1
  1011. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.d.ts +0 -1
  1012. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.d.ts.map +1 -1
  1013. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js +16 -22
  1014. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js.map +1 -1
  1015. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.d.ts +0 -1
  1016. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.d.ts.map +1 -1
  1017. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js +28 -37
  1018. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js.map +1 -1
  1019. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.d.ts +0 -1
  1020. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.d.ts.map +1 -1
  1021. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js +54 -63
  1022. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js.map +1 -1
  1023. package/dist/lib/generated/Entities/Role/role.form.component.d.ts +0 -1
  1024. package/dist/lib/generated/Entities/Role/role.form.component.d.ts.map +1 -1
  1025. package/dist/lib/generated/Entities/Role/role.form.component.js +72 -75
  1026. package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
  1027. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.d.ts +0 -1
  1028. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.d.ts.map +1 -1
  1029. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js +21 -25
  1030. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js.map +1 -1
  1031. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.d.ts +0 -1
  1032. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.d.ts.map +1 -1
  1033. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js +42 -49
  1034. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js.map +1 -1
  1035. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.d.ts +0 -1
  1036. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.d.ts.map +1 -1
  1037. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js +23 -29
  1038. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js.map +1 -1
  1039. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.d.ts +0 -1
  1040. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.d.ts.map +1 -1
  1041. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js +60 -69
  1042. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js.map +1 -1
  1043. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.d.ts +0 -1
  1044. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.d.ts.map +1 -1
  1045. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js +38 -45
  1046. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js.map +1 -1
  1047. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.d.ts +0 -1
  1048. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.d.ts.map +1 -1
  1049. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js +26 -29
  1050. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js.map +1 -1
  1051. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.d.ts +0 -1
  1052. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.d.ts.map +1 -1
  1053. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js +18 -20
  1054. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js.map +1 -1
  1055. package/dist/lib/generated/Entities/Skill/skill.form.component.d.ts +0 -1
  1056. package/dist/lib/generated/Entities/Skill/skill.form.component.d.ts.map +1 -1
  1057. package/dist/lib/generated/Entities/Skill/skill.form.component.js +34 -39
  1058. package/dist/lib/generated/Entities/Skill/skill.form.component.js.map +1 -1
  1059. package/dist/lib/generated/Entities/Tag/tag.form.component.d.ts +0 -1
  1060. package/dist/lib/generated/Entities/Tag/tag.form.component.d.ts.map +1 -1
  1061. package/dist/lib/generated/Entities/Tag/tag.form.component.js +36 -41
  1062. package/dist/lib/generated/Entities/Tag/tag.form.component.js.map +1 -1
  1063. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.d.ts +0 -1
  1064. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.d.ts.map +1 -1
  1065. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js +21 -27
  1066. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js.map +1 -1
  1067. package/dist/lib/generated/Entities/Task/task.form.component.d.ts +0 -1
  1068. package/dist/lib/generated/Entities/Task/task.form.component.d.ts.map +1 -1
  1069. package/dist/lib/generated/Entities/Task/task.form.component.js +58 -75
  1070. package/dist/lib/generated/Entities/Task/task.form.component.js.map +1 -1
  1071. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.d.ts +0 -1
  1072. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.d.ts.map +1 -1
  1073. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js +21 -27
  1074. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js.map +1 -1
  1075. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.d.ts +0 -1
  1076. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.d.ts.map +1 -1
  1077. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js +21 -24
  1078. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js.map +1 -1
  1079. package/dist/lib/generated/Entities/Template/template.form.component.d.ts +0 -1
  1080. package/dist/lib/generated/Entities/Template/template.form.component.d.ts.map +1 -1
  1081. package/dist/lib/generated/Entities/Template/template.form.component.js +70 -77
  1082. package/dist/lib/generated/Entities/Template/template.form.component.js.map +1 -1
  1083. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.d.ts +0 -1
  1084. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.d.ts.map +1 -1
  1085. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js +39 -46
  1086. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js.map +1 -1
  1087. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.d.ts +0 -1
  1088. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.d.ts.map +1 -1
  1089. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +31 -38
  1090. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js.map +1 -1
  1091. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.d.ts +0 -1
  1092. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.d.ts.map +1 -1
  1093. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js +21 -25
  1094. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js.map +1 -1
  1095. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.d.ts +0 -1
  1096. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.d.ts.map +1 -1
  1097. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js +34 -48
  1098. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js.map +1 -1
  1099. package/dist/lib/generated/Entities/Test/test.form.component.d.ts +0 -1
  1100. package/dist/lib/generated/Entities/Test/test.form.component.d.ts.map +1 -1
  1101. package/dist/lib/generated/Entities/Test/test.form.component.js +50 -55
  1102. package/dist/lib/generated/Entities/Test/test.form.component.js.map +1 -1
  1103. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.d.ts +0 -1
  1104. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.d.ts.map +1 -1
  1105. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js +19 -23
  1106. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js.map +1 -1
  1107. package/dist/lib/generated/Entities/TestRun/testrun.form.component.d.ts +0 -1
  1108. package/dist/lib/generated/Entities/TestRun/testrun.form.component.d.ts.map +1 -1
  1109. package/dist/lib/generated/Entities/TestRun/testrun.form.component.js +89 -100
  1110. package/dist/lib/generated/Entities/TestRun/testrun.form.component.js.map +1 -1
  1111. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.d.ts +0 -1
  1112. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.d.ts.map +1 -1
  1113. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js +25 -31
  1114. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js.map +1 -1
  1115. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.d.ts +0 -1
  1116. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.d.ts.map +1 -1
  1117. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js +52 -57
  1118. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js.map +1 -1
  1119. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.d.ts +0 -1
  1120. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.d.ts.map +1 -1
  1121. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js +64 -71
  1122. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js.map +1 -1
  1123. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.d.ts +0 -1
  1124. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.d.ts.map +1 -1
  1125. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js +17 -23
  1126. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js.map +1 -1
  1127. package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts +0 -1
  1128. package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts.map +1 -1
  1129. package/dist/lib/generated/Entities/TestType/testtype.form.component.js +31 -34
  1130. package/dist/lib/generated/Entities/TestType/testtype.form.component.js.map +1 -1
  1131. package/dist/lib/generated/Entities/User/user.form.component.d.ts +0 -1
  1132. package/dist/lib/generated/Entities/User/user.form.component.d.ts.map +1 -1
  1133. package/dist/lib/generated/Entities/User/user.form.component.js +645 -594
  1134. package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
  1135. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.d.ts +0 -1
  1136. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.d.ts.map +1 -1
  1137. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js +28 -35
  1138. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js.map +1 -1
  1139. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.d.ts +0 -1
  1140. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.d.ts.map +1 -1
  1141. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js +21 -25
  1142. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js.map +1 -1
  1143. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.d.ts +0 -1
  1144. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.d.ts.map +1 -1
  1145. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js +21 -25
  1146. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js.map +1 -1
  1147. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.d.ts +0 -1
  1148. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.d.ts.map +1 -1
  1149. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js +27 -35
  1150. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js.map +1 -1
  1151. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.d.ts +0 -1
  1152. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.d.ts.map +1 -1
  1153. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.js +22 -28
  1154. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.js.map +1 -1
  1155. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.d.ts +0 -1
  1156. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.d.ts.map +1 -1
  1157. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.js +44 -51
  1158. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.js.map +1 -1
  1159. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.d.ts +0 -1
  1160. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.d.ts.map +1 -1
  1161. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js +32 -36
  1162. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js.map +1 -1
  1163. package/dist/lib/generated/Entities/UserRole/userrole.form.component.d.ts +0 -1
  1164. package/dist/lib/generated/Entities/UserRole/userrole.form.component.d.ts.map +1 -1
  1165. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js +17 -23
  1166. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js.map +1 -1
  1167. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.d.ts +0 -1
  1168. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.d.ts.map +1 -1
  1169. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js +18 -22
  1170. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js.map +1 -1
  1171. package/dist/lib/generated/Entities/UserView/userview.form.component.d.ts +0 -1
  1172. package/dist/lib/generated/Entities/UserView/userview.form.component.d.ts.map +1 -1
  1173. package/dist/lib/generated/Entities/UserView/userview.form.component.js +72 -77
  1174. package/dist/lib/generated/Entities/UserView/userview.form.component.js.map +1 -1
  1175. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.d.ts +0 -1
  1176. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.d.ts.map +1 -1
  1177. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js +40 -49
  1178. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js.map +1 -1
  1179. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.d.ts +0 -1
  1180. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.d.ts.map +1 -1
  1181. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js +29 -36
  1182. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js.map +1 -1
  1183. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.d.ts +0 -1
  1184. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.d.ts.map +1 -1
  1185. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js +16 -18
  1186. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js.map +1 -1
  1187. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.d.ts +0 -1
  1188. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.d.ts.map +1 -1
  1189. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js +30 -33
  1190. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js.map +1 -1
  1191. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.d.ts +0 -1
  1192. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.d.ts.map +1 -1
  1193. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js +28 -35
  1194. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js.map +1 -1
  1195. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.d.ts +0 -1
  1196. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.d.ts.map +1 -1
  1197. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js +23 -25
  1198. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js.map +1 -1
  1199. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.d.ts +10 -0
  1200. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.d.ts.map +1 -0
  1201. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.js +159 -0
  1202. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.js.map +1 -0
  1203. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.d.ts +10 -0
  1204. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.d.ts.map +1 -0
  1205. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.js +63 -0
  1206. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.js.map +1 -0
  1207. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.d.ts +10 -0
  1208. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.d.ts.map +1 -0
  1209. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.js +77 -0
  1210. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.js.map +1 -0
  1211. package/dist/lib/generated/Entities/Workflow/workflow.form.component.d.ts +0 -1
  1212. package/dist/lib/generated/Entities/Workflow/workflow.form.component.d.ts.map +1 -1
  1213. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js +36 -39
  1214. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js.map +1 -1
  1215. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.d.ts +0 -1
  1216. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.d.ts.map +1 -1
  1217. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js +23 -26
  1218. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js.map +1 -1
  1219. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.d.ts +0 -1
  1220. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.d.ts.map +1 -1
  1221. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js +25 -29
  1222. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js.map +1 -1
  1223. package/dist/lib/generated/Entities/Workspace/workspace.form.component.d.ts +0 -1
  1224. package/dist/lib/generated/Entities/Workspace/workspace.form.component.d.ts.map +1 -1
  1225. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js +27 -33
  1226. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js.map +1 -1
  1227. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.d.ts +0 -1
  1228. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.d.ts.map +1 -1
  1229. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js +26 -32
  1230. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js.map +1 -1
  1231. package/dist/lib/generated/generated-forms.module.d.ts +272 -271
  1232. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  1233. package/dist/lib/generated/generated-forms.module.js +429 -939
  1234. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  1235. package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
  1236. package/dist/lib/shared/components/template-editor.component.js +167 -164
  1237. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  1238. package/dist/public-api.d.ts +0 -1
  1239. package/dist/public-api.d.ts.map +1 -1
  1240. package/dist/public-api.js +1 -1
  1241. package/dist/public-api.js.map +1 -1
  1242. package/package.json +53 -52
  1243. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts +0 -109
  1244. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts.map +0 -1
  1245. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js +0 -2014
  1246. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js.map +0 -1
  1247. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.d.ts +0 -29
  1248. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.d.ts.map +0 -1
  1249. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js +0 -198
  1250. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js.map +0 -1
  1251. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -14
  1252. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.d.ts.map +0 -1
  1253. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js +0 -98
  1254. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js.map +0 -1
  1255. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.d.ts +0 -44
  1256. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.d.ts.map +0 -1
  1257. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js +0 -282
  1258. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js.map +0 -1
  1259. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.d.ts +0 -35
  1260. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.d.ts.map +0 -1
  1261. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js +0 -287
  1262. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js.map +0 -1
  1263. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.d.ts +0 -106
  1264. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.d.ts.map +0 -1
  1265. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js +0 -951
  1266. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js.map +0 -1
  1267. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.d.ts +0 -30
  1268. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.d.ts.map +0 -1
  1269. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js +0 -450
  1270. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js.map +0 -1
  1271. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.d.ts +0 -25
  1272. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.d.ts.map +0 -1
  1273. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js +0 -423
  1274. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js.map +0 -1
  1275. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.d.ts +0 -21
  1276. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.d.ts.map +0 -1
  1277. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js +0 -182
  1278. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js.map +0 -1
  1279. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.d.ts +0 -34
  1280. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.d.ts.map +0 -1
  1281. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js +0 -171
  1282. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js.map +0 -1
  1283. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.d.ts +0 -17
  1284. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.d.ts.map +0 -1
  1285. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js +0 -78
  1286. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js.map +0 -1
  1287. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.d.ts +0 -17
  1288. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.d.ts.map +0 -1
  1289. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.js +0 -11
  1290. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.js.map +0 -1
  1291. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.d.ts +0 -21
  1292. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.d.ts.map +0 -1
  1293. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.js +0 -2
  1294. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.js.map +0 -1
  1295. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.d.ts +0 -33
  1296. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.d.ts.map +0 -1
  1297. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.js +0 -2
  1298. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.js.map +0 -1
  1299. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.d.ts +0 -44
  1300. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.d.ts.map +0 -1
  1301. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.js +0 -166
  1302. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.js.map +0 -1
  1303. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.d.ts +0 -14
  1304. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.d.ts.map +0 -1
  1305. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.js +0 -31
  1306. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.js.map +0 -1
  1307. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.d.ts +0 -63
  1308. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.d.ts.map +0 -1
  1309. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.js +0 -294
  1310. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.js.map +0 -1
  1311. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.d.ts +0 -77
  1312. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.d.ts.map +0 -1
  1313. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.js +0 -408
  1314. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.js.map +0 -1
  1315. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.d.ts +0 -19
  1316. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.d.ts.map +0 -1
  1317. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.js +0 -116
  1318. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.js.map +0 -1
  1319. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.d.ts +0 -25
  1320. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.d.ts.map +0 -1
  1321. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.js +0 -90
  1322. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.js.map +0 -1
  1323. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.d.ts +0 -52
  1324. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.d.ts.map +0 -1
  1325. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js +0 -500
  1326. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js.map +0 -1
  1327. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts +0 -9
  1328. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts.map +0 -1
  1329. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js +0 -84
  1330. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js.map +0 -1
  1331. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.d.ts +0 -61
  1332. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.d.ts.map +0 -1
  1333. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js +0 -790
  1334. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js.map +0 -1
@@ -4,34 +4,32 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { Component, ChangeDetectionStrategy, HostListener } from '@angular/core';
7
+ import { Component, ChangeDetectionStrategy, HostListener, ViewContainerRef, inject } from '@angular/core';
8
8
  import { Subject } from 'rxjs';
9
9
  import { takeUntil } from 'rxjs/operators';
10
10
  import { CompositeKey, Metadata, RunView } from '@memberjunction/core';
11
11
  import { UserInfoEngine } from '@memberjunction/core-entities';
12
12
  import { BaseFormComponent } from '@memberjunction/ng-base-forms';
13
13
  import { RegisterClass } from '@memberjunction/global';
14
- import { SharedService } from '@memberjunction/ng-shared';
14
+ import { SharedService, NavigationService } from '@memberjunction/ng-shared';
15
+ import { ApplicationManager } from '@memberjunction/ng-base-application';
15
16
  import { TestFormComponent } from '../../generated/Entities/Test/test.form.component';
16
- import { TagsHelper } from '@memberjunction/ng-testing';
17
+ import { TestingDialogService, TagsHelper, EvaluationPreferencesService } from '@memberjunction/ng-testing';
17
18
  import { createCopyOnlyToolbar } from '@memberjunction/ng-code-editor';
18
19
  import * as i0 from "@angular/core";
19
- import * as i1 from "@memberjunction/ng-shared";
20
- import * as i2 from "@angular/router";
21
- import * as i3 from "@memberjunction/ng-testing";
22
- import * as i4 from "@memberjunction/ng-base-application";
23
- import * as i5 from "@angular/common";
24
- import * as i6 from "@angular/forms";
25
- import * as i7 from "@progress/kendo-angular-dialog";
26
- import * as i8 from "@progress/kendo-angular-buttons";
27
- import * as i9 from "@memberjunction/ng-code-editor";
28
- import * as i10 from "@memberjunction/ng-shared-generic";
29
- import * as i11 from "./entity-link-pill.component";
20
+ import * as i1 from "@angular/common";
21
+ import * as i2 from "@angular/forms";
22
+ import * as i3 from "@progress/kendo-angular-dialog";
23
+ import * as i4 from "@progress/kendo-angular-buttons";
24
+ import * as i5 from "@memberjunction/ng-code-editor";
25
+ import * as i6 from "@memberjunction/ng-testing";
26
+ import * as i7 from "@memberjunction/ng-shared-generic";
27
+ import * as i8 from "./entity-link-pill.component";
30
28
  const _c0 = () => [1, 2, 3, 4, 5];
31
29
  const _c1 = () => [1, 2, 3];
32
- function TestFormComponentExtended_span_25_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "span", 41);
34
- i0.ɵɵelement(1, "i", 42);
30
+ function TestFormComponentExtended_Conditional_25_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelementStart(0, "span", 16);
32
+ i0.ɵɵelement(1, "i", 41);
35
33
  i0.ɵɵtext(2);
36
34
  i0.ɵɵelementEnd();
37
35
  } if (rf & 2) {
@@ -39,8 +37,8 @@ function TestFormComponentExtended_span_25_Template(rf, ctx) { if (rf & 1) {
39
37
  i0.ɵɵadvance(2);
40
38
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Type, " ");
41
39
  } }
42
- function TestFormComponentExtended_div_34_Template(rf, ctx) { if (rf & 1) {
43
- i0.ɵɵelementStart(0, "div", 43)(1, "p");
40
+ function TestFormComponentExtended_Conditional_34_Template(rf, ctx) { if (rf & 1) {
41
+ i0.ɵɵelementStart(0, "div", 21)(1, "p");
44
42
  i0.ɵɵtext(2);
45
43
  i0.ɵɵelementEnd()();
46
44
  } if (rf & 2) {
@@ -48,32 +46,32 @@ function TestFormComponentExtended_div_34_Template(rf, ctx) { if (rf & 1) {
48
46
  i0.ɵɵadvance(2);
49
47
  i0.ɵɵtextInterpolate(ctx_r0.record.Description);
50
48
  } }
51
- function TestFormComponentExtended_div_35_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵelementStart(0, "div", 44)(1, "div", 45)(2, "div", 46);
49
+ function TestFormComponentExtended_Conditional_35_Template(rf, ctx) { if (rf & 1) {
50
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 42)(2, "div", 43);
53
51
  i0.ɵɵtext(3, "Total Runs");
54
52
  i0.ɵɵelementEnd();
55
- i0.ɵɵelementStart(4, "div", 47);
53
+ i0.ɵɵelementStart(4, "div", 44);
56
54
  i0.ɵɵtext(5);
57
55
  i0.ɵɵelementEnd()();
58
- i0.ɵɵelementStart(6, "div", 45)(7, "div", 46);
56
+ i0.ɵɵelementStart(6, "div", 42)(7, "div", 43);
59
57
  i0.ɵɵtext(8, "Pass Rate");
60
58
  i0.ɵɵelementEnd();
61
- i0.ɵɵelementStart(9, "div", 47);
59
+ i0.ɵɵelementStart(9, "div", 44);
62
60
  i0.ɵɵtext(10);
63
61
  i0.ɵɵelementEnd();
64
- i0.ɵɵelementStart(11, "div", 48);
65
- i0.ɵɵelement(12, "div", 49);
62
+ i0.ɵɵelementStart(11, "div", 45);
63
+ i0.ɵɵelement(12, "div", 46);
66
64
  i0.ɵɵelementEnd()();
67
- i0.ɵɵelementStart(13, "div", 45)(14, "div", 46);
65
+ i0.ɵɵelementStart(13, "div", 42)(14, "div", 43);
68
66
  i0.ɵɵtext(15, "Avg Cost");
69
67
  i0.ɵɵelementEnd();
70
- i0.ɵɵelementStart(16, "div", 47);
68
+ i0.ɵɵelementStart(16, "div", 44);
71
69
  i0.ɵɵtext(17);
72
70
  i0.ɵɵelementEnd()();
73
- i0.ɵɵelementStart(18, "div", 45)(19, "div", 46);
71
+ i0.ɵɵelementStart(18, "div", 42)(19, "div", 43);
74
72
  i0.ɵɵtext(20, "Avg Duration");
75
73
  i0.ɵɵelementEnd();
76
- i0.ɵɵelementStart(21, "div", 47);
74
+ i0.ɵɵelementStart(21, "div", 44);
77
75
  i0.ɵɵtext(22);
78
76
  i0.ɵɵelementEnd()()();
79
77
  } if (rf & 2) {
@@ -89,8 +87,8 @@ function TestFormComponentExtended_div_35_Template(rf, ctx) { if (rf & 1) {
89
87
  i0.ɵɵadvance(5);
90
88
  i0.ɵɵtextInterpolate(ctx_r0.formatDuration(ctx_r0.getAverageDuration()));
91
89
  } }
92
- function TestFormComponentExtended_span_50_Template(rf, ctx) { if (rf & 1) {
93
- i0.ɵɵelementStart(0, "span", 50);
90
+ function TestFormComponentExtended_Conditional_50_Template(rf, ctx) { if (rf & 1) {
91
+ i0.ɵɵelementStart(0, "span", 29);
94
92
  i0.ɵɵtext(1);
95
93
  i0.ɵɵelementEnd();
96
94
  } if (rf & 2) {
@@ -98,8 +96,8 @@ function TestFormComponentExtended_span_50_Template(rf, ctx) { if (rf & 1) {
98
96
  i0.ɵɵadvance();
99
97
  i0.ɵɵtextInterpolate(ctx_r0.testRuns.length);
100
98
  } }
101
- function TestFormComponentExtended_span_55_Template(rf, ctx) { if (rf & 1) {
102
- i0.ɵɵelementStart(0, "span", 50);
99
+ function TestFormComponentExtended_Conditional_55_Template(rf, ctx) { if (rf & 1) {
100
+ i0.ɵɵelementStart(0, "span", 29);
103
101
  i0.ɵɵtext(1);
104
102
  i0.ɵɵelementEnd();
105
103
  } if (rf & 2) {
@@ -107,100 +105,100 @@ function TestFormComponentExtended_span_55_Template(rf, ctx) { if (rf & 1) {
107
105
  i0.ɵɵadvance();
108
106
  i0.ɵɵtextInterpolate(ctx_r0.suiteTests.length);
109
107
  } }
110
- function TestFormComponentExtended_div_61_Template(rf, ctx) { if (rf & 1) {
108
+ function TestFormComponentExtended_Conditional_61_Template(rf, ctx) { if (rf & 1) {
111
109
  const _r2 = i0.ɵɵgetCurrentView();
112
- i0.ɵɵelementStart(0, "div", 51)(1, "div", 52)(2, "h3");
113
- i0.ɵɵelement(3, "i", 53);
110
+ i0.ɵɵelementStart(0, "div", 33)(1, "div", 47)(2, "h3");
111
+ i0.ɵɵelement(3, "i", 48);
114
112
  i0.ɵɵtext(4, " Test Information");
115
113
  i0.ɵɵelementEnd();
116
- i0.ɵɵelementStart(5, "div", 54)(6, "div", 55)(7, "div", 56);
114
+ i0.ɵɵelementStart(5, "div", 49)(6, "div", 50)(7, "div", 51);
117
115
  i0.ɵɵtext(8, "Name");
118
116
  i0.ɵɵelementEnd();
119
- i0.ɵɵelementStart(9, "div", 57);
117
+ i0.ɵɵelementStart(9, "div", 52);
120
118
  i0.ɵɵtext(10);
121
119
  i0.ɵɵelementEnd()();
122
- i0.ɵɵelementStart(11, "div", 55)(12, "div", 56);
120
+ i0.ɵɵelementStart(11, "div", 50)(12, "div", 51);
123
121
  i0.ɵɵtext(13, "Type");
124
122
  i0.ɵɵelementEnd();
125
- i0.ɵɵelementStart(14, "div", 57);
123
+ i0.ɵɵelementStart(14, "div", 52);
126
124
  i0.ɵɵtext(15);
127
125
  i0.ɵɵelementEnd()();
128
- i0.ɵɵelementStart(16, "div", 55)(17, "div", 56);
126
+ i0.ɵɵelementStart(16, "div", 50)(17, "div", 51);
129
127
  i0.ɵɵtext(18, "Status");
130
128
  i0.ɵɵelementEnd();
131
- i0.ɵɵelementStart(19, "div", 57)(20, "span", 58);
129
+ i0.ɵɵelementStart(19, "div", 52)(20, "span", 53);
132
130
  i0.ɵɵtext(21);
133
131
  i0.ɵɵelementEnd()()();
134
- i0.ɵɵelementStart(22, "div", 55)(23, "div", 56);
132
+ i0.ɵɵelementStart(22, "div", 50)(23, "div", 51);
135
133
  i0.ɵɵtext(24, "Priority");
136
134
  i0.ɵɵelementEnd();
137
- i0.ɵɵelementStart(25, "div", 57);
135
+ i0.ɵɵelementStart(25, "div", 52);
138
136
  i0.ɵɵtext(26);
139
137
  i0.ɵɵelementEnd()();
140
- i0.ɵɵelementStart(27, "div", 55)(28, "div", 56);
138
+ i0.ɵɵelementStart(27, "div", 50)(28, "div", 51);
141
139
  i0.ɵɵtext(29, "Estimated Duration");
142
140
  i0.ɵɵelementEnd();
143
- i0.ɵɵelementStart(30, "div", 57);
141
+ i0.ɵɵelementStart(30, "div", 52);
144
142
  i0.ɵɵtext(31);
145
143
  i0.ɵɵelementEnd()();
146
- i0.ɵɵelementStart(32, "div", 55)(33, "div", 56);
144
+ i0.ɵɵelementStart(32, "div", 50)(33, "div", 51);
147
145
  i0.ɵɵtext(34, "Estimated Cost");
148
146
  i0.ɵɵelementEnd();
149
- i0.ɵɵelementStart(35, "div", 57);
147
+ i0.ɵɵelementStart(35, "div", 52);
150
148
  i0.ɵɵtext(36);
151
149
  i0.ɵɵelementEnd()();
152
- i0.ɵɵelementStart(37, "div", 55)(38, "div", 56);
150
+ i0.ɵɵelementStart(37, "div", 50)(38, "div", 51);
153
151
  i0.ɵɵtext(39, "Repeat Count");
154
152
  i0.ɵɵelementEnd();
155
- i0.ɵɵelementStart(40, "div", 57);
153
+ i0.ɵɵelementStart(40, "div", 52);
156
154
  i0.ɵɵtext(41);
157
155
  i0.ɵɵelementEnd()();
158
- i0.ɵɵelementStart(42, "div", 55)(43, "div", 56);
156
+ i0.ɵɵelementStart(42, "div", 50)(43, "div", 51);
159
157
  i0.ɵɵtext(44, "Max Execution Time");
160
158
  i0.ɵɵelementEnd();
161
- i0.ɵɵelementStart(45, "div", 57);
159
+ i0.ɵɵelementStart(45, "div", 52);
162
160
  i0.ɵɵtext(46);
163
161
  i0.ɵɵelementEnd()();
164
- i0.ɵɵelementStart(47, "div", 55)(48, "div", 56);
162
+ i0.ɵɵelementStart(47, "div", 50)(48, "div", 51);
165
163
  i0.ɵɵtext(49, "Created");
166
164
  i0.ɵɵelementEnd();
167
- i0.ɵɵelementStart(50, "div", 57);
165
+ i0.ɵɵelementStart(50, "div", 52);
168
166
  i0.ɵɵtext(51);
169
167
  i0.ɵɵpipe(52, "date");
170
168
  i0.ɵɵelementEnd()();
171
- i0.ɵɵelementStart(53, "div", 55)(54, "div", 56);
169
+ i0.ɵɵelementStart(53, "div", 50)(54, "div", 51);
172
170
  i0.ɵɵtext(55, "Updated");
173
171
  i0.ɵɵelementEnd();
174
- i0.ɵɵelementStart(56, "div", 57);
172
+ i0.ɵɵelementStart(56, "div", 52);
175
173
  i0.ɵɵtext(57);
176
174
  i0.ɵɵpipe(58, "date");
177
175
  i0.ɵɵelementEnd()()()();
178
- i0.ɵɵelementStart(59, "div", 59)(60, "h3");
179
- i0.ɵɵelement(61, "i", 60);
176
+ i0.ɵɵelementStart(59, "div", 54)(60, "h3");
177
+ i0.ɵɵelement(61, "i", 55);
180
178
  i0.ɵɵtext(62, " Test Definition");
181
179
  i0.ɵɵelementEnd();
182
- i0.ɵɵelementStart(63, "div", 61)(64, "button", 62);
183
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_61_Template_button_click_64_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setJsonView("input")); });
184
- i0.ɵɵelement(65, "i", 63);
180
+ i0.ɵɵelementStart(63, "div", 56)(64, "button", 57);
181
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_61_Template_button_click_64_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setJsonView("input")); });
182
+ i0.ɵɵelement(65, "i", 58);
185
183
  i0.ɵɵtext(66, " Input Definition ");
186
184
  i0.ɵɵelementEnd();
187
- i0.ɵɵelementStart(67, "button", 62);
188
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_61_Template_button_click_67_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setJsonView("expected")); });
189
- i0.ɵɵelement(68, "i", 64);
185
+ i0.ɵɵelementStart(67, "button", 57);
186
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_61_Template_button_click_67_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setJsonView("expected")); });
187
+ i0.ɵɵelement(68, "i", 59);
190
188
  i0.ɵɵtext(69, " Expected Outcomes ");
191
189
  i0.ɵɵelementEnd();
192
- i0.ɵɵelementStart(70, "button", 62);
193
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_61_Template_button_click_70_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setJsonView("config")); });
194
- i0.ɵɵelement(71, "i", 65);
190
+ i0.ɵɵelementStart(70, "button", 57);
191
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_61_Template_button_click_70_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setJsonView("config")); });
192
+ i0.ɵɵelement(71, "i", 60);
195
193
  i0.ɵɵtext(72, " Configuration ");
196
194
  i0.ɵɵelementEnd();
197
- i0.ɵɵelementStart(73, "button", 62);
198
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_61_Template_button_click_73_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setJsonView("tags")); });
199
- i0.ɵɵelement(74, "i", 66);
195
+ i0.ɵɵelementStart(73, "button", 57);
196
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_61_Template_button_click_73_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setJsonView("tags")); });
197
+ i0.ɵɵelement(74, "i", 61);
200
198
  i0.ɵɵtext(75, " Tags ");
201
199
  i0.ɵɵelementEnd()();
202
- i0.ɵɵelementStart(76, "div", 67);
203
- i0.ɵɵelement(77, "mj-code-editor", 68);
200
+ i0.ɵɵelementStart(76, "div", 62);
201
+ i0.ɵɵelement(77, "mj-code-editor", 63);
204
202
  i0.ɵɵelementEnd()()();
205
203
  } if (rf & 2) {
206
204
  const ctx_r0 = i0.ɵɵnextContext();
@@ -237,72 +235,72 @@ function TestFormComponentExtended_div_61_Template(rf, ctx) { if (rf & 1) {
237
235
  i0.ɵɵadvance(4);
238
236
  i0.ɵɵproperty("value", ctx_r0.getJsonData())("readonly", true)("toolbar", ctx_r0.jsonToolbar)("lineWrapping", true);
239
237
  } }
240
- function TestFormComponentExtended_div_62_Template(rf, ctx) { if (rf & 1) {
238
+ function TestFormComponentExtended_Conditional_62_Template(rf, ctx) { if (rf & 1) {
241
239
  const _r3 = i0.ɵɵgetCurrentView();
242
- i0.ɵɵelementStart(0, "div", 69)(1, "div", 70)(2, "h3");
243
- i0.ɵɵelement(3, "i", 71);
240
+ i0.ɵɵelementStart(0, "div", 34)(1, "div", 64)(2, "h3");
241
+ i0.ɵɵelement(3, "i", 65);
244
242
  i0.ɵɵtext(4, " Execution Settings");
245
243
  i0.ɵɵelementEnd();
246
- i0.ɵɵelementStart(5, "div", 72)(6, "div", 73)(7, "label");
244
+ i0.ɵɵelementStart(5, "div", 66)(6, "div", 67)(7, "label");
247
245
  i0.ɵɵtext(8, "Priority");
248
246
  i0.ɵɵelementEnd();
249
- i0.ɵɵelementStart(9, "input", 74);
250
- i0.ɵɵtwoWayListener("ngModelChange", function TestFormComponentExtended_div_62_Template_input_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.Priority, $event) || (ctx_r0.record.Priority = $event); return i0.ɵɵresetView($event); });
247
+ i0.ɵɵelementStart(9, "input", 68);
248
+ i0.ɵɵtwoWayListener("ngModelChange", function TestFormComponentExtended_Conditional_62_Template_input_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.Priority, $event) || (ctx_r0.record.Priority = $event); return i0.ɵɵresetView($event); });
251
249
  i0.ɵɵelementEnd()();
252
- i0.ɵɵelementStart(10, "div", 73)(11, "label");
250
+ i0.ɵɵelementStart(10, "div", 67)(11, "label");
253
251
  i0.ɵɵtext(12, "Repeat Count");
254
252
  i0.ɵɵelementEnd();
255
- i0.ɵɵelementStart(13, "input", 75);
256
- i0.ɵɵtwoWayListener("ngModelChange", function TestFormComponentExtended_div_62_Template_input_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.RepeatCount, $event) || (ctx_r0.record.RepeatCount = $event); return i0.ɵɵresetView($event); });
253
+ i0.ɵɵelementStart(13, "input", 69);
254
+ i0.ɵɵtwoWayListener("ngModelChange", function TestFormComponentExtended_Conditional_62_Template_input_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.RepeatCount, $event) || (ctx_r0.record.RepeatCount = $event); return i0.ɵɵresetView($event); });
257
255
  i0.ɵɵelementEnd()();
258
- i0.ɵɵelementStart(14, "div", 73)(15, "label");
256
+ i0.ɵɵelementStart(14, "div", 67)(15, "label");
259
257
  i0.ɵɵtext(16, "Estimated Duration (seconds)");
260
258
  i0.ɵɵelementEnd();
261
- i0.ɵɵelementStart(17, "input", 76);
262
- i0.ɵɵtwoWayListener("ngModelChange", function TestFormComponentExtended_div_62_Template_input_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.EstimatedDurationSeconds, $event) || (ctx_r0.record.EstimatedDurationSeconds = $event); return i0.ɵɵresetView($event); });
259
+ i0.ɵɵelementStart(17, "input", 70);
260
+ i0.ɵɵtwoWayListener("ngModelChange", function TestFormComponentExtended_Conditional_62_Template_input_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.EstimatedDurationSeconds, $event) || (ctx_r0.record.EstimatedDurationSeconds = $event); return i0.ɵɵresetView($event); });
263
261
  i0.ɵɵelementEnd()();
264
- i0.ɵɵelementStart(18, "div", 73)(19, "label");
262
+ i0.ɵɵelementStart(18, "div", 67)(19, "label");
265
263
  i0.ɵɵtext(20, "Estimated Cost (USD)");
266
264
  i0.ɵɵelementEnd();
267
- i0.ɵɵelementStart(21, "input", 77);
268
- i0.ɵɵtwoWayListener("ngModelChange", function TestFormComponentExtended_div_62_Template_input_ngModelChange_21_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.EstimatedCostUSD, $event) || (ctx_r0.record.EstimatedCostUSD = $event); return i0.ɵɵresetView($event); });
265
+ i0.ɵɵelementStart(21, "input", 71);
266
+ i0.ɵɵtwoWayListener("ngModelChange", function TestFormComponentExtended_Conditional_62_Template_input_ngModelChange_21_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.EstimatedCostUSD, $event) || (ctx_r0.record.EstimatedCostUSD = $event); return i0.ɵɵresetView($event); });
269
267
  i0.ɵɵelementEnd()();
270
- i0.ɵɵelementStart(22, "div", 78)(23, "label");
268
+ i0.ɵɵelementStart(22, "div", 72)(23, "label");
271
269
  i0.ɵɵtext(24, "Max Execution Time (ms)");
272
270
  i0.ɵɵelementEnd();
273
- i0.ɵɵelementStart(25, "input", 79);
274
- i0.ɵɵtwoWayListener("ngModelChange", function TestFormComponentExtended_div_62_Template_input_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.MaxExecutionTimeMS, $event) || (ctx_r0.record.MaxExecutionTimeMS = $event); return i0.ɵɵresetView($event); });
271
+ i0.ɵɵelementStart(25, "input", 73);
272
+ i0.ɵɵtwoWayListener("ngModelChange", function TestFormComponentExtended_Conditional_62_Template_input_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.MaxExecutionTimeMS, $event) || (ctx_r0.record.MaxExecutionTimeMS = $event); return i0.ɵɵresetView($event); });
275
273
  i0.ɵɵelementEnd();
276
- i0.ɵɵelementStart(26, "span", 80);
274
+ i0.ɵɵelementStart(26, "span", 74);
277
275
  i0.ɵɵtext(27, "Leave empty for default 5 minute timeout");
278
276
  i0.ɵɵelementEnd()()()();
279
- i0.ɵɵelementStart(28, "div", 70)(29, "h3");
280
- i0.ɵɵelement(30, "i", 63);
277
+ i0.ɵɵelementStart(28, "div", 64)(29, "h3");
278
+ i0.ɵɵelement(30, "i", 58);
281
279
  i0.ɵɵtext(31, " Input Definition (JSON)");
282
280
  i0.ɵɵelementEnd();
283
- i0.ɵɵelementStart(32, "div", 81)(33, "mj-code-editor", 82);
284
- i0.ɵɵlistener("change", function TestFormComponentExtended_div_62_Template_mj_code_editor_change_33_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.record.InputDefinition = $event); });
281
+ i0.ɵɵelementStart(32, "div", 75)(33, "mj-code-editor", 76);
282
+ i0.ɵɵlistener("change", function TestFormComponentExtended_Conditional_62_Template_mj_code_editor_change_33_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.record.InputDefinition = $event); });
285
283
  i0.ɵɵelementEnd()()();
286
- i0.ɵɵelementStart(34, "div", 70)(35, "h3");
287
- i0.ɵɵelement(36, "i", 64);
284
+ i0.ɵɵelementStart(34, "div", 64)(35, "h3");
285
+ i0.ɵɵelement(36, "i", 59);
288
286
  i0.ɵɵtext(37, " Expected Outcomes (JSON)");
289
287
  i0.ɵɵelementEnd();
290
- i0.ɵɵelementStart(38, "div", 81)(39, "mj-code-editor", 82);
291
- i0.ɵɵlistener("change", function TestFormComponentExtended_div_62_Template_mj_code_editor_change_39_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.record.ExpectedOutcomes = $event); });
288
+ i0.ɵɵelementStart(38, "div", 75)(39, "mj-code-editor", 76);
289
+ i0.ɵɵlistener("change", function TestFormComponentExtended_Conditional_62_Template_mj_code_editor_change_39_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.record.ExpectedOutcomes = $event); });
292
290
  i0.ɵɵelementEnd()()();
293
- i0.ɵɵelementStart(40, "div", 70)(41, "h3");
294
- i0.ɵɵelement(42, "i", 65);
291
+ i0.ɵɵelementStart(40, "div", 64)(41, "h3");
292
+ i0.ɵɵelement(42, "i", 60);
295
293
  i0.ɵɵtext(43, " Configuration (JSON)");
296
294
  i0.ɵɵelementEnd();
297
- i0.ɵɵelementStart(44, "div", 81)(45, "mj-code-editor", 82);
298
- i0.ɵɵlistener("change", function TestFormComponentExtended_div_62_Template_mj_code_editor_change_45_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.record.Configuration = $event); });
295
+ i0.ɵɵelementStart(44, "div", 75)(45, "mj-code-editor", 76);
296
+ i0.ɵɵlistener("change", function TestFormComponentExtended_Conditional_62_Template_mj_code_editor_change_45_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.record.Configuration = $event); });
299
297
  i0.ɵɵelementEnd()()();
300
- i0.ɵɵelementStart(46, "div", 70)(47, "h3");
301
- i0.ɵɵelement(48, "i", 66);
298
+ i0.ɵɵelementStart(46, "div", 64)(47, "h3");
299
+ i0.ɵɵelement(48, "i", 61);
302
300
  i0.ɵɵtext(49, " Tags (JSON Array)");
303
301
  i0.ɵɵelementEnd();
304
- i0.ɵɵelementStart(50, "div", 83)(51, "mj-code-editor", 82);
305
- i0.ɵɵlistener("change", function TestFormComponentExtended_div_62_Template_mj_code_editor_change_51_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.record.Tags = $event); });
302
+ i0.ɵɵelementStart(50, "div", 77)(51, "mj-code-editor", 76);
303
+ i0.ɵɵlistener("change", function TestFormComponentExtended_Conditional_62_Template_mj_code_editor_change_51_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.record.Tags = $event); });
306
304
  i0.ɵɵelementEnd()()()();
307
305
  } if (rf & 2) {
308
306
  const ctx_r0 = i0.ɵɵnextContext();
@@ -325,52 +323,52 @@ function TestFormComponentExtended_div_62_Template(rf, ctx) { if (rf & 1) {
325
323
  i0.ɵɵadvance(6);
326
324
  i0.ɵɵproperty("value", ctx_r0.record.Tags || "[]")("readonly", false)("lineWrapping", true);
327
325
  } }
328
- function TestFormComponentExtended_div_63_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
329
- i0.ɵɵelementStart(0, "div", 91);
330
- i0.ɵɵelement(1, "div", 92);
331
- i0.ɵɵelementStart(2, "div", 93);
332
- i0.ɵɵelement(3, "div", 94)(4, "div", 95);
326
+ function TestFormComponentExtended_Conditional_63_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
327
+ i0.ɵɵelementStart(0, "div", 82);
328
+ i0.ɵɵelement(1, "div", 83);
329
+ i0.ɵɵelementStart(2, "div", 84);
330
+ i0.ɵɵelement(3, "div", 85)(4, "div", 86);
333
331
  i0.ɵɵelementEnd()();
334
332
  } }
335
- function TestFormComponentExtended_div_63_div_1_Template(rf, ctx) { if (rf & 1) {
336
- i0.ɵɵelementStart(0, "div", 88)(1, "div", 89);
337
- i0.ɵɵtemplate(2, TestFormComponentExtended_div_63_div_1_div_2_Template, 5, 0, "div", 90);
333
+ function TestFormComponentExtended_Conditional_63_Conditional_1_Template(rf, ctx) { if (rf & 1) {
334
+ i0.ɵɵelementStart(0, "div", 78)(1, "div", 81);
335
+ i0.ɵɵrepeaterCreate(2, TestFormComponentExtended_Conditional_63_Conditional_1_For_3_Template, 5, 0, "div", 82, i0.ɵɵrepeaterTrackByIdentity);
338
336
  i0.ɵɵelementEnd()();
339
337
  } if (rf & 2) {
340
338
  i0.ɵɵadvance(2);
341
- i0.ɵɵproperty("ngForOf", i0.ɵɵpureFunction0(1, _c0));
339
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0));
342
340
  } }
343
- function TestFormComponentExtended_div_63_div_2_div_1_span_13_Template(rf, ctx) { if (rf & 1) {
341
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
344
342
  i0.ɵɵelementStart(0, "span");
345
- i0.ɵɵelement(1, "i", 113);
343
+ i0.ɵɵelement(1, "i", 102);
346
344
  i0.ɵɵtext(2);
347
345
  i0.ɵɵelementEnd();
348
346
  } if (rf & 2) {
349
347
  const run_r5 = i0.ɵɵnextContext().$implicit;
350
348
  const ctx_r0 = i0.ɵɵnextContext(3);
351
349
  i0.ɵɵadvance(2);
352
- i0.ɵɵtextInterpolate1(" ", ctx_r0.formatDuration(run_r5.DurationSeconds), "");
350
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.formatDuration(run_r5.DurationSeconds));
353
351
  } }
354
- function TestFormComponentExtended_div_63_div_2_div_1_span_14_Template(rf, ctx) { if (rf & 1) {
352
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
355
353
  i0.ɵɵelementStart(0, "span");
356
- i0.ɵɵelement(1, "i", 114);
354
+ i0.ɵɵelement(1, "i", 103);
357
355
  i0.ɵɵtext(2);
358
356
  i0.ɵɵelementEnd();
359
357
  } if (rf & 2) {
360
358
  const run_r5 = i0.ɵɵnextContext().$implicit;
361
359
  const ctx_r0 = i0.ɵɵnextContext(3);
362
360
  i0.ɵɵadvance(2);
363
- i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCost(run_r5.CostUSD), "");
361
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCost(run_r5.CostUSD));
364
362
  } }
365
- function TestFormComponentExtended_div_63_div_2_div_1_mj_entity_link_pill_15_Template(rf, ctx) { if (rf & 1) {
366
- i0.ɵɵelement(0, "mj-entity-link-pill", 115);
363
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
364
+ i0.ɵɵelement(0, "mj-entity-link-pill", 97);
367
365
  } if (rf & 2) {
368
366
  const run_r5 = i0.ɵɵnextContext().$implicit;
369
367
  i0.ɵɵproperty("entityName", run_r5.TargetLogEntity)("recordId", run_r5.TargetLogID);
370
368
  } }
371
- function TestFormComponentExtended_div_63_div_2_div_1_span_17_Template(rf, ctx) { if (rf & 1) {
372
- i0.ɵɵelementStart(0, "span", 116);
373
- i0.ɵɵelement(1, "i", 100);
369
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
370
+ i0.ɵɵelementStart(0, "span", 99);
371
+ i0.ɵɵelement(1, "i", 90);
374
372
  i0.ɵɵelementStart(2, "span");
375
373
  i0.ɵɵtext(3);
376
374
  i0.ɵɵelementEnd()();
@@ -383,49 +381,47 @@ function TestFormComponentExtended_div_63_div_2_div_1_span_17_Template(rf, ctx)
383
381
  i0.ɵɵadvance(2);
384
382
  i0.ɵɵtextInterpolate(run_r5.Status);
385
383
  } }
386
- function TestFormComponentExtended_div_63_div_2_div_1_ng_container_18_span_1_Template(rf, ctx) { if (rf & 1) {
387
- i0.ɵɵelementStart(0, "span", 119);
388
- i0.ɵɵelement(1, "i", 120);
384
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_18_Conditional_0_Template(rf, ctx) { if (rf & 1) {
385
+ i0.ɵɵelementStart(0, "span", 104);
386
+ i0.ɵɵelement(1, "i", 106);
389
387
  i0.ɵɵelementEnd();
390
388
  } }
391
- function TestFormComponentExtended_div_63_div_2_div_1_ng_container_18_span_2_Template(rf, ctx) { if (rf & 1) {
392
- i0.ɵɵelementStart(0, "span", 121);
393
- i0.ɵɵelement(1, "i", 122);
389
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
390
+ i0.ɵɵelementStart(0, "span", 107);
391
+ i0.ɵɵelement(1, "i", 108);
394
392
  i0.ɵɵelementStart(2, "span");
395
393
  i0.ɵɵtext(3);
396
394
  i0.ɵɵelementEnd()();
397
395
  } if (rf & 2) {
398
- let tmp_11_0;
399
- const rating_r6 = ctx.ngIf;
396
+ let tmp_19_0;
397
+ const rating_r6 = ctx;
400
398
  const run_r5 = i0.ɵɵnextContext(2).$implicit;
401
399
  const ctx_r0 = i0.ɵɵnextContext(3);
402
400
  i0.ɵɵclassProp("rating-low", rating_r6 <= 4)("rating-medium", rating_r6 >= 5 && rating_r6 <= 6)("rating-good", rating_r6 >= 7 && rating_r6 <= 8)("rating-excellent", rating_r6 >= 9);
403
- i0.ɵɵproperty("title", ctx_r0.getHumanTooltip(rating_r6, ((tmp_11_0 = ctx_r0.getFeedbackForRun(run_r5.ID)) == null ? null : tmp_11_0.CorrectionSummary) || ((tmp_11_0 = ctx_r0.getFeedbackForRun(run_r5.ID)) == null ? null : tmp_11_0.Comments) || null));
401
+ i0.ɵɵproperty("title", ctx_r0.getHumanTooltip(rating_r6, ((tmp_19_0 = ctx_r0.getFeedbackForRun(run_r5.ID)) == null ? null : tmp_19_0.CorrectionSummary) || ((tmp_19_0 = ctx_r0.getFeedbackForRun(run_r5.ID)) == null ? null : tmp_19_0.Comments) || null));
404
402
  i0.ɵɵadvance(3);
405
403
  i0.ɵɵtextInterpolate(rating_r6);
406
404
  } }
407
- function TestFormComponentExtended_div_63_div_2_div_1_ng_container_18_Template(rf, ctx) { if (rf & 1) {
408
- i0.ɵɵelementContainerStart(0);
409
- i0.ɵɵtemplate(1, TestFormComponentExtended_div_63_div_2_div_1_ng_container_18_span_1_Template, 2, 0, "span", 117)(2, TestFormComponentExtended_div_63_div_2_div_1_ng_container_18_span_2_Template, 4, 10, "span", 118);
410
- i0.ɵɵelementContainerEnd();
405
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
406
+ i0.ɵɵconditionalCreate(0, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_18_Conditional_0_Template, 2, 0, "span", 104);
407
+ i0.ɵɵconditionalCreate(1, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_18_Conditional_1_Template, 4, 10, "span", 105);
411
408
  } if (rf & 2) {
412
- let tmp_5_0;
413
- let tmp_6_0;
409
+ let tmp_13_0;
410
+ let tmp_14_0;
414
411
  const run_r5 = i0.ɵɵnextContext().$implicit;
415
412
  const ctx_r0 = i0.ɵɵnextContext(3);
413
+ i0.ɵɵconditional(!((tmp_13_0 = ctx_r0.getFeedbackForRun(run_r5.ID)) == null ? null : tmp_13_0.Rating) ? 0 : -1);
416
414
  i0.ɵɵadvance();
417
- i0.ɵɵproperty("ngIf", !((tmp_5_0 = ctx_r0.getFeedbackForRun(run_r5.ID)) == null ? null : tmp_5_0.Rating));
418
- i0.ɵɵadvance();
419
- i0.ɵɵproperty("ngIf", (tmp_6_0 = ctx_r0.getFeedbackForRun(run_r5.ID)) == null ? null : tmp_6_0.Rating);
415
+ i0.ɵɵconditional((tmp_14_0 = (tmp_14_0 = ctx_r0.getFeedbackForRun(run_r5.ID)) == null ? null : tmp_14_0.Rating) ? 1 : -1, tmp_14_0);
420
416
  } }
421
- function TestFormComponentExtended_div_63_div_2_div_1_ng_container_19_span_1_Template(rf, ctx) { if (rf & 1) {
422
- i0.ɵɵelementStart(0, "span", 125);
423
- i0.ɵɵelement(1, "i", 126);
417
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_19_Conditional_0_Template(rf, ctx) { if (rf & 1) {
418
+ i0.ɵɵelementStart(0, "span", 109);
419
+ i0.ɵɵelement(1, "i", 111);
424
420
  i0.ɵɵelementEnd();
425
421
  } }
426
- function TestFormComponentExtended_div_63_div_2_div_1_ng_container_19_span_2_Template(rf, ctx) { if (rf & 1) {
427
- i0.ɵɵelementStart(0, "span", 127);
428
- i0.ɵɵelement(1, "i", 126);
422
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_19_Conditional_1_Template(rf, ctx) { if (rf & 1) {
423
+ i0.ɵɵelementStart(0, "span", 112);
424
+ i0.ɵɵelement(1, "i", 111);
429
425
  i0.ɵɵelementStart(2, "span");
430
426
  i0.ɵɵtext(3);
431
427
  i0.ɵɵelementEnd()();
@@ -436,19 +432,17 @@ function TestFormComponentExtended_div_63_div_2_div_1_ng_container_19_span_2_Tem
436
432
  i0.ɵɵadvance(3);
437
433
  i0.ɵɵtextInterpolate1("", (run_r5.Score * 100).toFixed(0), "%");
438
434
  } }
439
- function TestFormComponentExtended_div_63_div_2_div_1_ng_container_19_Template(rf, ctx) { if (rf & 1) {
440
- i0.ɵɵelementContainerStart(0);
441
- i0.ɵɵtemplate(1, TestFormComponentExtended_div_63_div_2_div_1_ng_container_19_span_1_Template, 2, 0, "span", 123)(2, TestFormComponentExtended_div_63_div_2_div_1_ng_container_19_span_2_Template, 4, 10, "span", 124);
442
- i0.ɵɵelementContainerEnd();
435
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
436
+ i0.ɵɵconditionalCreate(0, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_19_Conditional_0_Template, 2, 0, "span", 109);
437
+ i0.ɵɵconditionalCreate(1, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_19_Conditional_1_Template, 4, 10, "span", 110);
443
438
  } if (rf & 2) {
444
439
  const run_r5 = i0.ɵɵnextContext().$implicit;
440
+ i0.ɵɵconditional(run_r5.Score == null ? 0 : -1);
445
441
  i0.ɵɵadvance();
446
- i0.ɵɵproperty("ngIf", run_r5.Score == null);
447
- i0.ɵɵadvance();
448
- i0.ɵɵproperty("ngIf", run_r5.Score != null);
442
+ i0.ɵɵconditional(run_r5.Score != null ? 1 : -1);
449
443
  } }
450
- function TestFormComponentExtended_div_63_div_2_div_1_div_20_span_1_Template(rf, ctx) { if (rf & 1) {
451
- i0.ɵɵelementStart(0, "span", 131);
444
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_20_For_2_Template(rf, ctx) { if (rf & 1) {
445
+ i0.ɵɵelementStart(0, "span", 113);
452
446
  i0.ɵɵtext(1);
453
447
  i0.ɵɵelementEnd();
454
448
  } if (rf & 2) {
@@ -456,53 +450,58 @@ function TestFormComponentExtended_div_63_div_2_div_1_div_20_span_1_Template(rf,
456
450
  i0.ɵɵadvance();
457
451
  i0.ɵɵtextInterpolate(tag_r7);
458
452
  } }
459
- function TestFormComponentExtended_div_63_div_2_div_1_div_20_span_2_Template(rf, ctx) { if (rf & 1) {
460
- i0.ɵɵelementStart(0, "span", 132);
453
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_20_Conditional_3_Template(rf, ctx) { if (rf & 1) {
454
+ i0.ɵɵelementStart(0, "span", 114);
461
455
  i0.ɵɵtext(1);
462
456
  i0.ɵɵelementEnd();
463
457
  } if (rf & 2) {
464
458
  const run_r5 = i0.ɵɵnextContext(2).$implicit;
465
459
  const ctx_r0 = i0.ɵɵnextContext(3);
466
460
  i0.ɵɵadvance();
467
- i0.ɵɵtextInterpolate1("+", ctx_r0.getRunTags(run_r5).length - 3, "");
461
+ i0.ɵɵtextInterpolate1("+", ctx_r0.getRunTags(run_r5).length - 3);
468
462
  } }
469
- function TestFormComponentExtended_div_63_div_2_div_1_div_20_Template(rf, ctx) { if (rf & 1) {
470
- i0.ɵɵelementStart(0, "div", 128);
471
- i0.ɵɵtemplate(1, TestFormComponentExtended_div_63_div_2_div_1_div_20_span_1_Template, 2, 1, "span", 129)(2, TestFormComponentExtended_div_63_div_2_div_1_div_20_span_2_Template, 2, 1, "span", 130);
463
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
464
+ i0.ɵɵelementStart(0, "div", 100);
465
+ i0.ɵɵrepeaterCreate(1, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_20_For_2_Template, 2, 1, "span", 113, i0.ɵɵrepeaterTrackByIdentity);
466
+ i0.ɵɵconditionalCreate(3, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_20_Conditional_3_Template, 2, 1, "span", 114);
472
467
  i0.ɵɵelementEnd();
473
468
  } if (rf & 2) {
474
469
  const run_r5 = i0.ɵɵnextContext().$implicit;
475
470
  const ctx_r0 = i0.ɵɵnextContext(3);
476
471
  i0.ɵɵadvance();
477
- i0.ɵɵproperty("ngForOf", ctx_r0.getRunTags(run_r5).slice(0, 3));
478
- i0.ɵɵadvance();
479
- i0.ɵɵproperty("ngIf", ctx_r0.getRunTags(run_r5).length > 3);
472
+ i0.ɵɵrepeater(ctx_r0.getRunTags(run_r5).slice(0, 3));
473
+ i0.ɵɵadvance(2);
474
+ i0.ɵɵconditional(ctx_r0.getRunTags(run_r5).length > 3 ? 3 : -1);
480
475
  } }
481
- function TestFormComponentExtended_div_63_div_2_div_1_Template(rf, ctx) { if (rf & 1) {
476
+ function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
482
477
  const _r4 = i0.ɵɵgetCurrentView();
483
- i0.ɵɵelementStart(0, "div", 98);
484
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_63_div_2_div_1_Template_div_click_0_listener() { const run_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openTestRun(run_r5.ID)); });
485
- i0.ɵɵelementStart(1, "div", 99);
486
- i0.ɵɵelement(2, "i", 100);
478
+ i0.ɵɵelementStart(0, "div", 88);
479
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Template_div_click_0_listener() { const run_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openTestRun(run_r5.ID)); });
480
+ i0.ɵɵelementStart(1, "div", 89);
481
+ i0.ɵɵelement(2, "i", 90);
487
482
  i0.ɵɵelementEnd();
488
- i0.ɵɵelementStart(3, "div", 101)(4, "div", 102)(5, "span", 103);
483
+ i0.ɵɵelementStart(3, "div", 91)(4, "div", 92)(5, "span", 93);
489
484
  i0.ɵɵtext(6);
490
485
  i0.ɵɵelementEnd();
491
- i0.ɵɵelementStart(7, "span", 104);
486
+ i0.ɵɵelementStart(7, "span", 94);
492
487
  i0.ɵɵtext(8);
493
488
  i0.ɵɵelementEnd()();
494
- i0.ɵɵelementStart(9, "div", 105)(10, "span");
495
- i0.ɵɵelement(11, "i", 106);
489
+ i0.ɵɵelementStart(9, "div", 95)(10, "span");
490
+ i0.ɵɵelement(11, "i", 96);
496
491
  i0.ɵɵtext(12);
497
492
  i0.ɵɵelementEnd();
498
- i0.ɵɵtemplate(13, TestFormComponentExtended_div_63_div_2_div_1_span_13_Template, 3, 1, "span", 107)(14, TestFormComponentExtended_div_63_div_2_div_1_span_14_Template, 3, 1, "span", 107)(15, TestFormComponentExtended_div_63_div_2_div_1_mj_entity_link_pill_15_Template, 1, 2, "mj-entity-link-pill", 108);
493
+ i0.ɵɵconditionalCreate(13, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_13_Template, 3, 1, "span");
494
+ i0.ɵɵconditionalCreate(14, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_14_Template, 3, 1, "span");
495
+ i0.ɵɵconditionalCreate(15, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_15_Template, 1, 2, "mj-entity-link-pill", 97);
499
496
  i0.ɵɵelementEnd();
500
- i0.ɵɵelementStart(16, "div", 109);
501
- i0.ɵɵtemplate(17, TestFormComponentExtended_div_63_div_2_div_1_span_17_Template, 4, 17, "span", 110)(18, TestFormComponentExtended_div_63_div_2_div_1_ng_container_18_Template, 3, 2, "ng-container", 107)(19, TestFormComponentExtended_div_63_div_2_div_1_ng_container_19_Template, 3, 2, "ng-container", 107);
497
+ i0.ɵɵelementStart(16, "div", 98);
498
+ i0.ɵɵconditionalCreate(17, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_17_Template, 4, 17, "span", 99);
499
+ i0.ɵɵconditionalCreate(18, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_18_Template, 2, 2);
500
+ i0.ɵɵconditionalCreate(19, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_19_Template, 2, 2);
502
501
  i0.ɵɵelementEnd();
503
- i0.ɵɵtemplate(20, TestFormComponentExtended_div_63_div_2_div_1_div_20_Template, 3, 2, "div", 111);
502
+ i0.ɵɵconditionalCreate(20, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Conditional_20_Template, 4, 1, "div", 100);
504
503
  i0.ɵɵelementEnd();
505
- i0.ɵɵelement(21, "i", 112);
504
+ i0.ɵɵelement(21, "i", 101);
506
505
  i0.ɵɵelementEnd();
507
506
  } if (rf & 2) {
508
507
  const run_r5 = ctx.$implicit;
@@ -512,41 +511,41 @@ function TestFormComponentExtended_div_63_div_2_div_1_Template(rf, ctx) { if (rf
512
511
  i0.ɵɵadvance();
513
512
  i0.ɵɵclassProp("fa-check", run_r5.Status === "Passed")("fa-times", run_r5.Status === "Failed")("fa-exclamation", run_r5.Status === "Error")("fa-stopwatch", run_r5.Status === "Timeout")("fa-spinner", run_r5.Status === "Running")("fa-clock", run_r5.Status === "Pending");
514
513
  i0.ɵɵadvance(4);
515
- i0.ɵɵtextInterpolate1("Run #", run_r5.ID.substring(0, 8), "");
514
+ i0.ɵɵtextInterpolate1("Run #", run_r5.ID.substring(0, 8));
516
515
  i0.ɵɵadvance();
517
516
  i0.ɵɵstyleProp("color", ctx_r0.getRunStatusColor(run_r5.Status));
518
517
  i0.ɵɵadvance();
519
518
  i0.ɵɵtextInterpolate(run_r5.Status);
520
519
  i0.ɵɵadvance(4);
521
- i0.ɵɵtextInterpolate1(" ", ctx_r0.getRelativeTime(run_r5.StartedAt), "");
520
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.getRelativeTime(run_r5.StartedAt));
522
521
  i0.ɵɵadvance();
523
- i0.ɵɵproperty("ngIf", run_r5.DurationSeconds);
522
+ i0.ɵɵconditional(run_r5.DurationSeconds ? 13 : -1);
524
523
  i0.ɵɵadvance();
525
- i0.ɵɵproperty("ngIf", run_r5.CostUSD);
524
+ i0.ɵɵconditional(run_r5.CostUSD ? 14 : -1);
526
525
  i0.ɵɵadvance();
527
- i0.ɵɵproperty("ngIf", run_r5.TargetLogEntityID && run_r5.TargetLogID);
526
+ i0.ɵɵconditional(run_r5.TargetLogEntityID && run_r5.TargetLogID ? 15 : -1);
528
527
  i0.ɵɵadvance(2);
529
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
528
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 17 : -1);
530
529
  i0.ɵɵadvance();
531
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showHuman);
530
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman ? 18 : -1);
532
531
  i0.ɵɵadvance();
533
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto);
532
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto ? 19 : -1);
534
533
  i0.ɵɵadvance();
535
- i0.ɵɵproperty("ngIf", ctx_r0.getRunTags(run_r5).length > 0);
534
+ i0.ɵɵconditional(ctx_r0.getRunTags(run_r5).length > 0 ? 20 : -1);
536
535
  } }
537
- function TestFormComponentExtended_div_63_div_2_Template(rf, ctx) { if (rf & 1) {
538
- i0.ɵɵelementStart(0, "div", 96);
539
- i0.ɵɵtemplate(1, TestFormComponentExtended_div_63_div_2_div_1_Template, 22, 26, "div", 97);
536
+ function TestFormComponentExtended_Conditional_63_Conditional_2_Template(rf, ctx) { if (rf & 1) {
537
+ i0.ɵɵelementStart(0, "div", 79);
538
+ i0.ɵɵrepeaterCreate(1, TestFormComponentExtended_Conditional_63_Conditional_2_For_2_Template, 22, 26, "div", 87, i0.ɵɵrepeaterTrackByIdentity);
540
539
  i0.ɵɵelementEnd();
541
540
  } if (rf & 2) {
542
541
  const ctx_r0 = i0.ɵɵnextContext(2);
543
542
  i0.ɵɵadvance();
544
- i0.ɵɵproperty("ngForOf", ctx_r0.testRuns);
543
+ i0.ɵɵrepeater(ctx_r0.testRuns);
545
544
  } }
546
- function TestFormComponentExtended_div_63_div_3_Template(rf, ctx) { if (rf & 1) {
545
+ function TestFormComponentExtended_Conditional_63_Conditional_3_Template(rf, ctx) { if (rf & 1) {
547
546
  const _r8 = i0.ɵɵgetCurrentView();
548
- i0.ɵɵelementStart(0, "div", 133)(1, "div", 134);
549
- i0.ɵɵelement(2, "i", 135);
547
+ i0.ɵɵelementStart(0, "div", 80)(1, "div", 115);
548
+ i0.ɵɵelement(2, "i", 116);
550
549
  i0.ɵɵelementEnd();
551
550
  i0.ɵɵelementStart(3, "h4");
552
551
  i0.ɵɵtext(4, "No Test Runs Yet");
@@ -555,88 +554,90 @@ function TestFormComponentExtended_div_63_div_3_Template(rf, ctx) { if (rf & 1)
555
554
  i0.ɵɵtext(6, "Run this test to see execution history and results here.");
556
555
  i0.ɵɵelementEnd();
557
556
  i0.ɵɵelementStart(7, "button", 18);
558
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_63_div_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runTest()); });
557
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_63_Conditional_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runTest()); });
559
558
  i0.ɵɵelement(8, "i", 19);
560
559
  i0.ɵɵtext(9, " Run Test Now ");
561
560
  i0.ɵɵelementEnd()();
562
561
  } }
563
- function TestFormComponentExtended_div_63_Template(rf, ctx) { if (rf & 1) {
564
- i0.ɵɵelementStart(0, "div", 84);
565
- i0.ɵɵtemplate(1, TestFormComponentExtended_div_63_div_1_Template, 3, 2, "div", 85)(2, TestFormComponentExtended_div_63_div_2_Template, 2, 1, "div", 86)(3, TestFormComponentExtended_div_63_div_3_Template, 10, 0, "div", 87);
562
+ function TestFormComponentExtended_Conditional_63_Template(rf, ctx) { if (rf & 1) {
563
+ i0.ɵɵelementStart(0, "div", 35);
564
+ i0.ɵɵconditionalCreate(1, TestFormComponentExtended_Conditional_63_Conditional_1_Template, 4, 1, "div", 78);
565
+ i0.ɵɵconditionalCreate(2, TestFormComponentExtended_Conditional_63_Conditional_2_Template, 3, 0, "div", 79);
566
+ i0.ɵɵconditionalCreate(3, TestFormComponentExtended_Conditional_63_Conditional_3_Template, 10, 0, "div", 80);
566
567
  i0.ɵɵelementEnd();
567
568
  } if (rf & 2) {
568
569
  const ctx_r0 = i0.ɵɵnextContext();
569
570
  i0.ɵɵadvance();
570
- i0.ɵɵproperty("ngIf", ctx_r0.loadingRuns);
571
+ i0.ɵɵconditional(ctx_r0.loadingRuns ? 1 : -1);
571
572
  i0.ɵɵadvance();
572
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingRuns && ctx_r0.testRuns.length > 0);
573
+ i0.ɵɵconditional(!ctx_r0.loadingRuns && ctx_r0.testRuns.length > 0 ? 2 : -1);
573
574
  i0.ɵɵadvance();
574
- i0.ɵɵproperty("ngIf", ctx_r0.testRunsLoaded && !ctx_r0.loadingRuns && ctx_r0.testRuns.length === 0);
575
+ i0.ɵɵconditional(ctx_r0.testRunsLoaded && !ctx_r0.loadingRuns && ctx_r0.testRuns.length === 0 ? 3 : -1);
575
576
  } }
576
- function TestFormComponentExtended_div_64_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
577
- i0.ɵɵelementStart(0, "div", 91);
578
- i0.ɵɵelement(1, "div", 92);
579
- i0.ɵɵelementStart(2, "div", 93);
580
- i0.ɵɵelement(3, "div", 94)(4, "div", 95);
577
+ function TestFormComponentExtended_Conditional_64_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
578
+ i0.ɵɵelementStart(0, "div", 82);
579
+ i0.ɵɵelement(1, "div", 83);
580
+ i0.ɵɵelementStart(2, "div", 84);
581
+ i0.ɵɵelement(3, "div", 85)(4, "div", 86);
581
582
  i0.ɵɵelementEnd()();
582
583
  } }
583
- function TestFormComponentExtended_div_64_div_1_Template(rf, ctx) { if (rf & 1) {
584
- i0.ɵɵelementStart(0, "div", 88)(1, "div", 89);
585
- i0.ɵɵtemplate(2, TestFormComponentExtended_div_64_div_1_div_2_Template, 5, 0, "div", 90);
584
+ function TestFormComponentExtended_Conditional_64_Conditional_1_Template(rf, ctx) { if (rf & 1) {
585
+ i0.ɵɵelementStart(0, "div", 78)(1, "div", 81);
586
+ i0.ɵɵrepeaterCreate(2, TestFormComponentExtended_Conditional_64_Conditional_1_For_3_Template, 5, 0, "div", 82, i0.ɵɵrepeaterTrackByIdentity);
586
587
  i0.ɵɵelementEnd()();
587
588
  } if (rf & 2) {
588
589
  i0.ɵɵadvance(2);
589
- i0.ɵɵproperty("ngForOf", i0.ɵɵpureFunction0(1, _c1));
590
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c1));
590
591
  } }
591
- function TestFormComponentExtended_div_64_div_2_div_1_span_10_Template(rf, ctx) { if (rf & 1) {
592
+ function TestFormComponentExtended_Conditional_64_Conditional_2_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
592
593
  i0.ɵɵelementStart(0, "span");
593
- i0.ɵɵelement(1, "i", 53);
594
+ i0.ɵɵelement(1, "i", 48);
594
595
  i0.ɵɵtext(2);
595
596
  i0.ɵɵelementEnd();
596
597
  } if (rf & 2) {
597
598
  const suiteTest_r10 = i0.ɵɵnextContext().$implicit;
598
599
  i0.ɵɵadvance(2);
599
- i0.ɵɵtextInterpolate1(" ", suiteTest_r10.Status, "");
600
+ i0.ɵɵtextInterpolate1(" ", suiteTest_r10.Status);
600
601
  } }
601
- function TestFormComponentExtended_div_64_div_2_div_1_Template(rf, ctx) { if (rf & 1) {
602
+ function TestFormComponentExtended_Conditional_64_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
602
603
  const _r9 = i0.ɵɵgetCurrentView();
603
- i0.ɵɵelementStart(0, "div", 140);
604
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_64_div_2_div_1_Template_div_click_0_listener() { const suiteTest_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openTestSuite(suiteTest_r10.SuiteID)); });
605
- i0.ɵɵelementStart(1, "div", 141);
604
+ i0.ɵɵelementStart(0, "div", 119);
605
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_64_Conditional_2_For_2_Template_div_click_0_listener() { const suiteTest_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openTestSuite(suiteTest_r10.SuiteID)); });
606
+ i0.ɵɵelementStart(1, "div", 120);
606
607
  i0.ɵɵelement(2, "i", 30);
607
608
  i0.ɵɵelementEnd();
608
- i0.ɵɵelementStart(3, "div", 142)(4, "div", 143);
609
+ i0.ɵɵelementStart(3, "div", 121)(4, "div", 122);
609
610
  i0.ɵɵtext(5);
610
611
  i0.ɵɵelementEnd();
611
- i0.ɵɵelementStart(6, "div", 144)(7, "span");
612
- i0.ɵɵelement(8, "i", 145);
612
+ i0.ɵɵelementStart(6, "div", 123)(7, "span");
613
+ i0.ɵɵelement(8, "i", 124);
613
614
  i0.ɵɵtext(9);
614
615
  i0.ɵɵelementEnd();
615
- i0.ɵɵtemplate(10, TestFormComponentExtended_div_64_div_2_div_1_span_10_Template, 3, 1, "span", 107);
616
+ i0.ɵɵconditionalCreate(10, TestFormComponentExtended_Conditional_64_Conditional_2_For_2_Conditional_10_Template, 3, 1, "span");
616
617
  i0.ɵɵelementEnd()();
617
- i0.ɵɵelement(11, "i", 112);
618
+ i0.ɵɵelement(11, "i", 101);
618
619
  i0.ɵɵelementEnd();
619
620
  } if (rf & 2) {
620
621
  const suiteTest_r10 = ctx.$implicit;
621
622
  i0.ɵɵadvance(5);
622
623
  i0.ɵɵtextInterpolate(suiteTest_r10.Suite);
623
624
  i0.ɵɵadvance(4);
624
- i0.ɵɵtextInterpolate1(" Sequence: ", suiteTest_r10.Sequence, "");
625
+ i0.ɵɵtextInterpolate1(" Sequence: ", suiteTest_r10.Sequence);
625
626
  i0.ɵɵadvance();
626
- i0.ɵɵproperty("ngIf", suiteTest_r10.Status);
627
+ i0.ɵɵconditional(suiteTest_r10.Status ? 10 : -1);
627
628
  } }
628
- function TestFormComponentExtended_div_64_div_2_Template(rf, ctx) { if (rf & 1) {
629
- i0.ɵɵelementStart(0, "div", 138);
630
- i0.ɵɵtemplate(1, TestFormComponentExtended_div_64_div_2_div_1_Template, 12, 3, "div", 139);
629
+ function TestFormComponentExtended_Conditional_64_Conditional_2_Template(rf, ctx) { if (rf & 1) {
630
+ i0.ɵɵelementStart(0, "div", 117);
631
+ i0.ɵɵrepeaterCreate(1, TestFormComponentExtended_Conditional_64_Conditional_2_For_2_Template, 12, 3, "div", 118, i0.ɵɵrepeaterTrackByIdentity);
631
632
  i0.ɵɵelementEnd();
632
633
  } if (rf & 2) {
633
634
  const ctx_r0 = i0.ɵɵnextContext(2);
634
635
  i0.ɵɵadvance();
635
- i0.ɵɵproperty("ngForOf", ctx_r0.suiteTests);
636
+ i0.ɵɵrepeater(ctx_r0.suiteTests);
636
637
  } }
637
- function TestFormComponentExtended_div_64_div_3_Template(rf, ctx) { if (rf & 1) {
638
- i0.ɵɵelementStart(0, "div", 133)(1, "div", 134);
639
- i0.ɵɵelement(2, "i", 146);
638
+ function TestFormComponentExtended_Conditional_64_Conditional_3_Template(rf, ctx) { if (rf & 1) {
639
+ i0.ɵɵelementStart(0, "div", 80)(1, "div", 115);
640
+ i0.ɵɵelement(2, "i", 125);
640
641
  i0.ɵɵelementEnd();
641
642
  i0.ɵɵelementStart(3, "h4");
642
643
  i0.ɵɵtext(4, "Not Part of Any Suite");
@@ -645,33 +646,35 @@ function TestFormComponentExtended_div_64_div_3_Template(rf, ctx) { if (rf & 1)
645
646
  i0.ɵɵtext(6, "This test is not included in any test suites. Add it to a suite to run it with other tests.");
646
647
  i0.ɵɵelementEnd()();
647
648
  } }
648
- function TestFormComponentExtended_div_64_Template(rf, ctx) { if (rf & 1) {
649
- i0.ɵɵelementStart(0, "div", 136);
650
- i0.ɵɵtemplate(1, TestFormComponentExtended_div_64_div_1_Template, 3, 2, "div", 85)(2, TestFormComponentExtended_div_64_div_2_Template, 2, 1, "div", 137)(3, TestFormComponentExtended_div_64_div_3_Template, 7, 0, "div", 87);
649
+ function TestFormComponentExtended_Conditional_64_Template(rf, ctx) { if (rf & 1) {
650
+ i0.ɵɵelementStart(0, "div", 36);
651
+ i0.ɵɵconditionalCreate(1, TestFormComponentExtended_Conditional_64_Conditional_1_Template, 4, 1, "div", 78);
652
+ i0.ɵɵconditionalCreate(2, TestFormComponentExtended_Conditional_64_Conditional_2_Template, 3, 0, "div", 117);
653
+ i0.ɵɵconditionalCreate(3, TestFormComponentExtended_Conditional_64_Conditional_3_Template, 7, 0, "div", 80);
651
654
  i0.ɵɵelementEnd();
652
655
  } if (rf & 2) {
653
656
  const ctx_r0 = i0.ɵɵnextContext();
654
657
  i0.ɵɵadvance();
655
- i0.ɵɵproperty("ngIf", ctx_r0.loadingSuites);
658
+ i0.ɵɵconditional(ctx_r0.loadingSuites ? 1 : -1);
656
659
  i0.ɵɵadvance();
657
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingSuites && ctx_r0.suiteTests.length > 0);
660
+ i0.ɵɵconditional(!ctx_r0.loadingSuites && ctx_r0.suiteTests.length > 0 ? 2 : -1);
658
661
  i0.ɵɵadvance();
659
- i0.ɵɵproperty("ngIf", ctx_r0.suiteTestsLoaded && !ctx_r0.loadingSuites && ctx_r0.suiteTests.length === 0);
662
+ i0.ɵɵconditional(ctx_r0.suiteTestsLoaded && !ctx_r0.loadingSuites && ctx_r0.suiteTests.length === 0 ? 3 : -1);
660
663
  } }
661
- function TestFormComponentExtended_div_65_div_1_Template(rf, ctx) { if (rf & 1) {
662
- i0.ɵɵelementStart(0, "div", 88);
663
- i0.ɵɵelement(1, "mj-loading", 149);
664
+ function TestFormComponentExtended_Conditional_65_Conditional_1_Template(rf, ctx) { if (rf & 1) {
665
+ i0.ɵɵelementStart(0, "div", 78);
666
+ i0.ɵɵelement(1, "mj-loading", 127);
664
667
  i0.ɵɵelementEnd();
665
668
  } }
666
- function TestFormComponentExtended_div_65_div_2_div_17_div_9_Template(rf, ctx) { if (rf & 1) {
667
- i0.ɵɵelementStart(0, "div", 160)(1, "div", 166);
668
- i0.ɵɵelement(2, "i", 167);
669
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_17_Conditional_9_Template(rf, ctx) { if (rf & 1) {
670
+ i0.ɵɵelementStart(0, "div", 136)(1, "div", 141);
671
+ i0.ɵɵelement(2, "i", 142);
669
672
  i0.ɵɵelementEnd();
670
- i0.ɵɵelementStart(3, "div", 162)(4, "div", 163);
673
+ i0.ɵɵelementStart(3, "div", 138)(4, "div", 139);
671
674
  i0.ɵɵtext(5);
672
- i0.ɵɵelement(6, "i", 168);
675
+ i0.ɵɵelement(6, "i", 143);
673
676
  i0.ɵɵelementEnd();
674
- i0.ɵɵelementStart(7, "div", 164);
677
+ i0.ɵɵelementStart(7, "div", 140);
675
678
  i0.ɵɵtext(8, "Pass Rate");
676
679
  i0.ɵɵelementEnd()()();
677
680
  } if (rf & 2) {
@@ -681,14 +684,14 @@ function TestFormComponentExtended_div_65_div_2_div_17_div_9_Template(rf, ctx) {
681
684
  i0.ɵɵadvance();
682
685
  i0.ɵɵclassProp("fa-arrow-up", ctx_r0.getPassRateTrend() === "up")("fa-arrow-down", ctx_r0.getPassRateTrend() === "down")("fa-minus", ctx_r0.getPassRateTrend() === "stable")("trend-up", ctx_r0.getPassRateTrend() === "up")("trend-down", ctx_r0.getPassRateTrend() === "down");
683
686
  } }
684
- function TestFormComponentExtended_div_65_div_2_div_17_div_10_Template(rf, ctx) { if (rf & 1) {
685
- i0.ɵɵelementStart(0, "div", 160)(1, "div", 161);
686
- i0.ɵɵelement(2, "i", 169);
687
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_17_Conditional_10_Template(rf, ctx) { if (rf & 1) {
688
+ i0.ɵɵelementStart(0, "div", 136)(1, "div", 137);
689
+ i0.ɵɵelement(2, "i", 144);
687
690
  i0.ɵɵelementEnd();
688
- i0.ɵɵelementStart(3, "div", 162)(4, "div", 163);
691
+ i0.ɵɵelementStart(3, "div", 138)(4, "div", 139);
689
692
  i0.ɵɵtext(5);
690
693
  i0.ɵɵelementEnd();
691
- i0.ɵɵelementStart(6, "div", 164);
694
+ i0.ɵɵelementStart(6, "div", 140);
692
695
  i0.ɵɵtext(7, "Avg Score");
693
696
  i0.ɵɵelementEnd()()();
694
697
  } if (rf & 2) {
@@ -696,33 +699,34 @@ function TestFormComponentExtended_div_65_div_2_div_17_div_10_Template(rf, ctx)
696
699
  i0.ɵɵadvance(5);
697
700
  i0.ɵɵtextInterpolate1("", (ctx_r0.getOverallAvgScore() * 100).toFixed(1), "%");
698
701
  } }
699
- function TestFormComponentExtended_div_65_div_2_div_17_Template(rf, ctx) { if (rf & 1) {
700
- i0.ɵɵelementStart(0, "div", 159)(1, "div", 160)(2, "div", 161);
701
- i0.ɵɵelement(3, "i", 135);
702
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
703
+ i0.ɵɵelementStart(0, "div", 134)(1, "div", 136)(2, "div", 137);
704
+ i0.ɵɵelement(3, "i", 116);
702
705
  i0.ɵɵelementEnd();
703
- i0.ɵɵelementStart(4, "div", 162)(5, "div", 163);
706
+ i0.ɵɵelementStart(4, "div", 138)(5, "div", 139);
704
707
  i0.ɵɵtext(6);
705
708
  i0.ɵɵelementEnd();
706
- i0.ɵɵelementStart(7, "div", 164);
709
+ i0.ɵɵelementStart(7, "div", 140);
707
710
  i0.ɵɵtext(8, "Total Runs");
708
711
  i0.ɵɵelementEnd()()();
709
- i0.ɵɵtemplate(9, TestFormComponentExtended_div_65_div_2_div_17_div_9_Template, 9, 11, "div", 165)(10, TestFormComponentExtended_div_65_div_2_div_17_div_10_Template, 8, 1, "div", 165);
710
- i0.ɵɵelementStart(11, "div", 160)(12, "div", 161);
711
- i0.ɵɵelement(13, "i", 113);
712
+ i0.ɵɵconditionalCreate(9, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_17_Conditional_9_Template, 9, 11, "div", 136);
713
+ i0.ɵɵconditionalCreate(10, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_17_Conditional_10_Template, 8, 1, "div", 136);
714
+ i0.ɵɵelementStart(11, "div", 136)(12, "div", 137);
715
+ i0.ɵɵelement(13, "i", 102);
712
716
  i0.ɵɵelementEnd();
713
- i0.ɵɵelementStart(14, "div", 162)(15, "div", 163);
717
+ i0.ɵɵelementStart(14, "div", 138)(15, "div", 139);
714
718
  i0.ɵɵtext(16);
715
719
  i0.ɵɵelementEnd();
716
- i0.ɵɵelementStart(17, "div", 164);
720
+ i0.ɵɵelementStart(17, "div", 140);
717
721
  i0.ɵɵtext(18, "Avg Duration");
718
722
  i0.ɵɵelementEnd()()();
719
- i0.ɵɵelementStart(19, "div", 160)(20, "div", 161);
720
- i0.ɵɵelement(21, "i", 114);
723
+ i0.ɵɵelementStart(19, "div", 136)(20, "div", 137);
724
+ i0.ɵɵelement(21, "i", 103);
721
725
  i0.ɵɵelementEnd();
722
- i0.ɵɵelementStart(22, "div", 162)(23, "div", 163);
726
+ i0.ɵɵelementStart(22, "div", 138)(23, "div", 139);
723
727
  i0.ɵɵtext(24);
724
728
  i0.ɵɵelementEnd();
725
- i0.ɵɵelementStart(25, "div", 164);
729
+ i0.ɵɵelementStart(25, "div", 140);
726
730
  i0.ɵɵtext(26, "Avg Cost");
727
731
  i0.ɵɵelementEnd()()()();
728
732
  } if (rf & 2) {
@@ -730,36 +734,36 @@ function TestFormComponentExtended_div_65_div_2_div_17_Template(rf, ctx) { if (r
730
734
  i0.ɵɵadvance(6);
731
735
  i0.ɵɵtextInterpolate(ctx_r0.getTotalRuns());
732
736
  i0.ɵɵadvance(3);
733
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
737
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 9 : -1);
734
738
  i0.ɵɵadvance();
735
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto);
739
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto ? 10 : -1);
736
740
  i0.ɵɵadvance(6);
737
741
  i0.ɵɵtextInterpolate(ctx_r0.formatDuration(ctx_r0.getOverallAvgDuration()));
738
742
  i0.ɵɵadvance(8);
739
743
  i0.ɵɵtextInterpolate(ctx_r0.formatCost(ctx_r0.getOverallAvgCost()));
740
744
  } }
741
- function TestFormComponentExtended_div_65_div_2_div_18_th_12_Template(rf, ctx) { if (rf & 1) {
745
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_Conditional_12_Template(rf, ctx) { if (rf & 1) {
742
746
  i0.ɵɵelementStart(0, "th");
743
747
  i0.ɵɵtext(1, "Passed");
744
748
  i0.ɵɵelementEnd();
745
749
  } }
746
- function TestFormComponentExtended_div_65_div_2_div_18_th_13_Template(rf, ctx) { if (rf & 1) {
750
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_Conditional_13_Template(rf, ctx) { if (rf & 1) {
747
751
  i0.ɵɵelementStart(0, "th");
748
752
  i0.ɵɵtext(1, "Failed");
749
753
  i0.ɵɵelementEnd();
750
754
  } }
751
- function TestFormComponentExtended_div_65_div_2_div_18_th_14_Template(rf, ctx) { if (rf & 1) {
755
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_Conditional_14_Template(rf, ctx) { if (rf & 1) {
752
756
  i0.ɵɵelementStart(0, "th");
753
757
  i0.ɵɵtext(1, "Pass Rate");
754
758
  i0.ɵɵelementEnd();
755
759
  } }
756
- function TestFormComponentExtended_div_65_div_2_div_18_th_15_Template(rf, ctx) { if (rf & 1) {
760
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_Conditional_15_Template(rf, ctx) { if (rf & 1) {
757
761
  i0.ɵɵelementStart(0, "th");
758
762
  i0.ɵɵtext(1, "Avg Score");
759
763
  i0.ɵɵelementEnd();
760
764
  } }
761
- function TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_6_Template(rf, ctx) { if (rf & 1) {
762
- i0.ɵɵelementStart(0, "td", 183);
765
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_For_22_Conditional_6_Template(rf, ctx) { if (rf & 1) {
766
+ i0.ɵɵelementStart(0, "td", 150);
763
767
  i0.ɵɵtext(1);
764
768
  i0.ɵɵelementEnd();
765
769
  } if (rf & 2) {
@@ -767,8 +771,8 @@ function TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_6_Template(rf, c
767
771
  i0.ɵɵadvance();
768
772
  i0.ɵɵtextInterpolate(day_r12.passCount);
769
773
  } }
770
- function TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_7_Template(rf, ctx) { if (rf & 1) {
771
- i0.ɵɵelementStart(0, "td", 184);
774
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_For_22_Conditional_7_Template(rf, ctx) { if (rf & 1) {
775
+ i0.ɵɵelementStart(0, "td", 151);
772
776
  i0.ɵɵtext(1);
773
777
  i0.ɵɵelementEnd();
774
778
  } if (rf & 2) {
@@ -776,10 +780,10 @@ function TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_7_Template(rf, c
776
780
  i0.ɵɵadvance();
777
781
  i0.ɵɵtextInterpolate(day_r12.failCount);
778
782
  } }
779
- function TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_8_Template(rf, ctx) { if (rf & 1) {
780
- i0.ɵɵelementStart(0, "td", 185)(1, "div", 186);
781
- i0.ɵɵelement(2, "div", 187);
782
- i0.ɵɵelementStart(3, "span", 188);
783
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_For_22_Conditional_8_Template(rf, ctx) { if (rf & 1) {
784
+ i0.ɵɵelementStart(0, "td", 152)(1, "div", 156);
785
+ i0.ɵɵelement(2, "div", 157);
786
+ i0.ɵɵelementStart(3, "span", 158);
783
787
  i0.ɵɵtext(4);
784
788
  i0.ɵɵelementEnd()()();
785
789
  } if (rf & 2) {
@@ -789,8 +793,8 @@ function TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_8_Template(rf, c
789
793
  i0.ɵɵadvance(2);
790
794
  i0.ɵɵtextInterpolate1("", day_r12.passRate.toFixed(1), "%");
791
795
  } }
792
- function TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_9_Template(rf, ctx) { if (rf & 1) {
793
- i0.ɵɵelementStart(0, "td", 189);
796
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_For_22_Conditional_9_Template(rf, ctx) { if (rf & 1) {
797
+ i0.ɵɵelementStart(0, "td", 153);
794
798
  i0.ɵɵtext(1);
795
799
  i0.ɵɵelementEnd();
796
800
  } if (rf & 2) {
@@ -798,19 +802,22 @@ function TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_9_Template(rf, c
798
802
  i0.ɵɵadvance();
799
803
  i0.ɵɵtextInterpolate1("", (day_r12.avgScore * 100).toFixed(1), "%");
800
804
  } }
801
- function TestFormComponentExtended_div_65_div_2_div_18_tr_21_Template(rf, ctx) { if (rf & 1) {
802
- i0.ɵɵelementStart(0, "tr")(1, "td", 175);
805
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_For_22_Template(rf, ctx) { if (rf & 1) {
806
+ i0.ɵɵelementStart(0, "tr")(1, "td", 148);
803
807
  i0.ɵɵtext(2);
804
808
  i0.ɵɵpipe(3, "date");
805
809
  i0.ɵɵelementEnd();
806
- i0.ɵɵelementStart(4, "td", 176);
810
+ i0.ɵɵelementStart(4, "td", 149);
807
811
  i0.ɵɵtext(5);
808
812
  i0.ɵɵelementEnd();
809
- i0.ɵɵtemplate(6, TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_6_Template, 2, 1, "td", 177)(7, TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_7_Template, 2, 1, "td", 178)(8, TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_8_Template, 5, 3, "td", 179)(9, TestFormComponentExtended_div_65_div_2_div_18_tr_21_td_9_Template, 2, 1, "td", 180);
810
- i0.ɵɵelementStart(10, "td", 181);
813
+ i0.ɵɵconditionalCreate(6, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_For_22_Conditional_6_Template, 2, 1, "td", 150);
814
+ i0.ɵɵconditionalCreate(7, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_For_22_Conditional_7_Template, 2, 1, "td", 151);
815
+ i0.ɵɵconditionalCreate(8, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_For_22_Conditional_8_Template, 5, 3, "td", 152);
816
+ i0.ɵɵconditionalCreate(9, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_For_22_Conditional_9_Template, 2, 1, "td", 153);
817
+ i0.ɵɵelementStart(10, "td", 154);
811
818
  i0.ɵɵtext(11);
812
819
  i0.ɵɵelementEnd();
813
- i0.ɵɵelementStart(12, "td", 182);
820
+ i0.ɵɵelementStart(12, "td", 155);
814
821
  i0.ɵɵtext(13);
815
822
  i0.ɵɵelementEnd()();
816
823
  } if (rf & 2) {
@@ -821,30 +828,33 @@ function TestFormComponentExtended_div_65_div_2_div_18_tr_21_Template(rf, ctx) {
821
828
  i0.ɵɵadvance(3);
822
829
  i0.ɵɵtextInterpolate(day_r12.runCount);
823
830
  i0.ɵɵadvance();
824
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
831
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 6 : -1);
825
832
  i0.ɵɵadvance();
826
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
833
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 7 : -1);
827
834
  i0.ɵɵadvance();
828
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
835
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 8 : -1);
829
836
  i0.ɵɵadvance();
830
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto);
837
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto ? 9 : -1);
831
838
  i0.ɵɵadvance(2);
832
839
  i0.ɵɵtextInterpolate(ctx_r0.formatDuration(day_r12.avgDuration));
833
840
  i0.ɵɵadvance(2);
834
841
  i0.ɵɵtextInterpolate(ctx_r0.formatCost(day_r12.avgCost));
835
842
  } }
836
- function TestFormComponentExtended_div_65_div_2_div_18_Template(rf, ctx) { if (rf & 1) {
837
- i0.ɵɵelementStart(0, "div", 170)(1, "h3");
838
- i0.ɵɵelement(2, "i", 171);
843
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
844
+ i0.ɵɵelementStart(0, "div", 135)(1, "h3");
845
+ i0.ɵɵelement(2, "i", 145);
839
846
  i0.ɵɵtext(3, " Daily Performance");
840
847
  i0.ɵɵelementEnd();
841
- i0.ɵɵelementStart(4, "div", 172)(5, "table", 173)(6, "thead")(7, "tr")(8, "th");
848
+ i0.ɵɵelementStart(4, "div", 146)(5, "table", 147)(6, "thead")(7, "tr")(8, "th");
842
849
  i0.ɵɵtext(9, "Date");
843
850
  i0.ɵɵelementEnd();
844
851
  i0.ɵɵelementStart(10, "th");
845
852
  i0.ɵɵtext(11, "Runs");
846
853
  i0.ɵɵelementEnd();
847
- i0.ɵɵtemplate(12, TestFormComponentExtended_div_65_div_2_div_18_th_12_Template, 2, 0, "th", 107)(13, TestFormComponentExtended_div_65_div_2_div_18_th_13_Template, 2, 0, "th", 107)(14, TestFormComponentExtended_div_65_div_2_div_18_th_14_Template, 2, 0, "th", 107)(15, TestFormComponentExtended_div_65_div_2_div_18_th_15_Template, 2, 0, "th", 107);
854
+ i0.ɵɵconditionalCreate(12, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_Conditional_12_Template, 2, 0, "th");
855
+ i0.ɵɵconditionalCreate(13, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_Conditional_13_Template, 2, 0, "th");
856
+ i0.ɵɵconditionalCreate(14, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_Conditional_14_Template, 2, 0, "th");
857
+ i0.ɵɵconditionalCreate(15, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_Conditional_15_Template, 2, 0, "th");
848
858
  i0.ɵɵelementStart(16, "th");
849
859
  i0.ɵɵtext(17, "Avg Duration");
850
860
  i0.ɵɵelementEnd();
@@ -852,23 +862,23 @@ function TestFormComponentExtended_div_65_div_2_div_18_Template(rf, ctx) { if (r
852
862
  i0.ɵɵtext(19, "Avg Cost");
853
863
  i0.ɵɵelementEnd()()();
854
864
  i0.ɵɵelementStart(20, "tbody");
855
- i0.ɵɵtemplate(21, TestFormComponentExtended_div_65_div_2_div_18_tr_21_Template, 14, 11, "tr", 174);
865
+ i0.ɵɵrepeaterCreate(21, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_For_22_Template, 14, 11, "tr", null, i0.ɵɵrepeaterTrackByIdentity);
856
866
  i0.ɵɵelementEnd()()()();
857
867
  } if (rf & 2) {
858
868
  const ctx_r0 = i0.ɵɵnextContext(3);
859
869
  i0.ɵɵadvance(12);
860
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
870
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 12 : -1);
861
871
  i0.ɵɵadvance();
862
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
872
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 13 : -1);
863
873
  i0.ɵɵadvance();
864
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
874
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 14 : -1);
865
875
  i0.ɵɵadvance();
866
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto);
876
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto ? 15 : -1);
867
877
  i0.ɵɵadvance(6);
868
- i0.ɵɵproperty("ngForOf", ctx_r0.historyData);
878
+ i0.ɵɵrepeater(ctx_r0.historyData);
869
879
  } }
870
- function TestFormComponentExtended_div_65_div_2_div_19_div_5_div_4_span_1_Template(rf, ctx) { if (rf & 1) {
871
- i0.ɵɵelementStart(0, "span", 205);
880
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
881
+ i0.ɵɵelementStart(0, "span", 170);
872
882
  i0.ɵɵtext(1);
873
883
  i0.ɵɵelementEnd();
874
884
  } if (rf & 2) {
@@ -876,31 +886,32 @@ function TestFormComponentExtended_div_65_div_2_div_19_div_5_div_4_span_1_Templa
876
886
  i0.ɵɵadvance();
877
887
  i0.ɵɵtextInterpolate(tag_r15);
878
888
  } }
879
- function TestFormComponentExtended_div_65_div_2_div_19_div_5_div_4_span_2_Template(rf, ctx) { if (rf & 1) {
880
- i0.ɵɵelementStart(0, "span", 206);
889
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
890
+ i0.ɵɵelementStart(0, "span", 171);
881
891
  i0.ɵɵtext(1);
882
892
  i0.ɵɵelementEnd();
883
893
  } if (rf & 2) {
884
894
  const suite_r14 = i0.ɵɵnextContext(2).$implicit;
885
895
  i0.ɵɵadvance();
886
- i0.ɵɵtextInterpolate1("+", suite_r14.tags.length - 3, "");
896
+ i0.ɵɵtextInterpolate1("+", suite_r14.tags.length - 3);
887
897
  } }
888
- function TestFormComponentExtended_div_65_div_2_div_19_div_5_div_4_Template(rf, ctx) { if (rf & 1) {
889
- i0.ɵɵelementStart(0, "div", 202);
890
- i0.ɵɵtemplate(1, TestFormComponentExtended_div_65_div_2_div_19_div_5_div_4_span_1_Template, 2, 1, "span", 203)(2, TestFormComponentExtended_div_65_div_2_div_19_div_5_div_4_span_2_Template, 2, 1, "span", 204);
898
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
899
+ i0.ɵɵelementStart(0, "div", 164);
900
+ i0.ɵɵrepeaterCreate(1, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_4_For_2_Template, 2, 1, "span", 170, i0.ɵɵrepeaterTrackByIdentity);
901
+ i0.ɵɵconditionalCreate(3, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_4_Conditional_3_Template, 2, 1, "span", 171);
891
902
  i0.ɵɵelementEnd();
892
903
  } if (rf & 2) {
893
904
  const suite_r14 = i0.ɵɵnextContext().$implicit;
894
905
  i0.ɵɵadvance();
895
- i0.ɵɵproperty("ngForOf", suite_r14.tags.slice(0, 3));
896
- i0.ɵɵadvance();
897
- i0.ɵɵproperty("ngIf", suite_r14.tags.length > 3);
906
+ i0.ɵɵrepeater(suite_r14.tags.slice(0, 3));
907
+ i0.ɵɵadvance(2);
908
+ i0.ɵɵconditional(suite_r14.tags.length > 3 ? 3 : -1);
898
909
  } }
899
- function TestFormComponentExtended_div_65_div_2_div_19_div_5_div_11_Template(rf, ctx) { if (rf & 1) {
900
- i0.ɵɵelementStart(0, "div", 197)(1, "span", 207);
910
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
911
+ i0.ɵɵelementStart(0, "div", 166)(1, "span", 172);
901
912
  i0.ɵɵtext(2);
902
913
  i0.ɵɵelementEnd();
903
- i0.ɵɵelementStart(3, "span", 199);
914
+ i0.ɵɵelementStart(3, "span", 168);
904
915
  i0.ɵɵtext(4, "Pass Rate");
905
916
  i0.ɵɵelementEnd()();
906
917
  } if (rf & 2) {
@@ -910,11 +921,11 @@ function TestFormComponentExtended_div_65_div_2_div_19_div_5_div_11_Template(rf,
910
921
  i0.ɵɵadvance();
911
922
  i0.ɵɵtextInterpolate1(" ", suite_r14.passRate.toFixed(1), "% ");
912
923
  } }
913
- function TestFormComponentExtended_div_65_div_2_div_19_div_5_div_12_Template(rf, ctx) { if (rf & 1) {
914
- i0.ɵɵelementStart(0, "div", 197)(1, "span", 198);
924
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_12_Template(rf, ctx) { if (rf & 1) {
925
+ i0.ɵɵelementStart(0, "div", 166)(1, "span", 167);
915
926
  i0.ɵɵtext(2);
916
927
  i0.ɵɵelementEnd();
917
- i0.ɵɵelementStart(3, "span", 199);
928
+ i0.ɵɵelementStart(3, "span", 168);
918
929
  i0.ɵɵtext(4, "Avg Score");
919
930
  i0.ɵɵelementEnd()();
920
931
  } if (rf & 2) {
@@ -922,11 +933,11 @@ function TestFormComponentExtended_div_65_div_2_div_19_div_5_div_12_Template(rf,
922
933
  i0.ɵɵadvance(2);
923
934
  i0.ɵɵtextInterpolate1("", (suite_r14.avgScore * 100).toFixed(1), "%");
924
935
  } }
925
- function TestFormComponentExtended_div_65_div_2_div_19_div_5_div_23_Template(rf, ctx) { if (rf & 1) {
926
- i0.ɵɵelementStart(0, "div", 197)(1, "span", 198);
936
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_23_Template(rf, ctx) { if (rf & 1) {
937
+ i0.ɵɵelementStart(0, "div", 166)(1, "span", 167);
927
938
  i0.ɵɵtext(2);
928
939
  i0.ɵɵelementEnd();
929
- i0.ɵɵelementStart(3, "span", 199);
940
+ i0.ɵɵelementStart(3, "span", 168);
930
941
  i0.ɵɵtext(4, "Last Run");
931
942
  i0.ɵɵelementEnd()();
932
943
  } if (rf & 2) {
@@ -935,37 +946,38 @@ function TestFormComponentExtended_div_65_div_2_div_19_div_5_div_23_Template(rf,
935
946
  i0.ɵɵadvance(2);
936
947
  i0.ɵɵtextInterpolate(ctx_r0.getRelativeTime(suite_r14.lastRun));
937
948
  } }
938
- function TestFormComponentExtended_div_65_div_2_div_19_div_5_Template(rf, ctx) { if (rf & 1) {
949
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Template(rf, ctx) { if (rf & 1) {
939
950
  const _r13 = i0.ɵɵgetCurrentView();
940
- i0.ɵɵelementStart(0, "div", 192);
941
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_65_div_2_div_19_div_5_Template_div_click_0_listener() { const suite_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.openSuiteFromHistory(suite_r14.suiteId)); });
942
- i0.ɵɵelementStart(1, "div", 193)(2, "div", 194);
951
+ i0.ɵɵelementStart(0, "div", 161);
952
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Template_div_click_0_listener() { const suite_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.openSuiteFromHistory(suite_r14.suiteId)); });
953
+ i0.ɵɵelementStart(1, "div", 162)(2, "div", 163);
943
954
  i0.ɵɵtext(3);
944
955
  i0.ɵɵelementEnd();
945
- i0.ɵɵtemplate(4, TestFormComponentExtended_div_65_div_2_div_19_div_5_div_4_Template, 3, 2, "div", 195);
956
+ i0.ɵɵconditionalCreate(4, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_4_Template, 4, 1, "div", 164);
946
957
  i0.ɵɵelementEnd();
947
- i0.ɵɵelementStart(5, "div", 196)(6, "div", 197)(7, "span", 198);
958
+ i0.ɵɵelementStart(5, "div", 165)(6, "div", 166)(7, "span", 167);
948
959
  i0.ɵɵtext(8);
949
960
  i0.ɵɵelementEnd();
950
- i0.ɵɵelementStart(9, "span", 199);
961
+ i0.ɵɵelementStart(9, "span", 168);
951
962
  i0.ɵɵtext(10, "Runs");
952
963
  i0.ɵɵelementEnd()();
953
- i0.ɵɵtemplate(11, TestFormComponentExtended_div_65_div_2_div_19_div_5_div_11_Template, 5, 5, "div", 200)(12, TestFormComponentExtended_div_65_div_2_div_19_div_5_div_12_Template, 5, 1, "div", 200);
954
- i0.ɵɵelementStart(13, "div", 197)(14, "span", 198);
964
+ i0.ɵɵconditionalCreate(11, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_11_Template, 5, 5, "div", 166);
965
+ i0.ɵɵconditionalCreate(12, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_12_Template, 5, 1, "div", 166);
966
+ i0.ɵɵelementStart(13, "div", 166)(14, "span", 167);
955
967
  i0.ɵɵtext(15);
956
968
  i0.ɵɵelementEnd();
957
- i0.ɵɵelementStart(16, "span", 199);
969
+ i0.ɵɵelementStart(16, "span", 168);
958
970
  i0.ɵɵtext(17, "Avg Duration");
959
971
  i0.ɵɵelementEnd()();
960
- i0.ɵɵelementStart(18, "div", 197)(19, "span", 198);
972
+ i0.ɵɵelementStart(18, "div", 166)(19, "span", 167);
961
973
  i0.ɵɵtext(20);
962
974
  i0.ɵɵelementEnd();
963
- i0.ɵɵelementStart(21, "span", 199);
975
+ i0.ɵɵelementStart(21, "span", 168);
964
976
  i0.ɵɵtext(22, "Avg Cost");
965
977
  i0.ɵɵelementEnd()();
966
- i0.ɵɵtemplate(23, TestFormComponentExtended_div_65_div_2_div_19_div_5_div_23_Template, 5, 1, "div", 200);
978
+ i0.ɵɵconditionalCreate(23, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Conditional_23_Template, 5, 1, "div", 166);
967
979
  i0.ɵɵelementEnd();
968
- i0.ɵɵelement(24, "i", 201);
980
+ i0.ɵɵelement(24, "i", 169);
969
981
  i0.ɵɵelementEnd();
970
982
  } if (rf & 2) {
971
983
  const suite_r14 = ctx.$implicit;
@@ -973,36 +985,36 @@ function TestFormComponentExtended_div_65_div_2_div_19_div_5_Template(rf, ctx) {
973
985
  i0.ɵɵadvance(3);
974
986
  i0.ɵɵtextInterpolate(suite_r14.suiteName);
975
987
  i0.ɵɵadvance();
976
- i0.ɵɵproperty("ngIf", suite_r14.tags.length > 0);
988
+ i0.ɵɵconditional(suite_r14.tags.length > 0 ? 4 : -1);
977
989
  i0.ɵɵadvance(4);
978
990
  i0.ɵɵtextInterpolate(suite_r14.totalRuns);
979
991
  i0.ɵɵadvance(3);
980
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
992
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 11 : -1);
981
993
  i0.ɵɵadvance();
982
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto);
994
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto ? 12 : -1);
983
995
  i0.ɵɵadvance(3);
984
996
  i0.ɵɵtextInterpolate(ctx_r0.formatDuration(suite_r14.avgDuration));
985
997
  i0.ɵɵadvance(5);
986
998
  i0.ɵɵtextInterpolate(ctx_r0.formatCost(suite_r14.avgCost));
987
999
  i0.ɵɵadvance(3);
988
- i0.ɵɵproperty("ngIf", suite_r14.lastRun);
1000
+ i0.ɵɵconditional(suite_r14.lastRun ? 23 : -1);
989
1001
  } }
990
- function TestFormComponentExtended_div_65_div_2_div_19_Template(rf, ctx) { if (rf & 1) {
991
- i0.ɵɵelementStart(0, "div", 170)(1, "h3");
1002
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1003
+ i0.ɵɵelementStart(0, "div", 135)(1, "h3");
992
1004
  i0.ɵɵelement(2, "i", 30);
993
1005
  i0.ɵɵtext(3, " Performance by Suite");
994
1006
  i0.ɵɵelementEnd();
995
- i0.ɵɵelementStart(4, "div", 190);
996
- i0.ɵɵtemplate(5, TestFormComponentExtended_div_65_div_2_div_19_div_5_Template, 25, 8, "div", 191);
1007
+ i0.ɵɵelementStart(4, "div", 159);
1008
+ i0.ɵɵrepeaterCreate(5, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_For_6_Template, 25, 8, "div", 160, i0.ɵɵrepeaterTrackByIdentity);
997
1009
  i0.ɵɵelementEnd()();
998
1010
  } if (rf & 2) {
999
1011
  const ctx_r0 = i0.ɵɵnextContext(3);
1000
1012
  i0.ɵɵadvance(5);
1001
- i0.ɵɵproperty("ngForOf", ctx_r0.suitePerformance);
1013
+ i0.ɵɵrepeater(ctx_r0.suitePerformance);
1002
1014
  } }
1003
- function TestFormComponentExtended_div_65_div_2_div_20_Template(rf, ctx) { if (rf & 1) {
1015
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1004
1016
  const _r16 = i0.ɵɵgetCurrentView();
1005
- i0.ɵɵelementStart(0, "div", 133)(1, "div", 134);
1017
+ i0.ɵɵelementStart(0, "div", 80)(1, "div", 115);
1006
1018
  i0.ɵɵelement(2, "i", 31);
1007
1019
  i0.ɵɵelementEnd();
1008
1020
  i0.ɵɵelementStart(3, "h4");
@@ -1012,38 +1024,41 @@ function TestFormComponentExtended_div_65_div_2_div_20_Template(rf, ctx) { if (r
1012
1024
  i0.ɵɵtext(6, "Run this test to start building history and analytics data.");
1013
1025
  i0.ɵɵelementEnd();
1014
1026
  i0.ɵɵelementStart(7, "button", 18);
1015
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_65_div_2_div_20_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r16); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.runTest()); });
1027
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_20_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r16); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.runTest()); });
1016
1028
  i0.ɵɵelement(8, "i", 19);
1017
1029
  i0.ɵɵtext(9, " Run Test Now ");
1018
1030
  i0.ɵɵelementEnd()();
1019
1031
  } }
1020
- function TestFormComponentExtended_div_65_div_2_Template(rf, ctx) { if (rf & 1) {
1032
+ function TestFormComponentExtended_Conditional_65_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1021
1033
  const _r11 = i0.ɵɵgetCurrentView();
1022
- i0.ɵɵelementStart(0, "div", 150)(1, "div", 151)(2, "div", 152)(3, "span", 153);
1034
+ i0.ɵɵelementStart(0, "div", 126)(1, "div", 128)(2, "div", 129)(3, "span", 130);
1023
1035
  i0.ɵɵtext(4, "Time Range:");
1024
1036
  i0.ɵɵelementEnd();
1025
- i0.ɵɵelementStart(5, "button", 154);
1026
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_65_div_2_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setHistoryTimeRange("7d")); });
1037
+ i0.ɵɵelementStart(5, "button", 131);
1038
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_65_Conditional_2_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setHistoryTimeRange("7d")); });
1027
1039
  i0.ɵɵtext(6, "7 Days");
1028
1040
  i0.ɵɵelementEnd();
1029
- i0.ɵɵelementStart(7, "button", 154);
1030
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_65_div_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setHistoryTimeRange("30d")); });
1041
+ i0.ɵɵelementStart(7, "button", 131);
1042
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_65_Conditional_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setHistoryTimeRange("30d")); });
1031
1043
  i0.ɵɵtext(8, "30 Days");
1032
1044
  i0.ɵɵelementEnd();
1033
- i0.ɵɵelementStart(9, "button", 154);
1034
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_65_div_2_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setHistoryTimeRange("90d")); });
1045
+ i0.ɵɵelementStart(9, "button", 131);
1046
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_65_Conditional_2_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setHistoryTimeRange("90d")); });
1035
1047
  i0.ɵɵtext(10, "90 Days");
1036
1048
  i0.ɵɵelementEnd();
1037
- i0.ɵɵelementStart(11, "button", 154);
1038
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_65_div_2_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setHistoryTimeRange("all")); });
1049
+ i0.ɵɵelementStart(11, "button", 131);
1050
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_65_Conditional_2_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setHistoryTimeRange("all")); });
1039
1051
  i0.ɵɵtext(12, "All Time");
1040
1052
  i0.ɵɵelementEnd()();
1041
- i0.ɵɵelementStart(13, "div", 155)(14, "button", 20);
1042
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_65_div_2_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.exportHistoryToCSV()); });
1043
- i0.ɵɵelement(15, "i", 156);
1053
+ i0.ɵɵelementStart(13, "div", 132)(14, "button", 20);
1054
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_65_Conditional_2_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.exportHistoryToCSV()); });
1055
+ i0.ɵɵelement(15, "i", 133);
1044
1056
  i0.ɵɵtext(16, " Export CSV ");
1045
1057
  i0.ɵɵelementEnd()()();
1046
- i0.ɵɵtemplate(17, TestFormComponentExtended_div_65_div_2_div_17_Template, 27, 5, "div", 157)(18, TestFormComponentExtended_div_65_div_2_div_18_Template, 22, 5, "div", 158)(19, TestFormComponentExtended_div_65_div_2_div_19_Template, 6, 1, "div", 158)(20, TestFormComponentExtended_div_65_div_2_div_20_Template, 10, 0, "div", 87);
1058
+ i0.ɵɵconditionalCreate(17, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_17_Template, 27, 5, "div", 134);
1059
+ i0.ɵɵconditionalCreate(18, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_18_Template, 23, 4, "div", 135);
1060
+ i0.ɵɵconditionalCreate(19, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_19_Template, 7, 0, "div", 135);
1061
+ i0.ɵɵconditionalCreate(20, TestFormComponentExtended_Conditional_65_Conditional_2_Conditional_20_Template, 10, 0, "div", 80);
1047
1062
  i0.ɵɵelementEnd();
1048
1063
  } if (rf & 2) {
1049
1064
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -1058,56 +1073,57 @@ function TestFormComponentExtended_div_65_div_2_Template(rf, ctx) { if (rf & 1)
1058
1073
  i0.ɵɵadvance(3);
1059
1074
  i0.ɵɵproperty("disabled", ctx_r0.historyData.length === 0);
1060
1075
  i0.ɵɵadvance(3);
1061
- i0.ɵɵproperty("ngIf", ctx_r0.historyData.length > 0);
1076
+ i0.ɵɵconditional(ctx_r0.historyData.length > 0 ? 17 : -1);
1062
1077
  i0.ɵɵadvance();
1063
- i0.ɵɵproperty("ngIf", ctx_r0.historyData.length > 0);
1078
+ i0.ɵɵconditional(ctx_r0.historyData.length > 0 ? 18 : -1);
1064
1079
  i0.ɵɵadvance();
1065
- i0.ɵɵproperty("ngIf", ctx_r0.suitePerformance.length > 0);
1080
+ i0.ɵɵconditional(ctx_r0.suitePerformance.length > 0 ? 19 : -1);
1066
1081
  i0.ɵɵadvance();
1067
- i0.ɵɵproperty("ngIf", ctx_r0.historyData.length === 0);
1082
+ i0.ɵɵconditional(ctx_r0.historyData.length === 0 ? 20 : -1);
1068
1083
  } }
1069
- function TestFormComponentExtended_div_65_Template(rf, ctx) { if (rf & 1) {
1070
- i0.ɵɵelementStart(0, "div", 147);
1071
- i0.ɵɵtemplate(1, TestFormComponentExtended_div_65_div_1_Template, 2, 0, "div", 85)(2, TestFormComponentExtended_div_65_div_2_Template, 21, 13, "div", 148);
1084
+ function TestFormComponentExtended_Conditional_65_Template(rf, ctx) { if (rf & 1) {
1085
+ i0.ɵɵelementStart(0, "div", 37);
1086
+ i0.ɵɵconditionalCreate(1, TestFormComponentExtended_Conditional_65_Conditional_1_Template, 2, 0, "div", 78);
1087
+ i0.ɵɵconditionalCreate(2, TestFormComponentExtended_Conditional_65_Conditional_2_Template, 21, 13, "div", 126);
1072
1088
  i0.ɵɵelementEnd();
1073
1089
  } if (rf & 2) {
1074
1090
  const ctx_r0 = i0.ɵɵnextContext();
1075
1091
  i0.ɵɵadvance();
1076
- i0.ɵɵproperty("ngIf", ctx_r0.loadingHistory);
1092
+ i0.ɵɵconditional(ctx_r0.loadingHistory ? 1 : -1);
1077
1093
  i0.ɵɵadvance();
1078
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingHistory && ctx_r0.historyLoaded);
1094
+ i0.ɵɵconditional(!ctx_r0.loadingHistory && ctx_r0.historyLoaded ? 2 : -1);
1079
1095
  } }
1080
- function TestFormComponentExtended_div_68_Template(rf, ctx) { if (rf & 1) {
1096
+ function TestFormComponentExtended_Conditional_68_Template(rf, ctx) { if (rf & 1) {
1081
1097
  const _r17 = i0.ɵɵgetCurrentView();
1082
- i0.ɵɵelementStart(0, "div", 208)(1, "div", 209);
1098
+ i0.ɵɵelementStart(0, "div", 40)(1, "div", 173);
1083
1099
  i0.ɵɵelement(2, "i", 39);
1084
1100
  i0.ɵɵtext(3, " Shortcuts ");
1085
- i0.ɵɵelementStart(4, "button", 210);
1086
- i0.ɵɵlistener("click", function TestFormComponentExtended_div_68_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleShortcuts()); });
1087
- i0.ɵɵelement(5, "i", 211);
1101
+ i0.ɵɵelementStart(4, "button", 174);
1102
+ i0.ɵɵlistener("click", function TestFormComponentExtended_Conditional_68_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleShortcuts()); });
1103
+ i0.ɵɵelement(5, "i", 175);
1088
1104
  i0.ɵɵelementEnd()();
1089
- i0.ɵɵelementStart(6, "div", 212)(7, "div", 213)(8, "span");
1105
+ i0.ɵɵelementStart(6, "div", 176)(7, "div", 177)(8, "span");
1090
1106
  i0.ɵɵtext(9, "Refresh");
1091
1107
  i0.ɵɵelementEnd();
1092
- i0.ɵɵelementStart(10, "span", 214)(11, "kbd");
1108
+ i0.ɵɵelementStart(10, "span", 178)(11, "kbd");
1093
1109
  i0.ɵɵtext(12, "Cmd");
1094
1110
  i0.ɵɵelementEnd();
1095
1111
  i0.ɵɵelementStart(13, "kbd");
1096
1112
  i0.ɵɵtext(14, "R");
1097
1113
  i0.ɵɵelementEnd()()();
1098
- i0.ɵɵelementStart(15, "div", 213)(16, "span");
1114
+ i0.ɵɵelementStart(15, "div", 177)(16, "span");
1099
1115
  i0.ɵɵtext(17, "Run Test");
1100
1116
  i0.ɵɵelementEnd();
1101
- i0.ɵɵelementStart(18, "span", 214)(19, "kbd");
1117
+ i0.ɵɵelementStart(18, "span", 178)(19, "kbd");
1102
1118
  i0.ɵɵtext(20, "Cmd");
1103
1119
  i0.ɵɵelementEnd();
1104
1120
  i0.ɵɵelementStart(21, "kbd");
1105
1121
  i0.ɵɵtext(22, "Enter");
1106
1122
  i0.ɵɵelementEnd()()();
1107
- i0.ɵɵelementStart(23, "div", 213)(24, "span");
1123
+ i0.ɵɵelementStart(23, "div", 177)(24, "span");
1108
1124
  i0.ɵɵtext(25, "Switch Tabs");
1109
1125
  i0.ɵɵelementEnd();
1110
- i0.ɵɵelementStart(26, "span", 214)(27, "kbd");
1126
+ i0.ɵɵelementStart(26, "span", 178)(27, "kbd");
1111
1127
  i0.ɵɵtext(28, "1");
1112
1128
  i0.ɵɵelementEnd();
1113
1129
  i0.ɵɵtext(29, "-");
@@ -1118,14 +1134,8 @@ function TestFormComponentExtended_div_68_Template(rf, ctx) { if (rf & 1) {
1118
1134
  /** Settings key for keyboard shortcuts visibility */
1119
1135
  const SHORTCUTS_SETTINGS_KEY = '__mj.Testing.ShowKeyboardShortcuts';
1120
1136
  let TestFormComponentExtended = class TestFormComponentExtended extends TestFormComponent {
1121
- constructor(elementRef, sharedService, router, route, cdr, testingDialogService, evalPrefsService, viewContainerRef, appManager) {
1122
- super(elementRef, sharedService, router, route, cdr);
1123
- this.router = router;
1124
- this.cdr = cdr;
1125
- this.testingDialogService = testingDialogService;
1126
- this.evalPrefsService = evalPrefsService;
1127
- this.viewContainerRef = viewContainerRef;
1128
- this.appManager = appManager;
1137
+ constructor() {
1138
+ super(...arguments);
1129
1139
  this.destroy$ = new Subject();
1130
1140
  // UI state
1131
1141
  this.activeTab = 'overview';
@@ -1162,6 +1172,12 @@ let TestFormComponentExtended = class TestFormComponentExtended extends TestForm
1162
1172
  this.metadata = new Metadata();
1163
1173
  // Evaluation preferences
1164
1174
  this.evalPreferences = { showExecution: true, showHuman: true, showAuto: false };
1175
+ // Service injections
1176
+ this.navigationService = inject(NavigationService);
1177
+ this.testingDialogService = inject(TestingDialogService);
1178
+ this.evalPrefsService = inject(EvaluationPreferencesService);
1179
+ this.viewContainerRef = inject(ViewContainerRef);
1180
+ this.appManager = inject(ApplicationManager);
1165
1181
  }
1166
1182
  async ngOnInit() {
1167
1183
  await super.ngOnInit();
@@ -1832,10 +1848,10 @@ let TestFormComponentExtended = class TestFormComponentExtended extends TestForm
1832
1848
  console.warn('Failed to save shortcuts setting:', error);
1833
1849
  }
1834
1850
  }
1835
- static { this.ɵfac = function TestFormComponentExtended_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestFormComponentExtended)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.TestingDialogService), i0.ɵɵdirectiveInject(i3.EvaluationPreferencesService), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i4.ApplicationManager)); }; }
1851
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵTestFormComponentExtended_BaseFactory; return function TestFormComponentExtended_Factory(__ngFactoryType__) { return (ɵTestFormComponentExtended_BaseFactory || (ɵTestFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(TestFormComponentExtended)))(__ngFactoryType__ || TestFormComponentExtended); }; })(); }
1836
1852
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestFormComponentExtended, selectors: [["mj-test-form"]], hostBindings: function TestFormComponentExtended_HostBindings(rf, ctx) { if (rf & 1) {
1837
- i0.ɵɵlistener("keydown", function TestFormComponentExtended_keydown_HostBindingHandler($event) { return ctx.handleKeyboardShortcut($event); }, false, i0.ɵɵresolveDocument);
1838
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 69, vars: 37, consts: [["kendoDialogContainer", "", 1, "test-form"], [1, "test-header"], ["aria-label", "Breadcrumb", 1, "breadcrumb"], ["href", "javascript:void(0)", 3, "click"], [1, "fas", "fa-vial"], [1, "breadcrumb-text"], [1, "current"], [1, "fas", "fa-chevron-right", "separator"], [1, "fas", "fa-flask"], [1, "header-content"], [1, "header-left"], [1, "test-icon"], [1, "test-info"], [1, "test-meta"], [1, "status-badge", 3, "ngClass"], [1, "fas", 3, "ngClass"], ["class", "test-type", 4, "ngIf"], [1, "header-actions"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "fas", "fa-play"], ["kendoButton", "", 3, "click", "disabled"], ["class", "test-description", 4, "ngIf"], ["class", "metrics-bar", 4, "ngIf"], [1, "tabs-container"], ["role", "tablist", 1, "tabs"], ["role", "tab", 1, "tab", 3, "click"], [1, "fas", "fa-th-large"], [1, "fas", "fa-sliders-h"], [1, "fas", "fa-history"], ["class", "tab-badge", 4, "ngIf"], [1, "fas", "fa-layer-group"], [1, "fas", "fa-chart-line"], [1, "tab-content"], ["class", "overview-tab", 4, "ngIf"], ["class", "config-tab", 4, "ngIf"], ["class", "runs-tab", 4, "ngIf"], ["class", "suites-tab", 4, "ngIf"], ["class", "history-tab", 4, "ngIf"], [1, "shortcuts-toggle", 3, "click", "title"], [1, "fas", "fa-keyboard"], ["class", "keyboard-shortcuts", 4, "ngIf"], [1, "test-type"], [1, "fas", "fa-tag"], [1, "test-description"], [1, "metrics-bar"], [1, "metric-card"], [1, "metric-label"], [1, "metric-value"], [1, "metric-progress"], [1, "metric-progress-fill"], [1, "tab-badge"], [1, "overview-tab"], [1, "info-section"], [1, "fas", "fa-info-circle"], [1, "info-grid"], [1, "info-item"], [1, "info-label"], [1, "info-value"], [1, "status-badge-inline", 3, "ngClass"], [1, "json-section"], [1, "fas", "fa-code"], [1, "json-tabs"], [1, "json-tab", 3, "click"], [1, "fas", "fa-sign-in-alt"], [1, "fas", "fa-check-double"], [1, "fas", "fa-cog"], [1, "fas", "fa-tags"], [1, "code-editor-container"], ["language", "json", 3, "value", "readonly", "toolbar", "lineWrapping"], [1, "config-tab"], [1, "config-section"], [1, "fas", "fa-cogs"], [1, "config-grid"], [1, "config-item"], ["type", "number", "placeholder", "Lower = Higher Priority", 1, "config-input", 3, "ngModelChange", "ngModel"], ["type", "number", "min", "1", 1, "config-input", 3, "ngModelChange", "ngModel"], ["type", "number", 1, "config-input", 3, "ngModelChange", "ngModel"], ["type", "number", "step", "0.000001", 1, "config-input", 3, "ngModelChange", "ngModel"], [1, "config-item", "full-width"], ["type", "number", "placeholder", "Default: 300000 (5 min)", 1, "config-input", 3, "ngModelChange", "ngModel"], [1, "config-hint"], [1, "config-editor-container"], ["language", "json", 3, "change", "value", "readonly", "lineWrapping"], [1, "config-editor-container", "small"], [1, "runs-tab"], ["class", "loading-state", 4, "ngIf"], ["class", "runs-list", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], [1, "loading-state"], [1, "skeleton-list"], ["class", "skeleton-card", 4, "ngFor", "ngForOf"], [1, "skeleton-card"], [1, "skeleton-icon"], [1, "skeleton-content"], [1, "skeleton-line", "wide"], [1, "skeleton-line", "narrow"], [1, "runs-list"], ["class", "run-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "run-item", 3, "click"], [1, "run-icon"], [1, "fas"], [1, "run-content"], [1, "run-header"], [1, "run-id"], [1, "run-status"], [1, "run-meta"], [1, "fas", "fa-calendar"], [4, "ngIf"], [3, "entityName", "recordId", 4, "ngIf"], [1, "run-eval-stack"], ["class", "eval-pill status-pill", 3, "ngClass", "title", 4, "ngIf"], ["class", "run-tags", 4, "ngIf"], [1, "fas", "fa-chevron-right"], [1, "fas", "fa-clock"], [1, "fas", "fa-dollar-sign"], [3, "entityName", "recordId"], [1, "eval-pill", "status-pill", 3, "ngClass", "title"], ["class", "eval-pill human-pill no-feedback", "title", "Human Review: No rating submitted yet", 4, "ngIf"], ["class", "eval-pill human-pill has-feedback", 3, "rating-low", "rating-medium", "rating-good", "rating-excellent", "title", 4, "ngIf"], ["title", "Human Review: No rating submitted yet", 1, "eval-pill", "human-pill", "no-feedback"], [1, "fas", "fa-user-slash"], [1, "eval-pill", "human-pill", "has-feedback", 3, "title"], [1, "fas", "fa-user"], ["class", "eval-pill auto-pill no-score", "title", "Auto Score: No automated score available", 4, "ngIf"], ["class", "eval-pill auto-pill has-score", 3, "score-low", "score-medium", "score-good", "score-excellent", "title", 4, "ngIf"], ["title", "Auto Score: No automated score available", 1, "eval-pill", "auto-pill", "no-score"], [1, "fas", "fa-robot"], [1, "eval-pill", "auto-pill", "has-score", 3, "title"], [1, "run-tags"], ["class", "run-tag", 4, "ngFor", "ngForOf"], ["class", "run-tag-more", 4, "ngIf"], [1, "run-tag"], [1, "run-tag-more"], [1, "empty-state"], [1, "empty-icon"], [1, "fas", "fa-play-circle"], [1, "suites-tab"], ["class", "suites-list", 4, "ngIf"], [1, "suites-list"], ["class", "suite-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "suite-item", 3, "click"], [1, "suite-icon"], [1, "suite-content"], [1, "suite-name"], [1, "suite-meta"], [1, "fas", "fa-sort-numeric-up"], [1, "fas", "fa-folder-open"], [1, "history-tab"], ["class", "history-content", 4, "ngIf"], ["text", "Loading history..."], [1, "history-content"], [1, "history-filters"], [1, "time-range-filters"], [1, "filter-label"], [1, "filter-btn", 3, "click"], [1, "history-actions"], [1, "fas", "fa-download"], ["class", "history-kpi-cards", 4, "ngIf"], ["class", "history-section", 4, "ngIf"], [1, "history-kpi-cards"], [1, "kpi-card"], [1, "kpi-icon"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], ["class", "kpi-card", 4, "ngIf"], [1, "kpi-icon", "pass-rate"], [1, "fas", "fa-percentage"], [1, "fas", "trend-icon"], [1, "fas", "fa-star"], [1, "history-section"], [1, "fas", "fa-calendar-alt"], [1, "history-table-container"], [1, "history-table"], [4, "ngFor", "ngForOf"], [1, "date-cell"], [1, "runs-cell"], ["class", "passed-cell", 4, "ngIf"], ["class", "failed-cell", 4, "ngIf"], ["class", "pass-rate-cell", 4, "ngIf"], ["class", "score-cell", 4, "ngIf"], [1, "duration-cell"], [1, "cost-cell"], [1, "passed-cell"], [1, "failed-cell"], [1, "pass-rate-cell"], [1, "pass-rate-bar"], [1, "pass-rate-fill"], [1, "pass-rate-text"], [1, "score-cell"], [1, "suite-performance-list"], ["class", "suite-perf-card", 3, "click", 4, "ngFor", "ngForOf"], [1, "suite-perf-card", 3, "click"], [1, "suite-perf-header"], [1, "suite-perf-name"], ["class", "suite-perf-tags", 4, "ngIf"], [1, "suite-perf-stats"], [1, "suite-stat"], [1, "stat-value"], [1, "stat-label"], ["class", "suite-stat", 4, "ngIf"], [1, "fas", "fa-chevron-right", "suite-perf-arrow"], [1, "suite-perf-tags"], ["class", "tag-mini", 4, "ngFor", "ngForOf"], ["class", "tag-more", 4, "ngIf"], [1, "tag-mini"], [1, "tag-more"], [1, "stat-value", "pass-rate"], [1, "keyboard-shortcuts"], [1, "shortcuts-header"], ["title", "Hide shortcuts", 1, "shortcuts-close", 3, "click"], [1, "fas", "fa-times"], [1, "shortcut-list"], [1, "shortcut-item"], [1, "shortcut-keys"]], template: function TestFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
1853
+ i0.ɵɵlistener("keydown", function TestFormComponentExtended_keydown_HostBindingHandler($event) { return ctx.handleKeyboardShortcut($event); }, i0.ɵɵresolveDocument);
1854
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 69, vars: 37, consts: [["kendoDialogContainer", "", 1, "test-form"], [1, "test-header"], ["aria-label", "Breadcrumb", 1, "breadcrumb"], ["href", "javascript:void(0)", 3, "click"], [1, "fas", "fa-vial"], [1, "breadcrumb-text"], [1, "current"], [1, "fas", "fa-chevron-right", "separator"], [1, "fas", "fa-flask"], [1, "header-content"], [1, "header-left"], [1, "test-icon"], [1, "test-info"], [1, "test-meta"], [1, "status-badge", 3, "ngClass"], [1, "fas", 3, "ngClass"], [1, "test-type"], [1, "header-actions"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "fas", "fa-play"], ["kendoButton", "", 3, "click", "disabled"], [1, "test-description"], [1, "metrics-bar"], [1, "tabs-container"], ["role", "tablist", 1, "tabs"], ["role", "tab", 1, "tab", 3, "click"], [1, "fas", "fa-th-large"], [1, "fas", "fa-sliders-h"], [1, "fas", "fa-history"], [1, "tab-badge"], [1, "fas", "fa-layer-group"], [1, "fas", "fa-chart-line"], [1, "tab-content"], [1, "overview-tab"], [1, "config-tab"], [1, "runs-tab"], [1, "suites-tab"], [1, "history-tab"], [1, "shortcuts-toggle", 3, "click", "title"], [1, "fas", "fa-keyboard"], [1, "keyboard-shortcuts"], [1, "fas", "fa-tag"], [1, "metric-card"], [1, "metric-label"], [1, "metric-value"], [1, "metric-progress"], [1, "metric-progress-fill"], [1, "info-section"], [1, "fas", "fa-info-circle"], [1, "info-grid"], [1, "info-item"], [1, "info-label"], [1, "info-value"], [1, "status-badge-inline", 3, "ngClass"], [1, "json-section"], [1, "fas", "fa-code"], [1, "json-tabs"], [1, "json-tab", 3, "click"], [1, "fas", "fa-sign-in-alt"], [1, "fas", "fa-check-double"], [1, "fas", "fa-cog"], [1, "fas", "fa-tags"], [1, "code-editor-container"], ["language", "json", 3, "value", "readonly", "toolbar", "lineWrapping"], [1, "config-section"], [1, "fas", "fa-cogs"], [1, "config-grid"], [1, "config-item"], ["type", "number", "placeholder", "Lower = Higher Priority", 1, "config-input", 3, "ngModelChange", "ngModel"], ["type", "number", "min", "1", 1, "config-input", 3, "ngModelChange", "ngModel"], ["type", "number", 1, "config-input", 3, "ngModelChange", "ngModel"], ["type", "number", "step", "0.000001", 1, "config-input", 3, "ngModelChange", "ngModel"], [1, "config-item", "full-width"], ["type", "number", "placeholder", "Default: 300000 (5 min)", 1, "config-input", 3, "ngModelChange", "ngModel"], [1, "config-hint"], [1, "config-editor-container"], ["language", "json", 3, "change", "value", "readonly", "lineWrapping"], [1, "config-editor-container", "small"], [1, "loading-state"], [1, "runs-list"], [1, "empty-state"], [1, "skeleton-list"], [1, "skeleton-card"], [1, "skeleton-icon"], [1, "skeleton-content"], [1, "skeleton-line", "wide"], [1, "skeleton-line", "narrow"], [1, "run-item"], [1, "run-item", 3, "click"], [1, "run-icon"], [1, "fas"], [1, "run-content"], [1, "run-header"], [1, "run-id"], [1, "run-status"], [1, "run-meta"], [1, "fas", "fa-calendar"], [3, "entityName", "recordId"], [1, "run-eval-stack"], [1, "eval-pill", "status-pill", 3, "ngClass", "title"], [1, "run-tags"], [1, "fas", "fa-chevron-right"], [1, "fas", "fa-clock"], [1, "fas", "fa-dollar-sign"], ["title", "Human Review: No rating submitted yet", 1, "eval-pill", "human-pill", "no-feedback"], [1, "eval-pill", "human-pill", "has-feedback", 3, "rating-low", "rating-medium", "rating-good", "rating-excellent", "title"], [1, "fas", "fa-user-slash"], [1, "eval-pill", "human-pill", "has-feedback", 3, "title"], [1, "fas", "fa-user"], ["title", "Auto Score: No automated score available", 1, "eval-pill", "auto-pill", "no-score"], [1, "eval-pill", "auto-pill", "has-score", 3, "score-low", "score-medium", "score-good", "score-excellent", "title"], [1, "fas", "fa-robot"], [1, "eval-pill", "auto-pill", "has-score", 3, "title"], [1, "run-tag"], [1, "run-tag-more"], [1, "empty-icon"], [1, "fas", "fa-play-circle"], [1, "suites-list"], [1, "suite-item"], [1, "suite-item", 3, "click"], [1, "suite-icon"], [1, "suite-content"], [1, "suite-name"], [1, "suite-meta"], [1, "fas", "fa-sort-numeric-up"], [1, "fas", "fa-folder-open"], [1, "history-content"], ["text", "Loading history..."], [1, "history-filters"], [1, "time-range-filters"], [1, "filter-label"], [1, "filter-btn", 3, "click"], [1, "history-actions"], [1, "fas", "fa-download"], [1, "history-kpi-cards"], [1, "history-section"], [1, "kpi-card"], [1, "kpi-icon"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", "pass-rate"], [1, "fas", "fa-percentage"], [1, "fas", "trend-icon"], [1, "fas", "fa-star"], [1, "fas", "fa-calendar-alt"], [1, "history-table-container"], [1, "history-table"], [1, "date-cell"], [1, "runs-cell"], [1, "passed-cell"], [1, "failed-cell"], [1, "pass-rate-cell"], [1, "score-cell"], [1, "duration-cell"], [1, "cost-cell"], [1, "pass-rate-bar"], [1, "pass-rate-fill"], [1, "pass-rate-text"], [1, "suite-performance-list"], [1, "suite-perf-card"], [1, "suite-perf-card", 3, "click"], [1, "suite-perf-header"], [1, "suite-perf-name"], [1, "suite-perf-tags"], [1, "suite-perf-stats"], [1, "suite-stat"], [1, "stat-value"], [1, "stat-label"], [1, "fas", "fa-chevron-right", "suite-perf-arrow"], [1, "tag-mini"], [1, "tag-more"], [1, "stat-value", "pass-rate"], [1, "shortcuts-header"], ["title", "Hide shortcuts", 1, "shortcuts-close", 3, "click"], [1, "fas", "fa-times"], [1, "shortcut-list"], [1, "shortcut-item"], [1, "shortcut-keys"]], template: function TestFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
1839
1855
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "nav", 2)(3, "ol")(4, "li")(5, "a", 3);
1840
1856
  i0.ɵɵlistener("click", function TestFormComponentExtended_Template_a_click_5_listener() { return ctx.navigateToTestingDashboard(); });
1841
1857
  i0.ɵɵelement(6, "i", 4);
@@ -1857,7 +1873,7 @@ let TestFormComponentExtended = class TestFormComponentExtended extends TestForm
1857
1873
  i0.ɵɵelement(23, "i", 15);
1858
1874
  i0.ɵɵtext(24);
1859
1875
  i0.ɵɵelementEnd();
1860
- i0.ɵɵtemplate(25, TestFormComponentExtended_span_25_Template, 3, 1, "span", 16);
1876
+ i0.ɵɵconditionalCreate(25, TestFormComponentExtended_Conditional_25_Template, 3, 1, "span", 16);
1861
1877
  i0.ɵɵelementEnd()()();
1862
1878
  i0.ɵɵelementStart(26, "div", 17);
1863
1879
  i0.ɵɵelement(27, "app-evaluation-mode-toggle");
@@ -1871,7 +1887,8 @@ let TestFormComponentExtended = class TestFormComponentExtended extends TestForm
1871
1887
  i0.ɵɵelement(32, "i", 15);
1872
1888
  i0.ɵɵtext(33);
1873
1889
  i0.ɵɵelementEnd()()();
1874
- i0.ɵɵtemplate(34, TestFormComponentExtended_div_34_Template, 3, 1, "div", 21)(35, TestFormComponentExtended_div_35_Template, 23, 6, "div", 22);
1890
+ i0.ɵɵconditionalCreate(34, TestFormComponentExtended_Conditional_34_Template, 3, 1, "div", 21);
1891
+ i0.ɵɵconditionalCreate(35, TestFormComponentExtended_Conditional_35_Template, 23, 6, "div", 22);
1875
1892
  i0.ɵɵelementEnd();
1876
1893
  i0.ɵɵelementStart(36, "div", 23)(37, "div", 24)(38, "button", 25);
1877
1894
  i0.ɵɵlistener("click", function TestFormComponentExtended_Template_button_click_38_listener() { return ctx.changeTab("overview"); });
@@ -1891,7 +1908,7 @@ let TestFormComponentExtended = class TestFormComponentExtended extends TestForm
1891
1908
  i0.ɵɵelementStart(48, "span");
1892
1909
  i0.ɵɵtext(49, "Runs");
1893
1910
  i0.ɵɵelementEnd();
1894
- i0.ɵɵtemplate(50, TestFormComponentExtended_span_50_Template, 2, 1, "span", 29);
1911
+ i0.ɵɵconditionalCreate(50, TestFormComponentExtended_Conditional_50_Template, 2, 1, "span", 29);
1895
1912
  i0.ɵɵelementEnd();
1896
1913
  i0.ɵɵelementStart(51, "button", 25);
1897
1914
  i0.ɵɵlistener("click", function TestFormComponentExtended_Template_button_click_51_listener() { return ctx.changeTab("suites"); });
@@ -1899,7 +1916,7 @@ let TestFormComponentExtended = class TestFormComponentExtended extends TestForm
1899
1916
  i0.ɵɵelementStart(53, "span");
1900
1917
  i0.ɵɵtext(54, "Test Suites");
1901
1918
  i0.ɵɵelementEnd();
1902
- i0.ɵɵtemplate(55, TestFormComponentExtended_span_55_Template, 2, 1, "span", 29);
1919
+ i0.ɵɵconditionalCreate(55, TestFormComponentExtended_Conditional_55_Template, 2, 1, "span", 29);
1903
1920
  i0.ɵɵelementEnd();
1904
1921
  i0.ɵɵelementStart(56, "button", 25);
1905
1922
  i0.ɵɵlistener("click", function TestFormComponentExtended_Template_button_click_56_listener() { return ctx.changeTab("analytics"); });
@@ -1908,13 +1925,17 @@ let TestFormComponentExtended = class TestFormComponentExtended extends TestForm
1908
1925
  i0.ɵɵtext(59, "Analytics");
1909
1926
  i0.ɵɵelementEnd()()()();
1910
1927
  i0.ɵɵelementStart(60, "div", 32);
1911
- i0.ɵɵtemplate(61, TestFormComponentExtended_div_61_Template, 78, 29, "div", 33)(62, TestFormComponentExtended_div_62_Template, 52, 17, "div", 34)(63, TestFormComponentExtended_div_63_Template, 4, 3, "div", 35)(64, TestFormComponentExtended_div_64_Template, 4, 3, "div", 36)(65, TestFormComponentExtended_div_65_Template, 3, 2, "div", 37);
1928
+ i0.ɵɵconditionalCreate(61, TestFormComponentExtended_Conditional_61_Template, 78, 29, "div", 33);
1929
+ i0.ɵɵconditionalCreate(62, TestFormComponentExtended_Conditional_62_Template, 52, 17, "div", 34);
1930
+ i0.ɵɵconditionalCreate(63, TestFormComponentExtended_Conditional_63_Template, 4, 3, "div", 35);
1931
+ i0.ɵɵconditionalCreate(64, TestFormComponentExtended_Conditional_64_Template, 4, 3, "div", 36);
1932
+ i0.ɵɵconditionalCreate(65, TestFormComponentExtended_Conditional_65_Template, 3, 2, "div", 37);
1912
1933
  i0.ɵɵelementEnd();
1913
1934
  i0.ɵɵelementStart(66, "button", 38);
1914
1935
  i0.ɵɵlistener("click", function TestFormComponentExtended_Template_button_click_66_listener() { return ctx.toggleShortcuts(); });
1915
1936
  i0.ɵɵelement(67, "i", 39);
1916
1937
  i0.ɵɵelementEnd();
1917
- i0.ɵɵtemplate(68, TestFormComponentExtended_div_68_Template, 32, 0, "div", 40);
1938
+ i0.ɵɵconditionalCreate(68, TestFormComponentExtended_Conditional_68_Template, 32, 0, "div", 40);
1918
1939
  i0.ɵɵelementEnd();
1919
1940
  } if (rf & 2) {
1920
1941
  i0.ɵɵadvance(13);
@@ -1930,7 +1951,7 @@ let TestFormComponentExtended = class TestFormComponentExtended extends TestForm
1930
1951
  i0.ɵɵadvance();
1931
1952
  i0.ɵɵtextInterpolate1(" ", ctx.record.Status, " ");
1932
1953
  i0.ɵɵadvance();
1933
- i0.ɵɵproperty("ngIf", ctx.record.Type);
1954
+ i0.ɵɵconditional(ctx.record.Type ? 25 : -1);
1934
1955
  i0.ɵɵadvance(6);
1935
1956
  i0.ɵɵproperty("disabled", ctx.isRefreshing);
1936
1957
  i0.ɵɵadvance();
@@ -1938,9 +1959,9 @@ let TestFormComponentExtended = class TestFormComponentExtended extends TestForm
1938
1959
  i0.ɵɵadvance();
1939
1960
  i0.ɵɵtextInterpolate1(" ", ctx.isRefreshing ? "Refreshing..." : "Refresh", " ");
1940
1961
  i0.ɵɵadvance();
1941
- i0.ɵɵproperty("ngIf", ctx.record.Description);
1962
+ i0.ɵɵconditional(ctx.record.Description ? 34 : -1);
1942
1963
  i0.ɵɵadvance();
1943
- i0.ɵɵproperty("ngIf", ctx.testRunsLoaded && ctx.testRuns.length > 0);
1964
+ i0.ɵɵconditional(ctx.testRunsLoaded && ctx.testRuns.length > 0 ? 35 : -1);
1944
1965
  i0.ɵɵadvance(3);
1945
1966
  i0.ɵɵclassProp("active", ctx.activeTab === "overview");
1946
1967
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "overview");
@@ -1951,30 +1972,30 @@ let TestFormComponentExtended = class TestFormComponentExtended extends TestForm
1951
1972
  i0.ɵɵclassProp("active", ctx.activeTab === "runs");
1952
1973
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "runs");
1953
1974
  i0.ɵɵadvance(4);
1954
- i0.ɵɵproperty("ngIf", ctx.testRunsLoaded);
1975
+ i0.ɵɵconditional(ctx.testRunsLoaded ? 50 : -1);
1955
1976
  i0.ɵɵadvance();
1956
1977
  i0.ɵɵclassProp("active", ctx.activeTab === "suites");
1957
1978
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "suites");
1958
1979
  i0.ɵɵadvance(4);
1959
- i0.ɵɵproperty("ngIf", ctx.suiteTestsLoaded);
1980
+ i0.ɵɵconditional(ctx.suiteTestsLoaded ? 55 : -1);
1960
1981
  i0.ɵɵadvance();
1961
1982
  i0.ɵɵclassProp("active", ctx.activeTab === "analytics");
1962
1983
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "analytics");
1963
1984
  i0.ɵɵadvance(5);
1964
- i0.ɵɵproperty("ngIf", ctx.activeTab === "overview");
1985
+ i0.ɵɵconditional(ctx.activeTab === "overview" ? 61 : -1);
1965
1986
  i0.ɵɵadvance();
1966
- i0.ɵɵproperty("ngIf", ctx.activeTab === "config");
1987
+ i0.ɵɵconditional(ctx.activeTab === "config" ? 62 : -1);
1967
1988
  i0.ɵɵadvance();
1968
- i0.ɵɵproperty("ngIf", ctx.activeTab === "runs");
1989
+ i0.ɵɵconditional(ctx.activeTab === "runs" ? 63 : -1);
1969
1990
  i0.ɵɵadvance();
1970
- i0.ɵɵproperty("ngIf", ctx.activeTab === "suites");
1991
+ i0.ɵɵconditional(ctx.activeTab === "suites" ? 64 : -1);
1971
1992
  i0.ɵɵadvance();
1972
- i0.ɵɵproperty("ngIf", ctx.activeTab === "analytics");
1993
+ i0.ɵɵconditional(ctx.activeTab === "analytics" ? 65 : -1);
1973
1994
  i0.ɵɵadvance();
1974
1995
  i0.ɵɵproperty("title", ctx.showShortcuts ? "Hide keyboard shortcuts" : "Show keyboard shortcuts");
1975
1996
  i0.ɵɵadvance(2);
1976
- i0.ɵɵproperty("ngIf", ctx.showShortcuts);
1977
- } }, dependencies: [i5.NgClass, i5.NgForOf, i5.NgIf, i6.DefaultValueAccessor, i6.NumberValueAccessor, i6.NgControlStatus, i6.MinValidator, i6.NgModel, i7.DialogContainerDirective, i8.ButtonComponent, i9.CodeEditorComponent, i3.EvaluationModeToggleComponent, i10.LoadingComponent, i11.EntityLinkPillComponent, i5.DatePipe], styles: ["\n\n\n\n\n\n\n\n[_nghost-%COMP%] {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-primary-dark: #1d4ed8;\n --test-success: #10b981;\n --test-success-light: #d1fae5;\n --test-error: #ef4444;\n --test-error-light: #fee2e2;\n --test-warning: #f59e0b;\n --test-warning-light: #fef3c7;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n\n\n.breadcrumb[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: var(--test-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n margin: 0 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .current[_ngcontent-%COMP%] {\n color: var(--test-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text[_ngcontent-%COMP%] {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.test-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n\n\n\n\n.test-header[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n\n\n.test-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.test-icon[_ngcontent-%COMP%]:hover {\n transform: scale(1.05);\n}\n\n\n\n.test-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.test-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n word-wrap: break-word;\n}\n\n.test-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active[_ngcontent-%COMP%] { background: var(--test-success); }\n.status-badge-inline.status-disabled[_ngcontent-%COMP%] { background: var(--test-disabled); }\n.status-badge-inline.status-pending[_ngcontent-%COMP%] { background: var(--test-warning); }\n\n.test-type[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.header-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n\n\n.test-description[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n margin-bottom: 16px;\n border: 1px solid var(--test-border);\n}\n\n.test-description[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 14px;\n text-align: center;\n transition: var(--test-transition);\n}\n\n.metric-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n margin-bottom: 6px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n}\n\n\n\n.metric-progress[_ngcontent-%COMP%] {\n margin-top: 8px;\n height: 4px;\n background: var(--test-border);\n border-radius: 2px;\n overflow: hidden;\n}\n\n.metric-progress-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: linear-gradient(90deg, var(--test-success) 0%, #34d399 100%);\n border-radius: 2px;\n transition: width 0.5s ease-out;\n}\n\n\n\n\n\n.tabs-container[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.tabs[_ngcontent-%COMP%]::-webkit-scrollbar {\n display: none;\n}\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 15px;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--test-border);\n color: var(--test-text-secondary);\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n transition: var(--test-transition);\n}\n\n.tab.active[_ngcontent-%COMP%] .tab-badge[_ngcontent-%COMP%] {\n background: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\n margin-left: 4px;\n}\n\n\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n scroll-behavior: smooth;\n}\n\n\n\n\n\n.overview-tab[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n\n\n.info-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--test-text);\n word-wrap: break-word;\n font-weight: 500;\n}\n\n\n\n.json-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.json-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.json-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n margin-bottom: 16px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n flex-wrap: wrap;\n}\n\n.json-tab[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 100px;\n padding: 10px 14px;\n border: none;\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n border-radius: var(--test-radius-sm);\n transition: var(--test-transition);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.json-tab[_ngcontent-%COMP%]:hover {\n color: var(--test-text);\n background: rgba(0, 0, 0, 0.05);\n}\n\n.json-tab.active[_ngcontent-%COMP%] {\n background: var(--test-surface);\n color: var(--test-primary);\n font-weight: 600;\n box-shadow: var(--test-shadow-sm);\n}\n\n.json-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.code-editor-container[_ngcontent-%COMP%] {\n border-radius: var(--test-radius-md);\n overflow: hidden;\n border: 1px solid var(--test-border);\n min-height: 200px;\n max-height: 400px;\n}\n\n\n\n\n\n.config-tab[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.config-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 20px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.config-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n background: var(--test-surface);\n}\n\n.config-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-input[_ngcontent-%COMP%]::placeholder {\n color: var(--test-text-muted);\n}\n\n.config-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--test-text-muted);\n margin-top: 4px;\n}\n\n.config-editor-container[_ngcontent-%COMP%] {\n border-radius: var(--test-radius-md);\n overflow: hidden;\n border: 1px solid var(--test-border);\n min-height: 200px;\n}\n\n.config-editor-container.small[_ngcontent-%COMP%] {\n min-height: 100px;\n max-height: 150px;\n}\n\n\n\n\n\n.runs-tab[_ngcontent-%COMP%], \n.suites-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n.skeleton-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n flex-shrink: 0;\n}\n\n.skeleton-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line[_ngcontent-%COMP%] {\n height: 14px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide[_ngcontent-%COMP%] { width: 70%; }\n.skeleton-line.narrow[_ngcontent-%COMP%] { width: 40%; }\n\n@keyframes _ngcontent-%COMP%_shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n\n\n.runs-list[_ngcontent-%COMP%], \n.suites-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.run-item[_ngcontent-%COMP%], \n.suite-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-item[_ngcontent-%COMP%]:hover, \n.suite-item[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n box-shadow: var(--test-shadow-sm);\n}\n\n.run-icon[_ngcontent-%COMP%], \n.suite-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.suite-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.run-content[_ngcontent-%COMP%], \n.suite-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-status[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.suite-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-meta[_ngcontent-%COMP%], \n.suite-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--test-text-secondary);\n flex-wrap: wrap;\n}\n\n.run-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%], \n.suite-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.suite-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 11px;\n}\n\n.run-item[_ngcontent-%COMP%] > i.fa-chevron-right[_ngcontent-%COMP%], \n.suite-item[_ngcontent-%COMP%] > i.fa-chevron-right[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.run-item[_ngcontent-%COMP%]:hover > i.fa-chevron-right[_ngcontent-%COMP%], \n.suite-item[_ngcontent-%COMP%]:hover > i.fa-chevron-right[_ngcontent-%COMP%] {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n\n\n.run-eval-stack[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n flex-wrap: wrap;\n}\n\n\n\n.eval-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border-radius: 16px;\n font-size: 11px;\n font-weight: 600;\n transition: var(--test-transition);\n}\n\n.eval-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.eval-pill.status-pill.status-passed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.eval-pill.status-pill.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.status-pill.status-error[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.status-pill.status-timeout[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.status-pill.status-skipped[_ngcontent-%COMP%], \n.eval-pill.status-pill.status-pending[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-pill.status-pill.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #2563eb;\n}\n\n\n\n.eval-pill.human-pill.no-feedback[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n padding: 4px 8px;\n}\n\n.eval-pill.human-pill.has-feedback.rating-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.human-pill.has-feedback.rating-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.human-pill.has-feedback.rating-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.eval-pill.human-pill.has-feedback.rating-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.eval-pill.auto-pill.no-score[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n padding: 4px 8px;\n}\n\n.eval-pill.auto-pill.has-score.score-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.auto-pill.has-score.score-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.auto-pill.has-score.score-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.eval-pill.auto-pill.has-score.score-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n flex-wrap: wrap;\n}\n\n.run-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: rgba(37, 99, 235, 0.1);\n color: var(--test-primary);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.run-tag-more[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: var(--test-border);\n color: var(--test-text-muted);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n}\n\n\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--test-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\n}\n\n\n\n.no-data[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--test-text-muted);\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.no-data[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.no-data[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n\n\n\n\n.shortcuts-toggle[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle[_ngcontent-%COMP%]:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n color: var(--test-text-secondary);\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close[_ngcontent-%COMP%]:hover {\n color: var(--test-text);\n background: var(--test-border);\n}\n\n.shortcut-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.shortcut-keys[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys[_ngcontent-%COMP%] kbd[_ngcontent-%COMP%] {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n font-size: 11px;\n color: var(--test-text);\n}\n\n\n\n\n\n@media (max-width: 1024px) {\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .info-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .config-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .keyboard-shortcuts[_ngcontent-%COMP%], .shortcuts-toggle[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n\n\n\n\n@media (max-width: 768px) {\n .test-form[_ngcontent-%COMP%] {\n height: auto;\n min-height: 100%;\n }\n\n .test-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-left[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .test-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n font-size: 20px;\n }\n\n .test-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .test-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n\n .status-badge[_ngcontent-%COMP%] {\n padding: 4px 10px;\n font-size: 11px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n gap: 10px;\n }\n\n .metric-card[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .metric-value[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .tabs[_ngcontent-%COMP%] {\n padding: 0 12px;\n }\n\n .tab[_ngcontent-%COMP%] {\n padding: 12px 14px;\n font-size: 13px;\n gap: 6px;\n }\n\n .tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n }\n\n .tab-shortcut[_ngcontent-%COMP%] {\n display: none;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .info-section[_ngcontent-%COMP%], \n .json-section[_ngcontent-%COMP%], \n .config-section[_ngcontent-%COMP%] {\n padding: 18px;\n }\n\n .info-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .json-tabs[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .json-tab[_ngcontent-%COMP%] {\n min-width: 0;\n justify-content: flex-start;\n }\n\n .run-item[_ngcontent-%COMP%], \n .suite-item[_ngcontent-%COMP%] {\n padding: 14px;\n }\n\n .run-icon[_ngcontent-%COMP%], \n .suite-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: 16px;\n }\n\n .run-meta[_ngcontent-%COMP%], \n .suite-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 4px;\n }\n\n .empty-state[_ngcontent-%COMP%] {\n padding: 40px 20px;\n }\n\n .empty-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n }\n\n .empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 28px;\n }\n}\n\n\n\n\n\n@media (max-width: 480px) {\n .test-header[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .header-left[_ngcontent-%COMP%] {\n gap: 12px;\n }\n\n .test-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: 18px;\n border-radius: 8px;\n }\n\n .test-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 1fr;\n }\n\n .tabs[_ngcontent-%COMP%] {\n padding: 0 8px;\n }\n\n .tab[_ngcontent-%COMP%] {\n padding: 10px 12px;\n font-size: 12px;\n }\n\n .tab-badge[_ngcontent-%COMP%] {\n display: none;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .run-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n }\n}\n\n\n\n\n\n@media (hover: none) and (pointer: coarse) {\n .tab[_ngcontent-%COMP%], \n .json-tab[_ngcontent-%COMP%], \n .run-item[_ngcontent-%COMP%], \n .suite-item[_ngcontent-%COMP%] {\n -webkit-tap-highlight-color: transparent;\n }\n\n .run-item[_ngcontent-%COMP%]:active, \n .suite-item[_ngcontent-%COMP%]:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab[_ngcontent-%COMP%]:active, \n .json-tab[_ngcontent-%COMP%]:active {\n background: rgba(37, 99, 235, 0.1);\n }\n\n \n\n .tab[_ngcontent-%COMP%] {\n min-height: 48px;\n }\n\n .run-item[_ngcontent-%COMP%], \n .suite-item[_ngcontent-%COMP%] {\n min-height: 64px;\n }\n}\n\n\n\n\n\n@media (prefers-reduced-motion: reduce) {\n *[_ngcontent-%COMP%], \n *[_ngcontent-%COMP%]::before, \n *[_ngcontent-%COMP%]::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n\n .skeleton-icon[_ngcontent-%COMP%], \n .skeleton-line[_ngcontent-%COMP%] {\n animation: none;\n background: #e2e8f0;\n }\n}\n\n\n\n\n\n.history-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.history-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n\n\n.history-filters[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n box-shadow: var(--test-shadow-sm);\n}\n\n.time-range-filters[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n margin-right: 4px;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--test-primary-light);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--test-primary);\n color: white;\n border-color: var(--test-primary);\n}\n\n.history-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.history-kpi-cards[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 16px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 18px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, var(--test-primary) 0%, var(--test-primary-dark) 100%);\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-icon.pass-rate[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%);\n}\n\n.kpi-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--test-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 2px;\n}\n\n.trend-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.trend-icon.trend-up[_ngcontent-%COMP%] {\n color: var(--test-success);\n}\n\n.trend-icon.trend-down[_ngcontent-%COMP%] {\n color: var(--test-error);\n}\n\n\n\n.history-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.history-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.history-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n\n\n.history-table-container[_ngcontent-%COMP%] {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.history-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 14px;\n}\n\n.history-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n.history-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: left;\n border-bottom: 1px solid var(--test-border);\n}\n\n.history-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n}\n\n.history-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.03);\n}\n\n.date-cell[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--test-text);\n}\n\n.passed-cell[_ngcontent-%COMP%] {\n color: var(--test-success);\n font-weight: 600;\n}\n\n.failed-cell[_ngcontent-%COMP%] {\n color: var(--test-error);\n font-weight: 600;\n}\n\n.pass-rate-cell[_ngcontent-%COMP%] {\n min-width: 120px;\n}\n\n.pass-rate-bar[_ngcontent-%COMP%] {\n position: relative;\n height: 24px;\n background: var(--test-bg);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.pass-rate-fill[_ngcontent-%COMP%] {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n background: linear-gradient(90deg, var(--test-success) 0%, #34d399 100%);\n border-radius: 12px;\n transition: width 0.5s ease-out;\n}\n\n.pass-rate-text[_ngcontent-%COMP%] {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n font-weight: 700;\n color: var(--test-text);\n z-index: 1;\n}\n\n\n\n.suite-performance-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.suite-perf-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 18px;\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.suite-perf-card[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.suite-perf-header[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.suite-perf-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 6px;\n}\n\n.suite-perf-tags[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.tag-mini[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n background: rgba(37, 99, 235, 0.1);\n color: var(--test-primary);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.tag-more[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n background: var(--test-border);\n color: var(--test-text-muted);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.suite-perf-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.suite-stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.suite-stat[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 700;\n color: var(--test-text);\n}\n\n.suite-stat[_ngcontent-%COMP%] .stat-value.pass-rate.high[_ngcontent-%COMP%] {\n color: var(--test-success);\n}\n\n.suite-stat[_ngcontent-%COMP%] .stat-value.pass-rate.low[_ngcontent-%COMP%] {\n color: var(--test-error);\n}\n\n.suite-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.suite-perf-arrow[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.suite-perf-card[_ngcontent-%COMP%]:hover .suite-perf-arrow[_ngcontent-%COMP%] {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n\n\n\n\n@media print {\n .test-form[_ngcontent-%COMP%] {\n background: white;\n height: auto;\n }\n\n .header-actions[_ngcontent-%COMP%], \n .tabs-container[_ngcontent-%COMP%], \n .keyboard-shortcuts[_ngcontent-%COMP%] {\n display: none !important;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n overflow: visible;\n padding: 0;\n }\n\n .info-section[_ngcontent-%COMP%], \n .json-section[_ngcontent-%COMP%], \n .config-section[_ngcontent-%COMP%], \n .empty-state[_ngcontent-%COMP%] {\n break-inside: avoid;\n box-shadow: none;\n border: 1px solid #ddd;\n }\n}"], changeDetection: 0 }); }
1997
+ i0.ɵɵconditional(ctx.showShortcuts ? 68 : -1);
1998
+ } }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.NgControlStatus, i2.MinValidator, i2.NgModel, i3.DialogContainerDirective, i4.ButtonComponent, i5.CodeEditorComponent, i6.EvaluationModeToggleComponent, i7.LoadingComponent, i8.EntityLinkPillComponent, i1.DatePipe], styles: ["\n\n\n\n\n\n\n\n[_nghost-%COMP%] {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-primary-dark: #1d4ed8;\n --test-success: #10b981;\n --test-success-light: #d1fae5;\n --test-error: #ef4444;\n --test-error-light: #fee2e2;\n --test-warning: #f59e0b;\n --test-warning-light: #fef3c7;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n\n\n.breadcrumb[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: var(--test-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n margin: 0 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .current[_ngcontent-%COMP%] {\n color: var(--test-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text[_ngcontent-%COMP%] {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.test-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n\n\n\n\n.test-header[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n\n\n.test-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.test-icon[_ngcontent-%COMP%]:hover {\n transform: scale(1.05);\n}\n\n\n\n.test-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.test-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n word-wrap: break-word;\n}\n\n.test-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active[_ngcontent-%COMP%] { background: var(--test-success); }\n.status-badge-inline.status-disabled[_ngcontent-%COMP%] { background: var(--test-disabled); }\n.status-badge-inline.status-pending[_ngcontent-%COMP%] { background: var(--test-warning); }\n\n.test-type[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.header-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n\n\n.test-description[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n margin-bottom: 16px;\n border: 1px solid var(--test-border);\n}\n\n.test-description[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 14px;\n text-align: center;\n transition: var(--test-transition);\n}\n\n.metric-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n margin-bottom: 6px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n}\n\n\n\n.metric-progress[_ngcontent-%COMP%] {\n margin-top: 8px;\n height: 4px;\n background: var(--test-border);\n border-radius: 2px;\n overflow: hidden;\n}\n\n.metric-progress-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: linear-gradient(90deg, var(--test-success) 0%, #34d399 100%);\n border-radius: 2px;\n transition: width 0.5s ease-out;\n}\n\n\n\n\n\n.tabs-container[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.tabs[_ngcontent-%COMP%]::-webkit-scrollbar {\n display: none;\n}\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 15px;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--test-border);\n color: var(--test-text-secondary);\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n transition: var(--test-transition);\n}\n\n.tab.active[_ngcontent-%COMP%] .tab-badge[_ngcontent-%COMP%] {\n background: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\n margin-left: 4px;\n}\n\n\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n scroll-behavior: smooth;\n}\n\n\n\n\n\n.overview-tab[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n\n\n.info-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--test-text);\n word-wrap: break-word;\n font-weight: 500;\n}\n\n\n\n.json-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.json-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.json-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n margin-bottom: 16px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n flex-wrap: wrap;\n}\n\n.json-tab[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 100px;\n padding: 10px 14px;\n border: none;\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n border-radius: var(--test-radius-sm);\n transition: var(--test-transition);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.json-tab[_ngcontent-%COMP%]:hover {\n color: var(--test-text);\n background: rgba(0, 0, 0, 0.05);\n}\n\n.json-tab.active[_ngcontent-%COMP%] {\n background: var(--test-surface);\n color: var(--test-primary);\n font-weight: 600;\n box-shadow: var(--test-shadow-sm);\n}\n\n.json-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.code-editor-container[_ngcontent-%COMP%] {\n border-radius: var(--test-radius-md);\n overflow: hidden;\n border: 1px solid var(--test-border);\n min-height: 200px;\n max-height: 400px;\n}\n\n\n\n\n\n.config-tab[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.config-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 20px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.config-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n background: var(--test-surface);\n}\n\n.config-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-input[_ngcontent-%COMP%]::placeholder {\n color: var(--test-text-muted);\n}\n\n.config-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--test-text-muted);\n margin-top: 4px;\n}\n\n.config-editor-container[_ngcontent-%COMP%] {\n border-radius: var(--test-radius-md);\n overflow: hidden;\n border: 1px solid var(--test-border);\n min-height: 200px;\n}\n\n.config-editor-container.small[_ngcontent-%COMP%] {\n min-height: 100px;\n max-height: 150px;\n}\n\n\n\n\n\n.runs-tab[_ngcontent-%COMP%], \n.suites-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n.skeleton-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n flex-shrink: 0;\n}\n\n.skeleton-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line[_ngcontent-%COMP%] {\n height: 14px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide[_ngcontent-%COMP%] { width: 70%; }\n.skeleton-line.narrow[_ngcontent-%COMP%] { width: 40%; }\n\n@keyframes _ngcontent-%COMP%_shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n\n\n.runs-list[_ngcontent-%COMP%], \n.suites-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.run-item[_ngcontent-%COMP%], \n.suite-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-item[_ngcontent-%COMP%]:hover, \n.suite-item[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n box-shadow: var(--test-shadow-sm);\n}\n\n.run-icon[_ngcontent-%COMP%], \n.suite-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.suite-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.run-content[_ngcontent-%COMP%], \n.suite-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-status[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.suite-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-meta[_ngcontent-%COMP%], \n.suite-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--test-text-secondary);\n flex-wrap: wrap;\n}\n\n.run-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%], \n.suite-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.suite-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 11px;\n}\n\n.run-item[_ngcontent-%COMP%] > i.fa-chevron-right[_ngcontent-%COMP%], \n.suite-item[_ngcontent-%COMP%] > i.fa-chevron-right[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.run-item[_ngcontent-%COMP%]:hover > i.fa-chevron-right[_ngcontent-%COMP%], \n.suite-item[_ngcontent-%COMP%]:hover > i.fa-chevron-right[_ngcontent-%COMP%] {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n\n\n.run-eval-stack[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n flex-wrap: wrap;\n}\n\n\n\n.eval-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border-radius: 16px;\n font-size: 11px;\n font-weight: 600;\n transition: var(--test-transition);\n}\n\n.eval-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.eval-pill.status-pill.status-passed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.eval-pill.status-pill.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.status-pill.status-error[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.status-pill.status-timeout[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.status-pill.status-skipped[_ngcontent-%COMP%], \n.eval-pill.status-pill.status-pending[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-pill.status-pill.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #2563eb;\n}\n\n\n\n.eval-pill.human-pill.no-feedback[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n padding: 4px 8px;\n}\n\n.eval-pill.human-pill.has-feedback.rating-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.human-pill.has-feedback.rating-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.human-pill.has-feedback.rating-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.eval-pill.human-pill.has-feedback.rating-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.eval-pill.auto-pill.no-score[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n padding: 4px 8px;\n}\n\n.eval-pill.auto-pill.has-score.score-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.auto-pill.has-score.score-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.auto-pill.has-score.score-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.eval-pill.auto-pill.has-score.score-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n flex-wrap: wrap;\n}\n\n.run-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: rgba(37, 99, 235, 0.1);\n color: var(--test-primary);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.run-tag-more[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: var(--test-border);\n color: var(--test-text-muted);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n}\n\n\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--test-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\n}\n\n\n\n.no-data[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--test-text-muted);\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.no-data[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.no-data[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\n\n\n\n\n.shortcuts-toggle[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle[_ngcontent-%COMP%]:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n color: var(--test-text-secondary);\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close[_ngcontent-%COMP%]:hover {\n color: var(--test-text);\n background: var(--test-border);\n}\n\n.shortcut-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.shortcut-keys[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys[_ngcontent-%COMP%] kbd[_ngcontent-%COMP%] {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n font-size: 11px;\n color: var(--test-text);\n}\n\n\n\n\n\n@media (max-width: 1024px) {\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .info-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .config-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .keyboard-shortcuts[_ngcontent-%COMP%], .shortcuts-toggle[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n\n\n\n\n@media (max-width: 768px) {\n .test-form[_ngcontent-%COMP%] {\n height: auto;\n min-height: 100%;\n }\n\n .test-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-left[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .test-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n font-size: 20px;\n }\n\n .test-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .test-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n\n .status-badge[_ngcontent-%COMP%] {\n padding: 4px 10px;\n font-size: 11px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n gap: 10px;\n }\n\n .metric-card[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .metric-value[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .tabs[_ngcontent-%COMP%] {\n padding: 0 12px;\n }\n\n .tab[_ngcontent-%COMP%] {\n padding: 12px 14px;\n font-size: 13px;\n gap: 6px;\n }\n\n .tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n }\n\n .tab-shortcut[_ngcontent-%COMP%] {\n display: none;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .info-section[_ngcontent-%COMP%], \n .json-section[_ngcontent-%COMP%], \n .config-section[_ngcontent-%COMP%] {\n padding: 18px;\n }\n\n .info-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .json-tabs[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .json-tab[_ngcontent-%COMP%] {\n min-width: 0;\n justify-content: flex-start;\n }\n\n .run-item[_ngcontent-%COMP%], \n .suite-item[_ngcontent-%COMP%] {\n padding: 14px;\n }\n\n .run-icon[_ngcontent-%COMP%], \n .suite-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: 16px;\n }\n\n .run-meta[_ngcontent-%COMP%], \n .suite-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 4px;\n }\n\n .empty-state[_ngcontent-%COMP%] {\n padding: 40px 20px;\n }\n\n .empty-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n }\n\n .empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 28px;\n }\n}\n\n\n\n\n\n@media (max-width: 480px) {\n .test-header[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .header-left[_ngcontent-%COMP%] {\n gap: 12px;\n }\n\n .test-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: 18px;\n border-radius: 8px;\n }\n\n .test-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 1fr;\n }\n\n .tabs[_ngcontent-%COMP%] {\n padding: 0 8px;\n }\n\n .tab[_ngcontent-%COMP%] {\n padding: 10px 12px;\n font-size: 12px;\n }\n\n .tab-badge[_ngcontent-%COMP%] {\n display: none;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .run-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n }\n}\n\n\n\n\n\n@media (hover: none) and (pointer: coarse) {\n .tab[_ngcontent-%COMP%], \n .json-tab[_ngcontent-%COMP%], \n .run-item[_ngcontent-%COMP%], \n .suite-item[_ngcontent-%COMP%] {\n -webkit-tap-highlight-color: transparent;\n }\n\n .run-item[_ngcontent-%COMP%]:active, \n .suite-item[_ngcontent-%COMP%]:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab[_ngcontent-%COMP%]:active, \n .json-tab[_ngcontent-%COMP%]:active {\n background: rgba(37, 99, 235, 0.1);\n }\n\n \n\n .tab[_ngcontent-%COMP%] {\n min-height: 48px;\n }\n\n .run-item[_ngcontent-%COMP%], \n .suite-item[_ngcontent-%COMP%] {\n min-height: 64px;\n }\n}\n\n\n\n\n\n@media (prefers-reduced-motion: reduce) {\n *[_ngcontent-%COMP%], \n *[_ngcontent-%COMP%]::before, \n *[_ngcontent-%COMP%]::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n\n .skeleton-icon[_ngcontent-%COMP%], \n .skeleton-line[_ngcontent-%COMP%] {\n animation: none;\n background: #e2e8f0;\n }\n}\n\n\n\n\n\n.history-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.history-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n\n\n.history-filters[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n box-shadow: var(--test-shadow-sm);\n}\n\n.time-range-filters[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n margin-right: 4px;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--test-primary-light);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--test-primary);\n color: white;\n border-color: var(--test-primary);\n}\n\n.history-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.history-kpi-cards[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 16px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 18px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, var(--test-primary) 0%, var(--test-primary-dark) 100%);\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-icon.pass-rate[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%);\n}\n\n.kpi-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--test-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 2px;\n}\n\n.trend-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.trend-icon.trend-up[_ngcontent-%COMP%] {\n color: var(--test-success);\n}\n\n.trend-icon.trend-down[_ngcontent-%COMP%] {\n color: var(--test-error);\n}\n\n\n\n.history-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.history-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.history-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n\n\n.history-table-container[_ngcontent-%COMP%] {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.history-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 14px;\n}\n\n.history-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n.history-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: left;\n border-bottom: 1px solid var(--test-border);\n}\n\n.history-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n}\n\n.history-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.03);\n}\n\n.date-cell[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--test-text);\n}\n\n.passed-cell[_ngcontent-%COMP%] {\n color: var(--test-success);\n font-weight: 600;\n}\n\n.failed-cell[_ngcontent-%COMP%] {\n color: var(--test-error);\n font-weight: 600;\n}\n\n.pass-rate-cell[_ngcontent-%COMP%] {\n min-width: 120px;\n}\n\n.pass-rate-bar[_ngcontent-%COMP%] {\n position: relative;\n height: 24px;\n background: var(--test-bg);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.pass-rate-fill[_ngcontent-%COMP%] {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n background: linear-gradient(90deg, var(--test-success) 0%, #34d399 100%);\n border-radius: 12px;\n transition: width 0.5s ease-out;\n}\n\n.pass-rate-text[_ngcontent-%COMP%] {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n font-weight: 700;\n color: var(--test-text);\n z-index: 1;\n}\n\n\n\n.suite-performance-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.suite-perf-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 18px;\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.suite-perf-card[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.suite-perf-header[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.suite-perf-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 6px;\n}\n\n.suite-perf-tags[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.tag-mini[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n background: rgba(37, 99, 235, 0.1);\n color: var(--test-primary);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.tag-more[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n background: var(--test-border);\n color: var(--test-text-muted);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.suite-perf-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.suite-stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.suite-stat[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 700;\n color: var(--test-text);\n}\n\n.suite-stat[_ngcontent-%COMP%] .stat-value.pass-rate.high[_ngcontent-%COMP%] {\n color: var(--test-success);\n}\n\n.suite-stat[_ngcontent-%COMP%] .stat-value.pass-rate.low[_ngcontent-%COMP%] {\n color: var(--test-error);\n}\n\n.suite-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.suite-perf-arrow[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.suite-perf-card[_ngcontent-%COMP%]:hover .suite-perf-arrow[_ngcontent-%COMP%] {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n\n\n\n\n@media print {\n .test-form[_ngcontent-%COMP%] {\n background: white;\n height: auto;\n }\n\n .header-actions[_ngcontent-%COMP%], \n .tabs-container[_ngcontent-%COMP%], \n .keyboard-shortcuts[_ngcontent-%COMP%] {\n display: none !important;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n overflow: visible;\n padding: 0;\n }\n\n .info-section[_ngcontent-%COMP%], \n .json-section[_ngcontent-%COMP%], \n .config-section[_ngcontent-%COMP%], \n .empty-state[_ngcontent-%COMP%] {\n break-inside: avoid;\n box-shadow: none;\n border: 1px solid #ddd;\n }\n}"], changeDetection: 0 }); }
1978
1999
  };
1979
2000
  TestFormComponentExtended = __decorate([
1980
2001
  RegisterClass(BaseFormComponent, 'MJ: Tests')
@@ -1982,14 +2003,10 @@ TestFormComponentExtended = __decorate([
1982
2003
  export { TestFormComponentExtended };
1983
2004
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestFormComponentExtended, [{
1984
2005
  type: Component,
1985
- args: [{ selector: 'mj-test-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"test-form\" kendoDialogContainer>\n <!-- Header Section -->\n <div class=\"test-header\">\n <!-- Breadcrumb Navigation -->\n <nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n <ol>\n <li>\n <a href=\"javascript:void(0)\" (click)=\"navigateToTestingDashboard()\">\n <i class=\"fas fa-vial\"></i>\n <span class=\"breadcrumb-text\">Testing</span>\n </a>\n </li>\n <li class=\"current\">\n <i class=\"fas fa-chevron-right separator\"></i>\n <i class=\"fas fa-flask\"></i>\n <span>{{ record.Name }}</span>\n </li>\n </ol>\n </nav>\n\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"test-icon\" [style.background-color]=\"getStatusColor()\">\n <i class=\"fas fa-flask\"></i>\n </div>\n <div class=\"test-info\">\n <h1>{{ record.Name }}</h1>\n <div class=\"test-meta\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass()\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n {{ record.Status }}\n </span>\n <span class=\"test-type\" *ngIf=\"record.Type\">\n <i class=\"fas fa-tag\"></i>\n {{ record.Type }}\n </span>\n </div>\n </div>\n </div>\n <div class=\"header-actions\">\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n <button kendoButton (click)=\"runTest()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Test\n </button>\n <button kendoButton (click)=\"refresh()\" [disabled]=\"isRefreshing\">\n <i class=\"fas\" [ngClass]=\"isRefreshing ? 'fa-sync fa-spin' : 'fa-sync'\"></i>\n {{ isRefreshing ? 'Refreshing...' : 'Refresh' }}\n </button>\n </div>\n </div>\n\n <!-- Test Description -->\n <div class=\"test-description\" *ngIf=\"record.Description\">\n <p>{{ record.Description }}</p>\n </div>\n\n <!-- Metrics Bar -->\n <div class=\"metrics-bar\" *ngIf=\"testRunsLoaded && testRuns.length > 0\">\n <div class=\"metric-card\">\n <div class=\"metric-label\">Total Runs</div>\n <div class=\"metric-value\">{{ testRuns.length }}</div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Pass Rate</div>\n <div class=\"metric-value\">{{ getPassRate().toFixed(1) }}%</div>\n <div class=\"metric-progress\">\n <div class=\"metric-progress-fill\" [style.width.%]=\"getPassRate()\"></div>\n </div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Avg Cost</div>\n <div class=\"metric-value\">{{ formatCost(getAverageCost()) }}</div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Avg Duration</div>\n <div class=\"metric-value\">{{ formatDuration(getAverageDuration()) }}</div>\n </div>\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs-container\">\n <div class=\"tabs\" role=\"tablist\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 'overview'\"\n (click)=\"changeTab('overview')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'overview'\">\n <i class=\"fas fa-th-large\"></i>\n <span>Overview</span>\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'config'\"\n (click)=\"changeTab('config')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'config'\">\n <i class=\"fas fa-sliders-h\"></i>\n <span>Configuration</span>\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'runs'\"\n (click)=\"changeTab('runs')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'runs'\">\n <i class=\"fas fa-history\"></i>\n <span>Runs</span>\n <span class=\"tab-badge\" *ngIf=\"testRunsLoaded\">{{ testRuns.length }}</span>\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'suites'\"\n (click)=\"changeTab('suites')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'suites'\">\n <i class=\"fas fa-layer-group\"></i>\n <span>Test Suites</span>\n <span class=\"tab-badge\" *ngIf=\"suiteTestsLoaded\">{{ suiteTests.length }}</span>\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'analytics'\"\n (click)=\"changeTab('analytics')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'analytics'\">\n <i class=\"fas fa-chart-line\"></i>\n <span>Analytics</span>\n </button>\n </div>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Overview Tab -->\n <div class=\"overview-tab\" *ngIf=\"activeTab === 'overview'\">\n <!-- Basic Information -->\n <div class=\"info-section\">\n <h3><i class=\"fas fa-info-circle\"></i> Test Information</h3>\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <div class=\"info-label\">Name</div>\n <div class=\"info-value\">{{ record.Name }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Type</div>\n <div class=\"info-value\">{{ record.Type || 'N/A' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Status</div>\n <div class=\"info-value\">\n <span class=\"status-badge-inline\" [ngClass]=\"getStatusClass()\">{{ record.Status }}</span>\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Priority</div>\n <div class=\"info-value\">{{ record.Priority || 'N/A' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Estimated Duration</div>\n <div class=\"info-value\">{{ record.EstimatedDurationSeconds ? formatDuration(record.EstimatedDurationSeconds) : 'N/A' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Estimated Cost</div>\n <div class=\"info-value\">{{ record.EstimatedCostUSD ? formatCost(record.EstimatedCostUSD) : 'N/A' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Repeat Count</div>\n <div class=\"info-value\">{{ record.RepeatCount || 1 }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Max Execution Time</div>\n <div class=\"info-value\">{{ formatTimeout(record.MaxExecutionTimeMS) }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Created</div>\n <div class=\"info-value\">{{ record.__mj_CreatedAt | date:'medium' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Updated</div>\n <div class=\"info-value\">{{ record.__mj_UpdatedAt | date:'medium' }}</div>\n </div>\n </div>\n </div>\n\n <!-- JSON Data Views -->\n <div class=\"json-section\">\n <h3><i class=\"fas fa-code\"></i> Test Definition</h3>\n <div class=\"json-tabs\">\n <button class=\"json-tab\"\n [class.active]=\"activeJsonView === 'input'\"\n (click)=\"setJsonView('input')\">\n <i class=\"fas fa-sign-in-alt\"></i>\n Input Definition\n </button>\n <button class=\"json-tab\"\n [class.active]=\"activeJsonView === 'expected'\"\n (click)=\"setJsonView('expected')\">\n <i class=\"fas fa-check-double\"></i>\n Expected Outcomes\n </button>\n <button class=\"json-tab\"\n [class.active]=\"activeJsonView === 'config'\"\n (click)=\"setJsonView('config')\">\n <i class=\"fas fa-cog\"></i>\n Configuration\n </button>\n <button class=\"json-tab\"\n [class.active]=\"activeJsonView === 'tags'\"\n (click)=\"setJsonView('tags')\">\n <i class=\"fas fa-tags\"></i>\n Tags\n </button>\n </div>\n <div class=\"code-editor-container\">\n <mj-code-editor\n [value]=\"getJsonData()\"\n language=\"json\"\n [readonly]=\"true\"\n [toolbar]=\"jsonToolbar\"\n [lineWrapping]=\"true\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n\n <!-- Configuration Tab -->\n <div class=\"config-tab\" *ngIf=\"activeTab === 'config'\">\n <div class=\"config-section\">\n <h3><i class=\"fas fa-cogs\"></i> Execution Settings</h3>\n <div class=\"config-grid\">\n <div class=\"config-item\">\n <label>Priority</label>\n <input type=\"number\" [(ngModel)]=\"record.Priority\" class=\"config-input\" placeholder=\"Lower = Higher Priority\" />\n </div>\n <div class=\"config-item\">\n <label>Repeat Count</label>\n <input type=\"number\" [(ngModel)]=\"record.RepeatCount\" class=\"config-input\" min=\"1\" />\n </div>\n <div class=\"config-item\">\n <label>Estimated Duration (seconds)</label>\n <input type=\"number\" [(ngModel)]=\"record.EstimatedDurationSeconds\" class=\"config-input\" />\n </div>\n <div class=\"config-item\">\n <label>Estimated Cost (USD)</label>\n <input type=\"number\" step=\"0.000001\" [(ngModel)]=\"record.EstimatedCostUSD\" class=\"config-input\" />\n </div>\n <div class=\"config-item full-width\">\n <label>Max Execution Time (ms)</label>\n <input type=\"number\" [(ngModel)]=\"record.MaxExecutionTimeMS\" class=\"config-input\" placeholder=\"Default: 300000 (5 min)\" />\n <span class=\"config-hint\">Leave empty for default 5 minute timeout</span>\n </div>\n </div>\n </div>\n\n <div class=\"config-section\">\n <h3><i class=\"fas fa-sign-in-alt\"></i> Input Definition (JSON)</h3>\n <div class=\"config-editor-container\">\n <mj-code-editor\n [value]=\"record.InputDefinition || ''\"\n language=\"json\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"record.InputDefinition = $event\">\n </mj-code-editor>\n </div>\n </div>\n\n <div class=\"config-section\">\n <h3><i class=\"fas fa-check-double\"></i> Expected Outcomes (JSON)</h3>\n <div class=\"config-editor-container\">\n <mj-code-editor\n [value]=\"record.ExpectedOutcomes || ''\"\n language=\"json\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"record.ExpectedOutcomes = $event\">\n </mj-code-editor>\n </div>\n </div>\n\n <div class=\"config-section\">\n <h3><i class=\"fas fa-cog\"></i> Configuration (JSON)</h3>\n <div class=\"config-editor-container\">\n <mj-code-editor\n [value]=\"record.Configuration || ''\"\n language=\"json\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"record.Configuration = $event\">\n </mj-code-editor>\n </div>\n </div>\n\n <div class=\"config-section\">\n <h3><i class=\"fas fa-tags\"></i> Tags (JSON Array)</h3>\n <div class=\"config-editor-container small\">\n <mj-code-editor\n [value]=\"record.Tags || '[]'\"\n language=\"json\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"record.Tags = $event\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n\n <!-- Test Runs Tab -->\n <div class=\"runs-tab\" *ngIf=\"activeTab === 'runs'\">\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"loadingRuns\">\n <div class=\"skeleton-list\">\n <div class=\"skeleton-card\" *ngFor=\"let i of [1,2,3,4,5]\">\n <div class=\"skeleton-icon\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line wide\"></div>\n <div class=\"skeleton-line narrow\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Runs List -->\n <div class=\"runs-list\" *ngIf=\"!loadingRuns && testRuns.length > 0\">\n <div class=\"run-item\" *ngFor=\"let run of testRuns\" (click)=\"openTestRun(run.ID)\">\n <div class=\"run-icon\" [style.background-color]=\"getRunStatusColor(run.Status)\">\n <i class=\"fas\"\n [class.fa-check]=\"run.Status === 'Passed'\"\n [class.fa-times]=\"run.Status === 'Failed'\"\n [class.fa-exclamation]=\"run.Status === 'Error'\"\n [class.fa-stopwatch]=\"run.Status === 'Timeout'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"></i>\n </div>\n <div class=\"run-content\">\n <div class=\"run-header\">\n <span class=\"run-id\">Run #{{ run.ID.substring(0, 8) }}</span>\n <span class=\"run-status\" [style.color]=\"getRunStatusColor(run.Status)\">{{ run.Status }}</span>\n </div>\n <div class=\"run-meta\">\n <span><i class=\"fas fa-calendar\"></i> {{ getRelativeTime(run.StartedAt) }}</span>\n <span *ngIf=\"run.DurationSeconds\"><i class=\"fas fa-clock\"></i> {{ formatDuration(run.DurationSeconds) }}</span>\n <span *ngIf=\"run.CostUSD\"><i class=\"fas fa-dollar-sign\"></i> {{ formatCost(run.CostUSD) }}</span>\n <mj-entity-link-pill\n *ngIf=\"run.TargetLogEntityID && run.TargetLogID\"\n [entityName]=\"run.TargetLogEntity\"\n [recordId]=\"run.TargetLogID\">\n </mj-entity-link-pill>\n </div>\n <!-- Evaluation indicators -->\n <div class=\"run-eval-stack\">\n <!-- Status indicator -->\n <span class=\"eval-pill status-pill\" *ngIf=\"evalPreferences.showExecution\"\n [ngClass]=\"'status-' + run.Status.toLowerCase()\"\n [title]=\"getStatusTooltip(run.Status)\">\n <i class=\"fas\"\n [class.fa-check]=\"run.Status === 'Passed'\"\n [class.fa-times]=\"run.Status === 'Failed'\"\n [class.fa-exclamation]=\"run.Status === 'Error'\"\n [class.fa-hourglass-end]=\"run.Status === 'Timeout'\"\n [class.fa-forward]=\"run.Status === 'Skipped'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"></i>\n <span>{{ run.Status }}</span>\n </span>\n <!-- Human feedback indicator -->\n <ng-container *ngIf=\"evalPreferences.showHuman\">\n <span class=\"eval-pill human-pill no-feedback\" *ngIf=\"!getFeedbackForRun(run.ID)?.Rating\"\n title=\"Human Review: No rating submitted yet\">\n <i class=\"fas fa-user-slash\"></i>\n </span>\n <span class=\"eval-pill human-pill has-feedback\" *ngIf=\"getFeedbackForRun(run.ID)?.Rating as rating\"\n [class.rating-low]=\"rating <= 4\"\n [class.rating-medium]=\"rating >= 5 && rating <= 6\"\n [class.rating-good]=\"rating >= 7 && rating <= 8\"\n [class.rating-excellent]=\"rating >= 9\"\n [title]=\"getHumanTooltip(rating, getFeedbackForRun(run.ID)?.CorrectionSummary || getFeedbackForRun(run.ID)?.Comments || null)\">\n <i class=\"fas fa-user\"></i>\n <span>{{ rating }}</span>\n </span>\n </ng-container>\n <!-- Auto score indicator -->\n <ng-container *ngIf=\"evalPreferences.showAuto\">\n <span class=\"eval-pill auto-pill no-score\" *ngIf=\"run.Score == null\"\n title=\"Auto Score: No automated score available\">\n <i class=\"fas fa-robot\"></i>\n </span>\n <span class=\"eval-pill auto-pill has-score\" *ngIf=\"run.Score != null\"\n [class.score-low]=\"run.Score < 0.5\"\n [class.score-medium]=\"run.Score >= 0.5 && run.Score < 0.7\"\n [class.score-good]=\"run.Score >= 0.7 && run.Score < 0.85\"\n [class.score-excellent]=\"run.Score >= 0.85\"\n [title]=\"'Auto Score: ' + (run.Score * 100).toFixed(0) + '% automated evaluation'\">\n <i class=\"fas fa-robot\"></i>\n <span>{{ (run.Score * 100).toFixed(0) }}%</span>\n </span>\n </ng-container>\n </div>\n <div class=\"run-tags\" *ngIf=\"getRunTags(run).length > 0\">\n <span class=\"run-tag\" *ngFor=\"let tag of getRunTags(run).slice(0, 3)\">{{ tag }}</span>\n <span class=\"run-tag-more\" *ngIf=\"getRunTags(run).length > 3\">+{{ getRunTags(run).length - 3 }}</span>\n </div>\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"testRunsLoaded && !loadingRuns && testRuns.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-play-circle\"></i>\n </div>\n <h4>No Test Runs Yet</h4>\n <p>Run this test to see execution history and results here.</p>\n <button kendoButton (click)=\"runTest()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Test Now\n </button>\n </div>\n </div>\n\n <!-- Test Suites Tab -->\n <div class=\"suites-tab\" *ngIf=\"activeTab === 'suites'\">\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"loadingSuites\">\n <div class=\"skeleton-list\">\n <div class=\"skeleton-card\" *ngFor=\"let i of [1,2,3]\">\n <div class=\"skeleton-icon\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line wide\"></div>\n <div class=\"skeleton-line narrow\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Suites List -->\n <div class=\"suites-list\" *ngIf=\"!loadingSuites && suiteTests.length > 0\">\n <div class=\"suite-item\" *ngFor=\"let suiteTest of suiteTests\" (click)=\"openTestSuite(suiteTest.SuiteID)\">\n <div class=\"suite-icon\">\n <i class=\"fas fa-layer-group\"></i>\n </div>\n <div class=\"suite-content\">\n <div class=\"suite-name\">{{ suiteTest.Suite }}</div>\n <div class=\"suite-meta\">\n <span><i class=\"fas fa-sort-numeric-up\"></i> Sequence: {{ suiteTest.Sequence }}</span>\n <span *ngIf=\"suiteTest.Status\"><i class=\"fas fa-info-circle\"></i> {{ suiteTest.Status }}</span>\n </div>\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"suiteTestsLoaded && !loadingSuites && suiteTests.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-folder-open\"></i>\n </div>\n <h4>Not Part of Any Suite</h4>\n <p>This test is not included in any test suites. Add it to a suite to run it with other tests.</p>\n </div>\n </div>\n\n <!-- Analytics Tab -->\n <div class=\"history-tab\" *ngIf=\"activeTab === 'analytics'\">\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"loadingHistory\">\n <mj-loading text=\"Loading history...\"></mj-loading>\n </div>\n\n <!-- History Content -->\n <div class=\"history-content\" *ngIf=\"!loadingHistory && historyLoaded\">\n <!-- Filters -->\n <div class=\"history-filters\">\n <div class=\"time-range-filters\">\n <span class=\"filter-label\">Time Range:</span>\n <button class=\"filter-btn\"\n [class.active]=\"historyTimeRange === '7d'\"\n (click)=\"setHistoryTimeRange('7d')\">7 Days</button>\n <button class=\"filter-btn\"\n [class.active]=\"historyTimeRange === '30d'\"\n (click)=\"setHistoryTimeRange('30d')\">30 Days</button>\n <button class=\"filter-btn\"\n [class.active]=\"historyTimeRange === '90d'\"\n (click)=\"setHistoryTimeRange('90d')\">90 Days</button>\n <button class=\"filter-btn\"\n [class.active]=\"historyTimeRange === 'all'\"\n (click)=\"setHistoryTimeRange('all')\">All Time</button>\n </div>\n <div class=\"history-actions\">\n <button kendoButton (click)=\"exportHistoryToCSV()\" [disabled]=\"historyData.length === 0\">\n <i class=\"fas fa-download\"></i> Export CSV\n </button>\n </div>\n </div>\n\n <!-- KPI Cards -->\n <div class=\"history-kpi-cards\" *ngIf=\"historyData.length > 0\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\">\n <i class=\"fas fa-play-circle\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ getTotalRuns() }}</div>\n <div class=\"kpi-label\">Total Runs</div>\n </div>\n </div>\n <div class=\"kpi-card\" *ngIf=\"evalPreferences.showExecution\">\n <div class=\"kpi-icon pass-rate\">\n <i class=\"fas fa-percentage\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">\n {{ getOverallPassRate().toFixed(1) }}%\n <i class=\"fas trend-icon\"\n [class.fa-arrow-up]=\"getPassRateTrend() === 'up'\"\n [class.fa-arrow-down]=\"getPassRateTrend() === 'down'\"\n [class.fa-minus]=\"getPassRateTrend() === 'stable'\"\n [class.trend-up]=\"getPassRateTrend() === 'up'\"\n [class.trend-down]=\"getPassRateTrend() === 'down'\"></i>\n </div>\n <div class=\"kpi-label\">Pass Rate</div>\n </div>\n </div>\n <div class=\"kpi-card\" *ngIf=\"evalPreferences.showAuto\">\n <div class=\"kpi-icon\">\n <i class=\"fas fa-star\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ (getOverallAvgScore() * 100).toFixed(1) }}%</div>\n <div class=\"kpi-label\">Avg Score</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\">\n <i class=\"fas fa-clock\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatDuration(getOverallAvgDuration()) }}</div>\n <div class=\"kpi-label\">Avg Duration</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\">\n <i class=\"fas fa-dollar-sign\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatCost(getOverallAvgCost()) }}</div>\n <div class=\"kpi-label\">Avg Cost</div>\n </div>\n </div>\n </div>\n\n <!-- Daily History Table -->\n <div class=\"history-section\" *ngIf=\"historyData.length > 0\">\n <h3><i class=\"fas fa-calendar-alt\"></i> Daily Performance</h3>\n <div class=\"history-table-container\">\n <table class=\"history-table\">\n <thead>\n <tr>\n <th>Date</th>\n <th>Runs</th>\n <th *ngIf=\"evalPreferences.showExecution\">Passed</th>\n <th *ngIf=\"evalPreferences.showExecution\">Failed</th>\n <th *ngIf=\"evalPreferences.showExecution\">Pass Rate</th>\n <th *ngIf=\"evalPreferences.showAuto\">Avg Score</th>\n <th>Avg Duration</th>\n <th>Avg Cost</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let day of historyData\">\n <td class=\"date-cell\">{{ day.date | date:'mediumDate' }}</td>\n <td class=\"runs-cell\">{{ day.runCount }}</td>\n <td class=\"passed-cell\" *ngIf=\"evalPreferences.showExecution\">{{ day.passCount }}</td>\n <td class=\"failed-cell\" *ngIf=\"evalPreferences.showExecution\">{{ day.failCount }}</td>\n <td class=\"pass-rate-cell\" *ngIf=\"evalPreferences.showExecution\">\n <div class=\"pass-rate-bar\">\n <div class=\"pass-rate-fill\" [style.width.%]=\"day.passRate\"></div>\n <span class=\"pass-rate-text\">{{ day.passRate.toFixed(1) }}%</span>\n </div>\n </td>\n <td class=\"score-cell\" *ngIf=\"evalPreferences.showAuto\">{{ (day.avgScore * 100).toFixed(1) }}%</td>\n <td class=\"duration-cell\">{{ formatDuration(day.avgDuration) }}</td>\n <td class=\"cost-cell\">{{ formatCost(day.avgCost) }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- Suite Performance -->\n <div class=\"history-section\" *ngIf=\"suitePerformance.length > 0\">\n <h3><i class=\"fas fa-layer-group\"></i> Performance by Suite</h3>\n <div class=\"suite-performance-list\">\n <div class=\"suite-perf-card\" *ngFor=\"let suite of suitePerformance\" (click)=\"openSuiteFromHistory(suite.suiteId)\">\n <div class=\"suite-perf-header\">\n <div class=\"suite-perf-name\">{{ suite.suiteName }}</div>\n <div class=\"suite-perf-tags\" *ngIf=\"suite.tags.length > 0\">\n <span class=\"tag-mini\" *ngFor=\"let tag of suite.tags.slice(0, 3)\">{{ tag }}</span>\n <span class=\"tag-more\" *ngIf=\"suite.tags.length > 3\">+{{ suite.tags.length - 3 }}</span>\n </div>\n </div>\n <div class=\"suite-perf-stats\">\n <div class=\"suite-stat\">\n <span class=\"stat-value\">{{ suite.totalRuns }}</span>\n <span class=\"stat-label\">Runs</span>\n </div>\n <div class=\"suite-stat\" *ngIf=\"evalPreferences.showExecution\">\n <span class=\"stat-value pass-rate\" [class.high]=\"suite.passRate >= 80\" [class.low]=\"suite.passRate < 50\">\n {{ suite.passRate.toFixed(1) }}%\n </span>\n <span class=\"stat-label\">Pass Rate</span>\n </div>\n <div class=\"suite-stat\" *ngIf=\"evalPreferences.showAuto\">\n <span class=\"stat-value\">{{ (suite.avgScore * 100).toFixed(1) }}%</span>\n <span class=\"stat-label\">Avg Score</span>\n </div>\n <div class=\"suite-stat\">\n <span class=\"stat-value\">{{ formatDuration(suite.avgDuration) }}</span>\n <span class=\"stat-label\">Avg Duration</span>\n </div>\n <div class=\"suite-stat\">\n <span class=\"stat-value\">{{ formatCost(suite.avgCost) }}</span>\n <span class=\"stat-label\">Avg Cost</span>\n </div>\n <div class=\"suite-stat\" *ngIf=\"suite.lastRun\">\n <span class=\"stat-value\">{{ getRelativeTime(suite.lastRun) }}</span>\n <span class=\"stat-label\">Last Run</span>\n </div>\n </div>\n <i class=\"fas fa-chevron-right suite-perf-arrow\"></i>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"historyData.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-chart-line\"></i>\n </div>\n <h4>No History Available</h4>\n <p>Run this test to start building history and analytics data.</p>\n <button kendoButton (click)=\"runTest()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Test Now\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Keyboard Shortcuts Toggle Button -->\n <button class=\"shortcuts-toggle\" (click)=\"toggleShortcuts()\" [title]=\"showShortcuts ? 'Hide keyboard shortcuts' : 'Show keyboard shortcuts'\">\n <i class=\"fas fa-keyboard\"></i>\n </button>\n\n <!-- Keyboard Shortcuts Hint (Desktop Only) -->\n <div class=\"keyboard-shortcuts\" *ngIf=\"showShortcuts\">\n <div class=\"shortcuts-header\">\n <i class=\"fas fa-keyboard\"></i>\n Shortcuts\n <button class=\"shortcuts-close\" (click)=\"toggleShortcuts()\" title=\"Hide shortcuts\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"shortcut-list\">\n <div class=\"shortcut-item\">\n <span>Refresh</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>R</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Run Test</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>Enter</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Switch Tabs</span>\n <span class=\"shortcut-keys\"><kbd>1</kbd>-<kbd>5</kbd></span>\n </div>\n </div>\n </div>\n</div>\n", styles: ["/* ===========================\n Test Form - World-Class UX\n Premium Test Definition Styles\n =========================== */\n\n/* CSS Custom Properties for Theming - using :host for Angular encapsulation */\n:host {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-primary-dark: #1d4ed8;\n --test-success: #10b981;\n --test-success-light: #d1fae5;\n --test-error: #ef4444;\n --test-error-light: #fee2e2;\n --test-warning: #f59e0b;\n --test-warning-light: #fef3c7;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n/* Breadcrumb */\n.breadcrumb {\n margin-bottom: 16px;\n}\n\n.breadcrumb ol {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb li {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb a {\n color: var(--test-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb a:hover {\n background: rgba(37, 99, 235, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb .separator {\n font-size: 10px;\n color: var(--test-text-muted);\n margin: 0 4px;\n}\n\n.breadcrumb .current {\n color: var(--test-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Base Container */\n.test-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* ===========================\n Header Section\n =========================== */\n.test-header {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n/* Test Icon */\n.test-icon {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.test-icon:hover {\n transform: scale(1.05);\n}\n\n/* Test Info */\n.test-info {\n flex: 1;\n min-width: 0;\n}\n\n.test-info h1 {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n word-wrap: break-word;\n}\n\n.test-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n/* Status Badge */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.status-badge.status-active { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline {\n display: inline-flex;\n align-items: center;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active { background: var(--test-success); }\n.status-badge-inline.status-disabled { background: var(--test-disabled); }\n.status-badge-inline.status-pending { background: var(--test-warning); }\n\n.test-type {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.header-actions button {\n white-space: nowrap;\n}\n\n/* Test Description */\n.test-description {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n margin-bottom: 16px;\n border: 1px solid var(--test-border);\n}\n\n.test-description p {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n/* ===========================\n Metrics Bar\n =========================== */\n.metrics-bar {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n}\n\n.metric-card {\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 14px;\n text-align: center;\n transition: var(--test-transition);\n}\n\n.metric-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.metric-label {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n margin-bottom: 6px;\n}\n\n.metric-value {\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n}\n\n/* Progress bar in metric card */\n.metric-progress {\n margin-top: 8px;\n height: 4px;\n background: var(--test-border);\n border-radius: 2px;\n overflow: hidden;\n}\n\n.metric-progress-fill {\n height: 100%;\n background: linear-gradient(90deg, var(--test-success) 0%, #34d399 100%);\n border-radius: 2px;\n transition: width 0.5s ease-out;\n}\n\n/* ===========================\n Tabs Navigation\n =========================== */\n.tabs-container {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.tabs::-webkit-scrollbar {\n display: none;\n}\n\n.tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab i {\n font-size: 15px;\n}\n\n.tab-badge {\n background: var(--test-border);\n color: var(--test-text-secondary);\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n transition: var(--test-transition);\n}\n\n.tab.active .tab-badge {\n background: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\n margin-left: 4px;\n}\n\n/* ===========================\n Tab Content Area\n =========================== */\n.tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n scroll-behavior: smooth;\n}\n\n/* ===========================\n Overview Tab\n =========================== */\n.overview-tab {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: fadeIn 0.3s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* Info Section */\n.info-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section h3 {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section h3 i {\n color: var(--test-primary);\n}\n\n.info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value {\n font-size: 14px;\n color: var(--test-text);\n word-wrap: break-word;\n font-weight: 500;\n}\n\n/* JSON Section */\n.json-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.json-section h3 {\n margin: 0 0 16px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-section h3 i {\n color: var(--test-primary);\n}\n\n.json-tabs {\n display: flex;\n gap: 4px;\n margin-bottom: 16px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n flex-wrap: wrap;\n}\n\n.json-tab {\n flex: 1;\n min-width: 100px;\n padding: 10px 14px;\n border: none;\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n border-radius: var(--test-radius-sm);\n transition: var(--test-transition);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.json-tab:hover {\n color: var(--test-text);\n background: rgba(0, 0, 0, 0.05);\n}\n\n.json-tab.active {\n background: var(--test-surface);\n color: var(--test-primary);\n font-weight: 600;\n box-shadow: var(--test-shadow-sm);\n}\n\n.json-tab i {\n font-size: 12px;\n}\n\n.code-editor-container {\n border-radius: var(--test-radius-md);\n overflow: hidden;\n border: 1px solid var(--test-border);\n min-height: 200px;\n max-height: 400px;\n}\n\n/* ===========================\n Configuration Tab\n =========================== */\n.config-tab {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: fadeIn 0.3s ease-out;\n}\n\n.config-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.config-section h3 {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.config-section h3 i {\n color: var(--test-primary);\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 20px;\n}\n\n.config-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item.full-width {\n grid-column: 1 / -1;\n}\n\n.config-item label {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n background: var(--test-surface);\n}\n\n.config-input:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-input::placeholder {\n color: var(--test-text-muted);\n}\n\n.config-hint {\n font-size: 11px;\n color: var(--test-text-muted);\n margin-top: 4px;\n}\n\n.config-editor-container {\n border-radius: var(--test-radius-md);\n overflow: hidden;\n border: 1px solid var(--test-border);\n min-height: 200px;\n}\n\n.config-editor-container.small {\n min-height: 100px;\n max-height: 150px;\n}\n\n/* ===========================\n Runs Tab\n =========================== */\n.runs-tab,\n.suites-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n/* Loading States & Skeletons */\n.loading-state {\n padding: 0;\n}\n\n.skeleton-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-icon {\n width: 44px;\n height: 44px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n flex-shrink: 0;\n}\n\n.skeleton-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line {\n height: 14px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide { width: 70%; }\n.skeleton-line.narrow { width: 40%; }\n\n@keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n/* Runs List */\n.runs-list,\n.suites-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.run-item,\n.suite-item {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-item:hover,\n.suite-item:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n box-shadow: var(--test-shadow-sm);\n}\n\n.run-icon,\n.suite-icon {\n width: 44px;\n height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.suite-icon {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.run-content,\n.suite-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n}\n\n.run-id {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-status {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.suite-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-meta,\n.suite-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--test-text-secondary);\n flex-wrap: wrap;\n}\n\n.run-meta span,\n.suite-meta span {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-meta span i,\n.suite-meta span i {\n color: var(--test-text-muted);\n font-size: 11px;\n}\n\n.run-item > i.fa-chevron-right,\n.suite-item > i.fa-chevron-right {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.run-item:hover > i.fa-chevron-right,\n.suite-item:hover > i.fa-chevron-right {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n/* Run Evaluation Stack */\n.run-eval-stack {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n flex-wrap: wrap;\n}\n\n/* Evaluation Pills */\n.eval-pill {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border-radius: 16px;\n font-size: 11px;\n font-weight: 600;\n transition: var(--test-transition);\n}\n\n.eval-pill i {\n font-size: 10px;\n}\n\n/* Status pill colors */\n.eval-pill.status-pill.status-passed {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.eval-pill.status-pill.status-failed {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.status-pill.status-error {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.status-pill.status-timeout {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.status-pill.status-skipped,\n.eval-pill.status-pill.status-pending {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-pill.status-pill.status-running {\n background: #dbeafe;\n color: #2563eb;\n}\n\n/* Human feedback pills */\n.eval-pill.human-pill.no-feedback {\n background: #f1f5f9;\n color: #94a3b8;\n padding: 4px 8px;\n}\n\n.eval-pill.human-pill.has-feedback.rating-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.human-pill.has-feedback.rating-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.human-pill.has-feedback.rating-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.eval-pill.human-pill.has-feedback.rating-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Auto score pills */\n.eval-pill.auto-pill.no-score {\n background: #f1f5f9;\n color: #94a3b8;\n padding: 4px 8px;\n}\n\n.eval-pill.auto-pill.has-score.score-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.auto-pill.has-score.score-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.auto-pill.has-score.score-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.eval-pill.auto-pill.has-score.score-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Run Tags */\n.run-tags {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n flex-wrap: wrap;\n}\n\n.run-tag {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: rgba(37, 99, 235, 0.1);\n color: var(--test-primary);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.run-tag-more {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: var(--test-border);\n color: var(--test-text-muted);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n}\n\n/* ===========================\n Empty States\n =========================== */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: var(--test-text-muted);\n}\n\n.empty-state h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.empty-state p {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\n}\n\n/* Legacy no-data for backwards compatibility */\n.no-data {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--test-text-muted);\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.no-data i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.no-data p {\n margin: 0;\n font-size: 14px;\n}\n\n/* ===========================\n Keyboard Shortcuts Popup\n =========================== */\n/* Keyboard shortcuts toggle button */\n.shortcuts-toggle {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n color: var(--test-text-secondary);\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close:hover {\n color: var(--test-text);\n background: var(--test-border);\n}\n\n.shortcut-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.shortcut-keys {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys kbd {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n font-size: 11px;\n color: var(--test-text);\n}\n\n/* ===========================\n Responsive Design - Tablet\n =========================== */\n@media (max-width: 1024px) {\n .metrics-bar {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .info-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .config-grid {\n grid-template-columns: 1fr;\n }\n\n .keyboard-shortcuts, .shortcuts-toggle {\n display: none;\n }\n}\n\n/* ===========================\n Responsive Design - Mobile\n =========================== */\n@media (max-width: 768px) {\n .test-form {\n height: auto;\n min-height: 100%;\n }\n\n .test-header {\n padding: 16px;\n }\n\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-left {\n width: 100%;\n }\n\n .test-icon {\n width: 48px;\n height: 48px;\n font-size: 20px;\n }\n\n .test-info h1 {\n font-size: 18px;\n }\n\n .test-meta {\n gap: 8px;\n }\n\n .status-badge {\n padding: 4px 10px;\n font-size: 11px;\n }\n\n .header-actions {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions button {\n flex: 1;\n }\n\n .metrics-bar {\n grid-template-columns: repeat(2, 1fr);\n gap: 10px;\n }\n\n .metric-card {\n padding: 12px;\n }\n\n .metric-value {\n font-size: 16px;\n }\n\n .tabs {\n padding: 0 12px;\n }\n\n .tab {\n padding: 12px 14px;\n font-size: 13px;\n gap: 6px;\n }\n\n .tab i {\n font-size: 14px;\n }\n\n .tab-shortcut {\n display: none;\n }\n\n .tab-content {\n padding: 16px;\n }\n\n .info-section,\n .json-section,\n .config-section {\n padding: 18px;\n }\n\n .info-grid {\n grid-template-columns: 1fr;\n }\n\n .json-tabs {\n flex-direction: column;\n }\n\n .json-tab {\n min-width: 0;\n justify-content: flex-start;\n }\n\n .run-item,\n .suite-item {\n padding: 14px;\n }\n\n .run-icon,\n .suite-icon {\n width: 40px;\n height: 40px;\n font-size: 16px;\n }\n\n .run-meta,\n .suite-meta {\n flex-direction: column;\n gap: 4px;\n }\n\n .empty-state {\n padding: 40px 20px;\n }\n\n .empty-icon {\n width: 64px;\n height: 64px;\n }\n\n .empty-icon i {\n font-size: 28px;\n }\n}\n\n/* ===========================\n Responsive Design - Small Mobile\n =========================== */\n@media (max-width: 480px) {\n .test-header {\n padding: 12px;\n }\n\n .header-left {\n gap: 12px;\n }\n\n .test-icon {\n width: 40px;\n height: 40px;\n font-size: 18px;\n border-radius: 8px;\n }\n\n .test-info h1 {\n font-size: 16px;\n }\n\n .metrics-bar {\n grid-template-columns: 1fr 1fr;\n }\n\n .tabs {\n padding: 0 8px;\n }\n\n .tab {\n padding: 10px 12px;\n font-size: 12px;\n }\n\n .tab-badge {\n display: none;\n }\n\n .tab-content {\n padding: 12px;\n }\n\n .run-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n }\n}\n\n/* ===========================\n Touch Device Optimizations\n =========================== */\n@media (hover: none) and (pointer: coarse) {\n .tab,\n .json-tab,\n .run-item,\n .suite-item {\n -webkit-tap-highlight-color: transparent;\n }\n\n .run-item:active,\n .suite-item:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab:active,\n .json-tab:active {\n background: rgba(37, 99, 235, 0.1);\n }\n\n /* Larger touch targets */\n .tab {\n min-height: 48px;\n }\n\n .run-item,\n .suite-item {\n min-height: 64px;\n }\n}\n\n/* ===========================\n Reduced Motion\n =========================== */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n\n .skeleton-icon,\n .skeleton-line {\n animation: none;\n background: #e2e8f0;\n }\n}\n\n/* ===========================\n History Tab\n =========================== */\n.history-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n.history-content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n/* History Filters */\n.history-filters {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n box-shadow: var(--test-shadow-sm);\n}\n\n.time-range-filters {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n margin-right: 4px;\n}\n\n.filter-btn {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn:hover {\n border-color: var(--test-primary-light);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active {\n background: var(--test-primary);\n color: white;\n border-color: var(--test-primary);\n}\n\n.history-actions {\n display: flex;\n gap: 8px;\n}\n\n/* KPI Cards */\n.history-kpi-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 16px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 18px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, var(--test-primary) 0%, var(--test-primary-dark) 100%);\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-icon.pass-rate {\n background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%);\n}\n\n.kpi-content {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value {\n font-size: 22px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.kpi-label {\n font-size: 12px;\n color: var(--test-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 2px;\n}\n\n.trend-icon {\n font-size: 14px;\n}\n\n.trend-icon.trend-up {\n color: var(--test-success);\n}\n\n.trend-icon.trend-down {\n color: var(--test-error);\n}\n\n/* History Section */\n.history-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.history-section h3 {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.history-section h3 i {\n color: var(--test-primary);\n}\n\n/* History Table */\n.history-table-container {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.history-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 14px;\n}\n\n.history-table th,\n.history-table td {\n padding: 12px 16px;\n text-align: left;\n border-bottom: 1px solid var(--test-border);\n}\n\n.history-table th {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n}\n\n.history-table tbody tr:hover {\n background: rgba(37, 99, 235, 0.03);\n}\n\n.date-cell {\n font-weight: 600;\n color: var(--test-text);\n}\n\n.passed-cell {\n color: var(--test-success);\n font-weight: 600;\n}\n\n.failed-cell {\n color: var(--test-error);\n font-weight: 600;\n}\n\n.pass-rate-cell {\n min-width: 120px;\n}\n\n.pass-rate-bar {\n position: relative;\n height: 24px;\n background: var(--test-bg);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.pass-rate-fill {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n background: linear-gradient(90deg, var(--test-success) 0%, #34d399 100%);\n border-radius: 12px;\n transition: width 0.5s ease-out;\n}\n\n.pass-rate-text {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n font-weight: 700;\n color: var(--test-text);\n z-index: 1;\n}\n\n/* Suite Performance List */\n.suite-performance-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.suite-perf-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 18px;\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.suite-perf-card:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.suite-perf-header {\n flex: 1;\n min-width: 0;\n}\n\n.suite-perf-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 6px;\n}\n\n.suite-perf-tags {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.tag-mini {\n display: inline-flex;\n padding: 2px 8px;\n background: rgba(37, 99, 235, 0.1);\n color: var(--test-primary);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.tag-more {\n display: inline-flex;\n padding: 2px 8px;\n background: var(--test-border);\n color: var(--test-text-muted);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.suite-perf-stats {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.suite-stat {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.suite-stat .stat-value {\n font-size: 16px;\n font-weight: 700;\n color: var(--test-text);\n}\n\n.suite-stat .stat-value.pass-rate.high {\n color: var(--test-success);\n}\n\n.suite-stat .stat-value.pass-rate.low {\n color: var(--test-error);\n}\n\n.suite-stat .stat-label {\n font-size: 10px;\n color: var(--test-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.suite-perf-arrow {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.suite-perf-card:hover .suite-perf-arrow {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n/* ===========================\n Print Styles\n =========================== */\n@media print {\n .test-form {\n background: white;\n height: auto;\n }\n\n .header-actions,\n .tabs-container,\n .keyboard-shortcuts {\n display: none !important;\n }\n\n .tab-content {\n overflow: visible;\n padding: 0;\n }\n\n .info-section,\n .json-section,\n .config-section,\n .empty-state {\n break-inside: avoid;\n box-shadow: none;\n border: 1px solid #ddd;\n }\n}\n"] }]
1986
- }], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.TestingDialogService }, { type: i3.EvaluationPreferencesService }, { type: i0.ViewContainerRef }, { type: i4.ApplicationManager }], { handleKeyboardShortcut: [{
2006
+ args: [{ standalone: false, selector: 'mj-test-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"test-form\" kendoDialogContainer>\n <!-- Header Section -->\n <div class=\"test-header\">\n <!-- Breadcrumb Navigation -->\n <nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n <ol>\n <li>\n <a href=\"javascript:void(0)\" (click)=\"navigateToTestingDashboard()\">\n <i class=\"fas fa-vial\"></i>\n <span class=\"breadcrumb-text\">Testing</span>\n </a>\n </li>\n <li class=\"current\">\n <i class=\"fas fa-chevron-right separator\"></i>\n <i class=\"fas fa-flask\"></i>\n <span>{{ record.Name }}</span>\n </li>\n </ol>\n </nav>\n\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"test-icon\" [style.background-color]=\"getStatusColor()\">\n <i class=\"fas fa-flask\"></i>\n </div>\n <div class=\"test-info\">\n <h1>{{ record.Name }}</h1>\n <div class=\"test-meta\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass()\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n {{ record.Status }}\n </span>\n @if (record.Type) {\n <span class=\"test-type\">\n <i class=\"fas fa-tag\"></i>\n {{ record.Type }}\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-actions\">\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n <button kendoButton (click)=\"runTest()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Test\n </button>\n <button kendoButton (click)=\"refresh()\" [disabled]=\"isRefreshing\">\n <i class=\"fas\" [ngClass]=\"isRefreshing ? 'fa-sync fa-spin' : 'fa-sync'\"></i>\n {{ isRefreshing ? 'Refreshing...' : 'Refresh' }}\n </button>\n </div>\n </div>\n\n <!-- Test Description -->\n @if (record.Description) {\n <div class=\"test-description\">\n <p>{{ record.Description }}</p>\n </div>\n }\n\n <!-- Metrics Bar -->\n @if (testRunsLoaded && testRuns.length > 0) {\n <div class=\"metrics-bar\">\n <div class=\"metric-card\">\n <div class=\"metric-label\">Total Runs</div>\n <div class=\"metric-value\">{{ testRuns.length }}</div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Pass Rate</div>\n <div class=\"metric-value\">{{ getPassRate().toFixed(1) }}%</div>\n <div class=\"metric-progress\">\n <div class=\"metric-progress-fill\" [style.width.%]=\"getPassRate()\"></div>\n </div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Avg Cost</div>\n <div class=\"metric-value\">{{ formatCost(getAverageCost()) }}</div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Avg Duration</div>\n <div class=\"metric-value\">{{ formatDuration(getAverageDuration()) }}</div>\n </div>\n </div>\n }\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs-container\">\n <div class=\"tabs\" role=\"tablist\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 'overview'\"\n (click)=\"changeTab('overview')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'overview'\">\n <i class=\"fas fa-th-large\"></i>\n <span>Overview</span>\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'config'\"\n (click)=\"changeTab('config')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'config'\">\n <i class=\"fas fa-sliders-h\"></i>\n <span>Configuration</span>\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'runs'\"\n (click)=\"changeTab('runs')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'runs'\">\n <i class=\"fas fa-history\"></i>\n <span>Runs</span>\n @if (testRunsLoaded) {\n <span class=\"tab-badge\">{{ testRuns.length }}</span>\n }\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'suites'\"\n (click)=\"changeTab('suites')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'suites'\">\n <i class=\"fas fa-layer-group\"></i>\n <span>Test Suites</span>\n @if (suiteTestsLoaded) {\n <span class=\"tab-badge\">{{ suiteTests.length }}</span>\n }\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'analytics'\"\n (click)=\"changeTab('analytics')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'analytics'\">\n <i class=\"fas fa-chart-line\"></i>\n <span>Analytics</span>\n </button>\n </div>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Overview Tab -->\n @if (activeTab === 'overview') {\n <div class=\"overview-tab\">\n <!-- Basic Information -->\n <div class=\"info-section\">\n <h3><i class=\"fas fa-info-circle\"></i> Test Information</h3>\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <div class=\"info-label\">Name</div>\n <div class=\"info-value\">{{ record.Name }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Type</div>\n <div class=\"info-value\">{{ record.Type || 'N/A' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Status</div>\n <div class=\"info-value\">\n <span class=\"status-badge-inline\" [ngClass]=\"getStatusClass()\">{{ record.Status }}</span>\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Priority</div>\n <div class=\"info-value\">{{ record.Priority || 'N/A' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Estimated Duration</div>\n <div class=\"info-value\">{{ record.EstimatedDurationSeconds ? formatDuration(record.EstimatedDurationSeconds) : 'N/A' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Estimated Cost</div>\n <div class=\"info-value\">{{ record.EstimatedCostUSD ? formatCost(record.EstimatedCostUSD) : 'N/A' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Repeat Count</div>\n <div class=\"info-value\">{{ record.RepeatCount || 1 }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Max Execution Time</div>\n <div class=\"info-value\">{{ formatTimeout(record.MaxExecutionTimeMS) }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Created</div>\n <div class=\"info-value\">{{ record.__mj_CreatedAt | date:'medium' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Updated</div>\n <div class=\"info-value\">{{ record.__mj_UpdatedAt | date:'medium' }}</div>\n </div>\n </div>\n </div>\n <!-- JSON Data Views -->\n <div class=\"json-section\">\n <h3><i class=\"fas fa-code\"></i> Test Definition</h3>\n <div class=\"json-tabs\">\n <button class=\"json-tab\"\n [class.active]=\"activeJsonView === 'input'\"\n (click)=\"setJsonView('input')\">\n <i class=\"fas fa-sign-in-alt\"></i>\n Input Definition\n </button>\n <button class=\"json-tab\"\n [class.active]=\"activeJsonView === 'expected'\"\n (click)=\"setJsonView('expected')\">\n <i class=\"fas fa-check-double\"></i>\n Expected Outcomes\n </button>\n <button class=\"json-tab\"\n [class.active]=\"activeJsonView === 'config'\"\n (click)=\"setJsonView('config')\">\n <i class=\"fas fa-cog\"></i>\n Configuration\n </button>\n <button class=\"json-tab\"\n [class.active]=\"activeJsonView === 'tags'\"\n (click)=\"setJsonView('tags')\">\n <i class=\"fas fa-tags\"></i>\n Tags\n </button>\n </div>\n <div class=\"code-editor-container\">\n <mj-code-editor\n [value]=\"getJsonData()\"\n language=\"json\"\n [readonly]=\"true\"\n [toolbar]=\"jsonToolbar\"\n [lineWrapping]=\"true\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n }\n\n <!-- Configuration Tab -->\n @if (activeTab === 'config') {\n <div class=\"config-tab\">\n <div class=\"config-section\">\n <h3><i class=\"fas fa-cogs\"></i> Execution Settings</h3>\n <div class=\"config-grid\">\n <div class=\"config-item\">\n <label>Priority</label>\n <input type=\"number\" [(ngModel)]=\"record.Priority\" class=\"config-input\" placeholder=\"Lower = Higher Priority\" />\n </div>\n <div class=\"config-item\">\n <label>Repeat Count</label>\n <input type=\"number\" [(ngModel)]=\"record.RepeatCount\" class=\"config-input\" min=\"1\" />\n </div>\n <div class=\"config-item\">\n <label>Estimated Duration (seconds)</label>\n <input type=\"number\" [(ngModel)]=\"record.EstimatedDurationSeconds\" class=\"config-input\" />\n </div>\n <div class=\"config-item\">\n <label>Estimated Cost (USD)</label>\n <input type=\"number\" step=\"0.000001\" [(ngModel)]=\"record.EstimatedCostUSD\" class=\"config-input\" />\n </div>\n <div class=\"config-item full-width\">\n <label>Max Execution Time (ms)</label>\n <input type=\"number\" [(ngModel)]=\"record.MaxExecutionTimeMS\" class=\"config-input\" placeholder=\"Default: 300000 (5 min)\" />\n <span class=\"config-hint\">Leave empty for default 5 minute timeout</span>\n </div>\n </div>\n </div>\n <div class=\"config-section\">\n <h3><i class=\"fas fa-sign-in-alt\"></i> Input Definition (JSON)</h3>\n <div class=\"config-editor-container\">\n <mj-code-editor\n [value]=\"record.InputDefinition || ''\"\n language=\"json\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"record.InputDefinition = $event\">\n </mj-code-editor>\n </div>\n </div>\n <div class=\"config-section\">\n <h3><i class=\"fas fa-check-double\"></i> Expected Outcomes (JSON)</h3>\n <div class=\"config-editor-container\">\n <mj-code-editor\n [value]=\"record.ExpectedOutcomes || ''\"\n language=\"json\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"record.ExpectedOutcomes = $event\">\n </mj-code-editor>\n </div>\n </div>\n <div class=\"config-section\">\n <h3><i class=\"fas fa-cog\"></i> Configuration (JSON)</h3>\n <div class=\"config-editor-container\">\n <mj-code-editor\n [value]=\"record.Configuration || ''\"\n language=\"json\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"record.Configuration = $event\">\n </mj-code-editor>\n </div>\n </div>\n <div class=\"config-section\">\n <h3><i class=\"fas fa-tags\"></i> Tags (JSON Array)</h3>\n <div class=\"config-editor-container small\">\n <mj-code-editor\n [value]=\"record.Tags || '[]'\"\n language=\"json\"\n [readonly]=\"false\"\n [lineWrapping]=\"true\"\n (change)=\"record.Tags = $event\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n }\n\n <!-- Test Runs Tab -->\n @if (activeTab === 'runs') {\n <div class=\"runs-tab\">\n <!-- Loading State -->\n @if (loadingRuns) {\n <div class=\"loading-state\">\n <div class=\"skeleton-list\">\n @for (i of [1,2,3,4,5]; track i) {\n <div class=\"skeleton-card\">\n <div class=\"skeleton-icon\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line wide\"></div>\n <div class=\"skeleton-line narrow\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <!-- Runs List -->\n @if (!loadingRuns && testRuns.length > 0) {\n <div class=\"runs-list\">\n @for (run of testRuns; track run) {\n <div class=\"run-item\" (click)=\"openTestRun(run.ID)\">\n <div class=\"run-icon\" [style.background-color]=\"getRunStatusColor(run.Status)\">\n <i class=\"fas\"\n [class.fa-check]=\"run.Status === 'Passed'\"\n [class.fa-times]=\"run.Status === 'Failed'\"\n [class.fa-exclamation]=\"run.Status === 'Error'\"\n [class.fa-stopwatch]=\"run.Status === 'Timeout'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"></i>\n </div>\n <div class=\"run-content\">\n <div class=\"run-header\">\n <span class=\"run-id\">Run #{{ run.ID.substring(0, 8) }}</span>\n <span class=\"run-status\" [style.color]=\"getRunStatusColor(run.Status)\">{{ run.Status }}</span>\n </div>\n <div class=\"run-meta\">\n <span><i class=\"fas fa-calendar\"></i> {{ getRelativeTime(run.StartedAt) }}</span>\n @if (run.DurationSeconds) {\n <span><i class=\"fas fa-clock\"></i> {{ formatDuration(run.DurationSeconds) }}</span>\n }\n @if (run.CostUSD) {\n <span><i class=\"fas fa-dollar-sign\"></i> {{ formatCost(run.CostUSD) }}</span>\n }\n @if (run.TargetLogEntityID && run.TargetLogID) {\n <mj-entity-link-pill\n [entityName]=\"run.TargetLogEntity\"\n [recordId]=\"run.TargetLogID\">\n </mj-entity-link-pill>\n }\n </div>\n <!-- Evaluation indicators -->\n <div class=\"run-eval-stack\">\n <!-- Status indicator -->\n @if (evalPreferences.showExecution) {\n <span class=\"eval-pill status-pill\"\n [ngClass]=\"'status-' + run.Status.toLowerCase()\"\n [title]=\"getStatusTooltip(run.Status)\">\n <i class=\"fas\"\n [class.fa-check]=\"run.Status === 'Passed'\"\n [class.fa-times]=\"run.Status === 'Failed'\"\n [class.fa-exclamation]=\"run.Status === 'Error'\"\n [class.fa-hourglass-end]=\"run.Status === 'Timeout'\"\n [class.fa-forward]=\"run.Status === 'Skipped'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"></i>\n <span>{{ run.Status }}</span>\n </span>\n }\n <!-- Human feedback indicator -->\n @if (evalPreferences.showHuman) {\n @if (!getFeedbackForRun(run.ID)?.Rating) {\n <span class=\"eval-pill human-pill no-feedback\"\n title=\"Human Review: No rating submitted yet\">\n <i class=\"fas fa-user-slash\"></i>\n </span>\n }\n @if (getFeedbackForRun(run.ID)?.Rating; as rating) {\n <span class=\"eval-pill human-pill has-feedback\"\n [class.rating-low]=\"rating <= 4\"\n [class.rating-medium]=\"rating >= 5 && rating <= 6\"\n [class.rating-good]=\"rating >= 7 && rating <= 8\"\n [class.rating-excellent]=\"rating >= 9\"\n [title]=\"getHumanTooltip(rating, getFeedbackForRun(run.ID)?.CorrectionSummary || getFeedbackForRun(run.ID)?.Comments || null)\">\n <i class=\"fas fa-user\"></i>\n <span>{{ rating }}</span>\n </span>\n }\n }\n <!-- Auto score indicator -->\n @if (evalPreferences.showAuto) {\n @if (run.Score == null) {\n <span class=\"eval-pill auto-pill no-score\"\n title=\"Auto Score: No automated score available\">\n <i class=\"fas fa-robot\"></i>\n </span>\n }\n @if (run.Score != null) {\n <span class=\"eval-pill auto-pill has-score\"\n [class.score-low]=\"run.Score < 0.5\"\n [class.score-medium]=\"run.Score >= 0.5 && run.Score < 0.7\"\n [class.score-good]=\"run.Score >= 0.7 && run.Score < 0.85\"\n [class.score-excellent]=\"run.Score >= 0.85\"\n [title]=\"'Auto Score: ' + (run.Score * 100).toFixed(0) + '% automated evaluation'\">\n <i class=\"fas fa-robot\"></i>\n <span>{{ (run.Score * 100).toFixed(0) }}%</span>\n </span>\n }\n }\n </div>\n @if (getRunTags(run).length > 0) {\n <div class=\"run-tags\">\n @for (tag of getRunTags(run).slice(0, 3); track tag) {\n <span class=\"run-tag\">{{ tag }}</span>\n }\n @if (getRunTags(run).length > 3) {\n <span class=\"run-tag-more\">+{{ getRunTags(run).length - 3 }}</span>\n }\n </div>\n }\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (testRunsLoaded && !loadingRuns && testRuns.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-play-circle\"></i>\n </div>\n <h4>No Test Runs Yet</h4>\n <p>Run this test to see execution history and results here.</p>\n <button kendoButton (click)=\"runTest()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Test Now\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Test Suites Tab -->\n @if (activeTab === 'suites') {\n <div class=\"suites-tab\">\n <!-- Loading State -->\n @if (loadingSuites) {\n <div class=\"loading-state\">\n <div class=\"skeleton-list\">\n @for (i of [1,2,3]; track i) {\n <div class=\"skeleton-card\">\n <div class=\"skeleton-icon\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line wide\"></div>\n <div class=\"skeleton-line narrow\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <!-- Suites List -->\n @if (!loadingSuites && suiteTests.length > 0) {\n <div class=\"suites-list\">\n @for (suiteTest of suiteTests; track suiteTest) {\n <div class=\"suite-item\" (click)=\"openTestSuite(suiteTest.SuiteID)\">\n <div class=\"suite-icon\">\n <i class=\"fas fa-layer-group\"></i>\n </div>\n <div class=\"suite-content\">\n <div class=\"suite-name\">{{ suiteTest.Suite }}</div>\n <div class=\"suite-meta\">\n <span><i class=\"fas fa-sort-numeric-up\"></i> Sequence: {{ suiteTest.Sequence }}</span>\n @if (suiteTest.Status) {\n <span><i class=\"fas fa-info-circle\"></i> {{ suiteTest.Status }}</span>\n }\n </div>\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (suiteTestsLoaded && !loadingSuites && suiteTests.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-folder-open\"></i>\n </div>\n <h4>Not Part of Any Suite</h4>\n <p>This test is not included in any test suites. Add it to a suite to run it with other tests.</p>\n </div>\n }\n </div>\n }\n\n <!-- Analytics Tab -->\n @if (activeTab === 'analytics') {\n <div class=\"history-tab\">\n <!-- Loading State -->\n @if (loadingHistory) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading history...\"></mj-loading>\n </div>\n }\n <!-- History Content -->\n @if (!loadingHistory && historyLoaded) {\n <div class=\"history-content\">\n <!-- Filters -->\n <div class=\"history-filters\">\n <div class=\"time-range-filters\">\n <span class=\"filter-label\">Time Range:</span>\n <button class=\"filter-btn\"\n [class.active]=\"historyTimeRange === '7d'\"\n (click)=\"setHistoryTimeRange('7d')\">7 Days</button>\n <button class=\"filter-btn\"\n [class.active]=\"historyTimeRange === '30d'\"\n (click)=\"setHistoryTimeRange('30d')\">30 Days</button>\n <button class=\"filter-btn\"\n [class.active]=\"historyTimeRange === '90d'\"\n (click)=\"setHistoryTimeRange('90d')\">90 Days</button>\n <button class=\"filter-btn\"\n [class.active]=\"historyTimeRange === 'all'\"\n (click)=\"setHistoryTimeRange('all')\">All Time</button>\n </div>\n <div class=\"history-actions\">\n <button kendoButton (click)=\"exportHistoryToCSV()\" [disabled]=\"historyData.length === 0\">\n <i class=\"fas fa-download\"></i> Export CSV\n </button>\n </div>\n </div>\n <!-- KPI Cards -->\n @if (historyData.length > 0) {\n <div class=\"history-kpi-cards\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\">\n <i class=\"fas fa-play-circle\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ getTotalRuns() }}</div>\n <div class=\"kpi-label\">Total Runs</div>\n </div>\n </div>\n @if (evalPreferences.showExecution) {\n <div class=\"kpi-card\">\n <div class=\"kpi-icon pass-rate\">\n <i class=\"fas fa-percentage\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">\n {{ getOverallPassRate().toFixed(1) }}%\n <i class=\"fas trend-icon\"\n [class.fa-arrow-up]=\"getPassRateTrend() === 'up'\"\n [class.fa-arrow-down]=\"getPassRateTrend() === 'down'\"\n [class.fa-minus]=\"getPassRateTrend() === 'stable'\"\n [class.trend-up]=\"getPassRateTrend() === 'up'\"\n [class.trend-down]=\"getPassRateTrend() === 'down'\"></i>\n </div>\n <div class=\"kpi-label\">Pass Rate</div>\n </div>\n </div>\n }\n @if (evalPreferences.showAuto) {\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\">\n <i class=\"fas fa-star\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ (getOverallAvgScore() * 100).toFixed(1) }}%</div>\n <div class=\"kpi-label\">Avg Score</div>\n </div>\n </div>\n }\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\">\n <i class=\"fas fa-clock\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatDuration(getOverallAvgDuration()) }}</div>\n <div class=\"kpi-label\">Avg Duration</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\">\n <i class=\"fas fa-dollar-sign\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatCost(getOverallAvgCost()) }}</div>\n <div class=\"kpi-label\">Avg Cost</div>\n </div>\n </div>\n </div>\n }\n <!-- Daily History Table -->\n @if (historyData.length > 0) {\n <div class=\"history-section\">\n <h3><i class=\"fas fa-calendar-alt\"></i> Daily Performance</h3>\n <div class=\"history-table-container\">\n <table class=\"history-table\">\n <thead>\n <tr>\n <th>Date</th>\n <th>Runs</th>\n @if (evalPreferences.showExecution) {\n <th>Passed</th>\n }\n @if (evalPreferences.showExecution) {\n <th>Failed</th>\n }\n @if (evalPreferences.showExecution) {\n <th>Pass Rate</th>\n }\n @if (evalPreferences.showAuto) {\n <th>Avg Score</th>\n }\n <th>Avg Duration</th>\n <th>Avg Cost</th>\n </tr>\n </thead>\n <tbody>\n @for (day of historyData; track day) {\n <tr>\n <td class=\"date-cell\">{{ day.date | date:'mediumDate' }}</td>\n <td class=\"runs-cell\">{{ day.runCount }}</td>\n @if (evalPreferences.showExecution) {\n <td class=\"passed-cell\">{{ day.passCount }}</td>\n }\n @if (evalPreferences.showExecution) {\n <td class=\"failed-cell\">{{ day.failCount }}</td>\n }\n @if (evalPreferences.showExecution) {\n <td class=\"pass-rate-cell\">\n <div class=\"pass-rate-bar\">\n <div class=\"pass-rate-fill\" [style.width.%]=\"day.passRate\"></div>\n <span class=\"pass-rate-text\">{{ day.passRate.toFixed(1) }}%</span>\n </div>\n </td>\n }\n @if (evalPreferences.showAuto) {\n <td class=\"score-cell\">{{ (day.avgScore * 100).toFixed(1) }}%</td>\n }\n <td class=\"duration-cell\">{{ formatDuration(day.avgDuration) }}</td>\n <td class=\"cost-cell\">{{ formatCost(day.avgCost) }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n <!-- Suite Performance -->\n @if (suitePerformance.length > 0) {\n <div class=\"history-section\">\n <h3><i class=\"fas fa-layer-group\"></i> Performance by Suite</h3>\n <div class=\"suite-performance-list\">\n @for (suite of suitePerformance; track suite) {\n <div class=\"suite-perf-card\" (click)=\"openSuiteFromHistory(suite.suiteId)\">\n <div class=\"suite-perf-header\">\n <div class=\"suite-perf-name\">{{ suite.suiteName }}</div>\n @if (suite.tags.length > 0) {\n <div class=\"suite-perf-tags\">\n @for (tag of suite.tags.slice(0, 3); track tag) {\n <span class=\"tag-mini\">{{ tag }}</span>\n }\n @if (suite.tags.length > 3) {\n <span class=\"tag-more\">+{{ suite.tags.length - 3 }}</span>\n }\n </div>\n }\n </div>\n <div class=\"suite-perf-stats\">\n <div class=\"suite-stat\">\n <span class=\"stat-value\">{{ suite.totalRuns }}</span>\n <span class=\"stat-label\">Runs</span>\n </div>\n @if (evalPreferences.showExecution) {\n <div class=\"suite-stat\">\n <span class=\"stat-value pass-rate\" [class.high]=\"suite.passRate >= 80\" [class.low]=\"suite.passRate < 50\">\n {{ suite.passRate.toFixed(1) }}%\n </span>\n <span class=\"stat-label\">Pass Rate</span>\n </div>\n }\n @if (evalPreferences.showAuto) {\n <div class=\"suite-stat\">\n <span class=\"stat-value\">{{ (suite.avgScore * 100).toFixed(1) }}%</span>\n <span class=\"stat-label\">Avg Score</span>\n </div>\n }\n <div class=\"suite-stat\">\n <span class=\"stat-value\">{{ formatDuration(suite.avgDuration) }}</span>\n <span class=\"stat-label\">Avg Duration</span>\n </div>\n <div class=\"suite-stat\">\n <span class=\"stat-value\">{{ formatCost(suite.avgCost) }}</span>\n <span class=\"stat-label\">Avg Cost</span>\n </div>\n @if (suite.lastRun) {\n <div class=\"suite-stat\">\n <span class=\"stat-value\">{{ getRelativeTime(suite.lastRun) }}</span>\n <span class=\"stat-label\">Last Run</span>\n </div>\n }\n </div>\n <i class=\"fas fa-chevron-right suite-perf-arrow\"></i>\n </div>\n }\n </div>\n </div>\n }\n <!-- Empty State -->\n @if (historyData.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-chart-line\"></i>\n </div>\n <h4>No History Available</h4>\n <p>Run this test to start building history and analytics data.</p>\n <button kendoButton (click)=\"runTest()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Test Now\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Keyboard Shortcuts Toggle Button -->\n <button class=\"shortcuts-toggle\" (click)=\"toggleShortcuts()\" [title]=\"showShortcuts ? 'Hide keyboard shortcuts' : 'Show keyboard shortcuts'\">\n <i class=\"fas fa-keyboard\"></i>\n </button>\n\n <!-- Keyboard Shortcuts Hint (Desktop Only) -->\n @if (showShortcuts) {\n <div class=\"keyboard-shortcuts\">\n <div class=\"shortcuts-header\">\n <i class=\"fas fa-keyboard\"></i>\n Shortcuts\n <button class=\"shortcuts-close\" (click)=\"toggleShortcuts()\" title=\"Hide shortcuts\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"shortcut-list\">\n <div class=\"shortcut-item\">\n <span>Refresh</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>R</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Run Test</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>Enter</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Switch Tabs</span>\n <span class=\"shortcut-keys\"><kbd>1</kbd>-<kbd>5</kbd></span>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: ["/* ===========================\n Test Form - World-Class UX\n Premium Test Definition Styles\n =========================== */\n\n/* CSS Custom Properties for Theming - using :host for Angular encapsulation */\n:host {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-primary-dark: #1d4ed8;\n --test-success: #10b981;\n --test-success-light: #d1fae5;\n --test-error: #ef4444;\n --test-error-light: #fee2e2;\n --test-warning: #f59e0b;\n --test-warning-light: #fef3c7;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n/* Breadcrumb */\n.breadcrumb {\n margin-bottom: 16px;\n}\n\n.breadcrumb ol {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb li {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb a {\n color: var(--test-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb a:hover {\n background: rgba(37, 99, 235, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb .separator {\n font-size: 10px;\n color: var(--test-text-muted);\n margin: 0 4px;\n}\n\n.breadcrumb .current {\n color: var(--test-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Base Container */\n.test-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* ===========================\n Header Section\n =========================== */\n.test-header {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n/* Test Icon */\n.test-icon {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.test-icon:hover {\n transform: scale(1.05);\n}\n\n/* Test Info */\n.test-info {\n flex: 1;\n min-width: 0;\n}\n\n.test-info h1 {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n word-wrap: break-word;\n}\n\n.test-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n/* Status Badge */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.status-badge.status-active { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline {\n display: inline-flex;\n align-items: center;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active { background: var(--test-success); }\n.status-badge-inline.status-disabled { background: var(--test-disabled); }\n.status-badge-inline.status-pending { background: var(--test-warning); }\n\n.test-type {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.header-actions button {\n white-space: nowrap;\n}\n\n/* Test Description */\n.test-description {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n margin-bottom: 16px;\n border: 1px solid var(--test-border);\n}\n\n.test-description p {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n/* ===========================\n Metrics Bar\n =========================== */\n.metrics-bar {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n}\n\n.metric-card {\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 14px;\n text-align: center;\n transition: var(--test-transition);\n}\n\n.metric-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.metric-label {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n margin-bottom: 6px;\n}\n\n.metric-value {\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n}\n\n/* Progress bar in metric card */\n.metric-progress {\n margin-top: 8px;\n height: 4px;\n background: var(--test-border);\n border-radius: 2px;\n overflow: hidden;\n}\n\n.metric-progress-fill {\n height: 100%;\n background: linear-gradient(90deg, var(--test-success) 0%, #34d399 100%);\n border-radius: 2px;\n transition: width 0.5s ease-out;\n}\n\n/* ===========================\n Tabs Navigation\n =========================== */\n.tabs-container {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.tabs::-webkit-scrollbar {\n display: none;\n}\n\n.tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab i {\n font-size: 15px;\n}\n\n.tab-badge {\n background: var(--test-border);\n color: var(--test-text-secondary);\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n transition: var(--test-transition);\n}\n\n.tab.active .tab-badge {\n background: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\n margin-left: 4px;\n}\n\n/* ===========================\n Tab Content Area\n =========================== */\n.tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n scroll-behavior: smooth;\n}\n\n/* ===========================\n Overview Tab\n =========================== */\n.overview-tab {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: fadeIn 0.3s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* Info Section */\n.info-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section h3 {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section h3 i {\n color: var(--test-primary);\n}\n\n.info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value {\n font-size: 14px;\n color: var(--test-text);\n word-wrap: break-word;\n font-weight: 500;\n}\n\n/* JSON Section */\n.json-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.json-section h3 {\n margin: 0 0 16px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-section h3 i {\n color: var(--test-primary);\n}\n\n.json-tabs {\n display: flex;\n gap: 4px;\n margin-bottom: 16px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n flex-wrap: wrap;\n}\n\n.json-tab {\n flex: 1;\n min-width: 100px;\n padding: 10px 14px;\n border: none;\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n border-radius: var(--test-radius-sm);\n transition: var(--test-transition);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.json-tab:hover {\n color: var(--test-text);\n background: rgba(0, 0, 0, 0.05);\n}\n\n.json-tab.active {\n background: var(--test-surface);\n color: var(--test-primary);\n font-weight: 600;\n box-shadow: var(--test-shadow-sm);\n}\n\n.json-tab i {\n font-size: 12px;\n}\n\n.code-editor-container {\n border-radius: var(--test-radius-md);\n overflow: hidden;\n border: 1px solid var(--test-border);\n min-height: 200px;\n max-height: 400px;\n}\n\n/* ===========================\n Configuration Tab\n =========================== */\n.config-tab {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: fadeIn 0.3s ease-out;\n}\n\n.config-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.config-section h3 {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.config-section h3 i {\n color: var(--test-primary);\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 20px;\n}\n\n.config-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item.full-width {\n grid-column: 1 / -1;\n}\n\n.config-item label {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n background: var(--test-surface);\n}\n\n.config-input:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-input::placeholder {\n color: var(--test-text-muted);\n}\n\n.config-hint {\n font-size: 11px;\n color: var(--test-text-muted);\n margin-top: 4px;\n}\n\n.config-editor-container {\n border-radius: var(--test-radius-md);\n overflow: hidden;\n border: 1px solid var(--test-border);\n min-height: 200px;\n}\n\n.config-editor-container.small {\n min-height: 100px;\n max-height: 150px;\n}\n\n/* ===========================\n Runs Tab\n =========================== */\n.runs-tab,\n.suites-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n/* Loading States & Skeletons */\n.loading-state {\n padding: 0;\n}\n\n.skeleton-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-icon {\n width: 44px;\n height: 44px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n flex-shrink: 0;\n}\n\n.skeleton-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line {\n height: 14px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide { width: 70%; }\n.skeleton-line.narrow { width: 40%; }\n\n@keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n/* Runs List */\n.runs-list,\n.suites-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.run-item,\n.suite-item {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-item:hover,\n.suite-item:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n box-shadow: var(--test-shadow-sm);\n}\n\n.run-icon,\n.suite-icon {\n width: 44px;\n height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.suite-icon {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.run-content,\n.suite-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n}\n\n.run-id {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-status {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.suite-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-meta,\n.suite-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--test-text-secondary);\n flex-wrap: wrap;\n}\n\n.run-meta span,\n.suite-meta span {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-meta span i,\n.suite-meta span i {\n color: var(--test-text-muted);\n font-size: 11px;\n}\n\n.run-item > i.fa-chevron-right,\n.suite-item > i.fa-chevron-right {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.run-item:hover > i.fa-chevron-right,\n.suite-item:hover > i.fa-chevron-right {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n/* Run Evaluation Stack */\n.run-eval-stack {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n flex-wrap: wrap;\n}\n\n/* Evaluation Pills */\n.eval-pill {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border-radius: 16px;\n font-size: 11px;\n font-weight: 600;\n transition: var(--test-transition);\n}\n\n.eval-pill i {\n font-size: 10px;\n}\n\n/* Status pill colors */\n.eval-pill.status-pill.status-passed {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.eval-pill.status-pill.status-failed {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.status-pill.status-error {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.status-pill.status-timeout {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.status-pill.status-skipped,\n.eval-pill.status-pill.status-pending {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-pill.status-pill.status-running {\n background: #dbeafe;\n color: #2563eb;\n}\n\n/* Human feedback pills */\n.eval-pill.human-pill.no-feedback {\n background: #f1f5f9;\n color: #94a3b8;\n padding: 4px 8px;\n}\n\n.eval-pill.human-pill.has-feedback.rating-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.human-pill.has-feedback.rating-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.human-pill.has-feedback.rating-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.eval-pill.human-pill.has-feedback.rating-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Auto score pills */\n.eval-pill.auto-pill.no-score {\n background: #f1f5f9;\n color: #94a3b8;\n padding: 4px 8px;\n}\n\n.eval-pill.auto-pill.has-score.score-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.eval-pill.auto-pill.has-score.score-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eval-pill.auto-pill.has-score.score-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.eval-pill.auto-pill.has-score.score-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Run Tags */\n.run-tags {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n flex-wrap: wrap;\n}\n\n.run-tag {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: rgba(37, 99, 235, 0.1);\n color: var(--test-primary);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.run-tag-more {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n background: var(--test-border);\n color: var(--test-text-muted);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n}\n\n/* ===========================\n Empty States\n =========================== */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: var(--test-text-muted);\n}\n\n.empty-state h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.empty-state p {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\n}\n\n/* Legacy no-data for backwards compatibility */\n.no-data {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--test-text-muted);\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n}\n\n.no-data i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.no-data p {\n margin: 0;\n font-size: 14px;\n}\n\n/* ===========================\n Keyboard Shortcuts Popup\n =========================== */\n/* Keyboard shortcuts toggle button */\n.shortcuts-toggle {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n color: var(--test-text-secondary);\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close:hover {\n color: var(--test-text);\n background: var(--test-border);\n}\n\n.shortcut-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.shortcut-keys {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys kbd {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n font-size: 11px;\n color: var(--test-text);\n}\n\n/* ===========================\n Responsive Design - Tablet\n =========================== */\n@media (max-width: 1024px) {\n .metrics-bar {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .info-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .config-grid {\n grid-template-columns: 1fr;\n }\n\n .keyboard-shortcuts, .shortcuts-toggle {\n display: none;\n }\n}\n\n/* ===========================\n Responsive Design - Mobile\n =========================== */\n@media (max-width: 768px) {\n .test-form {\n height: auto;\n min-height: 100%;\n }\n\n .test-header {\n padding: 16px;\n }\n\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-left {\n width: 100%;\n }\n\n .test-icon {\n width: 48px;\n height: 48px;\n font-size: 20px;\n }\n\n .test-info h1 {\n font-size: 18px;\n }\n\n .test-meta {\n gap: 8px;\n }\n\n .status-badge {\n padding: 4px 10px;\n font-size: 11px;\n }\n\n .header-actions {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions button {\n flex: 1;\n }\n\n .metrics-bar {\n grid-template-columns: repeat(2, 1fr);\n gap: 10px;\n }\n\n .metric-card {\n padding: 12px;\n }\n\n .metric-value {\n font-size: 16px;\n }\n\n .tabs {\n padding: 0 12px;\n }\n\n .tab {\n padding: 12px 14px;\n font-size: 13px;\n gap: 6px;\n }\n\n .tab i {\n font-size: 14px;\n }\n\n .tab-shortcut {\n display: none;\n }\n\n .tab-content {\n padding: 16px;\n }\n\n .info-section,\n .json-section,\n .config-section {\n padding: 18px;\n }\n\n .info-grid {\n grid-template-columns: 1fr;\n }\n\n .json-tabs {\n flex-direction: column;\n }\n\n .json-tab {\n min-width: 0;\n justify-content: flex-start;\n }\n\n .run-item,\n .suite-item {\n padding: 14px;\n }\n\n .run-icon,\n .suite-icon {\n width: 40px;\n height: 40px;\n font-size: 16px;\n }\n\n .run-meta,\n .suite-meta {\n flex-direction: column;\n gap: 4px;\n }\n\n .empty-state {\n padding: 40px 20px;\n }\n\n .empty-icon {\n width: 64px;\n height: 64px;\n }\n\n .empty-icon i {\n font-size: 28px;\n }\n}\n\n/* ===========================\n Responsive Design - Small Mobile\n =========================== */\n@media (max-width: 480px) {\n .test-header {\n padding: 12px;\n }\n\n .header-left {\n gap: 12px;\n }\n\n .test-icon {\n width: 40px;\n height: 40px;\n font-size: 18px;\n border-radius: 8px;\n }\n\n .test-info h1 {\n font-size: 16px;\n }\n\n .metrics-bar {\n grid-template-columns: 1fr 1fr;\n }\n\n .tabs {\n padding: 0 8px;\n }\n\n .tab {\n padding: 10px 12px;\n font-size: 12px;\n }\n\n .tab-badge {\n display: none;\n }\n\n .tab-content {\n padding: 12px;\n }\n\n .run-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n }\n}\n\n/* ===========================\n Touch Device Optimizations\n =========================== */\n@media (hover: none) and (pointer: coarse) {\n .tab,\n .json-tab,\n .run-item,\n .suite-item {\n -webkit-tap-highlight-color: transparent;\n }\n\n .run-item:active,\n .suite-item:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab:active,\n .json-tab:active {\n background: rgba(37, 99, 235, 0.1);\n }\n\n /* Larger touch targets */\n .tab {\n min-height: 48px;\n }\n\n .run-item,\n .suite-item {\n min-height: 64px;\n }\n}\n\n/* ===========================\n Reduced Motion\n =========================== */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n\n .skeleton-icon,\n .skeleton-line {\n animation: none;\n background: #e2e8f0;\n }\n}\n\n/* ===========================\n History Tab\n =========================== */\n.history-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n.history-content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n/* History Filters */\n.history-filters {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n box-shadow: var(--test-shadow-sm);\n}\n\n.time-range-filters {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n margin-right: 4px;\n}\n\n.filter-btn {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn:hover {\n border-color: var(--test-primary-light);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active {\n background: var(--test-primary);\n color: white;\n border-color: var(--test-primary);\n}\n\n.history-actions {\n display: flex;\n gap: 8px;\n}\n\n/* KPI Cards */\n.history-kpi-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 16px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 18px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, var(--test-primary) 0%, var(--test-primary-dark) 100%);\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-icon.pass-rate {\n background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%);\n}\n\n.kpi-content {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value {\n font-size: 22px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.kpi-label {\n font-size: 12px;\n color: var(--test-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 2px;\n}\n\n.trend-icon {\n font-size: 14px;\n}\n\n.trend-icon.trend-up {\n color: var(--test-success);\n}\n\n.trend-icon.trend-down {\n color: var(--test-error);\n}\n\n/* History Section */\n.history-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.history-section h3 {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.history-section h3 i {\n color: var(--test-primary);\n}\n\n/* History Table */\n.history-table-container {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.history-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 14px;\n}\n\n.history-table th,\n.history-table td {\n padding: 12px 16px;\n text-align: left;\n border-bottom: 1px solid var(--test-border);\n}\n\n.history-table th {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n}\n\n.history-table tbody tr:hover {\n background: rgba(37, 99, 235, 0.03);\n}\n\n.date-cell {\n font-weight: 600;\n color: var(--test-text);\n}\n\n.passed-cell {\n color: var(--test-success);\n font-weight: 600;\n}\n\n.failed-cell {\n color: var(--test-error);\n font-weight: 600;\n}\n\n.pass-rate-cell {\n min-width: 120px;\n}\n\n.pass-rate-bar {\n position: relative;\n height: 24px;\n background: var(--test-bg);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.pass-rate-fill {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n background: linear-gradient(90deg, var(--test-success) 0%, #34d399 100%);\n border-radius: 12px;\n transition: width 0.5s ease-out;\n}\n\n.pass-rate-text {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n font-weight: 700;\n color: var(--test-text);\n z-index: 1;\n}\n\n/* Suite Performance List */\n.suite-performance-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.suite-perf-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 18px;\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.suite-perf-card:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.suite-perf-header {\n flex: 1;\n min-width: 0;\n}\n\n.suite-perf-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 6px;\n}\n\n.suite-perf-tags {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.tag-mini {\n display: inline-flex;\n padding: 2px 8px;\n background: rgba(37, 99, 235, 0.1);\n color: var(--test-primary);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.tag-more {\n display: inline-flex;\n padding: 2px 8px;\n background: var(--test-border);\n color: var(--test-text-muted);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.suite-perf-stats {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.suite-stat {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.suite-stat .stat-value {\n font-size: 16px;\n font-weight: 700;\n color: var(--test-text);\n}\n\n.suite-stat .stat-value.pass-rate.high {\n color: var(--test-success);\n}\n\n.suite-stat .stat-value.pass-rate.low {\n color: var(--test-error);\n}\n\n.suite-stat .stat-label {\n font-size: 10px;\n color: var(--test-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.suite-perf-arrow {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.suite-perf-card:hover .suite-perf-arrow {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n/* ===========================\n Print Styles\n =========================== */\n@media print {\n .test-form {\n background: white;\n height: auto;\n }\n\n .header-actions,\n .tabs-container,\n .keyboard-shortcuts {\n display: none !important;\n }\n\n .tab-content {\n overflow: visible;\n padding: 0;\n }\n\n .info-section,\n .json-section,\n .config-section,\n .empty-state {\n break-inside: avoid;\n box-shadow: none;\n border: 1px solid #ddd;\n }\n}\n"] }]
2007
+ }], null, { handleKeyboardShortcut: [{
1987
2008
  type: HostListener,
1988
2009
  args: ['document:keydown', ['$event']]
1989
2010
  }] }); })();
1990
2011
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestFormComponentExtended, { className: "TestFormComponentExtended", filePath: "src/lib/custom/Tests/test-form.component.ts", lineNumber: 62 }); })();
1991
- export function LoadTestFormComponentExtended() {
1992
- // Prevents tree-shaking
1993
- }
1994
- LoadTestFormComponentExtended();
1995
2012
  //# sourceMappingURL=test-form.component.js.map