synapse-react-client 4.0.46 → 4.0.47

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 +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"HighlightedTypography.js","names":[],"sources":["../../../src/components/SynapseSearchPageResults/HighlightedTypography.tsx"],"sourcesContent":["import { Typography, TypographyProps } from '@mui/material'\nimport styles from './HighlightedTypography.module.scss'\n\ntype HighlightedTypographyProps = {\n text: string\n searchTerms: string[]\n} & TypographyProps\n\nfunction escapeRegex(s: string) {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n\nexport function HighlightedTypography({\n text,\n searchTerms,\n ...typographyProps\n}: HighlightedTypographyProps) {\n if (searchTerms.length === 0) {\n return <Typography {...typographyProps}>{text}</Typography>\n }\n const pattern = searchTerms.map(escapeRegex).join('|')\n const regex = new RegExp(`(${pattern})`, 'gi')\n const parts = text.split(regex)\n\n return (\n <Typography {...typographyProps}>\n {parts.map((part, i) =>\n regex.test(part) ? (\n <span key={i} className={styles.highlight}>\n {part}\n </span>\n ) : (\n part\n ),\n )}\n </Typography>\n )\n}\n"],"mappings":";;;;AAQA,SAAS,EAAY,GAAW;CAC9B,OAAO,EAAE,QAAQ,uBAAuB,MAAM;AAChD;AAEA,SAAgB,EAAsB,EACpC,SACA,gBACA,GAAG,KAC0B;CAC7B,IAAI,EAAY,WAAW,GACzB,OAAO,kBAAC,GAAD;EAAY,GAAI;YAAkB;CAAiB,CAAA;CAE5D,IAAM,IAAU,EAAY,IAAI,CAAW,EAAE,KAAK,GAAG,GAC/C,IAAY,OAAO,IAAI,EAAQ,IAAI,IAAI,GACvC,IAAQ,EAAK,MAAM,CAAK;CAE9B,OACE,kBAAC,GAAD;EAAY,GAAI;YACb,EAAM,KAAK,GAAM,MAChB,EAAM,KAAK,CAAI,IACb,kBAAC,QAAD;GAAc,WAAW,EAAO;aAC7B;EACG,GAFK,CAEL,IAEN,CAEJ;CACU,CAAA;AAEhB"}
1
+ {"version":3,"file":"HighlightedTypography.js","names":[],"sources":["../../../src/components/SynapseSearchPageResults/HighlightedTypography.tsx"],"sourcesContent":["import { Typography, TypographyProps } from '@mui/material'\nimport styles from './HighlightedTypography.module.scss'\n\ntype HighlightedTypographyProps = {\n text: string\n searchTerms: string[]\n} & TypographyProps\n\nfunction escapeRegex(s: string) {\n return s.replaceAll(/[.*+?^${}()|[\\]\\\\]/g, String.raw`\\$&`)\n}\n\nexport function HighlightedTypography({\n text,\n searchTerms,\n ...typographyProps\n}: HighlightedTypographyProps) {\n if (searchTerms.length === 0) {\n return <Typography {...typographyProps}>{text}</Typography>\n }\n const pattern = searchTerms.map(escapeRegex).join('|')\n const regex = new RegExp(`(${pattern})`, 'gi')\n const parts = text.split(regex)\n\n return (\n <Typography {...typographyProps}>\n {parts.map((part, i) =>\n regex.test(part) ? (\n <span key={i} className={styles.highlight}>\n {part}\n </span>\n ) : (\n part\n ),\n )}\n </Typography>\n )\n}\n"],"mappings":";;;;AAQA,SAAS,EAAY,GAAW;CAC9B,OAAO,EAAE,WAAW,uBAAuB,OAAO,GAAG,KAAK;AAC5D;AAEA,SAAgB,EAAsB,EACpC,SACA,gBACA,GAAG,KAC0B;CAC7B,IAAI,EAAY,WAAW,GACzB,OAAO,kBAAC,GAAD;EAAY,GAAI;YAAkB;CAAiB,CAAA;CAE5D,IAAM,IAAU,EAAY,IAAI,CAAW,EAAE,KAAK,GAAG,GAC/C,IAAY,OAAO,IAAI,EAAQ,IAAI,IAAI,GACvC,IAAQ,EAAK,MAAM,CAAK;CAE9B,OACE,kBAAC,GAAD;EAAY,GAAI;YACb,EAAM,KAAK,GAAM,MAChB,EAAM,KAAK,CAAI,IACb,kBAAC,QAAD;GAAc,WAAW,EAAO;aAC7B;EACG,GAFK,CAEL,IAEN,CAEJ;CACU,CAAA;AAEhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchFacetPanelUtils.d.ts","sourceRoot":"","sources":["../../../../src/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAIvD,eAAO,MAAM,sBAAsB,KAAK,CAAA;AAWxC,eAAO,MAAM,UAAU;;;;;;;;IAOtB,CAAA;AAGD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGtD,CAAA;AAGD,eAAO,MAAM,mBAAmB,UAU/B,CAAA;AAED,eAAO,MAAM,gBAAgB,UAK5B,CAAA;AAED,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ7D,CAAA;AAGD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAYT;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,OAO1C,CAAA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAMvD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA8BhE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA0BrE"}
1
+ {"version":3,"file":"SearchFacetPanelUtils.d.ts","sourceRoot":"","sources":["../../../../src/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAIvD,eAAO,MAAM,sBAAsB,KAAK,CAAA;AAWxC,eAAO,MAAM,UAAU;;;;;;;;IAOtB,CAAA;AAGD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGtD,CAAA;AAGD,eAAO,MAAM,mBAAmB,UAU/B,CAAA;AAED,eAAO,MAAM,gBAAgB,UAK5B,CAAA;AAED,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ7D,CAAA;AAGD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAYT;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,OAO1C,CAAA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAMvD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA8BhE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA0BrE"}
@@ -67,11 +67,11 @@ function p(e, t) {
67
67
  return !n && !r;
68
68
  }
69
69
  var m = (e) => {
70
- let t = e.toLowerCase().replace(/_/g, "");
71
- return u.some((e) => e.toLowerCase().replace(/_/g, "") === t);
70
+ let t = e.toLowerCase().replaceAll("_", "");
71
+ return u.some((e) => e.toLowerCase().replaceAll("_", "") === t);
72
72
  };
73
73
  function h(e) {
74
- return e.replace(/_/g, " ").replace(/\b\w/g, (e) => e.toUpperCase());
74
+ return e.replaceAll("_", " ").replaceAll(/\b\w/g, (e) => e.toUpperCase());
75
75
  }
76
76
  function g(e) {
77
77
  return c[e] || h(e);
@@ -1 +1 @@
1
- {"version":3,"file":"SearchFacetPanelUtils.js","names":[],"sources":["../../../../src/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.ts"],"sourcesContent":["import { Facet } from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\n\n// Constants\nexport const MAX_FACET_VALUES_SHOWN = 10\n\nconst MINUTE_IN_SEC = 60\nconst HOUR_IN_SEC = MINUTE_IN_SEC * 60\nconst DAY_IN_SEC = HOUR_IN_SEC * 24\nconst WEEK_IN_SEC = DAY_IN_SEC * 7\nconst MONTH_IN_SEC = DAY_IN_SEC * 30\nconst YEAR_IN_SEC = DAY_IN_SEC * 365\n\n// 'range' is the approximate duration in seconds used to match a stored URL timestamp back to a preset.\n// null (ANY_TIME) means no date filter is applied.\nexport const timeRanges = [\n { id: 'ANY_TIME', label: 'Any Time', range: null },\n { id: 'PAST_HOUR', label: 'Past Hour', range: HOUR_IN_SEC },\n { id: 'PAST_DAY', label: 'Past 24 Hours', range: DAY_IN_SEC },\n { id: 'PAST_WEEK', label: 'Past Week', range: WEEK_IN_SEC },\n { id: 'PAST_MONTH', label: 'Past Month', range: MONTH_IN_SEC },\n { id: 'PAST_YEAR', label: 'Past Year', range: YEAR_IN_SEC },\n]\n\n// User-friendly display names\nexport const FACET_DISPLAY_NAMES: Record<string, string> = {\n node_type: 'Entity Type',\n modified_by: 'Last Modified By',\n}\n\n// Facet display order\nexport const FACET_DISPLAY_ORDER = [\n 'node_type',\n 'consortium',\n 'disease',\n 'modified_on',\n 'modified_by',\n 'created_on',\n 'tissue',\n 'num_samples',\n 'created_by',\n]\n\nexport const USER_FACET_NAMES = [\n 'modified_by',\n 'created_by',\n 'ModifiedBy',\n 'CreatedBy',\n]\n\nexport const FACET_PLURAL_DISPLAY_NAMES: Record<string, string> = {\n node_type: 'Entity Types',\n consortium: 'Consortiums',\n disease: 'Diseases',\n tissue: 'Tissues',\n num_samples: 'Num Samples',\n modified_by: 'Last Modified By',\n created_by: 'Created By',\n}\n\n// Helper functions\n/**\n * Get the label for the \"All\" option in a facet, e.g. \"All Entity Types\" for the 'node_type' facet\n */\nexport function getAllFacetLabel(facetName: string): string {\n const pluralName =\n FACET_PLURAL_DISPLAY_NAMES[facetName] || formatFacetName(facetName)\n return `All ${pluralName}`\n}\n\n/**\n * Determines if a facet value should be displayed in the UI.\n * Hides 'link' entity types and colon-prefixed values\n */\nexport function shouldShowFacetValue(\n facetName: string,\n value: string,\n): boolean {\n if (!value || value.trim() === '') {\n return false\n }\n\n const isHiddenEntityType =\n (facetName === 'node_type' || facetName === 'EntityType') &&\n value === 'link'\n\n const isInternalPrefixedValue = value.includes(':')\n\n return !isHiddenEntityType && !isInternalPrefixedValue\n}\n\n/**\n * Check if a facet is a user facet (e.g., 'modified_by' or 'created_by')\n * Accepts either snake_case or PascalCase facet names.\n */\nexport const isUserFacet = (name: string): boolean => {\n // Normalize by removing underscores and converting to lowercase\n const normalizedFacetName = name.toLowerCase().replace(/_/g, '')\n\n return USER_FACET_NAMES.some(\n facet => facet.toLowerCase().replace(/_/g, '') === normalizedFacetName,\n )\n}\n\n/**\n * Format facet name: capitalize first letter, replace underscores with spaces\n */\nexport function formatFacetName(name: string): string {\n return name.replace(/_/g, ' ').replace(/\\b\\w/g, char => char.toUpperCase())\n}\n\n/**\n * Get user-friendly display name for a facet\n */\nexport function getFacetDisplayName(facetName: string): string {\n return FACET_DISPLAY_NAMES[facetName] || formatFacetName(facetName)\n}\n\n/**\n * Check if a facet should be rendered (some facets like 'link' are hidden)\n */\nexport function shouldRenderFacet(facet: Facet): boolean {\n // Don't render facets with no constraints (values to click on)\n if (!facet.constraints || facet.constraints.length === 0) {\n return false\n }\n return true\n}\n\n/**\n * Get timestamp from URL/query and determine which time range preset it matches\n *\n * @param timestamp - The stored timestamp (in seconds) from the URL/query\n * @returns The ID of the matching time range preset ('PAST_HOUR', 'PAST_DAY', etc.)\n */\nexport function getSelectedTimeRangeId(timestamp: string): string {\n const storedTimestamp = parseInt(timestamp)\n\n if (!storedTimestamp) {\n return 'ANY_TIME'\n }\n\n const diffInSeconds = dayjs().unix() - storedTimestamp\n\n if (diffInSeconds <= 0) {\n return 'ANY_TIME'\n }\n\n // Filter out 'ANY_TIME' since it doesn't have a numeric range\n const presets = timeRanges.filter(\n (range): range is { id: string; label: string; range: number } =>\n range.id !== 'ANY_TIME',\n )\n\n // Find the closest preset by comparing the absolute difference.\n // Ex: If diffInSeconds is 3605, it is 5 seconds away from PAST_HOUR (3600)\n // but 82,795 seconds away from PAST_DAY (86400) so we would match to PAST_HOUR.\n const closest = presets.reduce((best, preset) =>\n Math.abs(diffInSeconds - preset.range) <\n Math.abs(diffInSeconds - best.range)\n ? preset\n : best,\n )\n\n return closest.id\n}\n\n/**\n * Formats a timestamp for display in the applied facets chip.\n *\n * @param timestamp - The stored timestamp (in seconds)\n * @returns A friendly display string\n */\nexport function formatTimeRangeDisplayValue(timestamp: string): string {\n const storedTimestamp = parseInt(timestamp)\n\n if (isNaN(storedTimestamp)) {\n return timestamp\n }\n\n if (storedTimestamp === 0) {\n return 'any time'\n }\n\n // Try to match to a preset\n const rangeId = getSelectedTimeRangeId(timestamp)\n const matchedRange = timeRanges.find(r => r.id === rangeId)\n\n if (matchedRange && matchedRange.id !== 'ANY_TIME') {\n return matchedRange.label\n }\n\n // Fallback to formatted date if no preset matches\n try {\n const valueInMilliseconds = storedTimestamp * 1000\n return new Date(valueInMilliseconds).toLocaleDateString()\n } catch {\n return timestamp\n }\n}\n"],"mappings":";;AAIA,IAAa,IAAyB,IAGhC,IAAc,MACd,IAAa,IAAc,IAC3B,IAAc,IAAa,GAC3B,IAAe,IAAa,IAC5B,IAAc,IAAa,KAIpB,IAAa;CACxB;EAAE,IAAI;EAAY,OAAO;EAAY,OAAO;CAAK;CACjD;EAAE,IAAI;EAAa,OAAO;EAAa,OAAO;CAAY;CAC1D;EAAE,IAAI;EAAY,OAAO;EAAiB,OAAO;CAAW;CAC5D;EAAE,IAAI;EAAa,OAAO;EAAa,OAAO;CAAY;CAC1D;EAAE,IAAI;EAAc,OAAO;EAAc,OAAO;CAAa;CAC7D;EAAE,IAAI;EAAa,OAAO;EAAa,OAAO;CAAY;AAC5D,GAGa,IAA8C;CACzD,WAAW;CACX,aAAa;AACf,GAGa,IAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,GAEa,IAAmB;CAC9B;CACA;CACA;CACA;AACF,GAEa,IAAqD;CAChE,WAAW;CACX,YAAY;CACZ,SAAS;CACT,QAAQ;CACR,aAAa;CACb,aAAa;CACb,YAAY;AACd;AAMA,SAAgB,EAAiB,GAA2B;CAG1D,OAAO,OADL,EAA2B,MAAc,EAAgB,CAAS;AAEtE;AAMA,SAAgB,EACd,GACA,GACS;CACT,IAAI,CAAC,KAAS,EAAM,KAAK,MAAM,IAC7B,OAAO;CAGT,IAAM,KACH,MAAc,eAAe,MAAc,iBAC5C,MAAU,QAEN,IAA0B,EAAM,SAAS,GAAG;CAElD,OAAO,CAAC,KAAsB,CAAC;AACjC;AAMA,IAAa,KAAe,MAA0B;CAEpD,IAAM,IAAsB,EAAK,YAAY,EAAE,QAAQ,MAAM,EAAE;CAE/D,OAAO,EAAiB,MACtB,MAAS,EAAM,YAAY,EAAE,QAAQ,MAAM,EAAE,MAAM,CACrD;AACF;AAKA,SAAgB,EAAgB,GAAsB;CACpD,OAAO,EAAK,QAAQ,MAAM,GAAG,EAAE,QAAQ,UAAS,MAAQ,EAAK,YAAY,CAAC;AAC5E;AAKA,SAAgB,EAAoB,GAA2B;CAC7D,OAAO,EAAoB,MAAc,EAAgB,CAAS;AACpE;AAKA,SAAgB,EAAkB,GAAuB;CAKvD,OAHA,EAAI,CAAC,EAAM,eAAe,EAAM,YAAY,WAAW;AAIzD;AAQA,SAAgB,EAAuB,GAA2B;CAChE,IAAM,IAAkB,SAAS,CAAS;CAE1C,IAAI,CAAC,GACH,OAAO;CAGT,IAAM,IAAgB,EAAM,EAAE,KAAK,IAAI;CAsBvC,OApBI,KAAiB,IACZ,aAIO,EAAW,QACxB,MACC,EAAM,OAAO,UAMD,EAAQ,QAAQ,GAAM,MACpC,KAAK,IAAI,IAAgB,EAAO,KAAK,IACrC,KAAK,IAAI,IAAgB,EAAK,KAAK,IAC/B,IACA,CAGC,EAAQ;AACjB;AAQA,SAAgB,EAA4B,GAA2B;CACrE,IAAM,IAAkB,SAAS,CAAS;CAE1C,IAAI,MAAM,CAAe,GACvB,OAAO;CAGT,IAAI,MAAoB,GACtB,OAAO;CAIT,IAAM,IAAU,EAAuB,CAAS,GAC1C,IAAe,EAAW,MAAK,MAAK,EAAE,OAAO,CAAO;CAE1D,IAAI,KAAgB,EAAa,OAAO,YACtC,OAAO,EAAa;CAItB,IAAI;EACF,IAAM,IAAsB,IAAkB;EAC9C,OAAO,IAAI,KAAK,CAAmB,EAAE,mBAAmB;CAC1D,QAAQ;EACN,OAAO;CACT;AACF"}
1
+ {"version":3,"file":"SearchFacetPanelUtils.js","names":[],"sources":["../../../../src/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.ts"],"sourcesContent":["import { Facet } from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\n\n// Constants\nexport const MAX_FACET_VALUES_SHOWN = 10\n\nconst MINUTE_IN_SEC = 60\nconst HOUR_IN_SEC = MINUTE_IN_SEC * 60\nconst DAY_IN_SEC = HOUR_IN_SEC * 24\nconst WEEK_IN_SEC = DAY_IN_SEC * 7\nconst MONTH_IN_SEC = DAY_IN_SEC * 30\nconst YEAR_IN_SEC = DAY_IN_SEC * 365\n\n// 'range' is the approximate duration in seconds used to match a stored URL timestamp back to a preset.\n// null (ANY_TIME) means no date filter is applied.\nexport const timeRanges = [\n { id: 'ANY_TIME', label: 'Any Time', range: null },\n { id: 'PAST_HOUR', label: 'Past Hour', range: HOUR_IN_SEC },\n { id: 'PAST_DAY', label: 'Past 24 Hours', range: DAY_IN_SEC },\n { id: 'PAST_WEEK', label: 'Past Week', range: WEEK_IN_SEC },\n { id: 'PAST_MONTH', label: 'Past Month', range: MONTH_IN_SEC },\n { id: 'PAST_YEAR', label: 'Past Year', range: YEAR_IN_SEC },\n]\n\n// User-friendly display names\nexport const FACET_DISPLAY_NAMES: Record<string, string> = {\n node_type: 'Entity Type',\n modified_by: 'Last Modified By',\n}\n\n// Facet display order\nexport const FACET_DISPLAY_ORDER = [\n 'node_type',\n 'consortium',\n 'disease',\n 'modified_on',\n 'modified_by',\n 'created_on',\n 'tissue',\n 'num_samples',\n 'created_by',\n]\n\nexport const USER_FACET_NAMES = [\n 'modified_by',\n 'created_by',\n 'ModifiedBy',\n 'CreatedBy',\n]\n\nexport const FACET_PLURAL_DISPLAY_NAMES: Record<string, string> = {\n node_type: 'Entity Types',\n consortium: 'Consortiums',\n disease: 'Diseases',\n tissue: 'Tissues',\n num_samples: 'Num Samples',\n modified_by: 'Last Modified By',\n created_by: 'Created By',\n}\n\n// Helper functions\n/**\n * Get the label for the \"All\" option in a facet, e.g. \"All Entity Types\" for the 'node_type' facet\n */\nexport function getAllFacetLabel(facetName: string): string {\n const pluralName =\n FACET_PLURAL_DISPLAY_NAMES[facetName] || formatFacetName(facetName)\n return `All ${pluralName}`\n}\n\n/**\n * Determines if a facet value should be displayed in the UI.\n * Hides 'link' entity types and colon-prefixed values\n */\nexport function shouldShowFacetValue(\n facetName: string,\n value: string,\n): boolean {\n if (!value || value.trim() === '') {\n return false\n }\n\n const isHiddenEntityType =\n (facetName === 'node_type' || facetName === 'EntityType') &&\n value === 'link'\n\n const isInternalPrefixedValue = value.includes(':')\n\n return !isHiddenEntityType && !isInternalPrefixedValue\n}\n\n/**\n * Check if a facet is a user facet (e.g., 'modified_by' or 'created_by')\n * Accepts either snake_case or PascalCase facet names.\n */\nexport const isUserFacet = (name: string): boolean => {\n // Normalize by removing underscores and converting to lowercase\n const normalizedFacetName = name.toLowerCase().replaceAll('_', '')\n\n return USER_FACET_NAMES.some(\n facet => facet.toLowerCase().replaceAll('_', '') === normalizedFacetName,\n )\n}\n\n/**\n * Format facet name: capitalize first letter, replace underscores with spaces\n */\nexport function formatFacetName(name: string): string {\n return name\n .replaceAll('_', ' ')\n .replaceAll(/\\b\\w/g, char => char.toUpperCase())\n}\n\n/**\n * Get user-friendly display name for a facet\n */\nexport function getFacetDisplayName(facetName: string): string {\n return FACET_DISPLAY_NAMES[facetName] || formatFacetName(facetName)\n}\n\n/**\n * Check if a facet should be rendered (some facets like 'link' are hidden)\n */\nexport function shouldRenderFacet(facet: Facet): boolean {\n // Don't render facets with no constraints (values to click on)\n if (!facet.constraints || facet.constraints.length === 0) {\n return false\n }\n return true\n}\n\n/**\n * Get timestamp from URL/query and determine which time range preset it matches\n *\n * @param timestamp - The stored timestamp (in seconds) from the URL/query\n * @returns The ID of the matching time range preset ('PAST_HOUR', 'PAST_DAY', etc.)\n */\nexport function getSelectedTimeRangeId(timestamp: string): string {\n const storedTimestamp = parseInt(timestamp)\n\n if (!storedTimestamp) {\n return 'ANY_TIME'\n }\n\n const diffInSeconds = dayjs().unix() - storedTimestamp\n\n if (diffInSeconds <= 0) {\n return 'ANY_TIME'\n }\n\n // Filter out 'ANY_TIME' since it doesn't have a numeric range\n const presets = timeRanges.filter(\n (range): range is { id: string; label: string; range: number } =>\n range.id !== 'ANY_TIME',\n )\n\n // Find the closest preset by comparing the absolute difference.\n // Ex: If diffInSeconds is 3605, it is 5 seconds away from PAST_HOUR (3600)\n // but 82,795 seconds away from PAST_DAY (86400) so we would match to PAST_HOUR.\n const closest = presets.reduce((best, preset) =>\n Math.abs(diffInSeconds - preset.range) <\n Math.abs(diffInSeconds - best.range)\n ? preset\n : best,\n )\n\n return closest.id\n}\n\n/**\n * Formats a timestamp for display in the applied facets chip.\n *\n * @param timestamp - The stored timestamp (in seconds)\n * @returns A friendly display string\n */\nexport function formatTimeRangeDisplayValue(timestamp: string): string {\n const storedTimestamp = parseInt(timestamp)\n\n if (isNaN(storedTimestamp)) {\n return timestamp\n }\n\n if (storedTimestamp === 0) {\n return 'any time'\n }\n\n // Try to match to a preset\n const rangeId = getSelectedTimeRangeId(timestamp)\n const matchedRange = timeRanges.find(r => r.id === rangeId)\n\n if (matchedRange && matchedRange.id !== 'ANY_TIME') {\n return matchedRange.label\n }\n\n // Fallback to formatted date if no preset matches\n try {\n const valueInMilliseconds = storedTimestamp * 1000\n return new Date(valueInMilliseconds).toLocaleDateString()\n } catch {\n return timestamp\n }\n}\n"],"mappings":";;AAIA,IAAa,IAAyB,IAGhC,IAAc,MACd,IAAa,IAAc,IAC3B,IAAc,IAAa,GAC3B,IAAe,IAAa,IAC5B,IAAc,IAAa,KAIpB,IAAa;CACxB;EAAE,IAAI;EAAY,OAAO;EAAY,OAAO;CAAK;CACjD;EAAE,IAAI;EAAa,OAAO;EAAa,OAAO;CAAY;CAC1D;EAAE,IAAI;EAAY,OAAO;EAAiB,OAAO;CAAW;CAC5D;EAAE,IAAI;EAAa,OAAO;EAAa,OAAO;CAAY;CAC1D;EAAE,IAAI;EAAc,OAAO;EAAc,OAAO;CAAa;CAC7D;EAAE,IAAI;EAAa,OAAO;EAAa,OAAO;CAAY;AAC5D,GAGa,IAA8C;CACzD,WAAW;CACX,aAAa;AACf,GAGa,IAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,GAEa,IAAmB;CAC9B;CACA;CACA;CACA;AACF,GAEa,IAAqD;CAChE,WAAW;CACX,YAAY;CACZ,SAAS;CACT,QAAQ;CACR,aAAa;CACb,aAAa;CACb,YAAY;AACd;AAMA,SAAgB,EAAiB,GAA2B;CAG1D,OAAO,OADL,EAA2B,MAAc,EAAgB,CAAS;AAEtE;AAMA,SAAgB,EACd,GACA,GACS;CACT,IAAI,CAAC,KAAS,EAAM,KAAK,MAAM,IAC7B,OAAO;CAGT,IAAM,KACH,MAAc,eAAe,MAAc,iBAC5C,MAAU,QAEN,IAA0B,EAAM,SAAS,GAAG;CAElD,OAAO,CAAC,KAAsB,CAAC;AACjC;AAMA,IAAa,KAAe,MAA0B;CAEpD,IAAM,IAAsB,EAAK,YAAY,EAAE,WAAW,KAAK,EAAE;CAEjE,OAAO,EAAiB,MACtB,MAAS,EAAM,YAAY,EAAE,WAAW,KAAK,EAAE,MAAM,CACvD;AACF;AAKA,SAAgB,EAAgB,GAAsB;CACpD,OAAO,EACJ,WAAW,KAAK,GAAG,EACnB,WAAW,UAAS,MAAQ,EAAK,YAAY,CAAC;AACnD;AAKA,SAAgB,EAAoB,GAA2B;CAC7D,OAAO,EAAoB,MAAc,EAAgB,CAAS;AACpE;AAKA,SAAgB,EAAkB,GAAuB;CAKvD,OAHA,EAAI,CAAC,EAAM,eAAe,EAAM,YAAY,WAAW;AAIzD;AAQA,SAAgB,EAAuB,GAA2B;CAChE,IAAM,IAAkB,SAAS,CAAS;CAE1C,IAAI,CAAC,GACH,OAAO;CAGT,IAAM,IAAgB,EAAM,EAAE,KAAK,IAAI;CAsBvC,OApBI,KAAiB,IACZ,aAIO,EAAW,QACxB,MACC,EAAM,OAAO,UAMD,EAAQ,QAAQ,GAAM,MACpC,KAAK,IAAI,IAAgB,EAAO,KAAK,IACrC,KAAK,IAAI,IAAgB,EAAK,KAAK,IAC/B,IACA,CAGC,EAAQ;AACjB;AAQA,SAAgB,EAA4B,GAA2B;CACrE,IAAM,IAAkB,SAAS,CAAS;CAE1C,IAAI,MAAM,CAAe,GACvB,OAAO;CAGT,IAAI,MAAoB,GACtB,OAAO;CAIT,IAAM,IAAU,EAAuB,CAAS,GAC1C,IAAe,EAAW,MAAK,MAAK,EAAE,OAAO,CAAO;CAE1D,IAAI,KAAgB,EAAa,OAAO,YACtC,OAAO,EAAa;CAItB,IAAI;EACF,IAAM,IAAsB,IAAkB;EAC9C,OAAO,IAAI,KAAK,CAAmB,EAAE,mBAAmB;CAC1D,QAAQ;EACN,OAAO;CACT;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"RowSelectionControls.d.ts","sourceRoot":"","sources":["../../../../src/components/SynapseTable/RowSelection/RowSelectionControls.tsx"],"names":[],"mappings":"AAoBA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAA;AAOpE,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CA8GpE"}
1
+ {"version":3,"file":"RowSelectionControls.d.ts","sourceRoot":"","sources":["../../../../src/components/SynapseTable/RowSelection/RowSelectionControls.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAA;AAQpE,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CAwGpE"}
@@ -1,81 +1,75 @@
1
- import { useSynapseContext as e } from "../../../utils/context/SynapseContext.js";
1
+ import { useQueryVisualizationContext as e } from "../../QueryVisualizationWrapper/QueryVisualizationContext.js";
2
+ import { useSynapseContext as t } from "../../../utils/context/SynapseContext.js";
2
3
  import "../../../utils/index.js";
3
- import { useGetEntity as t } from "../../../synapse-queries/entity/useEntity.js";
4
- import { canTableQueryBeAddedToDownloadList as n } from "../../../utils/functions/queryUtils.js";
4
+ import { useGetEntity as n } from "../../../synapse-queries/entity/useEntity.js";
5
+ import { canTableQueryBeAddedToDownloadList as r } from "../../../utils/functions/queryUtils.js";
5
6
  import "../../../synapse-queries/index.js";
6
- import { getFileColumnModelId as r } from "../SynapseTableUtils.js";
7
- import i from "../../download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js";
7
+ import { getFileColumnModelId as i } from "../SynapseTableUtils.js";
8
8
  import { useQueryContext as a } from "../../QueryContext/QueryContext.js";
9
9
  import "../../QueryContext/index.js";
10
10
  import { useGetQueryMetadata as o } from "../../QueryWrapper/useGetQueryMetadata.js";
11
- import { useQueryVisualizationContext as s } from "../../QueryVisualizationWrapper/QueryVisualizationContext.js";
12
11
  import "../../QueryVisualizationWrapper/index.js";
13
- import { selectedRowsAtom as c } from "../../QueryWrapper/TableRowSelectionState.js";
14
- import { SignInRequiredModal as l } from "../../SignInRequiredModal/SignInRequiredModal.js";
15
- import { useGetAddToDownloadListRequestForCurrentQuery as u } from "../../QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js";
16
- import { CustomControlButton as d } from "../CustomControls/CustomControlButton.js";
17
- import { RowSelectionUI as f } from "./RowSelectionUI.js";
12
+ import { selectedRowsAtom as s } from "../../QueryWrapper/TableRowSelectionState.js";
13
+ import { SignInRequiredModal as c } from "../../SignInRequiredModal/SignInRequiredModal.js";
14
+ import { useAddSelectedRowsToDownloadList as l } from "../../QueryWrapper/useAddSelectedRowsToDownloadList.js";
15
+ import { CustomControlButton as u } from "../CustomControls/CustomControlButton.js";
16
+ import { RowSelectionUI as d } from "./RowSelectionUI.js";
17
+ import { DownloadLoginModal as f } from "../table-top/DownloadLoginModal.js";
18
18
  import { useState as p } from "react";
19
- import { Box as m, Button as h } from "@mui/material";
20
- import { toast as g } from "react-hot-toast";
21
- import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
22
- import { useAtom as b } from "jotai";
23
- import x from "@mui/icons-material/GetAppTwoTone";
19
+ import { Button as m } from "@mui/material";
20
+ import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
21
+ import { useAtom as v } from "jotai";
22
+ import y from "@mui/icons-material/GetAppTwoTone";
24
23
  //#region src/components/SynapseTable/RowSelection/RowSelectionControls.tsx
25
- var S = "SendToAnalysisPlatformRowSelectionControlButton";
26
- function C(C) {
27
- let { customControls: w = [], remount: T } = C, { isAuthenticated: E } = e(), [D, O] = p(!1), { entityId: k, versionNumber: A, getCurrentQueryRequest: j } = a(), { data: M } = t(k, A), { data: N } = o(), [P, F] = b(c), I = u(), { setIsShowingExportToAnalysisPlatformModal: L, enabledExternalAnalysisPlatforms: R } = s(), z = R.length > 0, B = () => {
28
- F([]), T && T();
29
- }, V = n(M, r(N?.columnModels));
30
- return /* @__PURE__ */ v(f, {
24
+ var b = "SendToAnalysisPlatformRowSelectionControlButton";
25
+ function x(x) {
26
+ let { customControls: S = [], remount: C } = x, { isAuthenticated: w } = t(), [T, E] = p(!1), [D, O] = p(!1), { entityId: k, versionNumber: A, getCurrentQueryRequest: j } = a(), { data: M } = n(k, A), { data: N } = o(), [P, F] = v(s), { addSelectedRowsToDownloadList: I, isPending: L } = l(), { setIsShowingExportToAnalysisPlatformModal: R, enabledExternalAnalysisPlatforms: z } = e(), B = z.length > 0, V = () => {
27
+ F([]), C && C();
28
+ }, H = r(M, i(N?.columnModels));
29
+ return /* @__PURE__ */ g(d, {
31
30
  show: P.length > 0,
32
31
  selectedRowCount: P.length,
33
32
  onClearSelection: () => F([]),
34
- customControls: /* @__PURE__ */ y(_, { children: [
35
- w.map((e) => /* @__PURE__ */ v(d, {
33
+ customControls: /* @__PURE__ */ _(h, { children: [
34
+ S.map((e) => /* @__PURE__ */ g(u, {
36
35
  variant: "contained",
37
36
  callbackData: {
38
37
  tableId: k,
39
38
  queryMetadata: N,
40
39
  selectedRows: P,
41
- refresh: B,
40
+ refresh: V,
42
41
  request: j()
43
42
  },
44
43
  control: e,
45
44
  startIcon: e.icon
46
45
  }, e.buttonText)),
47
- z && /* @__PURE__ */ v(h, {
46
+ B && /* @__PURE__ */ g(m, {
48
47
  variant: "outlined",
49
48
  onClick: () => {
50
- E ? L(!0) : O(!0);
49
+ w ? R(!0) : E(!0);
51
50
  },
52
- id: S,
51
+ id: b,
53
52
  children: "Send to Analysis Platform"
54
53
  }),
55
- D && /* @__PURE__ */ v(l, {
56
- onHide: () => O(!1),
54
+ T && /* @__PURE__ */ g(c, {
55
+ onHide: () => E(!1),
57
56
  content: "You must be signed in to send results to an analysis platform."
58
57
  }),
59
- V && /* @__PURE__ */ v(h, {
58
+ H && /* @__PURE__ */ g(m, {
60
59
  variant: "contained",
61
- onClick: () => {
62
- let e = g.custom(/* @__PURE__ */ v(m, {
63
- sx: { width: "100%" },
64
- children: /* @__PURE__ */ v(i, {
65
- addToDownloadListRequest: I,
66
- onClose: () => {
67
- g.dismiss(e);
68
- }
69
- })
70
- }), { duration: Infinity });
71
- },
72
- startIcon: /* @__PURE__ */ v(x, {}),
60
+ loading: L,
61
+ onClick: () => w ? void I() : O(!0),
62
+ startIcon: /* @__PURE__ */ g(y, {}),
73
63
  children: "Add to Download List"
64
+ }),
65
+ D && /* @__PURE__ */ g(f, {
66
+ showModal: D,
67
+ onHide: () => O(!1)
74
68
  })
75
69
  ] })
76
70
  });
77
71
  }
78
72
  //#endregion
79
- export { C as RowSelectionControls };
73
+ export { x as RowSelectionControls };
80
74
 
81
75
  //# sourceMappingURL=RowSelectionControls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RowSelectionControls.js","names":[],"sources":["../../../../src/components/SynapseTable/RowSelection/RowSelectionControls.tsx"],"sourcesContent":["import AddToDownloadListConfirmationAlert from '@/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert'\nimport { useGetAddToDownloadListRequestForCurrentQuery } from '@/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery'\nimport { useGetEntity } from '@/synapse-queries'\nimport { canTableQueryBeAddedToDownloadList } from '@/utils/functions/queryUtils'\nimport GetAppTwoTone from '@mui/icons-material/GetAppTwoTone'\nimport { Box, Button } from '@mui/material'\nimport { Table } from '@sage-bionetworks/synapse-types'\nimport { useAtom } from 'jotai'\nimport { useState } from 'react'\nimport { toast } from 'react-hot-toast'\nimport { useSynapseContext } from '@/utils'\nimport { useQueryContext } from '../../QueryContext'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\nimport { selectedRowsAtom } from '../../QueryWrapper/TableRowSelectionState'\nimport { useGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport {\n getFileColumnModelId,\n SEND_TO_ANALYSIS_PLATFORM_SIGN_IN_MESSAGE,\n} from '../SynapseTableUtils'\nimport { CustomControlButton } from '../CustomControls/CustomControlButton'\nimport { CustomControl } from '../TopLevelControls/TopLevelControls'\nimport { RowSelectionUI } from './RowSelectionUI'\nimport { SignInRequiredModal } from '@/components/SignInRequiredModal/SignInRequiredModal'\n\nconst SEND_TO_ANALYSIS_PLATFORM_BUTTON_ID =\n 'SendToAnalysisPlatformRowSelectionControlButton'\n\nexport type RowSelectionControlsProps = {\n customControls?: CustomControl[]\n remount?: () => void\n}\n\n/**\n * This component is responsible for rendering the RowSelectionUI and the custom controls. Must be wrapped in a\n * QueryContext and a QueryVisualizationContext.\n * @param props\n * @constructor\n */\nexport function RowSelectionControls(props: RowSelectionControlsProps) {\n const { customControls = [], remount } = props\n const { isAuthenticated } = useSynapseContext()\n const [showLoginModal, setShowLoginModal] = useState(false)\n const { entityId, versionNumber, getCurrentQueryRequest } = useQueryContext()\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n const { data: queryMetadata } = useGetQueryMetadata()\n const [selectedRows, setSelectedRows] = useAtom(selectedRowsAtom)\n\n const addToDownloadListRequest =\n useGetAddToDownloadListRequestForCurrentQuery()\n\n const {\n setIsShowingExportToAnalysisPlatformModal,\n enabledExternalAnalysisPlatforms,\n } = useQueryVisualizationContext()\n\n const showExportToAnalysisPlatformButton =\n enabledExternalAnalysisPlatforms.length > 0\n\n const refresh = () => {\n // clear selection\n setSelectedRows([])\n if (remount) {\n remount()\n }\n }\n const fileColumnId = getFileColumnModelId(queryMetadata?.columnModels)\n const showAddToDownloadCart = canTableQueryBeAddedToDownloadList(\n entity,\n fileColumnId,\n )\n\n return (\n <RowSelectionUI\n show={selectedRows.length > 0}\n selectedRowCount={selectedRows.length}\n onClearSelection={() => setSelectedRows([])}\n customControls={\n <>\n {customControls.map(customControl => {\n return (\n <CustomControlButton\n key={customControl.buttonText}\n variant=\"contained\"\n callbackData={{\n tableId: entityId!,\n queryMetadata: queryMetadata,\n selectedRows,\n refresh,\n request: getCurrentQueryRequest(),\n }}\n control={customControl}\n startIcon={customControl.icon}\n />\n )\n })}\n {/* TODO: Generic button */}\n {showExportToAnalysisPlatformButton && (\n <Button\n variant=\"outlined\"\n onClick={() => {\n if (isAuthenticated) {\n setIsShowingExportToAnalysisPlatformModal(true)\n } else {\n setShowLoginModal(true)\n }\n }}\n id={SEND_TO_ANALYSIS_PLATFORM_BUTTON_ID}\n >\n Send to Analysis Platform\n </Button>\n )}\n {showLoginModal && (\n <SignInRequiredModal\n onHide={() => setShowLoginModal(false)}\n content={SEND_TO_ANALYSIS_PLATFORM_SIGN_IN_MESSAGE}\n />\n )}\n {showAddToDownloadCart && (\n <Button\n variant=\"contained\"\n onClick={() => {\n const toastId = toast.custom(\n <Box\n sx={{\n width: '100%',\n }}\n >\n <AddToDownloadListConfirmationAlert\n addToDownloadListRequest={addToDownloadListRequest}\n onClose={() => {\n toast.dismiss(toastId)\n }}\n />\n </Box>,\n {\n duration: Infinity,\n },\n )\n }}\n startIcon={<GetAppTwoTone />}\n >\n Add to Download List\n </Button>\n )}\n </>\n }\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM,IACJ;AAaF,SAAgB,EAAqB,GAAkC;CACrE,IAAM,EAAE,oBAAiB,CAAC,GAAG,eAAY,GACnC,EAAE,uBAAoB,EAAkB,GACxC,CAAC,GAAgB,KAAqB,EAAS,EAAK,GACpD,EAAE,aAAU,kBAAe,8BAA2B,EAAgB,GACtE,EAAE,MAAM,MAAW,EAAoB,GAAU,CAAa,GAC9D,EAAE,MAAM,MAAkB,EAAoB,GAC9C,CAAC,GAAc,KAAmB,EAAQ,CAAgB,GAE1D,IACJ,EAA8C,GAE1C,EACJ,8CACA,wCACE,EAA6B,GAE3B,IACJ,EAAiC,SAAS,GAEtC,UAAgB;EAGpB,AADA,EAAgB,CAAC,CAAC,GACd,KACF,EAAQ;CAEZ,GAEM,IAAwB,EAC5B,GAFmB,EAAqB,GAAe,YAGvD,CACF;CAEA,OACE,kBAAC,GAAD;EACE,MAAM,EAAa,SAAS;EAC5B,kBAAkB,EAAa;EAC/B,wBAAwB,EAAgB,CAAC,CAAC;EAC1C,gBACE,kBAAA,GAAA,EAAA,UAAA;GACG,EAAe,KAAI,MAEhB,kBAAC,GAAD;IAEE,SAAQ;IACR,cAAc;KACZ,SAAS;KACM;KACf;KACA;KACA,SAAS,EAAuB;IAClC;IACA,SAAS;IACT,WAAW,EAAc;GAC1B,GAXM,EAAc,UAWpB,CAEJ;GAEA,KACC,kBAAC,GAAD;IACE,SAAQ;IACR,eAAe;KACb,AAAI,IACF,EAA0C,EAAI,IAE9C,EAAkB,EAAI;IAE1B;IACA,IAAI;cACL;GAEO,CAAA;GAET,KACC,kBAAC,GAAD;IACE,cAAc,EAAkB,EAAK;IACrC,SAAA;GACD,CAAA;GAEF,KACC,kBAAC,GAAD;IACE,SAAQ;IACR,eAAe;KACb,IAAM,IAAU,EAAM,OACpB,kBAAC,GAAD;MACE,IAAI,EACF,OAAO,OACT;gBAEA,kBAAC,GAAD;OAC4B;OAC1B,eAAe;QACb,EAAM,QAAQ,CAAO;OACvB;MACD,CAAA;KACE,CAAA,GACL,EACE,UAAU,SACZ,CACF;IACF;IACA,WAAW,kBAAC,GAAD,CAAgB,CAAA;cAC5B;GAEO,CAAA;EAEV,EAAA,CAAA;CAEL,CAAA;AAEL"}
1
+ {"version":3,"file":"RowSelectionControls.js","names":[],"sources":["../../../../src/components/SynapseTable/RowSelection/RowSelectionControls.tsx"],"sourcesContent":["import { useAddSelectedRowsToDownloadList } from '@/components/QueryWrapper/useAddSelectedRowsToDownloadList'\nimport { useGetEntity } from '@/synapse-queries'\nimport { canTableQueryBeAddedToDownloadList } from '@/utils/functions/queryUtils'\nimport GetAppTwoTone from '@mui/icons-material/GetAppTwoTone'\nimport { Button } from '@mui/material'\nimport { Table } from '@sage-bionetworks/synapse-types'\nimport { useAtom } from 'jotai'\nimport { useState } from 'react'\nimport { useSynapseContext } from '@/utils'\nimport { useQueryContext } from '../../QueryContext'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\nimport { selectedRowsAtom } from '../../QueryWrapper/TableRowSelectionState'\nimport { useGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport {\n getFileColumnModelId,\n SEND_TO_ANALYSIS_PLATFORM_SIGN_IN_MESSAGE,\n} from '../SynapseTableUtils'\nimport { CustomControlButton } from '../CustomControls/CustomControlButton'\nimport { CustomControl } from '../TopLevelControls/TopLevelControls'\nimport { RowSelectionUI } from './RowSelectionUI'\nimport { SignInRequiredModal } from '@/components/SignInRequiredModal/SignInRequiredModal'\nimport { DownloadLoginModal } from '../table-top/DownloadLoginModal'\n\nconst SEND_TO_ANALYSIS_PLATFORM_BUTTON_ID =\n 'SendToAnalysisPlatformRowSelectionControlButton'\n\nexport type RowSelectionControlsProps = {\n customControls?: CustomControl[]\n remount?: () => void\n}\n\n/**\n * This component is responsible for rendering the RowSelectionUI and the custom controls. Must be wrapped in a\n * QueryContext and a QueryVisualizationContext.\n * @param props\n * @constructor\n */\nexport function RowSelectionControls(props: RowSelectionControlsProps) {\n const { customControls = [], remount } = props\n const { isAuthenticated } = useSynapseContext()\n const [showLoginModal, setShowLoginModal] = useState(false)\n const [showDownloadLoginModal, setShowDownloadLoginModal] = useState(false)\n const { entityId, versionNumber, getCurrentQueryRequest } = useQueryContext()\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n const { data: queryMetadata } = useGetQueryMetadata()\n const [selectedRows, setSelectedRows] = useAtom(selectedRowsAtom)\n\n const { addSelectedRowsToDownloadList, isPending: isAddingToDownloadList } =\n useAddSelectedRowsToDownloadList()\n\n const {\n setIsShowingExportToAnalysisPlatformModal,\n enabledExternalAnalysisPlatforms,\n } = useQueryVisualizationContext()\n\n const showExportToAnalysisPlatformButton =\n enabledExternalAnalysisPlatforms.length > 0\n\n const refresh = () => {\n // clear selection\n setSelectedRows([])\n if (remount) {\n remount()\n }\n }\n const fileColumnId = getFileColumnModelId(queryMetadata?.columnModels)\n const showAddToDownloadCart = canTableQueryBeAddedToDownloadList(\n entity,\n fileColumnId,\n )\n\n return (\n <RowSelectionUI\n show={selectedRows.length > 0}\n selectedRowCount={selectedRows.length}\n onClearSelection={() => setSelectedRows([])}\n customControls={\n <>\n {customControls.map(customControl => {\n return (\n <CustomControlButton\n key={customControl.buttonText}\n variant=\"contained\"\n callbackData={{\n tableId: entityId!,\n queryMetadata: queryMetadata,\n selectedRows,\n refresh,\n request: getCurrentQueryRequest(),\n }}\n control={customControl}\n startIcon={customControl.icon}\n />\n )\n })}\n {/* TODO: Generic button */}\n {showExportToAnalysisPlatformButton && (\n <Button\n variant=\"outlined\"\n onClick={() => {\n if (isAuthenticated) {\n setIsShowingExportToAnalysisPlatformModal(true)\n } else {\n setShowLoginModal(true)\n }\n }}\n id={SEND_TO_ANALYSIS_PLATFORM_BUTTON_ID}\n >\n Send to Analysis Platform\n </Button>\n )}\n {showLoginModal && (\n <SignInRequiredModal\n onHide={() => setShowLoginModal(false)}\n content={SEND_TO_ANALYSIS_PLATFORM_SIGN_IN_MESSAGE}\n />\n )}\n {showAddToDownloadCart && (\n <Button\n variant=\"contained\"\n loading={isAddingToDownloadList}\n onClick={() =>\n isAuthenticated\n ? void addSelectedRowsToDownloadList()\n : setShowDownloadLoginModal(true)\n }\n startIcon={<GetAppTwoTone />}\n >\n Add to Download List\n </Button>\n )}\n {showDownloadLoginModal && (\n <DownloadLoginModal\n showModal={showDownloadLoginModal}\n onHide={() => setShowDownloadLoginModal(false)}\n />\n )}\n </>\n }\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAM,IACJ;AAaF,SAAgB,EAAqB,GAAkC;CACrE,IAAM,EAAE,oBAAiB,CAAC,GAAG,eAAY,GACnC,EAAE,uBAAoB,EAAkB,GACxC,CAAC,GAAgB,KAAqB,EAAS,EAAK,GACpD,CAAC,GAAwB,KAA6B,EAAS,EAAK,GACpE,EAAE,aAAU,kBAAe,8BAA2B,EAAgB,GACtE,EAAE,MAAM,MAAW,EAAoB,GAAU,CAAa,GAC9D,EAAE,MAAM,MAAkB,EAAoB,GAC9C,CAAC,GAAc,KAAmB,EAAQ,CAAgB,GAE1D,EAAE,kCAA+B,WAAW,MAChD,EAAiC,GAE7B,EACJ,8CACA,wCACE,EAA6B,GAE3B,IACJ,EAAiC,SAAS,GAEtC,UAAgB;EAGpB,AADA,EAAgB,CAAC,CAAC,GACd,KACF,EAAQ;CAEZ,GAEM,IAAwB,EAC5B,GAFmB,EAAqB,GAAe,YAGvD,CACF;CAEA,OACE,kBAAC,GAAD;EACE,MAAM,EAAa,SAAS;EAC5B,kBAAkB,EAAa;EAC/B,wBAAwB,EAAgB,CAAC,CAAC;EAC1C,gBACE,kBAAA,GAAA,EAAA,UAAA;GACG,EAAe,KAAI,MAEhB,kBAAC,GAAD;IAEE,SAAQ;IACR,cAAc;KACZ,SAAS;KACM;KACf;KACA;KACA,SAAS,EAAuB;IAClC;IACA,SAAS;IACT,WAAW,EAAc;GAC1B,GAXM,EAAc,UAWpB,CAEJ;GAEA,KACC,kBAAC,GAAD;IACE,SAAQ;IACR,eAAe;KACb,AAAI,IACF,EAA0C,EAAI,IAE9C,EAAkB,EAAI;IAE1B;IACA,IAAI;cACL;GAEO,CAAA;GAET,KACC,kBAAC,GAAD;IACE,cAAc,EAAkB,EAAK;IACrC,SAAA;GACD,CAAA;GAEF,KACC,kBAAC,GAAD;IACE,SAAQ;IACR,SAAS;IACT,eACE,IACI,KAAK,EAA8B,IACnC,EAA0B,EAAI;IAEpC,WAAW,kBAAC,GAAD,CAAgB,CAAA;cAC5B;GAEO,CAAA;GAET,KACC,kBAAC,GAAD;IACE,WAAW;IACX,cAAc,EAA0B,EAAK;GAC9C,CAAA;EAEH,EAAA,CAAA;CAEL,CAAA;AAEL"}
@@ -2,12 +2,12 @@ import { isRowSelectionUIFloatingAtom as e } from "../../QueryWrapper/TableRowSe
2
2
  import { InlineBadge as t } from "../../styled/InlineBadge.js";
3
3
  import { Box as n, Button as r, Paper as i, Typography as a } from "@mui/material";
4
4
  import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
5
- import { useAtomValue as l } from "jotai";
6
- import u from "pluralize";
5
+ import l from "pluralize";
6
+ import { useAtomValue as u } from "jotai";
7
7
  //#region src/components/SynapseTable/RowSelection/RowSelectionUI.tsx
8
8
  var d = "SynapseFloatingRowSelectionBar", f = "var(--synapse-floating-row-selection-bar-height)";
9
9
  function p(p) {
10
- let { show: m = !0, selectedRowCount: h, onClearSelection: g, customControls: _ = /* @__PURE__ */ s(o, {}) } = p, v = l(e);
10
+ let { show: m = !0, selectedRowCount: h, onClearSelection: g, customControls: _ = /* @__PURE__ */ s(o, {}) } = p, v = u(e);
11
11
  return m ? /* @__PURE__ */ c(i, {
12
12
  className: v ? d : void 0,
13
13
  sx: {
@@ -46,7 +46,7 @@ function p(p) {
46
46
  max: Infinity
47
47
  }), /* @__PURE__ */ c(a, {
48
48
  variant: "body1",
49
- children: [u("Row", h), " Selected"]
49
+ children: [l("Row", h), " Selected"]
50
50
  })]
51
51
  }), _]
52
52
  })]
@@ -1,8 +1,8 @@
1
- import { HelpPopover as e } from "../HelpPopover/HelpPopover.js";
2
- import t from "../IconSvg/index.js";
3
- import { useQueryContext as n } from "../QueryContext/QueryContext.js";
1
+ import { useQueryVisualizationContext as e } from "../QueryVisualizationWrapper/QueryVisualizationContext.js";
2
+ import { HelpPopover as t } from "../HelpPopover/HelpPopover.js";
3
+ import n from "../IconSvg/index.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 { useEffect as i, useMemo as a, useRef as o, useState as s } from "react";
8
8
  import { Collapse as c, TextField as l } from "@mui/material";
@@ -10,7 +10,7 @@ import { jsx as u } from "react/jsx-runtime";
10
10
  //#region src/components/SynapseTable/SqlEditor.tsx
11
11
  var d = "The data within tables and views can be retrieved by using a SQL-like query language either from the web interface or from the programmatic clients.", f = "https://docs.synapse.org/synapse-docs/querying-tables-views-and-datasets#Using-Advanced-Search-Queries";
12
12
  function p({ helpMessage: p = d, helpUrl: m = f, resetErrorBoundary: h }) {
13
- let { executeQueryRequest: g, getCurrentQueryRequest: _ } = n(), { showSqlEditor: v } = r(), [y, b] = s(""), x = o(null), S = a(() => _(), [_]);
13
+ let { executeQueryRequest: g, getCurrentQueryRequest: _ } = r(), { showSqlEditor: v } = e(), [y, b] = s(""), x = o(null), S = a(() => _(), [_]);
14
14
  return i(() => {
15
15
  if (v) {
16
16
  let e = S.query.sql;
@@ -38,7 +38,7 @@ function p({ helpMessage: p = d, helpUrl: m = f, resetErrorBoundary: h }) {
38
38
  type: "text",
39
39
  slotProps: {
40
40
  input: {
41
- startAdornment: /* @__PURE__ */ u(t, {
41
+ startAdornment: /* @__PURE__ */ u(n, {
42
42
  icon: "search",
43
43
  wrap: !1,
44
44
  sx: {
@@ -46,7 +46,7 @@ function p({ helpMessage: p = d, helpUrl: m = f, resetErrorBoundary: h }) {
46
46
  color: "grey.600"
47
47
  }
48
48
  }),
49
- endAdornment: /* @__PURE__ */ u(e, {
49
+ endAdornment: /* @__PURE__ */ u(t, {
50
50
  markdownText: p,
51
51
  helpUrl: m,
52
52
  placement: "right"
@@ -1,11 +1,11 @@
1
- import { useSynapseContext as e } from "../../utils/context/SynapseContext.js";
1
+ import { useQueryVisualizationContext as e } from "../QueryVisualizationWrapper/QueryVisualizationContext.js";
2
+ import { useSynapseContext as t } from "../../utils/context/SynapseContext.js";
2
3
  import "../../utils/index.js";
3
- import { useGetEntity as t } from "../../synapse-queries/entity/useEntity.js";
4
+ import { useGetEntity as n } from "../../synapse-queries/entity/useEntity.js";
4
5
  import "../../synapse-queries/index.js";
5
- import { isEntityViewOrDatasetOrCollection as n, isFileViewOrDataset as ee, isSortableColumn as r } from "./SynapseTableUtils.js";
6
- import { useQueryContext as i } from "../QueryContext/QueryContext.js";
6
+ import { isEntityViewOrDatasetOrCollection as ee, isFileViewOrDataset as r, isSortableColumn as i } from "./SynapseTableUtils.js";
7
+ import { useQueryContext as a } from "../QueryContext/QueryContext.js";
7
8
  import "../QueryContext/index.js";
8
- import { useQueryVisualizationContext as a } from "../QueryVisualizationWrapper/QueryVisualizationContext.js";
9
9
  import "../QueryVisualizationWrapper/index.js";
10
10
  import { isRowSelectionVisibleAtom as o } from "../QueryWrapper/TableRowSelectionState.js";
11
11
  import { ModalDownload as s } from "../ModalDownload/ModalDownload.js";
@@ -41,10 +41,10 @@ function C(e, t) {
41
41
  }
42
42
  var se = S();
43
43
  function w(S) {
44
- let { showDownloadColumn: w, hideDownload: E } = S, { rowSet: D, isLoadingNewPage: O, customColumns: k = oe, showAccessColumn: A, showExternalAccessIcon: j, showAccessColumnHeader: M, showDirectDownloadColumn: N = w, hideAddToDownloadListColumn: P = E, columnLinks: F } = S, { entityId: I, versionNumber: L, getCurrentQueryRequest: R, fileIdColumnName: z, fileVersionColumnName: B } = i(), V = h(() => R(), [R]), H = D.headers, { data: U } = t(I, L), { columnsToShowInTable: W, NoContentPlaceholder: G } = a(), K = h(() => ({
44
+ let { showDownloadColumn: w, hideDownload: E } = S, { rowSet: D, isLoadingNewPage: O, customColumns: k = oe, showAccessColumn: A, showExternalAccessIcon: j, showAccessColumnHeader: M, showDirectDownloadColumn: N = w, hideAddToDownloadListColumn: P = E, columnLinks: F } = S, { entityId: I, versionNumber: L, getCurrentQueryRequest: R, fileIdColumnName: z, fileVersionColumnName: B } = a(), V = h(() => R(), [R]), H = D.headers, { data: U } = n(I, L), { columnsToShowInTable: W, NoContentPlaceholder: G } = e(), K = h(() => ({
45
45
  columnLinks: F,
46
46
  showExternalAccessIcon: j
47
- }), [F, j]), { isAuthenticated: ce } = e(), [le, ue] = g(!1), { sort: de, setSort: fe } = m(), q = x(o), J = !!(A && U && (n(U) && T(D) || z)), Y = U && ce && (ee(U) && T(D) || z), X = !!(Y && N), Z = !!(Y && !P && !q), pe = z ? D.headers.findIndex((e) => e.name == z) : void 0, me = B ? D.headers.findIndex((e) => e.name == B) : void 0, he = h(() => [
47
+ }), [F, j]), { isAuthenticated: ce } = t(), [le, ue] = g(!1), { sort: de, setSort: fe } = m(), q = x(o), J = !!(A && U && (ee(U) && T(D) || z)), Y = U && ce && (r(U) && T(D) || z), X = !!(Y && N), Z = !!(Y && !P && !q), pe = z ? D.headers.findIndex((e) => e.name == z) : void 0, me = B ? D.headers.findIndex((e) => e.name == B) : void 0, he = h(() => [
48
48
  ...k,
49
49
  f,
50
50
  u,
@@ -55,7 +55,7 @@ function w(S) {
55
55
  },
56
56
  ...H.map((e, t) => se.accessor((e) => e.values[t], {
57
57
  id: e.name,
58
- enableSorting: r(e.columnType),
58
+ enableSorting: i(e.columnType),
59
59
  enableResizing: !0,
60
60
  minSize: C(e.name, e.columnType),
61
61
  header: re,
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseTable.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTable.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport {\n ColumnTypeEnum,\n Row,\n RowSet,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport {\n Cell,\n ColumnDef,\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table'\nimport { useAtomValue } from 'jotai'\nimport { useMemo, useState } from 'react'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { SynapseTableContext } from './SynapseTableContext'\nimport {\n accessColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n rowSelectionColumn,\n TableDataCell,\n TableDataColumnHeader,\n} from './SynapseTableRenderers'\nimport {\n isEntityViewOrDatasetOrCollection,\n isFileViewOrDataset,\n isSortableColumn,\n} from './SynapseTableUtils'\nimport { usePrefetchResourcesInTable } from './usePrefetchTableData'\nimport { useTableSort } from './useTableSort'\n\nconst DEFAULT_CUSTOM_COLUMNS: ColumnDef<Row, any>[] = []\n\n/**\n * Returns the minimum column width (in px) for a Synapse table column\n * based on its type and name.\n */\nexport function getColumnMinSize(\n columnName: string,\n columnType: ColumnTypeEnum,\n): number {\n const nameLower = columnName.toLowerCase()\n if (nameLower.includes('name') || nameLower.includes('description')) {\n return 250\n }\n switch (columnType) {\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.EVALUATIONID:\n case ColumnTypeEnum.SUBMISSIONID:\n return 180\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n return 120\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n return 100\n default:\n return 60\n }\n}\n\nexport type SynapseTableConfiguration = Pick<\n SynapseTableProps,\n | 'showAccessColumn'\n | 'showExternalAccessIcon'\n | 'showAccessColumnHeader'\n | 'showDownloadColumn'\n | 'hideDownload'\n | 'showDirectDownloadColumn'\n | 'hideAddToDownloadListColumn'\n | 'columnLinks'\n | 'customColumns'\n>\n\nexport type SynapseTableProps = {\n /** The row data shown in the table. */\n rowSet: RowSet\n /** Whether a new page of data is being loaded */\n isLoadingNewPage: boolean\n /** Custom columns to render in the table */\n customColumns?: ColumnDef<Row, any>[]\n /** If true and entity is a view or dataset, renders a column that represents if the caller has permission to download the entity represented by the row */\n showAccessColumn?: boolean\n /**\n * If true, the component will show enhanced UI for the case where\n * - the entity is a FileEntity, AND\n * - the caller has permission to fetch the dataFileHandle, AND\n * - the dataFileHandle is an instance of ExternalFileHandleInterface (i.e. the file is not controlled by Synapse)\n * Note that this requires an additional API call that cannot be batched, so it should be avoided in bulk contexts if possible.\n * @default false\n */\n showExternalAccessIcon?: boolean\n showAccessColumnHeader?: boolean\n /** @deprecated use showDirectDownloadColumn */\n showDownloadColumn?: boolean\n /** @deprecated use hideAddToDownloadListColumn */\n hideDownload?: boolean\n /** If true and entity is a file view or dataset, renders a column that allows the logged-in user to directly download the file, if they have permission */\n showDirectDownloadColumn?: boolean\n /** If true, the add to download list column will be hidden */\n hideAddToDownloadListColumn?: boolean\n /** Configuration to override cell renderers with e.g. a link to a portals detail page */\n columnLinks?: LabelLinkConfig\n}\n\nconst columnHelper = createColumnHelper<Row>()\n\nexport function SynapseTable(props: SynapseTableProps) {\n const { showDownloadColumn, hideDownload } = props\n const {\n rowSet,\n isLoadingNewPage,\n customColumns = DEFAULT_CUSTOM_COLUMNS,\n showAccessColumn,\n showExternalAccessIcon,\n showAccessColumnHeader,\n showDirectDownloadColumn = showDownloadColumn,\n hideAddToDownloadListColumn = hideDownload,\n columnLinks,\n } = props\n const {\n entityId,\n versionNumber,\n getCurrentQueryRequest,\n fileIdColumnName,\n fileVersionColumnName,\n } = useQueryContext()\n const queryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n const selectColumns = rowSet.headers\n\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n\n const { columnsToShowInTable, NoContentPlaceholder } =\n useQueryVisualizationContext()\n const synapseTableContext = useMemo(\n () => ({\n columnLinks,\n showExternalAccessIcon,\n }),\n [columnLinks, showExternalAccessIcon],\n )\n const { isAuthenticated } = useSynapseContext()\n\n const [isExportTableDownloadOpen, setIsExportTableDownloadOpen] =\n useState(false)\n\n const { sort, setSort } = useTableSort()\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const isShowingAccessColumn: boolean = Boolean(\n showAccessColumn &&\n entity &&\n ((isEntityViewOrDatasetOrCollection(entity) && allRowsHaveId(rowSet)) ||\n fileIdColumnName),\n )\n const rowsAreDownloadable =\n entity &&\n isAuthenticated &&\n ((isFileViewOrDataset(entity) && allRowsHaveId(rowSet)) || fileIdColumnName)\n\n const isShowingDirectDownloadColumn = Boolean(\n rowsAreDownloadable && showDirectDownloadColumn,\n )\n\n const isShowingAddToV2DownloadListColumn: boolean = Boolean(\n rowsAreDownloadable &&\n !hideAddToDownloadListColumn &&\n !isRowSelectionVisible,\n )\n const rowEntityIDColumnIndex = fileIdColumnName\n ? rowSet.headers.findIndex(col => col.name == fileIdColumnName)\n : undefined\n const rowEntityVersionColumnIndex = fileVersionColumnName\n ? rowSet.headers.findIndex(col => col.name == fileVersionColumnName)\n : undefined\n\n const columns = useMemo(\n () => [\n ...customColumns,\n rowSelectionColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n {\n ...accessColumn,\n header: showAccessColumn && showAccessColumnHeader ? 'Access' : '',\n },\n ...(selectColumns.map((selectColumn, index) => {\n return columnHelper.accessor(row => row.values[index], {\n id: selectColumn.name,\n enableSorting: isSortableColumn(selectColumn.columnType),\n enableResizing: true,\n minSize: getColumnMinSize(\n selectColumn.name,\n selectColumn.columnType as ColumnTypeEnum,\n ),\n header: TableDataColumnHeader,\n cell: TableDataCell,\n })\n }) ?? []),\n ],\n [customColumns, selectColumns, showAccessColumn, showAccessColumnHeader],\n )\n\n const prependColumnVisibility: VisibilityState = useMemo(\n () => ({\n [rowSelectionColumn.id as string]: isRowSelectionVisible,\n [addToDownloadListColumn.id as string]:\n isShowingAddToV2DownloadListColumn,\n [directDownloadColumn.id as string]: isShowingDirectDownloadColumn,\n [accessColumn.id as string]: isShowingAccessColumn,\n }),\n [\n isRowSelectionVisible,\n isShowingAccessColumn,\n isShowingAddToV2DownloadListColumn,\n isShowingDirectDownloadColumn,\n ],\n )\n\n // Transform our `columnsToShowInTable` to @tanstack/react-table's `VisibilityState`\n const columnVisibility: VisibilityState = useMemo(\n () =>\n selectColumns.reduce((prev: VisibilityState, curr) => {\n return {\n ...prev,\n [curr.name]: columnsToShowInTable.includes(curr.name),\n }\n }, prependColumnVisibility),\n [columnsToShowInTable, selectColumns, prependColumnVisibility],\n )\n\n const { dataHasBeenPrefetched } = usePrefetchResourcesInTable(rowSet)\n const renderTableDataPlaceholder = isLoadingNewPage || !dataHasBeenPrefetched\n\n const table = useReactTable({\n data: rowSet.rows,\n columns,\n defaultColumn: { minSize: 60 },\n getCoreRowModel: getCoreRowModel(),\n manualSorting: true,\n manualFiltering: true,\n onSortingChange: setSort,\n enableMultiSort: true,\n columnResizeMode: 'onChange',\n state: {\n sorting: sort,\n columnVisibility: columnVisibility,\n },\n meta: {\n rowSet,\n // make the rowEntityIDColumnIndex available to all cell renderers\n rowEntityIDColumnIndex,\n rowEntityVersionColumnIndex,\n renderPlaceholderData: renderTableDataPlaceholder,\n getWrapInExpandableTd: (cell: Cell<Row, unknown>) => {\n const selectColumn = selectColumns.find(\n cm => cm.name === cell.column.id,\n )\n return Boolean(\n selectColumn &&\n /* JSON handles its own overflow*/\n selectColumn.columnType !== ColumnTypeEnum.JSON,\n )\n },\n },\n })\n\n /**\n * Display the view\n */\n if (!rowSet) {\n return <></>\n }\n const hasResults = (rowSet.rows?.length ?? 0) > 0\n // Show the No Results UI if the current page has no rows, and this is the first page of data (offset === 0 or null/undefined).\n if (\n !hasResults &&\n (queryRequest.query.offset === 0 || queryRequest.query.offset == null)\n ) {\n return <NoContentPlaceholder />\n }\n\n return (\n <SynapseTableContext.Provider value={synapseTableContext}>\n <div>\n {isExportTableDownloadOpen && (\n <ModalDownload\n onClose={() => {\n setIsExportTableDownloadOpen(false)\n }}\n queryBundleRequest={queryRequest}\n />\n )}\n <StyledTanStackTable\n styledTableContainerProps={{\n className: 'SynapseTable',\n ['data-testid']: 'SynapseTable',\n density: 'default',\n }}\n table={table}\n fullWidth={false}\n autoColumnSizing={true}\n showTopScrollbar={true}\n />\n </div>\n </SynapseTableContext.Provider>\n )\n}\n\n/**\n * If this is a view/dataset and rows have an ID, then rows represent individual objects in Synapse.\n * Presence of row IDs also indicates that the query is also necessarily not summary data, e.g. the query does\n * not include an operation like GROUP BY, DISTINCT, etc., that would cause rows to not map 1:1 to Synapse Entities\n */\nfunction allRowsHaveId(rowSet: RowSet): boolean {\n return Boolean(rowSet.rows?.every(row => !!row.rowId))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SynapseTable.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTable.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport {\n ColumnTypeEnum,\n Row,\n RowSet,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport {\n Cell,\n ColumnDef,\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table'\nimport { useAtomValue } from 'jotai'\nimport { useMemo, useState } from 'react'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { SynapseTableContext } from './SynapseTableContext'\nimport {\n accessColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n rowSelectionColumn,\n TableDataCell,\n TableDataColumnHeader,\n} from './SynapseTableRenderers'\nimport {\n isEntityViewOrDatasetOrCollection,\n isFileViewOrDataset,\n isSortableColumn,\n} from './SynapseTableUtils'\nimport { usePrefetchResourcesInTable } from './usePrefetchTableData'\nimport { useTableSort } from './useTableSort'\n\nconst DEFAULT_CUSTOM_COLUMNS: ColumnDef<Row, any>[] = []\n\n/**\n * Returns the minimum column width (in px) for a Synapse table column\n * based on its type and name.\n */\nexport function getColumnMinSize(\n columnName: string,\n columnType: ColumnTypeEnum,\n): number {\n const nameLower = columnName.toLowerCase()\n if (nameLower.includes('name') || nameLower.includes('description')) {\n return 250\n }\n switch (columnType) {\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.EVALUATIONID:\n case ColumnTypeEnum.SUBMISSIONID:\n return 180\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n return 120\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n return 100\n default:\n return 60\n }\n}\n\nexport type SynapseTableConfiguration = Pick<\n SynapseTableProps,\n | 'showAccessColumn'\n | 'showExternalAccessIcon'\n | 'showAccessColumnHeader'\n | 'showDownloadColumn'\n | 'hideDownload'\n | 'showDirectDownloadColumn'\n | 'hideAddToDownloadListColumn'\n | 'columnLinks'\n | 'customColumns'\n>\n\nexport type SynapseTableProps = {\n /** The row data shown in the table. */\n rowSet: RowSet\n /** Whether a new page of data is being loaded */\n isLoadingNewPage: boolean\n /** Custom columns to render in the table */\n customColumns?: ColumnDef<Row, any>[]\n /** If true and entity is a view or dataset, renders a column that represents if the caller has permission to download the entity represented by the row */\n showAccessColumn?: boolean\n /**\n * If true, the component will show enhanced UI for the case where\n * - the entity is a FileEntity, AND\n * - the caller has permission to fetch the dataFileHandle, AND\n * - the dataFileHandle is an instance of ExternalFileHandleInterface (i.e. the file is not controlled by Synapse)\n * Note that this requires an additional API call that cannot be batched, so it should be avoided in bulk contexts if possible.\n * @default false\n */\n showExternalAccessIcon?: boolean\n showAccessColumnHeader?: boolean\n /** @deprecated use showDirectDownloadColumn */\n showDownloadColumn?: boolean\n /** @deprecated use hideAddToDownloadListColumn */\n hideDownload?: boolean\n /** If true and entity is a file view or dataset, renders a column that allows the logged-in user to directly download the file, if they have permission */\n showDirectDownloadColumn?: boolean\n /** If true, the add to download list column will be hidden */\n hideAddToDownloadListColumn?: boolean\n /** Configuration to override cell renderers with e.g. a link to a portals detail page */\n columnLinks?: LabelLinkConfig\n}\n\nconst columnHelper = createColumnHelper<Row>()\n\nexport function SynapseTable(props: SynapseTableProps) {\n const { showDownloadColumn, hideDownload } = props\n const {\n rowSet,\n isLoadingNewPage,\n customColumns = DEFAULT_CUSTOM_COLUMNS,\n showAccessColumn,\n showExternalAccessIcon,\n showAccessColumnHeader,\n showDirectDownloadColumn = showDownloadColumn,\n hideAddToDownloadListColumn = hideDownload,\n columnLinks,\n } = props\n const {\n entityId,\n versionNumber,\n getCurrentQueryRequest,\n fileIdColumnName,\n fileVersionColumnName,\n } = useQueryContext()\n const queryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n const selectColumns = rowSet.headers\n\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n\n const { columnsToShowInTable, NoContentPlaceholder } =\n useQueryVisualizationContext()\n const synapseTableContext = useMemo(\n () => ({\n columnLinks,\n showExternalAccessIcon,\n }),\n [columnLinks, showExternalAccessIcon],\n )\n const { isAuthenticated } = useSynapseContext()\n\n const [isExportTableDownloadOpen, setIsExportTableDownloadOpen] =\n useState(false)\n\n const { sort, setSort } = useTableSort()\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const isShowingAccessColumn: boolean = Boolean(\n showAccessColumn &&\n entity &&\n ((isEntityViewOrDatasetOrCollection(entity) && allRowsHaveId(rowSet)) ||\n fileIdColumnName),\n )\n const rowsAreDownloadable =\n entity &&\n isAuthenticated &&\n ((isFileViewOrDataset(entity) && allRowsHaveId(rowSet)) || fileIdColumnName)\n\n const isShowingDirectDownloadColumn = Boolean(\n rowsAreDownloadable && showDirectDownloadColumn,\n )\n\n const isShowingAddToV2DownloadListColumn: boolean = Boolean(\n rowsAreDownloadable &&\n !hideAddToDownloadListColumn &&\n !isRowSelectionVisible,\n )\n const rowEntityIDColumnIndex = fileIdColumnName\n ? rowSet.headers.findIndex(col => col.name == fileIdColumnName)\n : undefined\n const rowEntityVersionColumnIndex = fileVersionColumnName\n ? rowSet.headers.findIndex(col => col.name == fileVersionColumnName)\n : undefined\n\n const columns = useMemo(\n () => [\n ...customColumns,\n rowSelectionColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n {\n ...accessColumn,\n header: showAccessColumn && showAccessColumnHeader ? 'Access' : '',\n },\n ...(selectColumns.map((selectColumn, index) => {\n return columnHelper.accessor(row => row.values[index], {\n id: selectColumn.name,\n enableSorting: isSortableColumn(selectColumn.columnType),\n enableResizing: true,\n minSize: getColumnMinSize(\n selectColumn.name,\n selectColumn.columnType as ColumnTypeEnum,\n ),\n header: TableDataColumnHeader,\n cell: TableDataCell,\n })\n }) ?? []),\n ],\n [customColumns, selectColumns, showAccessColumn, showAccessColumnHeader],\n )\n\n const prependColumnVisibility: VisibilityState = useMemo(\n () => ({\n [rowSelectionColumn.id as string]: isRowSelectionVisible,\n [addToDownloadListColumn.id as string]:\n isShowingAddToV2DownloadListColumn,\n [directDownloadColumn.id as string]: isShowingDirectDownloadColumn,\n [accessColumn.id as string]: isShowingAccessColumn,\n }),\n [\n isRowSelectionVisible,\n isShowingAccessColumn,\n isShowingAddToV2DownloadListColumn,\n isShowingDirectDownloadColumn,\n ],\n )\n\n // Transform our `columnsToShowInTable` to @tanstack/react-table's `VisibilityState`\n const columnVisibility: VisibilityState = useMemo(\n () =>\n selectColumns.reduce((prev: VisibilityState, curr) => {\n return {\n ...prev,\n [curr.name]: columnsToShowInTable.includes(curr.name),\n }\n }, prependColumnVisibility),\n [columnsToShowInTable, selectColumns, prependColumnVisibility],\n )\n\n const { dataHasBeenPrefetched } = usePrefetchResourcesInTable(rowSet)\n const renderTableDataPlaceholder = isLoadingNewPage || !dataHasBeenPrefetched\n\n const table = useReactTable({\n data: rowSet.rows,\n columns,\n defaultColumn: { minSize: 60 },\n getCoreRowModel: getCoreRowModel(),\n manualSorting: true,\n manualFiltering: true,\n onSortingChange: setSort,\n enableMultiSort: true,\n columnResizeMode: 'onChange',\n state: {\n sorting: sort,\n columnVisibility: columnVisibility,\n },\n meta: {\n rowSet,\n // make the rowEntityIDColumnIndex available to all cell renderers\n rowEntityIDColumnIndex,\n rowEntityVersionColumnIndex,\n renderPlaceholderData: renderTableDataPlaceholder,\n getWrapInExpandableTd: (cell: Cell<Row, unknown>) => {\n const selectColumn = selectColumns.find(\n cm => cm.name === cell.column.id,\n )\n return Boolean(\n selectColumn &&\n /* JSON handles its own overflow*/\n selectColumn.columnType !== ColumnTypeEnum.JSON,\n )\n },\n },\n })\n\n /**\n * Display the view\n */\n if (!rowSet) {\n return <></>\n }\n const hasResults = (rowSet.rows?.length ?? 0) > 0\n // Show the No Results UI if the current page has no rows, and this is the first page of data (offset === 0 or null/undefined).\n if (\n !hasResults &&\n (queryRequest.query.offset === 0 || queryRequest.query.offset == null)\n ) {\n return <NoContentPlaceholder />\n }\n\n return (\n <SynapseTableContext.Provider value={synapseTableContext}>\n <div>\n {isExportTableDownloadOpen && (\n <ModalDownload\n onClose={() => {\n setIsExportTableDownloadOpen(false)\n }}\n queryBundleRequest={queryRequest}\n />\n )}\n <StyledTanStackTable\n styledTableContainerProps={{\n className: 'SynapseTable',\n ['data-testid']: 'SynapseTable',\n density: 'default',\n }}\n table={table}\n fullWidth={false}\n autoColumnSizing={true}\n showTopScrollbar={true}\n />\n </div>\n </SynapseTableContext.Provider>\n )\n}\n\n/**\n * If this is a view/dataset and rows have an ID, then rows represent individual objects in Synapse.\n * Presence of row IDs also indicates that the query is also necessarily not summary data, e.g. the query does\n * not include an operation like GROUP BY, DISTINCT, etc., that would cause rows to not map 1:1 to Synapse Entities\n */\nfunction allRowsHaveId(rowSet: RowSet): boolean {\n return Boolean(rowSet.rows?.every(row => !!row.rowId))\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseTableRenderers.d.ts","sourceRoot":"","sources":["../../../src/components/SynapseTable/SynapseTableRenderers.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,GAAG,EACJ,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,WAAW,EAEX,aAAa,EACd,MAAM,uBAAuB,CAAA;AA2D9B,eAAO,MAAM,kBAAkB,gEAQ7B,CAAA;AAuBF,eAAO,MAAM,uBAAuB,gEAQlC,CAAA;AAiBF,eAAO,MAAM,oBAAoB,gEAQ/B,CAAA;AAyEF,eAAO,MAAM,YAAY,gEAQvB,CAAA;AAEF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,2CAgEzC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,2CAyCnE"}
1
+ {"version":3,"file":"SynapseTableRenderers.d.ts","sourceRoot":"","sources":["../../../src/components/SynapseTable/SynapseTableRenderers.tsx"],"names":[],"mappings":"AAGA,OAAO,EAGL,GAAG,EACJ,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,WAAW,EAEX,aAAa,EACd,MAAM,uBAAuB,CAAA;AA2D9B,eAAO,MAAM,kBAAkB,gEAQ7B,CAAA;AAuBF,eAAO,MAAM,uBAAuB,gEAQlC,CAAA;AAiBF,eAAO,MAAM,oBAAoB,gEAQ/B,CAAA;AAyEF,eAAO,MAAM,YAAY,gEAQvB,CAAA;AAEF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,2CAkEzC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,2CAyCnE"}