synapse-react-client 4.0.2 → 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 (525) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/assets/icons/AwardScroll.d.ts +5 -0
  3. package/dist/assets/icons/AwardScroll.d.ts.map +1 -0
  4. package/dist/assets/icons/AwardScroll.js +78 -0
  5. package/dist/assets/icons/AwardScroll.js.map +1 -0
  6. package/dist/assets/icons/Baseline.d.ts +5 -0
  7. package/dist/assets/icons/Baseline.d.ts.map +1 -0
  8. package/dist/assets/icons/Baseline.js +43 -0
  9. package/dist/assets/icons/Baseline.js.map +1 -0
  10. package/dist/assets/icons/Challenge.svg +13 -0
  11. package/dist/assets/icons/Challenge.svg.js +7 -0
  12. package/dist/assets/icons/Challenge.svg.js.map +1 -0
  13. package/dist/assets/icons/ClappingHands.d.ts +5 -0
  14. package/dist/assets/icons/ClappingHands.d.ts.map +1 -0
  15. package/dist/assets/icons/ClappingHands.js +106 -0
  16. package/dist/assets/icons/ClappingHands.js.map +1 -0
  17. package/dist/assets/icons/HandWithMoney.d.ts +5 -0
  18. package/dist/assets/icons/HandWithMoney.d.ts.map +1 -0
  19. package/dist/assets/icons/HandWithMoney.js +15 -0
  20. package/dist/assets/icons/HandWithMoney.js.map +1 -0
  21. package/dist/assets/icons/MultiFile.d.ts +5 -0
  22. package/dist/assets/icons/MultiFile.d.ts.map +1 -0
  23. package/dist/assets/icons/MultiFile.js +8 -0
  24. package/dist/assets/icons/MultiFile.js.map +1 -0
  25. package/dist/assets/icons/MultiFile.svg +4 -0
  26. package/dist/assets/icons/MultiFile.svg.js +7 -0
  27. package/dist/assets/icons/MultiFile.svg.js.map +1 -0
  28. package/dist/assets/icons/OpenBook.d.ts +5 -0
  29. package/dist/assets/icons/OpenBook.d.ts.map +1 -0
  30. package/dist/assets/icons/OpenBook.js +99 -0
  31. package/dist/assets/icons/OpenBook.js.map +1 -0
  32. package/dist/assets/icons/Podium.d.ts +5 -0
  33. package/dist/assets/icons/Podium.d.ts.map +1 -0
  34. package/dist/assets/icons/Podium.js +36 -0
  35. package/dist/assets/icons/Podium.js.map +1 -0
  36. package/dist/assets/icons/RosetteRibbon.d.ts +5 -0
  37. package/dist/assets/icons/RosetteRibbon.d.ts.map +1 -0
  38. package/dist/assets/icons/RosetteRibbon.js +36 -0
  39. package/dist/assets/icons/RosetteRibbon.js.map +1 -0
  40. package/dist/assets/icons/StarTrophy.d.ts +5 -0
  41. package/dist/assets/icons/StarTrophy.d.ts.map +1 -0
  42. package/dist/assets/icons/StarTrophy.js +99 -0
  43. package/dist/assets/icons/StarTrophy.js.map +1 -0
  44. package/dist/assets/icons/ThreeStars.d.ts +5 -0
  45. package/dist/assets/icons/ThreeStars.d.ts.map +1 -0
  46. package/dist/assets/icons/ThreeStars.js +71 -0
  47. package/dist/assets/icons/ThreeStars.js.map +1 -0
  48. package/dist/assets/icons/UnpackagableFile.d.ts +5 -0
  49. package/dist/assets/icons/UnpackagableFile.d.ts.map +1 -0
  50. package/dist/assets/icons/UnpackagableFile.js +8 -0
  51. package/dist/assets/icons/UnpackagableFile.js.map +1 -0
  52. package/dist/assets/icons/UnpackagableFile.svg +4 -0
  53. package/dist/assets/icons/UnpackagableFile.svg.js +7 -0
  54. package/dist/assets/icons/UnpackagableFile.svg.js.map +1 -0
  55. package/dist/assets/mui_components/PackagableFile.d.ts.map +1 -1
  56. package/dist/assets/mui_components/PackagableFile.js +5 -4
  57. package/dist/assets/mui_components/PackagableFile.js.map +1 -1
  58. package/dist/assets/mui_components/PackagableFile.svg +3 -0
  59. package/dist/assets/mui_components/PackagableFile.svg.js +7 -0
  60. package/dist/assets/mui_components/PackagableFile.svg.js.map +1 -0
  61. package/dist/assets/themed_icons/index.d.ts +1 -2
  62. package/dist/assets/themed_icons/index.d.ts.map +1 -1
  63. package/dist/assets/themed_icons/index.js +8 -10
  64. package/dist/assets/themed_icons/index.js.map +1 -1
  65. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +1 -1
  66. package/dist/components/AccessRequirementList/AccessRequirementList.js +4 -4
  67. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
  68. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +8 -7
  69. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  70. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +4 -4
  71. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js +11 -11
  72. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js +1 -1
  73. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js +9 -9
  74. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js +5 -5
  75. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.d.ts.map +1 -1
  76. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +36 -35
  77. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  78. package/dist/components/AclEditor/AclEditor.js +8 -8
  79. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  80. package/dist/components/AclEditor/AclEditor.test-utils.js +34 -34
  81. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  82. package/dist/components/AddToDownloadListV2.js +10 -10
  83. package/dist/components/AddToDownloadListV2.js.map +1 -1
  84. package/dist/components/Authentication/AuthenticationMethodSelection.js +1 -1
  85. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  86. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +6 -5
  87. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  88. package/dist/components/BasePortalCard/BasePortalCard.css +1 -1
  89. package/dist/components/BasePortalCard/BasePortalCard.d.ts +1 -2
  90. package/dist/components/BasePortalCard/BasePortalCard.d.ts.map +1 -1
  91. package/dist/components/BasePortalCard/BasePortalCard.js +21 -28
  92. package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
  93. package/dist/components/BasePortalCard/BasePortalCard.module.scss +13 -1
  94. package/dist/components/BasePortalCard/BasePortalCard.module.scss.js +11 -11
  95. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.css +1 -1
  96. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.d.ts.map +1 -1
  97. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js +25 -25
  98. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  99. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss +13 -5
  100. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss.js +5 -5
  101. package/dist/components/CardContainer/CardLink.d.ts +12 -0
  102. package/dist/components/CardContainer/CardLink.d.ts.map +1 -1
  103. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +5 -1
  104. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
  105. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  106. package/dist/components/CardContainerLogic/index.d.ts +1 -1
  107. package/dist/components/CardContainerLogic/index.d.ts.map +1 -1
  108. package/dist/components/CardDeck/TableQueryCardDeck.js +12 -9
  109. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  110. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js +33 -33
  111. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
  112. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +12 -12
  113. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.d.ts.map +1 -1
  114. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js +7 -7
  115. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  116. package/dist/components/ChangePassword/useChangePasswordFormState.js +5 -2
  117. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  118. package/dist/components/CitationPopover/CitationPopoverContent.d.ts.map +1 -1
  119. package/dist/components/CitationPopover/CitationPopoverContent.js +13 -12
  120. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  121. package/dist/components/ComponentCollapse.d.ts +6 -10
  122. package/dist/components/ComponentCollapse.d.ts.map +1 -1
  123. package/dist/components/ComponentCollapse.js +31 -35
  124. package/dist/components/ComponentCollapse.js.map +1 -1
  125. package/dist/components/CookiesNotification/CookiesNotification.js +1 -1
  126. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +12 -10
  127. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  128. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +10 -5
  129. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
  130. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  131. package/dist/components/DataGrid/SynapseGrid.js +43 -38
  132. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  133. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +10 -5
  134. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  135. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.d.ts.map +1 -1
  136. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js +9 -7
  137. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  138. package/dist/components/DirectDownload/DirectDownload.d.ts.map +1 -1
  139. package/dist/components/DirectDownload/DirectDownload.js +23 -23
  140. package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
  141. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js +1 -1
  142. package/dist/components/DownloadCart/AvailableForDownloadTable.d.ts +6 -2
  143. package/dist/components/DownloadCart/AvailableForDownloadTable.d.ts.map +1 -1
  144. package/dist/components/DownloadCart/AvailableForDownloadTable.js +10 -8
  145. package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
  146. package/dist/components/DownloadCart/CreatePackageV2.css +1 -0
  147. package/dist/components/DownloadCart/CreatePackageV2.d.ts.map +1 -1
  148. package/dist/components/DownloadCart/CreatePackageV2.js +50 -46
  149. package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
  150. package/dist/components/DownloadCart/CreatePackageV2.module.scss +38 -0
  151. package/dist/components/DownloadCart/CreatePackageV2.module.scss.js +14 -0
  152. package/dist/components/DownloadCart/CreatePackageV2.module.scss.js.map +1 -0
  153. package/dist/components/DownloadCart/DownloadCartPage.css +1 -0
  154. package/dist/components/DownloadCart/DownloadCartPage.d.ts.map +1 -1
  155. package/dist/components/DownloadCart/DownloadCartPage.js +316 -186
  156. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  157. package/dist/components/DownloadCart/DownloadCartPage.module.scss +217 -0
  158. package/dist/components/DownloadCart/DownloadCartPage.module.scss.js +48 -0
  159. package/dist/components/DownloadCart/DownloadCartPage.module.scss.js.map +1 -0
  160. package/dist/components/DownloadCart/DownloadDetails.js +1 -1
  161. package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
  162. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +33 -33
  163. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  164. package/dist/components/DownloadCart/DownloadListTable.d.ts +4 -1
  165. package/dist/components/DownloadCart/DownloadListTable.d.ts.map +1 -1
  166. package/dist/components/DownloadCart/DownloadListTable.js +156 -236
  167. package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
  168. package/dist/components/DownloadCart/RequestDownloadCard.js +1 -1
  169. package/dist/components/DownloadCart/ShowDownloadV2.js +5 -5
  170. package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
  171. package/dist/components/Ecosystem/EcosystemSkeleton.js +10 -5
  172. package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
  173. package/dist/components/Ecosystem/TableQueryEcosystem.js +1 -1
  174. package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
  175. package/dist/components/EntityAclEditor/OpenData.js +1 -1
  176. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
  177. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +113 -127
  178. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  179. package/dist/components/EntityCitation/EntityCitation.js +1 -1
  180. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +20 -20
  181. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  182. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +4 -4
  183. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  184. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js +1 -1
  185. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js +1 -1
  186. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
  187. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js +1 -1
  188. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js +1 -1
  189. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js +1 -1
  190. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js +1 -1
  191. package/dist/components/EntityFinder/tree/EntityTree.js +1 -1
  192. package/dist/components/EntityHeaderTable/EntityHeaderTable.d.ts.map +1 -1
  193. package/dist/components/EntityHeaderTable/EntityHeaderTable.js +39 -39
  194. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  195. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts +8 -0
  196. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts.map +1 -0
  197. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js +46 -0
  198. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -0
  199. package/dist/components/Evaluation/EvaluationCard.d.ts.map +1 -1
  200. package/dist/components/Evaluation/EvaluationCard.js +35 -41
  201. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  202. package/dist/components/Evaluation/EvaluationEditor.d.ts.map +1 -1
  203. package/dist/components/Evaluation/EvaluationEditor.js +95 -90
  204. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  205. package/dist/components/Evaluation/EvaluationRoundEditor.d.ts.map +1 -1
  206. package/dist/components/Evaluation/EvaluationRoundEditor.js +133 -124
  207. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  208. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +6 -2
  209. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  210. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js +11 -8
  211. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
  212. package/dist/components/FilePreview/EntityPreview.js +1 -1
  213. package/dist/components/Forum/DiscussionReply.js +10 -10
  214. package/dist/components/Forum/DiscussionThread.js +21 -21
  215. package/dist/components/FullWidthAlert/FullWidthAlert.d.ts +2 -2
  216. package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
  217. package/dist/components/GenericCard/CardUtils.d.ts.map +1 -1
  218. package/dist/components/GenericCard/CardUtils.js +36 -36
  219. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  220. package/dist/components/GenericCard/CollapsibleDescription.js +25 -25
  221. package/dist/components/GenericCard/GenericCard.d.ts +5 -5
  222. package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
  223. package/dist/components/GenericCard/GenericCard.js +117 -103
  224. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  225. package/dist/components/GenericCard/LabelMaybeWithIcon.d.ts +10 -0
  226. package/dist/components/GenericCard/LabelMaybeWithIcon.d.ts.map +1 -0
  227. package/dist/components/GenericCard/LabelMaybeWithIcon.js +33 -0
  228. package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -0
  229. package/dist/components/GenericCard/SynapseCardLabel.d.ts +2 -1
  230. package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
  231. package/dist/components/GenericCard/SynapseCardLabel.js +95 -85
  232. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  233. package/dist/components/GenericCard/TableRowGenericCard.d.ts +10 -1
  234. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  235. package/dist/components/GenericCard/TableRowGenericCard.js +248 -209
  236. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  237. package/dist/components/GoalsV2/GoalsV2.Desktop.d.ts.map +1 -1
  238. package/dist/components/GoalsV2/GoalsV2.Desktop.js +14 -15
  239. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  240. package/dist/components/GoogleAnalytics/GoogleAnalytics.js +1 -1
  241. package/dist/components/HasAccess/HasAccessV2.js +1 -1
  242. package/dist/components/HasAccess/useHasAccess.js +1 -1
  243. package/dist/components/HeaderCard.js +17 -13
  244. package/dist/components/HeaderCard.js.map +1 -1
  245. package/dist/components/IDUReport/IDUReportSubmissionInfo.js +23 -23
  246. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  247. package/dist/components/Icon/Icon.js +52 -52
  248. package/dist/components/Icon/Icon.js.map +1 -1
  249. package/dist/components/IconSvg/IconSvg.d.ts +1 -1
  250. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  251. package/dist/components/IconSvg/IconSvg.js +215 -171
  252. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  253. package/dist/components/JSONArrayEditor/useParseCsv.d.ts +1 -1
  254. package/dist/components/JSONArrayEditor/useParseCsv.d.ts.map +1 -1
  255. package/dist/components/JSONArrayEditor/useParseCsv.js +9 -9
  256. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  257. package/dist/components/Markdown/MarkdownCollapse.js +7 -7
  258. package/dist/components/Markdown/MarkdownEditor.js +11 -11
  259. package/dist/components/Markdown/MarkdownGithub.js +1 -1
  260. package/dist/components/Markdown/MarkdownPopover.js +6 -6
  261. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  262. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  263. package/dist/components/Markdown/MarkdownSynapse.js +139 -135
  264. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  265. package/dist/components/Markdown/MarkdownUtils.d.ts +8 -0
  266. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  267. package/dist/components/Markdown/MarkdownUtils.js +139 -65
  268. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  269. package/dist/components/Markdown/UserMentionModal.js +18 -18
  270. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  271. package/dist/components/Markdown/widget/MarkdownButton.js +3 -3
  272. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  273. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.d.ts.map +1 -1
  274. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +9 -8
  275. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  276. package/dist/components/Plot/SynapsePlot.css +1 -0
  277. package/dist/components/Plot/SynapsePlot.d.ts +2 -0
  278. package/dist/components/Plot/SynapsePlot.d.ts.map +1 -1
  279. package/dist/components/Plot/SynapsePlot.js +43 -39
  280. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  281. package/dist/components/Plot/SynapsePlot.scss +8 -0
  282. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +1 -1
  283. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -0
  284. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  285. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +137 -135
  286. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  287. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts +1 -1
  288. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts.map +1 -1
  289. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  290. package/dist/components/Resources/Resources.Desktop.js +7 -7
  291. package/dist/components/Resources/Resources.Mobile.js +6 -6
  292. package/dist/components/StorybookComponentWrapper.js +6 -3
  293. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  294. package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js +3 -3
  295. package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js +10 -10
  296. package/dist/components/SynapseChat/SynapseChat.d.ts +7 -1
  297. package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
  298. package/dist/components/SynapseChat/SynapseChat.js +76 -67
  299. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  300. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +2 -1
  301. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  302. package/dist/components/SynapseChat/SynapseChatInteraction.js +83 -58
  303. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  304. package/dist/components/SynapseChat/SynapseChatMessage.d.ts +1 -0
  305. package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
  306. package/dist/components/SynapseChat/SynapseChatMessage.js +16 -15
  307. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  308. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts +12 -0
  309. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -0
  310. package/dist/components/SynapseChat/SynapsePortalChatDialog.js +30 -0
  311. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -0
  312. package/dist/components/SynapseChat/extractMessageFromTraceEvent.d.ts.map +1 -1
  313. package/dist/components/SynapseChat/extractMessageFromTraceEvent.js +22 -16
  314. package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
  315. package/dist/components/SynapseChat/index.d.ts +2 -0
  316. package/dist/components/SynapseChat/index.d.ts.map +1 -1
  317. package/dist/components/SynapseChat/index.js +5 -3
  318. package/dist/components/SynapseChat/index.js.map +1 -1
  319. package/dist/components/SynapseChat/useChatState.d.ts +1 -1
  320. package/dist/components/SynapseChat/useChatState.d.ts.map +1 -1
  321. package/dist/components/SynapseChat/useChatState.js +10 -7
  322. package/dist/components/SynapseChat/useChatState.js.map +1 -1
  323. package/dist/components/SynapseForm/WarningDialog.d.ts +1 -0
  324. package/dist/components/SynapseForm/WarningDialog.d.ts.map +1 -1
  325. package/dist/components/SynapseForm/WarningDialog.js +18 -16
  326. package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
  327. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +1 -1
  328. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +25 -25
  329. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  330. package/dist/components/SynapseSearchPageResults/HasAccessChip.js +1 -1
  331. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.d.ts.map +1 -1
  332. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js +12 -13
  333. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
  334. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +5 -5
  335. package/dist/components/SynapseTable/ExpandableTableDataCell.d.ts.map +1 -1
  336. package/dist/components/SynapseTable/ExpandableTableDataCell.js +3 -1
  337. package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
  338. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +13 -13
  339. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  340. package/dist/components/SynapseTable/SynapseTable.js +4 -4
  341. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.d.ts.map +1 -1
  342. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js +122 -122
  343. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
  344. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js +9 -9
  345. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
  346. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +5 -5
  347. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
  348. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js +1 -1
  349. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +1 -1
  350. package/dist/components/TableFeedCards/TableFeedCards.js +9 -9
  351. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js +10 -10
  352. package/dist/components/TextToComponentCollapse.d.ts +16 -0
  353. package/dist/components/TextToComponentCollapse.d.ts.map +1 -0
  354. package/dist/components/TextToComponentCollapse.js +29 -0
  355. package/dist/components/TextToComponentCollapse.js.map +1 -0
  356. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js +9 -9
  357. package/dist/components/UserSearchBox/UserSearchBox.d.ts +23 -0
  358. package/dist/components/UserSearchBox/UserSearchBox.d.ts.map +1 -0
  359. package/dist/components/UserSearchBox/UserSearchBox.js +146 -0
  360. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -0
  361. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js +13 -13
  362. package/dist/components/WizardChoiceButton/WizardChoiceButton.js +3 -3
  363. package/dist/components/dataaccess/AccessHistoryDashboard.js +5 -5
  364. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  365. package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
  366. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  367. package/dist/components/dataaccess/AccessSubmissionDashboard.js +1 -1
  368. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  369. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +5 -5
  370. package/dist/components/dataaccess/UseAccessRequirementTable.js +3 -3
  371. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  372. package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
  373. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +10 -5
  374. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
  375. package/dist/components/download_list/DownloadConfirmationUI.d.ts +1 -1
  376. package/dist/components/download_list/DownloadConfirmationUI.js +22 -22
  377. package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
  378. package/dist/components/download_list/DownloadConfirmationUtils.js +4 -4
  379. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  380. package/dist/components/entity/metadata/EntityModal.js +1 -1
  381. package/dist/components/entity/metadata/MetadataTable.js +1 -1
  382. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +1 -1
  383. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js +1 -1
  384. package/dist/components/entity/page/title_bar/TitleBarProperties.js +1 -1
  385. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
  386. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +27 -26
  387. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  388. package/dist/components/index.js +125 -121
  389. package/dist/components/index.js.map +1 -1
  390. package/dist/components/layout/InfiniteTableLayout.js +1 -1
  391. package/dist/components/row_renderers/ObservationCard.js +12 -11
  392. package/dist/components/row_renderers/ObservationCard.js.map +1 -1
  393. package/dist/components/row_renderers/utils/CardFooter.d.ts +1 -3
  394. package/dist/components/row_renderers/utils/CardFooter.d.ts.map +1 -1
  395. package/dist/components/row_renderers/utils/CardFooter.js +31 -45
  396. package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
  397. package/dist/components/styled/HoverPopover.css +1 -0
  398. package/dist/components/styled/HoverPopover.d.ts +28 -0
  399. package/dist/components/styled/HoverPopover.d.ts.map +1 -0
  400. package/dist/components/styled/HoverPopover.js +103 -0
  401. package/dist/components/styled/HoverPopover.js.map +1 -0
  402. package/dist/components/styled/HoverPopover.module.scss +9 -0
  403. package/dist/components/styled/HoverPopover.module.scss.js +10 -0
  404. package/dist/components/styled/HoverPopover.module.scss.js.map +1 -0
  405. package/dist/components/styled/index.d.ts +2 -0
  406. package/dist/components/styled/index.d.ts.map +1 -1
  407. package/dist/components/styled/index.js +11 -9
  408. package/dist/components/styled/index.js.map +1 -1
  409. package/dist/components/table/CsvPreview/CsvPreview.js +10 -5
  410. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  411. package/dist/components/table/CsvPreview/CsvPreviewDialog.js +10 -5
  412. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  413. package/dist/components/widgets/Range.js +1 -1
  414. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
  415. package/dist/components/widgets/facet-nav/FacetNavPanel.js +35 -32
  416. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  417. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +1 -1
  418. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
  419. package/dist/components/widgets/facet-nav/PlotsContainer.js +69 -68
  420. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  421. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
  422. package/dist/components/widgets/facet-nav/useFacetPlots.js +24 -21
  423. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  424. package/dist/components/widgets/query-filter/FacetFilterControls.js +3 -3
  425. package/dist/features/curator/GridPage/GridPage.js +10 -5
  426. package/dist/features/curator/GridPage/GridPage.js.map +1 -1
  427. package/dist/features/curator/GridPage/components/GridPageTitle.js +10 -5
  428. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  429. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  430. package/dist/index.js +155 -151
  431. package/dist/index.js.map +1 -1
  432. package/dist/mocks/msw/handlers/accessRequirementHandlers.js +5 -5
  433. package/dist/mocks/msw/handlers/projectStorageHandlers.js +5 -5
  434. package/dist/mocks/msw/handlers/wikiHandlers.js +1 -1
  435. package/dist/mocks/msw/handlers.d.ts.map +1 -1
  436. package/dist/mocks/msw/handlers.js +67 -59
  437. package/dist/mocks/msw/handlers.js.map +1 -1
  438. package/dist/style/base/_core.scss +0 -1
  439. package/dist/style/components/_all.scss +0 -2
  440. package/dist/style/components/_cards.scss +22 -0
  441. package/dist/style/components/_download-list-v2.scss +1 -1
  442. package/dist/style/components/_entity-badge.scss +0 -2
  443. package/dist/style/components/_expandable_table_data.scss +3 -3
  444. package/dist/style/components/_query-wrapper-plot-nav.scss +13 -0
  445. package/dist/style/components/facet_nav/_facet-nav-panel.scss +3 -0
  446. package/dist/style/components/facet_nav/_facet-nav.scss +4 -0
  447. package/dist/style/main.css +1 -1
  448. package/dist/synapse-client/SynapseClient.js +118 -118
  449. package/dist/synapse-client/SynapseClient.js.map +1 -1
  450. package/dist/synapse-queries/auth/useOIDC.js +1 -1
  451. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js +1 -1
  452. package/dist/synapse-queries/entity/index.js +6 -6
  453. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
  454. package/dist/synapse-queries/index.js +1 -1
  455. package/dist/synapse-queries/user/usePersonalAccessToken.js +1 -1
  456. package/dist/testutils/vitest.setup.js +10 -11
  457. package/dist/testutils/vitest.setup.js.map +1 -1
  458. package/dist/theme/DefaultTheme.js +1 -1
  459. package/dist/theme/ThemeProvider.d.ts +2 -1
  460. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  461. package/dist/theme/ThemeProvider.js +11 -10
  462. package/dist/theme/ThemeProvider.js.map +1 -1
  463. package/dist/theme/index.js +1 -1
  464. package/dist/theme/mergeTheme.js +1 -1
  465. package/dist/tsconfig.build.tsbuildinfo +1 -1
  466. package/dist/utils/AppUtils/AppUtils.js +1 -1
  467. package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
  468. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  469. package/dist/utils/context/FullContextProvider.js +9 -9
  470. package/dist/utils/context/FullContextProvider.js.map +1 -1
  471. package/dist/utils/context/SynapseContext.d.ts.map +1 -1
  472. package/dist/utils/context/SynapseContext.js +1 -0
  473. package/dist/utils/context/SynapseContext.js.map +1 -1
  474. package/dist/utils/functions/SanitizeHtmlUtils.d.ts.map +1 -1
  475. package/dist/utils/functions/SanitizeHtmlUtils.js +34 -40
  476. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  477. package/dist/utils/functions/SqlFunctions.d.ts +4 -0
  478. package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
  479. package/dist/utils/functions/SqlFunctions.js +25 -23
  480. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  481. package/dist/utils/functions/deepLinkingUtils.js +10 -10
  482. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  483. package/dist/utils/hooks/index.js +6 -6
  484. package/dist/utils/hooks/useDetectSSOCode.js +3 -3
  485. package/dist/utils/hooks/useGetEntityMetadata.js +1 -1
  486. package/dist/utils/hooks/useNativeSearchParams.d.ts.map +1 -1
  487. package/dist/utils/hooks/useNativeSearchParams.js +1 -1
  488. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  489. package/dist/utils/hooks/useOneSageURL.d.ts.map +1 -1
  490. package/dist/utils/hooks/useOneSageURL.js +15 -15
  491. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  492. package/dist/utils/hooks/useSourceAppConfigs.d.ts +1 -0
  493. package/dist/utils/hooks/useSourceAppConfigs.d.ts.map +1 -1
  494. package/dist/utils/hooks/useSourceAppConfigs.js +79 -77
  495. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  496. package/dist/utils/index.js +4 -4
  497. package/package.json +15 -16
  498. package/dist/_virtual/index.js +0 -6
  499. package/dist/_virtual/index.js.map +0 -1
  500. package/dist/_virtual/index2.js +0 -5
  501. package/dist/_virtual/index2.js.map +0 -1
  502. package/dist/_virtual/index3.js +0 -5
  503. package/dist/_virtual/index3.js.map +0 -1
  504. package/dist/_virtual/index4.js +0 -5
  505. package/dist/_virtual/index4.js.map +0 -1
  506. package/dist/_virtual/index5.js +0 -5
  507. package/dist/_virtual/index5.js.map +0 -1
  508. package/dist/assets/themed_icons/Challenge.d.ts +0 -3
  509. package/dist/assets/themed_icons/Challenge.d.ts.map +0 -1
  510. package/dist/assets/themed_icons/Challenge.js +0 -25
  511. package/dist/assets/themed_icons/Challenge.js.map +0 -1
  512. package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts +0 -21
  513. package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts.map +0 -1
  514. package/dist/components/UserSearchBox/UserSearchBoxV2.js +0 -144
  515. package/dist/components/UserSearchBox/UserSearchBoxV2.js.map +0 -1
  516. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js +0 -53
  517. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js.map +0 -1
  518. package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js +0 -948
  519. package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js.map +0 -1
  520. package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js +0 -30
  521. package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js.map +0 -1
  522. 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
  523. 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
  524. package/dist/style/components/_download-cart-page.scss +0 -204
  525. package/dist/style/components/_user-search-box.scss +0 -30
@@ -1 +1 @@
1
- {"version":3,"file":"deepLinkingUtils.js","sources":["../../../src/utils/functions/deepLinkingUtils.ts"],"sourcesContent":["import { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { isEqual } from 'lodash-es'\nimport { parseEntityIdFromSqlStatement } from './SqlFunctions'\n\n/**\n * Compresses a string using the browser's CompressionStream API and returns base64.\n * @param str - The string to compress\n * @returns Base64-encoded compressed string\n */\nasync function compressString(str: string): Promise<string> {\n const encoder = new TextEncoder()\n const data = encoder.encode(str)\n\n const compressionStream = new CompressionStream('gzip')\n const writer = compressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(compressionStream.readable).arrayBuffer()\n\n await writer.write(data)\n await writer.close()\n\n const compressedArrayBuffer = await readPromise\n\n // Convert to base64\n const bytes = new Uint8Array(compressedArrayBuffer)\n let binary = ''\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n}\n\n/**\n * Decompresses a base64-encoded gzip string using the browser's DecompressionStream API.\n * @param base64Str - The base64-encoded compressed string\n * @returns The decompressed string\n */\nasync function decompressString(base64Str: string): Promise<string> {\n // Convert from base64 to Uint8Array\n const binary = atob(base64Str)\n const bytes = new Uint8Array(binary.length)\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i)\n }\n\n const decompressionStream = new DecompressionStream('gzip')\n const writer = decompressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(decompressionStream.readable).arrayBuffer()\n\n await writer.write(bytes)\n await writer.close()\n\n const decompressedArrayBuffer = await readPromise\n\n const decoder = new TextDecoder()\n return decoder.decode(decompressedArrayBuffer)\n}\n\n//id consists of a component class/function name and it's index\nfunction getComponentSearchHashId(\n componentName: string,\n componentIndex: number,\n): string {\n return `${componentName}${componentIndex}`\n}\n\n/**\n * Computes the difference between the current query and the initial query.\n * Returns only the fields that differ from the initial query.\n * Dynamically handles all fields in the Query type, making it safe for future changes.\n * @param currentQuery - The current query state\n * @param initQuery - The initial query state\n * @returns A partial Query object containing only the differences, or null if queries are equal\n */\nfunction computeQueryDiff(\n currentQuery: Query,\n initQuery: Query,\n): Partial<Query> | null {\n if (isEqual(currentQuery, initQuery)) {\n return null\n }\n\n const diff: Partial<Query> = {}\n\n // Get the union of keys from both currentQuery and initQuery to handle\n // both additions/changes and removals/omissions\n const allKeys = new Set([\n ...Object.keys(currentQuery),\n ...Object.keys(initQuery),\n ]) as Set<keyof Query>\n\n for (const key of allKeys) {\n if (!isEqual(currentQuery[key], initQuery[key])) {\n // Type assertion needed for dynamic key assignment\n // Include currentQuery[key] even if undefined to represent removals\n ;(diff as any)[key] = currentQuery[key]\n }\n }\n\n return Object.keys(diff).length > 0 ? diff : null\n}\n\n/**\n * Applies a query diff to the initial query to reconstruct the current query.\n * @param initQuery - The initial query state\n * @param diff - The partial query containing only the differences\n * @returns The reconstructed query\n */\nfunction applyQueryDiff(initQuery: Query, diff: Partial<Query>): Query {\n return {\n ...initQuery,\n ...diff,\n }\n}\n\n/**\n * Updates the url with the components' new search params. Stores only the\n * differences between currentQuery and initQuery, compressed with gzip and base64-encoded.\n * If the queries are equal, the search param will be removed.\n * @param componentName\n * @param componentIndex\n * @param currentQuery - The current query state, or null to remove the param\n * @param initQuery - The initial query state to compute diff against\n */\nexport async function updateUrlWithNewSearchParam(\n componentName: string,\n componentIndex: number | undefined,\n currentQuery: Query | null,\n initQuery: Query | null,\n): Promise<void> {\n const componentSearchHashId =\n componentIndex !== undefined\n ? getComponentSearchHashId(componentName, componentIndex)\n : componentName\n\n const currentSearch = new URLSearchParams(window.location.search)\n\n if (currentQuery && initQuery) {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (diff) {\n // Compress the diff and encode as base64\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n currentSearch.set(componentSearchHashId, compressed)\n } else {\n // Queries are equal, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n } else {\n // No current query or no init query, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n\n const searchString = currentSearch.toString()\n window.history.replaceState(\n null,\n '',\n window.location.pathname +\n (Array.from(currentSearch).length > 0\n ? `?${searchString.toString()}`\n : ''),\n )\n}\n\n/**\n * Retrieves a query request from the URL by applying the stored diff to the initial query.\n * @param componentIndex\n * @param initQuery - The initial query to apply the diff to\n * @returns A partial QueryBundleRequest with the reconstructed query, or undefined if no diff is stored\n */\nexport async function getQueryRequestFromLink(\n componentIndex: number,\n initQuery: Query,\n): Promise<Partial<QueryBundleRequest> | undefined> {\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n const searchParamValue = new URLSearchParams(window.location.search).get(\n paramKey,\n )\n\n let queryRequest: Partial<QueryBundleRequest> | undefined = undefined\n if (searchParamValue) {\n try {\n // Decompress and parse the diff from the URL\n const jsonString = await decompressString(searchParamValue)\n const diff = JSON.parse(jsonString) as Partial<Query>\n // Apply the diff to the init query to reconstruct the current query\n const query = applyQueryDiff(initQuery, diff)\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse query diff from URL:', error)\n }\n }\n\n // check for legacy search param for backward compatibility, but prioritize the new format if both are present\n const legacyParamKey = getComponentSearchHashId(\n 'QueryWrapper',\n componentIndex,\n )\n const legacySearchParamValue = new URLSearchParams(\n window.location.search,\n ).get(legacyParamKey)\n if (legacySearchParamValue && !queryRequest) {\n try {\n const query = JSON.parse(legacySearchParamValue) as Query\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse legacy query from URL:', error)\n }\n }\n return queryRequest\n}\n\n/**\n * Generates a URL with a compressed query diff parameter.\n * @param path - The base path for the URL\n * @param componentIndex - The component index (e.g., 0)\n * @param currentQuery - The query to encode\n * @param initQuery - The initial/default query to compute the diff against\n * @returns A Promise that resolves to the full URL with compressed query parameter\n */\nexport async function generateCompressedQueryURL(\n path: string,\n componentIndex: number,\n currentQuery: Query,\n initQuery: Query,\n): Promise<string> {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (!diff) {\n // Queries are equal, no need for a parameter\n return path\n }\n\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n\n return `${path}?${paramKey}=${encodeURIComponent(compressed)}`\n}\n"],"names":["compressString","str","data","compressionStream","writer","readPromise","compressedArrayBuffer","bytes","binary","i","decompressString","base64Str","decompressionStream","decompressedArrayBuffer","getComponentSearchHashId","componentName","componentIndex","computeQueryDiff","currentQuery","initQuery","isEqual","diff","allKeys","key","applyQueryDiff","updateUrlWithNewSearchParam","componentSearchHashId","currentSearch","jsonString","compressed","searchString","getQueryRequestFromLink","paramKey","searchParamValue","queryRequest","query","parseEntityIdFromSqlStatement","error","legacyParamKey","legacySearchParamValue","generateCompressedQueryURL","path"],"mappings":"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"}
1
+ {"version":3,"file":"deepLinkingUtils.js","sources":["../../../src/utils/functions/deepLinkingUtils.ts"],"sourcesContent":["import { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { isEqual } from 'lodash-es'\nimport { parseEntityIdFromSqlStatement } from './SqlFunctions'\n\n/**\n * Compresses a string using the browser's CompressionStream API and returns base64.\n * @param str - The string to compress\n * @returns Base64-encoded compressed string\n */\nasync function compressString(str: string): Promise<string> {\n const encoder = new TextEncoder()\n const data = encoder.encode(str)\n\n const compressionStream = new CompressionStream('gzip')\n const writer = compressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(compressionStream.readable).arrayBuffer()\n\n await writer.write(data)\n await writer.close()\n\n const compressedArrayBuffer = await readPromise\n\n // Convert to base64\n const bytes = new Uint8Array(compressedArrayBuffer)\n let binary = ''\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n}\n\n/**\n * Decompresses a base64-encoded gzip string using the browser's DecompressionStream API.\n * @param base64Str - The base64-encoded compressed string\n * @returns The decompressed string\n */\nasync function decompressString(base64Str: string): Promise<string> {\n // Convert from base64 to Uint8Array\n const binary = atob(base64Str)\n const bytes = new Uint8Array(binary.length)\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i)\n }\n\n const decompressionStream = new DecompressionStream('gzip')\n const writer = decompressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(decompressionStream.readable).arrayBuffer()\n\n await writer.write(bytes)\n await writer.close()\n\n const decompressedArrayBuffer = await readPromise\n\n const decoder = new TextDecoder()\n return decoder.decode(decompressedArrayBuffer)\n}\n\n//id consists of a component class/function name and it's index\nfunction getComponentSearchHashId(\n componentName: string,\n componentIndex: number,\n): string {\n return `${componentName}${componentIndex}`\n}\n\n/**\n * Computes the difference between the current query and the initial query.\n * Returns only the fields that differ from the initial query.\n * Dynamically handles all fields in the Query type, making it safe for future changes.\n * @param currentQuery - The current query state\n * @param initQuery - The initial query state\n * @returns A partial Query object containing only the differences, or null if queries are equal\n */\nfunction computeQueryDiff(\n currentQuery: Query,\n initQuery: Query,\n): Partial<Query> | null {\n if (isEqual(currentQuery, initQuery)) {\n return null\n }\n\n const diff: Partial<Query> = {}\n\n // Get the union of keys from both currentQuery and initQuery to handle\n // both additions/changes and removals/omissions\n const allKeys = new Set([\n ...Object.keys(currentQuery),\n ...Object.keys(initQuery),\n ]) as Set<keyof Query>\n\n for (const key of allKeys) {\n if (!isEqual(currentQuery[key], initQuery[key])) {\n // Type assertion needed for dynamic key assignment\n // Include currentQuery[key] even if undefined to represent removals\n ;(diff as any)[key] = currentQuery[key]\n }\n }\n\n return Object.keys(diff).length > 0 ? diff : null\n}\n\n/**\n * Applies a query diff to the initial query to reconstruct the current query.\n * @param initQuery - The initial query state\n * @param diff - The partial query containing only the differences\n * @returns The reconstructed query\n */\nfunction applyQueryDiff(initQuery: Query, diff: Partial<Query>): Query {\n return {\n ...initQuery,\n ...diff,\n }\n}\n\n/**\n * Updates the url with the components' new search params. Stores only the\n * differences between currentQuery and initQuery, compressed with gzip and base64-encoded.\n * If the queries are equal, the search param will be removed.\n * @param componentName\n * @param componentIndex\n * @param currentQuery - The current query state, or null to remove the param\n * @param initQuery - The initial query state to compute diff against\n */\nexport async function updateUrlWithNewSearchParam(\n componentName: string,\n componentIndex: number | undefined,\n currentQuery: Query | null,\n initQuery: Query | null,\n): Promise<void> {\n const componentSearchHashId =\n componentIndex !== undefined\n ? getComponentSearchHashId(componentName, componentIndex)\n : componentName\n\n const currentSearch = new URLSearchParams(window.location.search)\n\n if (currentQuery && initQuery) {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (diff) {\n // Compress the diff and encode as base64\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n currentSearch.set(componentSearchHashId, compressed)\n } else {\n // Queries are equal, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n } else {\n // No current query or no init query, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n\n const searchString = currentSearch.toString()\n window.history.replaceState(\n window.history.state,\n '',\n window.location.pathname +\n (Array.from(currentSearch).length > 0\n ? `?${searchString.toString()}`\n : ''),\n )\n}\n\n/**\n * Retrieves a query request from the URL by applying the stored diff to the initial query.\n * @param componentIndex\n * @param initQuery - The initial query to apply the diff to\n * @returns A partial QueryBundleRequest with the reconstructed query, or undefined if no diff is stored\n */\nexport async function getQueryRequestFromLink(\n componentIndex: number,\n initQuery: Query,\n): Promise<Partial<QueryBundleRequest> | undefined> {\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n const searchParamValue = new URLSearchParams(window.location.search).get(\n paramKey,\n )\n\n let queryRequest: Partial<QueryBundleRequest> | undefined = undefined\n if (searchParamValue) {\n try {\n // Decompress and parse the diff from the URL\n const jsonString = await decompressString(searchParamValue)\n const diff = JSON.parse(jsonString) as Partial<Query>\n // Apply the diff to the init query to reconstruct the current query\n const query = applyQueryDiff(initQuery, diff)\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse query diff from URL:', error)\n }\n }\n\n // check for legacy search param for backward compatibility, but prioritize the new format if both are present\n const legacyParamKey = getComponentSearchHashId(\n 'QueryWrapper',\n componentIndex,\n )\n const legacySearchParamValue = new URLSearchParams(\n window.location.search,\n ).get(legacyParamKey)\n if (legacySearchParamValue && !queryRequest) {\n try {\n const query = JSON.parse(legacySearchParamValue) as Query\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse legacy query from URL:', error)\n }\n }\n return queryRequest\n}\n\n/**\n * Generates a URL with a compressed query diff parameter.\n * @param path - The base path for the URL\n * @param componentIndex - The component index (e.g., 0)\n * @param currentQuery - The query to encode\n * @param initQuery - The initial/default query to compute the diff against\n * @returns A Promise that resolves to the full URL with compressed query parameter\n */\nexport async function generateCompressedQueryURL(\n path: string,\n componentIndex: number,\n currentQuery: Query,\n initQuery: Query,\n): Promise<string> {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (!diff) {\n // Queries are equal, no need for a parameter\n return path\n }\n\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n\n return `${path}?${paramKey}=${encodeURIComponent(compressed)}`\n}\n"],"names":["compressString","str","data","compressionStream","writer","readPromise","compressedArrayBuffer","bytes","binary","i","decompressString","base64Str","decompressionStream","decompressedArrayBuffer","getComponentSearchHashId","componentName","componentIndex","computeQueryDiff","currentQuery","initQuery","isEqual","diff","allKeys","key","applyQueryDiff","updateUrlWithNewSearchParam","componentSearchHashId","currentSearch","jsonString","compressed","searchString","getQueryRequestFromLink","paramKey","searchParamValue","queryRequest","query","parseEntityIdFromSqlStatement","error","legacyParamKey","legacySearchParamValue","generateCompressedQueryURL","path"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { useDebouncedEffect as y } from "./useDebouncedEffect.js";
2
- import { CSRF_TOKEN_STORAGE_KEY as b } from "./useDetectSSOCode.js";
1
+ import { useDebouncedEffect as T } from "./useDebouncedEffect.js";
2
+ import { CSRF_TOKEN_STORAGE_KEY as F } from "./useDetectSSOCode.js";
3
3
  import "../../synapse-client/SynapseClient.js";
4
4
  import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
5
5
  import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
@@ -24,12 +24,12 @@ import "@mui/material";
24
24
  import "@sage-bionetworks/synapse-client";
25
25
  import "../types/IsType.js";
26
26
  import { getOneSageBaseUrl as w, getOneSageUrl as B, useOneSageURL as D } from "./useOneSageURL.js";
27
- import { useMutuallyExclusiveState as Y } from "./useMutuallyExclusiveState.js";
27
+ import { default as Y } from "./useMutuallyExclusiveState.js";
28
28
  import { useOverlay as q } from "./useOverlay.js";
29
29
  import { fetchBlob as H, releaseResourceUrl as J, useCreateUrlForData as Q } from "./usePreFetchResource.js";
30
30
  import { useSet as W } from "./useSet.js";
31
31
  import { COOKIES_AGREEMENT_COOKIE_KEY as Z, allowAll as $, allowNone as ee, getCurrentCookiePreferences as oe, useCookiePreferences as re } from "./useCookiePreferences.js";
32
- import { shouldEnableGoogleAnalytics as me, useGoogleAnalytics as pe } from "../analytics/useGoogleAnalytics.js";
32
+ import { shouldEnableGoogleAnalytics as me, default as pe } from "../analytics/useGoogleAnalytics.js";
33
33
  import { STATIC_SOURCE_APP_CONFIG as le, useSourceAppConfigs as se } from "./useSourceAppConfigs.js";
34
34
  import { useNativeSearchParams as fe } from "./useNativeSearchParams.js";
35
35
  import "universal-cookie";
@@ -41,7 +41,7 @@ import '../../style/components/_spinner.css';/* empty css
41
41
  import "react-router";
42
42
  export {
43
43
  Z as COOKIES_AGREEMENT_COOKIE_KEY,
44
- b as CSRF_TOKEN_STORAGE_KEY,
44
+ F as CSRF_TOKEN_STORAGE_KEY,
45
45
  le as STATIC_SOURCE_APP_CONFIG,
46
46
  $ as allowAll,
47
47
  ee as allowNone,
@@ -54,7 +54,7 @@ export {
54
54
  me as shouldEnableGoogleAnalytics,
55
55
  re as useCookiePreferences,
56
56
  Q as useCreateUrlForData,
57
- y as useDebouncedEffect,
57
+ T as useDebouncedEffect,
58
58
  pe as useGoogleAnalytics,
59
59
  L as useListState,
60
60
  Y as useMutuallyExclusiveState,
@@ -1,4 +1,4 @@
1
- import { bindOAuthProviderToAccount as k, oAuthRegisterAccountStep2 as C, oAuthSessionRequest as _, getRootURL as P, setAccessTokenCookie as v } from "../../synapse-client/SynapseClient.js";
1
+ import { bindOAuthProviderToAccount as k, oAuthRegisterAccountStep2 as C, oAuthSessionRequest as _, setAccessTokenCookie as P, getRootURL as v } from "../../synapse-client/SynapseClient.js";
2
2
  import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
3
3
  import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
4
4
  import "@sage-bionetworks/synapse-client/util/SynapseClientError";
@@ -37,7 +37,7 @@ function V(i = {
37
37
  onTwoFactorAuthResetTokenPresent: h,
38
38
  isInitializingSession: p,
39
39
  isAuthenticated: I
40
- } = i, T = P(), w = new URL(
40
+ } = i, T = v(), w = new URL(
41
41
  typeof window < "u" ? window.location.href : "http://localhost/"
42
42
  ), { searchParams: a } = w, u = a?.get("code"), e = a?.get("provider"), g = !!(a?.get("client_id") && a?.get("redirect_uri")), l = L(() => {
43
43
  if (!g) {
@@ -85,7 +85,7 @@ Encoded value:
85
85
  ).then(O).catch(o).finally(() => d(!1));
86
86
  } else if (r.GOOGLE == e || r.ORCID == e || r.ARCUS == e || r.SAGE_BIONETWORKS == e) {
87
87
  const o = (t) => {
88
- t && ("accessToken" in t ? v(t.accessToken).then(
88
+ t && ("accessToken" in t ? P(t.accessToken).then(
89
89
  O
90
90
  ) : (R && R(t), // The user logged in with OAuth while attempting to disable 2FA using an emailed signed token
91
91
  l && l.twoFaResetToken && h && h(
@@ -29,7 +29,7 @@ import "react-router";
29
29
  import "@sage-bionetworks/synapse-client";
30
30
  import "../types/IsType.js";
31
31
  import { useGetEntity as U } from "../../synapse-queries/entity/useEntity.js";
32
- import { useGetEntityBundle as E } from "../../synapse-queries/entity/useEntityBundle.js";
32
+ import E from "../../synapse-queries/entity/useEntityBundle.js";
33
33
  import { useGetUploadDestinationForStorageLocation as S, useGetDefaultUploadDestination as G } from "../../synapse-queries/file/useUploadDestination.js";
34
34
  import { getDataFileHandle as I, getUploadDestinationString as H, getFileHandleStorageInfo as b } from "../functions/FileHandleUtils.js";
35
35
  const rt = (n, d) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useNativeSearchParams.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/useNativeSearchParams.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,eAAO,MAAM,qBAAqB,GAChC,OAAO,MAAM,KACZ,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAsCnD,CAAA"}
1
+ {"version":3,"file":"useNativeSearchParams.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/useNativeSearchParams.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,eAAO,MAAM,qBAAqB,GAChC,OAAO,MAAM,KACZ,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAuCnD,CAAA"}
@@ -17,7 +17,7 @@ const v = (t) => {
17
17
  const n = new URLSearchParams(window.location.search);
18
18
  e ? n.set(t, e) : n.delete(t);
19
19
  const r = `${window.location.pathname}?${n.toString()}`;
20
- window.history.pushState({}, "", r), a(e), window.dispatchEvent(new Event("pushstate"));
20
+ window.history.pushState(window.history.state ?? {}, "", r), a(e), window.dispatchEvent(new Event("pushstate"));
21
21
  }];
22
22
  };
23
23
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"useNativeSearchParams.js","sources":["../../../src/utils/hooks/useNativeSearchParams.tsx"],"sourcesContent":["import { useCallback, useState, useEffect } from 'react'\n\n/**\n * React hook that can be used to access the current state of window.location.search.\n * Only use this when you cannot use an equivalent hook provided by a routing library (e.g. react-router)\n */\n\nexport const useNativeSearchParams = (\n param: string,\n): [string | null, (newValue: string | null) => void] => {\n const getValue = useCallback(\n () =>\n new URLSearchParams(\n typeof window !== 'undefined' ? window.location.search : '',\n ).get(param),\n [param],\n )\n\n const [value, setValue] = useState(getValue)\n useEffect(() => {\n const onChange = () => {\n setValue(getValue())\n }\n window.addEventListener('popstate', onChange)\n window.addEventListener('pushstate', onChange)\n window.addEventListener('replacestate', onChange)\n return () => {\n window.removeEventListener('popstate', onChange)\n window.removeEventListener('pushstate', onChange)\n window.removeEventListener('replacestate', onChange)\n }\n }, [])\n\n const setSearchParam = (newValue: string | null) => {\n const searchParams = new URLSearchParams(window.location.search)\n if (newValue) {\n searchParams.set(param, newValue)\n } else {\n searchParams.delete(param)\n }\n const newUrl = `${window.location.pathname}?${searchParams.toString()}`\n window.history.pushState({}, '', newUrl)\n setValue(newValue)\n window.dispatchEvent(new Event('pushstate'))\n }\n\n return [value, setSearchParam]\n}\n"],"names":["useNativeSearchParams","param","getValue","useCallback","value","setValue","useState","useEffect","onChange","newValue","searchParams","newUrl"],"mappings":";AAOO,MAAMA,IAAwB,CACnCC,MACuD;AACvD,QAAMC,IAAWC;AAAA,IACf,MACE,IAAI;AAAA,MACF,OAAO,SAAW,MAAc,OAAO,SAAS,SAAS;AAAA,IAAA,EACzD,IAAIF,CAAK;AAAA,IACb,CAACA,CAAK;AAAA,EAAA,GAGF,CAACG,GAAOC,CAAQ,IAAIC,EAASJ,CAAQ;AAC3C,SAAAK,EAAU,MAAM;AACd,UAAMC,IAAW,MAAM;AACrB,MAAAH,EAASH,GAAU;AAAA,IACrB;AACA,kBAAO,iBAAiB,YAAYM,CAAQ,GAC5C,OAAO,iBAAiB,aAAaA,CAAQ,GAC7C,OAAO,iBAAiB,gBAAgBA,CAAQ,GACzC,MAAM;AACX,aAAO,oBAAoB,YAAYA,CAAQ,GAC/C,OAAO,oBAAoB,aAAaA,CAAQ,GAChD,OAAO,oBAAoB,gBAAgBA,CAAQ;AAAA,IACrD;AAAA,EACF,GAAG,CAAA,CAAE,GAeE,CAACJ,GAbe,CAACK,MAA4B;AAClD,UAAMC,IAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC/D,IAAID,IACFC,EAAa,IAAIT,GAAOQ,CAAQ,IAEhCC,EAAa,OAAOT,CAAK;AAE3B,UAAMU,IAAS,GAAG,OAAO,SAAS,QAAQ,IAAID,EAAa,UAAU;AACrE,WAAO,QAAQ,UAAU,CAAA,GAAI,IAAIC,CAAM,GACvCN,EAASI,CAAQ,GACjB,OAAO,cAAc,IAAI,MAAM,WAAW,CAAC;AAAA,EAC7C,CAE6B;AAC/B;"}
1
+ {"version":3,"file":"useNativeSearchParams.js","sources":["../../../src/utils/hooks/useNativeSearchParams.tsx"],"sourcesContent":["import { useCallback, useState, useEffect } from 'react'\n\n/**\n * React hook that can be used to access the current state of window.location.search.\n * Only use this when you cannot use an equivalent hook provided by a routing library (e.g. react-router)\n */\n\nexport const useNativeSearchParams = (\n param: string,\n): [string | null, (newValue: string | null) => void] => {\n const getValue = useCallback(\n () =>\n new URLSearchParams(\n typeof window !== 'undefined' ? window.location.search : '',\n ).get(param),\n [param],\n )\n\n const [value, setValue] = useState(getValue)\n useEffect(() => {\n const onChange = () => {\n setValue(getValue())\n }\n window.addEventListener('popstate', onChange)\n window.addEventListener('pushstate', onChange)\n window.addEventListener('replacestate', onChange)\n return () => {\n window.removeEventListener('popstate', onChange)\n window.removeEventListener('pushstate', onChange)\n window.removeEventListener('replacestate', onChange)\n }\n }, [])\n\n const setSearchParam = (newValue: string | null) => {\n const searchParams = new URLSearchParams(window.location.search)\n if (newValue) {\n searchParams.set(param, newValue)\n } else {\n searchParams.delete(param)\n }\n const newUrl = `${window.location.pathname}?${searchParams.toString()}`\n // Preserve existing history.state to avoid corrupting React Router internals\n window.history.pushState(window.history.state ?? {}, '', newUrl)\n setValue(newValue)\n window.dispatchEvent(new Event('pushstate'))\n }\n\n return [value, setSearchParam]\n}\n"],"names":["useNativeSearchParams","param","getValue","useCallback","value","setValue","useState","useEffect","onChange","newValue","searchParams","newUrl"],"mappings":";AAOO,MAAMA,IAAwB,CACnCC,MACuD;AACvD,QAAMC,IAAWC;AAAA,IACf,MACE,IAAI;AAAA,MACF,OAAO,SAAW,MAAc,OAAO,SAAS,SAAS;AAAA,IAAA,EACzD,IAAIF,CAAK;AAAA,IACb,CAACA,CAAK;AAAA,EAAA,GAGF,CAACG,GAAOC,CAAQ,IAAIC,EAASJ,CAAQ;AAC3C,SAAAK,EAAU,MAAM;AACd,UAAMC,IAAW,MAAM;AACrB,MAAAH,EAASH,GAAU;AAAA,IACrB;AACA,kBAAO,iBAAiB,YAAYM,CAAQ,GAC5C,OAAO,iBAAiB,aAAaA,CAAQ,GAC7C,OAAO,iBAAiB,gBAAgBA,CAAQ,GACzC,MAAM;AACX,aAAO,oBAAoB,YAAYA,CAAQ,GAC/C,OAAO,oBAAoB,aAAaA,CAAQ,GAChD,OAAO,oBAAoB,gBAAgBA,CAAQ;AAAA,IACrD;AAAA,EACF,GAAG,CAAA,CAAE,GAgBE,CAACJ,GAde,CAACK,MAA4B;AAClD,UAAMC,IAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC/D,IAAID,IACFC,EAAa,IAAIT,GAAOQ,CAAQ,IAEhCC,EAAa,OAAOT,CAAK;AAE3B,UAAMU,IAAS,GAAG,OAAO,SAAS,QAAQ,IAAID,EAAa,UAAU;AAErE,WAAO,QAAQ,UAAU,OAAO,QAAQ,SAAS,CAAA,GAAI,IAAIC,CAAM,GAC/DN,EAASI,CAAQ,GACjB,OAAO,cAAc,IAAI,MAAM,WAAW,CAAC;AAAA,EAC7C,CAE6B;AAC/B;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOneSageURL.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/useOneSageURL.ts"],"names":[],"mappings":"AAaA,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,sBAAsB,EAAE,MAAM,UA+B/B;AAED,wBAAgB,aAAa,CAC3B,eAAe,EAAE,MAAM,EACvB,sBAAsB,EAAE,MAAM,EAC9B,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,GAAE,MAAW,EACjB,MAAM,CAAC,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,MAAM,OAiBd;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,GAAE,MAAW,EACjB,MAAM,CAAC,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,MAAM,GACZ,GAAG,CAqBL"}
1
+ {"version":3,"file":"useOneSageURL.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/useOneSageURL.ts"],"names":[],"mappings":"AAaA,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,sBAAsB,EAAE,MAAM,UAmC/B;AAED,wBAAgB,aAAa,CAC3B,eAAe,EAAE,MAAM,EACvB,sBAAsB,EAAE,MAAM,EAC9B,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,GAAE,MAAW,EACjB,MAAM,CAAC,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,MAAM,OAiBd;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,GAAE,MAAW,EACjB,MAAM,CAAC,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,MAAM,GACZ,GAAG,CAqBL"}
@@ -2,51 +2,51 @@ import { useMemo as s } from "react";
2
2
  import { useSynapseContext as N } from "../context/SynapseContext.js";
3
3
  import "@sage-bionetworks/synapse-types";
4
4
  import "../functions/EntityTypeUtils.js";
5
- import { getEndpoint as S, BackendDestinationEnum as c } from "../functions/getEndpoint.js";
5
+ import { getEndpoint as S, BackendDestinationEnum as d } from "../functions/getEndpoint.js";
6
6
  import "../../synapse-client/SynapseClient.js";
7
7
  import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
8
8
  import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
9
9
  import "@sage-bionetworks/synapse-client/util/SynapseClientError";
10
10
  import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
11
11
  import "lodash-es";
12
- import { ONE_SAGE_APPID_QUERY_PARAM_KEY as d, SYNAPSE_BACKEND_PRODUCTION_URL as m, ONE_SAGE_PRODUCTION_URL as E, SYNAPSE_BACKEND_STAGING_URL as u, ONE_SAGE_STAGING_URL as A, SYNAPSE_BACKEND_DEV_URL as R, ONE_SAGE_DEV_URL as U } from "../SynapseConstants.js";
12
+ import { ONE_SAGE_APPID_QUERY_PARAM_KEY as u, SYNAPSE_BACKEND_PRODUCTION_URL as c, ONE_SAGE_PRODUCTION_URL as p, SYNAPSE_BACKEND_STAGING_URL as m, ONE_SAGE_STAGING_URL as A, SYNAPSE_BACKEND_DEV_URL as R, ONE_SAGE_DEV_URL as U } from "../SynapseConstants.js";
13
13
  function O(o, t) {
14
14
  const n = t.replace(
15
15
  /\/$/,
16
16
  ""
17
17
  );
18
18
  if (o === "synapse.org" || o.endsWith(".synapse.org")) {
19
+ if (n === c)
20
+ return p;
19
21
  if (n === m)
20
- return E;
21
- if (n === u)
22
22
  return A;
23
23
  if (n === R)
24
24
  return U;
25
25
  }
26
- return o === "localhost" || o === "127.0.0.1" ? `http://${o}:3000` : (console.warn(
26
+ return o === "localhost" || o === "127.0.0.1" ? `http://${o}:3000` : o ? (console.warn(
27
27
  `No accounts URL found for host: ${o} with backend endpoint: ${n}`
28
- ), E);
28
+ ), p) : p;
29
29
  }
30
- function P(o, t, n, r = "", e, p) {
31
- const _ = O(o, t), i = new URL(r, _);
32
- return n && i.searchParams.append(d, n), e && e.forEach((a, f) => {
33
- i.searchParams.append(f, a);
34
- }), p && (i.hash = p), i;
30
+ function P(o, t, n, e = "", r, E) {
31
+ const _ = O(o, t), i = new URL(e, _);
32
+ return n && i.searchParams.append(u, n), r && r.forEach((f, a) => {
33
+ i.searchParams.append(a, f);
34
+ }), E && (i.hash = E), i;
35
35
  }
36
36
  function k(o = "", t, n) {
37
- const { appId: r } = N(), e = S(
38
- c.REPO_ENDPOINT
37
+ const { appId: e } = N(), r = S(
38
+ d.REPO_ENDPOINT
39
39
  );
40
40
  return s(
41
41
  () => P(
42
42
  typeof window < "u" ? window.location.hostname.toLowerCase() : "",
43
- e,
44
43
  r,
44
+ e,
45
45
  o,
46
46
  t,
47
47
  n
48
48
  ),
49
- [e, r, o, t, n]
49
+ [r, e, o, t, n]
50
50
  );
51
51
  }
52
52
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"useOneSageURL.js","sources":["../../../src/utils/hooks/useOneSageURL.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { useSynapseContext } from '../context/SynapseContext'\nimport { BackendDestinationEnum, getEndpoint } from '../functions/index'\nimport {\n ONE_SAGE_APPID_QUERY_PARAM_KEY,\n ONE_SAGE_DEV_URL,\n ONE_SAGE_PRODUCTION_URL,\n ONE_SAGE_STAGING_URL,\n SYNAPSE_BACKEND_DEV_URL,\n SYNAPSE_BACKEND_PRODUCTION_URL,\n SYNAPSE_BACKEND_STAGING_URL,\n} from '../SynapseConstants'\n\nexport function getOneSageBaseUrl(\n currentHostname: string,\n currentBackendEndpoint: string,\n) {\n // If we're on synapse.org, then go to the accounts site that matches the current backend stack.\n //backend endpoint may contain a trailing slash, so let's remove it if present:\n const currentBackendEndpointWithoutSlash = currentBackendEndpoint.replace(\n /\\/$/,\n '',\n )\n if (\n currentHostname === 'synapse.org' ||\n currentHostname.endsWith('.synapse.org')\n ) {\n if (currentBackendEndpointWithoutSlash === SYNAPSE_BACKEND_PRODUCTION_URL) {\n return ONE_SAGE_PRODUCTION_URL\n }\n if (currentBackendEndpointWithoutSlash === SYNAPSE_BACKEND_STAGING_URL) {\n return ONE_SAGE_STAGING_URL\n }\n if (currentBackendEndpointWithoutSlash === SYNAPSE_BACKEND_DEV_URL) {\n return ONE_SAGE_DEV_URL\n }\n }\n\n if (currentHostname === 'localhost' || currentHostname === '127.0.0.1') {\n return `http://${currentHostname}:3000`\n }\n\n console.warn(\n `No accounts URL found for host: ${currentHostname} with backend endpoint: ${currentBackendEndpointWithoutSlash}`,\n )\n return ONE_SAGE_PRODUCTION_URL\n}\n\nexport function getOneSageUrl(\n currentHostname: string,\n currentBackendEndpoint: string,\n appId?: string,\n path: string = '',\n search?: URLSearchParams,\n hash?: string,\n) {\n const targetURL = getOneSageBaseUrl(currentHostname, currentBackendEndpoint)\n\n const url = new URL(path, targetURL)\n if (appId) {\n url.searchParams.append(ONE_SAGE_APPID_QUERY_PARAM_KEY, appId)\n }\n if (search) {\n search.forEach((value, key) => {\n url.searchParams.append(key, value)\n })\n }\n if (hash) {\n url.hash = hash\n }\n return url\n}\n\n/**\n * Create a URL to OneSage that includes the current app's ID using SynapseContext\n * @param path the path to the OneSage page\n * @param search an optional set of URLSearchParams to append to the URL\n * @param hash an optional hash to append to the URL\n */\nexport function useOneSageURL(\n path: string = '',\n search?: URLSearchParams,\n hash?: string,\n): URL {\n const { appId } = useSynapseContext()\n\n const currentBackendEndpoint = getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n )\n\n return useMemo(\n () =>\n getOneSageUrl(\n typeof window !== 'undefined'\n ? window.location.hostname.toLowerCase()\n : '',\n currentBackendEndpoint,\n appId,\n path,\n search,\n hash,\n ),\n [currentBackendEndpoint, appId, path, search, hash],\n )\n}\n"],"names":["getOneSageBaseUrl","currentHostname","currentBackendEndpoint","currentBackendEndpointWithoutSlash","SYNAPSE_BACKEND_PRODUCTION_URL","ONE_SAGE_PRODUCTION_URL","SYNAPSE_BACKEND_STAGING_URL","ONE_SAGE_STAGING_URL","SYNAPSE_BACKEND_DEV_URL","ONE_SAGE_DEV_URL","getOneSageUrl","appId","path","search","hash","targetURL","url","ONE_SAGE_APPID_QUERY_PARAM_KEY","value","key","useOneSageURL","useSynapseContext","getEndpoint","BackendDestinationEnum","useMemo"],"mappings":";;;;;;;;;;;;AAaO,SAASA,EACdC,GACAC,GACA;AAGA,QAAMC,IAAqCD,EAAuB;AAAA,IAChE;AAAA,IACA;AAAA,EAAA;AAEF,MACED,MAAoB,iBACpBA,EAAgB,SAAS,cAAc,GACvC;AACA,QAAIE,MAAuCC;AACzC,aAAOC;AAET,QAAIF,MAAuCG;AACzC,aAAOC;AAET,QAAIJ,MAAuCK;AACzC,aAAOC;AAAA,EAEX;AAEA,SAAIR,MAAoB,eAAeA,MAAoB,cAClD,UAAUA,CAAe,WAGlC,QAAQ;AAAA,IACN,mCAAmCA,CAAe,2BAA2BE,CAAkC;AAAA,EAAA,GAE1GE;AACT;AAEO,SAASK,EACdT,GACAC,GACAS,GACAC,IAAe,IACfC,GACAC,GACA;AACA,QAAMC,IAAYf,EAAkBC,GAAiBC,CAAsB,GAErEc,IAAM,IAAI,IAAIJ,GAAMG,CAAS;AACnC,SAAIJ,KACFK,EAAI,aAAa,OAAOC,GAAgCN,CAAK,GAE3DE,KACFA,EAAO,QAAQ,CAACK,GAAOC,MAAQ;AAC7B,IAAAH,EAAI,aAAa,OAAOG,GAAKD,CAAK;AAAA,EACpC,CAAC,GAECJ,MACFE,EAAI,OAAOF,IAENE;AACT;AAQO,SAASI,EACdR,IAAe,IACfC,GACAC,GACK;AACL,QAAM,EAAE,OAAAH,EAAA,IAAUU,EAAA,GAEZnB,IAAyBoB;AAAA,IAC7BC,EAAuB;AAAA,EAAA;AAGzB,SAAOC;AAAA,IACL,MACEd;AAAA,MACE,OAAO,SAAW,MACd,OAAO,SAAS,SAAS,gBACzB;AAAA,MACJR;AAAA,MACAS;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAAA,IAEJ,CAACZ,GAAwBS,GAAOC,GAAMC,GAAQC,CAAI;AAAA,EAAA;AAEtD;"}
1
+ {"version":3,"file":"useOneSageURL.js","sources":["../../../src/utils/hooks/useOneSageURL.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { useSynapseContext } from '../context/SynapseContext'\nimport { BackendDestinationEnum, getEndpoint } from '../functions/index'\nimport {\n ONE_SAGE_APPID_QUERY_PARAM_KEY,\n ONE_SAGE_DEV_URL,\n ONE_SAGE_PRODUCTION_URL,\n ONE_SAGE_STAGING_URL,\n SYNAPSE_BACKEND_DEV_URL,\n SYNAPSE_BACKEND_PRODUCTION_URL,\n SYNAPSE_BACKEND_STAGING_URL,\n} from '../SynapseConstants'\n\nexport function getOneSageBaseUrl(\n currentHostname: string,\n currentBackendEndpoint: string,\n) {\n // If we're on synapse.org, then go to the accounts site that matches the current backend stack.\n //backend endpoint may contain a trailing slash, so let's remove it if present:\n const currentBackendEndpointWithoutSlash = currentBackendEndpoint.replace(\n /\\/$/,\n '',\n )\n if (\n currentHostname === 'synapse.org' ||\n currentHostname.endsWith('.synapse.org')\n ) {\n if (currentBackendEndpointWithoutSlash === SYNAPSE_BACKEND_PRODUCTION_URL) {\n return ONE_SAGE_PRODUCTION_URL\n }\n if (currentBackendEndpointWithoutSlash === SYNAPSE_BACKEND_STAGING_URL) {\n return ONE_SAGE_STAGING_URL\n }\n if (currentBackendEndpointWithoutSlash === SYNAPSE_BACKEND_DEV_URL) {\n return ONE_SAGE_DEV_URL\n }\n }\n\n if (currentHostname === 'localhost' || currentHostname === '127.0.0.1') {\n return `http://${currentHostname}:3000`\n }\n\n if (!currentHostname) {\n return ONE_SAGE_PRODUCTION_URL\n }\n\n console.warn(\n `No accounts URL found for host: ${currentHostname} with backend endpoint: ${currentBackendEndpointWithoutSlash}`,\n )\n return ONE_SAGE_PRODUCTION_URL\n}\n\nexport function getOneSageUrl(\n currentHostname: string,\n currentBackendEndpoint: string,\n appId?: string,\n path: string = '',\n search?: URLSearchParams,\n hash?: string,\n) {\n const targetURL = getOneSageBaseUrl(currentHostname, currentBackendEndpoint)\n\n const url = new URL(path, targetURL)\n if (appId) {\n url.searchParams.append(ONE_SAGE_APPID_QUERY_PARAM_KEY, appId)\n }\n if (search) {\n search.forEach((value, key) => {\n url.searchParams.append(key, value)\n })\n }\n if (hash) {\n url.hash = hash\n }\n return url\n}\n\n/**\n * Create a URL to OneSage that includes the current app's ID using SynapseContext\n * @param path the path to the OneSage page\n * @param search an optional set of URLSearchParams to append to the URL\n * @param hash an optional hash to append to the URL\n */\nexport function useOneSageURL(\n path: string = '',\n search?: URLSearchParams,\n hash?: string,\n): URL {\n const { appId } = useSynapseContext()\n\n const currentBackendEndpoint = getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n )\n\n return useMemo(\n () =>\n getOneSageUrl(\n typeof window !== 'undefined'\n ? window.location.hostname.toLowerCase()\n : '',\n currentBackendEndpoint,\n appId,\n path,\n search,\n hash,\n ),\n [currentBackendEndpoint, appId, path, search, hash],\n )\n}\n"],"names":["getOneSageBaseUrl","currentHostname","currentBackendEndpoint","currentBackendEndpointWithoutSlash","SYNAPSE_BACKEND_PRODUCTION_URL","ONE_SAGE_PRODUCTION_URL","SYNAPSE_BACKEND_STAGING_URL","ONE_SAGE_STAGING_URL","SYNAPSE_BACKEND_DEV_URL","ONE_SAGE_DEV_URL","getOneSageUrl","appId","path","search","hash","targetURL","url","ONE_SAGE_APPID_QUERY_PARAM_KEY","value","key","useOneSageURL","useSynapseContext","getEndpoint","BackendDestinationEnum","useMemo"],"mappings":";;;;;;;;;;;;AAaO,SAASA,EACdC,GACAC,GACA;AAGA,QAAMC,IAAqCD,EAAuB;AAAA,IAChE;AAAA,IACA;AAAA,EAAA;AAEF,MACED,MAAoB,iBACpBA,EAAgB,SAAS,cAAc,GACvC;AACA,QAAIE,MAAuCC;AACzC,aAAOC;AAET,QAAIF,MAAuCG;AACzC,aAAOC;AAET,QAAIJ,MAAuCK;AACzC,aAAOC;AAAA,EAEX;AAEA,SAAIR,MAAoB,eAAeA,MAAoB,cAClD,UAAUA,CAAe,UAG7BA,KAIL,QAAQ;AAAA,IACN,mCAAmCA,CAAe,2BAA2BE,CAAkC;AAAA,EAAA,GAE1GE,KANEA;AAOX;AAEO,SAASK,EACdT,GACAC,GACAS,GACAC,IAAe,IACfC,GACAC,GACA;AACA,QAAMC,IAAYf,EAAkBC,GAAiBC,CAAsB,GAErEc,IAAM,IAAI,IAAIJ,GAAMG,CAAS;AACnC,SAAIJ,KACFK,EAAI,aAAa,OAAOC,GAAgCN,CAAK,GAE3DE,KACFA,EAAO,QAAQ,CAACK,GAAOC,MAAQ;AAC7B,IAAAH,EAAI,aAAa,OAAOG,GAAKD,CAAK;AAAA,EACpC,CAAC,GAECJ,MACFE,EAAI,OAAOF,IAENE;AACT;AAQO,SAASI,EACdR,IAAe,IACfC,GACAC,GACK;AACL,QAAM,EAAE,OAAAH,EAAA,IAAUU,EAAA,GAEZnB,IAAyBoB;AAAA,IAC7BC,EAAuB;AAAA,EAAA;AAGzB,SAAOC;AAAA,IACL,MACEd;AAAA,MACE,OAAO,SAAW,MACd,OAAO,SAAS,SAAS,gBACzB;AAAA,MACJR;AAAA,MACAS;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAAA,IAEJ,CAACZ,GAAwBS,GAAOC,GAAMC,GAAQC,CAAI;AAAA,EAAA;AAEtD;"}
@@ -13,6 +13,7 @@ export type SourceAppConfig = {
13
13
  isPublicized: boolean;
14
14
  shortDescription: string;
15
15
  defaultRealm: Realm;
16
+ area?: string;
16
17
  };
17
18
  export declare const STATIC_SOURCE_APP_CONFIG: SourceAppConfig;
18
19
  export declare const useSourceAppConfigs: (sourceAppConfigTableID: string, additionalFilters?: QueryFilter[]) => SourceAppConfig[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"useSourceAppConfigs.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/useSourceAppConfigs.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAW,MAAM,OAAO,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAM7D,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,KAAK,CAAA;CACpB,CAAA;AAGD,eAAO,MAAM,wBAAwB,EAAE,eActC,CAAA;AASD,eAAO,MAAM,mBAAmB,GAC9B,wBAAwB,MAAM,EAC9B,oBAAoB,WAAW,EAAE,KAChC,eAAe,EAAE,GAAG,SAkLtB,CAAA"}
1
+ {"version":3,"file":"useSourceAppConfigs.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/useSourceAppConfigs.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAW,MAAM,OAAO,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAM7D,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,KAAK,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAGD,eAAO,MAAM,wBAAwB,EAAE,eActC,CAAA;AASD,eAAO,MAAM,mBAAmB,GAC9B,wBAAwB,MAAM,EAC9B,oBAAoB,WAAW,EAAE,KAChC,eAAe,EAAE,GAAG,SA0LtB,CAAA"}
@@ -1,18 +1,18 @@
1
- import { jsx as L, Fragment as z } from "react/jsx-runtime";
2
- import K from "../../components/SourceAppImage.js";
3
- import * as M from "../../synapse-client/SynapseClient.js";
1
+ import { jsx as U, Fragment as M } from "react/jsx-runtime";
2
+ import T from "../../components/SourceAppImage.js";
3
+ import * as k from "../../synapse-client/SynapseClient.js";
4
4
  import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
5
5
  import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
6
6
  import "@sage-bionetworks/synapse-client/util/SynapseClientError";
7
7
  import "@sage-bionetworks/synapse-types";
8
8
  import "../functions/EntityTypeUtils.js";
9
- import { BUNDLE_MASK_QUERY_RESULTS as T } from "../SynapseConstants.js";
9
+ import { BUNDLE_MASK_QUERY_RESULTS as D } from "../SynapseConstants.js";
10
10
  import "lodash-es";
11
11
  import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
12
- import a from "../../theme/palette/Palettes.js";
13
- import { useMemo as A } from "react";
14
- import { useSuspenseQuery as k, useQueries as D } from "@tanstack/react-query";
15
- import { useSynapseContext as G } from "../context/SynapseContext.js";
12
+ import l from "../../theme/palette/Palettes.js";
13
+ import { useMemo as L } from "react";
14
+ import { useSuspenseQuery as G, useQueries as H } from "@tanstack/react-query";
15
+ import { useSynapseContext as W } from "../context/SynapseContext.js";
16
16
  import "../PermissionLevelToAccessType.js";
17
17
  import "use-deep-compare-effect";
18
18
  import "@mui/material";
@@ -29,42 +29,42 @@ import "lodash-es/xorWith";
29
29
  import "react-router";
30
30
  import "@sage-bionetworks/synapse-client";
31
31
  import "../types/IsType.js";
32
- import { tableQueryUseQueryDefaults as H } from "../../synapse-queries/entity/useGetQueryResultBundle.js";
33
- import { getRealmByIdQueryOptions as W } from "../../synapse-queries/realm/useRealmPrincipals.js";
34
- const j = {
32
+ import { tableQueryUseQueryDefaults as j } from "../../synapse-queries/entity/useGetQueryResultBundle.js";
33
+ import { getRealmByIdQueryOptions as J } from "../../synapse-queries/realm/useRealmPrincipals.js";
34
+ const V = {
35
35
  appId: "synapse.org",
36
36
  appURL: "",
37
37
  description: "",
38
38
  friendlyName: "Synapse",
39
39
  requestAffiliation: !1,
40
- logo: /* @__PURE__ */ L(z, {}),
40
+ logo: /* @__PURE__ */ U(M, {}),
41
41
  isPublicized: !0,
42
- palette: { ...a.palette },
42
+ palette: { ...l.palette },
43
43
  shortDescription: "",
44
44
  defaultRealm: {
45
45
  id: "0",
46
46
  name: "Synapse"
47
47
  }
48
- }, J = [j], Ue = (r, U) => {
49
- const { synapseClient: _, keyFactory: C } = G(), R = {
50
- entityId: r,
48
+ }, Y = [V], he = (n, _) => {
49
+ const { synapseClient: h, keyFactory: R } = W(), S = {
50
+ entityId: n,
51
51
  query: {
52
- sql: `SELECT * FROM ${r}`,
52
+ sql: `SELECT * FROM ${n}`,
53
53
  limit: 75,
54
- additionalFilters: U
54
+ additionalFilters: _
55
55
  },
56
- partMask: T,
56
+ partMask: D,
57
57
  concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest"
58
- }, { data: l } = k({
59
- ...H,
60
- queryKey: C.getEntityTableQueryResultWithAsyncStatusQueryKey(
61
- R,
58
+ }, { data: d } = G({
59
+ ...j,
60
+ queryKey: R.getEntityTableQueryResultWithAsyncStatusQueryKey(
61
+ S,
62
62
  !1
63
63
  ),
64
64
  queryFn: async () => {
65
65
  try {
66
- return await M.getQueryTableAsyncJobResults(
67
- R,
66
+ return await k.getQueryTableAsyncJobResults(
67
+ S,
68
68
  void 0
69
69
  // use an undefined access token to query a table in the default realm
70
70
  );
@@ -72,94 +72,96 @@ const j = {
72
72
  return null;
73
73
  }
74
74
  }
75
- }), n = l?.responseBody?.queryResult?.queryResults, o = n?.headers, m = o?.findIndex(
75
+ }), r = d?.responseBody?.queryResult?.queryResults, o = r?.headers, m = o?.findIndex(
76
76
  (e) => e.name == "appId"
77
- ), d = o?.findIndex(
77
+ ), p = o?.findIndex(
78
78
  (e) => e.name == "appURL"
79
- ), S = o?.findIndex(
79
+ ), q = o?.findIndex(
80
80
  (e) => e.name == "friendlyName"
81
- ), p = o?.findIndex(
81
+ ), u = o?.findIndex(
82
82
  (e) => e.name == "description"
83
- ), q = o?.findIndex(
83
+ ), g = o?.findIndex(
84
84
  (e) => e.name == "logo"
85
- ), u = o?.findIndex(
85
+ ), c = o?.findIndex(
86
86
  (e) => e.name == "requestAffiliation"
87
- ), g = o?.findIndex(
88
- (e) => e.name == "primaryColor"
89
87
  ), P = o?.findIndex(
88
+ (e) => e.name == "primaryColor"
89
+ ), Q = o?.findIndex(
90
90
  (e) => e.name == "secondaryColor"
91
- ), c = o?.findIndex(
92
- (e) => e.name == "isPublicized"
93
91
  ), y = o?.findIndex(
94
- (e) => e.name == "shortDescription"
92
+ (e) => e.name == "isPublicized"
95
93
  ), f = o?.findIndex(
94
+ (e) => e.name == "shortDescription"
95
+ ), I = o?.findIndex(
96
96
  (e) => e.name == "realmId"
97
- ), Q = n?.rows, s = A(
98
- () => Q?.map((e) => {
99
- const t = e.values, x = t[q], i = t[S] ?? "", h = /* @__PURE__ */ L(
100
- K,
97
+ ), s = o?.findIndex((e) => e.name == "area") ?? -1, A = r?.rows, i = L(
98
+ () => A?.map((e) => {
99
+ const t = e.values, C = t[g], a = t[q] ?? "", b = /* @__PURE__ */ U(
100
+ T,
101
101
  {
102
- sourceAppConfigTableID: r,
103
- fileHandleId: x,
104
- friendlyName: i
102
+ sourceAppConfigTableID: n,
103
+ fileHandleId: C,
104
+ friendlyName: a
105
105
  }
106
- ), b = {
107
- ...a.palette,
108
- primary: a.generatePalette(
109
- t[g] ?? ""
110
- ),
111
- secondary: a.generatePalette(
106
+ ), E = {
107
+ ...l.palette,
108
+ primary: l.generatePalette(
112
109
  t[P] ?? ""
110
+ ),
111
+ secondary: l.generatePalette(
112
+ t[Q] ?? ""
113
113
  )
114
- }, E = t[m] == null ? "" : t[m], F = t[d] == null ? "" : t[d], N = t[p] == null ? "" : t[p], w = t[y] == null ? "" : t[y], B = t[u] == null ? !1 : t[u] == "true", O = t[c] == null ? !0 : t[c] == "true", v = t[f] == null ? "0" : t[f];
114
+ }, F = t[m] == null ? "" : t[m], N = t[p] == null ? "" : t[p], v = t[u] == null ? "" : t[u], w = t[f] == null ? "" : t[f], B = t[c] == null ? !1 : t[c] == "true", O = t[y] == null ? !0 : t[y] == "true", z = t[I] == null ? "0" : t[I], K = s >= 0 && t[s] != null ? t[s] : void 0;
115
115
  return {
116
- appId: E,
117
- appURL: F,
118
- description: N,
119
- friendlyName: i,
116
+ appId: F,
117
+ appURL: N,
118
+ description: v,
119
+ friendlyName: a,
120
120
  requestAffiliation: B,
121
- logo: h,
121
+ logo: b,
122
122
  isPublicized: O,
123
- palette: b,
123
+ palette: E,
124
124
  shortDescription: w,
125
- realmId: v
125
+ realmId: z,
126
+ area: K
126
127
  };
127
128
  }),
128
129
  [
129
- Q,
130
- q,
131
- S,
132
- r,
130
+ A,
133
131
  g,
132
+ q,
133
+ n,
134
134
  P,
135
+ Q,
135
136
  m,
136
- d,
137
137
  p,
138
- y,
139
138
  u,
139
+ f,
140
140
  c,
141
- f
141
+ y,
142
+ I,
143
+ s
142
144
  ]
143
- ), I = D({
144
- queries: s?.map(
145
- (e) => W(e.realmId, C, _)
145
+ ), x = H({
146
+ queries: i?.map(
147
+ (e) => J(e.realmId, R, h)
146
148
  ) ?? []
147
149
  });
148
- return A(() => {
149
- if (!l || !n)
150
- return J;
151
- if (!(!s || !I.every((t) => t.isSuccess)))
152
- return s.map((t, x) => {
153
- const i = I[x].data;
150
+ return L(() => {
151
+ if (!d || !r)
152
+ return Y;
153
+ if (!(!i || !x.every((t) => t.isSuccess)))
154
+ return i.map((t, C) => {
155
+ const a = x[C].data;
154
156
  return {
155
157
  ...t,
156
- defaultRealm: i
158
+ defaultRealm: a
157
159
  };
158
160
  });
159
- }, [s, I, l, n]);
161
+ }, [i, x, d, r]);
160
162
  };
161
163
  export {
162
- j as STATIC_SOURCE_APP_CONFIG,
163
- Ue as useSourceAppConfigs
164
+ V as STATIC_SOURCE_APP_CONFIG,
165
+ he as useSourceAppConfigs
164
166
  };
165
167
  //# sourceMappingURL=useSourceAppConfigs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSourceAppConfigs.js","sources":["../../../src/utils/hooks/useSourceAppConfigs.tsx"],"sourcesContent":["import SourceAppImage from '@/components/SourceAppImage'\nimport SynapseClient from '@/synapse-client'\nimport Palettes from '@/theme/palette/Palettes'\nimport { Realm } from '@sage-bionetworks/synapse-client'\nimport { PaletteOptions } from '@mui/material'\nimport { ReactNode, useMemo } from 'react'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '../SynapseConstants'\nimport { QueryFilter } from '@sage-bionetworks/synapse-types'\nimport { useQueries, useSuspenseQuery } from '@tanstack/react-query'\nimport { useSynapseContext } from '../context/SynapseContext'\nimport { tableQueryUseQueryDefaults } from '@/synapse-queries'\nimport { getRealmByIdQueryOptions } from '@/synapse-queries/realm/useRealmPrincipals'\n\nexport type SourceAppConfig = {\n appId: string // app ID used in the query params\n appURL: string // URL that points to the production version of this app\n friendlyName: string\n logo: ReactNode\n palette: PaletteOptions\n description: string\n requestAffiliation: boolean // If set to true, a special screen is shown requesting the user to fill out UserProfile.company\n isPublicized: boolean // If set to true, this will be included in the list of the available Sage Resources\n shortDescription: string\n defaultRealm: Realm\n}\n\n// A static SourceAppConfig to use as a fallback in case the request to get source app configs fails\nexport const STATIC_SOURCE_APP_CONFIG: SourceAppConfig = {\n appId: 'synapse.org',\n appURL: '',\n description: '',\n friendlyName: 'Synapse',\n requestAffiliation: false,\n logo: <></>,\n isPublicized: true,\n palette: { ...Palettes.palette },\n shortDescription: '',\n defaultRealm: {\n id: '0',\n name: 'Synapse',\n },\n}\n\n// Stable array reference to prevent infinite re-renders\nconst FALLBACK_SOURCE_APP_CONFIGS = [STATIC_SOURCE_APP_CONFIG]\n\ntype SourceAppConfigWithRealmId = Omit<SourceAppConfig, 'defaultRealm'> & {\n realmId: string\n}\n\nexport const useSourceAppConfigs = (\n sourceAppConfigTableID: string,\n additionalFilters?: QueryFilter[],\n): SourceAppConfig[] | undefined => {\n const { synapseClient, keyFactory } = useSynapseContext()\n\n const queryBundleRequest = {\n entityId: sourceAppConfigTableID,\n query: {\n sql: `SELECT * FROM ${sourceAppConfigTableID}`,\n limit: 75,\n additionalFilters,\n },\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest' as const,\n }\n\n const { data: tableQueryResult } = useSuspenseQuery({\n ...tableQueryUseQueryDefaults,\n queryKey: keyFactory.getEntityTableQueryResultWithAsyncStatusQueryKey(\n queryBundleRequest,\n false,\n ),\n queryFn: async () => {\n try {\n return await SynapseClient.getQueryTableAsyncJobResults(\n queryBundleRequest,\n undefined, // use an undefined access token to query a table in the default realm\n )\n } catch (_error) {\n // Return null on error to signal fallback behavior\n return null\n }\n },\n })\n\n const rowSet = tableQueryResult?.responseBody?.queryResult?.queryResults\n\n // transform row data to SourceAppConfigWithRealmId[]\n const headers = rowSet?.headers\n const appIdColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'appId',\n )!\n const appURLColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'appURL',\n )!\n const friendlyNameColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'friendlyName',\n )!\n const descriptionColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'description',\n )!\n const logoFileHandleColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'logo',\n )!\n const requestAffiliationColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'requestAffiliation',\n )!\n const primaryColorColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'primaryColor',\n )!\n const secondaryColorColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'secondaryColor',\n )!\n const isPublicizedColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'isPublicized',\n )!\n const shortDescriptionColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'shortDescription',\n )!\n const realmIdColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'realmId',\n )!\n\n const rows = rowSet?.rows\n\n // Extract configs with realmIds first\n const configsWithRealmId: SourceAppConfigWithRealmId[] | undefined = useMemo(\n () =>\n rows?.map(row => {\n const rowVals = row.values\n const fileHandleId = rowVals[logoFileHandleColIndex]\n const friendlyName = rowVals[friendlyNameColIndex] ?? ''\n const logo = (\n <SourceAppImage\n sourceAppConfigTableID={sourceAppConfigTableID}\n fileHandleId={fileHandleId}\n friendlyName={friendlyName}\n />\n )\n const appPalette: PaletteOptions = {\n ...Palettes.palette,\n primary: Palettes.generatePalette(\n rowVals[primaryColorColIndex] ?? '',\n ),\n secondary: Palettes.generatePalette(\n rowVals[secondaryColorColIndex] ?? '',\n ),\n }\n const appId =\n rowVals[appIdColIndex] == null ? '' : rowVals[appIdColIndex]\n const appURL =\n rowVals[appURLColIndex] == null ? '' : rowVals[appURLColIndex]\n const description =\n rowVals[descriptionColIndex] == null\n ? ''\n : rowVals[descriptionColIndex]\n const shortDescription =\n rowVals[shortDescriptionColIndex] == null\n ? ''\n : rowVals[shortDescriptionColIndex]\n const requestAffiliation =\n rowVals[requestAffiliationColIndex] == null\n ? false\n : rowVals[requestAffiliationColIndex] == 'true'\n const isPublicized =\n rowVals[isPublicizedColIndex] == null\n ? true\n : rowVals[isPublicizedColIndex] == 'true'\n const realmId =\n rowVals[realmIdColIndex] == null ? '0' : rowVals[realmIdColIndex]\n return {\n appId,\n appURL,\n description,\n friendlyName,\n requestAffiliation,\n logo,\n isPublicized,\n palette: appPalette,\n shortDescription,\n realmId,\n }\n }),\n [\n rows,\n logoFileHandleColIndex,\n friendlyNameColIndex,\n sourceAppConfigTableID,\n primaryColorColIndex,\n secondaryColorColIndex,\n appIdColIndex,\n appURLColIndex,\n descriptionColIndex,\n shortDescriptionColIndex,\n requestAffiliationColIndex,\n isPublicizedColIndex,\n realmIdColIndex,\n ],\n )\n\n // Fetch all realms in parallel\n const realmQueries = useQueries({\n queries:\n configsWithRealmId?.map(config =>\n getRealmByIdQueryOptions(config.realmId, keyFactory, synapseClient),\n ) ?? [],\n })\n\n // Combine configs with realm data\n return useMemo(() => {\n // If query returned null (error case) or no rowSet, return static config fallback\n if (!tableQueryResult || !rowSet) {\n return FALLBACK_SOURCE_APP_CONFIGS\n }\n\n if (!configsWithRealmId) return undefined\n\n // Check if all realm queries have succeeded\n const allRealmsLoaded = realmQueries.every(query => query.isSuccess)\n if (!allRealmsLoaded) return undefined\n\n return configsWithRealmId.map((config, index) => {\n const realm = realmQueries[index].data\n return {\n ...config,\n defaultRealm: realm,\n }\n })\n }, [configsWithRealmId, realmQueries, tableQueryResult, rowSet])\n}\n"],"names":["STATIC_SOURCE_APP_CONFIG","jsx","Fragment","Palettes","FALLBACK_SOURCE_APP_CONFIGS","useSourceAppConfigs","sourceAppConfigTableID","additionalFilters","synapseClient","keyFactory","useSynapseContext","queryBundleRequest","BUNDLE_MASK_QUERY_RESULTS","tableQueryResult","useSuspenseQuery","tableQueryUseQueryDefaults","SynapseClient","rowSet","headers","appIdColIndex","selectColumn","appURLColIndex","friendlyNameColIndex","descriptionColIndex","logoFileHandleColIndex","requestAffiliationColIndex","primaryColorColIndex","secondaryColorColIndex","isPublicizedColIndex","shortDescriptionColIndex","realmIdColIndex","rows","configsWithRealmId","useMemo","row","rowVals","fileHandleId","friendlyName","logo","SourceAppImage","appPalette","appId","appURL","description","shortDescription","requestAffiliation","isPublicized","realmId","realmQueries","useQueries","config","getRealmByIdQueryOptions","query","index","realm"],"mappings":"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"}
1
+ {"version":3,"file":"useSourceAppConfigs.js","sources":["../../../src/utils/hooks/useSourceAppConfigs.tsx"],"sourcesContent":["import SourceAppImage from '@/components/SourceAppImage'\nimport SynapseClient from '@/synapse-client'\nimport Palettes from '@/theme/palette/Palettes'\nimport { Realm } from '@sage-bionetworks/synapse-client'\nimport { PaletteOptions } from '@mui/material'\nimport { ReactNode, useMemo } from 'react'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '../SynapseConstants'\nimport { QueryFilter } from '@sage-bionetworks/synapse-types'\nimport { useQueries, useSuspenseQuery } from '@tanstack/react-query'\nimport { useSynapseContext } from '../context/SynapseContext'\nimport { tableQueryUseQueryDefaults } from '@/synapse-queries'\nimport { getRealmByIdQueryOptions } from '@/synapse-queries/realm/useRealmPrincipals'\n\nexport type SourceAppConfig = {\n appId: string // app ID used in the query params\n appURL: string // URL that points to the production version of this app\n friendlyName: string\n logo: ReactNode\n palette: PaletteOptions\n description: string\n requestAffiliation: boolean // If set to true, a special screen is shown requesting the user to fill out UserProfile.company\n isPublicized: boolean // If set to true, this will be included in the list of the available Sage Resources\n shortDescription: string\n defaultRealm: Realm\n area?: string\n}\n\n// A static SourceAppConfig to use as a fallback in case the request to get source app configs fails\nexport const STATIC_SOURCE_APP_CONFIG: SourceAppConfig = {\n appId: 'synapse.org',\n appURL: '',\n description: '',\n friendlyName: 'Synapse',\n requestAffiliation: false,\n logo: <></>,\n isPublicized: true,\n palette: { ...Palettes.palette },\n shortDescription: '',\n defaultRealm: {\n id: '0',\n name: 'Synapse',\n },\n}\n\n// Stable array reference to prevent infinite re-renders\nconst FALLBACK_SOURCE_APP_CONFIGS = [STATIC_SOURCE_APP_CONFIG]\n\ntype SourceAppConfigWithRealmId = Omit<SourceAppConfig, 'defaultRealm'> & {\n realmId: string\n}\n\nexport const useSourceAppConfigs = (\n sourceAppConfigTableID: string,\n additionalFilters?: QueryFilter[],\n): SourceAppConfig[] | undefined => {\n const { synapseClient, keyFactory } = useSynapseContext()\n\n const queryBundleRequest = {\n entityId: sourceAppConfigTableID,\n query: {\n sql: `SELECT * FROM ${sourceAppConfigTableID}`,\n limit: 75,\n additionalFilters,\n },\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest' as const,\n }\n\n const { data: tableQueryResult } = useSuspenseQuery({\n ...tableQueryUseQueryDefaults,\n queryKey: keyFactory.getEntityTableQueryResultWithAsyncStatusQueryKey(\n queryBundleRequest,\n false,\n ),\n queryFn: async () => {\n try {\n return await SynapseClient.getQueryTableAsyncJobResults(\n queryBundleRequest,\n undefined, // use an undefined access token to query a table in the default realm\n )\n } catch (_error) {\n // Return null on error to signal fallback behavior\n return null\n }\n },\n })\n\n const rowSet = tableQueryResult?.responseBody?.queryResult?.queryResults\n\n // transform row data to SourceAppConfigWithRealmId[]\n const headers = rowSet?.headers\n const appIdColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'appId',\n )!\n const appURLColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'appURL',\n )!\n const friendlyNameColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'friendlyName',\n )!\n const descriptionColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'description',\n )!\n const logoFileHandleColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'logo',\n )!\n const requestAffiliationColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'requestAffiliation',\n )!\n const primaryColorColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'primaryColor',\n )!\n const secondaryColorColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'secondaryColor',\n )!\n const isPublicizedColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'isPublicized',\n )!\n const shortDescriptionColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'shortDescription',\n )!\n const realmIdColIndex = headers?.findIndex(\n selectColumn => selectColumn.name == 'realmId',\n )!\n const areaColIndex =\n headers?.findIndex(selectColumn => selectColumn.name == 'area') ?? -1\n\n const rows = rowSet?.rows\n\n // Extract configs with realmIds first\n const configsWithRealmId: SourceAppConfigWithRealmId[] | undefined = useMemo(\n () =>\n rows?.map(row => {\n const rowVals = row.values\n const fileHandleId = rowVals[logoFileHandleColIndex]\n const friendlyName = rowVals[friendlyNameColIndex] ?? ''\n const logo = (\n <SourceAppImage\n sourceAppConfigTableID={sourceAppConfigTableID}\n fileHandleId={fileHandleId}\n friendlyName={friendlyName}\n />\n )\n const appPalette: PaletteOptions = {\n ...Palettes.palette,\n primary: Palettes.generatePalette(\n rowVals[primaryColorColIndex] ?? '',\n ),\n secondary: Palettes.generatePalette(\n rowVals[secondaryColorColIndex] ?? '',\n ),\n }\n const appId =\n rowVals[appIdColIndex] == null ? '' : rowVals[appIdColIndex]\n const appURL =\n rowVals[appURLColIndex] == null ? '' : rowVals[appURLColIndex]\n const description =\n rowVals[descriptionColIndex] == null\n ? ''\n : rowVals[descriptionColIndex]\n const shortDescription =\n rowVals[shortDescriptionColIndex] == null\n ? ''\n : rowVals[shortDescriptionColIndex]\n const requestAffiliation =\n rowVals[requestAffiliationColIndex] == null\n ? false\n : rowVals[requestAffiliationColIndex] == 'true'\n const isPublicized =\n rowVals[isPublicizedColIndex] == null\n ? true\n : rowVals[isPublicizedColIndex] == 'true'\n const realmId =\n rowVals[realmIdColIndex] == null ? '0' : rowVals[realmIdColIndex]\n const area =\n areaColIndex >= 0 && rowVals[areaColIndex] != null\n ? rowVals[areaColIndex]\n : undefined\n return {\n appId,\n appURL,\n description,\n friendlyName,\n requestAffiliation,\n logo,\n isPublicized,\n palette: appPalette,\n shortDescription,\n realmId,\n area,\n }\n }),\n [\n rows,\n logoFileHandleColIndex,\n friendlyNameColIndex,\n sourceAppConfigTableID,\n primaryColorColIndex,\n secondaryColorColIndex,\n appIdColIndex,\n appURLColIndex,\n descriptionColIndex,\n shortDescriptionColIndex,\n requestAffiliationColIndex,\n isPublicizedColIndex,\n realmIdColIndex,\n areaColIndex,\n ],\n )\n\n // Fetch all realms in parallel\n const realmQueries = useQueries({\n queries:\n configsWithRealmId?.map(config =>\n getRealmByIdQueryOptions(config.realmId, keyFactory, synapseClient),\n ) ?? [],\n })\n\n // Combine configs with realm data\n return useMemo(() => {\n // If query returned null (error case) or no rowSet, return static config fallback\n if (!tableQueryResult || !rowSet) {\n return FALLBACK_SOURCE_APP_CONFIGS\n }\n\n if (!configsWithRealmId) return undefined\n\n // Check if all realm queries have succeeded\n const allRealmsLoaded = realmQueries.every(query => query.isSuccess)\n if (!allRealmsLoaded) return undefined\n\n return configsWithRealmId.map((config, index) => {\n const realm = realmQueries[index].data\n return {\n ...config,\n defaultRealm: realm,\n }\n })\n }, [configsWithRealmId, realmQueries, tableQueryResult, rowSet])\n}\n"],"names":["STATIC_SOURCE_APP_CONFIG","jsx","Fragment","Palettes","FALLBACK_SOURCE_APP_CONFIGS","useSourceAppConfigs","sourceAppConfigTableID","additionalFilters","synapseClient","keyFactory","useSynapseContext","queryBundleRequest","BUNDLE_MASK_QUERY_RESULTS","tableQueryResult","useSuspenseQuery","tableQueryUseQueryDefaults","SynapseClient","rowSet","headers","appIdColIndex","selectColumn","appURLColIndex","friendlyNameColIndex","descriptionColIndex","logoFileHandleColIndex","requestAffiliationColIndex","primaryColorColIndex","secondaryColorColIndex","isPublicizedColIndex","shortDescriptionColIndex","realmIdColIndex","areaColIndex","rows","configsWithRealmId","useMemo","row","rowVals","fileHandleId","friendlyName","logo","SourceAppImage","appPalette","appId","appURL","description","shortDescription","requestAffiliation","isPublicized","realmId","area","realmQueries","useQueries","config","getRealmByIdQueryOptions","query","index","realm"],"mappings":"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"}
@@ -15,8 +15,8 @@ import { FullContextProvider as w, defaultQueryClientConfig as B } from "./conte
15
15
  import { SynapseContext as X, SynapseContextConsumer as Z, SynapseContextProvider as ee, useSynapseContext as oe } from "./context/SynapseContext.js";
16
16
  import { DocumentMetadataProvider as re, useDocumentMetadata as ie } from "./context/DocumentMetadataContext.js";
17
17
  import { SynapseClientError as se } from "@sage-bionetworks/synapse-client/util/SynapseClientError";
18
- import { hex2ascii as pe } from "./functions/StringUtils.js";
19
- import { createTableUpdateTransactionRequest as le } from "./functions/TableColumnSchemaUtils.js";
18
+ import { createTableUpdateTransactionRequest as pe } from "./functions/TableColumnSchemaUtils.js";
19
+ import { hex2ascii as le } from "./functions/StringUtils.js";
20
20
  export {
21
21
  s as ACCESS_TOKEN_COOKIE_KEY,
22
22
  f as ApplicationSessionContextConsumer,
@@ -37,10 +37,10 @@ export {
37
37
  t as SynapseHookUtils,
38
38
  R as SynapseSessionManager,
39
39
  r as SynapseUtilityFunctions,
40
- le as createTableUpdateTransactionRequest,
40
+ pe as createTableUpdateTransactionRequest,
41
41
  B as defaultQueryClientConfig,
42
42
  l as getCookieDomain,
43
- pe as hex2ascii,
43
+ le as hex2ascii,
44
44
  k as implementsCloudProviderFileHandleInterface,
45
45
  M as implementsExternalFileHandleInterface,
46
46
  U as isColumnMultiValueFunctionQueryFilter,