synapse-react-client 4.0.3 → 4.0.4

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 (305) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +1 -1
  3. package/dist/components/AccessRequirementList/AccessRequirementList.js +4 -4
  4. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
  5. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +8 -7
  6. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  7. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +4 -4
  8. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js +11 -11
  9. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js +1 -1
  10. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js +9 -9
  11. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js +5 -5
  12. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.d.ts.map +1 -1
  13. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +33 -32
  14. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  15. package/dist/components/AclEditor/AclEditor.js +8 -8
  16. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  17. package/dist/components/AclEditor/AclEditor.test-utils.js +34 -34
  18. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  19. package/dist/components/Authentication/AuthenticationMethodSelection.js +1 -1
  20. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  21. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +6 -5
  22. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  23. package/dist/components/BasePortalCard/BasePortalCard.css +1 -1
  24. package/dist/components/BasePortalCard/BasePortalCard.module.scss +6 -0
  25. package/dist/components/BasePortalCard/BasePortalCard.module.scss.js +1 -1
  26. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.css +1 -1
  27. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js +7 -7
  28. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss +13 -5
  29. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss.js +5 -5
  30. package/dist/components/CardContainer/CardLink.d.ts +12 -0
  31. package/dist/components/CardContainer/CardLink.d.ts.map +1 -1
  32. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +12 -12
  33. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.d.ts.map +1 -1
  34. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js +7 -7
  35. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  36. package/dist/components/CitationPopover/CitationPopoverContent.d.ts.map +1 -1
  37. package/dist/components/CitationPopover/CitationPopoverContent.js +13 -12
  38. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  39. package/dist/components/CookiesNotification/CookiesNotification.js +1 -1
  40. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +3 -4
  41. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  42. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +2 -2
  43. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  44. package/dist/components/DataGrid/SynapseGrid.js +35 -35
  45. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  46. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +2 -2
  47. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.d.ts.map +1 -1
  48. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js +9 -7
  49. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  50. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js +1 -1
  51. package/dist/components/DownloadCart/RequestDownloadCard.js +1 -1
  52. package/dist/components/Ecosystem/EcosystemSkeleton.js +2 -2
  53. package/dist/components/Ecosystem/TableQueryEcosystem.js +1 -1
  54. package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
  55. package/dist/components/EntityAclEditor/OpenData.js +1 -1
  56. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
  57. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +113 -127
  58. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  59. package/dist/components/EntityCitation/EntityCitation.js +1 -1
  60. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +1 -1
  61. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js +1 -1
  62. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js +1 -1
  63. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
  64. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js +1 -1
  65. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js +1 -1
  66. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js +1 -1
  67. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js +1 -1
  68. package/dist/components/EntityFinder/tree/EntityTree.js +1 -1
  69. package/dist/components/EntityHeaderTable/EntityHeaderTable.d.ts.map +1 -1
  70. package/dist/components/EntityHeaderTable/EntityHeaderTable.js +39 -39
  71. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  72. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts +8 -0
  73. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts.map +1 -0
  74. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js +46 -0
  75. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -0
  76. package/dist/components/Evaluation/EvaluationCard.d.ts.map +1 -1
  77. package/dist/components/Evaluation/EvaluationCard.js +35 -41
  78. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  79. package/dist/components/Evaluation/EvaluationEditor.d.ts.map +1 -1
  80. package/dist/components/Evaluation/EvaluationEditor.js +95 -90
  81. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  82. package/dist/components/Evaluation/EvaluationRoundEditor.d.ts.map +1 -1
  83. package/dist/components/Evaluation/EvaluationRoundEditor.js +133 -124
  84. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  85. package/dist/components/FilePreview/EntityPreview.js +1 -1
  86. package/dist/components/Forum/DiscussionReply.js +10 -10
  87. package/dist/components/Forum/DiscussionThread.js +21 -21
  88. package/dist/components/GenericCard/CardUtils.d.ts.map +1 -1
  89. package/dist/components/GenericCard/CardUtils.js +36 -36
  90. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  91. package/dist/components/GenericCard/CollapsibleDescription.js +25 -25
  92. package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
  93. package/dist/components/GenericCard/SynapseCardLabel.js +72 -67
  94. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  95. package/dist/components/GenericCard/TableRowGenericCard.d.ts +4 -1
  96. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  97. package/dist/components/GenericCard/TableRowGenericCard.js +98 -96
  98. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  99. package/dist/components/GoalsV2/GoalsV2.Desktop.d.ts.map +1 -1
  100. package/dist/components/GoalsV2/GoalsV2.Desktop.js +14 -15
  101. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  102. package/dist/components/GoogleAnalytics/GoogleAnalytics.js +1 -1
  103. package/dist/components/HasAccess/HasAccessV2.js +1 -1
  104. package/dist/components/HasAccess/useHasAccess.js +1 -1
  105. package/dist/components/IDUReport/IDUReportSubmissionInfo.js +23 -23
  106. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  107. package/dist/components/JSONArrayEditor/useParseCsv.d.ts +1 -1
  108. package/dist/components/JSONArrayEditor/useParseCsv.d.ts.map +1 -1
  109. package/dist/components/JSONArrayEditor/useParseCsv.js +9 -9
  110. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  111. package/dist/components/Markdown/MarkdownCollapse.js +7 -7
  112. package/dist/components/Markdown/MarkdownEditor.js +11 -11
  113. package/dist/components/Markdown/MarkdownGithub.js +1 -1
  114. package/dist/components/Markdown/MarkdownPopover.js +6 -6
  115. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  116. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  117. package/dist/components/Markdown/MarkdownSynapse.js +139 -135
  118. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  119. package/dist/components/Markdown/MarkdownUtils.d.ts +8 -0
  120. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  121. package/dist/components/Markdown/MarkdownUtils.js +139 -65
  122. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  123. package/dist/components/Markdown/UserMentionModal.js +18 -18
  124. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  125. package/dist/components/Markdown/widget/MarkdownButton.js +3 -3
  126. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  127. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.d.ts.map +1 -1
  128. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +9 -8
  129. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  130. package/dist/components/Plot/SynapsePlot.css +1 -0
  131. package/dist/components/Plot/SynapsePlot.d.ts +2 -0
  132. package/dist/components/Plot/SynapsePlot.d.ts.map +1 -1
  133. package/dist/components/Plot/SynapsePlot.js +43 -39
  134. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  135. package/dist/components/Plot/SynapsePlot.scss +8 -0
  136. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +1 -1
  137. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  138. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +114 -113
  139. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  140. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts +1 -1
  141. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts.map +1 -1
  142. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  143. package/dist/components/Resources/Resources.Desktop.js +7 -7
  144. package/dist/components/Resources/Resources.Mobile.js +6 -6
  145. package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js +3 -3
  146. package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js +10 -10
  147. package/dist/components/SynapseChat/SynapseChatInteraction.js +5 -5
  148. package/dist/components/SynapseForm/WarningDialog.d.ts +1 -0
  149. package/dist/components/SynapseForm/WarningDialog.d.ts.map +1 -1
  150. package/dist/components/SynapseForm/WarningDialog.js +18 -16
  151. package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
  152. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +1 -1
  153. package/dist/components/SynapseSearchPageResults/HasAccessChip.js +1 -1
  154. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.d.ts.map +1 -1
  155. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js +12 -13
  156. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
  157. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +5 -5
  158. package/dist/components/SynapseTable/ExpandableTableDataCell.d.ts.map +1 -1
  159. package/dist/components/SynapseTable/ExpandableTableDataCell.js +3 -1
  160. package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
  161. package/dist/components/SynapseTable/SynapseTable.js +4 -4
  162. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.d.ts.map +1 -1
  163. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js +122 -122
  164. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
  165. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +5 -5
  166. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
  167. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js +1 -1
  168. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +1 -1
  169. package/dist/components/TableFeedCards/TableFeedCards.js +9 -9
  170. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js +10 -10
  171. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js +9 -9
  172. package/dist/components/UserSearchBox/UserSearchBox.d.ts +23 -0
  173. package/dist/components/UserSearchBox/UserSearchBox.d.ts.map +1 -0
  174. package/dist/components/UserSearchBox/UserSearchBox.js +146 -0
  175. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -0
  176. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js +13 -13
  177. package/dist/components/WizardChoiceButton/WizardChoiceButton.js +3 -3
  178. package/dist/components/dataaccess/AccessHistoryDashboard.js +5 -5
  179. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  180. package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
  181. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  182. package/dist/components/dataaccess/AccessSubmissionDashboard.js +1 -1
  183. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  184. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +5 -5
  185. package/dist/components/dataaccess/UseAccessRequirementTable.js +3 -3
  186. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  187. package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
  188. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +2 -2
  189. package/dist/components/entity/metadata/EntityModal.js +1 -1
  190. package/dist/components/entity/metadata/MetadataTable.js +1 -1
  191. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +1 -1
  192. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js +1 -1
  193. package/dist/components/entity/page/title_bar/TitleBarProperties.js +1 -1
  194. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
  195. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +27 -26
  196. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  197. package/dist/components/index.js +109 -107
  198. package/dist/components/index.js.map +1 -1
  199. package/dist/components/layout/InfiniteTableLayout.js +1 -1
  200. package/dist/components/styled/HoverPopover.css +1 -0
  201. package/dist/components/styled/HoverPopover.d.ts +28 -0
  202. package/dist/components/styled/HoverPopover.d.ts.map +1 -0
  203. package/dist/components/styled/HoverPopover.js +103 -0
  204. package/dist/components/styled/HoverPopover.js.map +1 -0
  205. package/dist/components/styled/HoverPopover.module.scss +9 -0
  206. package/dist/components/styled/HoverPopover.module.scss.js +10 -0
  207. package/dist/components/styled/HoverPopover.module.scss.js.map +1 -0
  208. package/dist/components/styled/index.d.ts +2 -0
  209. package/dist/components/styled/index.d.ts.map +1 -1
  210. package/dist/components/styled/index.js +11 -9
  211. package/dist/components/styled/index.js.map +1 -1
  212. package/dist/components/table/CsvPreview/CsvPreview.js +2 -2
  213. package/dist/components/table/CsvPreview/CsvPreviewDialog.js +2 -2
  214. package/dist/components/widgets/Range.js +1 -1
  215. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
  216. package/dist/components/widgets/facet-nav/FacetNavPanel.js +35 -32
  217. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  218. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +1 -1
  219. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
  220. package/dist/components/widgets/facet-nav/PlotsContainer.js +69 -68
  221. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  222. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
  223. package/dist/components/widgets/facet-nav/useFacetPlots.js +24 -21
  224. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  225. package/dist/components/widgets/query-filter/FacetFilterControls.js +3 -3
  226. package/dist/features/curator/GridPage/GridPage.js +2 -2
  227. package/dist/features/curator/GridPage/components/GridPageTitle.js +2 -2
  228. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  229. package/dist/index.js +157 -155
  230. package/dist/index.js.map +1 -1
  231. package/dist/mocks/msw/handlers/accessRequirementHandlers.js +5 -5
  232. package/dist/mocks/msw/handlers/projectStorageHandlers.js +5 -5
  233. package/dist/mocks/msw/handlers/wikiHandlers.js +1 -1
  234. package/dist/mocks/msw/handlers.d.ts.map +1 -1
  235. package/dist/mocks/msw/handlers.js +67 -59
  236. package/dist/mocks/msw/handlers.js.map +1 -1
  237. package/dist/style/base/_core.scss +0 -1
  238. package/dist/style/components/_all.scss +0 -1
  239. package/dist/style/components/_entity-badge.scss +0 -2
  240. package/dist/style/components/_expandable_table_data.scss +3 -3
  241. package/dist/style/components/facet_nav/_facet-nav-panel.scss +3 -0
  242. package/dist/style/components/facet_nav/_facet-nav.scss +4 -0
  243. package/dist/style/main.css +1 -1
  244. package/dist/synapse-client/SynapseClient.js +118 -118
  245. package/dist/synapse-client/SynapseClient.js.map +1 -1
  246. package/dist/synapse-queries/auth/useOIDC.js +1 -1
  247. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js +1 -1
  248. package/dist/synapse-queries/entity/index.js +6 -6
  249. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
  250. package/dist/synapse-queries/index.js +1 -1
  251. package/dist/synapse-queries/user/usePersonalAccessToken.js +1 -1
  252. package/dist/testutils/vitest.setup.js +10 -11
  253. package/dist/testutils/vitest.setup.js.map +1 -1
  254. package/dist/theme/DefaultTheme.js +1 -1
  255. package/dist/theme/ThemeProvider.d.ts +2 -1
  256. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  257. package/dist/theme/ThemeProvider.js +11 -10
  258. package/dist/theme/ThemeProvider.js.map +1 -1
  259. package/dist/theme/index.js +1 -1
  260. package/dist/theme/mergeTheme.js +1 -1
  261. package/dist/tsconfig.build.tsbuildinfo +1 -1
  262. package/dist/utils/AppUtils/AppUtils.js +1 -1
  263. package/dist/utils/functions/SanitizeHtmlUtils.d.ts.map +1 -1
  264. package/dist/utils/functions/SanitizeHtmlUtils.js +34 -40
  265. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  266. package/dist/utils/functions/deepLinkingUtils.js +10 -10
  267. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  268. package/dist/utils/hooks/index.js +6 -6
  269. package/dist/utils/hooks/useDetectSSOCode.js +3 -3
  270. package/dist/utils/hooks/useGetEntityMetadata.js +1 -1
  271. package/dist/utils/hooks/useNativeSearchParams.d.ts.map +1 -1
  272. package/dist/utils/hooks/useNativeSearchParams.js +1 -1
  273. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  274. package/dist/utils/hooks/useOneSageURL.d.ts.map +1 -1
  275. package/dist/utils/hooks/useOneSageURL.js +15 -15
  276. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  277. package/dist/utils/hooks/useSourceAppConfigs.d.ts +1 -0
  278. package/dist/utils/hooks/useSourceAppConfigs.d.ts.map +1 -1
  279. package/dist/utils/hooks/useSourceAppConfigs.js +79 -77
  280. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  281. package/dist/utils/index.js +4 -4
  282. package/package.json +14 -15
  283. package/dist/_virtual/index.js +0 -6
  284. package/dist/_virtual/index.js.map +0 -1
  285. package/dist/_virtual/index2.js +0 -5
  286. package/dist/_virtual/index2.js.map +0 -1
  287. package/dist/_virtual/index3.js +0 -5
  288. package/dist/_virtual/index3.js.map +0 -1
  289. package/dist/_virtual/index4.js +0 -5
  290. package/dist/_virtual/index4.js.map +0 -1
  291. package/dist/_virtual/index5.js +0 -5
  292. package/dist/_virtual/index5.js.map +0 -1
  293. package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts +0 -21
  294. package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts.map +0 -1
  295. package/dist/components/UserSearchBox/UserSearchBoxV2.js +0 -144
  296. package/dist/components/UserSearchBox/UserSearchBoxV2.js.map +0 -1
  297. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js +0 -53
  298. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js.map +0 -1
  299. package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js +0 -948
  300. package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js.map +0 -1
  301. package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js +0 -30
  302. package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js.map +0 -1
  303. package/dist/node_modules/.pnpm/vite-plugin-node-polyfills@0.17.0_rollup@4.55.1_vite@7.3.1_@types_node@22.19.13_sass@1._2da6e8f78437c36f3eb7db51bdd4d89e/node_modules/vite-plugin-node-polyfills/shims/dist/index.js +0 -15
  304. package/dist/node_modules/.pnpm/vite-plugin-node-polyfills@0.17.0_rollup@4.55.1_vite@7.3.1_@types_node@22.19.13_sass@1._2da6e8f78437c36f3eb7db51bdd4d89e/node_modules/vite-plugin-node-polyfills/shims/dist/index.js.map +0 -1
  305. package/dist/style/components/_user-search-box.scss +0 -30
@@ -5,11 +5,11 @@ import { Skeleton as d, Link as F } from "@mui/material";
5
5
  import { FileHandleAssociateType as L } from "@sage-bionetworks/synapse-types";
6
6
  import { times as T } from "lodash-es";
7
7
  import { useState as h, useEffect as D } from "react";
8
- import { MarkdownSynapse as p } from "../Markdown/MarkdownSynapse.js";
8
+ import { Markdown as p } from "../Markdown/MarkdownSynapse.js";
9
9
  import "@mui/material/Skeleton";
10
10
  import { SkeletonParagraph as H } from "../Skeleton/SkeletonParagraph.js";
11
- function U(r) {
12
- const { id: t, item: a, enabled: n, checked: c, onChange: f, termsAndConditionsTableID: u } = r, { iconFileHandleId: k, label: g, description: i } = a, { data: b } = v(
11
+ function U(a) {
12
+ const { id: t, item: r, enabled: n, checked: c, onChange: f, termsAndConditionsTableID: u } = a, { iconFileHandleId: k, label: g, description: i } = r, { data: b } = v(
13
13
  {
14
14
  associateObjectId: u,
15
15
  associateObjectType: L.TableEntity,
@@ -17,13 +17,13 @@ function U(r) {
17
17
  },
18
18
  !0
19
19
  // force this query to be run as the anonymous user (without an access token)
20
- ), [o, x] = h(!1), [w, C] = h(!1);
20
+ ), [o, w] = h(!1), [x, C] = h(!1);
21
21
  let l = !0;
22
22
  D(() => (l && C(c), () => {
23
23
  l = !1;
24
24
  }), [n, c]);
25
25
  const I = (m) => {
26
- m.preventDefault(), n && x(!o);
26
+ m.preventDefault(), n && w(!o);
27
27
  }, N = (m) => {
28
28
  n && f(t);
29
29
  };
@@ -54,7 +54,7 @@ function U(r) {
54
54
  {
55
55
  role: "checkbox",
56
56
  "aria-labelledby": `toc-item-${t}`,
57
- className: w ? "terms-circle terms-checked" : "terms-circle",
57
+ className: x ? "terms-circle terms-checked" : "terms-circle",
58
58
  onClick: N,
59
59
  children: /* @__PURE__ */ e(y, {})
60
60
  }
@@ -63,9 +63,9 @@ function U(r) {
63
63
  ] })
64
64
  ] });
65
65
  }
66
- function q(r) {
67
- const { numLoadingItems: t } = r;
68
- return /* @__PURE__ */ e(S, { children: T(t).map((a) => /* @__PURE__ */ s(
66
+ function q(a) {
67
+ const { numLoadingItems: t } = a;
68
+ return /* @__PURE__ */ e(S, { children: T(t).map((r) => /* @__PURE__ */ s(
69
69
  "li",
70
70
  {
71
71
  "aria-busy": "true",
@@ -93,7 +93,7 @@ function q(r) {
93
93
  ) })
94
94
  ]
95
95
  },
96
- a
96
+ r
97
97
  )) });
98
98
  }
99
99
  export {
@@ -4,22 +4,22 @@ import "../styled/LightTooltip.js";
4
4
  import { StyledFormControl as f } from "../styled/StyledFormControl.js";
5
5
  import "../styled/WideButton.js";
6
6
  import "../styled/InputSizedButton.js";
7
+ import { InputLabel as v, Select as g, MenuItem as y } from "@mui/material";
8
+ import "react";
7
9
  import "../../synapse-client/SynapseClient.js";
8
10
  import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
9
11
  import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
10
12
  import "@sage-bionetworks/synapse-client/util/SynapseClientError";
11
- import { parseEntityIdFromSqlStatement as v } from "../../utils/functions/SqlFunctions.js";
13
+ import { parseEntityIdFromSqlStatement as L } from "../../utils/functions/SqlFunctions.js";
12
14
  import "../../utils/functions/EntityTypeUtils.js";
13
- import { BUNDLE_MASK_QUERY_RESULTS as g } from "../../utils/SynapseConstants.js";
15
+ import { BUNDLE_MASK_QUERY_RESULTS as T } from "../../utils/SynapseConstants.js";
14
16
  import "lodash-es";
15
17
  import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
16
18
  import "@tanstack/react-query";
17
19
  import "../../utils/PermissionLevelToAccessType.js";
18
- import "react";
19
20
  import "../../utils/context/SynapseContext.js";
20
21
  import "use-deep-compare-effect";
21
22
  import "@sage-bionetworks/synapse-types";
22
- import { InputLabel as y, Select as L, MenuItem as T } from "@mui/material";
23
23
  import "../../utils/hooks/useCookiePreferences.js";
24
24
  import "../../utils/hooks/useSourceAppConfigs.js";
25
25
  import "universal-cookie";
@@ -42,19 +42,19 @@ const st = ({
42
42
  species: i,
43
43
  setSpecies: m
44
44
  }) => {
45
- const p = v(n), a = R({
45
+ const p = L(n), a = R({
46
46
  entityId: p,
47
47
  query: {
48
48
  sql: `SELECT distinct unnest(species) FROM ${p} WHERE species IS NOT NULL AND observationTime IS NOT NULL GROUP BY species`,
49
49
  additionalFilters: l
50
50
  },
51
- partMask: g,
51
+ partMask: T,
52
52
  concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest"
53
53
  }), { data: u, isLoading: c } = a, t = u?.queryResult?.queryResults?.rows, s = t && t.length > 0 ? t[0].values[0] : void 0;
54
54
  return i == null && s != null && m(s), c || !t || t.length < 2 ? /* @__PURE__ */ e(d, {}) : /* @__PURE__ */ e(b, { children: /* @__PURE__ */ S(f, { children: [
55
- /* @__PURE__ */ e(y, { children: "Species" }),
55
+ /* @__PURE__ */ e(v, { children: "Species" }),
56
56
  /* @__PURE__ */ e(
57
- L,
57
+ g,
58
58
  {
59
59
  sx: { marginLeft: "2px", marginBottom: "2px" },
60
60
  value: i,
@@ -64,7 +64,7 @@ const st = ({
64
64
  },
65
65
  children: t?.map((r) => {
66
66
  const o = r.values[0];
67
- return /* @__PURE__ */ e(T, { value: o, children: o }, o);
67
+ return /* @__PURE__ */ e(y, { value: o, children: o }, o);
68
68
  })
69
69
  }
70
70
  )
@@ -0,0 +1,23 @@
1
+ import { TYPE_FILTER, UserGroupHeader } from '@sage-bionetworks/synapse-types';
2
+ export type UserSearchBoxProps = {
3
+ inputId?: string;
4
+ defaultValue?: string;
5
+ onChange?: (principalId: string | null, header: UserGroupHeader | null) => void;
6
+ typeFilter?: TYPE_FILTER;
7
+ filterPredicate?: (item: UserGroupHeader) => boolean;
8
+ placeholder?: string;
9
+ autoFocus?: boolean;
10
+ /**
11
+ * The principal ID of the currently selected user or team.
12
+ * - `undefined`: uncontrolled — the component manages its own selection state
13
+ * - `null`: controlled with no selection (clears the field)
14
+ * - string: controlled with the given principal ID selected
15
+ */
16
+ value?: string | null;
17
+ };
18
+ /**
19
+ * Autocomplete component used to search for and select a user or team.
20
+ */
21
+ declare function UserSearchBox(props: UserSearchBoxProps): import("react/jsx-runtime").JSX.Element;
22
+ export default UserSearchBox;
23
+ //# sourceMappingURL=UserSearchBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSearchBox.d.ts","sourceRoot":"","sources":["../../../src/components/UserSearchBox/UserSearchBox.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAI9E,MAAM,MAAM,kBAAkB,GAAG;IAE/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,CACT,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,MAAM,EAAE,eAAe,GAAG,IAAI,KAC3B,IAAI,CAAA;IACT,UAAU,CAAC,EAAE,WAAW,CAAA;IACxB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAA;IACpD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED;;GAEG;AACH,iBAAS,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAmL/C;AAED,eAAe,aAAa,CAAA"}
@@ -0,0 +1,146 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { useState as p, useMemo as b, createElement as D } from "react";
3
+ import "../../synapse-client/SynapseClient.js";
4
+ import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
5
+ import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
6
+ import "@sage-bionetworks/synapse-client/util/SynapseClientError";
7
+ import { TYPE_FILTER as H } from "@sage-bionetworks/synapse-types";
8
+ import "../../utils/functions/EntityTypeUtils.js";
9
+ import "../../utils/SynapseConstants.js";
10
+ import "lodash-es";
11
+ import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
12
+ import "@tanstack/react-query";
13
+ import "../../utils/PermissionLevelToAccessType.js";
14
+ import { useDebouncedEffect as Y } from "../../utils/hooks/useDebouncedEffect.js";
15
+ import "../../utils/context/SynapseContext.js";
16
+ import "use-deep-compare-effect";
17
+ import { Skeleton as k, Autocomplete as M, TextField as R, Box as j } from "@mui/material";
18
+ import "../../utils/hooks/useCookiePreferences.js";
19
+ import "../../utils/hooks/useSourceAppConfigs.js";
20
+ import "universal-cookie";
21
+ import "../../utils/AppUtils/session/ApplicationSessionContext.js";
22
+ import "../../utils/context/FullContextProvider.js";
23
+ import "../../utils/context/DocumentMetadataContext.js";
24
+ import '../../style/components/_spinner.css';/* empty css */
25
+ import "@tanstack/query-core";
26
+ import "lodash-es/isEmpty";
27
+ import "lodash-es/isEqual";
28
+ import "lodash-es/xorWith";
29
+ import "react-router";
30
+ import "@sage-bionetworks/synapse-client";
31
+ import "../../utils/types/IsType.js";
32
+ import { useGetUserGroupHeader as L, useSearchUserGroupHeaders as q } from "../../synapse-queries/user/useUserGroupHeader.js";
33
+ import V from "../UserOrTeamBadge/UserOrTeamBadge.js";
34
+ function Te(C) {
35
+ const {
36
+ inputId: E,
37
+ defaultValue: c = null,
38
+ onChange: T,
39
+ filterPredicate: f,
40
+ typeFilter: n,
41
+ placeholder: d,
42
+ autoFocus: w = !1,
43
+ value: l
44
+ } = C, i = l !== void 0, [r, h] = p(""), [a, x] = p("");
45
+ Y(
46
+ () => {
47
+ x(r);
48
+ },
49
+ [r],
50
+ 500
51
+ );
52
+ const [N, g] = p(!1), { data: y, isLoading: F } = L(c ?? "", {
53
+ enabled: !!c && !i
54
+ }), I = i && typeof l == "string" ? l : null, {
55
+ data: G,
56
+ isLoading: U
57
+ } = L(I ?? "", {
58
+ enabled: !!I
59
+ }), [v, P] = p(void 0), s = i ? typeof l == "string" ? G ?? null : null : v !== void 0 ? v : y ?? null, m = s !== null && !N, _ = !!a, { data: O, isLoading: S } = q(
60
+ a,
61
+ n,
62
+ {
63
+ enabled: _
64
+ }
65
+ ), B = b(
66
+ () => (O ?? []).filter(f ?? (() => !0)),
67
+ [O, f]
68
+ ), A = b(() => d !== void 0 ? d : n == H.USERS_ONLY ? "Name (first and last)" : n == H.TEAMS_ONLY ? "Team name" : "Name (first and last) or team name", [d, n]);
69
+ return F || U ? /* @__PURE__ */ t(k, { width: "100%" }) : /* @__PURE__ */ t(
70
+ M,
71
+ {
72
+ id: E,
73
+ value: s,
74
+ inputValue: r,
75
+ onInputChange: (o, e, u) => {
76
+ h(u === "selectOption" || u === "reset" ? "" : e);
77
+ },
78
+ openOnFocus: s !== null,
79
+ onOpen: () => {
80
+ g(!0);
81
+ },
82
+ onClose: () => g(!1),
83
+ options: B,
84
+ filterOptions: (o) => o,
85
+ loading: S || r !== a,
86
+ isOptionEqualToValue: (o, e) => o.ownerId === e.ownerId,
87
+ getOptionLabel: (o) => o.userName,
88
+ renderOption: (o, e) => /* @__PURE__ */ D("li", { ...o, key: e.ownerId }, /* @__PURE__ */ t(
89
+ V,
90
+ {
91
+ userGroupHeader: e,
92
+ disableHref: !0,
93
+ showFullName: !0,
94
+ showCardOnHover: !1
95
+ }
96
+ )),
97
+ renderInput: ({
98
+ inputProps: o,
99
+ InputProps: e,
100
+ ...u
101
+ }) => /* @__PURE__ */ t(
102
+ R,
103
+ {
104
+ ...u,
105
+ placeholder: m ? void 0 : A,
106
+ autoFocus: w,
107
+ slotProps: {
108
+ htmlInput: {
109
+ ...o,
110
+ // While the badge is displayed, hide the underlying input text and cursor.
111
+ // Merge custom styles with parent styles to preserve mouse selection and other behaviors.
112
+ style: {
113
+ ...o.style,
114
+ ...m ? { color: "transparent" } : {}
115
+ }
116
+ },
117
+ input: {
118
+ ...e,
119
+ startAdornment: m ? /* @__PURE__ */ t(j, { sx: { ml: 1 }, children: /* @__PURE__ */ t(
120
+ V,
121
+ {
122
+ userGroupHeader: s,
123
+ disableHref: !0,
124
+ showFullName: !0,
125
+ showCardOnHover: !1
126
+ }
127
+ ) }) : void 0
128
+ }
129
+ }
130
+ }
131
+ ),
132
+ onChange: (o, e) => {
133
+ i || P(e), T?.(
134
+ e?.ownerId != null ? e.ownerId.toString() : null,
135
+ e ?? null
136
+ );
137
+ },
138
+ noOptionsText: S || r !== a ? "Loading…" : "No options",
139
+ clearOnEscape: !0
140
+ }
141
+ );
142
+ }
143
+ export {
144
+ Te as default
145
+ };
146
+ //# sourceMappingURL=UserSearchBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSearchBox.js","sources":["../../../src/components/UserSearchBox/UserSearchBox.tsx"],"sourcesContent":["import {\n useGetUserGroupHeader,\n useSearchUserGroupHeaders,\n} from '@/synapse-queries'\nimport { useDebouncedEffect } from '@/utils/hooks/useDebouncedEffect'\nimport { Autocomplete, Box, Skeleton, TextField } from '@mui/material'\nimport { TYPE_FILTER, UserGroupHeader } from '@sage-bionetworks/synapse-types'\nimport { useMemo, useState } from 'react'\nimport UserOrTeamBadge from '../UserOrTeamBadge/UserOrTeamBadge'\n\nexport type UserSearchBoxProps = {\n /* id for the input element, for associating with a <label> */\n inputId?: string\n /* The initial principal ID (uncontrolled). Ignored if `value` is provided. */\n defaultValue?: string\n onChange?: (\n principalId: string | null,\n header: UserGroupHeader | null,\n ) => void\n typeFilter?: TYPE_FILTER\n filterPredicate?: (item: UserGroupHeader) => boolean\n placeholder?: string\n autoFocus?: boolean\n /**\n * The principal ID of the currently selected user or team.\n * - `undefined`: uncontrolled — the component manages its own selection state\n * - `null`: controlled with no selection (clears the field)\n * - string: controlled with the given principal ID selected\n */\n value?: string | null\n}\n\n/**\n * Autocomplete component used to search for and select a user or team.\n */\nfunction UserSearchBox(props: UserSearchBoxProps) {\n const {\n inputId,\n defaultValue = null,\n onChange,\n filterPredicate,\n typeFilter,\n placeholder,\n autoFocus = false,\n value: valueProp,\n } = props\n\n const isControlled = valueProp !== undefined\n\n const [inputValue, setInputValue] = useState('')\n const [debouncedInput, setDebouncedInput] = useState('')\n useDebouncedEffect(\n () => {\n setDebouncedInput(inputValue)\n },\n [inputValue],\n 500,\n )\n\n // Tracks whether the dropdown is open, used to toggle between badge display\n // and text-input search mode.\n const [isSearching, setIsSearching] = useState(false)\n\n // Resolve defaultValue principalId → UserGroupHeader for the initial uncontrolled state\n const { data: defaultUserGroupHeader, isLoading: isLoadingDefaultValue } =\n useGetUserGroupHeader(defaultValue ?? '', {\n enabled: !!defaultValue && !isControlled,\n })\n\n // Resolve controlled string principalId → UserGroupHeader\n const controlledPrincipalId =\n isControlled && typeof valueProp === 'string' ? valueProp : null\n\n const {\n data: resolvedControlledHeader,\n isLoading: isLoadingControlledValue,\n } = useGetUserGroupHeader(controlledPrincipalId ?? '', {\n enabled: !!controlledPrincipalId,\n })\n\n // Internal state for uncontrolled mode.\n // undefined = user hasn't interacted yet → falls back to defaultUserGroupHeader\n // null = user explicitly cleared the selection\n // header = user's current selection\n const [internalValue, setInternalValue] = useState<\n UserGroupHeader | null | undefined\n >(undefined)\n\n const controlledValue =\n typeof valueProp === 'string' ? resolvedControlledHeader ?? null : null\n const uncontrolledValue =\n internalValue !== undefined ? internalValue : defaultUserGroupHeader ?? null\n const resolvedValue: UserGroupHeader | null = isControlled\n ? controlledValue\n : uncontrolledValue\n\n // Show the badge in the input field when a value is selected and the user\n // is not actively searching.\n const showBadge = resolvedValue !== null && !isSearching\n\n const isSearchEnabled = !!debouncedInput\n const { data, isLoading } = useSearchUserGroupHeaders(\n debouncedInput,\n typeFilter,\n {\n enabled: isSearchEnabled,\n },\n )\n\n const options = useMemo(\n () => (data ?? []).filter(filterPredicate ?? (() => true)),\n [data, filterPredicate],\n )\n\n const placeholderText = useMemo(() => {\n if (placeholder !== undefined) {\n return placeholder\n } else if (typeFilter == TYPE_FILTER.USERS_ONLY) {\n return 'Name (first and last)'\n } else if (typeFilter == TYPE_FILTER.TEAMS_ONLY) {\n return 'Team name'\n } else {\n return 'Name (first and last) or team name'\n }\n }, [placeholder, typeFilter])\n\n if (isLoadingDefaultValue || isLoadingControlledValue) {\n return <Skeleton width=\"100%\" />\n }\n\n return (\n <Autocomplete<UserGroupHeader, false, false, false>\n id={inputId}\n value={resolvedValue}\n inputValue={inputValue}\n onInputChange={(_event, newInputValue, reason) => {\n if (reason === 'selectOption' || reason === 'reset') {\n // After an option is selected/removed, clear the input text so it's ready for the next search.\n setInputValue('')\n } else {\n setInputValue(newInputValue)\n }\n }}\n // When a value is selected, clicking the badge area should re-open the search.\n openOnFocus={resolvedValue !== null}\n onOpen={() => {\n setIsSearching(true)\n }}\n onClose={() => setIsSearching(false)}\n options={options}\n filterOptions={x => x}\n loading={isLoading || inputValue !== debouncedInput}\n isOptionEqualToValue={(option, val) => option.ownerId === val.ownerId}\n getOptionLabel={option => option.userName}\n renderOption={(optionProps, option) => (\n <li {...optionProps} key={option.ownerId}>\n <UserOrTeamBadge\n userGroupHeader={option}\n disableHref\n showFullName\n showCardOnHover={false}\n />\n </li>\n )}\n renderInput={({\n inputProps: inputPropsFromParams,\n InputProps: InputPropsFromParams,\n ...params\n }) => (\n <TextField\n {...params}\n placeholder={showBadge ? undefined : placeholderText}\n autoFocus={autoFocus}\n slotProps={{\n htmlInput: {\n ...inputPropsFromParams,\n // While the badge is displayed, hide the underlying input text and cursor.\n // Merge custom styles with parent styles to preserve mouse selection and other behaviors.\n style: {\n ...inputPropsFromParams.style,\n ...(showBadge ? { color: 'transparent' } : {}),\n },\n },\n input: {\n ...InputPropsFromParams,\n startAdornment: showBadge ? (\n <Box sx={{ ml: 1 }}>\n <UserOrTeamBadge\n userGroupHeader={resolvedValue}\n disableHref\n showFullName\n showCardOnHover={false}\n />\n </Box>\n ) : undefined,\n },\n }}\n />\n )}\n onChange={(_event, newValue) => {\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(\n newValue?.ownerId != null ? newValue.ownerId.toString() : null,\n newValue ?? null,\n )\n }}\n noOptionsText={\n isLoading || inputValue !== debouncedInput ? 'Loading…' : 'No options'\n }\n clearOnEscape\n />\n )\n}\n\nexport default UserSearchBox\n"],"names":["UserSearchBox","props","inputId","defaultValue","onChange","filterPredicate","typeFilter","placeholder","autoFocus","valueProp","isControlled","inputValue","setInputValue","useState","debouncedInput","setDebouncedInput","useDebouncedEffect","isSearching","setIsSearching","defaultUserGroupHeader","isLoadingDefaultValue","useGetUserGroupHeader","controlledPrincipalId","resolvedControlledHeader","isLoadingControlledValue","internalValue","setInternalValue","resolvedValue","showBadge","isSearchEnabled","data","isLoading","useSearchUserGroupHeaders","options","useMemo","placeholderText","TYPE_FILTER","jsx","Skeleton","Autocomplete","_event","newInputValue","reason","x","option","val","optionProps","createElement","UserOrTeamBadge","inputPropsFromParams","InputPropsFromParams","params","TextField","Box","newValue"],"mappings":"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"}
@@ -28,11 +28,11 @@ import "lodash-es/xorWith";
28
28
  import "react-router";
29
29
  import "@sage-bionetworks/synapse-client";
30
30
  import "../../utils/types/IsType.js";
31
- import { useGetRootWikiPageKey as F, useCreateWikiPage as j, useGetWikiPage as v } from "../../synapse-queries/wiki/useWiki.js";
32
- import { MarkdownSynapse as A } from "../Markdown/MarkdownSynapse.js";
33
- import { WikiMarkdownEditor as B } from "../WikiMarkdownEditor/WikiMarkdownEditor.js";
34
- const f = "Failed to load the wiki page: ", M = "Edit Wiki Page", D = {
35
- children: M,
31
+ import { useGetRootWikiPageKey as F, useCreateWikiPage as M, useGetWikiPage as j } from "../../synapse-queries/wiki/useWiki.js";
32
+ import { Markdown as v } from "../Markdown/MarkdownSynapse.js";
33
+ import { WikiMarkdownEditor as A } from "../WikiMarkdownEditor/WikiMarkdownEditor.js";
34
+ const f = "Failed to load the wiki page: ", B = "Edit Wiki Page", D = {
35
+ children: B,
36
36
  color: "primary",
37
37
  variant: "contained"
38
38
  };
@@ -49,14 +49,14 @@ function yi(g) {
49
49
  ), [c, n] = O(!1), {
50
50
  data: s,
51
51
  isLoading: l,
52
- error: m
52
+ error: d
53
53
  } = F(i, e, {
54
54
  enabled: a === void 0
55
55
  }), {
56
56
  mutate: I,
57
57
  isPending: h,
58
- error: d
59
- } = j({
58
+ error: m
59
+ } = M({
60
60
  onSuccess: () => n(!0)
61
61
  }), P = k(() => {
62
62
  const t = a || s?.wikiPageId || "";
@@ -69,11 +69,11 @@ function yi(g) {
69
69
  data: r,
70
70
  isLoading: u,
71
71
  error: p
72
- } = v(P, {
72
+ } = j(P, {
73
73
  enabled: P.wikiPageId !== "",
74
74
  // Set staleTime to infinity to prevent re-fetching while editing
75
75
  staleTime: 1 / 0
76
- }), w = k(() => m ? f + m.reason : p ? f + p.reason : d ? d.reason : null, [m, p, d]), T = () => {
76
+ }), w = k(() => d ? f + d.reason : p ? f + p.reason : m ? m.reason : null, [d, p, m]), T = () => {
77
77
  r ? n(!0) : s === null ? I({
78
78
  ownerObjectId: e,
79
79
  ownerObjectType: i,
@@ -107,7 +107,7 @@ function yi(g) {
107
107
  children: u || l ? /* @__PURE__ */ o(x, {}) : (
108
108
  // TODO - remove key once MarkdownSynapse uses tanstack-query
109
109
  /* @__PURE__ */ o(
110
- A,
110
+ v,
111
111
  {
112
112
  ...L
113
113
  },
@@ -126,7 +126,7 @@ function yi(g) {
126
126
  ),
127
127
  w && /* @__PURE__ */ o(_, { severity: "error", sx: { marginTop: 2 }, children: w }),
128
128
  r && /* @__PURE__ */ o(
129
- B,
129
+ A,
130
130
  {
131
131
  open: c,
132
132
  ownerObjectType: i,
@@ -140,7 +140,7 @@ function yi(g) {
140
140
  ] });
141
141
  }
142
142
  export {
143
- M as DEFAULT_BUTTON_TEXT,
143
+ B as DEFAULT_BUTTON_TEXT,
144
144
  f as ERROR_LOADING_WIKI_FAILED,
145
145
  yi as WikiMarkdownEditorButton,
146
146
  yi as default
@@ -1,8 +1,8 @@
1
1
  import { jsxs as a, jsx as r } from "react/jsx-runtime";
2
- import { styled as s, Box as i, Typography as c } from "@mui/material";
2
+ import { Box as i, Typography as s, styled as c } from "@mui/material";
3
3
  import x from "../IconSvg/IconSvg.js";
4
4
  import f from "./WizardChoiceButtonDescription.js";
5
- const g = s(
5
+ const g = c(
6
6
  i,
7
7
  {
8
8
  shouldForwardProp: (o) => o !== "selected"
@@ -50,7 +50,7 @@ function k(o) {
50
50
  ),
51
51
  /* @__PURE__ */ a(i, { sx: { flexGrow: 1, textAlign: "left" }, children: [
52
52
  /* @__PURE__ */ r(
53
- c,
53
+ s,
54
54
  {
55
55
  variant: "headline2",
56
56
  sx: {
@@ -33,7 +33,7 @@ import "../../utils/types/IsType.js";
33
33
  import { useGetCurrentUserBundle as F } from "../../synapse-queries/user/useUserBundle.js";
34
34
  import p from "@mui/material/Grid";
35
35
  import B from "../UserOrTeamBadge/UserOrTeamBadge.js";
36
- import L from "../UserSearchBox/UserSearchBoxV2.js";
36
+ import L from "../UserSearchBox/UserSearchBox.js";
37
37
  import { AccessApprovalsTable as _ } from "./AccessApprovalsTable.js";
38
38
  import { AccessRequestSubmissionTable as D } from "./AccessRequestSubmissionTable.js";
39
39
  import z from "./AccessRequirementSearchBox/AccessRequirementSearchBox.js";
@@ -44,12 +44,12 @@ const G = () => /* @__PURE__ */ t("div", { className: "text-center", children: [
44
44
  const [a, l] = c(), [r, n] = c(""), [f, S] = c({
45
45
  accessorId: r,
46
46
  accessRequirementId: a
47
- }), [b, g] = c({
47
+ }), [b, v] = c({
48
48
  showStatus: !0,
49
49
  showSubmitter: !0,
50
50
  accessorId: r,
51
51
  accessRequirementId: a
52
- }), { data: v } = F(), I = v?.isACTMember, o = E(), h = w(), P = 500, A = q((i) => {
52
+ }), { data: g } = F(), I = g?.isACTMember, o = E(), h = w(), P = 500, A = q((i) => {
53
53
  n(i || "");
54
54
  }, []);
55
55
  return C(() => {
@@ -81,7 +81,7 @@ const G = () => /* @__PURE__ */ t("div", { className: "text-center", children: [
81
81
  })(a, r), S({
82
82
  accessorId: r,
83
83
  accessRequirementId: a
84
- }), g({
84
+ }), v({
85
85
  showStatus: !0,
86
86
  showSubmitter: !0,
87
87
  accessorId: r,
@@ -107,7 +107,7 @@ const G = () => /* @__PURE__ */ t("div", { className: "text-center", children: [
107
107
  {
108
108
  inputId: "user-filter",
109
109
  onChange: A,
110
- defaultValue: r,
110
+ value: r,
111
111
  placeholder: "Search for a user name",
112
112
  typeFilter: y.USERS_ONLY
113
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AccessHistoryDashboard.js","sources":["../../../src/components/dataaccess/AccessHistoryDashboard.tsx"],"sourcesContent":["import React from 'react'\nimport SearchImage from '@/assets/icons/SearchImage'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useDebouncedEffect } from '@/utils/hooks/useDebouncedEffect'\nimport { Typography } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { omitBy } from 'lodash-es'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useLocation, useNavigate } from 'react-router'\nimport UserOrTeamBadge from '../UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBoxV2 from '../UserSearchBox/UserSearchBoxV2'\nimport {\n AccessApprovalsTable,\n AccessApprovalsTableProps,\n} from './AccessApprovalsTable'\nimport {\n AccessRequestSubmissionTable,\n AccessRequestSubmissionTableProps,\n} from './AccessRequestSubmissionTable'\nimport AccessRequirementSearchBox from './AccessRequirementSearchBox/AccessRequirementSearchBox'\n\nconst SearchStartComponent = (): React.ReactNode => {\n return (\n <div className=\"text-center\">\n <SearchImage className=\"SearchPlaceholderImage\" height=\"167px\" />\n <Typography variant=\"body1Italic\">\n Select a user using the search field above to view their data access\n history\n </Typography>\n </div>\n )\n}\n\nexport const UserHistoryDashboard = (): React.ReactNode => {\n const [accessRequirementId, setAccessRequirementId] = useState<\n string | undefined\n >()\n const [accessorId, setAccessorId] = useState<string>('')\n const [approvalTableProps, setApprovalTableProps] =\n useState<AccessApprovalsTableProps>({\n accessorId,\n accessRequirementId,\n })\n const [submissionTableProps, setSubmissionTableProps] =\n useState<AccessRequestSubmissionTableProps>({\n showStatus: true,\n showSubmitter: true,\n accessorId,\n accessRequirementId,\n })\n\n const { data: userBundle } = useGetCurrentUserBundle()\n const hasActPermissions = userBundle?.isACTMember\n\n const location = useLocation()\n const navigate = useNavigate()\n const INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\n\n const onAccessorChange = useCallback((selected: string | null) => {\n if (selected) {\n setAccessorId(selected)\n } else {\n setAccessorId('')\n }\n }, [])\n\n useEffect(() => {\n const initializeFromSearchParam = () => {\n const initialParams = new URLSearchParams(location.search)\n setAccessRequirementId(\n initialParams.get('accessRequirementId') ?? undefined,\n )\n setAccessorId(initialParams.get('accessorId') ?? '')\n }\n initializeFromSearchParam()\n }, [location.search])\n\n useDebouncedEffect(\n () => {\n const updateQueryParams = (\n accessRequirementId: string | undefined,\n accessorId: string,\n ) => {\n const params = new URLSearchParams(\n omitBy(\n {\n accessRequirementId,\n accessorId,\n },\n item => item === undefined || item === '',\n ) as Record<string, string>,\n )\n navigate(\n {\n pathname: location.pathname,\n search: params.toString(),\n },\n { replace: true },\n )\n }\n\n updateQueryParams(accessRequirementId, accessorId)\n setApprovalTableProps({\n accessorId,\n accessRequirementId,\n })\n setSubmissionTableProps({\n showStatus: true,\n showSubmitter: true,\n accessorId,\n accessRequirementId,\n })\n },\n [accessRequirementId, accessorId, navigate, location.pathname],\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n\n return (\n <div className=\"UserHistoryDashboard\">\n <Grid container spacing={2} className=\"InputPanel\">\n <Grid size={{ xs: 12, md: 6 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"user-filter\"\n >\n Select a user to view their access history\n </Typography>\n <UserSearchBoxV2\n inputId=\"user-filter\"\n onChange={onAccessorChange}\n defaultValue={accessorId}\n placeholder=\"Search for a user name\"\n typeFilter={TYPE_FILTER.USERS_ONLY}\n />\n </Grid>\n\n {accessorId && (\n <Grid size={{ xs: 12, md: 6 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"arName-filter\"\n >\n Filter by Access Requirement Name\n </Typography>\n <AccessRequirementSearchBox\n inputId=\"arName-filter\"\n placeholder=\"Search for an Access Requirement Name \"\n onChange={setAccessRequirementId}\n />\n </Grid>\n )}\n </Grid>\n\n {accessorId ? (\n <>\n <Typography variant=\"headline3\">\n Submissions including <UserOrTeamBadge principalId={accessorId} />\n </Typography>\n <AccessRequestSubmissionTable {...submissionTableProps} />\n {hasActPermissions && (\n <>\n <Typography variant=\"headline3\">\n Status in Access Requirements\n </Typography>\n <AccessApprovalsTable {...approvalTableProps} />\n </>\n )}\n </>\n ) : (\n <SearchStartComponent />\n )}\n </div>\n )\n}\n"],"names":["SearchStartComponent","jsxs","jsx","SearchImage","Typography","UserHistoryDashboard","accessRequirementId","setAccessRequirementId","useState","accessorId","setAccessorId","approvalTableProps","setApprovalTableProps","submissionTableProps","setSubmissionTableProps","userBundle","useGetCurrentUserBundle","hasActPermissions","location","useLocation","navigate","useNavigate","INPUT_CHANGE_DEBOUNCE_DELAY_MS","onAccessorChange","useCallback","selected","useEffect","initialParams","useDebouncedEffect","params","omitBy","item","Grid","UserSearchBoxV2","TYPE_FILTER","AccessRequirementSearchBox","Fragment","UserOrTeamBadge","AccessRequestSubmissionTable","AccessApprovalsTable"],"mappings":"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"}
1
+ {"version":3,"file":"AccessHistoryDashboard.js","sources":["../../../src/components/dataaccess/AccessHistoryDashboard.tsx"],"sourcesContent":["import React from 'react'\nimport SearchImage from '@/assets/icons/SearchImage'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useDebouncedEffect } from '@/utils/hooks/useDebouncedEffect'\nimport { Typography } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { omitBy } from 'lodash-es'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useLocation, useNavigate } from 'react-router'\nimport UserOrTeamBadge from '../UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '../UserSearchBox/UserSearchBox'\nimport {\n AccessApprovalsTable,\n AccessApprovalsTableProps,\n} from './AccessApprovalsTable'\nimport {\n AccessRequestSubmissionTable,\n AccessRequestSubmissionTableProps,\n} from './AccessRequestSubmissionTable'\nimport AccessRequirementSearchBox from './AccessRequirementSearchBox/AccessRequirementSearchBox'\n\nconst SearchStartComponent = (): React.ReactNode => {\n return (\n <div className=\"text-center\">\n <SearchImage className=\"SearchPlaceholderImage\" height=\"167px\" />\n <Typography variant=\"body1Italic\">\n Select a user using the search field above to view their data access\n history\n </Typography>\n </div>\n )\n}\n\nexport const UserHistoryDashboard = (): React.ReactNode => {\n const [accessRequirementId, setAccessRequirementId] = useState<\n string | undefined\n >()\n const [accessorId, setAccessorId] = useState<string>('')\n const [approvalTableProps, setApprovalTableProps] =\n useState<AccessApprovalsTableProps>({\n accessorId,\n accessRequirementId,\n })\n const [submissionTableProps, setSubmissionTableProps] =\n useState<AccessRequestSubmissionTableProps>({\n showStatus: true,\n showSubmitter: true,\n accessorId,\n accessRequirementId,\n })\n\n const { data: userBundle } = useGetCurrentUserBundle()\n const hasActPermissions = userBundle?.isACTMember\n\n const location = useLocation()\n const navigate = useNavigate()\n const INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\n\n const onAccessorChange = useCallback((selected: string | null) => {\n if (selected) {\n setAccessorId(selected)\n } else {\n setAccessorId('')\n }\n }, [])\n\n useEffect(() => {\n const initializeFromSearchParam = () => {\n const initialParams = new URLSearchParams(location.search)\n setAccessRequirementId(\n initialParams.get('accessRequirementId') ?? undefined,\n )\n setAccessorId(initialParams.get('accessorId') ?? '')\n }\n initializeFromSearchParam()\n }, [location.search])\n\n useDebouncedEffect(\n () => {\n const updateQueryParams = (\n accessRequirementId: string | undefined,\n accessorId: string,\n ) => {\n const params = new URLSearchParams(\n omitBy(\n {\n accessRequirementId,\n accessorId,\n },\n item => item === undefined || item === '',\n ) as Record<string, string>,\n )\n navigate(\n {\n pathname: location.pathname,\n search: params.toString(),\n },\n { replace: true },\n )\n }\n\n updateQueryParams(accessRequirementId, accessorId)\n setApprovalTableProps({\n accessorId,\n accessRequirementId,\n })\n setSubmissionTableProps({\n showStatus: true,\n showSubmitter: true,\n accessorId,\n accessRequirementId,\n })\n },\n [accessRequirementId, accessorId, navigate, location.pathname],\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n\n return (\n <div className=\"UserHistoryDashboard\">\n <Grid container spacing={2} className=\"InputPanel\">\n <Grid size={{ xs: 12, md: 6 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"user-filter\"\n >\n Select a user to view their access history\n </Typography>\n <UserSearchBox\n inputId=\"user-filter\"\n onChange={onAccessorChange}\n value={accessorId}\n placeholder=\"Search for a user name\"\n typeFilter={TYPE_FILTER.USERS_ONLY}\n />\n </Grid>\n\n {accessorId && (\n <Grid size={{ xs: 12, md: 6 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"arName-filter\"\n >\n Filter by Access Requirement Name\n </Typography>\n <AccessRequirementSearchBox\n inputId=\"arName-filter\"\n placeholder=\"Search for an Access Requirement Name \"\n onChange={setAccessRequirementId}\n />\n </Grid>\n )}\n </Grid>\n\n {accessorId ? (\n <>\n <Typography variant=\"headline3\">\n Submissions including <UserOrTeamBadge principalId={accessorId} />\n </Typography>\n <AccessRequestSubmissionTable {...submissionTableProps} />\n {hasActPermissions && (\n <>\n <Typography variant=\"headline3\">\n Status in Access Requirements\n </Typography>\n <AccessApprovalsTable {...approvalTableProps} />\n </>\n )}\n </>\n ) : (\n <SearchStartComponent />\n )}\n </div>\n )\n}\n"],"names":["SearchStartComponent","jsxs","jsx","SearchImage","Typography","UserHistoryDashboard","accessRequirementId","setAccessRequirementId","useState","accessorId","setAccessorId","approvalTableProps","setApprovalTableProps","submissionTableProps","setSubmissionTableProps","userBundle","useGetCurrentUserBundle","hasActPermissions","location","useLocation","navigate","useNavigate","INPUT_CHANGE_DEBOUNCE_DELAY_MS","onAccessorChange","useCallback","selected","useEffect","initialParams","useDebouncedEffect","params","omitBy","item","Grid","UserSearchBox","TYPE_FILTER","AccessRequirementSearchBox","Fragment","UserOrTeamBadge","AccessRequestSubmissionTable","AccessApprovalsTable"],"mappings":"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"}
@@ -10,8 +10,8 @@ import { useMemo as R, useState as I, useEffect as Y, useCallback as q } from "r
10
10
  import { useLocation as L, useNavigate as B } from "react-router";
11
11
  import { EntityFinderModal as H } from "../EntityFinder/EntityFinderModal.js";
12
12
  import { FinderScope as G } from "../EntityFinder/tree/EntityTree.js";
13
- import V from "../UserSearchBox/UserSearchBoxV2.js";
14
- import { AccessRequirementTable as z } from "./AccessRequirementTable.js";
13
+ import z from "../UserSearchBox/UserSearchBox.js";
14
+ import { AccessRequirementTable as K } from "./AccessRequirementTable.js";
15
15
  const S = "nameOrID", C = "relatedProjectId", y = "reviewerId", D = "type";
16
16
  function se(N) {
17
17
  const { onCreateNewAccessRequirementClicked: P } = N, o = L(), i = R(
@@ -158,7 +158,7 @@ function se(N) {
158
158
  }
159
159
  ),
160
160
  /* @__PURE__ */ t(
161
- V,
161
+ z,
162
162
  {
163
163
  inputId: "reviewer-filter",
164
164
  placeholder: "Search for a username or team name",
@@ -169,7 +169,7 @@ function se(N) {
169
169
  ] })
170
170
  ] }),
171
171
  /* @__PURE__ */ t(
172
- z,
172
+ K,
173
173
  {
174
174
  nameOrID: l,
175
175
  relatedProjectId: r,
@@ -1 +1 @@
1
- {"version":3,"file":"AccessRequirementDashboard.js","sources":["../../../src/components/dataaccess/AccessRequirementDashboard.tsx"],"sourcesContent":["import { InputSizedButton } from '@/components/styled/InputSizedButton'\nimport { SYNAPSE_ENTITY_ID_REGEX } from '@/utils/functions/RegularExpressions'\nimport { SearchOutlined } from '@mui/icons-material'\nimport { Grid, InputAdornment, TextField, Typography } from '@mui/material'\nimport { useDebouncedState } from '@react-hookz/web'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { omitBy } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useLocation, useNavigate } from 'react-router'\nimport { EntityFinderModal } from '../EntityFinder/EntityFinderModal'\nimport { FinderScope } from '../EntityFinder/tree/EntityTree'\nimport UserSearchBoxV2 from '../UserSearchBox/UserSearchBoxV2'\nimport { AccessRequirementTable } from './AccessRequirementTable'\n\nexport const AR_NAME_OR_ID_SEARCH_PARAM_KEY = 'nameOrID'\nexport const RELATED_PROJECT_ID_SEARCH_PARAM_KEY = 'relatedProjectId'\nexport const REVIEWER_ID_SEARCH_PARAM_KEY = 'reviewerId'\nexport const AR_TYPE_SEARCH_PARAM_KEY = 'type'\n\nexport type AccessRequirementDashboardProps = {\n onCreateNewAccessRequirementClicked?: () => void\n}\n\nexport function AccessRequirementDashboard(\n props: AccessRequirementDashboardProps,\n) {\n // Amount of time to wait after an input value changes before sending a new request\n const INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\n\n const { onCreateNewAccessRequirementClicked } = props\n\n const location = useLocation()\n const urlSearchParams = useMemo(\n () => new URLSearchParams(location.search),\n [location.search],\n )\n const navigate = useNavigate()\n\n /**\n * When an input changes, update the props passed to the table and update the search params.\n *\n * Debounced to prevent firing many queries while the user is entering text.\n */\n const [nameOrID, setNameOrID] = useDebouncedState<string>(\n urlSearchParams.get(AR_NAME_OR_ID_SEARCH_PARAM_KEY) ?? '',\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [relatedProjectId, setRelatedProjectId] = useDebouncedState<\n string | undefined\n >(\n urlSearchParams.get(RELATED_PROJECT_ID_SEARCH_PARAM_KEY) ?? undefined,\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [reviewerId, setReviewerId] = useDebouncedState<string | undefined>(\n urlSearchParams.get(REVIEWER_ID_SEARCH_PARAM_KEY) ?? undefined,\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [typeFilter, setTypeFilter] = useState<string | undefined>(\n urlSearchParams.get(AR_TYPE_SEARCH_PARAM_KEY) ?? undefined,\n )\n\n const projectFilterFieldIsError: boolean = useMemo(\n () =>\n !!(relatedProjectId && !SYNAPSE_ENTITY_ID_REGEX.exec(relatedProjectId)),\n [relatedProjectId],\n )\n\n const [showEntityFinder, setShowEntityFinder] = useState(false)\n\n // Update the QueryParams when the filter state changes\n useEffect(() => {\n // Don't include undefined/empty parameters\n const params = omitBy(\n {\n // Sync the search params state with the debounced props\n [AR_NAME_OR_ID_SEARCH_PARAM_KEY]: nameOrID,\n [RELATED_PROJECT_ID_SEARCH_PARAM_KEY]: relatedProjectId,\n [REVIEWER_ID_SEARCH_PARAM_KEY]: reviewerId,\n [AR_TYPE_SEARCH_PARAM_KEY]: typeFilter, // typeFilter state is not debounced\n },\n item => item === undefined || item === '',\n ) as Record<string, string>\n\n // Add the new params to the URL\n // Replace history because intuitively, the user has not navigated to a new page\n const paramsObject = new URLSearchParams(params)\n navigate(\n {\n pathname: location.pathname,\n search: paramsObject.toString(),\n },\n { replace: true },\n )\n }, [\n nameOrID,\n relatedProjectId,\n reviewerId,\n typeFilter,\n navigate,\n location.pathname,\n ])\n\n const onReviewerChange = useCallback(\n (selected: string | null) => {\n if (selected) {\n setReviewerId(selected)\n } else {\n setReviewerId(undefined)\n }\n },\n [setReviewerId],\n )\n\n return (\n <div className=\"AccessRequirementDashboard\">\n <EntityFinderModal\n configuration={{\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: null,\n selectMultiple: false,\n selectableTypes: [EntityType.project],\n treeOnly: true,\n }}\n show={showEntityFinder}\n onCancel={() => {\n setShowEntityFinder(false)\n }}\n title={'Select Project to Filter Access Requirements'}\n promptCopy={\n 'Select a project to find Access Requirements that are associated with that project. Access Requirements will be found if the Access Requirement is applied to the project, or if it is applied to any item inside the project.'\n }\n onConfirm={selected => {\n setRelatedProjectId(selected[0].targetId)\n setShowEntityFinder(false)\n }}\n confirmButtonCopy={'Select'}\n />\n <Grid component={'form'} container spacing={2} className=\"InputPanel\">\n <Grid size={{ xs: 12, md: 4 }}>\n <TextField\n label=\"Filter by Access Requirement Name or ID\"\n id=\"ar-name-filter\"\n type=\"text\"\n fullWidth\n placeholder=\"Search for an Access Requirement Name or ID\"\n onChange={e => {\n setNameOrID(e.target.value)\n }}\n slotProps={{\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">\n <SearchOutlined />\n </InputAdornment>\n ),\n },\n }}\n />\n </Grid>\n <Grid\n size={{ xs: 12, md: 4 }}\n sx={{\n display: 'flex',\n gap: '5px',\n alignItems: 'stretch',\n }}\n >\n <TextField\n label=\"Filter by Project\"\n id=\"project-id-filter\"\n type=\"text\"\n fullWidth\n placeholder=\"Enter a project SynID\"\n error={projectFilterFieldIsError}\n helperText={\n projectFilterFieldIsError\n ? 'Value must be a Synapse ID, e.g. \"syn1234\"'\n : undefined\n }\n onChange={e => {\n const newValue = e.target.value\n if (newValue === '') {\n setRelatedProjectId(undefined)\n } else {\n setRelatedProjectId(newValue)\n }\n }}\n />\n <InputSizedButton\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => {\n setShowEntityFinder(true)\n }}\n >\n Browse\n </InputSizedButton>\n </Grid>\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"reviewer-filter\"\n >\n Filter by Reviewer\n </Typography>\n <UserSearchBoxV2\n inputId=\"reviewer-filter\"\n placeholder=\"Search for a username or team name\"\n defaultValue={reviewerId}\n onChange={onReviewerChange}\n />\n </Grid>\n </Grid>\n <AccessRequirementTable\n nameOrID={nameOrID}\n relatedProjectId={relatedProjectId}\n reviewerId={reviewerId}\n onCreateNewAccessRequirementClicked={\n onCreateNewAccessRequirementClicked\n }\n typeFilter={typeFilter}\n onTypeFilterChange={setTypeFilter}\n />\n </div>\n )\n}\n\nexport default AccessRequirementDashboard\n"],"names":["AR_NAME_OR_ID_SEARCH_PARAM_KEY","RELATED_PROJECT_ID_SEARCH_PARAM_KEY","REVIEWER_ID_SEARCH_PARAM_KEY","AR_TYPE_SEARCH_PARAM_KEY","AccessRequirementDashboard","props","onCreateNewAccessRequirementClicked","location","useLocation","urlSearchParams","useMemo","navigate","useNavigate","nameOrID","setNameOrID","useDebouncedState","relatedProjectId","setRelatedProjectId","reviewerId","setReviewerId","typeFilter","setTypeFilter","useState","projectFilterFieldIsError","SYNAPSE_ENTITY_ID_REGEX","showEntityFinder","setShowEntityFinder","useEffect","params","omitBy","item","paramsObject","onReviewerChange","useCallback","selected","jsxs","jsx","EntityFinderModal","FinderScope","EntityType","Grid","TextField","InputAdornment","SearchOutlined","newValue","InputSizedButton","Typography","UserSearchBoxV2","AccessRequirementTable"],"mappings":";;;;;;;;;;;;;;AAcO,MAAMA,IAAiC,YACjCC,IAAsC,oBACtCC,IAA+B,cAC/BC,IAA2B;AAMjC,SAASC,GACdC,GACA;AAIA,QAAM,EAAE,qCAAAC,MAAwCD,GAE1CE,IAAWC,EAAA,GACXC,IAAkBC;AAAA,IACtB,MAAM,IAAI,gBAAgBH,EAAS,MAAM;AAAA,IACzC,CAACA,EAAS,MAAM;AAAA,EAAA,GAEZI,IAAWC,EAAA,GAOX,CAACC,GAAUC,CAAW,IAAIC;AAAA,IAC9BN,EAAgB,IAAIT,CAA8B,KAAK;AAAA,IACvD;AAAA,EAAA,GAEI,CAACgB,GAAkBC,CAAmB,IAAIF;AAAA,IAG9CN,EAAgB,IAAIR,CAAmC,KAAK;AAAA,IAC5D;AAAA,EAAA,GAEI,CAACiB,GAAYC,CAAa,IAAIJ;AAAA,IAClCN,EAAgB,IAAIP,CAA4B,KAAK;AAAA,IACrD;AAAA,EAAA,GAEI,CAACkB,GAAYC,CAAa,IAAIC;AAAA,IAClCb,EAAgB,IAAIN,CAAwB,KAAK;AAAA,EAAA,GAG7CoB,IAAqCb;AAAA,IACzC,MACE,CAAC,EAAEM,KAAoB,CAACQ,EAAwB,KAAKR,CAAgB;AAAA,IACvE,CAACA,CAAgB;AAAA,EAAA,GAGb,CAACS,GAAkBC,CAAmB,IAAIJ,EAAS,EAAK;AAG9D,EAAAK,EAAU,MAAM;AAEd,UAAMC,IAASC;AAAA,MACb;AAAA;AAAA,QAEE,CAAC7B,CAA8B,GAAGa;AAAA,QAClC,CAACZ,CAAmC,GAAGe;AAAA,QACvC,CAACd,CAA4B,GAAGgB;AAAA,QAChC,CAACf,CAAwB,GAAGiB;AAAA;AAAA,MAAA;AAAA,MAE9B,CAAAU,MAAQA,MAAS,UAAaA,MAAS;AAAA,IAAA,GAKnCC,IAAe,IAAI,gBAAgBH,CAAM;AAC/C,IAAAjB;AAAA,MACE;AAAA,QACE,UAAUJ,EAAS;AAAA,QACnB,QAAQwB,EAAa,SAAA;AAAA,MAAS;AAAA,MAEhC,EAAE,SAAS,GAAA;AAAA,IAAK;AAAA,EAEpB,GAAG;AAAA,IACDlB;AAAA,IACAG;AAAA,IACAE;AAAA,IACAE;AAAA,IACAT;AAAA,IACAJ,EAAS;AAAA,EAAA,CACV;AAED,QAAMyB,IAAmBC;AAAA,IACvB,CAACC,MAA4B;AAC3B,MACEf,EADEe,KAGY,MAFQ;AAAA,IAI1B;AAAA,IACA,CAACf,CAAa;AAAA,EAAA;AAGhB,SACE,gBAAAgB,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,eAAe;AAAA,UACb,cAAcC,EAAY;AAAA,UAC1B,kBAAkB;AAAA,UAClB,gBAAgB;AAAA,UAChB,iBAAiB,CAACC,EAAW,OAAO;AAAA,UACpC,UAAU;AAAA,QAAA;AAAA,QAEZ,MAAMd;AAAA,QACN,UAAU,MAAM;AACd,UAAAC,EAAoB,EAAK;AAAA,QAC3B;AAAA,QACA,OAAO;AAAA,QACP,YACE;AAAA,QAEF,WAAW,CAAAQ,MAAY;AACrB,UAAAjB,EAAoBiB,EAAS,CAAC,EAAE,QAAQ,GACxCR,EAAoB,EAAK;AAAA,QAC3B;AAAA,QACA,mBAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,IAErB,gBAAAS,EAACK,KAAK,WAAW,QAAQ,WAAS,IAAC,SAAS,GAAG,WAAU,cACvD,UAAA;AAAA,MAAA,gBAAAJ,EAACI,KAAK,MAAM,EAAE,IAAI,IAAI,IAAI,KACxB,UAAA,gBAAAJ;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,IAAG;AAAA,UACH,MAAK;AAAA,UACL,WAAS;AAAA,UACT,aAAY;AAAA,UACZ,UAAU,CAAA,MAAK;AACb,YAAA3B,EAAY,EAAE,OAAO,KAAK;AAAA,UAC5B;AAAA,UACA,WAAW;AAAA,YACT,OAAO;AAAA,cACL,cACE,gBAAAsB,EAACM,GAAA,EAAe,UAAS,OACvB,UAAA,gBAAAN,EAACO,KAAe,EAAA,CAClB;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF;AAAA,MAAA,GAEJ;AAAA,MACA,gBAAAR;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,MAAM,EAAE,IAAI,IAAI,IAAI,EAAA;AAAA,UACpB,IAAI;AAAA,YACF,SAAS;AAAA,YACT,KAAK;AAAA,YACL,YAAY;AAAA,UAAA;AAAA,UAGd,UAAA;AAAA,YAAA,gBAAAJ;AAAA,cAACK;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,IAAG;AAAA,gBACH,MAAK;AAAA,gBACL,WAAS;AAAA,gBACT,aAAY;AAAA,gBACZ,OAAOlB;AAAA,gBACP,YACEA,IACI,+CACA;AAAA,gBAEN,UAAU,CAAA,MAAK;AACb,wBAAMqB,IAAW,EAAE,OAAO;AAC1B,kBACE3B,EADE2B,MAAa,KACK,SAEAA,CAFS;AAAA,gBAIjC;AAAA,cAAA;AAAA,YAAA;AAAA,YAEF,gBAAAR;AAAA,cAACS;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,SAAS,MAAM;AACb,kBAAAnB,EAAoB,EAAI;AAAA,gBAC1B;AAAA,gBACD,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAED;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF,gBAAAS,EAACK,KAAK,MAAM,EAAE,IAAI,IAAI,IAAI,KACxB,UAAA;AAAA,QAAA,gBAAAJ;AAAA,UAACU;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,SAAQ;AAAA,YACT,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,gBAAAV;AAAA,UAACW;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,aAAY;AAAA,YACZ,cAAc7B;AAAA,YACd,UAAUc;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ,EAAA,CACF;AAAA,IAAA,GACF;AAAA,IACA,gBAAAI;AAAA,MAACY;AAAA,MAAA;AAAA,QACC,UAAAnC;AAAA,QACA,kBAAAG;AAAA,QACA,YAAAE;AAAA,QACA,qCAAAZ;AAAA,QAGA,YAAAc;AAAA,QACA,oBAAoBC;AAAA,MAAA;AAAA,IAAA;AAAA,EACtB,GACF;AAEJ;"}
1
+ {"version":3,"file":"AccessRequirementDashboard.js","sources":["../../../src/components/dataaccess/AccessRequirementDashboard.tsx"],"sourcesContent":["import { InputSizedButton } from '@/components/styled/InputSizedButton'\nimport { SYNAPSE_ENTITY_ID_REGEX } from '@/utils/functions/RegularExpressions'\nimport { SearchOutlined } from '@mui/icons-material'\nimport { Grid, InputAdornment, TextField, Typography } from '@mui/material'\nimport { useDebouncedState } from '@react-hookz/web'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { omitBy } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useLocation, useNavigate } from 'react-router'\nimport { EntityFinderModal } from '../EntityFinder/EntityFinderModal'\nimport { FinderScope } from '../EntityFinder/tree/EntityTree'\nimport UserSearchBox from '../UserSearchBox/UserSearchBox'\nimport { AccessRequirementTable } from './AccessRequirementTable'\n\nexport const AR_NAME_OR_ID_SEARCH_PARAM_KEY = 'nameOrID'\nexport const RELATED_PROJECT_ID_SEARCH_PARAM_KEY = 'relatedProjectId'\nexport const REVIEWER_ID_SEARCH_PARAM_KEY = 'reviewerId'\nexport const AR_TYPE_SEARCH_PARAM_KEY = 'type'\n\nexport type AccessRequirementDashboardProps = {\n onCreateNewAccessRequirementClicked?: () => void\n}\n\nexport function AccessRequirementDashboard(\n props: AccessRequirementDashboardProps,\n) {\n // Amount of time to wait after an input value changes before sending a new request\n const INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\n\n const { onCreateNewAccessRequirementClicked } = props\n\n const location = useLocation()\n const urlSearchParams = useMemo(\n () => new URLSearchParams(location.search),\n [location.search],\n )\n const navigate = useNavigate()\n\n /**\n * When an input changes, update the props passed to the table and update the search params.\n *\n * Debounced to prevent firing many queries while the user is entering text.\n */\n const [nameOrID, setNameOrID] = useDebouncedState<string>(\n urlSearchParams.get(AR_NAME_OR_ID_SEARCH_PARAM_KEY) ?? '',\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [relatedProjectId, setRelatedProjectId] = useDebouncedState<\n string | undefined\n >(\n urlSearchParams.get(RELATED_PROJECT_ID_SEARCH_PARAM_KEY) ?? undefined,\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [reviewerId, setReviewerId] = useDebouncedState<string | undefined>(\n urlSearchParams.get(REVIEWER_ID_SEARCH_PARAM_KEY) ?? undefined,\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [typeFilter, setTypeFilter] = useState<string | undefined>(\n urlSearchParams.get(AR_TYPE_SEARCH_PARAM_KEY) ?? undefined,\n )\n\n const projectFilterFieldIsError: boolean = useMemo(\n () =>\n !!(relatedProjectId && !SYNAPSE_ENTITY_ID_REGEX.exec(relatedProjectId)),\n [relatedProjectId],\n )\n\n const [showEntityFinder, setShowEntityFinder] = useState(false)\n\n // Update the QueryParams when the filter state changes\n useEffect(() => {\n // Don't include undefined/empty parameters\n const params = omitBy(\n {\n // Sync the search params state with the debounced props\n [AR_NAME_OR_ID_SEARCH_PARAM_KEY]: nameOrID,\n [RELATED_PROJECT_ID_SEARCH_PARAM_KEY]: relatedProjectId,\n [REVIEWER_ID_SEARCH_PARAM_KEY]: reviewerId,\n [AR_TYPE_SEARCH_PARAM_KEY]: typeFilter, // typeFilter state is not debounced\n },\n item => item === undefined || item === '',\n ) as Record<string, string>\n\n // Add the new params to the URL\n // Replace history because intuitively, the user has not navigated to a new page\n const paramsObject = new URLSearchParams(params)\n navigate(\n {\n pathname: location.pathname,\n search: paramsObject.toString(),\n },\n { replace: true },\n )\n }, [\n nameOrID,\n relatedProjectId,\n reviewerId,\n typeFilter,\n navigate,\n location.pathname,\n ])\n\n const onReviewerChange = useCallback(\n (selected: string | null) => {\n if (selected) {\n setReviewerId(selected)\n } else {\n setReviewerId(undefined)\n }\n },\n [setReviewerId],\n )\n\n return (\n <div className=\"AccessRequirementDashboard\">\n <EntityFinderModal\n configuration={{\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: null,\n selectMultiple: false,\n selectableTypes: [EntityType.project],\n treeOnly: true,\n }}\n show={showEntityFinder}\n onCancel={() => {\n setShowEntityFinder(false)\n }}\n title={'Select Project to Filter Access Requirements'}\n promptCopy={\n 'Select a project to find Access Requirements that are associated with that project. Access Requirements will be found if the Access Requirement is applied to the project, or if it is applied to any item inside the project.'\n }\n onConfirm={selected => {\n setRelatedProjectId(selected[0].targetId)\n setShowEntityFinder(false)\n }}\n confirmButtonCopy={'Select'}\n />\n <Grid component={'form'} container spacing={2} className=\"InputPanel\">\n <Grid size={{ xs: 12, md: 4 }}>\n <TextField\n label=\"Filter by Access Requirement Name or ID\"\n id=\"ar-name-filter\"\n type=\"text\"\n fullWidth\n placeholder=\"Search for an Access Requirement Name or ID\"\n onChange={e => {\n setNameOrID(e.target.value)\n }}\n slotProps={{\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">\n <SearchOutlined />\n </InputAdornment>\n ),\n },\n }}\n />\n </Grid>\n <Grid\n size={{ xs: 12, md: 4 }}\n sx={{\n display: 'flex',\n gap: '5px',\n alignItems: 'stretch',\n }}\n >\n <TextField\n label=\"Filter by Project\"\n id=\"project-id-filter\"\n type=\"text\"\n fullWidth\n placeholder=\"Enter a project SynID\"\n error={projectFilterFieldIsError}\n helperText={\n projectFilterFieldIsError\n ? 'Value must be a Synapse ID, e.g. \"syn1234\"'\n : undefined\n }\n onChange={e => {\n const newValue = e.target.value\n if (newValue === '') {\n setRelatedProjectId(undefined)\n } else {\n setRelatedProjectId(newValue)\n }\n }}\n />\n <InputSizedButton\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => {\n setShowEntityFinder(true)\n }}\n >\n Browse\n </InputSizedButton>\n </Grid>\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"reviewer-filter\"\n >\n Filter by Reviewer\n </Typography>\n <UserSearchBox\n inputId=\"reviewer-filter\"\n placeholder=\"Search for a username or team name\"\n defaultValue={reviewerId}\n onChange={onReviewerChange}\n />\n </Grid>\n </Grid>\n <AccessRequirementTable\n nameOrID={nameOrID}\n relatedProjectId={relatedProjectId}\n reviewerId={reviewerId}\n onCreateNewAccessRequirementClicked={\n onCreateNewAccessRequirementClicked\n }\n typeFilter={typeFilter}\n onTypeFilterChange={setTypeFilter}\n />\n </div>\n )\n}\n\nexport default AccessRequirementDashboard\n"],"names":["AR_NAME_OR_ID_SEARCH_PARAM_KEY","RELATED_PROJECT_ID_SEARCH_PARAM_KEY","REVIEWER_ID_SEARCH_PARAM_KEY","AR_TYPE_SEARCH_PARAM_KEY","AccessRequirementDashboard","props","onCreateNewAccessRequirementClicked","location","useLocation","urlSearchParams","useMemo","navigate","useNavigate","nameOrID","setNameOrID","useDebouncedState","relatedProjectId","setRelatedProjectId","reviewerId","setReviewerId","typeFilter","setTypeFilter","useState","projectFilterFieldIsError","SYNAPSE_ENTITY_ID_REGEX","showEntityFinder","setShowEntityFinder","useEffect","params","omitBy","item","paramsObject","onReviewerChange","useCallback","selected","jsxs","jsx","EntityFinderModal","FinderScope","EntityType","Grid","TextField","InputAdornment","SearchOutlined","newValue","InputSizedButton","Typography","UserSearchBox","AccessRequirementTable"],"mappings":";;;;;;;;;;;;;;AAcO,MAAMA,IAAiC,YACjCC,IAAsC,oBACtCC,IAA+B,cAC/BC,IAA2B;AAMjC,SAASC,GACdC,GACA;AAIA,QAAM,EAAE,qCAAAC,MAAwCD,GAE1CE,IAAWC,EAAA,GACXC,IAAkBC;AAAA,IACtB,MAAM,IAAI,gBAAgBH,EAAS,MAAM;AAAA,IACzC,CAACA,EAAS,MAAM;AAAA,EAAA,GAEZI,IAAWC,EAAA,GAOX,CAACC,GAAUC,CAAW,IAAIC;AAAA,IAC9BN,EAAgB,IAAIT,CAA8B,KAAK;AAAA,IACvD;AAAA,EAAA,GAEI,CAACgB,GAAkBC,CAAmB,IAAIF;AAAA,IAG9CN,EAAgB,IAAIR,CAAmC,KAAK;AAAA,IAC5D;AAAA,EAAA,GAEI,CAACiB,GAAYC,CAAa,IAAIJ;AAAA,IAClCN,EAAgB,IAAIP,CAA4B,KAAK;AAAA,IACrD;AAAA,EAAA,GAEI,CAACkB,GAAYC,CAAa,IAAIC;AAAA,IAClCb,EAAgB,IAAIN,CAAwB,KAAK;AAAA,EAAA,GAG7CoB,IAAqCb;AAAA,IACzC,MACE,CAAC,EAAEM,KAAoB,CAACQ,EAAwB,KAAKR,CAAgB;AAAA,IACvE,CAACA,CAAgB;AAAA,EAAA,GAGb,CAACS,GAAkBC,CAAmB,IAAIJ,EAAS,EAAK;AAG9D,EAAAK,EAAU,MAAM;AAEd,UAAMC,IAASC;AAAA,MACb;AAAA;AAAA,QAEE,CAAC7B,CAA8B,GAAGa;AAAA,QAClC,CAACZ,CAAmC,GAAGe;AAAA,QACvC,CAACd,CAA4B,GAAGgB;AAAA,QAChC,CAACf,CAAwB,GAAGiB;AAAA;AAAA,MAAA;AAAA,MAE9B,CAAAU,MAAQA,MAAS,UAAaA,MAAS;AAAA,IAAA,GAKnCC,IAAe,IAAI,gBAAgBH,CAAM;AAC/C,IAAAjB;AAAA,MACE;AAAA,QACE,UAAUJ,EAAS;AAAA,QACnB,QAAQwB,EAAa,SAAA;AAAA,MAAS;AAAA,MAEhC,EAAE,SAAS,GAAA;AAAA,IAAK;AAAA,EAEpB,GAAG;AAAA,IACDlB;AAAA,IACAG;AAAA,IACAE;AAAA,IACAE;AAAA,IACAT;AAAA,IACAJ,EAAS;AAAA,EAAA,CACV;AAED,QAAMyB,IAAmBC;AAAA,IACvB,CAACC,MAA4B;AAC3B,MACEf,EADEe,KAGY,MAFQ;AAAA,IAI1B;AAAA,IACA,CAACf,CAAa;AAAA,EAAA;AAGhB,SACE,gBAAAgB,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,eAAe;AAAA,UACb,cAAcC,EAAY;AAAA,UAC1B,kBAAkB;AAAA,UAClB,gBAAgB;AAAA,UAChB,iBAAiB,CAACC,EAAW,OAAO;AAAA,UACpC,UAAU;AAAA,QAAA;AAAA,QAEZ,MAAMd;AAAA,QACN,UAAU,MAAM;AACd,UAAAC,EAAoB,EAAK;AAAA,QAC3B;AAAA,QACA,OAAO;AAAA,QACP,YACE;AAAA,QAEF,WAAW,CAAAQ,MAAY;AACrB,UAAAjB,EAAoBiB,EAAS,CAAC,EAAE,QAAQ,GACxCR,EAAoB,EAAK;AAAA,QAC3B;AAAA,QACA,mBAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,IAErB,gBAAAS,EAACK,KAAK,WAAW,QAAQ,WAAS,IAAC,SAAS,GAAG,WAAU,cACvD,UAAA;AAAA,MAAA,gBAAAJ,EAACI,KAAK,MAAM,EAAE,IAAI,IAAI,IAAI,KACxB,UAAA,gBAAAJ;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,IAAG;AAAA,UACH,MAAK;AAAA,UACL,WAAS;AAAA,UACT,aAAY;AAAA,UACZ,UAAU,CAAA,MAAK;AACb,YAAA3B,EAAY,EAAE,OAAO,KAAK;AAAA,UAC5B;AAAA,UACA,WAAW;AAAA,YACT,OAAO;AAAA,cACL,cACE,gBAAAsB,EAACM,GAAA,EAAe,UAAS,OACvB,UAAA,gBAAAN,EAACO,KAAe,EAAA,CAClB;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF;AAAA,MAAA,GAEJ;AAAA,MACA,gBAAAR;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,MAAM,EAAE,IAAI,IAAI,IAAI,EAAA;AAAA,UACpB,IAAI;AAAA,YACF,SAAS;AAAA,YACT,KAAK;AAAA,YACL,YAAY;AAAA,UAAA;AAAA,UAGd,UAAA;AAAA,YAAA,gBAAAJ;AAAA,cAACK;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,IAAG;AAAA,gBACH,MAAK;AAAA,gBACL,WAAS;AAAA,gBACT,aAAY;AAAA,gBACZ,OAAOlB;AAAA,gBACP,YACEA,IACI,+CACA;AAAA,gBAEN,UAAU,CAAA,MAAK;AACb,wBAAMqB,IAAW,EAAE,OAAO;AAC1B,kBACE3B,EADE2B,MAAa,KACK,SAEAA,CAFS;AAAA,gBAIjC;AAAA,cAAA;AAAA,YAAA;AAAA,YAEF,gBAAAR;AAAA,cAACS;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,SAAS,MAAM;AACb,kBAAAnB,EAAoB,EAAI;AAAA,gBAC1B;AAAA,gBACD,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAED;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF,gBAAAS,EAACK,KAAK,MAAM,EAAE,IAAI,IAAI,IAAI,KACxB,UAAA;AAAA,QAAA,gBAAAJ;AAAA,UAACU;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,SAAQ;AAAA,YACT,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,gBAAAV;AAAA,UAACW;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,aAAY;AAAA,YACZ,cAAc7B;AAAA,YACd,UAAUc;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ,EAAA,CACF;AAAA,IAAA,GACF;AAAA,IACA,gBAAAI;AAAA,MAACY;AAAA,MAAA;AAAA,QACC,UAAAnC;AAAA,QACA,kBAAAG;AAAA,QACA,YAAAE;AAAA,QACA,qCAAAZ;AAAA,QAGA,YAAAc;AAAA,QACA,oBAAoBC;AAAA,MAAA;AAAA,IAAA;AAAA,EACtB,GACF;AAEJ;"}
@@ -30,7 +30,7 @@ import { useLocation as Y, useNavigate as O } from "react-router";
30
30
  import "@sage-bionetworks/synapse-client";
31
31
  import "../../utils/types/IsType.js";
32
32
  import { useIsCurrentUserACTMember as V } from "../../synapse-queries/user/useUserBundle.js";
33
- import w from "../UserSearchBox/UserSearchBoxV2.js";
33
+ import w from "../UserSearchBox/UserSearchBox.js";
34
34
  import { AccessRequestSubmissionTable as j } from "./AccessRequestSubmissionTable.js";
35
35
  import k from "./AccessRequirementSearchBox/AccessRequirementSearchBox.js";
36
36
  const G = (r) => {