@cccsaurora/howler-ui 2.18.0-dev.799 → 2.18.0-dev.802

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 (319) hide show
  1. package/api/index.d.ts +0 -4
  2. package/api/index.js +2 -10
  3. package/api/search/facet/hit.d.ts +3 -1
  4. package/api/search/facet/index.d.ts +1 -3
  5. package/api/search/index.d.ts +1 -2
  6. package/api/search/index.js +1 -2
  7. package/commons/components/leftnav/LeftNavDrawer.js +1 -1
  8. package/components/app/App.js +8 -36
  9. package/components/app/hooks/useMatchers.d.ts +1 -1
  10. package/components/app/hooks/useMatchers.js +11 -23
  11. package/components/app/hooks/useMatchers.test.js +22 -22
  12. package/components/app/hooks/useTitle.js +5 -5
  13. package/components/app/providers/FavouritesProvider.js +2 -2
  14. package/components/app/providers/HitProvider.d.ts +22 -0
  15. package/components/app/providers/{RecordProvider.js → HitProvider.js} +41 -41
  16. package/components/app/providers/{RecordSearchProvider.d.ts → HitSearchProvider.d.ts} +6 -6
  17. package/components/app/providers/{RecordSearchProvider.js → HitSearchProvider.js} +17 -12
  18. package/components/app/providers/{RecordSearchProvider.test.js → HitSearchProvider.test.js} +71 -52
  19. package/components/app/providers/ModalProvider.d.ts +0 -1
  20. package/components/app/providers/ParameterProvider.d.ts +2 -9
  21. package/components/app/providers/ParameterProvider.js +240 -165
  22. package/components/app/providers/ParameterProvider.test.js +94 -346
  23. package/components/app/providers/SocketProvider.d.ts +2 -11
  24. package/components/app/providers/SocketProvider.js +5 -18
  25. package/components/app/providers/UserListProvider.js +8 -28
  26. package/components/elements/PluginTypography.d.ts +1 -2
  27. package/components/elements/PluginTypography.js +2 -3
  28. package/components/elements/UserList.d.ts +2 -5
  29. package/components/elements/UserList.js +8 -18
  30. package/components/elements/addons/search/phrase/Phrase.js +1 -1
  31. package/components/elements/display/ChipPopper.d.ts +1 -1
  32. package/components/elements/display/HowlerCard.js +1 -1
  33. package/components/elements/display/Modal.js +0 -2
  34. package/components/elements/display/icons/BundleButton.d.ts +6 -0
  35. package/components/elements/display/icons/BundleButton.js +32 -0
  36. package/components/elements/hit/HitActions.js +4 -4
  37. package/components/elements/hit/HitBanner.d.ts +0 -1
  38. package/components/elements/hit/HitBanner.js +49 -29
  39. package/components/elements/hit/HitCard.d.ts +0 -2
  40. package/components/elements/hit/HitCard.js +7 -7
  41. package/components/elements/{record/RecordComments.d.ts → hit/HitComments.d.ts} +4 -5
  42. package/components/elements/{record/RecordComments.js → hit/HitComments.js} +28 -29
  43. package/components/elements/{ObjectDetails.js → hit/HitDetails.js} +17 -17
  44. package/components/elements/hit/HitLabels.js +2 -2
  45. package/components/elements/hit/HitLinks.js +1 -1
  46. package/components/elements/hit/HitOutline.d.ts +0 -1
  47. package/components/elements/hit/HitOutline.js +3 -3
  48. package/components/elements/hit/{HitPreview.d.ts → HitQuickSearch.d.ts} +3 -3
  49. package/components/elements/hit/{HitPreview.js → HitQuickSearch.js} +4 -10
  50. package/components/elements/hit/HitRelated.d.ts +6 -0
  51. package/components/elements/hit/HitRelated.js +7 -0
  52. package/components/elements/hit/HitSummary.d.ts +1 -2
  53. package/components/elements/hit/HitSummary.js +5 -6
  54. package/components/elements/{record/RecordWorklog.d.ts → hit/HitWorklog.d.ts} +3 -4
  55. package/components/elements/{record/RecordWorklog.js → hit/HitWorklog.js} +13 -15
  56. package/components/elements/hit/aggregate/HitGraph.js +8 -8
  57. package/components/elements/hit/elements/Assigned.js +3 -6
  58. package/components/elements/hit/outlines/DefaultOutline.js +1 -1
  59. package/components/elements/view/ViewTitle.d.ts +0 -1
  60. package/components/elements/view/ViewTitle.js +2 -9
  61. package/components/hooks/useHitActions.d.ts +1 -1
  62. package/components/hooks/useHitActions.js +4 -4
  63. package/components/hooks/{useRecordSelection.d.ts → useHitSelection.d.ts} +2 -2
  64. package/components/hooks/{useRecordSelection.js → useHitSelection.js} +33 -12
  65. package/components/hooks/useMyPreferences.js +1 -10
  66. package/components/hooks/useMySearch.js +2 -2
  67. package/components/hooks/useMySitemap.js +1 -4
  68. package/components/hooks/useMyTheme.js +2 -9
  69. package/components/routes/action/edit/ActionEditor.js +2 -2
  70. package/components/routes/action/useMyActionFunctions.js +22 -4
  71. package/components/routes/action/view/ActionSearch.js +1 -1
  72. package/components/routes/advanced/QueryBuilder.js +1 -1
  73. package/components/routes/advanced/QueryEditor.js +3 -3
  74. package/components/routes/advanced/historyCompletionProvider.js +3 -3
  75. package/components/routes/analytics/AnalyticDetails.js +2 -2
  76. package/components/routes/analytics/AnalyticSearch.js +1 -1
  77. package/components/routes/dossiers/DossierEditor.js +2 -2
  78. package/components/routes/dossiers/DossierEditor.test.js +1 -1
  79. package/components/routes/help/ApiDocumentation.js +1 -1
  80. package/components/routes/help/BundleDocumentation.d.ts +3 -0
  81. package/components/routes/help/BundleDocumentation.js +12 -0
  82. package/components/routes/help/HitBannerDocumentation.js +0 -1
  83. package/components/routes/help/HitDocumentation.js +3 -1
  84. package/components/routes/help/markdown/en/bundles.md.js +1 -0
  85. package/components/routes/help/markdown/fr/bundles.md.js +1 -0
  86. package/components/routes/hits/search/BundleParentMenu.d.ts +6 -0
  87. package/components/routes/hits/search/BundleParentMenu.js +32 -0
  88. package/components/routes/hits/search/BundleScroller.d.ts +2 -0
  89. package/components/routes/hits/search/BundleScroller.js +6 -0
  90. package/components/routes/hits/search/{RecordBrowser.js → HitBrowser.js} +9 -9
  91. package/components/{elements/record/RecordContextMenu.d.ts → routes/hits/search/HitContextMenu.d.ts} +3 -3
  92. package/components/routes/hits/search/HitContextMenu.js +227 -0
  93. package/components/{elements/record/RecordContextMenu.test.js → routes/hits/search/HitContextMenu.test.js} +39 -94
  94. package/components/routes/hits/search/{RecordQuery.d.ts → HitQuery.d.ts} +2 -2
  95. package/components/routes/hits/search/{RecordQuery.js → HitQuery.js} +6 -6
  96. package/components/routes/hits/search/InformationPane.d.ts +0 -1
  97. package/components/routes/hits/search/InformationPane.js +63 -50
  98. package/components/routes/hits/search/LayoutSettings.js +3 -3
  99. package/components/routes/hits/search/QuerySettings.js +1 -2
  100. package/components/routes/hits/search/QuerySettings.test.js +9 -14
  101. package/components/routes/hits/search/SearchPane.js +49 -26
  102. package/components/routes/hits/search/ViewLink.js +3 -3
  103. package/components/routes/hits/search/ViewLink.test.js +8 -8
  104. package/components/routes/hits/search/grid/AddColumnModal.js +4 -5
  105. package/components/routes/hits/search/grid/EnhancedCell.d.ts +1 -2
  106. package/components/routes/hits/search/grid/EnhancedCell.js +2 -2
  107. package/components/routes/hits/search/grid/HitGrid.js +18 -20
  108. package/components/routes/hits/search/grid/{RecordRow.d.ts → HitRow.d.ts} +2 -3
  109. package/components/routes/hits/search/grid/{RecordRow.js → HitRow.js} +8 -10
  110. package/components/routes/hits/view/HitViewer.js +13 -12
  111. package/components/routes/home/ViewCard.js +41 -47
  112. package/components/{elements/MarkdownEditor.js → routes/overviews/OverviewEditor.js} +3 -3
  113. package/components/routes/overviews/OverviewViewer.js +2 -2
  114. package/components/routes/views/ViewComposer.js +19 -46
  115. package/locales/en/translation.json +5 -110
  116. package/locales/fr/translation.json +5 -108
  117. package/models/WithMetadata.d.ts +1 -2
  118. package/models/entities/generated/{ThreatEnrichment.d.ts → Enrichment.d.ts} +1 -1
  119. package/models/entities/generated/Hit.d.ts +0 -1
  120. package/models/entities/generated/Howler.d.ts +5 -0
  121. package/models/entities/generated/Rule.d.ts +10 -2
  122. package/models/entities/generated/Threat.d.ts +2 -2
  123. package/models/entities/generated/View.d.ts +0 -1
  124. package/package.json +91 -111
  125. package/plugins/clue/components/ClueTypography.js +2 -2
  126. package/plugins/clue/utils.d.ts +1 -2
  127. package/tests/mocks.d.ts +1 -11
  128. package/tests/mocks.js +7 -12
  129. package/tests/server-handlers.js +1 -6
  130. package/tests/utils.d.ts +0 -4
  131. package/tests/utils.js +0 -20
  132. package/utils/constants.d.ts +3 -4
  133. package/utils/constants.js +0 -6
  134. package/utils/hitFunctions.d.ts +1 -2
  135. package/utils/hitFunctions.js +4 -4
  136. package/utils/socketUtils.d.ts +0 -14
  137. package/utils/socketUtils.js +1 -17
  138. package/utils/viewUtils.js +0 -3
  139. package/api/search/case.d.ts +0 -4
  140. package/api/search/case.js +0 -8
  141. package/api/socket/index.d.ts +0 -3
  142. package/api/socket/index.js +0 -6
  143. package/api/socket/viewers.d.ts +0 -2
  144. package/api/socket/viewers.js +0 -8
  145. package/api/socket/viewers.test.js +0 -44
  146. package/api/v2/case/index.d.ts +0 -8
  147. package/api/v2/case/index.js +0 -20
  148. package/api/v2/case/items.d.ts +0 -6
  149. package/api/v2/case/items.js +0 -18
  150. package/api/v2/index.d.ts +0 -4
  151. package/api/v2/index.js +0 -6
  152. package/api/v2/search/facet.d.ts +0 -3
  153. package/api/v2/search/facet.js +0 -12
  154. package/api/v2/search/index.d.ts +0 -5
  155. package/api/v2/search/index.js +0 -24
  156. package/components/app/providers/RecordProvider.d.ts +0 -23
  157. package/components/elements/ContextMenu.d.ts +0 -56
  158. package/components/elements/ContextMenu.js +0 -109
  159. package/components/elements/ContextMenu.test.d.ts +0 -1
  160. package/components/elements/ContextMenu.test.js +0 -215
  161. package/components/elements/ObjectDetails.d.ts +0 -6
  162. package/components/elements/case/CaseCard.d.ts +0 -12
  163. package/components/elements/case/CaseCard.js +0 -42
  164. package/components/elements/case/CasePreview.d.ts +0 -6
  165. package/components/elements/case/CasePreview.js +0 -17
  166. package/components/elements/case/StatusIcon.d.ts +0 -5
  167. package/components/elements/case/StatusIcon.js +0 -13
  168. package/components/elements/hit/elements/AnalyticLink.d.ts +0 -9
  169. package/components/elements/hit/elements/AnalyticLink.js +0 -22
  170. package/components/elements/hit/elements/Assigned.test.d.ts +0 -1
  171. package/components/elements/hit/elements/Assigned.test.js +0 -65
  172. package/components/elements/hit/related/RelatedRecords.js +0 -63
  173. package/components/elements/observable/ObservableCard.d.ts +0 -6
  174. package/components/elements/observable/ObservableCard.js +0 -22
  175. package/components/elements/observable/ObservablePreview.d.ts +0 -6
  176. package/components/elements/observable/ObservablePreview.js +0 -12
  177. package/components/elements/record/RecordContextMenu.js +0 -256
  178. package/components/elements/record/RecordContextMenu.test.d.ts +0 -1
  179. package/components/elements/record/RecordRelated.d.ts +0 -7
  180. package/components/elements/record/RecordRelated.js +0 -34
  181. package/components/hooks/useRelatedRecords.d.ts +0 -13
  182. package/components/hooks/useRelatedRecords.js +0 -32
  183. package/components/routes/cases/CaseViewer.d.ts +0 -2
  184. package/components/routes/cases/CaseViewer.js +0 -44
  185. package/components/routes/cases/CaseViewer.test.d.ts +0 -1
  186. package/components/routes/cases/CaseViewer.test.js +0 -133
  187. package/components/routes/cases/Cases.d.ts +0 -2
  188. package/components/routes/cases/Cases.js +0 -148
  189. package/components/routes/cases/constants.d.ts +0 -6
  190. package/components/routes/cases/constants.js +0 -6
  191. package/components/routes/cases/detail/AlertPanel.d.ts +0 -6
  192. package/components/routes/cases/detail/AlertPanel.js +0 -33
  193. package/components/routes/cases/detail/CaseAssets.d.ts +0 -11
  194. package/components/routes/cases/detail/CaseAssets.js +0 -104
  195. package/components/routes/cases/detail/CaseAssets.test.d.ts +0 -1
  196. package/components/routes/cases/detail/CaseAssets.test.js +0 -167
  197. package/components/routes/cases/detail/CaseDashboard.d.ts +0 -7
  198. package/components/routes/cases/detail/CaseDashboard.js +0 -66
  199. package/components/routes/cases/detail/CaseDetails.d.ts +0 -6
  200. package/components/routes/cases/detail/CaseDetails.js +0 -70
  201. package/components/routes/cases/detail/CaseOverview.d.ts +0 -7
  202. package/components/routes/cases/detail/CaseOverview.js +0 -43
  203. package/components/routes/cases/detail/CaseSidebar.d.ts +0 -8
  204. package/components/routes/cases/detail/CaseSidebar.js +0 -107
  205. package/components/routes/cases/detail/CaseSidebar.test.d.ts +0 -1
  206. package/components/routes/cases/detail/CaseSidebar.test.js +0 -246
  207. package/components/routes/cases/detail/CaseTask.d.ts +0 -11
  208. package/components/routes/cases/detail/CaseTask.js +0 -66
  209. package/components/routes/cases/detail/CaseTimeline.d.ts +0 -12
  210. package/components/routes/cases/detail/CaseTimeline.js +0 -106
  211. package/components/routes/cases/detail/CaseTimeline.test.d.ts +0 -1
  212. package/components/routes/cases/detail/CaseTimeline.test.js +0 -320
  213. package/components/routes/cases/detail/ItemPage.d.ts +0 -6
  214. package/components/routes/cases/detail/ItemPage.js +0 -95
  215. package/components/routes/cases/detail/RelatedCasePanel.d.ts +0 -6
  216. package/components/routes/cases/detail/RelatedCasePanel.js +0 -34
  217. package/components/routes/cases/detail/TaskPanel.d.ts +0 -7
  218. package/components/routes/cases/detail/TaskPanel.js +0 -52
  219. package/components/routes/cases/detail/aggregates/CaseAggregate.d.ts +0 -11
  220. package/components/routes/cases/detail/aggregates/CaseAggregate.js +0 -24
  221. package/components/routes/cases/detail/aggregates/SourceAggregate.d.ts +0 -6
  222. package/components/routes/cases/detail/aggregates/SourceAggregate.js +0 -26
  223. package/components/routes/cases/detail/assets/Asset.d.ts +0 -14
  224. package/components/routes/cases/detail/assets/Asset.js +0 -12
  225. package/components/routes/cases/detail/assets/Asset.test.d.ts +0 -1
  226. package/components/routes/cases/detail/assets/Asset.test.js +0 -72
  227. package/components/routes/cases/detail/sidebar/CaseFolder.d.ts +0 -20
  228. package/components/routes/cases/detail/sidebar/CaseFolder.js +0 -83
  229. package/components/routes/cases/detail/sidebar/CaseFolder.test.d.ts +0 -1
  230. package/components/routes/cases/detail/sidebar/CaseFolder.test.js +0 -295
  231. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.d.ts +0 -34
  232. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.js +0 -103
  233. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.d.ts +0 -1
  234. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.js +0 -363
  235. package/components/routes/cases/detail/sidebar/FolderEntry.d.ts +0 -25
  236. package/components/routes/cases/detail/sidebar/FolderEntry.js +0 -88
  237. package/components/routes/cases/detail/sidebar/FolderEntry.test.d.ts +0 -1
  238. package/components/routes/cases/detail/sidebar/FolderEntry.test.js +0 -206
  239. package/components/routes/cases/detail/sidebar/RootDropZone.d.ts +0 -5
  240. package/components/routes/cases/detail/sidebar/RootDropZone.js +0 -33
  241. package/components/routes/cases/detail/sidebar/types.d.ts +0 -9
  242. package/components/routes/cases/detail/sidebar/utils.d.ts +0 -3
  243. package/components/routes/cases/detail/sidebar/utils.js +0 -29
  244. package/components/routes/cases/detail/sidebar/utils.test.d.ts +0 -1
  245. package/components/routes/cases/detail/sidebar/utils.test.js +0 -82
  246. package/components/routes/cases/hooks/useCase.d.ts +0 -13
  247. package/components/routes/cases/hooks/useCase.js +0 -69
  248. package/components/routes/cases/hooks/useCase.test.d.ts +0 -1
  249. package/components/routes/cases/hooks/useCase.test.js +0 -141
  250. package/components/routes/cases/modals/AddToCaseModal.d.ts +0 -7
  251. package/components/routes/cases/modals/AddToCaseModal.js +0 -59
  252. package/components/routes/cases/modals/AddToCaseModal.test.d.ts +0 -1
  253. package/components/routes/cases/modals/AddToCaseModal.test.js +0 -313
  254. package/components/routes/cases/modals/CaseRecordRow.d.ts +0 -9
  255. package/components/routes/cases/modals/CaseRecordRow.js +0 -15
  256. package/components/routes/cases/modals/CreateCaseModal.d.ts +0 -7
  257. package/components/routes/cases/modals/CreateCaseModal.js +0 -55
  258. package/components/routes/cases/modals/CreateCaseModal.test.d.ts +0 -1
  259. package/components/routes/cases/modals/CreateCaseModal.test.js +0 -358
  260. package/components/routes/cases/modals/RenameItemModal.d.ts +0 -9
  261. package/components/routes/cases/modals/RenameItemModal.js +0 -48
  262. package/components/routes/cases/modals/ResolveModal.d.ts +0 -7
  263. package/components/routes/cases/modals/ResolveModal.js +0 -115
  264. package/components/routes/cases/modals/ResolveModal.test.d.ts +0 -1
  265. package/components/routes/cases/modals/ResolveModal.test.js +0 -384
  266. package/components/routes/cases/modals/hooks.d.ts +0 -7
  267. package/components/routes/cases/modals/hooks.js +0 -44
  268. package/components/routes/cases/modals/types.d.ts +0 -5
  269. package/components/routes/cases/search/CaseAssigneeFilter.d.ts +0 -6
  270. package/components/routes/cases/search/CaseAssigneeFilter.js +0 -33
  271. package/components/routes/cases/search/CaseAssigneeFilter.test.d.ts +0 -1
  272. package/components/routes/cases/search/CaseAssigneeFilter.test.js +0 -127
  273. package/components/routes/cases/search/CaseDateFilter.d.ts +0 -13
  274. package/components/routes/cases/search/CaseDateFilter.js +0 -26
  275. package/components/routes/cases/search/CaseDateFilter.test.d.ts +0 -1
  276. package/components/routes/cases/search/CaseDateFilter.test.js +0 -115
  277. package/components/routes/cases/search/CaseStatusFilter.d.ts +0 -6
  278. package/components/routes/cases/search/CaseStatusFilter.js +0 -13
  279. package/components/routes/cases/search/CaseStatusFilter.test.d.ts +0 -1
  280. package/components/routes/cases/search/CaseStatusFilter.test.js +0 -86
  281. package/components/routes/hits/search/shared/IndexPicker.d.ts +0 -2
  282. package/components/routes/hits/search/shared/IndexPicker.js +0 -20
  283. package/components/routes/observables/ObservableViewer.d.ts +0 -7
  284. package/components/routes/observables/ObservableViewer.js +0 -27
  285. package/models/entities/generated/AttachmentsFile.d.ts +0 -12
  286. package/models/entities/generated/Case.d.ts +0 -28
  287. package/models/entities/generated/DestinationOriginal.d.ts +0 -19
  288. package/models/entities/generated/EmailAttachment.d.ts +0 -8
  289. package/models/entities/generated/EmailParent.d.ts +0 -19
  290. package/models/entities/generated/Enrichments.d.ts +0 -7
  291. package/models/entities/generated/EnrichmentsIndicator.d.ts +0 -21
  292. package/models/entities/generated/HttpResponse.d.ts +0 -11
  293. package/models/entities/generated/Item.d.ts +0 -9
  294. package/models/entities/generated/Observable.d.ts +0 -85
  295. package/models/entities/generated/ObservableCloud.d.ts +0 -20
  296. package/models/entities/generated/ObservableDestination.d.ts +0 -23
  297. package/models/entities/generated/ObservableEmail.d.ts +0 -30
  298. package/models/entities/generated/ObservableFile.d.ts +0 -36
  299. package/models/entities/generated/ObservableHowler.d.ts +0 -42
  300. package/models/entities/generated/ObservableHttp.d.ts +0 -11
  301. package/models/entities/generated/ObservableObserver.d.ts +0 -21
  302. package/models/entities/generated/ObservableOrganization.d.ts +0 -7
  303. package/models/entities/generated/ObservableProcess.d.ts +0 -34
  304. package/models/entities/generated/ObservableSource.d.ts +0 -23
  305. package/models/entities/generated/ObservableThreat.d.ts +0 -21
  306. package/models/entities/generated/ObservableTls.d.ts +0 -12
  307. package/models/entities/generated/ObserverIngress.d.ts +0 -9
  308. package/models/entities/generated/Task.d.ts +0 -10
  309. package/models/socket/CaseUpdate.d.ts +0 -5
  310. package/models/socket/ViewersUpdate.d.ts +0 -4
  311. package/utils/socketUtils.test.d.ts +0 -1
  312. package/utils/socketUtils.test.js +0 -59
  313. package/utils/typeUtils.d.ts +0 -7
  314. package/utils/typeUtils.js +0 -27
  315. /package/{api/socket/viewers.test.d.ts → components/app/providers/HitSearchProvider.test.d.ts} +0 -0
  316. /package/components/elements/hit/{related/RelatedRecords.d.ts → HitDetails.d.ts} +0 -0
  317. /package/components/routes/hits/search/{RecordBrowser.d.ts → HitBrowser.d.ts} +0 -0
  318. /package/components/{app/providers/RecordSearchProvider.test.d.ts → routes/hits/search/HitContextMenu.test.d.ts} +0 -0
  319. /package/components/{elements/MarkdownEditor.d.ts → routes/overviews/OverviewEditor.d.ts} +0 -0
@@ -5,9 +5,9 @@ import { cloneDeep } from 'lodash-es';
5
5
  import { setupContextSelectorMock, setupLocalStorageMock } from '@cccsaurora/howler-ui/tests/mocks';
6
6
  import { useContextSelector } from 'use-context-selector';
7
7
  import { DEFAULT_QUERY, MY_LOCAL_STORAGE_PREFIX, StorageKey } from '@cccsaurora/howler-ui/utils/constants';
8
+ import { HitContext } from './HitProvider';
9
+ import HitSearchProvider, { HitSearchContext } from './HitSearchProvider';
8
10
  import { ParameterContext } from './ParameterProvider';
9
- import { RecordContext } from './RecordProvider';
10
- import RecordSearchProvider, { RecordSearchContext } from './RecordSearchProvider';
11
11
  import { ViewContext } from './ViewProvider';
12
12
  vi.mock('api', { spy: true });
13
13
  setupContextSelectorMock();
@@ -30,21 +30,20 @@ let mockParameterContext = {
30
30
  mockParameterContext.offset = parseInt(offset);
31
31
  },
32
32
  views: [],
33
- indexes: ['hit'],
34
33
  addView: vi.fn()
35
34
  };
36
35
  const originalMockParameterContext = cloneDeep(mockParameterContext);
37
36
  const mockHitContext = {
38
- records: {},
39
- loadRecords: hits => {
40
- mockHitContext.records = {
41
- ...mockHitContext.records,
37
+ hits: {},
38
+ loadHits: hits => {
39
+ mockHitContext.hits = {
40
+ ...mockHitContext.hits,
42
41
  ...Object.fromEntries(hits.map(hit => [hit.howler.id, hit]))
43
42
  };
44
43
  }
45
44
  };
46
45
  const Wrapper = ({ children }) => {
47
- return (_jsx(ViewContext.Provider, { value: mockViewContext, children: _jsx(ParameterContext.Provider, { value: mockParameterContext, children: _jsx(RecordContext.Provider, { value: mockHitContext, children: _jsx(RecordSearchProvider, { children: children }) }) }) }));
46
+ return (_jsx(ViewContext.Provider, { value: mockViewContext, children: _jsx(ParameterContext.Provider, { value: mockParameterContext, children: _jsx(HitContext.Provider, { value: mockHitContext, children: _jsx(HitSearchProvider, { children: children }) }) }) }));
48
47
  };
49
48
  beforeEach(() => {
50
49
  mockParameterContext = cloneDeep(originalMockParameterContext);
@@ -58,32 +57,38 @@ beforeEach(() => {
58
57
  let mockSearchParams = new URLSearchParams();
59
58
  vi.mocked(useSearchParams).mockReturnValue([mockSearchParams, mockSetParams]);
60
59
  });
61
- describe('RecordSearchContext', () => {
60
+ describe('HitSearchContext', () => {
62
61
  it('should initialize with default values', async () => {
63
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
62
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
64
63
  displayType: ctx.displayType,
65
64
  searching: ctx.searching,
66
65
  error: ctx.error,
67
66
  response: ctx.response,
67
+ bundleId: ctx.bundleId,
68
68
  fzfSearch: ctx.fzfSearch
69
69
  })), { wrapper: Wrapper });
70
70
  expect(hook.result.current.displayType).toBe('list');
71
71
  expect(hook.result.current.searching).toBe(false);
72
72
  expect(hook.result.current.error).toBeNull();
73
73
  expect(hook.result.current.response).toBeNull();
74
+ expect(hook.result.current.bundleId).toBeNull();
74
75
  expect(hook.result.current.fzfSearch).toBe(false);
75
76
  });
77
+ it('should set bundleId when on bundles route', () => {
78
+ mockLocation.pathname = '/bundles/test_bundle_id';
79
+ mockParams.mockReturnValue({ id: 'test_bundle_id' });
80
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.bundleId), { wrapper: Wrapper });
81
+ expect(hook.result.current).toBe('test_bundle_id');
82
+ });
76
83
  it('should initialize queryHistory from localStorage', () => {
77
84
  const mockHistory = { 'test:query': new Date().toISOString() };
78
85
  mockLocalStorage.setItem(`${MY_LOCAL_STORAGE_PREFIX}.${StorageKey.QUERY_HISTORY}`, JSON.stringify(mockHistory));
79
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.queryHistory), {
80
- wrapper: Wrapper
81
- });
86
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.queryHistory), { wrapper: Wrapper });
82
87
  expect(hook.result.current).toEqual(mockHistory);
83
88
  });
84
89
  describe('setDisplayType', () => {
85
90
  it('should update display type', () => {
86
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
91
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
87
92
  displayType: ctx.displayType,
88
93
  setDisplayType: ctx.setDisplayType
89
94
  })), { wrapper: Wrapper });
@@ -96,7 +101,7 @@ describe('RecordSearchContext', () => {
96
101
  });
97
102
  describe('setFzfSearch', () => {
98
103
  it('should update fzfSearch state', () => {
99
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
104
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
100
105
  fzfSearch: ctx.fzfSearch,
101
106
  setFzfSearch: ctx.setFzfSearch
102
107
  })), { wrapper: Wrapper });
@@ -109,7 +114,7 @@ describe('RecordSearchContext', () => {
109
114
  });
110
115
  describe('setQueryHistory', () => {
111
116
  it('should update query history', () => {
112
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
117
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
113
118
  queryHistory: ctx.queryHistory,
114
119
  setQueryHistory: ctx.setQueryHistory
115
120
  })), { wrapper: Wrapper });
@@ -122,7 +127,7 @@ describe('RecordSearchContext', () => {
122
127
  });
123
128
  describe('search', () => {
124
129
  it('should perform a search and update response', async () => {
125
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
130
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
126
131
  search: ctx.search,
127
132
  searching: ctx.searching,
128
133
  response: ctx.response,
@@ -132,13 +137,13 @@ describe('RecordSearchContext', () => {
132
137
  hook.result.current.search('test query');
133
138
  });
134
139
  await waitFor(() => {
135
- expect(hpost).toHaveBeenCalledWith('/api/v2/search/hit', expect.objectContaining({
140
+ expect(hpost).toHaveBeenCalledWith('/api/v1/search/hit', expect.objectContaining({
136
141
  query: expect.stringContaining('test query')
137
142
  }));
138
143
  });
139
144
  });
140
145
  it('should set searching state during search', async () => {
141
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
146
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
142
147
  search: ctx.search,
143
148
  searching: ctx.searching
144
149
  })), { wrapper: Wrapper });
@@ -167,7 +172,7 @@ describe('RecordSearchContext', () => {
167
172
  });
168
173
  it('should handle search errors', async () => {
169
174
  vi.mocked(hpost).mockRejectedValueOnce(new Error('Search failed'));
170
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
175
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
171
176
  search: ctx.search,
172
177
  error: ctx.error,
173
178
  searching: ctx.searching
@@ -188,7 +193,7 @@ describe('RecordSearchContext', () => {
188
193
  total: 10
189
194
  };
190
195
  vi.mocked(hpost).mockResolvedValueOnce(mockResponse);
191
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
196
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
192
197
  search: ctx.search,
193
198
  response: ctx.response
194
199
  })), { wrapper: Wrapper });
@@ -224,7 +229,7 @@ describe('RecordSearchContext', () => {
224
229
  total: 10
225
230
  };
226
231
  vi.mocked(hpost).mockResolvedValueOnce(mockResponse);
227
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
232
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
228
233
  search: ctx.search,
229
234
  response: ctx.response
230
235
  })), { wrapper: Wrapper });
@@ -238,13 +243,27 @@ describe('RecordSearchContext', () => {
238
243
  expect(hook.result.current.response?.items[0].howler.id).toBe('hit1');
239
244
  });
240
245
  });
246
+ it('should include bundle filter when on bundles route', async () => {
247
+ mockLocation.pathname = '/bundles/test_bundle_id';
248
+ mockParams.mockReturnValue({ id: 'test_bundle_id' });
249
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.search), { wrapper: Wrapper });
250
+ act(() => {
251
+ hook.result.current('test query');
252
+ });
253
+ await waitFor(() => {
254
+ expect(hpost).toHaveBeenCalledWith('/api/v1/search/hit', expect.objectContaining({
255
+ query: 'test query',
256
+ filters: ['event.created:[now-1w TO now]', 'howler.bundles:test_bundle_id']
257
+ }));
258
+ });
259
+ });
241
260
  it('should apply date range filter from span', async () => {
242
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.search), { wrapper: Wrapper });
261
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.search), { wrapper: Wrapper });
243
262
  act(() => {
244
263
  hook.result.current('test query');
245
264
  });
246
265
  await waitFor(() => {
247
- expect(hpost).toHaveBeenCalledWith('/api/v2/search/hit', expect.objectContaining({
266
+ expect(hpost).toHaveBeenCalledWith('/api/v1/search/hit', expect.objectContaining({
248
267
  filters: expect.arrayContaining([expect.stringContaining('event.created:')])
249
268
  }));
250
269
  });
@@ -253,24 +272,24 @@ describe('RecordSearchContext', () => {
253
272
  mockParameterContext.span = 'date.range.custom';
254
273
  mockParameterContext.startDate = '2025-01-01';
255
274
  mockParameterContext.endDate = '2025-12-31';
256
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.search), { wrapper: Wrapper });
275
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.search), { wrapper: Wrapper });
257
276
  act(() => {
258
277
  hook.result.current('test query');
259
278
  });
260
279
  await waitFor(() => {
261
- expect(hpost).toHaveBeenCalledWith('/api/v2/search/hit', expect.objectContaining({
280
+ expect(hpost).toHaveBeenCalledWith('/api/v1/search/hit', expect.objectContaining({
262
281
  filters: expect.arrayContaining([expect.stringContaining('event.created:')])
263
282
  }));
264
283
  });
265
284
  });
266
285
  it('should exclude filters ending with * from search', async () => {
267
286
  mockParameterContext.filters = ['status:open', 'howler.escalation:*'];
268
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.search), { wrapper: Wrapper });
287
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.search), { wrapper: Wrapper });
269
288
  act(() => {
270
289
  hook.result.current('test query');
271
290
  });
272
291
  await waitFor(() => {
273
- expect(hpost).toHaveBeenCalledWith('/api/v2/search/hit', expect.objectContaining({
292
+ expect(hpost).toHaveBeenCalledWith('/api/v1/search/hit', expect.objectContaining({
274
293
  filters: expect.not.arrayContaining([expect.stringContaining('howler.escalation:*')])
275
294
  }));
276
295
  });
@@ -283,7 +302,7 @@ describe('RecordSearchContext', () => {
283
302
  rows: 0,
284
303
  total: 50
285
304
  });
286
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
305
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
287
306
  search: ctx.search
288
307
  })), { wrapper: Wrapper });
289
308
  act(() => {
@@ -297,7 +316,7 @@ describe('RecordSearchContext', () => {
297
316
  it('should not search when sort or span is null', async () => {
298
317
  mockParameterContext.sort = null;
299
318
  mockParameterContext.span = null;
300
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.search), { wrapper: Wrapper });
319
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.search), { wrapper: Wrapper });
301
320
  act(() => {
302
321
  hook.result.current('test query');
303
322
  });
@@ -309,7 +328,7 @@ describe('RecordSearchContext', () => {
309
328
  });
310
329
  describe('automatic search on parameter changes', () => {
311
330
  it('should trigger search when filters change', async () => {
312
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
331
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
313
332
  response: ctx.response
314
333
  })), { wrapper: Wrapper });
315
334
  await waitFor(() => {
@@ -323,23 +342,23 @@ describe('RecordSearchContext', () => {
323
342
  expect(hpost).toHaveBeenCalled();
324
343
  }, { timeout: 2000 });
325
344
  });
326
- it('should not trigger search when query is DEFAULT_QUERY', async () => {
345
+ it('should not trigger search when query is DEFAULT_QUERY and no bundleId', async () => {
327
346
  mockParameterContext.query = DEFAULT_QUERY;
328
- renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.response), { wrapper: Wrapper });
347
+ renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.response), { wrapper: Wrapper });
329
348
  await waitFor(() => {
330
349
  expect(hpost).not.toHaveBeenCalled();
331
350
  });
332
351
  });
333
352
  it('should not trigger search when span is custom but dates are missing', async () => {
334
- renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.response), { wrapper: Wrapper });
353
+ renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.response), { wrapper: Wrapper });
335
354
  await waitFor(() => {
336
355
  expect(hpost).not.toHaveBeenCalled();
337
356
  });
338
357
  });
339
358
  });
340
- describe('useRecordSearchContextSelector', () => {
359
+ describe('useHitSearchContextSelector', () => {
341
360
  it('should allow selecting specific values from context', async () => {
342
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ({
361
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ({
343
362
  searching: ctx.searching,
344
363
  error: ctx.error
345
364
  })), { wrapper: Wrapper });
@@ -349,7 +368,7 @@ describe('RecordSearchContext', () => {
349
368
  });
350
369
  describe('edge cases', () => {
351
370
  it('should handle concurrent search calls with throttling', async () => {
352
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.search), { wrapper: Wrapper });
371
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.search), { wrapper: Wrapper });
353
372
  // Make multiple rapid calls
354
373
  act(() => {
355
374
  hook.result.current('query1');
@@ -361,8 +380,8 @@ describe('RecordSearchContext', () => {
361
380
  expect(hpost).toHaveBeenCalledTimes(1);
362
381
  }, { timeout: 2000 });
363
382
  });
364
- it('should clear response when query becomes DEFAULT_QUERY without viewId', async () => {
365
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.response), { wrapper: Wrapper });
383
+ it('should clear response when query becomes DEFAULT_QUERY without viewId or bundleId', async () => {
384
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.response), { wrapper: Wrapper });
366
385
  await waitFor(() => {
367
386
  expect(hook.result.current).toBeDefined();
368
387
  }, { timeout: 2000 });
@@ -382,12 +401,12 @@ describe('RecordSearchContext', () => {
382
401
  { view_id: 'view_1', query: 'howler.status:open' },
383
402
  { view_id: 'view_2', query: 'howler.priority:high' }
384
403
  ]);
385
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.search), { wrapper: Wrapper });
404
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.search), { wrapper: Wrapper });
386
405
  act(() => {
387
406
  hook.result.current('test query');
388
407
  });
389
408
  await waitFor(() => {
390
- expect(hpost).toHaveBeenCalledWith('/api/v2/search/hit', expect.objectContaining({
409
+ expect(hpost).toHaveBeenCalledWith('/api/v1/search/hit', expect.objectContaining({
391
410
  query: 'test query',
392
411
  filters: expect.arrayContaining(['howler.status:open', 'howler.priority:high'])
393
412
  }));
@@ -400,12 +419,12 @@ describe('RecordSearchContext', () => {
400
419
  { view_id: 'view_2', query: 'howler.priority:high' },
401
420
  { view_id: 'view_3', query: 'howler.analytic:sigma' }
402
421
  ]);
403
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.search), { wrapper: Wrapper });
422
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.search), { wrapper: Wrapper });
404
423
  act(() => {
405
424
  hook.result.current('test query');
406
425
  });
407
426
  await waitFor(() => {
408
- expect(hpost).toHaveBeenCalledWith('/api/v2/search/hit', expect.objectContaining({
427
+ expect(hpost).toHaveBeenCalledWith('/api/v1/search/hit', expect.objectContaining({
409
428
  query: 'test query',
410
429
  filters: [
411
430
  'event.created:[now-1w TO now]',
@@ -424,7 +443,7 @@ describe('RecordSearchContext', () => {
424
443
  mockParameterContext.views = [];
425
444
  const mockSearchParams = new URLSearchParams();
426
445
  vi.mocked(useSearchParams).mockReturnValue([mockSearchParams, mockSetParams]);
427
- renderHook(() => useContextSelector(RecordSearchContext, () => { }), { wrapper: Wrapper });
446
+ renderHook(() => useContextSelector(HitSearchContext, () => { }), { wrapper: Wrapper });
428
447
  await waitFor(() => {
429
448
  expect(mockParameterContext.addView).toBeCalledWith('default_view_id');
430
449
  });
@@ -436,7 +455,7 @@ describe('RecordSearchContext', () => {
436
455
  const mockSearchParams = new URLSearchParams();
437
456
  mockSearchParams.append('view', 'existing_view');
438
457
  vi.mocked(useSearchParams).mockReturnValue([mockSearchParams, mockSetParams]);
439
- renderHook(() => useContextSelector(RecordSearchContext, () => { }), { wrapper: Wrapper });
458
+ renderHook(() => useContextSelector(HitSearchContext, () => { }), { wrapper: Wrapper });
440
459
  await waitFor(() => {
441
460
  expect(mockParameterContext.addView).not.toBeCalled();
442
461
  });
@@ -447,7 +466,7 @@ describe('RecordSearchContext', () => {
447
466
  mockParameterContext.views = [];
448
467
  const mockSearchParams = new URLSearchParams();
449
468
  vi.mocked(useSearchParams).mockReturnValue([mockSearchParams, mockSetParams]);
450
- renderHook(() => useContextSelector(RecordSearchContext, () => { }), { wrapper: Wrapper });
469
+ renderHook(() => useContextSelector(HitSearchContext, () => { }), { wrapper: Wrapper });
451
470
  await waitFor(() => {
452
471
  expect(mockSetParams).not.toHaveBeenCalled();
453
472
  });
@@ -457,12 +476,12 @@ describe('RecordSearchContext', () => {
457
476
  it('should not break when view ID does not exist', async () => {
458
477
  mockParameterContext.views = ['non_existent_view'];
459
478
  mockViewContext.getCurrentViews = vi.fn(() => Promise.resolve([null]));
460
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.search), { wrapper: Wrapper });
479
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.search), { wrapper: Wrapper });
461
480
  act(() => {
462
481
  hook.result.current('test query');
463
482
  });
464
483
  await waitFor(() => {
465
- expect(hpost).toHaveBeenCalledWith('/api/v2/search/hit', expect.objectContaining({
484
+ expect(hpost).toHaveBeenCalledWith('/api/v1/search/hit', expect.objectContaining({
466
485
  query: expect.stringContaining('test query'),
467
486
  filters: ['event.created:[now-1w TO now]']
468
487
  }));
@@ -474,12 +493,12 @@ describe('RecordSearchContext', () => {
474
493
  { view_id: 'view_1', query: 'howler.status:open' },
475
494
  { view_id: 'view_2', query: 'howler.priority:high' }
476
495
  ]);
477
- const hook = renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.search), { wrapper: Wrapper });
496
+ const hook = renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.search), { wrapper: Wrapper });
478
497
  act(() => {
479
498
  hook.result.current('test query');
480
499
  });
481
500
  await waitFor(() => {
482
- expect(hpost).toHaveBeenCalledWith('/api/v2/search/hit', expect.objectContaining({
501
+ expect(hpost).toHaveBeenCalledWith('/api/v1/search/hit', expect.objectContaining({
483
502
  query: 'test query',
484
503
  filters: ['event.created:[now-1w TO now]', 'howler.status:open', 'howler.priority:high']
485
504
  }));
@@ -490,7 +509,7 @@ describe('RecordSearchContext', () => {
490
509
  it('should not trigger search when views is empty and query is DEFAULT_QUERY', async () => {
491
510
  mockParameterContext.query = DEFAULT_QUERY;
492
511
  mockParameterContext.views = [];
493
- renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.response), { wrapper: Wrapper });
512
+ renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.response), { wrapper: Wrapper });
494
513
  await waitFor(() => {
495
514
  expect(hpost).not.toHaveBeenCalled();
496
515
  });
@@ -498,7 +517,7 @@ describe('RecordSearchContext', () => {
498
517
  it('should trigger search when views.length > 0 even with DEFAULT_QUERY', async () => {
499
518
  mockParameterContext.query = DEFAULT_QUERY;
500
519
  mockParameterContext.views = ['view_1'];
501
- renderHook(() => useContextSelector(RecordSearchContext, ctx => ctx.response), { wrapper: Wrapper });
520
+ renderHook(() => useContextSelector(HitSearchContext, ctx => ctx.response), { wrapper: Wrapper });
502
521
  await waitFor(() => {
503
522
  expect(hpost).toHaveBeenCalled();
504
523
  });
@@ -1,7 +1,6 @@
1
1
  import type { FC, PropsWithChildren, ReactNode } from 'react';
2
2
  export interface ModalOptions {
3
3
  disableClose?: boolean;
4
- height?: number | string | null;
5
4
  maxWidth?: string;
6
5
  maxHeight?: string;
7
6
  }
@@ -1,5 +1,4 @@
1
1
  import type { FC, PropsWithChildren } from 'react';
2
- export type SearchIndex = 'hit' | 'observable' | 'case';
3
2
  export interface ParameterContextType {
4
3
  selected?: string;
5
4
  query?: string;
@@ -7,7 +6,6 @@ export interface ParameterContextType {
7
6
  trackTotalHits: boolean;
8
7
  sort?: string;
9
8
  span?: string;
10
- indexes?: SearchIndex[];
11
9
  filters?: string[];
12
10
  startDate?: string;
13
11
  endDate?: string;
@@ -21,16 +19,11 @@ export interface ParameterContextType {
21
19
  addFilter: (filter: string) => void;
22
20
  removeFilter: (filter: string) => void;
23
21
  setFilter: (index: number, filter: string) => void;
24
- resetFilters: () => void;
25
- addIndex: (index: SearchIndex) => void;
26
- removeIndex: (index: SearchIndex) => void;
27
- setIndex: (position: number, index: SearchIndex) => void;
28
- setIndexes: (indexes: SearchIndex[]) => void;
29
- resetIndexes: () => void;
22
+ clearFilters: () => void;
30
23
  addView: (view: string) => void;
31
24
  removeView: (view: string) => void;
32
25
  setView: (index: number, view: string) => void;
33
- resetViews: () => void;
26
+ clearViews: () => void;
34
27
  }
35
28
  export declare const ParameterContext: import("use-context-selector").Context<ParameterContextType>;
36
29
  /**