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
@@ -11,7 +11,7 @@ import "../../assets/icons/error_page/no-access.svg.js";
11
11
  import "../../assets/icons/error_page/unavailable.svg.js";
12
12
  import "../../utils/PermissionLevelToAccessType.js";
13
13
  import "../../utils/SynapseConstants.js";
14
- import { forwardRef as st, useState as S, useRef as g, useImperativeHandle as ct, useEffect as E, useMemo as L, useCallback as l } from "react";
14
+ import { forwardRef as st, useState as g, useRef as I, useImperativeHandle as ct, useEffect as E, useMemo as L, useCallback as d } from "react";
15
15
  import "../../synapse-client/SynapseClient.js";
16
16
  import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
17
17
  import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
@@ -27,9 +27,9 @@ import "@tanstack/query-core";
27
27
  import "lodash-es/isEmpty";
28
28
  import "lodash-es/isEqual";
29
29
  import "lodash-es/xorWith";
30
- import { Stack as dt } from "@mui/material";
30
+ import { Stack as lt } from "@mui/material";
31
31
  import "@sage-bionetworks/synapse-client";
32
- import { useGetEntity as lt } from "../../synapse-queries/entity/useEntity.js";
32
+ import { useGetEntity as dt } from "../../synapse-queries/entity/useEntity.js";
33
33
  import "../../utils/types/IsType.js";
34
34
  import { useGetCurrentUserBundle as at } from "../../synapse-queries/user/useUserBundle.js";
35
35
  import "../../utils/hooks/useCookiePreferences.js";
@@ -38,7 +38,7 @@ import "universal-cookie";
38
38
  import "../../utils/AppUtils/session/ApplicationSessionContext.js";
39
39
  import "../../utils/context/FullContextProvider.js";
40
40
  import "../../utils/context/DocumentMetadataContext.js";
41
- import '../FullWidthAlert/FullWidthAlert.css';import '../../style/components/_spinner.css';/* empty css */
41
+ import '../Plot/SynapsePlot.css';import '../FullWidthAlert/FullWidthAlert.css';import '../../style/components/_spinner.css';/* empty css */
42
42
  import "react-router";
43
43
  import "@mui/icons-material/Close";
44
44
  import "../styled/StyledPopover.js";
@@ -63,11 +63,14 @@ import "@mui/material/SvgIcon";
63
63
  import "../../assets/icons/AccessPending.svg.js";
64
64
  import "../../assets/icons/AccessPendingCloud.svg.js";
65
65
  import "../../assets/icons/FileWithShield.svg.js";
66
+ import "../../assets/icons/MultiFile.svg.js";
67
+ import "../../assets/icons/UnpackagableFile.svg.js";
66
68
  import "../../assets/icons/bioChemicalPhysical.svg.js";
67
69
  import "../../assets/icons/computationalTool.svg.js";
68
70
  import "../../assets/icons/dataReuse.svg.js";
69
71
  import "../../assets/icons/inSilicoModel.svg.js";
70
72
  import "../../assets/icons/modelSystem.svg.js";
73
+ import "../../assets/mui_components/PackagableFile.svg.js";
71
74
  import "../../assets/icons/spatialProfiling.svg.js";
72
75
  import "../Authentication/AuthenticationMethodSelection.js";
73
76
  import "mui-one-time-password-input";
@@ -92,6 +95,7 @@ import "../../assets/icons/study-complete.svg.js";
92
95
  import "../../assets/icons/translational.svg.js";
93
96
  import "../../assets/icons/tree_horizontal.svg.js";
94
97
  import "../../assets/icons/standardDataModel.svg.js";
98
+ import "../../assets/icons/Challenge.svg.js";
95
99
  import "react-intersection-observer";
96
100
  import "@rjsf/utils";
97
101
  import "../SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js";
@@ -109,11 +113,11 @@ import "../../assets/icons/DoubleQuotes.svg.js";
109
113
  import "../EntityDownloadConfirmation/EntityDownloadConfirmation.js";
110
114
  import "../QueryContext/QueryContext.js";
111
115
  import "../QueryVisualizationWrapper/QueryVisualizationContext.js";
116
+ import "react-share";
112
117
  import "../GenericCard/GenericCard.js";
113
118
  import { SkeletonTable as ht } from "../Skeleton/SkeletonTable.js";
114
119
  import "@mui/system";
115
120
  import "../GenericCard/Linkify.js";
116
- import "react-share";
117
121
  import "jotai";
118
122
  import "lodash-es/noop";
119
123
  import "../QueryWrapper/TableRowSelectionState.js";
@@ -173,7 +177,6 @@ import "@mui/x-date-pickers/AdapterDayjs";
173
177
  import "@mui/x-date-pickers/LocalizationProvider";
174
178
  import "../FeaturedDataTabs/FacetPlotsCardGrid.js";
175
179
  import "../Forum/ForumTable.js";
176
- import "@mui/material/IconButton";
177
180
  import "@mui/icons-material/NavigateNext";
178
181
  import "@react-google-maps/api";
179
182
  import "../Markdown/MarkdownUtils.js";
@@ -187,6 +190,7 @@ import "lodash-es/orderBy";
187
190
  import "../styled/LargeButton.js";
188
191
  import "../../assets/illustrations/diagonalLinePattern.svg.js";
189
192
  import "@upsetjs/react";
193
+ /* empty css */
190
194
  import "reactflow";
191
195
  import "../ProvenanceGraph/ProvenanceUtils.js";
192
196
  import "reactflow/dist/style.css";
@@ -211,6 +215,7 @@ import "lodash-es/set";
211
215
  import "lodash-es/trimStart";
212
216
  import "../SynapseForm/SynapseFormSubmissionGrid.js";
213
217
  import "../SynapseChat/AccessLevelMenu.js";
218
+ import "react-draggable";
214
219
  import "../TimelinePlot/phasesQueryResponseData.js";
215
220
  import "../EntityHeaderTable/EntityHeaderTable.js";
216
221
  import "../MuiContainer.js";
@@ -219,9 +224,9 @@ import "@mui/icons-material/ArrowForwardIos";
219
224
  import "../PortalAclEditor/PortalAclEditor.js";
220
225
  import "../SynapseHomepageV2/HomepageStyles.js";
221
226
  import { getSchemaPropertiesInfo as ft } from "../../utils/jsonschema/getSchemaPropertyInfo.js";
222
- import { ClickableJsonCrdt as It } from "clickable-json";
223
- import { GridAgentChat as St } from "../SynapseChat/GridAgentChat.js";
224
- import gt from "./DataGrid.js";
227
+ import { ClickableJsonCrdt as St } from "clickable-json";
228
+ import { GridAgentChat as gt } from "../SynapseChat/GridAgentChat.js";
229
+ import It from "./DataGrid.js";
225
230
  import { useGridUndoRedo as Ct } from "./hooks/useGridUndoRedo.js";
226
231
  import { StartGridSession as yt } from "./StartGridSession.js";
227
232
  import { useDataGridWebSocket as Et } from "./useDataGridWebsocket.js";
@@ -230,11 +235,11 @@ import { removeNoOpOperations as xt } from "./utils/DataGridUtils.js";
230
235
  import { mapOperationsToModelChanges as Gt } from "./utils/mapOperationsToModelChanges.js";
231
236
  import bt from "../AccessRequirementList/RequirementItem/CertificationRequirement.js";
232
237
  import { ValidationAlert as vt } from "./components/ValidationAlert.js";
233
- const He = st(
238
+ const Ye = st(
234
239
  ({ agentRegistrationId: B, showDebugInfo: R = !1 }, D) => {
235
- const [o, P] = S(null), [p, A] = S(null), [j, v] = S(!1), [F, w] = S(
240
+ const [o, P] = g(null), [p, A] = g(null), [j, v] = g(!1), [F, w] = g(
236
241
  null
237
- ), a = g(null), u = g(null), { data: J, isLoading: W } = at();
242
+ ), a = I(null), u = I(null), { data: J, isLoading: W } = at();
238
243
  ct(
239
244
  D,
240
245
  () => ({
@@ -256,11 +261,11 @@ const He = st(
256
261
  connect: k,
257
262
  presignedUrl: c,
258
263
  hasSufficientData: N
259
- } = Et(), C = g(null);
264
+ } = Et(), C = I(null);
260
265
  E(() => {
261
266
  C.current = T;
262
267
  }, [T]);
263
- const x = g(null);
268
+ const x = I(null);
264
269
  E(() => {
265
270
  if (p == null || !o?.sessionId) {
266
271
  x.current = null;
@@ -274,7 +279,7 @@ const He = st(
274
279
  }, [p, o?.sessionId, k]), E(() => {
275
280
  i === null && (w(null), u.current && u.current.setActiveCell(null));
276
281
  }, [i]);
277
- const G = et(o), { data: V } = lt(
282
+ const G = et(o), { data: V } = dt(
278
283
  o?.sourceEntityId,
279
284
  void 0,
280
285
  {
@@ -283,29 +288,29 @@ const He = st(
283
288
  ), _ = V?.concreteType === "org.sagebionetworks.repo.model.table.EntityView", b = L(() => ft(G ?? null), [G]), $ = n ? "Connected" : "Disconnected", f = L(
284
289
  () => h ? nt(i, h) : [],
285
290
  [i, h]
286
- ), y = l(() => {
291
+ ), y = d(() => {
287
292
  !n || !C.current || C.current.sendPatch();
288
293
  }, [n, C]);
289
294
  E(() => {
290
295
  n && y();
291
296
  }, [n, y]);
292
- const d = l(
297
+ const l = d(
293
298
  (r, e) => {
294
- e.forEach((I) => {
295
- Rt(r, I, b);
299
+ e.forEach((S) => {
300
+ Rt(r, S, b);
296
301
  }), y();
297
302
  },
298
303
  [y, b]
299
- ), q = l(
304
+ ), q = d(
300
305
  (r) => {
301
306
  if (!i) {
302
307
  console.error("Model is not initialized");
303
308
  return;
304
309
  }
305
- r.type === "DELETE" && u.current && u.current.setActiveCell(null), d(i, [r]);
310
+ r.type === "DELETE" && u.current && u.current.setActiveCell(null), l(i, [r]);
306
311
  },
307
- [i, d]
308
- ), { undoUI: Y, redoUI: K, addOperationsToUndoStack: M, clearRedoStack: O } = Ct(q), Q = l(
312
+ [i, l]
313
+ ), { undoUI: Y, redoUI: K, addOperationsToUndoStack: M, clearRedoStack: O } = Ct(q), Q = d(
309
314
  (r, e) => {
310
315
  if (!i) {
311
316
  console.error("Model is not initialized");
@@ -313,8 +318,8 @@ const He = st(
313
318
  }
314
319
  if (e = xt(r, f, e), e.length > 0) {
315
320
  O(), M(e, f, r);
316
- const I = Gt(e, r);
317
- d(i, I);
321
+ const S = Gt(e, r);
322
+ l(i, S);
318
323
  }
319
324
  },
320
325
  [
@@ -322,29 +327,29 @@ const He = st(
322
327
  f,
323
328
  O,
324
329
  M,
325
- d
330
+ l
326
331
  ]
327
- ), X = l(
332
+ ), X = d(
328
333
  (r) => {
329
334
  const { selection: e } = r;
330
335
  if (e != null && (w(e), i != null && p != null)) {
331
- const I = pt(
336
+ const S = pt(
332
337
  e,
333
338
  i
334
339
  );
335
- d(i, [
340
+ l(i, [
336
341
  {
337
342
  type: "SET_SELECTION",
338
343
  replicaId: p.toString(),
339
- selection: I
344
+ selection: S
340
345
  }
341
346
  ]);
342
347
  }
343
348
  },
344
- [d, i, p]
345
- ), U = g(null), [, Z] = S({}), tt = l(
349
+ [l, i, p]
350
+ ), U = I(null), [, Z] = g({}), tt = d(
346
351
  (r, e) => {
347
- U.current = r, Z({});
352
+ r !== null && (U.current = r, Z({}));
348
353
  },
349
354
  []
350
355
  );
@@ -402,7 +407,7 @@ const He = st(
402
407
  ] }),
403
408
  N && /* @__PURE__ */ m(z, { children: [
404
409
  /* @__PURE__ */ t(s, { size: 12, children: /* @__PURE__ */ m(
405
- dt,
410
+ lt,
406
411
  {
407
412
  direction: "row",
408
413
  spacing: 1,
@@ -420,7 +425,7 @@ const He = st(
420
425
  }
421
426
  ),
422
427
  /* @__PURE__ */ t(
423
- St,
428
+ gt,
424
429
  {
425
430
  agentRegistrationId: B,
426
431
  open: j,
@@ -455,7 +460,7 @@ const He = st(
455
460
  }
456
461
  ) }),
457
462
  /* @__PURE__ */ t(s, { size: 12, children: /* @__PURE__ */ t(
458
- gt,
463
+ It,
459
464
  {
460
465
  gridRef: u,
461
466
  rowValues: f,
@@ -491,7 +496,7 @@ const He = st(
491
496
  },
492
497
  children: [
493
498
  /* @__PURE__ */ t("h3", { children: "Model" }),
494
- i ? /* @__PURE__ */ t(It, { model: i }) : "No model available"
499
+ i ? /* @__PURE__ */ t(St, { model: i }) : "No model available"
495
500
  ]
496
501
  }
497
502
  )
@@ -500,6 +505,6 @@ const He = st(
500
505
  }
501
506
  );
502
507
  export {
503
- He as default
508
+ Ye as default
504
509
  };
505
510
  //# sourceMappingURL=SynapseGrid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseGrid.js","sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport UploadCsvToGridButton from '@/components/DataGrid/components/UploadCsvToGridButton'\nimport ExportCsvFromGridButton from '@/components/DataGrid/components/ExportCsvFromGridButton'\nimport useGetSchemaForGrid from '@/components/DataGrid/hooks/useGetSchemaForGrid'\nimport MergeGridWithSourceTableButton from '@/components/DataGrid/MergeGridWithSourceTableButton'\nimport computeReplicaSelectionModel from '@/components/DataGrid/utils/computeReplicaSelectionModel'\nimport modelRowsToGrid from '@/components/DataGrid/utils/modelRowsToGrid'\nimport { SkeletonTable } from '@/components/index'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { getSchemaPropertiesInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { SmartToyTwoTone } from '@mui/icons-material'\nimport { Stack } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport {\n CreateGridRequest,\n GridSession,\n} from '@sage-bionetworks/synapse-client'\nimport { ClickableJsonCrdt } from 'clickable-json'\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { DataSheetGridRef } from '@sage-bionetworks/react-datasheet-grid'\nimport { SelectionWithId } from '@sage-bionetworks/react-datasheet-grid'\nimport GridAgentChat from '../SynapseChat/GridAgentChat'\nimport DataGrid from './DataGrid'\nimport { DataGridRow, GridModel, Operation } from './DataGridTypes'\nimport { useGridUndoRedo } from './hooks/useGridUndoRedo'\nimport { StartGridSession, StartGridSessionHandle } from './StartGridSession'\nimport { useDataGridWebSocket } from './useDataGridWebsocket'\nimport { applyModelChange, ModelChange } from './utils/applyModelChange'\nimport { removeNoOpOperations } from './utils/DataGridUtils'\nimport { mapOperationsToModelChanges } from './utils/mapOperationsToModelChanges'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport CertificationRequirement from '@/components/AccessRequirementList/RequirementItem/CertificationRequirement'\nimport { ValidationAlert } from './components/ValidationAlert'\n\nexport type SynapseGridProps = {\n agentRegistrationId?: string\n showDebugInfo?: boolean\n}\n\nexport type SynapseGridHandle = {\n initializeGrid: (request: CreateGridRequest) => void\n loadExistingSession: (sessionId: string) => void\n}\n\nconst SynapseGrid = forwardRef<SynapseGridHandle, SynapseGridProps>(\n ({ agentRegistrationId, showDebugInfo = false }, ref) => {\n const [session, setSession] = useState<GridSession | null>(null)\n const [replicaId, setReplicaId] = useState<number | null>(null)\n const [chatOpen, setChatOpen] = useState(false)\n const [lastSelection, setLastSelection] = useState<SelectionWithId | null>(\n null,\n )\n\n const startGridSessionRef = useRef<StartGridSessionHandle | null>(null)\n const gridRef = useRef<DataSheetGridRef | null>(null)\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n useImperativeHandle(\n ref,\n () => ({\n initializeGrid: (request: CreateGridRequest) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleStartSession(request)\n }\n },\n loadExistingSession: (sessionId: string) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleLoadSession(sessionId)\n }\n },\n }),\n [],\n )\n\n // WebSocket state\n const {\n isConnected,\n websocketInstance,\n hasCompletedInitialSync,\n model,\n modelSnapshot,\n connect,\n presignedUrl,\n hasSufficientData,\n } = useDataGridWebSocket()\n\n const websocketInstanceRef = useRef<typeof websocketInstance | null>(null)\n\n useEffect(() => {\n websocketInstanceRef.current = websocketInstance\n }, [websocketInstance])\n\n // Track last connection parameters to avoid redundant connections\n const lastConnectParamsRef = useRef<{\n replicaId: number\n sessionId: string\n } | null>(null)\n\n useEffect(() => {\n if (\n replicaId === null ||\n replicaId === undefined ||\n !session?.sessionId\n ) {\n lastConnectParamsRef.current = null\n return\n }\n\n const nextParams = {\n replicaId,\n sessionId: session.sessionId,\n }\n\n const prevParams = lastConnectParamsRef.current\n\n if (\n prevParams &&\n prevParams.replicaId === nextParams.replicaId &&\n prevParams.sessionId === nextParams.sessionId\n ) {\n return\n }\n\n lastConnectParamsRef.current = nextParams\n connect(replicaId, session.sessionId)\n }, [replicaId, session?.sessionId, connect])\n\n // Reset grid state when model is reset (new session/replica)\n useEffect(() => {\n if (model === null) {\n // Clear any grid-specific state when starting a new session\n setLastSelection(null)\n // Clear active cell if grid exists\n if (gridRef.current) {\n gridRef.current.setActiveCell(null)\n }\n }\n }, [model])\n\n const jsonSchema = useGetSchemaForGrid(session)\n\n // Grid behaves differently for views vs recordSets\n // Note for future: can get modifiedOn to refresh grid when view changes\n const { data: entityData } = useGetEntity(\n session?.sourceEntityId,\n undefined,\n {\n enabled: !!session?.sourceEntityId,\n },\n )\n\n const entityIsView =\n entityData?.concreteType ===\n 'org.sagebionetworks.repo.model.table.EntityView'\n\n // Process schema properties once\n const schemaPropertiesInfo = useMemo(() => {\n return getSchemaPropertiesInfo(jsonSchema ?? null)\n }, [jsonSchema])\n\n const connectionStatus = isConnected ? 'Connected' : 'Disconnected'\n\n // Transform the model view rows and columns to DataSheetGrid format\n const rowValues = useMemo(\n () => (modelSnapshot ? modelRowsToGrid(model, modelSnapshot) : []),\n [model, modelSnapshot],\n )\n\n const commit = useCallback(() => {\n if (!isConnected || !websocketInstanceRef.current) {\n return\n }\n\n websocketInstanceRef.current.sendPatch()\n }, [isConnected, websocketInstanceRef])\n\n useEffect(() => {\n if (isConnected) {\n commit()\n }\n }, [isConnected, commit])\n\n const applyAndCommitChanges = useCallback(\n (model: GridModel, modelChanges: ModelChange[]) => {\n // Apply each change to the model\n modelChanges.forEach(change => {\n applyModelChange(model, change, schemaPropertiesInfo)\n })\n\n commit()\n },\n [commit, schemaPropertiesInfo],\n )\n\n const applyModelChangeFromUndoRedo = useCallback(\n (change: ModelChange) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n if (change.type === 'DELETE' && gridRef.current) {\n // The user may have set a cell as active that we are removing with an 'undo'. In that case, clear the active state\n gridRef.current.setActiveCell(null)\n }\n\n applyAndCommitChanges(model, [change])\n },\n [model, applyAndCommitChanges],\n )\n\n const { undoUI, redoUI, addOperationsToUndoStack, clearRedoStack } =\n useGridUndoRedo(applyModelChangeFromUndoRedo)\n\n const handleChange = useCallback(\n (newValue: DataGridRow[], operations: Operation[]) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n // Check that something changed before updating the model\n operations = removeNoOpOperations(newValue, rowValues, operations)\n\n if (operations.length > 0) {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n // Track row creation, updates, and deletions to keep UI state and undo history in sync\n\n // Add all operations to the undo stack\n addOperationsToUndoStack(operations, rowValues, newValue)\n\n // Transform operations to model changes\n const modelChanges = mapOperationsToModelChanges(operations, newValue)\n\n applyAndCommitChanges(model, modelChanges)\n }\n },\n [\n model,\n rowValues,\n clearRedoStack,\n addOperationsToUndoStack,\n applyAndCommitChanges,\n ],\n )\n\n const handleSelectionChange = useCallback(\n (opts: { selection: SelectionWithId | null }) => {\n const { selection } = opts\n if (selection != null) {\n setLastSelection(selection)\n\n if (model != null && replicaId != null) {\n const replicaSelectionModel = computeReplicaSelectionModel(\n selection,\n model,\n )\n // insert it into the CRDT Model\n applyAndCommitChanges(model, [\n {\n type: 'SET_SELECTION',\n replicaId: replicaId.toString(),\n selection: replicaSelectionModel,\n },\n ])\n }\n }\n },\n [applyAndCommitChanges, model, replicaId],\n )\n\n // Track selected row index for validation display\n const selectedRowIndexRef = useRef<number | null>(null)\n const [, forceUpdate] = useState({})\n\n const handleSelectedRowChange = useCallback(\n (rowIndex: number | null, _row: DataGridRow | null) => {\n selectedRowIndexRef.current = rowIndex\n forceUpdate({}) // Force re-render to update validation display\n },\n [],\n )\n\n if (!isLoading && !userBundle?.isCertified) {\n return <CertificationRequirement />\n }\n\n return (\n <div>\n <Grid container spacing={2}>\n <Grid size={{ xs: 12, xl: 8 }}>\n <StartGridSession\n ref={startGridSessionRef}\n onSessionChange={setSession}\n onReplicaChange={setReplicaId}\n show={showDebugInfo}\n />\n </Grid>\n {/* Debug Information */}\n <Grid size={{ xs: 12, xl: 4 }}>\n {showDebugInfo && (\n <div>\n <p>Session ID: {session?.sessionId || 'No session created'}</p>\n <p>Replica ID: {replicaId || 'No replica created'}</p>\n <p>\n Source Entity ID:{' '}\n {session?.sourceEntityId || 'No source entity'}\n </p>\n <p>\n JSON Schema $id:{' '}\n {session?.gridJsonSchema$Id ||\n 'No schema attached to session'}\n </p>\n <p>\n Presigned URL:{' '}\n {presignedUrl\n ? presignedUrl.substring(0, 30) +\n (presignedUrl.length > 30\n ? ' ... ' +\n presignedUrl.substring(presignedUrl.length - 10)\n : '')\n : 'No URL generated'}\n </p>\n <p>\n WebSocket Status:{' '}\n <span style={{ color: isConnected ? 'green' : 'red' }}>\n {connectionStatus}\n </span>\n </p>\n </div>\n )}\n </Grid>\n\n {session && (\n <>\n {/* Grid Loading State */}\n {!hasSufficientData && (\n <Grid size={12}>\n <h3>Setting up grid...</h3>\n <div style={{ marginBottom: '10px' }}>\n {!session && <p>Creating grid session...</p>}\n {session && !replicaId && (\n <p>Setting up real-time sync...</p>\n )}\n {session && replicaId && !presignedUrl && (\n <p>Establishing secure connection...</p>\n )}\n {session && replicaId && presignedUrl && !isConnected && (\n <p>Connecting to server...</p>\n )}\n {isConnected && !hasCompletedInitialSync && (\n <p>Loading table data...</p>\n )}\n <SkeletonTable numRows={4} numCols={1} />\n </div>\n </Grid>\n )}\n {/* Grid */}\n {hasSufficientData && (\n <>\n <Grid size={12}>\n <Stack\n direction={'row'}\n spacing={1}\n sx={{ justifyContent: 'flex-end' }}\n >\n {undoUI}\n {redoUI}\n <GridMenuButton\n variant={'outlined'}\n onClick={() => setChatOpen(true)}\n startIcon={<SmartToyTwoTone />}\n >\n Open chat\n </GridMenuButton>\n <GridAgentChat\n agentRegistrationId={agentRegistrationId}\n open={chatOpen}\n onClose={() => setChatOpen(false)}\n gridSessionId={session.sessionId!}\n usersReplicaId={replicaId!}\n chatbotName=\"Grid Assistant\"\n />\n {session.sourceEntityId && (\n <UploadCsvToGridButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n {session.sessionId && (\n <ExportCsvFromGridButton\n gridSessionId={session.sessionId}\n filename={\n 'grid-' + (session.sourceEntityId || 'export')\n }\n />\n )}\n {session.sourceEntityId && (\n <MergeGridWithSourceTableButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n </Stack>\n </Grid>\n <Grid size={12}>\n <DataGrid\n gridRef={gridRef}\n rowValues={rowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n schemaPropertiesInfo={schemaPropertiesInfo}\n entityIsView={entityIsView}\n jsonSchema={jsonSchema}\n lastSelection={lastSelection}\n handleChange={handleChange}\n handleSelectionChange={handleSelectionChange}\n onSelectedRowChange={handleSelectedRowChange}\n />\n </Grid>\n <Grid size={12}>\n <ValidationAlert\n selectedRowIndex={selectedRowIndexRef.current}\n rowValues={rowValues}\n />\n </Grid>\n </>\n )}\n {/* Debug Model Snapshot */}\n {showDebugInfo && (\n <Grid\n size={12}\n style={{\n margin: '10px 0',\n padding: '10px',\n border: '1px solid #ccc',\n maxHeight: '400px',\n overflowY: 'auto',\n }}\n >\n <h3>Model</h3>\n {model ? (\n <ClickableJsonCrdt model={model} />\n ) : (\n 'No model available'\n )}\n </Grid>\n )}\n </>\n )}\n </Grid>\n </div>\n )\n },\n)\n\nexport default SynapseGrid\n"],"names":["SynapseGrid","forwardRef","agentRegistrationId","showDebugInfo","ref","session","setSession","useState","replicaId","setReplicaId","chatOpen","setChatOpen","lastSelection","setLastSelection","startGridSessionRef","useRef","gridRef","userBundle","isLoading","useGetCurrentUserBundle","useImperativeHandle","request","sessionId","isConnected","websocketInstance","hasCompletedInitialSync","model","modelSnapshot","connect","presignedUrl","hasSufficientData","useDataGridWebSocket","websocketInstanceRef","useEffect","lastConnectParamsRef","nextParams","prevParams","jsonSchema","useGetSchemaForGrid","entityData","useGetEntity","entityIsView","schemaPropertiesInfo","useMemo","getSchemaPropertiesInfo","connectionStatus","rowValues","modelRowsToGrid","commit","useCallback","applyAndCommitChanges","modelChanges","change","applyModelChange","applyModelChangeFromUndoRedo","undoUI","redoUI","addOperationsToUndoStack","clearRedoStack","useGridUndoRedo","handleChange","newValue","operations","removeNoOpOperations","mapOperationsToModelChanges","handleSelectionChange","opts","selection","replicaSelectionModel","computeReplicaSelectionModel","selectedRowIndexRef","forceUpdate","handleSelectedRowChange","rowIndex","_row","CertificationRequirement","jsxs","Grid","jsx","StartGridSession","Fragment","SkeletonTable","Stack","GridMenuButton","SmartToyTwoTone","GridAgentChat","UploadCsvToGridButton","ExportCsvFromGridButton","MergeGridWithSourceTableButton","DataGrid","ValidationAlert","ClickableJsonCrdt"],"mappings":"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"}
1
+ {"version":3,"file":"SynapseGrid.js","sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport UploadCsvToGridButton from '@/components/DataGrid/components/UploadCsvToGridButton'\nimport ExportCsvFromGridButton from '@/components/DataGrid/components/ExportCsvFromGridButton'\nimport useGetSchemaForGrid from '@/components/DataGrid/hooks/useGetSchemaForGrid'\nimport MergeGridWithSourceTableButton from '@/components/DataGrid/MergeGridWithSourceTableButton'\nimport computeReplicaSelectionModel from '@/components/DataGrid/utils/computeReplicaSelectionModel'\nimport modelRowsToGrid from '@/components/DataGrid/utils/modelRowsToGrid'\nimport { SkeletonTable } from '@/components/index'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { getSchemaPropertiesInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { SmartToyTwoTone } from '@mui/icons-material'\nimport { Stack } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport {\n CreateGridRequest,\n GridSession,\n} from '@sage-bionetworks/synapse-client'\nimport { ClickableJsonCrdt } from 'clickable-json'\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { DataSheetGridRef } from '@sage-bionetworks/react-datasheet-grid'\nimport { SelectionWithId } from '@sage-bionetworks/react-datasheet-grid'\nimport GridAgentChat from '../SynapseChat/GridAgentChat'\nimport DataGrid from './DataGrid'\nimport { DataGridRow, GridModel, Operation } from './DataGridTypes'\nimport { useGridUndoRedo } from './hooks/useGridUndoRedo'\nimport { StartGridSession, StartGridSessionHandle } from './StartGridSession'\nimport { useDataGridWebSocket } from './useDataGridWebsocket'\nimport { applyModelChange, ModelChange } from './utils/applyModelChange'\nimport { removeNoOpOperations } from './utils/DataGridUtils'\nimport { mapOperationsToModelChanges } from './utils/mapOperationsToModelChanges'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport CertificationRequirement from '@/components/AccessRequirementList/RequirementItem/CertificationRequirement'\nimport { ValidationAlert } from './components/ValidationAlert'\n\nexport type SynapseGridProps = {\n agentRegistrationId?: string\n showDebugInfo?: boolean\n}\n\nexport type SynapseGridHandle = {\n initializeGrid: (request: CreateGridRequest) => void\n loadExistingSession: (sessionId: string) => void\n}\n\nconst SynapseGrid = forwardRef<SynapseGridHandle, SynapseGridProps>(\n ({ agentRegistrationId, showDebugInfo = false }, ref) => {\n const [session, setSession] = useState<GridSession | null>(null)\n const [replicaId, setReplicaId] = useState<number | null>(null)\n const [chatOpen, setChatOpen] = useState(false)\n const [lastSelection, setLastSelection] = useState<SelectionWithId | null>(\n null,\n )\n\n const startGridSessionRef = useRef<StartGridSessionHandle | null>(null)\n const gridRef = useRef<DataSheetGridRef | null>(null)\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n useImperativeHandle(\n ref,\n () => ({\n initializeGrid: (request: CreateGridRequest) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleStartSession(request)\n }\n },\n loadExistingSession: (sessionId: string) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleLoadSession(sessionId)\n }\n },\n }),\n [],\n )\n\n // WebSocket state\n const {\n isConnected,\n websocketInstance,\n hasCompletedInitialSync,\n model,\n modelSnapshot,\n connect,\n presignedUrl,\n hasSufficientData,\n } = useDataGridWebSocket()\n\n const websocketInstanceRef = useRef<typeof websocketInstance | null>(null)\n\n useEffect(() => {\n websocketInstanceRef.current = websocketInstance\n }, [websocketInstance])\n\n // Track last connection parameters to avoid redundant connections\n const lastConnectParamsRef = useRef<{\n replicaId: number\n sessionId: string\n } | null>(null)\n\n useEffect(() => {\n if (\n replicaId === null ||\n replicaId === undefined ||\n !session?.sessionId\n ) {\n lastConnectParamsRef.current = null\n return\n }\n\n const nextParams = {\n replicaId,\n sessionId: session.sessionId,\n }\n\n const prevParams = lastConnectParamsRef.current\n\n if (\n prevParams &&\n prevParams.replicaId === nextParams.replicaId &&\n prevParams.sessionId === nextParams.sessionId\n ) {\n return\n }\n\n lastConnectParamsRef.current = nextParams\n connect(replicaId, session.sessionId)\n }, [replicaId, session?.sessionId, connect])\n\n // Reset grid state when model is reset (new session/replica)\n useEffect(() => {\n if (model === null) {\n // Clear any grid-specific state when starting a new session\n setLastSelection(null)\n // Clear active cell if grid exists\n if (gridRef.current) {\n gridRef.current.setActiveCell(null)\n }\n }\n }, [model])\n\n const jsonSchema = useGetSchemaForGrid(session)\n\n // Grid behaves differently for views vs recordSets\n // Note for future: can get modifiedOn to refresh grid when view changes\n const { data: entityData } = useGetEntity(\n session?.sourceEntityId,\n undefined,\n {\n enabled: !!session?.sourceEntityId,\n },\n )\n\n const entityIsView =\n entityData?.concreteType ===\n 'org.sagebionetworks.repo.model.table.EntityView'\n\n // Process schema properties once\n const schemaPropertiesInfo = useMemo(() => {\n return getSchemaPropertiesInfo(jsonSchema ?? null)\n }, [jsonSchema])\n\n const connectionStatus = isConnected ? 'Connected' : 'Disconnected'\n\n // Transform the model view rows and columns to DataSheetGrid format\n const rowValues = useMemo(\n () => (modelSnapshot ? modelRowsToGrid(model, modelSnapshot) : []),\n [model, modelSnapshot],\n )\n\n const commit = useCallback(() => {\n if (!isConnected || !websocketInstanceRef.current) {\n return\n }\n\n websocketInstanceRef.current.sendPatch()\n }, [isConnected, websocketInstanceRef])\n\n useEffect(() => {\n if (isConnected) {\n commit()\n }\n }, [isConnected, commit])\n\n const applyAndCommitChanges = useCallback(\n (model: GridModel, modelChanges: ModelChange[]) => {\n // Apply each change to the model\n modelChanges.forEach(change => {\n applyModelChange(model, change, schemaPropertiesInfo)\n })\n\n commit()\n },\n [commit, schemaPropertiesInfo],\n )\n\n const applyModelChangeFromUndoRedo = useCallback(\n (change: ModelChange) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n if (change.type === 'DELETE' && gridRef.current) {\n // The user may have set a cell as active that we are removing with an 'undo'. In that case, clear the active state\n gridRef.current.setActiveCell(null)\n }\n\n applyAndCommitChanges(model, [change])\n },\n [model, applyAndCommitChanges],\n )\n\n const { undoUI, redoUI, addOperationsToUndoStack, clearRedoStack } =\n useGridUndoRedo(applyModelChangeFromUndoRedo)\n\n const handleChange = useCallback(\n (newValue: DataGridRow[], operations: Operation[]) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n // Check that something changed before updating the model\n operations = removeNoOpOperations(newValue, rowValues, operations)\n\n if (operations.length > 0) {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n // Track row creation, updates, and deletions to keep UI state and undo history in sync\n\n // Add all operations to the undo stack\n addOperationsToUndoStack(operations, rowValues, newValue)\n\n // Transform operations to model changes\n const modelChanges = mapOperationsToModelChanges(operations, newValue)\n\n applyAndCommitChanges(model, modelChanges)\n }\n },\n [\n model,\n rowValues,\n clearRedoStack,\n addOperationsToUndoStack,\n applyAndCommitChanges,\n ],\n )\n\n const handleSelectionChange = useCallback(\n (opts: { selection: SelectionWithId | null }) => {\n const { selection } = opts\n if (selection != null) {\n setLastSelection(selection)\n\n if (model != null && replicaId != null) {\n const replicaSelectionModel = computeReplicaSelectionModel(\n selection,\n model,\n )\n // insert it into the CRDT Model\n applyAndCommitChanges(model, [\n {\n type: 'SET_SELECTION',\n replicaId: replicaId.toString(),\n selection: replicaSelectionModel,\n },\n ])\n }\n }\n },\n [applyAndCommitChanges, model, replicaId],\n )\n\n // Track selected row index for validation display\n const selectedRowIndexRef = useRef<number | null>(null)\n const [, forceUpdate] = useState({})\n\n const handleSelectedRowChange = useCallback(\n (rowIndex: number | null, _row: DataGridRow | null) => {\n // Only update when a real row is selected — don't clear on blur/click-away\n // so the ValidationAlert stays open while the user interacts with it.\n if (rowIndex !== null) {\n selectedRowIndexRef.current = rowIndex\n forceUpdate({})\n }\n },\n [],\n )\n\n if (!isLoading && !userBundle?.isCertified) {\n return <CertificationRequirement />\n }\n\n return (\n <div>\n <Grid container spacing={2}>\n <Grid size={{ xs: 12, xl: 8 }}>\n <StartGridSession\n ref={startGridSessionRef}\n onSessionChange={setSession}\n onReplicaChange={setReplicaId}\n show={showDebugInfo}\n />\n </Grid>\n {/* Debug Information */}\n <Grid size={{ xs: 12, xl: 4 }}>\n {showDebugInfo && (\n <div>\n <p>Session ID: {session?.sessionId || 'No session created'}</p>\n <p>Replica ID: {replicaId || 'No replica created'}</p>\n <p>\n Source Entity ID:{' '}\n {session?.sourceEntityId || 'No source entity'}\n </p>\n <p>\n JSON Schema $id:{' '}\n {session?.gridJsonSchema$Id ||\n 'No schema attached to session'}\n </p>\n <p>\n Presigned URL:{' '}\n {presignedUrl\n ? presignedUrl.substring(0, 30) +\n (presignedUrl.length > 30\n ? ' ... ' +\n presignedUrl.substring(presignedUrl.length - 10)\n : '')\n : 'No URL generated'}\n </p>\n <p>\n WebSocket Status:{' '}\n <span style={{ color: isConnected ? 'green' : 'red' }}>\n {connectionStatus}\n </span>\n </p>\n </div>\n )}\n </Grid>\n\n {session && (\n <>\n {/* Grid Loading State */}\n {!hasSufficientData && (\n <Grid size={12}>\n <h3>Setting up grid...</h3>\n <div style={{ marginBottom: '10px' }}>\n {!session && <p>Creating grid session...</p>}\n {session && !replicaId && (\n <p>Setting up real-time sync...</p>\n )}\n {session && replicaId && !presignedUrl && (\n <p>Establishing secure connection...</p>\n )}\n {session && replicaId && presignedUrl && !isConnected && (\n <p>Connecting to server...</p>\n )}\n {isConnected && !hasCompletedInitialSync && (\n <p>Loading table data...</p>\n )}\n <SkeletonTable numRows={4} numCols={1} />\n </div>\n </Grid>\n )}\n {/* Grid */}\n {hasSufficientData && (\n <>\n <Grid size={12}>\n <Stack\n direction={'row'}\n spacing={1}\n sx={{ justifyContent: 'flex-end' }}\n >\n {undoUI}\n {redoUI}\n <GridMenuButton\n variant={'outlined'}\n onClick={() => setChatOpen(true)}\n startIcon={<SmartToyTwoTone />}\n >\n Open chat\n </GridMenuButton>\n <GridAgentChat\n agentRegistrationId={agentRegistrationId}\n open={chatOpen}\n onClose={() => setChatOpen(false)}\n gridSessionId={session.sessionId!}\n usersReplicaId={replicaId!}\n chatbotName=\"Grid Assistant\"\n />\n {session.sourceEntityId && (\n <UploadCsvToGridButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n {session.sessionId && (\n <ExportCsvFromGridButton\n gridSessionId={session.sessionId}\n filename={\n 'grid-' + (session.sourceEntityId || 'export')\n }\n />\n )}\n {session.sourceEntityId && (\n <MergeGridWithSourceTableButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n </Stack>\n </Grid>\n <Grid size={12}>\n <DataGrid\n gridRef={gridRef}\n rowValues={rowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n schemaPropertiesInfo={schemaPropertiesInfo}\n entityIsView={entityIsView}\n jsonSchema={jsonSchema}\n lastSelection={lastSelection}\n handleChange={handleChange}\n handleSelectionChange={handleSelectionChange}\n onSelectedRowChange={handleSelectedRowChange}\n />\n </Grid>\n <Grid size={12}>\n <ValidationAlert\n selectedRowIndex={selectedRowIndexRef.current}\n rowValues={rowValues}\n />\n </Grid>\n </>\n )}\n {/* Debug Model Snapshot */}\n {showDebugInfo && (\n <Grid\n size={12}\n style={{\n margin: '10px 0',\n padding: '10px',\n border: '1px solid #ccc',\n maxHeight: '400px',\n overflowY: 'auto',\n }}\n >\n <h3>Model</h3>\n {model ? (\n <ClickableJsonCrdt model={model} />\n ) : (\n 'No model available'\n )}\n </Grid>\n )}\n </>\n )}\n </Grid>\n </div>\n )\n },\n)\n\nexport default SynapseGrid\n"],"names":["SynapseGrid","forwardRef","agentRegistrationId","showDebugInfo","ref","session","setSession","useState","replicaId","setReplicaId","chatOpen","setChatOpen","lastSelection","setLastSelection","startGridSessionRef","useRef","gridRef","userBundle","isLoading","useGetCurrentUserBundle","useImperativeHandle","request","sessionId","isConnected","websocketInstance","hasCompletedInitialSync","model","modelSnapshot","connect","presignedUrl","hasSufficientData","useDataGridWebSocket","websocketInstanceRef","useEffect","lastConnectParamsRef","nextParams","prevParams","jsonSchema","useGetSchemaForGrid","entityData","useGetEntity","entityIsView","schemaPropertiesInfo","useMemo","getSchemaPropertiesInfo","connectionStatus","rowValues","modelRowsToGrid","commit","useCallback","applyAndCommitChanges","modelChanges","change","applyModelChange","applyModelChangeFromUndoRedo","undoUI","redoUI","addOperationsToUndoStack","clearRedoStack","useGridUndoRedo","handleChange","newValue","operations","removeNoOpOperations","mapOperationsToModelChanges","handleSelectionChange","opts","selection","replicaSelectionModel","computeReplicaSelectionModel","selectedRowIndexRef","forceUpdate","handleSelectedRowChange","rowIndex","_row","CertificationRequirement","jsxs","Grid","jsx","StartGridSession","Fragment","SkeletonTable","Stack","GridMenuButton","SmartToyTwoTone","GridAgentChat","UploadCsvToGridButton","ExportCsvFromGridButton","MergeGridWithSourceTableButton","DataGrid","ValidationAlert","ClickableJsonCrdt"],"mappings":"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"}
@@ -29,7 +29,7 @@ import "universal-cookie";
29
29
  import "../../../utils/AppUtils/session/ApplicationSessionContext.js";
30
30
  import "../../../utils/context/FullContextProvider.js";
31
31
  import "../../../utils/context/DocumentMetadataContext.js";
32
- import '../../FullWidthAlert/FullWidthAlert.css';import '../../../style/components/_spinner.css';/* empty css */
32
+ import '../../Plot/SynapsePlot.css';import '../../FullWidthAlert/FullWidthAlert.css';import '../../../style/components/_spinner.css';/* empty css */
33
33
  import "react-router";
34
34
  import "@mui/icons-material/Close";
35
35
  import "../../styled/StyledPopover.js";
@@ -53,11 +53,14 @@ import "@mui/material/SvgIcon";
53
53
  import "../../../assets/icons/AccessPending.svg.js";
54
54
  import "../../../assets/icons/AccessPendingCloud.svg.js";
55
55
  import "../../../assets/icons/FileWithShield.svg.js";
56
+ import "../../../assets/icons/MultiFile.svg.js";
57
+ import "../../../assets/icons/UnpackagableFile.svg.js";
56
58
  import "../../../assets/icons/bioChemicalPhysical.svg.js";
57
59
  import "../../../assets/icons/computationalTool.svg.js";
58
60
  import "../../../assets/icons/dataReuse.svg.js";
59
61
  import "../../../assets/icons/inSilicoModel.svg.js";
60
62
  import "../../../assets/icons/modelSystem.svg.js";
63
+ import "../../../assets/mui_components/PackagableFile.svg.js";
61
64
  import "../../../assets/icons/spatialProfiling.svg.js";
62
65
  import "../../Authentication/AuthenticationMethodSelection.js";
63
66
  import "mui-one-time-password-input";
@@ -82,6 +85,7 @@ import "../../../assets/icons/study-complete.svg.js";
82
85
  import "../../../assets/icons/translational.svg.js";
83
86
  import "../../../assets/icons/tree_horizontal.svg.js";
84
87
  import "../../../assets/icons/standardDataModel.svg.js";
88
+ import "../../../assets/icons/Challenge.svg.js";
85
89
  import "react-intersection-observer";
86
90
  import "@rjsf/utils";
87
91
  import "../../SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js";
@@ -99,10 +103,10 @@ import "../../../assets/icons/DoubleQuotes.svg.js";
99
103
  import "../../EntityDownloadConfirmation/EntityDownloadConfirmation.js";
100
104
  import "../../QueryContext/QueryContext.js";
101
105
  import "../../QueryVisualizationWrapper/QueryVisualizationContext.js";
106
+ import "react-share";
102
107
  import "../../GenericCard/GenericCard.js";
103
108
  import "@mui/system";
104
109
  import "../../GenericCard/Linkify.js";
105
- import "react-share";
106
110
  import "jotai";
107
111
  import "lodash-es/noop";
108
112
  import "../../QueryWrapper/TableRowSelectionState.js";
@@ -162,7 +166,6 @@ import "@mui/x-date-pickers/AdapterDayjs";
162
166
  import "@mui/x-date-pickers/LocalizationProvider";
163
167
  import "../../FeaturedDataTabs/FacetPlotsCardGrid.js";
164
168
  import "../../Forum/ForumTable.js";
165
- import "@mui/material/IconButton";
166
169
  import "@mui/icons-material/NavigateNext";
167
170
  import "@react-google-maps/api";
168
171
  import "../../Markdown/MarkdownUtils.js";
@@ -176,6 +179,7 @@ import "lodash-es/orderBy";
176
179
  import "../../styled/LargeButton.js";
177
180
  import "../../../assets/illustrations/diagonalLinePattern.svg.js";
178
181
  import "@upsetjs/react";
182
+ /* empty css */
179
183
  import "reactflow";
180
184
  import "../../ProvenanceGraph/ProvenanceUtils.js";
181
185
  import "reactflow/dist/style.css";
@@ -202,6 +206,7 @@ import "lodash-es/set";
202
206
  import "lodash-es/trimStart";
203
207
  import "../../SynapseForm/SynapseFormSubmissionGrid.js";
204
208
  import "../../SynapseChat/AccessLevelMenu.js";
209
+ import "react-draggable";
205
210
  import "../../TimelinePlot/phasesQueryResponseData.js";
206
211
  import "../../EntityHeaderTable/EntityHeaderTable.js";
207
212
  import "../../MuiContainer.js";
@@ -219,7 +224,7 @@ function u({
219
224
  let o = "";
220
225
  return i > 0 && (o += `created ${i.toLocaleString()} rows`), i > 0 && r > 0 ? o += " and " : r == 0 && (o += "."), r > 0 && (o += `updated ${r.toLocaleString()} rows.`), I(o);
221
226
  }
222
- function ut(i) {
227
+ function yt(i) {
223
228
  const { gridSessionId: r, open: o, onClose: m, onComplete: p } = i, {
224
229
  mutate: e,
225
230
  isPending: s,
@@ -251,7 +256,7 @@ function ut(i) {
251
256
  );
252
257
  }
253
258
  export {
254
- ut as default,
259
+ yt as default,
255
260
  u as getUpdateMessage
256
261
  };
257
262
  //# sourceMappingURL=UploadCsvToGridDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UploadCsvToGridDialog.js","sources":["../../../../src/components/DataGrid/components/UploadCsvToGridDialog.tsx"],"sourcesContent":["import { displayToast } from '@/components/index'\nimport CsvPreviewDialog from '@/components/table/CsvPreview/CsvPreviewDialog'\nimport { useImportCsvIntoGrid } from '@/synapse-queries/grid/useImportCsvIntoGrid'\nimport { GridCsvImportResponse } from '@sage-bionetworks/synapse-client'\nimport upperFirst from 'lodash-es/upperFirst'\n\ntype UploadCsvToGridDialogProps = {\n gridSessionId: string\n open: boolean\n onClose: () => void\n onComplete: () => void\n}\n\nexport function getUpdateMessage({\n createdCount = 0,\n updatedCount = 0,\n}: GridCsvImportResponse): string {\n let message = ''\n if (createdCount > 0) {\n message += `created ${createdCount.toLocaleString()} rows`\n }\n if (createdCount > 0 && updatedCount > 0) {\n message += ' and '\n } else if (updatedCount == 0) {\n message += '.'\n }\n if (updatedCount > 0) {\n message += `updated ${updatedCount.toLocaleString()} rows.`\n }\n return upperFirst(message)\n}\n\nexport default function UploadCsvToGridDialog(\n props: UploadCsvToGridDialogProps,\n) {\n const { gridSessionId, open, onClose, onComplete } = props\n\n const {\n mutate: importCsvIntoGrid,\n isPending,\n error,\n } = useImportCsvIntoGrid({\n onSuccess: result => {\n displayToast(getUpdateMessage(result), 'success', {\n title: 'Data imported successfully',\n })\n onComplete()\n },\n })\n\n return (\n <CsvPreviewDialog\n open={open}\n onClose={onClose}\n onConfirm={(fileHandleId, schema, csvDescriptor) => {\n importCsvIntoGrid({\n concreteType:\n 'org.sagebionetworks.repo.model.grid.GridCsvImportRequest',\n sessionId: gridSessionId,\n fileHandleId,\n csvDescriptor,\n schema,\n })\n }}\n errorMessage={error?.message}\n confirmIsPending={isPending}\n />\n )\n}\n"],"names":["getUpdateMessage","createdCount","updatedCount","message","upperFirst","UploadCsvToGridDialog","props","gridSessionId","open","onClose","onComplete","importCsvIntoGrid","isPending","error","useImportCsvIntoGrid","result","displayToast","jsx","CsvPreviewDialog","fileHandleId","schema","csvDescriptor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,SAASA,EAAiB;AAAA,EAC/B,cAAAC,IAAe;AAAA,EACf,cAAAC,IAAe;AACjB,GAAkC;AAChC,MAAIC,IAAU;AACd,SAAIF,IAAe,MACjBE,KAAW,WAAWF,EAAa,eAAA,CAAgB,UAEjDA,IAAe,KAAKC,IAAe,IACrCC,KAAW,UACFD,KAAgB,MACzBC,KAAW,MAETD,IAAe,MACjBC,KAAW,WAAWD,EAAa,eAAA,CAAgB,WAE9CE,EAAWD,CAAO;AAC3B;AAEA,SAAwBE,GACtBC,GACA;AACA,QAAM,EAAE,eAAAC,GAAe,MAAAC,GAAM,SAAAC,GAAS,YAAAC,MAAeJ,GAE/C;AAAA,IACJ,QAAQK;AAAA,IACR,WAAAC;AAAA,IACA,OAAAC;AAAA,EAAA,IACEC,EAAqB;AAAA,IACvB,WAAW,CAAAC,MAAU;AACnB,MAAAC,EAAahB,EAAiBe,CAAM,GAAG,WAAW;AAAA,QAChD,OAAO;AAAA,MAAA,CACR,GACDL,EAAA;AAAA,IACF;AAAA,EAAA,CACD;AAED,SACE,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAV;AAAA,MACA,SAAAC;AAAA,MACA,WAAW,CAACU,GAAcC,GAAQC,MAAkB;AAClD,QAAAV,EAAkB;AAAA,UAChB,cACE;AAAA,UACF,WAAWJ;AAAA,UACX,cAAAY;AAAA,UACA,eAAAE;AAAA,UACA,QAAAD;AAAA,QAAA,CACD;AAAA,MACH;AAAA,MACA,cAAcP,GAAO;AAAA,MACrB,kBAAkBD;AAAA,IAAA;AAAA,EAAA;AAGxB;"}
1
+ {"version":3,"file":"UploadCsvToGridDialog.js","sources":["../../../../src/components/DataGrid/components/UploadCsvToGridDialog.tsx"],"sourcesContent":["import { displayToast } from '@/components/index'\nimport CsvPreviewDialog from '@/components/table/CsvPreview/CsvPreviewDialog'\nimport { useImportCsvIntoGrid } from '@/synapse-queries/grid/useImportCsvIntoGrid'\nimport { GridCsvImportResponse } from '@sage-bionetworks/synapse-client'\nimport upperFirst from 'lodash-es/upperFirst'\n\ntype UploadCsvToGridDialogProps = {\n gridSessionId: string\n open: boolean\n onClose: () => void\n onComplete: () => void\n}\n\nexport function getUpdateMessage({\n createdCount = 0,\n updatedCount = 0,\n}: GridCsvImportResponse): string {\n let message = ''\n if (createdCount > 0) {\n message += `created ${createdCount.toLocaleString()} rows`\n }\n if (createdCount > 0 && updatedCount > 0) {\n message += ' and '\n } else if (updatedCount == 0) {\n message += '.'\n }\n if (updatedCount > 0) {\n message += `updated ${updatedCount.toLocaleString()} rows.`\n }\n return upperFirst(message)\n}\n\nexport default function UploadCsvToGridDialog(\n props: UploadCsvToGridDialogProps,\n) {\n const { gridSessionId, open, onClose, onComplete } = props\n\n const {\n mutate: importCsvIntoGrid,\n isPending,\n error,\n } = useImportCsvIntoGrid({\n onSuccess: result => {\n displayToast(getUpdateMessage(result), 'success', {\n title: 'Data imported successfully',\n })\n onComplete()\n },\n })\n\n return (\n <CsvPreviewDialog\n open={open}\n onClose={onClose}\n onConfirm={(fileHandleId, schema, csvDescriptor) => {\n importCsvIntoGrid({\n concreteType:\n 'org.sagebionetworks.repo.model.grid.GridCsvImportRequest',\n sessionId: gridSessionId,\n fileHandleId,\n csvDescriptor,\n schema,\n })\n }}\n errorMessage={error?.message}\n confirmIsPending={isPending}\n />\n )\n}\n"],"names":["getUpdateMessage","createdCount","updatedCount","message","upperFirst","UploadCsvToGridDialog","props","gridSessionId","open","onClose","onComplete","importCsvIntoGrid","isPending","error","useImportCsvIntoGrid","result","displayToast","jsx","CsvPreviewDialog","fileHandleId","schema","csvDescriptor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,SAASA,EAAiB;AAAA,EAC/B,cAAAC,IAAe;AAAA,EACf,cAAAC,IAAe;AACjB,GAAkC;AAChC,MAAIC,IAAU;AACd,SAAIF,IAAe,MACjBE,KAAW,WAAWF,EAAa,eAAA,CAAgB,UAEjDA,IAAe,KAAKC,IAAe,IACrCC,KAAW,UACFD,KAAgB,MACzBC,KAAW,MAETD,IAAe,MACjBC,KAAW,WAAWD,EAAa,eAAA,CAAgB,WAE9CE,EAAWD,CAAO;AAC3B;AAEA,SAAwBE,GACtBC,GACA;AACA,QAAM,EAAE,eAAAC,GAAe,MAAAC,GAAM,SAAAC,GAAS,YAAAC,MAAeJ,GAE/C;AAAA,IACJ,QAAQK;AAAA,IACR,WAAAC;AAAA,IACA,OAAAC;AAAA,EAAA,IACEC,EAAqB;AAAA,IACvB,WAAW,CAAAC,MAAU;AACnB,MAAAC,EAAahB,EAAiBe,CAAM,GAAG,WAAW;AAAA,QAChD,OAAO;AAAA,MAAA,CACR,GACDL,EAAA;AAAA,IACF;AAAA,EAAA,CACD;AAED,SACE,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAV;AAAA,MACA,SAAAC;AAAA,MACA,WAAW,CAACU,GAAcC,GAAQC,MAAkB;AAClD,QAAAV,EAAkB;AAAA,UAChB,cACE;AAAA,UACF,WAAWJ;AAAA,UACX,cAAAY;AAAA,UACA,eAAAE;AAAA,UACA,QAAAD;AAAA,QAAA,CACD;AAAA,MACH;AAAA,MACA,cAAcP,GAAO;AAAA,MACrB,kBAAkBD;AAAA,IAAA;AAAA,EAAA;AAGxB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useExportDataGridToCsv.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/hooks/useExportDataGridToCsv.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B;;;EA4D5E"}
1
+ {"version":3,"file":"useExportDataGridToCsv.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/hooks/useExportDataGridToCsv.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B;;;EA8D5E"}
@@ -2,14 +2,14 @@ import { useExportGridAsCsv as u } from "../../../synapse-queries/grid/useExport
2
2
  import { displayToast as n } from "../../ToastMessage/ToastMessage.js";
3
3
  import { useSynapseContext as f } from "../../../utils/context/SynapseContext.js";
4
4
  import { getFileHandleByIdURL as g } from "../../../synapse-client/SynapseClient.js";
5
- function U(c) {
6
- const { gridSessionId: d, filename: i } = c, { accessToken: a } = f(), { mutate: l, isPending: p } = u({
5
+ function R(d) {
6
+ const { gridSessionId: i, filename: c } = d, { accessToken: l } = f(), { mutate: a, isPending: p } = u({
7
7
  onSuccess: (o) => {
8
- o?.resultsFileHandleId && g(o.resultsFileHandleId, a).then((t) => fetch(t).then((r) => r.blob()).then((r) => {
8
+ o?.resultsFileHandleId && g(o.resultsFileHandleId, l).then((t) => fetch(t).then((r) => r.blob()).then((r) => {
9
9
  const s = URL.createObjectURL(r), e = document.createElement("a");
10
10
  e.href = s;
11
11
  const m = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
12
- e.setAttribute("download", `${i}-${m}.csv`), document.body.appendChild(e), e.click(), document.body.removeChild(e), URL.revokeObjectURL(s), n("CSV export completed successfully", "success");
12
+ e.setAttribute("download", `${c}-${m}.csv`), document.body.appendChild(e), e.click(), document.body.removeChild(e), URL.revokeObjectURL(s), n("CSV export completed successfully", "success");
13
13
  })).catch((t) => {
14
14
  n(
15
15
  `Failed to download CSV: ${t instanceof Error ? t.message : "Unknown error"}`,
@@ -26,8 +26,10 @@ function U(c) {
26
26
  });
27
27
  return {
28
28
  exportToCsv: () => {
29
- l({
30
- sessionId: d,
29
+ a({
30
+ sessionId: i,
31
+ includeEtag: !1,
32
+ includeRowIdAndRowVersion: !1,
31
33
  concreteType: "org.sagebionetworks.repo.model.grid.DownloadFromGridRequest"
32
34
  });
33
35
  },
@@ -35,6 +37,6 @@ function U(c) {
35
37
  };
36
38
  }
37
39
  export {
38
- U as useExportDataGridToCsv
40
+ R as useExportDataGridToCsv
39
41
  };
40
42
  //# sourceMappingURL=useExportDataGridToCsv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useExportDataGridToCsv.js","sources":["../../../../src/components/DataGrid/hooks/useExportDataGridToCsv.ts"],"sourcesContent":["import { useExportGridAsCsv } from '@/synapse-queries/grid/useExportGrid'\nimport { displayToast } from '../../ToastMessage'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { getFileHandleByIdURL } from '@/synapse-client/SynapseClient'\n\nexport interface UseExportDataGridToCsvOptions {\n gridSessionId: string\n filename: string\n}\n\nexport function useExportDataGridToCsv(options: UseExportDataGridToCsvOptions) {\n const { gridSessionId, filename } = options\n const { accessToken } = useSynapseContext()\n\n const { mutate: exportGrid, isPending } = useExportGridAsCsv({\n onSuccess: data => {\n if (data?.resultsFileHandleId) {\n // Get presigned URL and trigger download\n getFileHandleByIdURL(data.resultsFileHandleId, accessToken)\n .then(presignedUrl => {\n // Fetch the file as a blob to control the filename\n return fetch(presignedUrl)\n .then(response => response.blob())\n .then(blob => {\n // Create a blob URL with our custom filename\n const blobUrl = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = blobUrl\n // Generate filename with timestamp\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-')\n link.setAttribute('download', `${filename}-${timestamp}.csv`)\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n // Clean up the blob URL\n URL.revokeObjectURL(blobUrl)\n\n displayToast('CSV export completed successfully', 'success')\n })\n })\n .catch(err => {\n displayToast(\n `Failed to download CSV: ${\n err instanceof Error ? err.message : 'Unknown error'\n }`,\n 'danger',\n )\n })\n }\n },\n onError: error => {\n displayToast(\n `CSV export failed: ${error.reason || 'Unknown error'}`,\n 'danger',\n )\n },\n })\n\n const exportToCsv = () => {\n exportGrid({\n sessionId: gridSessionId,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.DownloadFromGridRequest',\n })\n }\n\n return {\n exportToCsv,\n isExporting: isPending,\n }\n}\n"],"names":["useExportDataGridToCsv","options","gridSessionId","filename","accessToken","useSynapseContext","exportGrid","isPending","useExportGridAsCsv","data","getFileHandleByIdURL","presignedUrl","response","blob","blobUrl","link","timestamp","displayToast","err","error"],"mappings":";;;;AAUO,SAASA,EAAuBC,GAAwC;AAC7E,QAAM,EAAE,eAAAC,GAAe,UAAAC,EAAA,IAAaF,GAC9B,EAAE,aAAAG,EAAA,IAAgBC,EAAA,GAElB,EAAE,QAAQC,GAAY,WAAAC,EAAA,IAAcC,EAAmB;AAAA,IAC3D,WAAW,CAAAC,MAAQ;AACjB,MAAIA,GAAM,uBAERC,EAAqBD,EAAK,qBAAqBL,CAAW,EACvD,KAAK,CAAAO,MAEG,MAAMA,CAAY,EACtB,KAAK,CAAAC,MAAYA,EAAS,KAAA,CAAM,EAChC,KAAK,CAAAC,MAAQ;AAEZ,cAAMC,IAAU,IAAI,gBAAgBD,CAAI,GAClCE,IAAO,SAAS,cAAc,GAAG;AACvC,QAAAA,EAAK,OAAOD;AAEZ,cAAME,yBAAgB,KAAA,GAAO,cAAc,QAAQ,SAAS,GAAG;AAC/D,QAAAD,EAAK,aAAa,YAAY,GAAGZ,CAAQ,IAAIa,CAAS,MAAM,GAC5D,SAAS,KAAK,YAAYD,CAAI,GAC9BA,EAAK,MAAA,GACL,SAAS,KAAK,YAAYA,CAAI,GAE9B,IAAI,gBAAgBD,CAAO,GAE3BG,EAAa,qCAAqC,SAAS;AAAA,MAC7D,CAAC,CACJ,EACA,MAAM,CAAAC,MAAO;AACZ,QAAAD;AAAA,UACE,2BACEC,aAAe,QAAQA,EAAI,UAAU,eACvC;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,CAAC;AAAA,IAEP;AAAA,IACA,SAAS,CAAAC,MAAS;AAChB,MAAAF;AAAA,QACE,sBAAsBE,EAAM,UAAU,eAAe;AAAA,QACrD;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA,CACD;AAUD,SAAO;AAAA,IACL,aATkB,MAAM;AACxB,MAAAb,EAAW;AAAA,QACT,WAAWJ;AAAA,QACX,cACE;AAAA,MAAA,CACH;AAAA,IACH;AAAA,IAIE,aAAaK;AAAA,EAAA;AAEjB;"}
1
+ {"version":3,"file":"useExportDataGridToCsv.js","sources":["../../../../src/components/DataGrid/hooks/useExportDataGridToCsv.ts"],"sourcesContent":["import { useExportGridAsCsv } from '@/synapse-queries/grid/useExportGrid'\nimport { displayToast } from '../../ToastMessage'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { getFileHandleByIdURL } from '@/synapse-client/SynapseClient'\n\nexport interface UseExportDataGridToCsvOptions {\n gridSessionId: string\n filename: string\n}\n\nexport function useExportDataGridToCsv(options: UseExportDataGridToCsvOptions) {\n const { gridSessionId, filename } = options\n const { accessToken } = useSynapseContext()\n\n const { mutate: exportGrid, isPending } = useExportGridAsCsv({\n onSuccess: data => {\n if (data?.resultsFileHandleId) {\n // Get presigned URL and trigger download\n getFileHandleByIdURL(data.resultsFileHandleId, accessToken)\n .then(presignedUrl => {\n // Fetch the file as a blob to control the filename\n return fetch(presignedUrl)\n .then(response => response.blob())\n .then(blob => {\n // Create a blob URL with our custom filename\n const blobUrl = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = blobUrl\n // Generate filename with timestamp\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-')\n link.setAttribute('download', `${filename}-${timestamp}.csv`)\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n // Clean up the blob URL\n URL.revokeObjectURL(blobUrl)\n\n displayToast('CSV export completed successfully', 'success')\n })\n })\n .catch(err => {\n displayToast(\n `Failed to download CSV: ${\n err instanceof Error ? err.message : 'Unknown error'\n }`,\n 'danger',\n )\n })\n }\n },\n onError: error => {\n displayToast(\n `CSV export failed: ${error.reason || 'Unknown error'}`,\n 'danger',\n )\n },\n })\n\n const exportToCsv = () => {\n exportGrid({\n sessionId: gridSessionId,\n includeEtag: false,\n includeRowIdAndRowVersion: false,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.DownloadFromGridRequest',\n })\n }\n\n return {\n exportToCsv,\n isExporting: isPending,\n }\n}\n"],"names":["useExportDataGridToCsv","options","gridSessionId","filename","accessToken","useSynapseContext","exportGrid","isPending","useExportGridAsCsv","data","getFileHandleByIdURL","presignedUrl","response","blob","blobUrl","link","timestamp","displayToast","err","error"],"mappings":";;;;AAUO,SAASA,EAAuBC,GAAwC;AAC7E,QAAM,EAAE,eAAAC,GAAe,UAAAC,EAAA,IAAaF,GAC9B,EAAE,aAAAG,EAAA,IAAgBC,EAAA,GAElB,EAAE,QAAQC,GAAY,WAAAC,EAAA,IAAcC,EAAmB;AAAA,IAC3D,WAAW,CAAAC,MAAQ;AACjB,MAAIA,GAAM,uBAERC,EAAqBD,EAAK,qBAAqBL,CAAW,EACvD,KAAK,CAAAO,MAEG,MAAMA,CAAY,EACtB,KAAK,CAAAC,MAAYA,EAAS,KAAA,CAAM,EAChC,KAAK,CAAAC,MAAQ;AAEZ,cAAMC,IAAU,IAAI,gBAAgBD,CAAI,GAClCE,IAAO,SAAS,cAAc,GAAG;AACvC,QAAAA,EAAK,OAAOD;AAEZ,cAAME,yBAAgB,KAAA,GAAO,cAAc,QAAQ,SAAS,GAAG;AAC/D,QAAAD,EAAK,aAAa,YAAY,GAAGZ,CAAQ,IAAIa,CAAS,MAAM,GAC5D,SAAS,KAAK,YAAYD,CAAI,GAC9BA,EAAK,MAAA,GACL,SAAS,KAAK,YAAYA,CAAI,GAE9B,IAAI,gBAAgBD,CAAO,GAE3BG,EAAa,qCAAqC,SAAS;AAAA,MAC7D,CAAC,CACJ,EACA,MAAM,CAAAC,MAAO;AACZ,QAAAD;AAAA,UACE,2BACEC,aAAe,QAAQA,EAAI,UAAU,eACvC;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,CAAC;AAAA,IAEP;AAAA,IACA,SAAS,CAAAC,MAAS;AAChB,MAAAF;AAAA,QACE,sBAAsBE,EAAM,UAAU,eAAe;AAAA,QACrD;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA,CACD;AAYD,SAAO;AAAA,IACL,aAXkB,MAAM;AACxB,MAAAb,EAAW;AAAA,QACT,WAAWJ;AAAA,QACX,aAAa;AAAA,QACb,2BAA2B;AAAA,QAC3B,cACE;AAAA,MAAA,CACH;AAAA,IACH;AAAA,IAIE,aAAaK;AAAA,EAAA;AAEjB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DirectDownload.d.ts","sourceRoot":"","sources":["../../../src/components/DirectDownload/DirectDownload.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,uBAAuB,EACxB,MAAM,iCAAiC,CAAA;AAExC,OAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI1D,MAAM,MAAM,uBAAuB,GAAG;IACpC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,oBAAoB,EAAE,uBAAuB,CAAA;IAC7C,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAA;IACnD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC7C,CAAA;AAsED,iBAAS,cAAc,CAAC,KAAK,EAAE,uBAAuB,2CAyErD;AAED,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"DirectDownload.d.ts","sourceRoot":"","sources":["../../../src/components/DirectDownload/DirectDownload.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,uBAAuB,EACxB,MAAM,iCAAiC,CAAA;AAExC,OAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI1D,MAAM,MAAM,uBAAuB,GAAG;IACpC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,oBAAoB,EAAE,uBAAuB,CAAA;IAC7C,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAA;IACnD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC7C,CAAA;AAsED,iBAAS,cAAc,CAAC,KAAK,EAAE,uBAAuB,2CAuErD;AAED,eAAe,cAAc,CAAA"}