synapse-react-client 4.0.46 → 4.0.48

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 (559) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/aridhia-queries/useSubmitAridhiaDar.js +2 -2
  3. package/dist/aridhia-queries/useSubmitAridhiaDar.js.map +1 -1
  4. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js +1 -1
  5. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  6. package/dist/components/AccountLevelBadges/AccountLevelBadges.js +1 -1
  7. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  8. package/dist/components/AclEditor/AclEditor.test-utils.js +3 -5
  9. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  10. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
  11. package/dist/components/Aridhia/AridhiaAccessStatus.js +43 -30
  12. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  13. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +6 -2
  14. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -1
  15. package/dist/components/Aridhia/AridhiaDarStatusPopover.js +101 -31
  16. package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -1
  17. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts +11 -9
  18. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts.map +1 -1
  19. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +24 -13
  20. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  21. package/dist/components/Authentication/LastLoginInfo.js +2 -2
  22. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  23. package/dist/components/Authentication/RecoveryCodeForm.js +1 -1
  24. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  25. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  26. package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
  27. package/dist/components/Authentication/TOTPForm.js +3 -3
  28. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  29. package/dist/components/Authentication/index.d.ts +6 -6
  30. package/dist/components/Authentication/index.d.ts.map +1 -1
  31. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js +1 -1
  32. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  33. package/dist/components/CardContainer/CardContainer.js +7 -7
  34. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  35. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js +1 -1
  36. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  37. package/dist/components/ChallengeSubmission/ChallengeSubmission.d.ts.map +1 -1
  38. package/dist/components/ChallengeSubmission/ChallengeSubmission.js +1 -1
  39. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  40. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +1 -1
  41. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  42. package/dist/components/CitationPopover/CitationPopoverUtils.js +2 -2
  43. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  44. package/dist/components/CohortBuilder/CohortBuilder.css +1 -0
  45. package/dist/components/CohortBuilder/CohortBuilder.d.ts +35 -0
  46. package/dist/components/CohortBuilder/CohortBuilder.d.ts.map +1 -0
  47. package/dist/components/CohortBuilder/CohortBuilder.js +108 -0
  48. package/dist/components/CohortBuilder/CohortBuilder.js.map +1 -0
  49. package/dist/components/CohortBuilder/CohortBuilder.module.js +10 -0
  50. package/dist/components/CohortBuilder/CohortBuilder.module.js.map +1 -0
  51. package/dist/components/CohortBuilder/CohortBuilder.module.scss +20 -0
  52. package/dist/components/CohortBuilder/CohortFilesPanel.d.ts +16 -0
  53. package/dist/components/CohortBuilder/CohortFilesPanel.d.ts.map +1 -0
  54. package/dist/components/CohortBuilder/CohortFilesPanel.js +124 -0
  55. package/dist/components/CohortBuilder/CohortFilesPanel.js.map +1 -0
  56. package/dist/components/CohortBuilder/cohortHandOff.d.ts +25 -0
  57. package/dist/components/CohortBuilder/cohortHandOff.d.ts.map +1 -0
  58. package/dist/components/CohortBuilder/cohortHandOff.js +26 -0
  59. package/dist/components/CohortBuilder/cohortHandOff.js.map +1 -0
  60. package/dist/components/ColumnFilter/ColumnFilter.d.ts.map +1 -1
  61. package/dist/components/ColumnFilter/ColumnFilter.js +14 -13
  62. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  63. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
  64. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  65. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts +11 -2
  66. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
  67. package/dist/components/DataGrid/columns/AutocompleteColumn.js +115 -109
  68. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  69. package/dist/components/DataGrid/columns/NumberColumn.js +1 -1
  70. package/dist/components/DataGrid/columns/NumberColumn.js.map +1 -1
  71. package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts +20 -0
  72. package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts.map +1 -0
  73. package/dist/components/DataGrid/columns/NumberOrEnumColumn.js +18 -0
  74. package/dist/components/DataGrid/columns/NumberOrEnumColumn.js.map +1 -0
  75. package/dist/components/DataGrid/components/contextMenu.js +3 -3
  76. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  77. package/dist/components/DataGrid/hooks/useGridUndoRedo.d.ts.map +1 -1
  78. package/dist/components/DataGrid/hooks/useGridUndoRedo.js +9 -7
  79. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  80. package/dist/components/DataGrid/hooks/useStack.d.ts +1 -1
  81. package/dist/components/DataGrid/hooks/useStack.js +2 -2
  82. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  83. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  84. package/dist/components/DataGrid/utils/columnFactory.js +47 -42
  85. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  86. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js +7 -7
  87. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  88. package/dist/components/DataGrid/utils/json-rx/JsonRx.js +2 -2
  89. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  90. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +1 -1
  91. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  92. package/dist/components/DownloadCart/MeetAccessRequirementCard.js +1 -1
  93. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  94. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js +5 -5
  95. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  96. package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
  97. package/dist/components/EntityFinder/details/view/DetailsView.js +4 -4
  98. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  99. package/dist/components/EntityHeaderTable/EntityHeaderTable.js +4 -4
  100. package/dist/components/EntityHeaderTable/Filter.d.ts.map +1 -1
  101. package/dist/components/EntityHeaderTable/Filter.js +1 -1
  102. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  103. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  104. package/dist/components/FeaturedDataTabs/FacetPlotsCard.d.ts.map +1 -1
  105. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +80 -84
  106. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  107. package/dist/components/FormTemplateEditor/FormStructurePanel.js +7 -7
  108. package/dist/components/FormTemplateEditor/StepCard.js +9 -9
  109. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +2 -2
  110. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
  111. package/dist/components/FullTextSearch/FullTextSearch.js +8 -8
  112. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  113. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +1 -1
  114. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js.map +1 -1
  115. package/dist/components/GenericCard/DuoTermTags/duoTerms.js +1 -1
  116. package/dist/components/GenericCard/DuoTermTags/duoTerms.js.map +1 -1
  117. package/dist/components/GenericCard/TableRowGenericCard.js +37 -37
  118. package/dist/components/GoalsV3/GoalsV3.js +1 -1
  119. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  120. package/dist/components/HexGrid/HexGrid.d.ts +3 -1
  121. package/dist/components/HexGrid/HexGrid.d.ts.map +1 -1
  122. package/dist/components/HexGrid/HexGrid.js +14 -13
  123. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  124. package/dist/components/IconSvg/index.d.ts +1 -1
  125. package/dist/components/IconSvg/index.d.ts.map +1 -1
  126. package/dist/components/IconSvg/index.js.map +1 -1
  127. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.d.ts.map +1 -1
  128. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js +3 -3
  129. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  130. package/dist/components/Markdown/MarkdownEditor.js +1 -1
  131. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  132. package/dist/components/Markdown/widget/index.d.ts +1 -1
  133. package/dist/components/Markdown/widget/index.d.ts.map +1 -1
  134. package/dist/components/ModalDownload/ModalDownload.d.ts.map +1 -1
  135. package/dist/components/ModalDownload/ModalDownload.js +2 -1
  136. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  137. package/dist/components/Plot/BarPlot.js +1 -1
  138. package/dist/components/Plot/BarPlot.js.map +1 -1
  139. package/dist/components/Plot/PlotPanelHeader.d.ts +3 -2
  140. package/dist/components/Plot/PlotPanelHeader.d.ts.map +1 -1
  141. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  142. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js +1 -1
  143. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  144. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js +1 -1
  145. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  146. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
  147. package/dist/components/ProvenanceGraph/ProvenanceGraph.js +3 -3
  148. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  149. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
  150. package/dist/components/QueryBuilder/FilterConditionRow.js +28 -27
  151. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
  152. package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
  153. package/dist/components/QueryBuilder/FilterGroupNode.js +91 -75
  154. package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
  155. package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -1
  156. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
  157. package/dist/components/QueryBuilder/QueryBuilderControls.js +91 -79
  158. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
  159. package/dist/components/QueryBuilder/QueryBuilderControls.module.js +11 -11
  160. package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -1
  161. package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +2 -0
  162. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +2 -0
  163. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
  164. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
  165. package/dist/components/QueryBuilder/queryBuilderLimits.d.ts +18 -0
  166. package/dist/components/QueryBuilder/queryBuilderLimits.d.ts.map +1 -0
  167. package/dist/components/QueryBuilder/queryBuilderLimits.js +38 -0
  168. package/dist/components/QueryBuilder/queryBuilderLimits.js.map +1 -0
  169. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +0 -8
  170. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
  171. package/dist/components/QueryBuilder/queryBuilderMetadata.js +6 -9
  172. package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
  173. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +5 -4
  174. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
  175. package/dist/components/QueryBuilder/queryBuilderTranslation.js +58 -33
  176. package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
  177. package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -1
  178. package/dist/components/QueryBuilder/useQBCombinedSql.js +4 -4
  179. package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -1
  180. package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -1
  181. package/dist/components/QueryBuilder/useQBValueDisplayName.js +5 -5
  182. package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -1
  183. package/dist/components/QuerySortSelector.js +5 -5
  184. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +21 -21
  185. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  186. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts +20 -0
  187. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts.map +1 -0
  188. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js +50 -0
  189. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js.map +1 -0
  190. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts +5 -3
  191. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts.map +1 -1
  192. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js +7 -3
  193. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  194. package/dist/components/QueryWrapper/downloadListFiles.d.ts +25 -0
  195. package/dist/components/QueryWrapper/downloadListFiles.d.ts.map +1 -0
  196. package/dist/components/QueryWrapper/downloadListFiles.js +39 -0
  197. package/dist/components/QueryWrapper/downloadListFiles.js.map +1 -0
  198. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts +16 -0
  199. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts.map +1 -0
  200. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js +50 -0
  201. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js.map +1 -0
  202. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts +4 -1
  203. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts.map +1 -1
  204. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js +15 -28
  205. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  206. package/dist/components/QueryWrapper/useOnQueryDataChange.d.ts.map +1 -1
  207. package/dist/components/QueryWrapper/useOnQueryDataChange.js +7 -6
  208. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  209. package/dist/components/QueryWrapperErrorBoundary.d.ts +3 -1
  210. package/dist/components/QueryWrapperErrorBoundary.d.ts.map +1 -1
  211. package/dist/components/QueryWrapperErrorBoundary.js +26 -21
  212. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  213. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js +7 -7
  214. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +2 -2
  215. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  216. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +34 -32
  217. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  218. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js +7 -7
  219. package/dist/components/QueryWrapperPlotNav/UseRowSet.d.ts.map +1 -1
  220. package/dist/components/QueryWrapperPlotNav/UseRowSet.js +12 -12
  221. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  222. package/dist/components/RowDataTable/CategorizedRowDataTable.css +1 -0
  223. package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts +33 -0
  224. package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts.map +1 -0
  225. package/dist/components/RowDataTable/CategorizedRowDataTable.js +64 -0
  226. package/dist/components/RowDataTable/CategorizedRowDataTable.js.map +1 -0
  227. package/dist/components/RowDataTable/CategorizedRowDataTable.module.js +8 -0
  228. package/dist/components/RowDataTable/CategorizedRowDataTable.module.js.map +1 -0
  229. package/dist/components/RowDataTable/CategorizedRowDataTable.module.scss +18 -0
  230. package/dist/components/RowDataTable/RowDataTable.d.ts +13 -0
  231. package/dist/components/RowDataTable/RowDataTable.d.ts.map +1 -1
  232. package/dist/components/RowDataTable/RowDataTable.js +25 -8
  233. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  234. package/dist/components/RssFeedCards/RssFeedCards.js +1 -1
  235. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  236. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.d.ts.map +1 -1
  237. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js +2 -2
  238. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  239. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js +1 -1
  240. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  241. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +17 -9
  242. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  243. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +39 -30
  244. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  245. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +24 -24
  246. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  247. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js +8 -8
  248. package/dist/components/SynapseChat/SynapseChatMessage.js +1 -1
  249. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  250. package/dist/components/SynapseForm/NavButtons.js.map +1 -1
  251. package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
  252. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js +1 -1
  253. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
  254. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.d.ts.map +1 -1
  255. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js +3 -3
  256. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
  257. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.d.ts.map +1 -1
  258. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +38 -44
  259. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  260. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +4 -4
  261. package/dist/components/SynapseTable/SqlEditor.js +7 -7
  262. package/dist/components/SynapseTable/SynapseTable.js +8 -8
  263. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  264. package/dist/components/SynapseTable/SynapseTableRenderers.d.ts.map +1 -1
  265. package/dist/components/SynapseTable/SynapseTableRenderers.js +73 -72
  266. package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
  267. package/dist/components/SynapseTable/SynapseTableUtils.js +1 -1
  268. package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
  269. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
  270. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +44 -45
  271. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  272. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js +1 -1
  273. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  274. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.d.ts.map +1 -1
  275. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +142 -142
  276. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  277. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +4 -4
  278. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js +12 -12
  279. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  280. package/dist/components/SynapseTable/table-top/ColumnSelection.js +6 -6
  281. package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts +0 -1
  282. package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts.map +1 -1
  283. package/dist/components/SynapseTable/table-top/DownloadOptions.js +64 -57
  284. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  285. package/dist/components/SynapseTable/usePrefetchTableData.d.ts.map +1 -1
  286. package/dist/components/SynapseTable/usePrefetchTableData.js +3 -3
  287. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  288. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
  289. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  290. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js +1 -1
  291. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  292. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +2 -2
  293. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  294. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +60 -60
  295. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  296. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js +1 -1
  297. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  298. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js +1 -1
  299. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  300. package/dist/components/TanStackTable/StyledTanStackTable.d.ts.map +1 -1
  301. package/dist/components/TanStackTable/StyledTanStackTable.js +1 -4
  302. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  303. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  304. package/dist/components/TotalQueryResults.js +14 -14
  305. package/dist/components/Webhook/WebhookDashboard.d.ts.map +1 -1
  306. package/dist/components/Webhook/WebhookDashboard.js +2 -2
  307. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  308. package/dist/components/download_list/DownloadConfirmationUtils.d.ts +5 -1
  309. package/dist/components/download_list/DownloadConfirmationUtils.d.ts.map +1 -1
  310. package/dist/components/download_list/DownloadConfirmationUtils.js +2 -2
  311. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  312. package/dist/components/error/ErrorBanner.d.ts.map +1 -1
  313. package/dist/components/error/ErrorBanner.js +49 -46
  314. package/dist/components/error/ErrorBanner.js.map +1 -1
  315. package/dist/components/file/upload/MultiFileUploadProgress.js +5 -5
  316. package/dist/components/row_renderers/Dataset.d.ts.map +1 -1
  317. package/dist/components/row_renderers/Dataset.js +6 -6
  318. package/dist/components/row_renderers/Dataset.js.map +1 -1
  319. package/dist/components/row_renderers/Funder.js +1 -1
  320. package/dist/components/row_renderers/Funder.js.map +1 -1
  321. package/dist/components/widgets/ElementWithTooltip.d.ts +6 -1
  322. package/dist/components/widgets/ElementWithTooltip.d.ts.map +1 -1
  323. package/dist/components/widgets/ElementWithTooltip.js +22 -14
  324. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  325. package/dist/components/widgets/RangeSlider/RangeSlider.d.ts.map +1 -1
  326. package/dist/components/widgets/RangeSlider/RangeSlider.js +1 -1
  327. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  328. package/dist/components/widgets/SynapseImage.js +1 -1
  329. package/dist/components/widgets/SynapseImage.js.map +1 -1
  330. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts +16 -5
  331. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
  332. package/dist/components/widgets/facet-nav/FacetNavPanel.js +115 -102
  333. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  334. package/dist/components/widgets/facet-nav/FacetPlotLegendList.d.ts.map +1 -1
  335. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js +4 -2
  336. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  337. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js +1 -1
  338. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  339. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts +2 -0
  340. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts.map +1 -1
  341. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  342. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +7 -0
  343. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
  344. package/dist/components/widgets/facet-nav/PlotsContainer.js +47 -45
  345. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  346. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js +4 -4
  347. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts +3 -2
  348. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
  349. package/dist/components/widgets/facet-nav/useFacetPlots.js +16 -15
  350. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  351. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js +4 -4
  352. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts +2 -2
  353. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
  354. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +62 -60
  355. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  356. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts +2 -0
  357. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts.map +1 -1
  358. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js +10 -10
  359. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  360. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts +1 -0
  361. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts.map +1 -1
  362. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js +2 -1
  363. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  364. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts +3 -2
  365. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts.map +1 -1
  366. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  367. package/dist/components/widgets/query-filter/FacetFilterControls.d.ts +3 -2
  368. package/dist/components/widgets/query-filter/FacetFilterControls.d.ts.map +1 -1
  369. package/dist/components/widgets/query-filter/FacetFilterControls.js +63 -62
  370. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  371. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.d.ts.map +1 -1
  372. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js +30 -29
  373. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  374. package/dist/components/widgets/query-filter/RangeFacetFilter.js +5 -5
  375. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts +53 -0
  376. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts.map +1 -0
  377. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js +391 -0
  378. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js.map +1 -0
  379. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts +41 -0
  380. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts.map +1 -0
  381. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js +379 -0
  382. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js.map +1 -0
  383. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts +26 -0
  384. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts.map +1 -0
  385. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js +112 -0
  386. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js.map +1 -0
  387. package/dist/mocks/mockAnnotationColumns.d.ts.map +1 -1
  388. package/dist/mocks/mockAnnotationColumns.js +1 -1
  389. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  390. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +9 -0
  391. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
  392. package/dist/mocks/msw/handlers/aridhiaHandlers.js +24 -15
  393. package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
  394. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +21 -2
  395. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
  396. package/dist/mocks/msw/handlers/asyncJobHandlers.js +30 -22
  397. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  398. package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts +27 -0
  399. package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts.map +1 -0
  400. package/dist/mocks/msw/handlers/cohortBuilderHandlers.js +158 -0
  401. package/dist/mocks/msw/handlers/cohortBuilderHandlers.js.map +1 -0
  402. package/dist/mocks/msw/handlers/subscriptionHandlers.js +1 -1
  403. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  404. package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
  405. package/dist/mocks/msw/handlers/userProfileHandlers.js +2 -2
  406. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  407. package/dist/mocks/query/mockColumnCategoryTable.d.ts +19 -0
  408. package/dist/mocks/query/mockColumnCategoryTable.d.ts.map +1 -0
  409. package/dist/mocks/query/mockColumnCategoryTable.js +188 -0
  410. package/dist/mocks/query/mockColumnCategoryTable.js.map +1 -0
  411. package/dist/stories/ColorPaletteInspector.d.ts.map +1 -1
  412. package/dist/stories/ColorPaletteInspector.js +2 -2
  413. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  414. package/dist/style/components/facet_nav/_facet-nav-panel.scss +8 -0
  415. package/dist/style/main.css +1 -1
  416. package/dist/synapse-queries/auth/useOIDC.js +2 -2
  417. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  418. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +2 -2
  419. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -1
  420. package/dist/synapse-queries/challenge/useChallenge.js +2 -2
  421. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  422. package/dist/synapse-queries/chat/useChat.js +8 -8
  423. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  424. package/dist/synapse-queries/curation/task/useCurationTask.js +10 -10
  425. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  426. package/dist/synapse-queries/dataaccess/useAccessRequirements.js +24 -24
  427. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  428. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js +4 -4
  429. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  430. package/dist/synapse-queries/dataaccess/useEDuc.js +6 -6
  431. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  432. package/dist/synapse-queries/dataaccess/useFormTemplate.js +4 -4
  433. package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -1
  434. package/dist/synapse-queries/download/index.js +2 -2
  435. package/dist/synapse-queries/download/useDownloadList.d.ts +5 -0
  436. package/dist/synapse-queries/download/useDownloadList.d.ts.map +1 -1
  437. package/dist/synapse-queries/download/useDownloadList.js +14 -13
  438. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  439. package/dist/synapse-queries/entity/useEntity.d.ts.map +1 -1
  440. package/dist/synapse-queries/entity/useEntity.js +20 -20
  441. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  442. package/dist/synapse-queries/entity/useExportToADWorkbench.d.ts.map +1 -1
  443. package/dist/synapse-queries/entity/useExportToADWorkbench.js +2 -1
  444. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  445. package/dist/synapse-queries/entity/useExportToCavatica.d.ts.map +1 -1
  446. package/dist/synapse-queries/entity/useExportToCavatica.js +3 -2
  447. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  448. package/dist/synapse-queries/entity/useExportToPluto.d.ts.map +1 -1
  449. package/dist/synapse-queries/entity/useExportToPluto.js +2 -1
  450. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  451. package/dist/synapse-queries/entity/useGetQueryResultBundle.d.ts.map +1 -1
  452. package/dist/synapse-queries/entity/useGetQueryResultBundle.js +4 -7
  453. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  454. package/dist/synapse-queries/forum/useReply.js +6 -6
  455. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  456. package/dist/synapse-queries/forum/useThread.js +14 -14
  457. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  458. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
  459. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  460. package/dist/synapse-queries/grid/useGridSession.js +4 -4
  461. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  462. package/dist/synapse-queries/index.js +177 -176
  463. package/dist/synapse-queries/oauth/useOAuthClient.js +9 -9
  464. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  465. package/dist/synapse-queries/portal/usePortal.js +7 -7
  466. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  467. package/dist/synapse-queries/subscription/useSubscription.js +4 -4
  468. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  469. package/dist/synapse-queries/table/useTableUpdateTransaction.js +2 -2
  470. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  471. package/dist/synapse-queries/team/useTeam.js +2 -2
  472. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  473. package/dist/synapse-queries/team/useTeamList.d.ts.map +1 -1
  474. package/dist/synapse-queries/team/useTeamList.js +3 -3
  475. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  476. package/dist/synapse-queries/team/useTeamMembers.js +8 -8
  477. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  478. package/dist/synapse-queries/termsOfService/useTermsOfService.js +2 -2
  479. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  480. package/dist/synapse-queries/trash/useTrashCan.js +4 -4
  481. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  482. package/dist/synapse-queries/user/useCertificationQuiz.js +2 -2
  483. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  484. package/dist/synapse-queries/user/useFavorites.js +4 -4
  485. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  486. package/dist/synapse-queries/user/useRevokeCertification.js +2 -2
  487. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  488. package/dist/synapse-queries/wiki/useWiki.js +10 -10
  489. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  490. package/dist/tsconfig.build.tsbuildinfo +1 -1
  491. package/dist/utils/ContentTypeUtils.js +4 -4
  492. package/dist/utils/ContentTypeUtils.js.map +1 -1
  493. package/dist/utils/PermissionLevelToAccessType.js +1 -1
  494. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  495. package/dist/utils/analytics/useGoogleAnalytics.js +1 -1
  496. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  497. package/dist/utils/context/DocumentMetadataContext.js +1 -1
  498. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  499. package/dist/utils/functions/AccessControlListUtils.d.ts.map +1 -1
  500. package/dist/utils/functions/AccessControlListUtils.js +3 -3
  501. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  502. package/dist/utils/functions/ArrayUtils.js +2 -2
  503. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  504. package/dist/utils/functions/FileHandleUtils.js +1 -1
  505. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  506. package/dist/utils/functions/RegularExpressions.js +1 -1
  507. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  508. package/dist/utils/functions/StringUtils.d.ts.map +1 -1
  509. package/dist/utils/functions/StringUtils.js +1 -2
  510. package/dist/utils/functions/StringUtils.js.map +1 -1
  511. package/dist/utils/functions/deepLinkingUtils.js +2 -2
  512. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  513. package/dist/utils/functions/enumerationFacet.d.ts +26 -0
  514. package/dist/utils/functions/enumerationFacet.d.ts.map +1 -0
  515. package/dist/utils/functions/enumerationFacet.js +27 -0
  516. package/dist/utils/functions/enumerationFacet.js.map +1 -0
  517. package/dist/utils/functions/facetCountUtils.d.ts +12 -0
  518. package/dist/utils/functions/facetCountUtils.d.ts.map +1 -0
  519. package/dist/utils/functions/facetCountUtils.js +9 -0
  520. package/dist/utils/functions/facetCountUtils.js.map +1 -0
  521. package/dist/utils/functions/getEndpoint.js.map +1 -1
  522. package/dist/utils/functions/getUserData.js +1 -1
  523. package/dist/utils/functions/getUserData.js.map +1 -1
  524. package/dist/utils/functions/queryUtils.d.ts +1 -1
  525. package/dist/utils/functions/queryUtils.d.ts.map +1 -1
  526. package/dist/utils/functions/queryUtils.js +26 -22
  527. package/dist/utils/functions/queryUtils.js.map +1 -1
  528. package/dist/utils/functions/testDownloadSpeed.d.ts.map +1 -1
  529. package/dist/utils/functions/testDownloadSpeed.js +17 -26
  530. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  531. package/dist/utils/functions/unCamelCase.js +1 -1
  532. package/dist/utils/functions/unCamelCase.js.map +1 -1
  533. package/dist/utils/hooks/useGetInfoFromIds.js +5 -5
  534. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  535. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js +1 -1
  536. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  537. package/dist/utils/hooks/useLogin.d.ts.map +1 -1
  538. package/dist/utils/hooks/useLogin.js +5 -5
  539. package/dist/utils/hooks/useLogin.js.map +1 -1
  540. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  541. package/dist/utils/jsonschema/collectTopLevelProperties.d.ts +6 -0
  542. package/dist/utils/jsonschema/collectTopLevelProperties.d.ts.map +1 -1
  543. package/dist/utils/jsonschema/collectTopLevelProperties.js +1 -1
  544. package/dist/utils/jsonschema/collectTopLevelProperties.js.map +1 -1
  545. package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts +22 -0
  546. package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts.map +1 -0
  547. package/dist/utils/jsonschema/getNumberOrEnumInfo.js +39 -0
  548. package/dist/utils/jsonschema/getNumberOrEnumInfo.js.map +1 -0
  549. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts +1 -0
  550. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts.map +1 -1
  551. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js +1 -1
  552. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  553. package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts +5 -0
  554. package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts.map +1 -1
  555. package/dist/utils/jsonschema/getSchemaPropertyInfo.js +30 -15
  556. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  557. package/dist/utils/jsonschema/submissionContext.js +2 -2
  558. package/dist/utils/jsonschema/submissionContext.js.map +1 -1
  559. package/package.json +4 -4
@@ -51,8 +51,8 @@ type QueryWrapperPlotNavOwnProps = {
51
51
  */
52
52
  defaultShowQueryBuilder?: boolean;
53
53
  } & Omit<TopLevelControlsProps, 'entityId'> & Pick<QueryWrapperPlotNavCustomPlotParams, 'onCustomPlotClick'> & Pick<QueryWrapperProps, 'isRowSelectionVisible' | 'rowSelectionPrimaryKey' | 'isRowSelectionUIFloating' | 'fileIdColumnName' | 'fileNameColumnName' | 'fileVersionColumnName'> & Pick<QueryVisualizationWrapperProps, 'defaultShowPlots' | 'visibleColumnCount' | 'hiddenColumns' | 'columnAliases' | 'renderFacetValue' | 'rgbIndex' | 'showLastUpdatedOn' | 'noContentPlaceholderType' | 'unitDescription' | 'additionalFiltersSessionStorageKey' | 'helpConfiguration' | 'hideCopyToClipboard' | 'hideSearchBarControl' | 'hideVisualizationsControl' | 'enabledExternalAnalysisPlatforms' | 'lockTextMatchesQueryFilterPill'> & Pick<QueryContextType, 'combineRangeFacetConfig'>;
54
- export type QueryWrapperPlotNavProps = QueryOrDeprecatedSearchParams & PlotsContainerProps & QueryWrapperPlotNavOwnProps;
55
- export type QueryWrapperPlotNavContentsProps = Pick<QueryWrapperPlotNavProps, 'tableConfiguration' | 'name' | 'cardConfiguration' | 'facetsToPlot' | 'availableFacets' | 'initialExpandedFacetControls' | 'hideDownload' | 'hideAddToDownloadListMenuItem' | 'hideProgrammaticOptionsMenuItem' | 'hideQueryCount' | 'hideSqlEditorControl' | 'hideVisualizationsControl' | 'searchConfiguration' | 'enabledExternalAnalysisPlatforms' | 'cavaticaConnectAccountURL' | 'customControls' | 'customPlots' | 'fileIdColumnName' | 'fileNameColumnName' | 'fileVersionColumnName' | 'initialLimit' | 'initialPlotTypeByFacetColumnName' | 'hideTopLevelControls' | 'showQueryBuilderControl' | 'defaultShowQueryBuilder'> & {
54
+ export type QueryWrapperPlotNavProps = QueryOrDeprecatedSearchParams & Omit<PlotsContainerProps, 'disableFiltering'> & QueryWrapperPlotNavOwnProps;
55
+ export type QueryWrapperPlotNavContentsProps = Pick<QueryWrapperPlotNavProps, 'tableConfiguration' | 'name' | 'cardConfiguration' | 'facetsToPlot' | 'availableFacets' | 'initialExpandedFacetControls' | 'hideDownload' | 'hideAddToDownloadListMenuItem' | 'hideProgrammaticOptionsMenuItem' | 'hideQueryCount' | 'hideSqlEditorControl' | 'hideVisualizationsControl' | 'searchConfiguration' | 'enabledExternalAnalysisPlatforms' | 'cavaticaConnectAccountURL' | 'customControls' | 'customPlots' | 'fileIdColumnName' | 'fileNameColumnName' | 'fileVersionColumnName' | 'initialLimit' | 'initialPlotTypeByFacetColumnName' | 'defaultPlotType' | 'hideTopLevelControls' | 'showQueryBuilderControl' | 'defaultShowQueryBuilder'> & {
56
56
  isFullTextSearchEnabled: boolean;
57
57
  remount?: () => void;
58
58
  };
@@ -1 +1 @@
1
- {"version":3,"file":"QueryWrapperPlotNav.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryWrapperPlotNav.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"names":[],"mappings":"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"}
@@ -3,17 +3,17 @@ import { isFilterGroup as e } from "../../utils/types/IsType.js";
3
3
  import { isTable as t } from "../../utils/functions/EntityTypeUtils.js";
4
4
  import { getAdditionalFilters as n, parseEntityIdAndVersionFromSqlStatement as r } from "../../utils/functions/SqlFunctions.js";
5
5
  import "../../utils/functions/index.js";
6
- import { SynapseErrorBoundary as i } from "../error/ErrorBanner.js";
6
+ import { QueryVisualizationContextConsumer as i } from "../QueryVisualizationWrapper/QueryVisualizationContext.js";
7
+ import { SynapseErrorBoundary as a } from "../error/ErrorBanner.js";
7
8
  import "../../utils/index.js";
8
- import { useGetEntity as a } from "../../synapse-queries/entity/useEntity.js";
9
+ import { useGetEntity as o } from "../../synapse-queries/entity/useEntity.js";
9
10
  import "../../synapse-queries/index.js";
10
- import { ConfirmationDialog as o } from "../ConfirmationDialog/ConfirmationDialog.js";
11
+ import { ConfirmationDialog as s } from "../ConfirmationDialog/ConfirmationDialog.js";
11
12
  import "../ConfirmationDialog/index.js";
12
- import s from "../download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js";
13
- import { useQueryContext as c } from "../QueryContext/QueryContext.js";
13
+ import c from "../download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js";
14
+ import { useQueryContext as l } from "../QueryContext/QueryContext.js";
14
15
  import "../QueryContext/index.js";
15
- import { NoContentPlaceholderType as l } from "../SynapseTable/NoContentPlaceholderType.js";
16
- import { QueryVisualizationContextConsumer as u } from "../QueryVisualizationWrapper/QueryVisualizationContext.js";
16
+ import { NoContentPlaceholderType as u } from "../SynapseTable/NoContentPlaceholderType.js";
17
17
  import { QueryVisualizationWrapper as d } from "../QueryVisualizationWrapper/QueryVisualizationWrapper.js";
18
18
  import "../QueryVisualizationWrapper/index.js";
19
19
  import { isRowSelectionVisibleAtom as f } from "../QueryWrapper/TableRowSelectionState.js";
@@ -43,10 +43,10 @@ import { useAtomValue as ae } from "jotai";
43
43
  //#region src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx
44
44
  var oe = j(() => import("../QueryBuilder/QueryBuilderControls.js").then((e) => ({ default: e.QueryBuilderControls }))), F = "isShowingFacetFilters", I = "isHidingFacetFilters", L = "hasSelectedRows";
45
45
  function R(t) {
46
- let { tableConfiguration: n, name: r, cardConfiguration: a, facetsToPlot: l, availableFacets: d, initialExpandedFacetControls: p, hideDownload: v, hideAddToDownloadListMenuItem: A, hideProgrammaticOptionsMenuItem: j, hideQueryCount: M, hideSqlEditorControl: R, hideVisualizationsControl: z, searchConfiguration: B, cavaticaConnectAccountURL: se, customControls: V, remount: H = () => {}, isFullTextSearchEnabled: ce, customPlots: le, initialLimit: ue, initialPlotTypeByFacetColumnName: de, hideTopLevelControls: U, showQueryBuilderControl: fe = !1, defaultShowQueryBuilder: pe = !1 } = t, W = c(), [me, he] = N(!1), [G, K] = N(pe), [q, J] = N(() => D()), [ge, Y] = N(!1), { hasFacetedSelectColumn: X, queryMetadataQueryOptions: _e } = W, { executeQueryRequest: Z } = W, { isLoading: ve, data: ye } = ie(_e), be = () => {
46
+ let { tableConfiguration: n, name: r, cardConfiguration: o, facetsToPlot: u, availableFacets: d, initialExpandedFacetControls: p, hideDownload: v, hideAddToDownloadListMenuItem: A, hideProgrammaticOptionsMenuItem: j, hideQueryCount: M, hideSqlEditorControl: R, hideVisualizationsControl: z, searchConfiguration: B, cavaticaConnectAccountURL: se, customControls: V, remount: H = () => {}, isFullTextSearchEnabled: ce, customPlots: le, initialLimit: ue, initialPlotTypeByFacetColumnName: de, defaultPlotType: fe, hideTopLevelControls: U, showQueryBuilderControl: pe = !1, defaultShowQueryBuilder: me = !1 } = t, W = l(), [he, ge] = N(!1), [G, K] = N(me), [q, J] = N(() => D()), [_e, Y] = N(!1), { hasFacetedSelectColumn: X, queryMetadataQueryOptions: ve } = W, { executeQueryRequest: Z } = W, { isLoading: ye, data: be } = ie(ve), xe = () => {
47
47
  let t = W.currentQueryRequest.query.selectedFacets;
48
48
  if (t && t.length > 0) {
49
- let n = te(t, ye?.columnModels), r = ee(n);
49
+ let n = te(t, be?.columnModels), r = ee(n);
50
50
  J(n), Z((t) => ({
51
51
  ...t,
52
52
  query: {
@@ -65,9 +65,9 @@ function R(t) {
65
65
  additionalFilters: t.query.additionalFilters?.filter((t) => !e(t))
66
66
  }
67
67
  })), K(!1);
68
- }, xe = () => {
68
+ }, Se = () => {
69
69
  if (!G) {
70
- be();
70
+ xe();
71
71
  return;
72
72
  }
73
73
  let t = W.currentQueryRequest.query.additionalFilters?.some(e) ?? !1;
@@ -76,12 +76,12 @@ function R(t) {
76
76
  return;
77
77
  }
78
78
  Q();
79
- }, Se = ae(f), $ = W.currentQueryRequest, Ce = $?.query.selectedFacets !== void 0 && $.query.selectedFacets.length > 0 || $?.query.additionalFilters !== void 0 && $?.query.additionalFilters.length > 0, we = x();
80
- return /* @__PURE__ */ P(u, { children: (e) => {
79
+ }, Ce = ae(f), $ = W.currentQueryRequest, we = $?.query.selectedFacets !== void 0 && $.query.selectedFacets.length > 0 || $?.query.additionalFilters !== void 0 && $?.query.additionalFilters.length > 0, Te = x();
80
+ return /* @__PURE__ */ P(i, { children: (e) => {
81
81
  if (e === void 0) throw Error("No queryVisualizationContext found when using QueryVisualizationContextConsumer");
82
82
  return /* @__PURE__ */ P(ne, {
83
- className: `QueryWrapperPlotNav ${e.showFacetFilter && !G ? F : I} ${Se ? L : ""} ${U ? "isHidingTopLevelControls" : ""} ${G ? "isShowingQueryBuilder" : ""}`,
84
- sx: { "*": { cursor: ve ? "wait" : void 0 } },
83
+ className: `QueryWrapperPlotNav ${e.showFacetFilter && !G ? F : I} ${Ce ? L : ""} ${U ? "isHidingTopLevelControls" : ""} ${G ? "isShowingQueryBuilder" : ""}`,
84
+ sx: { "*": { cursor: ye ? "wait" : void 0 } },
85
85
  children: /* @__PURE__ */ re(g, { children: [
86
86
  ce ? /* @__PURE__ */ P(S, { ftsConfig: B?.ftsConfig }) : /* @__PURE__ */ P(C, {
87
87
  ...B,
@@ -89,11 +89,11 @@ function R(t) {
89
89
  queryVisualizationContext: e
90
90
  }),
91
91
  /* @__PURE__ */ P(h, {}),
92
- e.showDownloadConfirmation && /* @__PURE__ */ P(s, {
93
- addToDownloadListRequest: we,
92
+ e.showDownloadConfirmation && /* @__PURE__ */ P(c, {
93
+ addToDownloadListRequest: Te,
94
94
  onClose: () => e.setShowDownloadConfirmation(!1)
95
95
  }),
96
- !U && /* @__PURE__ */ P(i, { children: /* @__PURE__ */ P(w, {
96
+ !U && /* @__PURE__ */ P(a, { children: /* @__PURE__ */ P(w, {
97
97
  showColumnSelection: n !== void 0,
98
98
  name: r,
99
99
  hideDownload: v,
@@ -106,9 +106,9 @@ function R(t) {
106
106
  cavaticaConnectAccountURL: se,
107
107
  remount: H,
108
108
  customControls: V,
109
- showQueryBuilderControl: fe,
109
+ showQueryBuilderControl: pe,
110
110
  showQueryBuilder: G,
111
- onToggleQueryBuilder: xe
111
+ onToggleQueryBuilder: Se
112
112
  }) }),
113
113
  G ? /* @__PURE__ */ P(k, {
114
114
  fallback: null,
@@ -127,7 +127,7 @@ function R(t) {
127
127
  fallback: null,
128
128
  children: /* @__PURE__ */ P(m, {
129
129
  frontText: "",
130
- endText: Ce ? "filtered by" : "",
130
+ endText: we ? "filtered by" : "",
131
131
  hideIfUnfiltered: !0
132
132
  })
133
133
  }),
@@ -136,22 +136,24 @@ function R(t) {
136
136
  remount: H
137
137
  }),
138
138
  /* @__PURE__ */ P(E, {
139
- facetsToPlot: l,
139
+ facetsToPlot: u,
140
140
  customPlots: le,
141
- initialPlotTypeByFacetColumnName: de
141
+ initialPlotTypeByFacetColumnName: de,
142
+ defaultPlotType: fe,
143
+ disableFiltering: G
142
144
  }),
143
145
  /* @__PURE__ */ P(y, {
144
146
  tableConfiguration: n,
145
147
  hideDownload: v,
146
- cardConfiguration: a,
148
+ cardConfiguration: o,
147
149
  initialLimit: ue
148
150
  }),
149
- me && /* @__PURE__ */ P(_, {
151
+ he && /* @__PURE__ */ P(_, {
150
152
  getLastQueryRequest: W?.getCurrentQueryRequest,
151
- onClose: () => he(!1)
153
+ onClose: () => ge(!1)
152
154
  }),
153
- /* @__PURE__ */ P(o, {
154
- open: ge,
155
+ /* @__PURE__ */ P(s, {
156
+ open: _e,
155
157
  title: "Hide Query Builder?",
156
158
  content: "Hiding the Query Builder will clear the conditions you've built. This can't be undone.",
157
159
  confirmButtonProps: {
@@ -169,7 +171,7 @@ function R(t) {
169
171
  } });
170
172
  }
171
173
  function z(e) {
172
- let { sql: i, tableConfiguration: o, isInfinite: s = !o, limit: c = 25, showLastUpdatedOn: u, unitDescription: f, additionalFiltersSessionStorageKey: m, helpConfiguration: h, customPlots: g, enabledExternalAnalysisPlatforms: _ } = e, { entityId: y, versionNumber: b } = r(e.query?.sql ?? i ?? ""), x = M(() => e.query ? e.query : e.initQueryJson ? JSON.parse(e.initQueryJson) : {
174
+ let { sql: i, tableConfiguration: a, isInfinite: s = !a, limit: c = 25, showLastUpdatedOn: l, unitDescription: f, additionalFiltersSessionStorageKey: m, helpConfiguration: h, customPlots: g, enabledExternalAnalysisPlatforms: _ } = e, { entityId: y, versionNumber: b } = r(e.query?.sql ?? i ?? ""), x = M(() => e.query ? e.query : e.initQueryJson ? JSON.parse(e.initQueryJson) : {
173
175
  sql: i,
174
176
  additionalFilters: n(e.searchParams, e.sqlOperator, m),
175
177
  limit: c,
@@ -184,7 +186,7 @@ function z(e) {
184
186
  c
185
187
  ]), [S, C] = N(1), w = () => {
186
188
  C(S + 1);
187
- }, { data: T } = a(y, b), E = {
189
+ }, { data: T } = o(y, b), E = {
188
190
  entityId: y ?? "",
189
191
  concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest",
190
192
  partMask: 255,
@@ -211,8 +213,8 @@ function z(e) {
211
213
  defaultShowSearchBar: (e.defaultShowSearchBox || D) && !e.hideSearchBarControl,
212
214
  lockTextMatchesQueryFilterPill: e.lockTextMatchesQueryFilterPill,
213
215
  hideSearchBarControl: e.hideSearchBarControl,
214
- showLastUpdatedOn: u,
215
- noContentPlaceholderType: l.INTERACTIVE,
216
+ showLastUpdatedOn: l,
217
+ noContentPlaceholderType: u.INTERACTIVE,
216
218
  hasCustomPlots: Array.isArray(g) && g.length > 0,
217
219
  enabledExternalAnalysisPlatforms: _,
218
220
  children: /* @__PURE__ */ P(R, {
@@ -1 +1 @@
1
- {"version":3,"file":"QueryWrapperPlotNav.js","names":[],"sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"sourcesContent":["import { QueryOrDeprecatedSearchParams } from '@/components/CardContainerLogic/CardContainerLogic'\nimport AddToDownloadListConfirmationAlert from '@/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert'\nimport { useGetAddToDownloadListRequestForCurrentQuery } from '@/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery'\nimport { NoContentPlaceholderType } from '@/components/SynapseTable/NoContentPlaceholderType'\nimport { useGetEntity } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdAndVersionFromSqlStatement,\n} from '@/utils/functions'\nimport { isTable } from '@/utils/functions/EntityTypeUtils'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useQuery } from '@tanstack/react-query'\nimport { useAtomValue } from 'jotai'\nimport { lazy, Suspense, useMemo, useState } from 'react'\nimport { CardConfiguration } from '../CardContainer/CardConfiguration'\nimport { SynapseErrorBoundary } from '../error'\nimport FullTextSearch from '../FullTextSearch/FullTextSearch'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { QueryWrapperPlotNavCustomPlotParams } from '../Plot/SynapsePlot'\nimport { QueryContextType, useQueryContext } from '../QueryContext'\nimport {\n QueryVisualizationContextConsumer,\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper, QueryWrapperProps } from '../QueryWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { SynapseTableConfiguration } from '../SynapseTable'\nimport SearchV2, { SearchV2Props } from '../SynapseTable/SearchV2'\nimport SqlEditor from '../SynapseTable/SqlEditor'\nimport TopLevelControls, {\n TopLevelControlsProps,\n CustomControl,\n} from '../SynapseTable/TopLevelControls/TopLevelControls'\nimport { CustomControls } from '../SynapseTable/CustomControls/CustomControls'\nimport TotalQueryResults from '../TotalQueryResults'\nimport PlotsContainer, {\n PlotsContainerProps,\n} from '../widgets/facet-nav/PlotsContainer'\nimport FacetFilterControls, {\n FacetFilterControlsProps,\n} from '../widgets/query-filter/FacetFilterControls'\nimport {\n defaultQBGroup,\n hasCompleteCondition,\n} from '../QueryBuilder/queryBuilderOperations'\nimport {\n qbNodeToApiFilter,\n selectedFacetsToQBGroup,\n} from '../QueryBuilder/queryBuilderTranslation'\nimport { QBGroup } from '../QueryBuilder/QueryBuilderTypes'\nimport { ConfirmationDialog } from '../ConfirmationDialog'\nimport { isFilterGroup } from '../../utils/types/IsType'\nimport { QueryWrapperSynapsePlotProps } from './QueryWrapperSynapsePlot'\nimport { RowSetView } from './RowSetView'\nimport QueryWrapperLoadingScreen from '../QueryWrapper/QueryWrapperLoadingScreen'\n\n/**\n * The Query Builder is hidden on every tab that renders this nav until the\n * user opens it, and it pulls in a drag-and-drop library alongside its own\n * panel. Loading it on demand keeps all of that off the critical path for the\n * table and card views. It already renders inside a `Suspense` boundary, so\n * there is nothing else to coordinate.\n *\n * The QB tree helpers imported above stay eager — they are pure functions this\n * component calls from its own handlers, and none of them reach dnd-kit.\n */\nconst QueryBuilderControls = lazy(() =>\n import('../QueryBuilder/QueryBuilderControls').then(module => ({\n default: module.QueryBuilderControls,\n })),\n)\n\nexport const QUERY_FILTERS_EXPANDED_CSS: string = 'isShowingFacetFilters'\nexport const QUERY_FILTERS_COLLAPSED_CSS: string = 'isHidingFacetFilters'\n\nexport const HAS_SELECTED_ROWS_CSS: string = 'hasSelectedRows'\n\ntype QueryWrapperPlotNavOwnProps = {\n /** Whether the displayed results should be paginated or infinite. Default for cards is true, default for table is false */\n isInfinite?: boolean\n /** Set to true when you want the query to be saved in the URL search parameters. If you are controlling the view (such as in PortalSearch), you'll want to set this to false */\n shouldDeepLink?: boolean\n /** If onQueryChange is set, the callback will be invoked when the Query changes */\n onQueryChange?: (newQueryJson: string) => void\n /** If onQueryResultBundleChange is set, the callback will be invoked when the QueryResultBundle changes */\n onQueryResultBundleChange?: (newQueryResultBundleJson: string) => void\n /** If initQueryJson is set, it will be the Query used in the initial QueryBundleRequest */\n initQueryJson?: string\n tableConfiguration?: SynapseTableConfiguration\n cardConfiguration?: CardConfiguration\n searchConfiguration?: Omit<\n SearchV2Props,\n 'queryContext' | 'queryVisualizationContext'\n >\n facetsToPlot?: string[]\n availableFacets?: FacetFilterControlsProps['availableFacets']\n initialExpandedFacetControls?: FacetFilterControlsProps['initialExpandedFacetControls']\n customPlots?: QueryWrapperSynapsePlotProps[]\n customControls?: CustomControl[]\n defaultColumn?: string\n defaultShowSearchBox?: boolean\n lockedColumn?: QueryWrapperProps['lockedColumn']\n initialLimit?: number\n hideTopLevelControls?: boolean\n /**\n * When true, shows a `Show / Hide Query Builder` toggle in `TopLevelControls`.\n * The QB and the facet nav are mutually exclusive — turning the QB on hides\n * the facet nav entirely.\n */\n showQueryBuilderControl?: boolean\n /**\n * When true, the QB is shown by default. When `showQueryBuilderControl` is\n * also true, the user can toggle it back off from `TopLevelControls`. When\n * `showQueryBuilderControl` is false the QB is permanently displayed with\n * no toggle button.\n */\n defaultShowQueryBuilder?: boolean\n} & Omit<TopLevelControlsProps, 'entityId'> &\n Pick<QueryWrapperPlotNavCustomPlotParams, 'onCustomPlotClick'> &\n Pick<\n QueryWrapperProps,\n | 'isRowSelectionVisible'\n | 'rowSelectionPrimaryKey'\n | 'isRowSelectionUIFloating'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n > &\n Pick<\n QueryVisualizationWrapperProps,\n | 'defaultShowPlots'\n | 'visibleColumnCount'\n | 'hiddenColumns'\n | 'columnAliases'\n | 'renderFacetValue'\n | 'rgbIndex'\n | 'showLastUpdatedOn'\n | 'noContentPlaceholderType'\n | 'unitDescription'\n | 'additionalFiltersSessionStorageKey'\n | 'helpConfiguration'\n | 'hideCopyToClipboard'\n | 'hideSearchBarControl'\n | 'hideVisualizationsControl'\n | 'enabledExternalAnalysisPlatforms'\n | 'lockTextMatchesQueryFilterPill'\n > &\n Pick<QueryContextType, 'combineRangeFacetConfig'>\n\nexport type QueryWrapperPlotNavProps = QueryOrDeprecatedSearchParams &\n PlotsContainerProps &\n QueryWrapperPlotNavOwnProps\n\nexport type QueryWrapperPlotNavContentsProps = Pick<\n QueryWrapperPlotNavProps,\n | 'tableConfiguration'\n | 'name'\n | 'cardConfiguration'\n | 'facetsToPlot'\n | 'availableFacets'\n | 'initialExpandedFacetControls'\n | 'hideDownload'\n | 'hideAddToDownloadListMenuItem'\n | 'hideProgrammaticOptionsMenuItem'\n | 'hideQueryCount'\n | 'hideSqlEditorControl'\n | 'hideVisualizationsControl'\n | 'searchConfiguration'\n | 'enabledExternalAnalysisPlatforms'\n | 'cavaticaConnectAccountURL'\n | 'customControls'\n | 'customPlots'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n | 'initialLimit'\n | 'initialPlotTypeByFacetColumnName'\n | 'hideTopLevelControls'\n | 'showQueryBuilderControl'\n | 'defaultShowQueryBuilder'\n> & {\n isFullTextSearchEnabled: boolean\n remount?: () => void\n}\n\nexport function QueryWrapperPlotNavContents(\n props: QueryWrapperPlotNavContentsProps,\n) {\n const {\n tableConfiguration,\n name,\n cardConfiguration,\n facetsToPlot,\n availableFacets,\n initialExpandedFacetControls,\n hideDownload,\n hideAddToDownloadListMenuItem,\n hideProgrammaticOptionsMenuItem,\n hideQueryCount,\n hideSqlEditorControl,\n hideVisualizationsControl,\n searchConfiguration,\n cavaticaConnectAccountURL,\n customControls,\n remount = () => {},\n isFullTextSearchEnabled,\n customPlots,\n initialLimit,\n initialPlotTypeByFacetColumnName,\n hideTopLevelControls,\n showQueryBuilderControl = false,\n defaultShowQueryBuilder = false,\n } = props\n const queryContext = useQueryContext()\n const [showExportMetadata, setShowExportMetadata] = useState(false)\n const [showQueryBuilder, setShowQueryBuilder] = useState(\n defaultShowQueryBuilder,\n )\n const [qbTree, setQbTree] = useState<QBGroup>(() => defaultQBGroup())\n const [isConfirmingHideQb, setIsConfirmingHideQb] = useState(false)\n const { hasFacetedSelectColumn: isFaceted, queryMetadataQueryOptions } =\n queryContext\n const { executeQueryRequest } = queryContext\n const { isLoading: isLoadingQueryMetadata, data: queryMetadata } = useQuery(\n queryMetadataQueryOptions,\n )\n\n // Facets ↔ QB transitions: switching FF → QB silently translates\n // selectedFacets into the QB tree and swaps them for a FilterGroup in\n // additionalFilters so results stay stable. Switching QB → FF prompts if\n // the QB has meaningful state (a completed condition or an applied filter),\n // since we can't losslessly reverse the translation.\n const enterQueryBuilder = () => {\n const selectedFacets = queryContext.currentQueryRequest.query.selectedFacets\n if (selectedFacets && selectedFacets.length > 0) {\n const translated = selectedFacetsToQBGroup(\n selectedFacets,\n queryMetadata?.columnModels,\n )\n const asFilter = qbNodeToApiFilter(translated)\n setQbTree(translated)\n executeQueryRequest(prev => ({\n ...prev,\n query: {\n ...prev.query,\n selectedFacets: undefined,\n additionalFilters: asFilter\n ? [\n ...(prev.query.additionalFilters ?? []).filter(\n f => !isFilterGroup(f),\n ),\n asFilter,\n ]\n : prev.query.additionalFilters,\n },\n }))\n }\n setShowQueryBuilder(true)\n }\n\n const exitQueryBuilder = () => {\n setQbTree(defaultQBGroup())\n executeQueryRequest(prev => ({\n ...prev,\n query: {\n ...prev.query,\n additionalFilters: prev.query.additionalFilters?.filter(\n f => !isFilterGroup(f),\n ),\n },\n }))\n setShowQueryBuilder(false)\n }\n\n const handleToggleQueryBuilder = () => {\n if (!showQueryBuilder) {\n enterQueryBuilder()\n return\n }\n const hasFilterGroupApplied =\n queryContext.currentQueryRequest.query.additionalFilters?.some(\n isFilterGroup,\n ) ?? false\n if (hasCompleteCondition(qbTree) || hasFilterGroupApplied) {\n setIsConfirmingHideQb(true)\n return\n }\n exitQueryBuilder()\n }\n\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const currentQueryRequest = queryContext.currentQueryRequest\n\n const hasFacetsOrFilters =\n (currentQueryRequest?.query.selectedFacets !== undefined &&\n currentQueryRequest.query.selectedFacets.length > 0) ||\n (currentQueryRequest?.query.additionalFilters !== undefined &&\n currentQueryRequest?.query.additionalFilters.length > 0)\n\n const addToDownloadListRequest =\n useGetAddToDownloadListRequestForCurrentQuery()\n\n return (\n <QueryVisualizationContextConsumer>\n {queryVisualizationContext => {\n if (queryVisualizationContext === undefined) {\n throw new Error(\n 'No queryVisualizationContext found when using QueryVisualizationContextConsumer',\n )\n }\n\n return (\n <Box\n className={`QueryWrapperPlotNav ${\n queryVisualizationContext.showFacetFilter && !showQueryBuilder\n ? QUERY_FILTERS_EXPANDED_CSS\n : QUERY_FILTERS_COLLAPSED_CSS\n } ${isRowSelectionVisible ? HAS_SELECTED_ROWS_CSS : ''} ${\n hideTopLevelControls ? 'isHidingTopLevelControls' : ''\n } ${showQueryBuilder ? 'isShowingQueryBuilder' : ''}`}\n sx={{\n '*': {\n cursor: isLoadingQueryMetadata ? 'wait' : undefined,\n },\n }}\n >\n <QueryWrapperErrorBoundary>\n {isFullTextSearchEnabled ? (\n <FullTextSearch ftsConfig={searchConfiguration?.ftsConfig} />\n ) : (\n <SearchV2\n {...searchConfiguration}\n queryContext={queryContext}\n queryVisualizationContext={queryVisualizationContext}\n />\n )}\n <SqlEditor />\n {queryVisualizationContext.showDownloadConfirmation && (\n <AddToDownloadListConfirmationAlert\n addToDownloadListRequest={addToDownloadListRequest}\n onClose={() =>\n queryVisualizationContext.setShowDownloadConfirmation(false)\n }\n />\n )}\n {!hideTopLevelControls && (\n <SynapseErrorBoundary>\n <TopLevelControls\n showColumnSelection={tableConfiguration !== undefined}\n name={name}\n hideDownload={hideDownload}\n hideAddToDownloadListMenuItem={\n hideAddToDownloadListMenuItem\n }\n hideProgrammaticOptionsMenuItem={\n hideProgrammaticOptionsMenuItem\n }\n hideQueryCount={hideQueryCount}\n hideFacetFilterControl={!isFaceted || showQueryBuilder}\n hideVisualizationsControl={\n !isFaceted || hideVisualizationsControl\n }\n hideSqlEditorControl={hideSqlEditorControl}\n cavaticaConnectAccountURL={cavaticaConnectAccountURL}\n remount={remount}\n customControls={customControls}\n showQueryBuilderControl={showQueryBuilderControl}\n showQueryBuilder={showQueryBuilder}\n onToggleQueryBuilder={handleToggleQueryBuilder}\n />\n </SynapseErrorBoundary>\n )}\n {showQueryBuilder ? (\n <Suspense fallback={null}>\n <div className=\"QueryBuilderControls\">\n <QueryBuilderControls\n tree={qbTree}\n onTreeChange={setQbTree}\n />\n </div>\n </Suspense>\n ) : (\n isFaceted && (\n <FacetFilterControls\n availableFacets={availableFacets}\n initialExpandedFacetControls={initialExpandedFacetControls}\n />\n )\n )}\n {/* Isolated Suspense so that metadata loading does not hide the table */}\n <Suspense fallback={null}>\n <TotalQueryResults\n frontText={''}\n endText={hasFacetsOrFilters ? 'filtered by' : ''}\n hideIfUnfiltered={true}\n />\n </Suspense>\n <CustomControls\n customControls={customControls}\n remount={remount}\n />\n <PlotsContainer\n facetsToPlot={facetsToPlot}\n customPlots={customPlots}\n initialPlotTypeByFacetColumnName={\n initialPlotTypeByFacetColumnName\n }\n />\n <RowSetView\n tableConfiguration={tableConfiguration}\n hideDownload={hideDownload}\n cardConfiguration={cardConfiguration}\n initialLimit={initialLimit}\n />\n {showExportMetadata && (\n <ModalDownload\n getLastQueryRequest={queryContext?.getCurrentQueryRequest}\n onClose={() => setShowExportMetadata(false)}\n />\n )}\n <ConfirmationDialog\n open={isConfirmingHideQb}\n title=\"Hide Query Builder?\"\n content=\"Hiding the Query Builder will clear the conditions you've built. This can't be undone.\"\n confirmButtonProps={{\n children: 'Hide Query Builder',\n color: 'error',\n variant: 'contained',\n }}\n onConfirm={() => {\n setIsConfirmingHideQb(false)\n exitQueryBuilder()\n }}\n onCancel={() => setIsConfirmingHideQb(false)}\n />\n </QueryWrapperErrorBoundary>\n </Box>\n )\n }}\n </QueryVisualizationContextConsumer>\n )\n}\n\nexport default function QueryWrapperPlotNav(props: QueryWrapperPlotNavProps) {\n const {\n sql: deprecatedSql,\n tableConfiguration,\n isInfinite = !tableConfiguration,\n limit = DEFAULT_PAGE_SIZE,\n showLastUpdatedOn,\n unitDescription,\n additionalFiltersSessionStorageKey,\n helpConfiguration,\n customPlots,\n enabledExternalAnalysisPlatforms,\n } = props\n\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const { entityId, versionNumber } =\n parseEntityIdAndVersionFromSqlStatement(sql)\n\n const query: Query = useMemo(() => {\n if (props.query) {\n // use query if set\n return props.query\n } else if (props.initQueryJson) {\n // Otherwise use initQueryJson\n return JSON.parse(props.initQueryJson) as Query\n } else {\n // use the deprecated sql, searchParams, and sqlOperator\n const additionalFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n )\n return {\n sql: deprecatedSql!,\n additionalFilters,\n limit: limit,\n offset: 0,\n }\n }\n }, [\n props.query,\n props.initQueryJson,\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n deprecatedSql,\n limit,\n ])\n\n const [componentKey, setComponentKey] = useState(1)\n const remount = () => {\n setComponentKey(componentKey + 1)\n }\n\n const { data: entity } = useGetEntity(entityId, versionNumber)\n const initQueryRequest: QueryBundleRequest = {\n entityId: entityId ?? '',\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n query,\n }\n const isFullTextSearchEnabled =\n (entity && isTable(entity) && entity.isSearchEnabled) ?? false\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = `${JSON.stringify(initQueryRequest)}-${componentKey}`\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n key={queryWrapperKey}\n isInfinite={isInfinite}\n >\n <Suspense fallback={<QueryWrapperLoadingScreen />}>\n <QueryVisualizationWrapper\n unitDescription={unitDescription}\n rgbIndex={props.rgbIndex}\n columnAliases={props.columnAliases}\n renderFacetValue={props.renderFacetValue}\n dataUseModifiersColumnName={\n props.cardConfiguration?.genericCardSchema\n ?.dataUseModifiersColumnName\n }\n helpConfiguration={helpConfiguration}\n visibleColumnCount={props.visibleColumnCount}\n hiddenColumns={props.hiddenColumns}\n defaultShowPlots={props.defaultShowPlots}\n hideCopyToClipboard={props.hideCopyToClipboard}\n defaultShowSearchBar={\n (props.defaultShowSearchBox || isFullTextSearchEnabled) &&\n !props.hideSearchBarControl\n }\n lockTextMatchesQueryFilterPill={props.lockTextMatchesQueryFilterPill}\n hideSearchBarControl={props.hideSearchBarControl}\n showLastUpdatedOn={showLastUpdatedOn}\n noContentPlaceholderType={NoContentPlaceholderType.INTERACTIVE}\n hasCustomPlots={Array.isArray(customPlots) && customPlots.length > 0}\n enabledExternalAnalysisPlatforms={enabledExternalAnalysisPlatforms}\n >\n <QueryWrapperPlotNavContents\n {...props}\n isFullTextSearchEnabled={isFullTextSearchEnabled}\n remount={remount}\n />\n </QueryVisualizationWrapper>\n </Suspense>\n </QueryWrapper>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"QueryWrapperPlotNav.js","names":[],"sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"sourcesContent":["import { QueryOrDeprecatedSearchParams } from '@/components/CardContainerLogic/CardContainerLogic'\nimport AddToDownloadListConfirmationAlert from '@/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert'\nimport { useGetAddToDownloadListRequestForCurrentQuery } from '@/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery'\nimport { NoContentPlaceholderType } from '@/components/SynapseTable/NoContentPlaceholderType'\nimport { useGetEntity } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdAndVersionFromSqlStatement,\n} from '@/utils/functions'\nimport { isTable } from '@/utils/functions/EntityTypeUtils'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useQuery } from '@tanstack/react-query'\nimport { useAtomValue } from 'jotai'\nimport { lazy, Suspense, useMemo, useState } from 'react'\nimport { CardConfiguration } from '../CardContainer/CardConfiguration'\nimport { SynapseErrorBoundary } from '../error'\nimport FullTextSearch from '../FullTextSearch/FullTextSearch'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { QueryWrapperPlotNavCustomPlotParams } from '../Plot/SynapsePlot'\nimport { QueryContextType, useQueryContext } from '../QueryContext'\nimport {\n QueryVisualizationContextConsumer,\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper, QueryWrapperProps } from '../QueryWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { SynapseTableConfiguration } from '../SynapseTable'\nimport SearchV2, { SearchV2Props } from '../SynapseTable/SearchV2'\nimport SqlEditor from '../SynapseTable/SqlEditor'\nimport TopLevelControls, {\n TopLevelControlsProps,\n CustomControl,\n} from '../SynapseTable/TopLevelControls/TopLevelControls'\nimport { CustomControls } from '../SynapseTable/CustomControls/CustomControls'\nimport TotalQueryResults from '../TotalQueryResults'\nimport PlotsContainer, {\n PlotsContainerProps,\n} from '../widgets/facet-nav/PlotsContainer'\nimport FacetFilterControls, {\n FacetFilterControlsProps,\n} from '../widgets/query-filter/FacetFilterControls'\nimport {\n defaultQBGroup,\n hasCompleteCondition,\n} from '../QueryBuilder/queryBuilderOperations'\nimport {\n qbNodeToApiFilter,\n selectedFacetsToQBGroup,\n} from '../QueryBuilder/queryBuilderTranslation'\nimport { QBGroup } from '../QueryBuilder/QueryBuilderTypes'\nimport { ConfirmationDialog } from '../ConfirmationDialog'\nimport { isFilterGroup } from '../../utils/types/IsType'\nimport { QueryWrapperSynapsePlotProps } from './QueryWrapperSynapsePlot'\nimport { RowSetView } from './RowSetView'\nimport QueryWrapperLoadingScreen from '../QueryWrapper/QueryWrapperLoadingScreen'\n\n/**\n * The Query Builder is hidden on every tab that renders this nav until the\n * user opens it, and it pulls in a drag-and-drop library alongside its own\n * panel. Loading it on demand keeps all of that off the critical path for the\n * table and card views. It already renders inside a `Suspense` boundary, so\n * there is nothing else to coordinate.\n *\n * The QB tree helpers imported above stay eager — they are pure functions this\n * component calls from its own handlers, and none of them reach dnd-kit.\n */\nconst QueryBuilderControls = lazy(() =>\n import('../QueryBuilder/QueryBuilderControls').then(module => ({\n default: module.QueryBuilderControls,\n })),\n)\n\nexport const QUERY_FILTERS_EXPANDED_CSS: string = 'isShowingFacetFilters'\nexport const QUERY_FILTERS_COLLAPSED_CSS: string = 'isHidingFacetFilters'\n\nexport const HAS_SELECTED_ROWS_CSS: string = 'hasSelectedRows'\n\ntype QueryWrapperPlotNavOwnProps = {\n /** Whether the displayed results should be paginated or infinite. Default for cards is true, default for table is false */\n isInfinite?: boolean\n /** Set to true when you want the query to be saved in the URL search parameters. If you are controlling the view (such as in PortalSearch), you'll want to set this to false */\n shouldDeepLink?: boolean\n /** If onQueryChange is set, the callback will be invoked when the Query changes */\n onQueryChange?: (newQueryJson: string) => void\n /** If onQueryResultBundleChange is set, the callback will be invoked when the QueryResultBundle changes */\n onQueryResultBundleChange?: (newQueryResultBundleJson: string) => void\n /** If initQueryJson is set, it will be the Query used in the initial QueryBundleRequest */\n initQueryJson?: string\n tableConfiguration?: SynapseTableConfiguration\n cardConfiguration?: CardConfiguration\n searchConfiguration?: Omit<\n SearchV2Props,\n 'queryContext' | 'queryVisualizationContext'\n >\n facetsToPlot?: string[]\n availableFacets?: FacetFilterControlsProps['availableFacets']\n initialExpandedFacetControls?: FacetFilterControlsProps['initialExpandedFacetControls']\n customPlots?: QueryWrapperSynapsePlotProps[]\n customControls?: CustomControl[]\n defaultColumn?: string\n defaultShowSearchBox?: boolean\n lockedColumn?: QueryWrapperProps['lockedColumn']\n initialLimit?: number\n hideTopLevelControls?: boolean\n /**\n * When true, shows a `Show / Hide Query Builder` toggle in `TopLevelControls`.\n * The QB and the facet nav are mutually exclusive — turning the QB on hides\n * the facet nav entirely.\n */\n showQueryBuilderControl?: boolean\n /**\n * When true, the QB is shown by default. When `showQueryBuilderControl` is\n * also true, the user can toggle it back off from `TopLevelControls`. When\n * `showQueryBuilderControl` is false the QB is permanently displayed with\n * no toggle button.\n */\n defaultShowQueryBuilder?: boolean\n} & Omit<TopLevelControlsProps, 'entityId'> &\n Pick<QueryWrapperPlotNavCustomPlotParams, 'onCustomPlotClick'> &\n Pick<\n QueryWrapperProps,\n | 'isRowSelectionVisible'\n | 'rowSelectionPrimaryKey'\n | 'isRowSelectionUIFloating'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n > &\n Pick<\n QueryVisualizationWrapperProps,\n | 'defaultShowPlots'\n | 'visibleColumnCount'\n | 'hiddenColumns'\n | 'columnAliases'\n | 'renderFacetValue'\n | 'rgbIndex'\n | 'showLastUpdatedOn'\n | 'noContentPlaceholderType'\n | 'unitDescription'\n | 'additionalFiltersSessionStorageKey'\n | 'helpConfiguration'\n | 'hideCopyToClipboard'\n | 'hideSearchBarControl'\n | 'hideVisualizationsControl'\n | 'enabledExternalAnalysisPlatforms'\n | 'lockTextMatchesQueryFilterPill'\n > &\n Pick<QueryContextType, 'combineRangeFacetConfig'>\n\nexport type QueryWrapperPlotNavProps = QueryOrDeprecatedSearchParams &\n Omit<PlotsContainerProps, 'disableFiltering'> &\n QueryWrapperPlotNavOwnProps\n\nexport type QueryWrapperPlotNavContentsProps = Pick<\n QueryWrapperPlotNavProps,\n | 'tableConfiguration'\n | 'name'\n | 'cardConfiguration'\n | 'facetsToPlot'\n | 'availableFacets'\n | 'initialExpandedFacetControls'\n | 'hideDownload'\n | 'hideAddToDownloadListMenuItem'\n | 'hideProgrammaticOptionsMenuItem'\n | 'hideQueryCount'\n | 'hideSqlEditorControl'\n | 'hideVisualizationsControl'\n | 'searchConfiguration'\n | 'enabledExternalAnalysisPlatforms'\n | 'cavaticaConnectAccountURL'\n | 'customControls'\n | 'customPlots'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n | 'initialLimit'\n | 'initialPlotTypeByFacetColumnName'\n | 'defaultPlotType'\n | 'hideTopLevelControls'\n | 'showQueryBuilderControl'\n | 'defaultShowQueryBuilder'\n> & {\n isFullTextSearchEnabled: boolean\n remount?: () => void\n}\n\nexport function QueryWrapperPlotNavContents(\n props: QueryWrapperPlotNavContentsProps,\n) {\n const {\n tableConfiguration,\n name,\n cardConfiguration,\n facetsToPlot,\n availableFacets,\n initialExpandedFacetControls,\n hideDownload,\n hideAddToDownloadListMenuItem,\n hideProgrammaticOptionsMenuItem,\n hideQueryCount,\n hideSqlEditorControl,\n hideVisualizationsControl,\n searchConfiguration,\n cavaticaConnectAccountURL,\n customControls,\n remount = () => {},\n isFullTextSearchEnabled,\n customPlots,\n initialLimit,\n initialPlotTypeByFacetColumnName,\n defaultPlotType,\n hideTopLevelControls,\n showQueryBuilderControl = false,\n defaultShowQueryBuilder = false,\n } = props\n const queryContext = useQueryContext()\n const [showExportMetadata, setShowExportMetadata] = useState(false)\n const [showQueryBuilder, setShowQueryBuilder] = useState(\n defaultShowQueryBuilder,\n )\n const [qbTree, setQbTree] = useState<QBGroup>(() => defaultQBGroup())\n const [isConfirmingHideQb, setIsConfirmingHideQb] = useState(false)\n const { hasFacetedSelectColumn: isFaceted, queryMetadataQueryOptions } =\n queryContext\n const { executeQueryRequest } = queryContext\n const { isLoading: isLoadingQueryMetadata, data: queryMetadata } = useQuery(\n queryMetadataQueryOptions,\n )\n\n // Facets ↔ QB transitions: switching FF → QB silently translates\n // selectedFacets into the QB tree and swaps them for a FilterGroup in\n // additionalFilters so results stay stable. Switching QB → FF prompts if\n // the QB has meaningful state (a completed condition or an applied filter),\n // since we can't losslessly reverse the translation.\n const enterQueryBuilder = () => {\n const selectedFacets = queryContext.currentQueryRequest.query.selectedFacets\n if (selectedFacets && selectedFacets.length > 0) {\n const translated = selectedFacetsToQBGroup(\n selectedFacets,\n queryMetadata?.columnModels,\n )\n const asFilter = qbNodeToApiFilter(translated)\n setQbTree(translated)\n executeQueryRequest(prev => ({\n ...prev,\n query: {\n ...prev.query,\n selectedFacets: undefined,\n additionalFilters: asFilter\n ? [\n ...(prev.query.additionalFilters ?? []).filter(\n f => !isFilterGroup(f),\n ),\n asFilter,\n ]\n : prev.query.additionalFilters,\n },\n }))\n }\n setShowQueryBuilder(true)\n }\n\n const exitQueryBuilder = () => {\n setQbTree(defaultQBGroup())\n executeQueryRequest(prev => ({\n ...prev,\n query: {\n ...prev.query,\n additionalFilters: prev.query.additionalFilters?.filter(\n f => !isFilterGroup(f),\n ),\n },\n }))\n setShowQueryBuilder(false)\n }\n\n const handleToggleQueryBuilder = () => {\n if (!showQueryBuilder) {\n enterQueryBuilder()\n return\n }\n const hasFilterGroupApplied =\n queryContext.currentQueryRequest.query.additionalFilters?.some(\n isFilterGroup,\n ) ?? false\n if (hasCompleteCondition(qbTree) || hasFilterGroupApplied) {\n setIsConfirmingHideQb(true)\n return\n }\n exitQueryBuilder()\n }\n\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const currentQueryRequest = queryContext.currentQueryRequest\n\n const hasFacetsOrFilters =\n (currentQueryRequest?.query.selectedFacets !== undefined &&\n currentQueryRequest.query.selectedFacets.length > 0) ||\n (currentQueryRequest?.query.additionalFilters !== undefined &&\n currentQueryRequest?.query.additionalFilters.length > 0)\n\n const addToDownloadListRequest =\n useGetAddToDownloadListRequestForCurrentQuery()\n\n return (\n <QueryVisualizationContextConsumer>\n {queryVisualizationContext => {\n if (queryVisualizationContext === undefined) {\n throw new Error(\n 'No queryVisualizationContext found when using QueryVisualizationContextConsumer',\n )\n }\n\n return (\n <Box\n className={`QueryWrapperPlotNav ${\n queryVisualizationContext.showFacetFilter && !showQueryBuilder\n ? QUERY_FILTERS_EXPANDED_CSS\n : QUERY_FILTERS_COLLAPSED_CSS\n } ${isRowSelectionVisible ? HAS_SELECTED_ROWS_CSS : ''} ${\n hideTopLevelControls ? 'isHidingTopLevelControls' : ''\n } ${showQueryBuilder ? 'isShowingQueryBuilder' : ''}`}\n sx={{\n '*': {\n cursor: isLoadingQueryMetadata ? 'wait' : undefined,\n },\n }}\n >\n <QueryWrapperErrorBoundary>\n {isFullTextSearchEnabled ? (\n <FullTextSearch ftsConfig={searchConfiguration?.ftsConfig} />\n ) : (\n <SearchV2\n {...searchConfiguration}\n queryContext={queryContext}\n queryVisualizationContext={queryVisualizationContext}\n />\n )}\n <SqlEditor />\n {queryVisualizationContext.showDownloadConfirmation && (\n <AddToDownloadListConfirmationAlert\n addToDownloadListRequest={addToDownloadListRequest}\n onClose={() =>\n queryVisualizationContext.setShowDownloadConfirmation(false)\n }\n />\n )}\n {!hideTopLevelControls && (\n <SynapseErrorBoundary>\n <TopLevelControls\n showColumnSelection={tableConfiguration !== undefined}\n name={name}\n hideDownload={hideDownload}\n hideAddToDownloadListMenuItem={\n hideAddToDownloadListMenuItem\n }\n hideProgrammaticOptionsMenuItem={\n hideProgrammaticOptionsMenuItem\n }\n hideQueryCount={hideQueryCount}\n hideFacetFilterControl={!isFaceted || showQueryBuilder}\n hideVisualizationsControl={\n !isFaceted || hideVisualizationsControl\n }\n hideSqlEditorControl={hideSqlEditorControl}\n cavaticaConnectAccountURL={cavaticaConnectAccountURL}\n remount={remount}\n customControls={customControls}\n showQueryBuilderControl={showQueryBuilderControl}\n showQueryBuilder={showQueryBuilder}\n onToggleQueryBuilder={handleToggleQueryBuilder}\n />\n </SynapseErrorBoundary>\n )}\n {showQueryBuilder ? (\n <Suspense fallback={null}>\n <div className=\"QueryBuilderControls\">\n <QueryBuilderControls\n tree={qbTree}\n onTreeChange={setQbTree}\n />\n </div>\n </Suspense>\n ) : (\n isFaceted && (\n <FacetFilterControls\n availableFacets={availableFacets}\n initialExpandedFacetControls={initialExpandedFacetControls}\n />\n )\n )}\n {/* Isolated Suspense so that metadata loading does not hide the table */}\n <Suspense fallback={null}>\n <TotalQueryResults\n frontText={''}\n endText={hasFacetsOrFilters ? 'filtered by' : ''}\n hideIfUnfiltered={true}\n />\n </Suspense>\n <CustomControls\n customControls={customControls}\n remount={remount}\n />\n <PlotsContainer\n facetsToPlot={facetsToPlot}\n customPlots={customPlots}\n initialPlotTypeByFacetColumnName={\n initialPlotTypeByFacetColumnName\n }\n defaultPlotType={defaultPlotType}\n disableFiltering={showQueryBuilder}\n />\n <RowSetView\n tableConfiguration={tableConfiguration}\n hideDownload={hideDownload}\n cardConfiguration={cardConfiguration}\n initialLimit={initialLimit}\n />\n {showExportMetadata && (\n <ModalDownload\n getLastQueryRequest={queryContext?.getCurrentQueryRequest}\n onClose={() => setShowExportMetadata(false)}\n />\n )}\n <ConfirmationDialog\n open={isConfirmingHideQb}\n title=\"Hide Query Builder?\"\n content=\"Hiding the Query Builder will clear the conditions you've built. This can't be undone.\"\n confirmButtonProps={{\n children: 'Hide Query Builder',\n color: 'error',\n variant: 'contained',\n }}\n onConfirm={() => {\n setIsConfirmingHideQb(false)\n exitQueryBuilder()\n }}\n onCancel={() => setIsConfirmingHideQb(false)}\n />\n </QueryWrapperErrorBoundary>\n </Box>\n )\n }}\n </QueryVisualizationContextConsumer>\n )\n}\n\nexport default function QueryWrapperPlotNav(props: QueryWrapperPlotNavProps) {\n const {\n sql: deprecatedSql,\n tableConfiguration,\n isInfinite = !tableConfiguration,\n limit = DEFAULT_PAGE_SIZE,\n showLastUpdatedOn,\n unitDescription,\n additionalFiltersSessionStorageKey,\n helpConfiguration,\n customPlots,\n enabledExternalAnalysisPlatforms,\n } = props\n\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const { entityId, versionNumber } =\n parseEntityIdAndVersionFromSqlStatement(sql)\n\n const query: Query = useMemo(() => {\n if (props.query) {\n // use query if set\n return props.query\n } else if (props.initQueryJson) {\n // Otherwise use initQueryJson\n return JSON.parse(props.initQueryJson) as Query\n } else {\n // use the deprecated sql, searchParams, and sqlOperator\n const additionalFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n )\n return {\n sql: deprecatedSql!,\n additionalFilters,\n limit: limit,\n offset: 0,\n }\n }\n }, [\n props.query,\n props.initQueryJson,\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n deprecatedSql,\n limit,\n ])\n\n const [componentKey, setComponentKey] = useState(1)\n const remount = () => {\n setComponentKey(componentKey + 1)\n }\n\n const { data: entity } = useGetEntity(entityId, versionNumber)\n const initQueryRequest: QueryBundleRequest = {\n entityId: entityId ?? '',\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n query,\n }\n const isFullTextSearchEnabled =\n (entity && isTable(entity) && entity.isSearchEnabled) ?? false\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = `${JSON.stringify(initQueryRequest)}-${componentKey}`\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n key={queryWrapperKey}\n isInfinite={isInfinite}\n >\n <Suspense fallback={<QueryWrapperLoadingScreen />}>\n <QueryVisualizationWrapper\n unitDescription={unitDescription}\n rgbIndex={props.rgbIndex}\n columnAliases={props.columnAliases}\n renderFacetValue={props.renderFacetValue}\n dataUseModifiersColumnName={\n props.cardConfiguration?.genericCardSchema\n ?.dataUseModifiersColumnName\n }\n helpConfiguration={helpConfiguration}\n visibleColumnCount={props.visibleColumnCount}\n hiddenColumns={props.hiddenColumns}\n defaultShowPlots={props.defaultShowPlots}\n hideCopyToClipboard={props.hideCopyToClipboard}\n defaultShowSearchBar={\n (props.defaultShowSearchBox || isFullTextSearchEnabled) &&\n !props.hideSearchBarControl\n }\n lockTextMatchesQueryFilterPill={props.lockTextMatchesQueryFilterPill}\n hideSearchBarControl={props.hideSearchBarControl}\n showLastUpdatedOn={showLastUpdatedOn}\n noContentPlaceholderType={NoContentPlaceholderType.INTERACTIVE}\n hasCustomPlots={Array.isArray(customPlots) && customPlots.length > 0}\n enabledExternalAnalysisPlatforms={enabledExternalAnalysisPlatforms}\n >\n <QueryWrapperPlotNavContents\n {...props}\n isFullTextSearchEnabled={isFullTextSearchEnabled}\n remount={remount}\n />\n </QueryVisualizationWrapper>\n </Suspense>\n </QueryWrapper>\n )\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { ConfirmationDialog as e } from "../ConfirmationDialog/ConfirmationDialog.js";
2
- import { StyledFormControl as t } from "../styled/StyledFormControl.js";
3
- import { useQueryContext as n } from "../QueryContext/QueryContext.js";
1
+ import { useQueryVisualizationContext as e } from "../QueryVisualizationWrapper/QueryVisualizationContext.js";
2
+ import { ConfirmationDialog as t } from "../ConfirmationDialog/ConfirmationDialog.js";
3
+ import { StyledFormControl as n } from "../styled/StyledFormControl.js";
4
+ import { useQueryContext as r } from "../QueryContext/QueryContext.js";
4
5
  import "../QueryContext/index.js";
5
- import { useQueryVisualizationContext as r } from "../QueryVisualizationWrapper/QueryVisualizationContext.js";
6
6
  import "../QueryVisualizationWrapper/index.js";
7
7
  import i from "../Plot/PlotPanelHeader.js";
8
8
  import { SynapsePlot as a } from "../Plot/SynapsePlot.js";
@@ -12,7 +12,7 @@ import { InputLabel as l, MenuItem as u, Select as d, Stack as f, Typography as
12
12
  import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
13
13
  //#region src/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.tsx
14
14
  function _(_) {
15
- let v = n(), { currentQueryRequest: y } = v, { title: b, footnote: x, onCustomPlotClick: S, onHide: C } = _, { showPlots: w } = r(), [T, E] = c(!1), [D, O] = c(_.xaxistype), k = _.xaxistype === "log", A = o(), j = /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(a, {
15
+ let v = r(), { currentQueryRequest: y } = v, { title: b, footnote: x, onCustomPlotClick: S, onHide: C } = _, { showPlots: w } = e(), [T, E] = c(!1), [D, O] = c(_.xaxistype), k = _.xaxistype === "log", A = o(), j = /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(a, {
16
16
  synapsePlotWidgetParams: s(() => ({
17
17
  ..._,
18
18
  xaxistype: D,
@@ -45,13 +45,13 @@ function _(_) {
45
45
  return /* @__PURE__ */ g("div", {
46
46
  role: "figure",
47
47
  className: "SynapsePlot",
48
- children: [/* @__PURE__ */ h(e, {
48
+ children: [/* @__PURE__ */ h(t, {
49
49
  open: T,
50
50
  onCancel: () => E(!1),
51
51
  title: b ?? "",
52
52
  content: /* @__PURE__ */ g(f, {
53
53
  sx: { gap: 2 },
54
- children: [k && /* @__PURE__ */ g(t, {
54
+ children: [k && /* @__PURE__ */ g(n, {
55
55
  fullWidth: !0,
56
56
  children: [/* @__PURE__ */ h(l, {
57
57
  id: A,
@@ -1 +1 @@
1
- {"version":3,"file":"UseRowSet.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapperPlotNav/UseRowSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AA2ExD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM;;;;;;;EAyC9C"}
1
+ {"version":3,"file":"UseRowSet.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapperPlotNav/UseRowSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AA6ExD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM;;;;;;;EAyC9C"}
@@ -6,29 +6,29 @@ import { cloneDeep as r } from "lodash-es";
6
6
  import { useInfiniteQuery as i, useQuery as a } from "@tanstack/react-query";
7
7
  //#region src/components/QueryWrapperPlotNav/UseRowSet.ts
8
8
  function o() {
9
- let { isInfinite: e, rowDataInfiniteQueryOptions: a } = t(), o = i({
9
+ let { isInfinite: e, rowDataInfiniteQueryOptions: a } = t(), o = e && a.enabled !== !1, s = i({
10
10
  ...a,
11
- enabled: e
12
- }), s = i({
11
+ enabled: o
12
+ }), c = i({
13
13
  ...a,
14
14
  select: (e) => e.pages[0].progressMessage,
15
- enabled: e
15
+ enabled: o
16
16
  });
17
17
  return {
18
- infiniteQuery: o,
18
+ infiniteQuery: s,
19
19
  infiniteQueryRowSet: n(() => {
20
- let e = r(o.data?.pages[0]?.responseBody?.queryResult?.queryResults);
21
- return e && (e.rows = o.data?.pages.flatMap((e) => e.responseBody?.queryResult?.queryResults.rows || []) || []), e;
22
- }, [o.data?.pages]),
23
- infiniteQueryProgressMessage: s
20
+ let e = r(s.data?.pages[0]?.responseBody?.queryResult?.queryResults);
21
+ return e && (e.rows = s.data?.pages.flatMap((e) => e.responseBody?.queryResult?.queryResults.rows || []) || []), e;
22
+ }, [s.data?.pages]),
23
+ infiniteQueryProgressMessage: c
24
24
  };
25
25
  }
26
26
  function s() {
27
- let { isInfinite: n, rowDataQueryOptions: r, getCurrentQueryRequest: i } = t();
27
+ let { isInfinite: n, rowDataQueryOptions: r, getCurrentQueryRequest: i } = t(), o = !n && r.enabled !== !1;
28
28
  return {
29
29
  paginatedQuery: a({
30
30
  ...r,
31
- enabled: !n,
31
+ enabled: o,
32
32
  placeholderData: (t) => {
33
33
  if (t) {
34
34
  let n = t.requestBody?.query;
@@ -39,7 +39,7 @@ function s() {
39
39
  paginatedQueryProgressMessage: a({
40
40
  ...r,
41
41
  select: (e) => e.progressMessage,
42
- enabled: !n,
42
+ enabled: o,
43
43
  placeholderData: (e) => e
44
44
  })
45
45
  };
@@ -1 +1 @@
1
- {"version":3,"file":"UseRowSet.js","names":[],"sources":["../../../src/components/QueryWrapperPlotNav/UseRowSet.ts"],"sourcesContent":["import { queryRequestsHaveSameTotalResults } from '@/utils/functions/queryUtils'\nimport { RowSet } from '@sage-bionetworks/synapse-types'\nimport { useInfiniteQuery, useQuery } from '@tanstack/react-query'\nimport { cloneDeep } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useQueryContext } from '../QueryContext'\n\nfunction useGetInfiniteRowSet() {\n const { isInfinite, rowDataInfiniteQueryOptions } = useQueryContext()\n const infiniteQuery = useInfiniteQuery({\n ...rowDataInfiniteQueryOptions,\n enabled: isInfinite,\n })\n\n const infiniteQueryProgressMessage = useInfiniteQuery({\n ...rowDataInfiniteQueryOptions,\n select: asyncJob => asyncJob.pages[0].progressMessage,\n enabled: isInfinite,\n })\n\n const infiniteQueryRowSet: RowSet | undefined = useMemo(() => {\n const rowSet = cloneDeep(\n infiniteQuery.data?.pages[0]?.responseBody?.queryResult?.queryResults,\n )\n if (rowSet) {\n rowSet.rows =\n infiniteQuery.data?.pages.flatMap(\n page => page.responseBody?.queryResult?.queryResults.rows || [],\n ) || []\n }\n return rowSet\n }, [infiniteQuery.data?.pages])\n\n return {\n infiniteQuery,\n infiniteQueryRowSet,\n infiniteQueryProgressMessage,\n }\n}\n\nfunction useGetPaginatedRowSet() {\n const { isInfinite, rowDataQueryOptions, getCurrentQueryRequest } =\n useQueryContext()\n const paginatedQuery = useQuery({\n ...rowDataQueryOptions,\n enabled: !isInfinite,\n // Keep the previous data when fetching a new page. We will use `UseQueryResult.isPlaceholderData` to trigger a showing placeholder UI\n placeholderData: prevData => {\n if (prevData) {\n const prevQuery = prevData.requestBody?.query\n // Check that only the page/sort changed; if the filters/sql changed, then don't hold on to the old data\n // prevQuery may be undefined when the requestBody is not a QueryBundleRequest (e.g. SearchQueryWrapper)\n if (\n prevQuery &&\n queryRequestsHaveSameTotalResults(\n prevQuery,\n getCurrentQueryRequest().query,\n )\n ) {\n return prevData\n }\n }\n return undefined\n },\n })\n const paginatedQueryProgressMessage = useQuery({\n ...rowDataQueryOptions,\n select: asyncJob => asyncJob.progressMessage,\n enabled: !isInfinite,\n // Keep the previous data when fetching a new page. We will use `isPlaceholderData` to trigger a showing placeholder UI\n placeholderData: prevData => prevData,\n })\n\n return { paginatedQuery, paginatedQueryProgressMessage }\n}\n\n/**\n * Fetches the row data for a query and returns a RowSet that can be rendered as cards or a table. Respects the value of\n * QueryContext.isInfinite.\n * @param initialLimit\n */\nexport function useRowSet(initialLimit?: number) {\n const { isInfinite } = useQueryContext()\n\n const { paginatedQuery, paginatedQueryProgressMessage } =\n useGetPaginatedRowSet()\n const { infiniteQuery, infiniteQueryRowSet, infiniteQueryProgressMessage } =\n useGetInfiniteRowSet()\n\n const rowSet = useMemo(() => {\n let rowSet: RowSet | undefined\n if (isInfinite) {\n rowSet = infiniteQueryRowSet\n } else {\n rowSet = paginatedQuery.data\n }\n if (rowSet && initialLimit != null) {\n rowSet = { ...rowSet, rows: rowSet.rows.slice(0, initialLimit) }\n }\n return rowSet\n }, [infiniteQueryRowSet, initialLimit, isInfinite, paginatedQuery.data])\n\n const progressMessage: string | undefined = isInfinite\n ? infiniteQueryProgressMessage.data\n : paginatedQueryProgressMessage.data\n\n const isLoading = isInfinite\n ? infiniteQuery.isLoading\n : paginatedQuery.isLoading\n\n const isLoadingNewPage = isInfinite\n ? infiniteQuery.isFetchingNextPage\n : paginatedQuery.isPlaceholderData\n\n return {\n rowSet,\n progressMessage,\n isLoading,\n isLoadingNewPage,\n fetchNextPageOfInfiniteData: infiniteQuery.fetchNextPage,\n hasNextPageOfInfiniteData: infiniteQuery.hasNextPage,\n }\n}\n"],"mappings":";;;;;;;AAOA,SAAS,IAAuB;CAC9B,IAAM,EAAE,eAAY,mCAAgC,EAAgB,GAC9D,IAAgB,EAAiB;EACrC,GAAG;EACH,SAAS;CACX,CAAC,GAEK,IAA+B,EAAiB;EACpD,GAAG;EACH,SAAQ,MAAY,EAAS,MAAM,GAAG;EACtC,SAAS;CACX,CAAC;CAeD,OAAO;EACL;EACA,qBAf8C,QAAc;GAC5D,IAAM,IAAS,EACb,EAAc,MAAM,MAAM,IAAI,cAAc,aAAa,YAC3D;GAOA,OANI,MACF,EAAO,OACL,EAAc,MAAM,MAAM,SACxB,MAAQ,EAAK,cAAc,aAAa,aAAa,QAAQ,CAAC,CAChE,KAAK,CAAC,IAEH;EACT,GAAG,CAAC,EAAc,MAAM,KAAK,CAI3B;EACA;CACF;AACF;AAEA,SAAS,IAAwB;CAC/B,IAAM,EAAE,eAAY,wBAAqB,8BACvC,EAAgB;CA+BlB,OAAO;EAAE,gBA9Bc,EAAS;GAC9B,GAAG;GACH,SAAS,CAAC;GAEV,kBAAiB,MAAY;IAC3B,IAAI,GAAU;KACZ,IAAM,IAAY,EAAS,aAAa;KAGxC,IACE,KACA,EACE,GACA,EAAuB,EAAE,KAC3B,GAEA,OAAO;IAEX;GAEF;EACF,CASS;EAAgB,+BARa,EAAS;GAC7C,GAAG;GACH,SAAQ,MAAY,EAAS;GAC7B,SAAS,CAAC;GAEV,kBAAiB,MAAY;EAC/B,CAEyB;CAA8B;AACzD;AAOA,SAAgB,EAAU,GAAuB;CAC/C,IAAM,EAAE,kBAAe,EAAgB,GAEjC,EAAE,mBAAgB,qCACtB,EAAsB,GAClB,EAAE,kBAAe,wBAAqB,oCAC1C,EAAqB;CA2BvB,OAAO;EACL,QA1Ba,QAAc;GAC3B,IAAI;GASJ,OARA,AAGE,IAHE,IACO,IAEA,EAAe,MAEtB,KAAU,KAAgB,SAC5B,IAAS;IAAE,GAAG;IAAQ,MAAM,EAAO,KAAK,MAAM,GAAG,CAAY;GAAE,IAE1D;EACT,GAAG;GAAC;GAAqB;GAAc;GAAY,EAAe;EAAI,CAepE;EACA,iBAd0C,IACxC,EAA6B,OAC7B,EAA8B;EAahC,WAXgB,IACd,EAAc,YACd,EAAe;EAUjB,kBARuB,IACrB,EAAc,qBACd,EAAe;EAOjB,6BAA6B,EAAc;EAC3C,2BAA2B,EAAc;CAC3C;AACF"}
1
+ {"version":3,"file":"UseRowSet.js","names":[],"sources":["../../../src/components/QueryWrapperPlotNav/UseRowSet.ts"],"sourcesContent":["import { queryRequestsHaveSameTotalResults } from '@/utils/functions/queryUtils'\nimport { RowSet } from '@sage-bionetworks/synapse-types'\nimport { useInfiniteQuery, useQuery } from '@tanstack/react-query'\nimport { cloneDeep } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useQueryContext } from '../QueryContext'\n\nfunction useGetInfiniteRowSet() {\n const { isInfinite, rowDataInfiniteQueryOptions } = useQueryContext()\n const enabled = isInfinite && rowDataInfiniteQueryOptions.enabled !== false\n const infiniteQuery = useInfiniteQuery({\n ...rowDataInfiniteQueryOptions,\n enabled,\n })\n\n const infiniteQueryProgressMessage = useInfiniteQuery({\n ...rowDataInfiniteQueryOptions,\n select: asyncJob => asyncJob.pages[0].progressMessage,\n enabled,\n })\n\n const infiniteQueryRowSet: RowSet | undefined = useMemo(() => {\n const rowSet = cloneDeep(\n infiniteQuery.data?.pages[0]?.responseBody?.queryResult?.queryResults,\n )\n if (rowSet) {\n rowSet.rows =\n infiniteQuery.data?.pages.flatMap(\n page => page.responseBody?.queryResult?.queryResults.rows || [],\n ) || []\n }\n return rowSet\n }, [infiniteQuery.data?.pages])\n\n return {\n infiniteQuery,\n infiniteQueryRowSet,\n infiniteQueryProgressMessage,\n }\n}\n\nfunction useGetPaginatedRowSet() {\n const { isInfinite, rowDataQueryOptions, getCurrentQueryRequest } =\n useQueryContext()\n const enabled = !isInfinite && rowDataQueryOptions.enabled !== false\n const paginatedQuery = useQuery({\n ...rowDataQueryOptions,\n enabled,\n // Keep the previous data when fetching a new page. We will use `UseQueryResult.isPlaceholderData` to trigger a showing placeholder UI\n placeholderData: prevData => {\n if (prevData) {\n const prevQuery = prevData.requestBody?.query\n // Check that only the page/sort changed; if the filters/sql changed, then don't hold on to the old data\n // prevQuery may be undefined when the requestBody is not a QueryBundleRequest (e.g. SearchQueryWrapper)\n if (\n prevQuery &&\n queryRequestsHaveSameTotalResults(\n prevQuery,\n getCurrentQueryRequest().query,\n )\n ) {\n return prevData\n }\n }\n return undefined\n },\n })\n const paginatedQueryProgressMessage = useQuery({\n ...rowDataQueryOptions,\n select: asyncJob => asyncJob.progressMessage,\n enabled,\n // Keep the previous data when fetching a new page. We will use `isPlaceholderData` to trigger a showing placeholder UI\n placeholderData: prevData => prevData,\n })\n\n return { paginatedQuery, paginatedQueryProgressMessage }\n}\n\n/**\n * Fetches the row data for a query and returns a RowSet that can be rendered as cards or a table. Respects the value of\n * QueryContext.isInfinite.\n * @param initialLimit\n */\nexport function useRowSet(initialLimit?: number) {\n const { isInfinite } = useQueryContext()\n\n const { paginatedQuery, paginatedQueryProgressMessage } =\n useGetPaginatedRowSet()\n const { infiniteQuery, infiniteQueryRowSet, infiniteQueryProgressMessage } =\n useGetInfiniteRowSet()\n\n const rowSet = useMemo(() => {\n let rowSet: RowSet | undefined\n if (isInfinite) {\n rowSet = infiniteQueryRowSet\n } else {\n rowSet = paginatedQuery.data\n }\n if (rowSet && initialLimit != null) {\n rowSet = { ...rowSet, rows: rowSet.rows.slice(0, initialLimit) }\n }\n return rowSet\n }, [infiniteQueryRowSet, initialLimit, isInfinite, paginatedQuery.data])\n\n const progressMessage: string | undefined = isInfinite\n ? infiniteQueryProgressMessage.data\n : paginatedQueryProgressMessage.data\n\n const isLoading = isInfinite\n ? infiniteQuery.isLoading\n : paginatedQuery.isLoading\n\n const isLoadingNewPage = isInfinite\n ? infiniteQuery.isFetchingNextPage\n : paginatedQuery.isPlaceholderData\n\n return {\n rowSet,\n progressMessage,\n isLoading,\n isLoadingNewPage,\n fetchNextPageOfInfiniteData: infiniteQuery.fetchNextPage,\n hasNextPageOfInfiniteData: infiniteQuery.hasNextPage,\n }\n}\n"],"mappings":";;;;;;;AAOA,SAAS,IAAuB;CAC9B,IAAM,EAAE,eAAY,mCAAgC,EAAgB,GAC9D,IAAU,KAAc,EAA4B,YAAY,IAChE,IAAgB,EAAiB;EACrC,GAAG;EACH;CACF,CAAC,GAEK,IAA+B,EAAiB;EACpD,GAAG;EACH,SAAQ,MAAY,EAAS,MAAM,GAAG;EACtC;CACF,CAAC;CAeD,OAAO;EACL;EACA,qBAf8C,QAAc;GAC5D,IAAM,IAAS,EACb,EAAc,MAAM,MAAM,IAAI,cAAc,aAAa,YAC3D;GAOA,OANI,MACF,EAAO,OACL,EAAc,MAAM,MAAM,SACxB,MAAQ,EAAK,cAAc,aAAa,aAAa,QAAQ,CAAC,CAChE,KAAK,CAAC,IAEH;EACT,GAAG,CAAC,EAAc,MAAM,KAAK,CAI3B;EACA;CACF;AACF;AAEA,SAAS,IAAwB;CAC/B,IAAM,EAAE,eAAY,wBAAqB,8BACvC,EAAgB,GACZ,IAAU,CAAC,KAAc,EAAoB,YAAY;CA+B/D,OAAO;EAAE,gBA9Bc,EAAS;GAC9B,GAAG;GACH;GAEA,kBAAiB,MAAY;IAC3B,IAAI,GAAU;KACZ,IAAM,IAAY,EAAS,aAAa;KAGxC,IACE,KACA,EACE,GACA,EAAuB,EAAE,KAC3B,GAEA,OAAO;IAEX;GAEF;EACF,CASS;EAAgB,+BARa,EAAS;GAC7C,GAAG;GACH,SAAQ,MAAY,EAAS;GAC7B;GAEA,kBAAiB,MAAY;EAC/B,CAEyB;CAA8B;AACzD;AAOA,SAAgB,EAAU,GAAuB;CAC/C,IAAM,EAAE,kBAAe,EAAgB,GAEjC,EAAE,mBAAgB,qCACtB,EAAsB,GAClB,EAAE,kBAAe,wBAAqB,oCAC1C,EAAqB;CA2BvB,OAAO;EACL,QA1Ba,QAAc;GAC3B,IAAI;GASJ,OARA,AAGE,IAHE,IACO,IAEA,EAAe,MAEtB,KAAU,KAAgB,SAC5B,IAAS;IAAE,GAAG;IAAQ,MAAM,EAAO,KAAK,MAAM,GAAG,CAAY;GAAE,IAE1D;EACT,GAAG;GAAC;GAAqB;GAAc;GAAY,EAAe;EAAI,CAepE;EACA,iBAd0C,IACxC,EAA6B,OAC7B,EAA8B;EAahC,WAXgB,IACd,EAAc,YACd,EAAe;EAUjB,kBARuB,IACrB,EAAc,qBACd,EAAe;EAOjB,6BAA6B,EAAc;EAC3C,2BAA2B,EAAc;CAC3C;AACF"}
@@ -0,0 +1 @@
1
+ ._section_1hncl_1+._section_1hncl_1{margin-top:32px}._section_1hncl_1 table tr:nth-of-type(odd){background-color:var(--synapse-gray-100)}._section_1hncl_1 table tr:nth-of-type(2n){background-color:var(--synapse-white)}._categoryTitle_1hncl_13.MuiTypography-root{color:var(--synapse-gray-900);border-bottom:1px solid var(--synapse-gray-300);padding-bottom:8px}
@@ -0,0 +1,33 @@
1
+ import { Query, SelectColumn } from '@sage-bionetworks/synapse-types';
2
+ import { LabelLinkConfig } from '../CardContainerLogic';
3
+ export declare const COLUMN_CATEGORY_TABLE_COLUMN_NAME = "columnName";
4
+ export declare const COLUMN_CATEGORY_TABLE_DISPLAY_COLUMN_NAME = "columnDisplayName";
5
+ export declare const COLUMN_CATEGORY_TABLE_CATEGORY = "category";
6
+ export declare const COLUMN_CATEGORY_TABLE_ORDER = "order";
7
+ export type CategorizedRowDataTableProps = {
8
+ /** Array of string values corresponding to the data for a row */
9
+ rowData: Array<string | null>;
10
+ /** The headers for the columns in the row */
11
+ headers: SelectColumn[];
12
+ /**
13
+ * Synapse ID of the table that defines which columns are displayed, their display names, and their categories.
14
+ * The table must contain the columns `columnName` (String), `columnDisplayName` (String), `category` (String), and `order` (Integer).
15
+ * Columns are displayed in ascending `order`; a new category section begins whenever `category` differs from the previous row,
16
+ * so all rows of a category must have contiguous `order` values.
17
+ */
18
+ columnCategoryTableId: string;
19
+ /** Optional configuration for linking columns */
20
+ columnLinks?: LabelLinkConfig;
21
+ };
22
+ /**
23
+ * The query used to read a column category table, sorted so that rows of the same category are adjacent
24
+ */
25
+ export declare function getColumnCategoryTableQuery(tableId: string): Query;
26
+ /**
27
+ * Displays a Synapse Table row as key/value pairs, grouped into titled category sections.
28
+ * The displayed columns, their display names, order, and categories are read from a separate Synapse Table.
29
+ * Categories without any values in the row are not shown.
30
+ */
31
+ declare function CategorizedRowDataTable(props: CategorizedRowDataTableProps): import("react/jsx-runtime").JSX.Element | null;
32
+ export default CategorizedRowDataTable;
33
+ //# sourceMappingURL=CategorizedRowDataTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategorizedRowDataTable.d.ts","sourceRoot":"","sources":["../../../src/components/RowDataTable/CategorizedRowDataTable.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,EAGL,YAAY,EACb,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAMvD,eAAO,MAAM,iCAAiC,eAAe,CAAA;AAC7D,eAAO,MAAM,yCAAyC,sBAAsB,CAAA;AAC5E,eAAO,MAAM,8BAA8B,aAAa,CAAA;AACxD,eAAO,MAAM,2BAA2B,UAAU,CAAA;AAElD,MAAM,MAAM,4BAA4B,GAAG;IACzC,iEAAiE;IACjE,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC7B,6CAA6C;IAC7C,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iDAAiD;IACjD,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B,CAAA;AA+CD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAIlE;AAED;;;;GAIG;AACH,iBAAS,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,kDAyDnE;AAED,eAAe,uBAAuB,CAAA"}
@@ -0,0 +1,64 @@
1
+ import "../../utils/SynapseConstants.js";
2
+ import { ErrorBanner as e } from "../error/ErrorBanner.js";
3
+ import { useGetFullTableQueryResults as t } from "../../synapse-queries/entity/useGetQueryResultBundle.js";
4
+ import { SkeletonTable as n } from "../Skeleton/SkeletonTable.js";
5
+ import { RowDataEntriesTable as r, getDisplayedRowDataEntries as i } from "./RowDataTable.js";
6
+ import a from "./CategorizedRowDataTable.module.js";
7
+ import { useMemo as o } from "react";
8
+ import { Typography as s } from "@mui/material";
9
+ import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
10
+ //#region src/components/RowDataTable/CategorizedRowDataTable.tsx
11
+ var d = "columnName", f = "columnDisplayName", p = "category", m = "order";
12
+ function h(e) {
13
+ let { headers: t, rows: n } = e.queryResult.queryResults, r = (e) => t.findIndex((t) => t.name === e), i = r(d), a = r(f), o = r(p), s = [], c = {};
14
+ for (let { values: e } of n) {
15
+ let t = e[i];
16
+ if (!t) continue;
17
+ let n = e[a];
18
+ n && (c[t] = n);
19
+ let r = e[o] ?? null, l = s.at(-1);
20
+ l?.category === r ? l.columns.push(t) : s.push({
21
+ category: r,
22
+ columns: [t]
23
+ });
24
+ }
25
+ return {
26
+ sections: s,
27
+ columnAliases: c
28
+ };
29
+ }
30
+ function g(e) {
31
+ return { sql: `SELECT * FROM ${e} ORDER BY "${m}" ASC` };
32
+ }
33
+ function _(d) {
34
+ let { rowData: f, headers: p, columnCategoryTableId: m, columnLinks: _ } = d, { data: v, isLoading: y, error: b } = t(o(() => ({
35
+ concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest",
36
+ entityId: m,
37
+ partMask: 1,
38
+ query: g(m)
39
+ }), [m]), { select: h });
40
+ return y ? /* @__PURE__ */ l(n, {
41
+ numRows: 6,
42
+ numCols: 1
43
+ }) : b ? /* @__PURE__ */ l(e, { error: b }) : v ? /* @__PURE__ */ l(c, { children: v.sections.map(({ category: e, columns: t }, n) => {
44
+ let o = i(t, p, f);
45
+ return o.length === 0 ? null : /* @__PURE__ */ u("section", {
46
+ className: a.section,
47
+ children: [e && /* @__PURE__ */ l(s, {
48
+ variant: "headline3",
49
+ className: a.categoryTitle,
50
+ children: e
51
+ }), /* @__PURE__ */ l(r, {
52
+ entries: o,
53
+ headers: p,
54
+ rowData: f,
55
+ columnLinks: _,
56
+ columnAliases: v.columnAliases
57
+ })]
58
+ }, `${n}-${e}`);
59
+ }) }) : null;
60
+ }
61
+ //#endregion
62
+ export { p as COLUMN_CATEGORY_TABLE_CATEGORY, d as COLUMN_CATEGORY_TABLE_COLUMN_NAME, f as COLUMN_CATEGORY_TABLE_DISPLAY_COLUMN_NAME, m as COLUMN_CATEGORY_TABLE_ORDER, _ as default, g as getColumnCategoryTableQuery };
63
+
64
+ //# sourceMappingURL=CategorizedRowDataTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategorizedRowDataTable.js","names":[],"sources":["../../../src/components/RowDataTable/CategorizedRowDataTable.tsx"],"sourcesContent":["import { useGetFullTableQueryResults } from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '@/utils/SynapseConstants'\nimport { Typography } from '@mui/material'\nimport {\n Query,\n QueryBundleRequest,\n QueryResultBundle,\n SelectColumn,\n} from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport { SkeletonTable } from '../Skeleton/SkeletonTable'\nimport styles from './CategorizedRowDataTable.module.scss'\nimport { getDisplayedRowDataEntries, RowDataEntriesTable } from './RowDataTable'\n\nexport const COLUMN_CATEGORY_TABLE_COLUMN_NAME = 'columnName'\nexport const COLUMN_CATEGORY_TABLE_DISPLAY_COLUMN_NAME = 'columnDisplayName'\nexport const COLUMN_CATEGORY_TABLE_CATEGORY = 'category'\nexport const COLUMN_CATEGORY_TABLE_ORDER = 'order'\n\nexport type CategorizedRowDataTableProps = {\n /** Array of string values corresponding to the data for a row */\n rowData: Array<string | null>\n /** The headers for the columns in the row */\n headers: SelectColumn[]\n /**\n * Synapse ID of the table that defines which columns are displayed, their display names, and their categories.\n * The table must contain the columns `columnName` (String), `columnDisplayName` (String), `category` (String), and `order` (Integer).\n * Columns are displayed in ascending `order`; a new category section begins whenever `category` differs from the previous row,\n * so all rows of a category must have contiguous `order` values.\n */\n columnCategoryTableId: string\n /** Optional configuration for linking columns */\n columnLinks?: LabelLinkConfig\n}\n\ntype ColumnCategorySection = {\n category: string | null\n columns: string[]\n}\n\ntype ColumnCategoryConfig = {\n sections: ColumnCategorySection[]\n columnAliases: Record<string, string>\n}\n\nfunction parseColumnCategoryConfig(\n bundle: QueryResultBundle,\n): ColumnCategoryConfig {\n const { headers, rows } = bundle.queryResult!.queryResults\n const getIndex = (name: string) =>\n headers.findIndex(header => header.name === name)\n const columnNameIndex = getIndex(COLUMN_CATEGORY_TABLE_COLUMN_NAME)\n const displayColumnNameIndex = getIndex(\n COLUMN_CATEGORY_TABLE_DISPLAY_COLUMN_NAME,\n )\n const categoryIndex = getIndex(COLUMN_CATEGORY_TABLE_CATEGORY)\n\n const sections: ColumnCategorySection[] = []\n const columnAliases: Record<string, string> = {}\n for (const { values } of rows) {\n const columnName = values[columnNameIndex]\n if (!columnName) {\n continue\n }\n const displayColumnName = values[displayColumnNameIndex]\n if (displayColumnName) {\n columnAliases[columnName] = displayColumnName\n }\n // Rows arrive sorted by order; a category change starts a new section, even if that category appeared earlier\n const category = values[categoryIndex] ?? null\n const currentSection = sections.at(-1)\n if (currentSection?.category === category) {\n currentSection.columns.push(columnName)\n } else {\n sections.push({ category, columns: [columnName] })\n }\n }\n return { sections, columnAliases }\n}\n\n/**\n * The query used to read a column category table, sorted so that rows of the same category are adjacent\n */\nexport function getColumnCategoryTableQuery(tableId: string): Query {\n return {\n sql: `SELECT * FROM ${tableId} ORDER BY \"${COLUMN_CATEGORY_TABLE_ORDER}\" ASC`,\n }\n}\n\n/**\n * Displays a Synapse Table row as key/value pairs, grouped into titled category sections.\n * The displayed columns, their display names, order, and categories are read from a separate Synapse Table.\n * Categories without any values in the row are not shown.\n */\nfunction CategorizedRowDataTable(props: CategorizedRowDataTableProps) {\n const { rowData, headers, columnCategoryTableId, columnLinks } = props\n\n const queryBundleRequest: QueryBundleRequest = useMemo(\n () => ({\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: columnCategoryTableId,\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n query: getColumnCategoryTableQuery(columnCategoryTableId),\n }),\n [columnCategoryTableId],\n )\n\n const {\n data: config,\n isLoading,\n error,\n } = useGetFullTableQueryResults(queryBundleRequest, {\n select: parseColumnCategoryConfig,\n })\n\n if (isLoading) {\n return <SkeletonTable numRows={6} numCols={1} />\n }\n if (error) {\n return <ErrorBanner error={error} />\n }\n if (!config) {\n return null\n }\n\n return (\n <>\n {config.sections.map(({ category, columns }, index) => {\n const entries = getDisplayedRowDataEntries(columns, headers, rowData)\n if (entries.length === 0) {\n return null\n }\n return (\n <section key={`${index}-${category}`} className={styles.section}>\n {category && (\n <Typography variant=\"headline3\" className={styles.categoryTitle}>\n {category}\n </Typography>\n )}\n <RowDataEntriesTable\n entries={entries}\n headers={headers}\n rowData={rowData}\n columnLinks={columnLinks}\n columnAliases={config.columnAliases}\n />\n </section>\n )\n })}\n </>\n )\n}\n\nexport default CategorizedRowDataTable\n"],"mappings":";;;;;;;;;;AAgBA,IAAa,IAAoC,cACpC,IAA4C,qBAC5C,IAAiC,YACjC,IAA8B;AA4B3C,SAAS,EACP,GACsB;CACtB,IAAM,EAAE,YAAS,YAAS,EAAO,YAAa,cACxC,KAAY,MAChB,EAAQ,WAAU,MAAU,EAAO,SAAS,CAAI,GAC5C,IAAkB,EAAS,CAAiC,GAC5D,IAAyB,EAC7B,CACF,GACM,IAAgB,EAAS,CAA8B,GAEvD,IAAoC,CAAC,GACrC,IAAwC,CAAC;CAC/C,KAAK,IAAM,EAAE,eAAY,GAAM;EAC7B,IAAM,IAAa,EAAO;EAC1B,IAAI,CAAC,GACH;EAEF,IAAM,IAAoB,EAAO;EACjC,AAAI,MACF,EAAc,KAAc;EAG9B,IAAM,IAAW,EAAO,MAAkB,MACpC,IAAiB,EAAS,GAAG,EAAE;EACrC,AAAI,GAAgB,aAAa,IAC/B,EAAe,QAAQ,KAAK,CAAU,IAEtC,EAAS,KAAK;GAAE;GAAU,SAAS,CAAC,CAAU;EAAE,CAAC;CAErD;CACA,OAAO;EAAE;EAAU;CAAc;AACnC;AAKA,SAAgB,EAA4B,GAAwB;CAClE,OAAO,EACL,KAAK,iBAAiB,EAAQ,aAAa,EAA4B,OACzE;AACF;AAOA,SAAS,EAAwB,GAAqC;CACpE,IAAM,EAAE,YAAS,YAAS,0BAAuB,mBAAgB,GAY3D,EACJ,MAAM,GACN,cACA,aACE,EAd2C,SACtC;EACL,cAAc;EACd,UAAU;EACV,UAAA;EACA,OAAO,EAA4B,CAAqB;CAC1D,IACA,CAAC,CAAqB,CAOQ,GAAoB,EAClD,QAAQ,EACV,CAAC;CAYD,OAVI,IACK,kBAAC,GAAD;EAAe,SAAS;EAAG,SAAS;CAAI,CAAA,IAE7C,IACK,kBAAC,GAAD,EAAoB,SAAQ,CAAA,IAEhC,IAKH,kBAAA,GAAA,EAAA,UACG,EAAO,SAAS,KAAK,EAAE,aAAU,cAAW,MAAU;EACrD,IAAM,IAAU,EAA2B,GAAS,GAAS,CAAO;EAIpE,OAHI,EAAQ,WAAW,IACd,OAGP,kBAAC,WAAD;GAAsC,WAAW,EAAO;aAAxD,CACG,KACC,kBAAC,GAAD;IAAY,SAAQ;IAAY,WAAW,EAAO;cAC/C;GACS,CAAA,GAEd,kBAAC,GAAD;IACW;IACA;IACA;IACI;IACb,eAAe,EAAO;GACvB,CAAA,CACM;KAbK,GAAG,EAAM,GAAG,GAajB;CAEb,CAAC,EACD,CAAA,IA3BK;AA6BX"}
@@ -0,0 +1,8 @@
1
+ import './CategorizedRowDataTable.css';var e = {
2
+ section: "_section_1hncl_1",
3
+ categoryTitle: "_categoryTitle_1hncl_13"
4
+ };
5
+ //#endregion
6
+ export { e as default };
7
+
8
+ //# sourceMappingURL=CategorizedRowDataTable.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategorizedRowDataTable.module.js","names":[],"sources":["../../../src/components/RowDataTable/CategorizedRowDataTable.module.scss"],"sourcesContent":[".section + .section {\n margin-top: 32px;\n}\n\n// Each category starts with a shaded row; the extra `table` raises specificity above StyledTableContainer's striping\n.section table tr:nth-of-type(odd) {\n background-color: var(--synapse-gray-100);\n}\n\n.section table tr:nth-of-type(even) {\n background-color: var(--synapse-white);\n}\n\n.categoryTitle:global(.MuiTypography-root) {\n color: var(--synapse-gray-900);\n padding-bottom: 8px;\n border-bottom: 1px solid var(--synapse-gray-300);\n}\n"],"mappings":""}
@@ -0,0 +1,18 @@
1
+ .section + .section {
2
+ margin-top: 32px;
3
+ }
4
+
5
+ // Each category starts with a shaded row; the extra `table` raises specificity above StyledTableContainer's striping
6
+ .section table tr:nth-of-type(odd) {
7
+ background-color: var(--synapse-gray-100);
8
+ }
9
+
10
+ .section table tr:nth-of-type(even) {
11
+ background-color: var(--synapse-white);
12
+ }
13
+
14
+ .categoryTitle:global(.MuiTypography-root) {
15
+ color: var(--synapse-gray-900);
16
+ padding-bottom: 8px;
17
+ border-bottom: 1px solid var(--synapse-gray-300);
18
+ }