@cucumber/react-components 24.1.2 → 24.3.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 (425) hide show
  1. package/LICENSE +1 -1
  2. package/dist/src/CucumberQueryContext.d.ts +1 -2
  3. package/dist/src/CucumberQueryContext.d.ts.map +1 -1
  4. package/dist/src/CucumberQueryContext.js +2 -2
  5. package/dist/src/CucumberQueryContext.js.map +1 -1
  6. package/dist/src/GherkinQueryContext.d.ts +1 -2
  7. package/dist/src/GherkinQueryContext.d.ts.map +1 -1
  8. package/dist/src/GherkinQueryContext.js +2 -2
  9. package/dist/src/GherkinQueryContext.js.map +1 -1
  10. package/dist/src/SearchContext.d.ts +11 -5
  11. package/dist/src/SearchContext.d.ts.map +1 -1
  12. package/dist/src/SearchContext.js +4 -2
  13. package/dist/src/SearchContext.js.map +1 -1
  14. package/dist/src/ciCommitLink.d.ts +1 -1
  15. package/dist/src/ciCommitLink.d.ts.map +1 -1
  16. package/dist/src/ciCommitLink.js +1 -1
  17. package/dist/src/ciCommitLink.js.map +1 -1
  18. package/dist/src/components/app/CICommitLink.d.ts +2 -2
  19. package/dist/src/components/app/CICommitLink.d.ts.map +1 -1
  20. package/dist/src/components/app/CICommitLink.js +3 -8
  21. package/dist/src/components/app/CICommitLink.js.map +1 -1
  22. package/dist/src/components/app/CIJobLink.d.ts +2 -2
  23. package/dist/src/components/app/CIJobLink.d.ts.map +1 -1
  24. package/dist/src/components/app/CIJobLink.js +3 -7
  25. package/dist/src/components/app/CIJobLink.js.map +1 -1
  26. package/dist/src/components/app/ControlledSearchProvider.d.ts +2 -2
  27. package/dist/src/components/app/ControlledSearchProvider.d.ts.map +1 -1
  28. package/dist/src/components/app/ControlledSearchProvider.js +24 -2
  29. package/dist/src/components/app/ControlledSearchProvider.js.map +1 -1
  30. package/dist/src/components/app/CopyButton.d.ts +2 -1
  31. package/dist/src/components/app/CopyButton.d.ts.map +1 -1
  32. package/dist/src/components/app/CopyButton.js +4 -4
  33. package/dist/src/components/app/CopyButton.js.map +1 -1
  34. package/dist/src/components/app/DocumentAccordion.d.ts +3 -3
  35. package/dist/src/components/app/DocumentAccordion.d.ts.map +1 -1
  36. package/dist/src/components/app/DocumentAccordion.js +12 -20
  37. package/dist/src/components/app/DocumentAccordion.js.map +1 -1
  38. package/dist/src/components/app/DocumentAccordion.module.scss +15 -7
  39. package/dist/src/components/app/EnvelopesProvider.d.ts +2 -2
  40. package/dist/src/components/app/EnvelopesProvider.d.ts.map +1 -1
  41. package/dist/src/components/app/EnvelopesProvider.js +3 -2
  42. package/dist/src/components/app/EnvelopesProvider.js.map +1 -1
  43. package/dist/src/components/app/ExecutionSummary.d.ts +1 -1
  44. package/dist/src/components/app/ExecutionSummary.d.ts.map +1 -1
  45. package/dist/src/components/app/ExecutionSummary.js +3 -49
  46. package/dist/src/components/app/ExecutionSummary.js.map +1 -1
  47. package/dist/src/components/app/FilteredDocuments.d.ts +1 -1
  48. package/dist/src/components/app/FilteredDocuments.d.ts.map +1 -1
  49. package/dist/src/components/app/FilteredDocuments.js +4 -4
  50. package/dist/src/components/app/FilteredDocuments.js.map +1 -1
  51. package/dist/src/components/app/GherkinDocumentList.d.ts +3 -3
  52. package/dist/src/components/app/GherkinDocumentList.d.ts.map +1 -1
  53. package/dist/src/components/app/GherkinDocumentList.js +8 -9
  54. package/dist/src/components/app/GherkinDocumentList.js.map +1 -1
  55. package/dist/src/components/app/Header.d.ts +1 -1
  56. package/dist/src/components/app/Header.d.ts.map +1 -1
  57. package/dist/src/components/app/Header.js +4 -4
  58. package/dist/src/components/app/Header.js.map +1 -1
  59. package/dist/src/components/app/HealthChart.d.ts +1 -1
  60. package/dist/src/components/app/HealthChart.d.ts.map +1 -1
  61. package/dist/src/components/app/HealthChart.js +6 -7
  62. package/dist/src/components/app/HealthChart.js.map +1 -1
  63. package/dist/src/components/app/HighLight.d.ts +2 -2
  64. package/dist/src/components/app/HighLight.d.ts.map +1 -1
  65. package/dist/src/components/app/HighLight.js +15 -9
  66. package/dist/src/components/app/HighLight.js.map +1 -1
  67. package/dist/src/components/app/ImplementationIcon.d.ts +2 -2
  68. package/dist/src/components/app/ImplementationIcon.d.ts.map +1 -1
  69. package/dist/src/components/app/ImplementationIcon.js +2 -2
  70. package/dist/src/components/app/ImplementationIcon.js.map +1 -1
  71. package/dist/src/components/app/InMemorySearchProvider.d.ts +2 -2
  72. package/dist/src/components/app/InMemorySearchProvider.d.ts.map +1 -1
  73. package/dist/src/components/app/InMemorySearchProvider.js +3 -2
  74. package/dist/src/components/app/InMemorySearchProvider.js.map +1 -1
  75. package/dist/src/components/app/NavigationButton.d.ts +1 -1
  76. package/dist/src/components/app/NavigationButton.d.ts.map +1 -1
  77. package/dist/src/components/app/NavigationButton.js +2 -2
  78. package/dist/src/components/app/NavigationButton.js.map +1 -1
  79. package/dist/src/components/app/OSIcon.d.ts +2 -2
  80. package/dist/src/components/app/OSIcon.d.ts.map +1 -1
  81. package/dist/src/components/app/OSIcon.js +4 -4
  82. package/dist/src/components/app/OSIcon.js.map +1 -1
  83. package/dist/src/components/app/QueriesProvider.d.ts +3 -3
  84. package/dist/src/components/app/QueriesProvider.d.ts.map +1 -1
  85. package/dist/src/components/app/QueriesProvider.js +4 -3
  86. package/dist/src/components/app/QueriesProvider.js.map +1 -1
  87. package/dist/src/components/app/Report.d.ts +1 -1
  88. package/dist/src/components/app/Report.d.ts.map +1 -1
  89. package/dist/src/components/app/Report.js +2 -11
  90. package/dist/src/components/app/Report.js.map +1 -1
  91. package/dist/src/components/app/RuntimeIcon.d.ts +2 -2
  92. package/dist/src/components/app/RuntimeIcon.d.ts.map +1 -1
  93. package/dist/src/components/app/RuntimeIcon.js +4 -4
  94. package/dist/src/components/app/RuntimeIcon.js.map +1 -1
  95. package/dist/src/components/app/SearchBar.d.ts +1 -1
  96. package/dist/src/components/app/SearchBar.d.ts.map +1 -1
  97. package/dist/src/components/app/SearchBar.js +9 -24
  98. package/dist/src/components/app/SearchBar.js.map +1 -1
  99. package/dist/src/components/app/StatusesSummary.d.ts +1 -1
  100. package/dist/src/components/app/StatusesSummary.d.ts.map +1 -1
  101. package/dist/src/components/app/StatusesSummary.js +8 -11
  102. package/dist/src/components/app/StatusesSummary.js.map +1 -1
  103. package/dist/src/components/app/TestRunHooks.d.ts +1 -1
  104. package/dist/src/components/app/TestRunHooks.d.ts.map +1 -1
  105. package/dist/src/components/app/TestRunHooks.js +5 -5
  106. package/dist/src/components/app/TestRunHooks.js.map +1 -1
  107. package/dist/src/components/app/UrlSearchProvider.d.ts +1 -1
  108. package/dist/src/components/app/UrlSearchProvider.d.ts.map +1 -1
  109. package/dist/src/components/app/UrlSearchProvider.js +6 -3
  110. package/dist/src/components/app/UrlSearchProvider.js.map +1 -1
  111. package/dist/src/components/app/icons/CucumberLogo.d.ts +1 -1
  112. package/dist/src/components/app/icons/CucumberLogo.d.ts.map +1 -1
  113. package/dist/src/components/app/icons/CucumberLogo.js +2 -6
  114. package/dist/src/components/app/icons/CucumberLogo.js.map +1 -1
  115. package/dist/src/components/app/icons/Jvm.d.ts +1 -1
  116. package/dist/src/components/app/icons/Jvm.d.ts.map +1 -1
  117. package/dist/src/components/app/icons/Jvm.js +2 -7
  118. package/dist/src/components/app/icons/Jvm.js.map +1 -1
  119. package/dist/src/components/app/icons/Linux.d.ts +1 -1
  120. package/dist/src/components/app/icons/Linux.d.ts.map +1 -1
  121. package/dist/src/components/app/icons/Linux.js +2 -17
  122. package/dist/src/components/app/icons/Linux.js.map +1 -1
  123. package/dist/src/components/app/icons/MacOS.d.ts +1 -1
  124. package/dist/src/components/app/icons/MacOS.d.ts.map +1 -1
  125. package/dist/src/components/app/icons/MacOS.js +2 -3
  126. package/dist/src/components/app/icons/MacOS.js.map +1 -1
  127. package/dist/src/components/app/icons/NodeJs.d.ts +1 -1
  128. package/dist/src/components/app/icons/NodeJs.d.ts.map +1 -1
  129. package/dist/src/components/app/icons/NodeJs.js +2 -5
  130. package/dist/src/components/app/icons/NodeJs.js.map +1 -1
  131. package/dist/src/components/app/icons/Ruby.d.ts +1 -1
  132. package/dist/src/components/app/icons/Ruby.d.ts.map +1 -1
  133. package/dist/src/components/app/icons/Ruby.js +2 -3
  134. package/dist/src/components/app/icons/Ruby.js.map +1 -1
  135. package/dist/src/components/app/icons/Windows.d.ts +1 -1
  136. package/dist/src/components/app/icons/Windows.d.ts.map +1 -1
  137. package/dist/src/components/app/icons/Windows.js +2 -3
  138. package/dist/src/components/app/icons/Windows.js.map +1 -1
  139. package/dist/src/components/app/makeSetupString.d.ts +1 -1
  140. package/dist/src/components/app/makeSetupString.d.ts.map +1 -1
  141. package/dist/src/components/app/makeSetupString.js.map +1 -1
  142. package/dist/src/components/app/markdownComponents.d.ts +9 -0
  143. package/dist/src/components/app/markdownComponents.d.ts.map +1 -0
  144. package/dist/src/components/app/markdownComponents.js +6 -0
  145. package/dist/src/components/app/markdownComponents.js.map +1 -0
  146. package/dist/src/components/app/rehypePlugins.d.ts +2 -2
  147. package/dist/src/components/app/rehypePlugins.d.ts.map +1 -1
  148. package/dist/src/components/app/rehypePlugins.js.map +1 -1
  149. package/dist/src/components/app/remarkPlugins.d.ts +2 -2
  150. package/dist/src/components/app/remarkPlugins.d.ts.map +1 -1
  151. package/dist/src/components/app/remarkPlugins.js.map +1 -1
  152. package/dist/src/components/customise/CustomRendering.d.ts +18 -18
  153. package/dist/src/components/customise/CustomRendering.d.ts.map +1 -1
  154. package/dist/src/components/customise/CustomRendering.js +10 -9
  155. package/dist/src/components/customise/CustomRendering.js.map +1 -1
  156. package/dist/src/components/customise/CustomRendering.stories.scss +0 -17
  157. package/dist/src/components/gherkin/Anchor.d.ts +3 -3
  158. package/dist/src/components/gherkin/Anchor.d.ts.map +1 -1
  159. package/dist/src/components/gherkin/Anchor.js +3 -6
  160. package/dist/src/components/gherkin/Anchor.js.map +1 -1
  161. package/dist/src/components/gherkin/Background.d.ts +3 -3
  162. package/dist/src/components/gherkin/Background.d.ts.map +1 -1
  163. package/dist/src/components/gherkin/Background.js +4 -10
  164. package/dist/src/components/gherkin/Background.js.map +1 -1
  165. package/dist/src/components/gherkin/Children.d.ts +3 -3
  166. package/dist/src/components/gherkin/Children.d.ts.map +1 -1
  167. package/dist/src/components/gherkin/Children.js +3 -3
  168. package/dist/src/components/gherkin/Children.js.map +1 -1
  169. package/dist/src/components/gherkin/DataTable.d.ts +3 -3
  170. package/dist/src/components/gherkin/DataTable.d.ts.map +1 -1
  171. package/dist/src/components/gherkin/DataTable.js +4 -6
  172. package/dist/src/components/gherkin/DataTable.js.map +1 -1
  173. package/dist/src/components/gherkin/Description.d.ts +3 -3
  174. package/dist/src/components/gherkin/Description.d.ts.map +1 -1
  175. package/dist/src/components/gherkin/Description.js +3 -4
  176. package/dist/src/components/gherkin/Description.js.map +1 -1
  177. package/dist/src/components/gherkin/DocString.d.ts +3 -3
  178. package/dist/src/components/gherkin/DocString.d.ts.map +1 -1
  179. package/dist/src/components/gherkin/DocString.js +3 -4
  180. package/dist/src/components/gherkin/DocString.js.map +1 -1
  181. package/dist/src/components/gherkin/ErrorMessage.d.ts +2 -2
  182. package/dist/src/components/gherkin/ErrorMessage.d.ts.map +1 -1
  183. package/dist/src/components/gherkin/ErrorMessage.js +5 -3
  184. package/dist/src/components/gherkin/ErrorMessage.js.map +1 -1
  185. package/dist/src/components/gherkin/ErrorMessage.module.scss +17 -5
  186. package/dist/src/components/gherkin/Examples.d.ts +3 -3
  187. package/dist/src/components/gherkin/Examples.d.ts.map +1 -1
  188. package/dist/src/components/gherkin/Examples.js +7 -18
  189. package/dist/src/components/gherkin/Examples.js.map +1 -1
  190. package/dist/src/components/gherkin/Feature.d.ts +3 -3
  191. package/dist/src/components/gherkin/Feature.d.ts.map +1 -1
  192. package/dist/src/components/gherkin/Feature.js +14 -24
  193. package/dist/src/components/gherkin/Feature.js.map +1 -1
  194. package/dist/src/components/gherkin/GherkinDocument.d.ts +3 -3
  195. package/dist/src/components/gherkin/GherkinDocument.d.ts.map +1 -1
  196. package/dist/src/components/gherkin/GherkinDocument.js +3 -3
  197. package/dist/src/components/gherkin/GherkinDocument.js.map +1 -1
  198. package/dist/src/components/gherkin/Keyword.d.ts +2 -2
  199. package/dist/src/components/gherkin/Keyword.d.ts.map +1 -1
  200. package/dist/src/components/gherkin/Keyword.js +3 -3
  201. package/dist/src/components/gherkin/Keyword.js.map +1 -1
  202. package/dist/src/components/gherkin/Keyword.module.scss +0 -1
  203. package/dist/src/components/gherkin/Parameter.d.ts +3 -3
  204. package/dist/src/components/gherkin/Parameter.d.ts.map +1 -1
  205. package/dist/src/components/gherkin/Parameter.js +4 -4
  206. package/dist/src/components/gherkin/Parameter.js.map +1 -1
  207. package/dist/src/components/gherkin/Rule.d.ts +3 -3
  208. package/dist/src/components/gherkin/Rule.d.ts.map +1 -1
  209. package/dist/src/components/gherkin/Rule.js +11 -21
  210. package/dist/src/components/gherkin/Rule.js.map +1 -1
  211. package/dist/src/components/gherkin/Scenario.d.ts +3 -3
  212. package/dist/src/components/gherkin/Scenario.d.ts.map +1 -1
  213. package/dist/src/components/gherkin/Scenario.js +5 -14
  214. package/dist/src/components/gherkin/Scenario.js.map +1 -1
  215. package/dist/src/components/gherkin/StatusIcon.d.ts +2 -2
  216. package/dist/src/components/gherkin/StatusIcon.d.ts.map +1 -1
  217. package/dist/src/components/gherkin/StatusIcon.js +10 -10
  218. package/dist/src/components/gherkin/StatusIcon.js.map +1 -1
  219. package/dist/src/components/gherkin/StepsList.d.ts +1 -1
  220. package/dist/src/components/gherkin/StepsList.d.ts.map +1 -1
  221. package/dist/src/components/gherkin/StepsList.js +2 -2
  222. package/dist/src/components/gherkin/StepsList.js.map +1 -1
  223. package/dist/src/components/gherkin/Tags.d.ts +3 -3
  224. package/dist/src/components/gherkin/Tags.d.ts.map +1 -1
  225. package/dist/src/components/gherkin/Tags.js +4 -5
  226. package/dist/src/components/gherkin/Tags.js.map +1 -1
  227. package/dist/src/components/gherkin/Title.d.ts +3 -3
  228. package/dist/src/components/gherkin/Title.d.ts.map +1 -1
  229. package/dist/src/components/gherkin/Title.js +3 -4
  230. package/dist/src/components/gherkin/Title.js.map +1 -1
  231. package/dist/src/components/gherkin/attachment/Attachment.d.ts +3 -3
  232. package/dist/src/components/gherkin/attachment/Attachment.d.ts.map +1 -1
  233. package/dist/src/components/gherkin/attachment/Attachment.js +14 -17
  234. package/dist/src/components/gherkin/attachment/Attachment.js.map +1 -1
  235. package/dist/src/components/gherkin/attachment/Attachment.module.scss +15 -5
  236. package/dist/src/components/gherkin/attachment/Image.d.ts +4 -4
  237. package/dist/src/components/gherkin/attachment/Image.d.ts.map +1 -1
  238. package/dist/src/components/gherkin/attachment/Image.js +6 -8
  239. package/dist/src/components/gherkin/attachment/Image.js.map +1 -1
  240. package/dist/src/components/gherkin/attachment/Links.d.ts +3 -3
  241. package/dist/src/components/gherkin/attachment/Links.d.ts.map +1 -1
  242. package/dist/src/components/gherkin/attachment/Links.js +7 -10
  243. package/dist/src/components/gherkin/attachment/Links.js.map +1 -1
  244. package/dist/src/components/gherkin/attachment/Log.d.ts +3 -3
  245. package/dist/src/components/gherkin/attachment/Log.d.ts.map +1 -1
  246. package/dist/src/components/gherkin/attachment/Log.js +3 -3
  247. package/dist/src/components/gherkin/attachment/Log.js.map +1 -1
  248. package/dist/src/components/gherkin/attachment/Text.d.ts +3 -3
  249. package/dist/src/components/gherkin/attachment/Text.d.ts.map +1 -1
  250. package/dist/src/components/gherkin/attachment/Text.js +4 -6
  251. package/dist/src/components/gherkin/attachment/Text.js.map +1 -1
  252. package/dist/src/components/gherkin/attachment/Unknown.d.ts +2 -2
  253. package/dist/src/components/gherkin/attachment/Unknown.d.ts.map +1 -1
  254. package/dist/src/components/gherkin/attachment/Unknown.js +9 -17
  255. package/dist/src/components/gherkin/attachment/Unknown.js.map +1 -1
  256. package/dist/src/components/gherkin/attachment/Video.d.ts +3 -3
  257. package/dist/src/components/gherkin/attachment/Video.d.ts.map +1 -1
  258. package/dist/src/components/gherkin/attachment/Video.js +6 -10
  259. package/dist/src/components/gherkin/attachment/Video.js.map +1 -1
  260. package/dist/src/components/gherkin/attachment/attachmentFilename.d.ts +1 -1
  261. package/dist/src/components/gherkin/attachment/attachmentFilename.d.ts.map +1 -1
  262. package/dist/src/components/gherkin/attachment/attachmentFilename.js.map +1 -1
  263. package/dist/src/components/gherkin/attachment/base64Decode.d.ts +9 -1
  264. package/dist/src/components/gherkin/attachment/base64Decode.d.ts.map +1 -1
  265. package/dist/src/components/gherkin/attachment/base64Decode.js +17 -3
  266. package/dist/src/components/gherkin/attachment/base64Decode.js.map +1 -1
  267. package/dist/src/components/gherkin/attachment/useText.d.ts +1 -1
  268. package/dist/src/components/gherkin/attachment/useText.d.ts.map +1 -1
  269. package/dist/src/components/gherkin/attachment/useText.js +3 -3
  270. package/dist/src/components/gherkin/attachment/useText.js.map +1 -1
  271. package/dist/src/components/gherkin/composeHookStepTitle.d.ts +1 -1
  272. package/dist/src/components/gherkin/composeHookStepTitle.d.ts.map +1 -1
  273. package/dist/src/components/gherkin/composeHookStepTitle.js +1 -1
  274. package/dist/src/components/gherkin/composeHookStepTitle.js.map +1 -1
  275. package/dist/src/components/gherkin/composePickleStepTitle.d.ts +1 -1
  276. package/dist/src/components/gherkin/composePickleStepTitle.d.ts.map +1 -1
  277. package/dist/src/components/gherkin/composePickleStepTitle.js +2 -2
  278. package/dist/src/components/gherkin/composePickleStepTitle.js.map +1 -1
  279. package/dist/src/components/gherkin/statusName.d.ts +2 -2
  280. package/dist/src/components/gherkin/statusName.d.ts.map +1 -1
  281. package/dist/src/components/gherkin/statusName.js.map +1 -1
  282. package/dist/src/components/results/AmbiguousResult.d.ts +8 -0
  283. package/dist/src/components/results/AmbiguousResult.d.ts.map +1 -0
  284. package/dist/src/components/results/AmbiguousResult.js +11 -0
  285. package/dist/src/components/results/AmbiguousResult.js.map +1 -0
  286. package/dist/src/components/results/AmbiguousResult.module.scss +22 -0
  287. package/dist/src/components/results/FailedResult.d.ts +8 -0
  288. package/dist/src/components/results/FailedResult.d.ts.map +1 -0
  289. package/dist/src/components/results/FailedResult.js +15 -0
  290. package/dist/src/components/results/FailedResult.js.map +1 -0
  291. package/dist/src/components/results/PendingResult.d.ts +8 -0
  292. package/dist/src/components/results/PendingResult.d.ts.map +1 -0
  293. package/dist/src/components/results/PendingResult.js +12 -0
  294. package/dist/src/components/results/PendingResult.js.map +1 -0
  295. package/dist/src/components/results/ResultNote.d.ts +3 -0
  296. package/dist/src/components/results/ResultNote.d.ts.map +1 -0
  297. package/dist/src/components/results/ResultNote.js +6 -0
  298. package/dist/src/components/results/ResultNote.js.map +1 -0
  299. package/dist/src/components/results/ResultNote.module.scss +6 -0
  300. package/dist/src/components/results/SkippedResult.d.ts +8 -0
  301. package/dist/src/components/results/SkippedResult.d.ts.map +1 -0
  302. package/dist/src/components/results/SkippedResult.js +12 -0
  303. package/dist/src/components/results/SkippedResult.js.map +1 -0
  304. package/dist/src/components/results/SourceReference.d.ts +8 -0
  305. package/dist/src/components/results/SourceReference.d.ts.map +1 -0
  306. package/dist/src/components/results/SourceReference.js +13 -0
  307. package/dist/src/components/results/SourceReference.js.map +1 -0
  308. package/dist/src/components/results/SourceReference.module.scss +10 -0
  309. package/dist/src/components/results/TestCaseOutcome.d.ts +2 -2
  310. package/dist/src/components/results/TestCaseOutcome.d.ts.map +1 -1
  311. package/dist/src/components/results/TestCaseOutcome.js +5 -9
  312. package/dist/src/components/results/TestCaseOutcome.js.map +1 -1
  313. package/dist/src/components/results/TestRunHookOutcome.d.ts +2 -2
  314. package/dist/src/components/results/TestRunHookOutcome.d.ts.map +1 -1
  315. package/dist/src/components/results/TestRunHookOutcome.js +4 -13
  316. package/dist/src/components/results/TestRunHookOutcome.js.map +1 -1
  317. package/dist/src/components/results/TestStepAttachments.d.ts +2 -2
  318. package/dist/src/components/results/TestStepAttachments.d.ts.map +1 -1
  319. package/dist/src/components/results/TestStepAttachments.js +4 -5
  320. package/dist/src/components/results/TestStepAttachments.js.map +1 -1
  321. package/dist/src/components/results/TestStepDuration.d.ts +2 -2
  322. package/dist/src/components/results/TestStepDuration.d.ts.map +1 -1
  323. package/dist/src/components/results/TestStepDuration.js +4 -2
  324. package/dist/src/components/results/TestStepDuration.js.map +1 -1
  325. package/dist/src/components/results/TestStepOutcome.d.ts +2 -2
  326. package/dist/src/components/results/TestStepOutcome.d.ts.map +1 -1
  327. package/dist/src/components/results/TestStepOutcome.js +18 -27
  328. package/dist/src/components/results/TestStepOutcome.js.map +1 -1
  329. package/dist/src/components/results/TestStepOutcome.module.scss +1 -1
  330. package/dist/src/components/results/UndefinedResult.d.ts +8 -0
  331. package/dist/src/components/results/UndefinedResult.d.ts.map +1 -0
  332. package/dist/src/components/results/UndefinedResult.js +18 -0
  333. package/dist/src/components/results/UndefinedResult.js.map +1 -0
  334. package/dist/src/components/results/UndefinedResult.module.scss +14 -0
  335. package/dist/src/components/results/index.d.ts +1 -1
  336. package/dist/src/components/results/index.d.ts.map +1 -1
  337. package/dist/src/components/results/index.js +1 -1
  338. package/dist/src/components/results/index.js.map +1 -1
  339. package/dist/src/formatExecutionDuration.js.map +1 -1
  340. package/dist/src/hooks/helpers.js.map +1 -1
  341. package/dist/src/hooks/useFilteredDocuments.d.ts +2 -2
  342. package/dist/src/hooks/useFilteredDocuments.d.ts.map +1 -1
  343. package/dist/src/hooks/useFilteredDocuments.js +70 -18
  344. package/dist/src/hooks/useFilteredDocuments.js.map +1 -1
  345. package/dist/src/hooks/useMostSevereStatusByUri.js.map +1 -1
  346. package/dist/src/hooks/useQueries.d.ts +2 -2
  347. package/dist/src/hooks/useQueries.d.ts.map +1 -1
  348. package/dist/src/hooks/useQueries.js.map +1 -1
  349. package/dist/src/hooks/useResultStatistics.d.ts +3 -2
  350. package/dist/src/hooks/useResultStatistics.d.ts.map +1 -1
  351. package/dist/src/hooks/useResultStatistics.js +19 -2
  352. package/dist/src/hooks/useResultStatistics.js.map +1 -1
  353. package/dist/src/hooks/useSearch.d.ts +1 -1
  354. package/dist/src/hooks/useSearch.d.ts.map +1 -1
  355. package/dist/src/hooks/useSearch.js.map +1 -1
  356. package/dist/src/hooks/useTestCaseStarted.d.ts +6 -1
  357. package/dist/src/hooks/useTestCaseStarted.d.ts.map +1 -1
  358. package/dist/src/hooks/useTestCaseStarted.js +13 -10
  359. package/dist/src/hooks/useTestCaseStarted.js.map +1 -1
  360. package/dist/src/hooks/useTestRunHooks.d.ts +1 -1
  361. package/dist/src/hooks/useTestRunHooks.d.ts.map +1 -1
  362. package/dist/src/hooks/useTestRunHooks.js.map +1 -1
  363. package/dist/src/search/FeatureSearch.d.ts +12 -3
  364. package/dist/src/search/FeatureSearch.d.ts.map +1 -1
  365. package/dist/src/search/FeatureSearch.js +9 -17
  366. package/dist/src/search/FeatureSearch.js.map +1 -1
  367. package/dist/src/search/ScenarioLikeSearch.d.ts +8 -13
  368. package/dist/src/search/ScenarioLikeSearch.d.ts.map +1 -1
  369. package/dist/src/search/ScenarioLikeSearch.js +13 -17
  370. package/dist/src/search/ScenarioLikeSearch.js.map +1 -1
  371. package/dist/src/search/StepSearch.d.ts +9 -16
  372. package/dist/src/search/StepSearch.d.ts.map +1 -1
  373. package/dist/src/search/StepSearch.js +13 -17
  374. package/dist/src/search/StepSearch.js.map +1 -1
  375. package/dist/src/search/TextSearch.d.ts +11 -2
  376. package/dist/src/search/TextSearch.d.ts.map +1 -1
  377. package/dist/src/search/TextSearch.js +59 -52
  378. package/dist/src/search/TextSearch.js.map +1 -1
  379. package/dist/src/search/createSearchIndex.d.ts +7 -0
  380. package/dist/src/search/createSearchIndex.d.ts.map +1 -0
  381. package/dist/src/search/createSearchIndex.js +10 -0
  382. package/dist/src/search/createSearchIndex.js.map +1 -0
  383. package/dist/src/search/deriveLineageConstraints.d.ts +8 -0
  384. package/dist/src/search/deriveLineageConstraints.d.ts.map +1 -0
  385. package/dist/src/search/deriveLineageConstraints.js +38 -0
  386. package/dist/src/search/deriveLineageConstraints.js.map +1 -0
  387. package/dist/src/search/index.d.ts +3 -1
  388. package/dist/src/search/index.d.ts.map +1 -1
  389. package/dist/src/search/index.js +3 -1
  390. package/dist/src/search/index.js.map +1 -1
  391. package/dist/src/search/pruneGherkinDocuments.d.ts +24 -0
  392. package/dist/src/search/pruneGherkinDocuments.d.ts.map +1 -0
  393. package/dist/src/search/pruneGherkinDocuments.js +180 -0
  394. package/dist/src/search/pruneGherkinDocuments.js.map +1 -0
  395. package/dist/src/search/types.d.ts +39 -8
  396. package/dist/src/search/types.d.ts.map +1 -1
  397. package/dist/src/search/types.js +1 -1
  398. package/dist/src/search/types.js.map +1 -1
  399. package/dist/src/styles/statuses.scss +7 -13
  400. package/dist/src/toRepositoryId.d.ts +1 -1
  401. package/dist/src/toRepositoryId.d.ts.map +1 -1
  402. package/dist/src/toRepositoryId.js +7 -6
  403. package/dist/src/toRepositoryId.js.map +1 -1
  404. package/dist/tsconfig.build.tsbuildinfo +1 -1
  405. package/package.json +56 -71
  406. package/dist/src/components/results/TestStepResultDetails.d.ts +0 -4
  407. package/dist/src/components/results/TestStepResultDetails.d.ts.map +0 -1
  408. package/dist/src/components/results/TestStepResultDetails.js +0 -16
  409. package/dist/src/components/results/TestStepResultDetails.js.map +0 -1
  410. package/dist/src/countScenariosByStatuses.d.ts +0 -8
  411. package/dist/src/countScenariosByStatuses.d.ts.map +0 -1
  412. package/dist/src/countScenariosByStatuses.js +0 -22
  413. package/dist/src/countScenariosByStatuses.js.map +0 -1
  414. package/dist/src/filter/filterByStatus.d.ts +0 -5
  415. package/dist/src/filter/filterByStatus.d.ts.map +0 -1
  416. package/dist/src/filter/filterByStatus.js +0 -23
  417. package/dist/src/filter/filterByStatus.js.map +0 -1
  418. package/dist/src/search/Search.d.ts +0 -11
  419. package/dist/src/search/Search.d.ts.map +0 -1
  420. package/dist/src/search/Search.js +0 -46
  421. package/dist/src/search/Search.js.map +0 -1
  422. package/dist/src/search/TagSearch.d.ts +0 -4
  423. package/dist/src/search/TagSearch.d.ts.map +0 -1
  424. package/dist/src/search/TagSearch.js +0 -57
  425. package/dist/src/search/TagSearch.js.map +0 -1
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- The MIT License (MIT)
1
+ MIT License
2
2
 
3
3
  Copyright (c) Cucumber Ltd
4
4
 
@@ -1,5 +1,4 @@
1
1
  import { Query as CucumberQuery } from '@cucumber/query';
2
- import React from 'react';
3
- declare const _default: React.Context<CucumberQuery>;
2
+ declare const _default: import("react").Context<CucumberQuery>;
4
3
  export default _default;
5
4
  //# sourceMappingURL=CucumberQueryContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CucumberQueryContext.d.ts","sourceRoot":"","sources":["../../src/CucumberQueryContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,MAAM,OAAO,CAAA;;AAEzB,wBAAuD"}
1
+ {"version":3,"file":"CucumberQueryContext.d.ts","sourceRoot":"","sources":["../../src/CucumberQueryContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;;AAGxD,wBAAiD"}
@@ -1,4 +1,4 @@
1
1
  import { Query as CucumberQuery } from '@cucumber/query';
2
- import React from 'react';
3
- export default React.createContext(new CucumberQuery());
2
+ import { createContext } from 'react';
3
+ export default createContext(new CucumberQuery());
4
4
  //# sourceMappingURL=CucumberQueryContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CucumberQueryContext.js","sourceRoot":"","sources":["../../src/CucumberQueryContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,eAAe,KAAK,CAAC,aAAa,CAAC,IAAI,aAAa,EAAE,CAAC,CAAA","sourcesContent":["import { Query as CucumberQuery } from '@cucumber/query'\nimport React from 'react'\n\nexport default React.createContext(new CucumberQuery())\n"]}
1
+ {"version":3,"file":"CucumberQueryContext.js","sourceRoot":"","sources":["../../src/CucumberQueryContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,eAAe,aAAa,CAAC,IAAI,aAAa,EAAE,CAAC,CAAA","sourcesContent":["import { Query as CucumberQuery } from '@cucumber/query'\nimport { createContext } from 'react'\n\nexport default createContext(new CucumberQuery())\n"]}
@@ -1,5 +1,4 @@
1
1
  import { Query as GherkinQuery } from '@cucumber/gherkin-utils';
2
- import React from 'react';
3
- declare const _default: React.Context<GherkinQuery>;
2
+ declare const _default: import("react").Context<GherkinQuery>;
4
3
  export default _default;
5
4
  //# sourceMappingURL=GherkinQueryContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GherkinQueryContext.d.ts","sourceRoot":"","sources":["../../src/GherkinQueryContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,MAAM,OAAO,CAAA;;AAEzB,wBAAsD"}
1
+ {"version":3,"file":"GherkinQueryContext.d.ts","sourceRoot":"","sources":["../../src/GherkinQueryContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;;AAG/D,wBAAgD"}
@@ -1,4 +1,4 @@
1
1
  import { Query as GherkinQuery } from '@cucumber/gherkin-utils';
2
- import React from 'react';
3
- export default React.createContext(new GherkinQuery());
2
+ import { createContext } from 'react';
3
+ export default createContext(new GherkinQuery());
4
4
  //# sourceMappingURL=GherkinQueryContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GherkinQueryContext.js","sourceRoot":"","sources":["../../src/GherkinQueryContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,eAAe,KAAK,CAAC,aAAa,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA","sourcesContent":["import { Query as GherkinQuery } from '@cucumber/gherkin-utils'\nimport React from 'react'\n\nexport default React.createContext(new GherkinQuery())\n"]}
1
+ {"version":3,"file":"GherkinQueryContext.js","sourceRoot":"","sources":["../../src/GherkinQueryContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,eAAe,aAAa,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA","sourcesContent":["import { Query as GherkinQuery } from '@cucumber/gherkin-utils'\nimport { createContext } from 'react'\n\nexport default createContext(new GherkinQuery())\n"]}
@@ -1,13 +1,19 @@
1
- import { TestStepResultStatus as Status } from '@cucumber/messages';
2
- import React from 'react';
1
+ import type { TestStepResultStatus as Status } from '@cucumber/messages';
2
+ import type { Node } from '@cucumber/tag-expressions';
3
3
  export interface SearchState {
4
4
  readonly query: string;
5
5
  readonly hideStatuses: readonly Status[];
6
6
  }
7
- export interface SearchContextValue extends SearchState {
8
- unchanged: boolean;
7
+ export interface SearchOperations {
9
8
  update: (changes: Partial<SearchState>) => void;
10
9
  }
11
- declare const _default: React.Context<SearchContextValue>;
10
+ export interface FilterCriteria {
11
+ readonly hideStatuses: readonly Status[];
12
+ readonly searchTerm?: string;
13
+ readonly tagExpression?: Node;
14
+ readonly unchanged: boolean;
15
+ }
16
+ export type SearchContextValue = SearchState & SearchOperations & FilterCriteria;
17
+ declare const _default: import("react").Context<SearchContextValue>;
12
18
  export default _default;
13
19
  //# sourceMappingURL=SearchContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchContext.d.ts","sourceRoot":"","sources":["../../src/SearchContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;CAChD;;AAED,wBAKE"}
1
+ {"version":3,"file":"SearchContext.d.ts","sourceRoot":"","sources":["../../src/SearchContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AAGrD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;CAChD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAA;;AAEhF,wBAOE"}
@@ -1,8 +1,10 @@
1
- import React from 'react';
2
- export default React.createContext({
1
+ import { createContext } from 'react';
2
+ export default createContext({
3
3
  query: '',
4
4
  hideStatuses: [],
5
5
  unchanged: true,
6
+ searchTerm: undefined,
7
+ tagExpression: undefined,
6
8
  update: () => { },
7
9
  });
8
10
  //# sourceMappingURL=SearchContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchContext.js","sourceRoot":"","sources":["../../src/SearchContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,eAAe,KAAK,CAAC,aAAa,CAAqB;IACrD,KAAK,EAAE,EAAE;IACT,YAAY,EAAE,EAAE;IAChB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;CACjB,CAAC,CAAA","sourcesContent":["import { TestStepResultStatus as Status } from '@cucumber/messages'\nimport React from 'react'\n\nexport interface SearchState {\n readonly query: string\n readonly hideStatuses: readonly Status[]\n}\n\nexport interface SearchContextValue extends SearchState {\n unchanged: boolean\n update: (changes: Partial<SearchState>) => void\n}\n\nexport default React.createContext<SearchContextValue>({\n query: '',\n hideStatuses: [],\n unchanged: true,\n update: () => {},\n})\n"]}
1
+ {"version":3,"file":"SearchContext.js","sourceRoot":"","sources":["../../src/SearchContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAoBrC,eAAe,aAAa,CAAqB;IAC/C,KAAK,EAAE,EAAE;IACT,YAAY,EAAE,EAAE;IAChB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,SAAS;IACxB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;CACjB,CAAC,CAAA","sourcesContent":["import type { TestStepResultStatus as Status } from '@cucumber/messages'\nimport type { Node } from '@cucumber/tag-expressions'\nimport { createContext } from 'react'\n\nexport interface SearchState {\n readonly query: string\n readonly hideStatuses: readonly Status[]\n}\n\nexport interface SearchOperations {\n update: (changes: Partial<SearchState>) => void\n}\n\nexport interface FilterCriteria {\n readonly hideStatuses: readonly Status[]\n readonly searchTerm?: string\n readonly tagExpression?: Node\n readonly unchanged: boolean\n}\n\nexport type SearchContextValue = SearchState & SearchOperations & FilterCriteria\n\nexport default createContext<SearchContextValue>({\n query: '',\n hideStatuses: [],\n unchanged: true,\n searchTerm: undefined,\n tagExpression: undefined,\n update: () => {},\n})\n"]}
@@ -1,3 +1,3 @@
1
- import { Ci } from '@cucumber/messages';
1
+ import type { Ci } from '@cucumber/messages';
2
2
  export default function ciCommitLink(ci: Ci): string | undefined;
3
3
  //# sourceMappingURL=ciCommitLink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ciCommitLink.d.ts","sourceRoot":"","sources":["../../src/ciCommitLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAKvC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,GAAG,SAAS,CAQ/D"}
1
+ {"version":3,"file":"ciCommitLink.d.ts","sourceRoot":"","sources":["../../src/ciCommitLink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAK5C,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,GAAG,SAAS,CAQ/D"}
@@ -1,7 +1,7 @@
1
1
  import toRepositoryId from './toRepositoryId.js';
2
2
  // TODO move upstream to create-meta
3
3
  export default function ciCommitLink(ci) {
4
- if (ci.git && ci.git.remote) {
4
+ if (ci.git?.remote) {
5
5
  const repositoryId = toRepositoryId(ci.git.remote);
6
6
  const github = repositoryId.startsWith('github.com') || ci.name === 'GitHub Actions';
7
7
  if (ci.git.revision && github) {
@@ -1 +1 @@
1
- {"version":3,"file":"ciCommitLink.js","sourceRoot":"","sources":["../../src/ciCommitLink.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,qBAAqB,CAAA;AAEhD,oCAAoC;AACpC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAM;IACzC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;QAC3B,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAA;QACpF,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,EAAE;YAC7B,OAAO,WAAW,YAAY,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;SAC3D;KACF;AACH,CAAC","sourcesContent":["import { Ci } from '@cucumber/messages'\n\nimport toRepositoryId from './toRepositoryId.js'\n\n// TODO move upstream to create-meta\nexport default function ciCommitLink(ci: Ci): string | undefined {\n if (ci.git && ci.git.remote) {\n const repositoryId = toRepositoryId(ci.git.remote)\n const github = repositoryId.startsWith('github.com') || ci.name === 'GitHub Actions'\n if (ci.git.revision && github) {\n return `https://${repositoryId}/commit/${ci.git.revision}`\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ciCommitLink.js","sourceRoot":"","sources":["../../src/ciCommitLink.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,qBAAqB,CAAA;AAEhD,oCAAoC;AACpC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAM;IACzC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAA;QACpF,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,OAAO,WAAW,YAAY,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QAC5D,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import type { Ci } from '@cucumber/messages'\n\nimport toRepositoryId from './toRepositoryId.js'\n\n// TODO move upstream to create-meta\nexport default function ciCommitLink(ci: Ci): string | undefined {\n if (ci.git?.remote) {\n const repositoryId = toRepositoryId(ci.git.remote)\n const github = repositoryId.startsWith('github.com') || ci.name === 'GitHub Actions'\n if (ci.git.revision && github) {\n return `https://${repositoryId}/commit/${ci.git.revision}`\n }\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { Ci } from '@cucumber/messages';
2
- import { FC } from 'react';
1
+ import type { Ci } from '@cucumber/messages';
2
+ import type { FC } from 'react';
3
3
  export declare const CICommitLink: FC<{
4
4
  ci: Ci;
5
5
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"CICommitLink.d.ts","sourceRoot":"","sources":["../../../../src/components/app/CICommitLink.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAGvC,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAIjC,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC;IAC5B,EAAE,EAAE,EAAE,CAAA;CACP,CAwBA,CAAA"}
1
+ {"version":3,"file":"CICommitLink.d.ts","sourceRoot":"","sources":["../../../../src/components/app/CICommitLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAG5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAI/B,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC;IAC5B,EAAE,EAAE,EAAE,CAAA;CACP,CAwBA,CAAA"}
@@ -1,6 +1,6 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
2
  import { faCodeCommit } from '@fortawesome/free-solid-svg-icons';
2
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
- import React from 'react';
4
4
  import ciCommitLink from '../../ciCommitLink.js';
5
5
  export const CICommitLink = ({ ci }) => {
6
6
  if (!ci.git) {
@@ -9,13 +9,8 @@ export const CICommitLink = ({ ci }) => {
9
9
  const shortHash = ci.git.revision.substring(0, 7);
10
10
  const commitLink = ciCommitLink(ci);
11
11
  if (commitLink) {
12
- return (React.createElement(React.Fragment, null,
13
- React.createElement(FontAwesomeIcon, { "aria-hidden": "true", style: { opacity: 0.75 }, icon: faCodeCommit }),
14
- React.createElement("a", { href: commitLink, target: "_blank", rel: "noreferrer" },
15
- React.createElement("code", null, shortHash))));
12
+ return (_jsxs(_Fragment, { children: [_jsx(FontAwesomeIcon, { "aria-hidden": "true", style: { opacity: 0.75 }, icon: faCodeCommit }), _jsx("a", { href: commitLink, target: "_blank", rel: "noopener nofollow noreferrer", children: _jsx("code", { children: shortHash }) })] }));
16
13
  }
17
- return (React.createElement(React.Fragment, null,
18
- React.createElement(FontAwesomeIcon, { "aria-hidden": "true", style: { opacity: 0.75 }, icon: faCodeCommit }),
19
- React.createElement("code", null, shortHash)));
14
+ return (_jsxs(_Fragment, { children: [_jsx(FontAwesomeIcon, { "aria-hidden": "true", style: { opacity: 0.75 }, icon: faCodeCommit }), _jsx("code", { children: shortHash })] }));
20
15
  };
21
16
  //# sourceMappingURL=CICommitLink.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CICommitLink.js","sourceRoot":"","sources":["../../../../src/components/app/CICommitLink.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAa,MAAM,OAAO,CAAA;AAEjC,OAAO,YAAY,MAAM,uBAAuB,CAAA;AAEhD,MAAM,CAAC,MAAM,YAAY,GAEpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IACd,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;QACX,OAAO,IAAI,CAAA;KACZ;IAED,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACjD,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;IAEnC,IAAI,UAAU,EAAE;QACd,OAAO,CACL;YACE,oBAAC,eAAe,mBAAa,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,GAAI;YACpF,2BAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY;gBACnD,kCAAO,SAAS,CAAQ,CACtB,CACH,CACJ,CAAA;KACF;IACD,OAAO,CACL;QACE,oBAAC,eAAe,mBAAa,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,GAAI;QACpF,kCAAO,SAAS,CAAQ,CACvB,CACJ,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { Ci } from '@cucumber/messages'\nimport { faCodeCommit } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React, { FC } from 'react'\n\nimport ciCommitLink from '../../ciCommitLink.js'\n\nexport const CICommitLink: FC<{\n ci: Ci\n}> = ({ ci }) => {\n if (!ci.git) {\n return null\n }\n\n const shortHash = ci.git.revision.substring(0, 7)\n const commitLink = ciCommitLink(ci)\n\n if (commitLink) {\n return (\n <>\n <FontAwesomeIcon aria-hidden=\"true\" style={{ opacity: 0.75 }} icon={faCodeCommit} />\n <a href={commitLink} target=\"_blank\" rel=\"noreferrer\">\n <code>{shortHash}</code>\n </a>\n </>\n )\n }\n return (\n <>\n <FontAwesomeIcon aria-hidden=\"true\" style={{ opacity: 0.75 }} icon={faCodeCommit} />\n <code>{shortHash}</code>\n </>\n )\n}\n"]}
1
+ {"version":3,"file":"CICommitLink.js","sourceRoot":"","sources":["../../../../src/components/app/CICommitLink.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAGhE,OAAO,YAAY,MAAM,uBAAuB,CAAA;AAEhD,MAAM,CAAC,MAAM,YAAY,GAEpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IACd,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QACZ,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACjD,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;IAEnC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CACL,8BACE,KAAC,eAAe,mBAAa,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,GAAI,EACpF,YAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,8BAA8B,YACrE,yBAAO,SAAS,GAAQ,GACtB,IACH,CACJ,CAAA;IACH,CAAC;IACD,OAAO,CACL,8BACE,KAAC,eAAe,mBAAa,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,GAAI,EACpF,yBAAO,SAAS,GAAQ,IACvB,CACJ,CAAA;AACH,CAAC,CAAA","sourcesContent":["import type { Ci } from '@cucumber/messages'\nimport { faCodeCommit } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport type { FC } from 'react'\n\nimport ciCommitLink from '../../ciCommitLink.js'\n\nexport const CICommitLink: FC<{\n ci: Ci\n}> = ({ ci }) => {\n if (!ci.git) {\n return null\n }\n\n const shortHash = ci.git.revision.substring(0, 7)\n const commitLink = ciCommitLink(ci)\n\n if (commitLink) {\n return (\n <>\n <FontAwesomeIcon aria-hidden=\"true\" style={{ opacity: 0.75 }} icon={faCodeCommit} />\n <a href={commitLink} target=\"_blank\" rel=\"noopener nofollow noreferrer\">\n <code>{shortHash}</code>\n </a>\n </>\n )\n }\n return (\n <>\n <FontAwesomeIcon aria-hidden=\"true\" style={{ opacity: 0.75 }} icon={faCodeCommit} />\n <code>{shortHash}</code>\n </>\n )\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { Ci } from '@cucumber/messages';
2
- import { FC } from 'react';
1
+ import type { Ci } from '@cucumber/messages';
2
+ import type { FC } from 'react';
3
3
  export declare const CIJobLink: FC<{
4
4
  ci: Ci;
5
5
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"CIJobLink.d.ts","sourceRoot":"","sources":["../../../../src/components/app/CIJobLink.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAGvC,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAEjC,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC;IACzB,EAAE,EAAE,EAAE,CAAA;CACP,CAiBA,CAAA"}
1
+ {"version":3,"file":"CIJobLink.d.ts","sourceRoot":"","sources":["../../../../src/components/app/CIJobLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAG5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAE/B,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC;IACzB,EAAE,EAAE,EAAE,CAAA;CACP,CAiBA,CAAA"}
@@ -1,14 +1,10 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
2
  import { faServer } from '@fortawesome/free-solid-svg-icons';
2
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
- import React from 'react';
4
4
  export const CIJobLink = ({ ci }) => {
5
5
  if (ci.url) {
6
- return (React.createElement(React.Fragment, null,
7
- React.createElement(FontAwesomeIcon, { "aria-hidden": "true", style: { opacity: 0.75 }, icon: faServer }),
8
- React.createElement("a", { href: ci.url, target: "_blank", rel: "noreferrer" }, ci.name)));
6
+ return (_jsxs(_Fragment, { children: [_jsx(FontAwesomeIcon, { "aria-hidden": "true", style: { opacity: 0.75 }, icon: faServer }), _jsx("a", { href: ci.url, target: "_blank", rel: "noopener nofollow noreferrer", children: ci.name })] }));
9
7
  }
10
- return (React.createElement(React.Fragment, null,
11
- React.createElement(FontAwesomeIcon, { "aria-hidden": "true", style: { opacity: 0.75 }, icon: faServer }),
12
- React.createElement("span", null, ci.name)));
8
+ return (_jsxs(_Fragment, { children: [_jsx(FontAwesomeIcon, { "aria-hidden": "true", style: { opacity: 0.75 }, icon: faServer }), _jsx("span", { children: ci.name })] }));
13
9
  };
14
10
  //# sourceMappingURL=CIJobLink.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CIJobLink.js","sourceRoot":"","sources":["../../../../src/components/app/CIJobLink.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAa,MAAM,OAAO,CAAA;AAEjC,MAAM,CAAC,MAAM,SAAS,GAEjB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IACd,IAAI,EAAE,CAAC,GAAG,EAAE;QACV,OAAO,CACL;YACE,oBAAC,eAAe,mBAAa,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAI;YAChF,2BAAG,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,IAC9C,EAAE,CAAC,IAAI,CACN,CACH,CACJ,CAAA;KACF;IACD,OAAO,CACL;QACE,oBAAC,eAAe,mBAAa,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAI;QAChF,kCAAO,EAAE,CAAC,IAAI,CAAQ,CACrB,CACJ,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { Ci } from '@cucumber/messages'\nimport { faServer } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React, { FC } from 'react'\n\nexport const CIJobLink: FC<{\n ci: Ci\n}> = ({ ci }) => {\n if (ci.url) {\n return (\n <>\n <FontAwesomeIcon aria-hidden=\"true\" style={{ opacity: 0.75 }} icon={faServer} />\n <a href={ci.url} target=\"_blank\" rel=\"noreferrer\">\n {ci.name}\n </a>\n </>\n )\n }\n return (\n <>\n <FontAwesomeIcon aria-hidden=\"true\" style={{ opacity: 0.75 }} icon={faServer} />\n <span>{ci.name}</span>\n </>\n )\n}\n"]}
1
+ {"version":3,"file":"CIJobLink.js","sourceRoot":"","sources":["../../../../src/components/app/CIJobLink.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAGhE,MAAM,CAAC,MAAM,SAAS,GAEjB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,CACL,8BACE,KAAC,eAAe,mBAAa,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAI,EAChF,YAAG,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,8BAA8B,YAChE,EAAE,CAAC,IAAI,GACN,IACH,CACJ,CAAA;IACH,CAAC;IACD,OAAO,CACL,8BACE,KAAC,eAAe,mBAAa,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAI,EAChF,yBAAO,EAAE,CAAC,IAAI,GAAQ,IACrB,CACJ,CAAA;AACH,CAAC,CAAA","sourcesContent":["import type { Ci } from '@cucumber/messages'\nimport { faServer } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport type { FC } from 'react'\n\nexport const CIJobLink: FC<{\n ci: Ci\n}> = ({ ci }) => {\n if (ci.url) {\n return (\n <>\n <FontAwesomeIcon aria-hidden=\"true\" style={{ opacity: 0.75 }} icon={faServer} />\n <a href={ci.url} target=\"_blank\" rel=\"noopener nofollow noreferrer\">\n {ci.name}\n </a>\n </>\n )\n }\n return (\n <>\n <FontAwesomeIcon aria-hidden=\"true\" style={{ opacity: 0.75 }} icon={faServer} />\n <span>{ci.name}</span>\n </>\n )\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { FC, PropsWithChildren } from 'react';
2
- import { SearchState } from '../../SearchContext.js';
1
+ import { type FC, type PropsWithChildren } from 'react';
2
+ import { type SearchState } from '../../SearchContext.js';
3
3
  interface Props {
4
4
  value: SearchState;
5
5
  onChange: (newValue: SearchState) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledSearchProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/app/ControlledSearchProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,iBAAiB,EAAW,MAAM,OAAO,CAAA;AAE7D,OAA2B,EAAsB,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAE5F,UAAU,KAAK;IACb,KAAK,EAAE,WAAW,CAAA;IAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAA;CAC1C;AAED,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAiBjE,CAAA"}
1
+ {"version":3,"file":"ControlledSearchProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/app/ControlledSearchProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAW,MAAM,OAAO,CAAA;AAGhE,OAA2B,EAEzB,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAA;AAE/B,UAAU,KAAK;IACb,KAAK,EAAE,WAAW,CAAA;IAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAA;CAC1C;AAED,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAkBjE,CAAA"}
@@ -1,4 +1,7 @@
1
- import React, { useMemo } from 'react';
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { parse } from '@cucumber/tag-expressions';
3
+ import { useMemo } from 'react';
4
+ import isTagExpression from '../../isTagExpression.js';
2
5
  import SearchQueryContext from '../../SearchContext.js';
3
6
  export const ControlledSearchProvider = ({ value, onChange, children, }) => {
4
7
  const contextValue = useMemo(() => {
@@ -7,11 +10,30 @@ export const ControlledSearchProvider = ({ value, onChange, children, }) => {
7
10
  query: value.query,
8
11
  hideStatuses: value.hideStatuses,
9
12
  unchanged,
13
+ ...deriveState(value.query),
10
14
  update: (newValues) => {
11
15
  onChange({ ...value, ...newValues });
12
16
  },
13
17
  };
14
18
  }, [value, onChange]);
15
- return React.createElement(SearchQueryContext.Provider, { value: contextValue }, children);
19
+ return _jsx(SearchQueryContext.Provider, { value: contextValue, children: children });
16
20
  };
21
+ function deriveState(query) {
22
+ if (!query) {
23
+ return {};
24
+ }
25
+ if (isTagExpression(query)) {
26
+ try {
27
+ return {
28
+ tagExpression: parse(query),
29
+ };
30
+ }
31
+ catch (error) {
32
+ console.error(`Failed to parse tag expression "${query}":`, error);
33
+ }
34
+ }
35
+ return {
36
+ searchTerm: query,
37
+ };
38
+ }
17
39
  //# sourceMappingURL=ControlledSearchProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledSearchProvider.js","sourceRoot":"","sources":["../../../../src/components/app/ControlledSearchProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAyB,OAAO,EAAE,MAAM,OAAO,CAAA;AAE7D,OAAO,kBAAuD,MAAM,wBAAwB,CAAA;AAO5F,MAAM,CAAC,MAAM,wBAAwB,GAAiC,CAAC,EACrE,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,YAAY,GAAuB,OAAO,CAAC,GAAG,EAAE;QACpD,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAA;QAC5D,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,SAAS;YACT,MAAM,EAAE,CAAC,SAA+B,EAAE,EAAE;gBAC1C,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,SAAS,EAAE,CAAC,CAAA;YACtC,CAAC;SACF,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IACrB,OAAO,oBAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IAAG,QAAQ,CAA+B,CAAA;AACnG,CAAC,CAAA","sourcesContent":["import React, { FC, PropsWithChildren, useMemo } from 'react'\n\nimport SearchQueryContext, { SearchContextValue, SearchState } from '../../SearchContext.js'\n\ninterface Props {\n value: SearchState\n onChange: (newValue: SearchState) => void\n}\n\nexport const ControlledSearchProvider: FC<PropsWithChildren<Props>> = ({\n value,\n onChange,\n children,\n}) => {\n const contextValue: SearchContextValue = useMemo(() => {\n const unchanged = !value.query && !value.hideStatuses.length\n return {\n query: value.query,\n hideStatuses: value.hideStatuses,\n unchanged,\n update: (newValues: Partial<SearchState>) => {\n onChange({ ...value, ...newValues })\n },\n }\n }, [value, onChange])\n return <SearchQueryContext.Provider value={contextValue}>{children}</SearchQueryContext.Provider>\n}\n"]}
1
+ {"version":3,"file":"ControlledSearchProvider.js","sourceRoot":"","sources":["../../../../src/components/app/ControlledSearchProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AACjD,OAAO,EAAmC,OAAO,EAAE,MAAM,OAAO,CAAA;AAEhE,OAAO,eAAe,MAAM,0BAA0B,CAAA;AACtD,OAAO,kBAGN,MAAM,wBAAwB,CAAA;AAO/B,MAAM,CAAC,MAAM,wBAAwB,GAAiC,CAAC,EACrE,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,YAAY,GAAuB,OAAO,CAAC,GAAG,EAAE;QACpD,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAA;QAC5D,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,SAAS;YACT,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,CAAC,SAA+B,EAAE,EAAE;gBAC1C,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,SAAS,EAAE,CAAC,CAAA;YACtC,CAAC;SACF,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IACrB,OAAO,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAAG,QAAQ,GAA+B,CAAA;AACnG,CAAC,CAAA;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO;gBACL,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC;aAC5B,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,KAAK,IAAI,EAAE,KAAK,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IACD,OAAO;QACL,UAAU,EAAE,KAAK;KAClB,CAAA;AACH,CAAC","sourcesContent":["import { parse } from '@cucumber/tag-expressions'\nimport { type FC, type PropsWithChildren, useMemo } from 'react'\n\nimport isTagExpression from '../../isTagExpression.js'\nimport SearchQueryContext, {\n type SearchContextValue,\n type SearchState,\n} from '../../SearchContext.js'\n\ninterface Props {\n value: SearchState\n onChange: (newValue: SearchState) => void\n}\n\nexport const ControlledSearchProvider: FC<PropsWithChildren<Props>> = ({\n value,\n onChange,\n children,\n}) => {\n const contextValue: SearchContextValue = useMemo(() => {\n const unchanged = !value.query && !value.hideStatuses.length\n return {\n query: value.query,\n hideStatuses: value.hideStatuses,\n unchanged,\n ...deriveState(value.query),\n update: (newValues: Partial<SearchState>) => {\n onChange({ ...value, ...newValues })\n },\n }\n }, [value, onChange])\n return <SearchQueryContext.Provider value={contextValue}>{children}</SearchQueryContext.Provider>\n}\n\nfunction deriveState(query: string): Pick<SearchContextValue, 'searchTerm' | 'tagExpression'> {\n if (!query) {\n return {}\n }\n if (isTagExpression(query)) {\n try {\n return {\n tagExpression: parse(query),\n }\n } catch (error) {\n console.error(`Failed to parse tag expression \"${query}\":`, error)\n }\n }\n return {\n searchTerm: query,\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
- import { FC } from 'react';
1
+ import { type FC } from 'react';
2
2
  export declare const CopyButton: FC<{
3
3
  text: string;
4
+ className?: string;
4
5
  }>;
5
6
  //# sourceMappingURL=CopyButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.d.ts","sourceRoot":"","sources":["../../../../src/components/app/CopyButton.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,EAAE,EAAY,MAAM,OAAO,CAAA;AAI3C,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CA2B3C,CAAA"}
1
+ {"version":3,"file":"CopyButton.d.ts","sourceRoot":"","sources":["../../../../src/components/app/CopyButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAY,MAAM,OAAO,CAAA;AAIzC,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CA4B/D,CAAA"}
@@ -1,8 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import { faCheck, faCopy } from '@fortawesome/free-solid-svg-icons';
2
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
- import React, { useState } from 'react';
4
+ import { useState } from 'react';
4
5
  import styles from './CopyButton.module.scss';
5
- export const CopyButton = ({ text }) => {
6
+ export const CopyButton = ({ text, className }) => {
6
7
  const [copied, setCopied] = useState(false);
7
8
  const handleCopy = () => {
8
9
  navigator.clipboard
@@ -17,7 +18,6 @@ export const CopyButton = ({ text }) => {
17
18
  console.error('Failed to copy', err);
18
19
  });
19
20
  };
20
- return (React.createElement("button", { onClick: handleCopy, "aria-label": copied ? 'Copied' : 'Copy', disabled: copied, className: styles.button },
21
- React.createElement(FontAwesomeIcon, { icon: copied ? faCheck : faCopy })));
21
+ return (_jsx("button", { type: "button", onClick: handleCopy, "aria-label": copied ? 'Copied' : 'Copy', disabled: copied, className: `${styles.button}${className ? ` ${className}` : ''}`, children: _jsx(FontAwesomeIcon, { icon: copied ? faCheck : faCopy }) }));
22
22
  };
23
23
  //# sourceMappingURL=CopyButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../../../src/components/app/CopyButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,EAAM,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAyB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IAC3D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE3C,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,SAAS,CAAC,SAAS;aAChB,SAAS,CAAC,IAAI,CAAC;aACf,IAAI,CAAC,GAAG,EAAE;YACT,SAAS,CAAC,IAAI,CAAC,CAAA;YACf,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,CAAC,KAAK,CAAC,CAAA;YAClB,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;IACN,CAAC,CAAA;IAED,OAAO,CACL,gCACE,OAAO,EAAE,UAAU,gBACP,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM;QAExB,oBAAC,eAAe,IAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAI,CAC7C,CACV,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { faCheck, faCopy } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React, { FC, useState } from 'react'\n\nimport styles from './CopyButton.module.scss'\n\nexport const CopyButton: FC<{ text: string }> = ({ text }) => {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = () => {\n navigator.clipboard\n .writeText(text)\n .then(() => {\n setCopied(true)\n setTimeout(() => {\n setCopied(false)\n }, 3000)\n })\n .catch((err) => {\n console.error('Failed to copy', err)\n })\n }\n\n return (\n <button\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : 'Copy'}\n disabled={copied}\n className={styles.button}\n >\n <FontAwesomeIcon icon={copied ? faCheck : faCopy} />\n </button>\n )\n}\n"]}
1
+ {"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../../../src/components/app/CopyButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAW,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,MAAM,CAAC,MAAM,UAAU,GAA6C,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;IAC1F,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE3C,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,SAAS,CAAC,SAAS;aAChB,SAAS,CAAC,IAAI,CAAC;aACf,IAAI,CAAC,GAAG,EAAE;YACT,SAAS,CAAC,IAAI,CAAC,CAAA;YACf,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,CAAC,KAAK,CAAC,CAAA;YAClB,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;IACN,CAAC,CAAA;IAED,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,UAAU,gBACP,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,YAEhE,KAAC,eAAe,IAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAI,GAC7C,CACV,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { faCheck, faCopy } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { type FC, useState } from 'react'\n\nimport styles from './CopyButton.module.scss'\n\nexport const CopyButton: FC<{ text: string; className?: string }> = ({ text, className }) => {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = () => {\n navigator.clipboard\n .writeText(text)\n .then(() => {\n setCopied(true)\n setTimeout(() => {\n setCopied(false)\n }, 3000)\n })\n .catch((err) => {\n console.error('Failed to copy', err)\n })\n }\n\n return (\n <button\n type=\"button\"\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : 'Copy'}\n disabled={copied}\n className={`${styles.button}${className ? ` ${className}` : ''}`}\n >\n <FontAwesomeIcon icon={copied ? faCheck : faCopy} />\n </button>\n )\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { TestStepResultStatus } from '@cucumber/messages';
2
- import { FC, ReactNode } from 'react';
1
+ import type { TestStepResultStatus } from '@cucumber/messages';
2
+ import { type FC, type ReactNode } from 'react';
3
3
  interface DocumentAccordionProps {
4
- expanded: ReadonlyArray<string>;
4
+ expanded: Iterable<string>;
5
5
  children: ReactNode;
6
6
  }
7
7
  interface DocumentAccordionItemProps {
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentAccordion.d.ts","sourceRoot":"","sources":["../../../../src/components/app/DocumentAccordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAGzD,OAAc,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAqB5C,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC/B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,UAAU,0BAA0B;IAClC,MAAM,EAAE,oBAAoB,CAAA;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAYxD,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAwBhE,CAAA"}
1
+ {"version":3,"file":"DocumentAccordion.d.ts","sourceRoot":"","sources":["../../../../src/components/app/DocumentAccordion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAG9D,OAAO,EAAE,KAAK,EAAE,EAAqB,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAA;AAaxF,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,UAAU,0BAA0B;IAClC,MAAM,EAAE,oBAAoB,CAAA;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,SAAS,CAAA;CACpB;AAaD,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAUxD,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAuBhE,CAAA"}
@@ -1,30 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
2
  import { faChevronRight } from '@fortawesome/free-solid-svg-icons';
2
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
- import React from 'react';
4
- import { Accordion, AccordionItem, AccordionItemButton, AccordionItemHeading, AccordionItemPanel, } from 'react-accessible-accordion';
5
- import { v4 as uuidv4 } from 'uuid';
4
+ import { useContext, useState } from 'react';
5
+ import { Button, Disclosure, DisclosureGroup, DisclosurePanel, DisclosureStateContext, Heading, } from 'react-aria-components';
6
6
  import { StatusIcon } from '../gherkin/index.js';
7
7
  import styles from './DocumentAccordion.module.scss';
8
- const idByUri = new Map();
9
- function getIdByUri(uri) {
10
- if (!idByUri.has(uri)) {
11
- idByUri.set(uri, uuidv4());
8
+ const LazyContent = ({ children }) => {
9
+ const state = useContext(DisclosureStateContext);
10
+ const [hasBeenExpanded, setHasBeenExpanded] = useState(state?.isExpanded ?? false);
11
+ if (state?.isExpanded && !hasBeenExpanded) {
12
+ setHasBeenExpanded(true);
12
13
  }
13
- return idByUri.get(uri);
14
- }
14
+ return hasBeenExpanded ? children : null;
15
+ };
15
16
  export const DocumentAccordion = ({ expanded, children }) => {
16
- const preExpand = expanded.map((uri) => getIdByUri(uri));
17
- return (React.createElement(Accordion, { allowMultipleExpanded: true, allowZeroExpanded: true, preExpanded: preExpand, className: styles.accordion }, children));
17
+ return (_jsx(DisclosureGroup, { allowsMultipleExpanded: true, defaultExpandedKeys: expanded, className: styles.accordion, children: children }));
18
18
  };
19
19
  export const DocumentAccordionItem = ({ status, uri, children, }) => {
20
- const id = getIdByUri(uri);
21
- return (React.createElement(AccordionItem, { uuid: id, className: styles.accordionItem },
22
- React.createElement(AccordionItemHeading, null,
23
- React.createElement(AccordionItemButton, { className: styles.accordionButton },
24
- React.createElement(FontAwesomeIcon, { className: styles.accordionChevron, "aria-hidden": "true", icon: faChevronRight }),
25
- React.createElement("span", { className: styles.icon },
26
- React.createElement(StatusIcon, { status: status })),
27
- React.createElement("span", null, uri))),
28
- React.createElement(AccordionItemPanel, { className: styles.accordionPanel }, children)));
20
+ return (_jsxs(Disclosure, { id: uri, className: styles.item, children: [_jsx(Heading, { className: styles.heading, children: _jsxs(Button, { slot: "trigger", className: styles.button, children: [_jsx(FontAwesomeIcon, { className: styles.chevron, "aria-hidden": "true", icon: faChevronRight }), _jsx("span", { className: styles.icon, children: _jsx(StatusIcon, { status: status }) }), _jsx("span", { children: uri })] }) }), _jsx(DisclosurePanel, { children: _jsx(LazyContent, { children: _jsx("div", { className: styles.content, children: children }) }) })] }));
29
21
  };
30
22
  //# sourceMappingURL=DocumentAccordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentAccordion.js","sourceRoot":"","sources":["../../../../src/components/app/DocumentAccordion.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAwB,MAAM,OAAO,CAAA;AAC5C,OAAO,EACL,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,MAAM,MAAM,iCAAiC,CAAA;AAEpD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;AACzC,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;KAC3B;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAW,CAAA;AACnC,CAAC;AAaD,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtF,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IACxD,OAAO,CACL,oBAAC,SAAS,IACR,qBAAqB,EAAE,IAAI,EAC3B,iBAAiB,EAAE,IAAI,EACvB,WAAW,EAAE,SAAS,EACtB,SAAS,EAAE,MAAM,CAAC,SAAS,IAE1B,QAAQ,CACC,CACb,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAmC,CAAC,EACpE,MAAM,EACN,GAAG,EACH,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC1B,OAAO,CACL,oBAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,aAAa;QACtD,oBAAC,oBAAoB;YACnB,oBAAC,mBAAmB,IAAC,SAAS,EAAE,MAAM,CAAC,eAAe;gBACpD,oBAAC,eAAe,IACd,SAAS,EAAE,MAAM,CAAC,gBAAgB,iBACtB,MAAM,EAClB,IAAI,EAAE,cAAc,GACpB;gBACF,8BAAM,SAAS,EAAE,MAAM,CAAC,IAAI;oBAC1B,oBAAC,UAAU,IAAC,MAAM,EAAE,MAAM,GAAI,CACzB;gBACP,kCAAO,GAAG,CAAQ,CACE,CACD;QACvB,oBAAC,kBAAkB,IAAC,SAAS,EAAE,MAAM,CAAC,cAAc,IAAG,QAAQ,CAAsB,CACvE,CACjB,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { TestStepResultStatus } from '@cucumber/messages'\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React, { FC, ReactNode } from 'react'\nimport {\n Accordion,\n AccordionItem,\n AccordionItemButton,\n AccordionItemHeading,\n AccordionItemPanel,\n} from 'react-accessible-accordion'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { StatusIcon } from '../gherkin/index.js'\nimport styles from './DocumentAccordion.module.scss'\n\nconst idByUri = new Map<string, string>()\nfunction getIdByUri(uri: string): string {\n if (!idByUri.has(uri)) {\n idByUri.set(uri, uuidv4())\n }\n return idByUri.get(uri) as string\n}\n\ninterface DocumentAccordionProps {\n expanded: ReadonlyArray<string>\n children: ReactNode\n}\n\ninterface DocumentAccordionItemProps {\n status: TestStepResultStatus\n uri: string\n children: ReactNode\n}\n\nexport const DocumentAccordion: FC<DocumentAccordionProps> = ({ expanded, children }) => {\n const preExpand = expanded.map((uri) => getIdByUri(uri))\n return (\n <Accordion\n allowMultipleExpanded={true}\n allowZeroExpanded={true}\n preExpanded={preExpand}\n className={styles.accordion}\n >\n {children}\n </Accordion>\n )\n}\n\nexport const DocumentAccordionItem: FC<DocumentAccordionItemProps> = ({\n status,\n uri,\n children,\n}) => {\n const id = getIdByUri(uri)\n return (\n <AccordionItem uuid={id} className={styles.accordionItem}>\n <AccordionItemHeading>\n <AccordionItemButton className={styles.accordionButton}>\n <FontAwesomeIcon\n className={styles.accordionChevron}\n aria-hidden=\"true\"\n icon={faChevronRight}\n />\n <span className={styles.icon}>\n <StatusIcon status={status} />\n </span>\n <span>{uri}</span>\n </AccordionItemButton>\n </AccordionItemHeading>\n <AccordionItemPanel className={styles.accordionPanel}>{children}</AccordionItemPanel>\n </AccordionItem>\n )\n}\n"]}
1
+ {"version":3,"file":"DocumentAccordion.js","sourceRoot":"","sources":["../../../../src/components/app/DocumentAccordion.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAA8C,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACxF,OAAO,EACL,MAAM,EACN,UAAU,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,OAAO,GACR,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,MAAM,MAAM,iCAAiC,CAAA;AAapD,MAAM,WAAW,GAAmC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACnE,MAAM,KAAK,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAA;IAChD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,UAAU,IAAI,KAAK,CAAC,CAAA;IAElF,IAAI,KAAK,EAAE,UAAU,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,OAAO,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtF,OAAO,CACL,KAAC,eAAe,IACd,sBAAsB,QACtB,mBAAmB,EAAE,QAAQ,EAC7B,SAAS,EAAE,MAAM,CAAC,SAAS,YAE1B,QAAQ,GACO,CACnB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAmC,CAAC,EACpE,MAAM,EACN,GAAG,EACH,QAAQ,GACT,EAAE,EAAE;IACH,OAAO,CACL,MAAC,UAAU,IAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,aACzC,KAAC,OAAO,IAAC,SAAS,EAAE,MAAM,CAAC,OAAO,YAChC,MAAC,MAAM,IAAC,IAAI,EAAC,SAAS,EAAC,SAAS,EAAE,MAAM,CAAC,MAAM,aAC7C,KAAC,eAAe,IAAC,SAAS,EAAE,MAAM,CAAC,OAAO,iBAAc,MAAM,EAAC,IAAI,EAAE,cAAc,GAAI,EACvF,eAAM,SAAS,EAAE,MAAM,CAAC,IAAI,YAC1B,KAAC,UAAU,IAAC,MAAM,EAAE,MAAM,GAAI,GACzB,EACP,yBAAO,GAAG,GAAQ,IACX,GACD,EACV,KAAC,eAAe,cACd,KAAC,WAAW,cACV,cAAK,SAAS,EAAE,MAAM,CAAC,OAAO,YAAG,QAAQ,GAAO,GACpC,GACE,IACP,CACd,CAAA;AACH,CAAC,CAAA","sourcesContent":["import type { TestStepResultStatus } from '@cucumber/messages'\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { type FC, type ReactElement, type ReactNode, useContext, useState } from 'react'\nimport {\n Button,\n Disclosure,\n DisclosureGroup,\n DisclosurePanel,\n DisclosureStateContext,\n Heading,\n} from 'react-aria-components'\n\nimport { StatusIcon } from '../gherkin/index.js'\nimport styles from './DocumentAccordion.module.scss'\n\ninterface DocumentAccordionProps {\n expanded: Iterable<string>\n children: ReactNode\n}\n\ninterface DocumentAccordionItemProps {\n status: TestStepResultStatus\n uri: string\n children: ReactNode\n}\n\nconst LazyContent: FC<{ children: ReactElement }> = ({ children }) => {\n const state = useContext(DisclosureStateContext)\n const [hasBeenExpanded, setHasBeenExpanded] = useState(state?.isExpanded ?? false)\n\n if (state?.isExpanded && !hasBeenExpanded) {\n setHasBeenExpanded(true)\n }\n\n return hasBeenExpanded ? children : null\n}\n\nexport const DocumentAccordion: FC<DocumentAccordionProps> = ({ expanded, children }) => {\n return (\n <DisclosureGroup\n allowsMultipleExpanded\n defaultExpandedKeys={expanded}\n className={styles.accordion}\n >\n {children}\n </DisclosureGroup>\n )\n}\n\nexport const DocumentAccordionItem: FC<DocumentAccordionItemProps> = ({\n status,\n uri,\n children,\n}) => {\n return (\n <Disclosure id={uri} className={styles.item}>\n <Heading className={styles.heading}>\n <Button slot=\"trigger\" className={styles.button}>\n <FontAwesomeIcon className={styles.chevron} aria-hidden=\"true\" icon={faChevronRight} />\n <span className={styles.icon}>\n <StatusIcon status={status} />\n </span>\n <span>{uri}</span>\n </Button>\n </Heading>\n <DisclosurePanel>\n <LazyContent>\n <div className={styles.content}>{children}</div>\n </LazyContent>\n </DisclosurePanel>\n </Disclosure>\n )\n}\n"]}
@@ -11,12 +11,20 @@
11
11
  border-radius: 2px;
12
12
  }
13
13
 
14
- .accordionItem + .accordionItem {
14
+ .item + .item {
15
15
  border-top: 1px solid theming.$panelAccentColor;
16
16
  }
17
17
 
18
- .accordionButton {
18
+ .heading {
19
+ font-size: inherit;
20
+ padding: 0;
21
+ margin: 0;
22
+ }
23
+
24
+ .button {
19
25
  box-sizing: border-box;
26
+ font-family: inherit;
27
+ font-size: inherit;
20
28
  width: 100%;
21
29
  padding: 0.75em 1em;
22
30
  border: none;
@@ -25,21 +33,21 @@
25
33
  cursor: pointer;
26
34
  text-align: left;
27
35
 
28
- &:hover {
36
+ &:hover,
37
+ &:focus {
29
38
  background-color: theming.$panelAccentColor;
30
39
  }
31
40
  }
32
41
 
33
- .accordionChevron {
42
+ .chevron {
34
43
  transform-origin: center center;
35
44
  transition: transform 0.2s linear;
36
45
 
37
- .accordionButton[aria-expanded='true'] &,
38
- .accordionButton[aria-selected='true'] & {
46
+ .button[aria-expanded='true'] & {
39
47
  transform: rotate(90deg);
40
48
  }
41
49
  }
42
50
 
43
- .accordionPanel {
51
+ .content {
44
52
  padding: 1.25em;
45
53
  }
@@ -1,5 +1,5 @@
1
- import { Envelope } from '@cucumber/messages';
2
- import { FC, PropsWithChildren } from 'react';
1
+ import type { Envelope } from '@cucumber/messages';
2
+ import { type FC, type PropsWithChildren } from 'react';
3
3
  interface Props {
4
4
  envelopes: readonly Envelope[];
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EnvelopesProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/app/EnvelopesProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAc,EAAE,EAAE,EAAE,iBAAiB,EAAW,MAAM,OAAO,CAAA;AAI7D,UAAU,KAAK;IACb,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAA;CAC/B;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAe1D,CAAA"}
1
+ {"version":3,"file":"EnvelopesProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/app/EnvelopesProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAW,MAAM,OAAO,CAAA;AAIhE,UAAU,KAAK;IACb,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAA;CAC/B;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAe1D,CAAA"}
@@ -1,6 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import { Query as GherkinQuery } from '@cucumber/gherkin-utils';
2
3
  import { Query as CucumberQuery } from '@cucumber/query';
3
- import React, { useMemo } from 'react';
4
+ import { useMemo } from 'react';
4
5
  import { QueriesProvider } from './QueriesProvider.js';
5
6
  export const EnvelopesProvider = ({ envelopes, children }) => {
6
7
  const { gherkinQuery, cucumberQuery } = useMemo(() => {
@@ -12,6 +13,6 @@ export const EnvelopesProvider = ({ envelopes, children }) => {
12
13
  }
13
14
  return { gherkinQuery, cucumberQuery };
14
15
  }, [envelopes]);
15
- return (React.createElement(QueriesProvider, { gherkinQuery: gherkinQuery, cucumberQuery: cucumberQuery }, children));
16
+ return (_jsx(QueriesProvider, { gherkinQuery: gherkinQuery, cucumberQuery: cucumberQuery, children: children }));
16
17
  };
17
18
  //# sourceMappingURL=EnvelopesProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnvelopesProvider.js","sourceRoot":"","sources":["../../../../src/components/app/EnvelopesProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,EAAE,EAAyB,OAAO,EAAE,MAAM,OAAO,CAAA;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAMtD,MAAM,CAAC,MAAM,iBAAiB,GAAiC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzF,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;QACnD,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;QACvC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAA;QACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC7B,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;SAC/B;QACD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAA;IACxC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IACf,OAAO,CACL,oBAAC,eAAe,IAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,IACtE,QAAQ,CACO,CACnB,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { Query as GherkinQuery } from '@cucumber/gherkin-utils'\nimport { Envelope } from '@cucumber/messages'\nimport { Query as CucumberQuery } from '@cucumber/query'\nimport React, { FC, PropsWithChildren, useMemo } from 'react'\n\nimport { QueriesProvider } from './QueriesProvider.js'\n\ninterface Props {\n envelopes: readonly Envelope[]\n}\n\nexport const EnvelopesProvider: FC<PropsWithChildren<Props>> = ({ envelopes, children }) => {\n const { gherkinQuery, cucumberQuery } = useMemo(() => {\n const gherkinQuery = new GherkinQuery()\n const cucumberQuery = new CucumberQuery()\n for (const envelope of envelopes) {\n gherkinQuery.update(envelope)\n cucumberQuery.update(envelope)\n }\n return { gherkinQuery, cucumberQuery }\n }, [envelopes])\n return (\n <QueriesProvider gherkinQuery={gherkinQuery} cucumberQuery={cucumberQuery}>\n {children}\n </QueriesProvider>\n )\n}\n"]}
1
+ {"version":3,"file":"EnvelopesProvider.js","sourceRoot":"","sources":["../../../../src/components/app/EnvelopesProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAmC,OAAO,EAAE,MAAM,OAAO,CAAA;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAMtD,MAAM,CAAC,MAAM,iBAAiB,GAAiC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzF,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;QACnD,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;QACvC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAA;QACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC7B,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChC,CAAC;QACD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAA;IACxC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IACf,OAAO,CACL,KAAC,eAAe,IAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,YACtE,QAAQ,GACO,CACnB,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { Query as GherkinQuery } from '@cucumber/gherkin-utils'\nimport type { Envelope } from '@cucumber/messages'\nimport { Query as CucumberQuery } from '@cucumber/query'\nimport { type FC, type PropsWithChildren, useMemo } from 'react'\n\nimport { QueriesProvider } from './QueriesProvider.js'\n\ninterface Props {\n envelopes: readonly Envelope[]\n}\n\nexport const EnvelopesProvider: FC<PropsWithChildren<Props>> = ({ envelopes, children }) => {\n const { gherkinQuery, cucumberQuery } = useMemo(() => {\n const gherkinQuery = new GherkinQuery()\n const cucumberQuery = new CucumberQuery()\n for (const envelope of envelopes) {\n gherkinQuery.update(envelope)\n cucumberQuery.update(envelope)\n }\n return { gherkinQuery, cucumberQuery }\n }, [envelopes])\n return (\n <QueriesProvider gherkinQuery={gherkinQuery} cucumberQuery={cucumberQuery}>\n {children}\n </QueriesProvider>\n )\n}\n"]}
@@ -1,3 +1,3 @@
1
- import { FC } from 'react';
1
+ import type { FC } from 'react';
2
2
  export declare const ExecutionSummary: FC;
3
3
  //# sourceMappingURL=ExecutionSummary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionSummary.d.ts","sourceRoot":"","sources":["../../../../src/components/app/ExecutionSummary.tsx"],"names":[],"mappings":"AAGA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAmBjC,eAAO,MAAM,gBAAgB,EAAE,EAmG9B,CAAA"}
1
+ {"version":3,"file":"ExecutionSummary.d.ts","sourceRoot":"","sources":["../../../../src/components/app/ExecutionSummary.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAmB/B,eAAO,MAAM,gBAAgB,EAAE,EAmG9B,CAAA"}