synapse-react-client 4.0.18 → 4.0.20

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 (1609) hide show
  1. package/dist/SWC.index.d.ts +3 -1
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +3 -1
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
  6. package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
  7. package/dist/assets/DefaultColorfulPortalCardBackground.js.map +1 -1
  8. package/dist/assets/GoogleIcon.js.map +1 -1
  9. package/dist/assets/GoogleIcon24.js.map +1 -1
  10. package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
  11. package/dist/assets/homepage/BlinkingLiveIcon.js.map +1 -1
  12. package/dist/assets/homepage/aacr.js.map +1 -1
  13. package/dist/assets/homepage/cri.js.map +1 -1
  14. package/dist/assets/homepage/ctf.js.map +1 -1
  15. package/dist/assets/homepage/egress.js.map +1 -1
  16. package/dist/assets/homepage/facebook.js.map +1 -1
  17. package/dist/assets/homepage/fisma.js.map +1 -1
  18. package/dist/assets/homepage/gff.js.map +1 -1
  19. package/dist/assets/homepage/github.js.map +1 -1
  20. package/dist/assets/homepage/gray.js.map +1 -1
  21. package/dist/assets/homepage/hipaa-compliant.js.map +1 -1
  22. package/dist/assets/homepage/instagram.js.map +1 -1
  23. package/dist/assets/homepage/linkedin.js.map +1 -1
  24. package/dist/assets/homepage/ml-commons.js.map +1 -1
  25. package/dist/assets/homepage/nih-aging.js.map +1 -1
  26. package/dist/assets/homepage/nih-heart.js.map +1 -1
  27. package/dist/assets/homepage/nih-nci.js.map +1 -1
  28. package/dist/assets/homepage/nih-nimh.js.map +1 -1
  29. package/dist/assets/homepage/ntap.js.map +1 -1
  30. package/dist/assets/homepage/plan-item.js.map +1 -1
  31. package/dist/assets/homepage/powered-by-synapse-feature.js.map +1 -1
  32. package/dist/assets/homepage/precision-governance-feature.js.map +1 -1
  33. package/dist/assets/homepage/python.js.map +1 -1
  34. package/dist/assets/homepage/r.js.map +1 -1
  35. package/dist/assets/homepage/research-credit-feature.js.map +1 -1
  36. package/dist/assets/homepage/seamless-integration-feature.js.map +1 -1
  37. package/dist/assets/homepage/sloan.js.map +1 -1
  38. package/dist/assets/homepage/twitter.js.map +1 -1
  39. package/dist/assets/homepage/users.js.map +1 -1
  40. package/dist/assets/homepage/youtube.js.map +1 -1
  41. package/dist/assets/icons/AccessDataAnywhere.js.map +1 -1
  42. package/dist/assets/icons/AccessPending.js.map +1 -1
  43. package/dist/assets/icons/AccessPendingCloud.js.map +1 -1
  44. package/dist/assets/icons/AddAd.js.map +1 -1
  45. package/dist/assets/icons/AddToList.js.map +1 -1
  46. package/dist/assets/icons/Alert.js.map +1 -1
  47. package/dist/assets/icons/Arrow.js.map +1 -1
  48. package/dist/assets/icons/AwardScroll.js.map +1 -1
  49. package/dist/assets/icons/Baseline.js.map +1 -1
  50. package/dist/assets/icons/Cavatica.js.map +1 -1
  51. package/dist/assets/icons/CertifiedUser.js.map +1 -1
  52. package/dist/assets/icons/Challenge.js.map +1 -1
  53. package/dist/assets/icons/Checkbox/Checked.js.map +1 -1
  54. package/dist/assets/icons/Checkbox/Checked2.js.map +1 -1
  55. package/dist/assets/icons/Checkbox/Indeterminate.js.map +1 -1
  56. package/dist/assets/icons/Checkbox/Indeterminate2.js.map +1 -1
  57. package/dist/assets/icons/Checkbox/Unchecked.js.map +1 -1
  58. package/dist/assets/icons/Checkbox/Unchecked2.js.map +1 -1
  59. package/dist/assets/icons/ClappingHands.js.map +1 -1
  60. package/dist/assets/icons/CloudWarning.js.map +1 -1
  61. package/dist/assets/icons/CommunicateFindings.js.map +1 -1
  62. package/dist/assets/icons/CreateVersion.js.map +1 -1
  63. package/dist/assets/icons/DNA_Two.js.map +1 -1
  64. package/dist/assets/icons/Data2.js.map +1 -1
  65. package/dist/assets/icons/DoubleQuotes.js.map +1 -1
  66. package/dist/assets/icons/EmailAddressAdornment.js.map +1 -1
  67. package/dist/assets/icons/FileWithShield.js.map +1 -1
  68. package/dist/assets/icons/FileWithShield2.js.map +1 -1
  69. package/dist/assets/icons/FrontHand.js.map +1 -1
  70. package/dist/assets/icons/HandWithMoney.js.map +1 -1
  71. package/dist/assets/icons/IconCopy.js.map +1 -1
  72. package/dist/assets/icons/IconMinus.js.map +1 -1
  73. package/dist/assets/icons/IconPlus.js.map +1 -1
  74. package/dist/assets/icons/Java.js.map +1 -1
  75. package/dist/assets/icons/MintDoi.js.map +1 -1
  76. package/dist/assets/icons/MultiFile.js.map +1 -1
  77. package/dist/assets/icons/MultiFile2.js.map +1 -1
  78. package/dist/assets/icons/NoData.js.map +1 -1
  79. package/dist/assets/icons/NoSearchResults.js.map +1 -1
  80. package/dist/assets/icons/ORCIDIcon.js.map +1 -1
  81. package/dist/assets/icons/OpenBook.js.map +1 -1
  82. package/dist/assets/icons/Podium.js.map +1 -1
  83. package/dist/assets/icons/Python.js.map +1 -1
  84. package/dist/assets/icons/QueryStructuredData.js.map +1 -1
  85. package/dist/assets/icons/RLogo.js.map +1 -1
  86. package/dist/assets/icons/RecordProvenance.js.map +1 -1
  87. package/dist/assets/icons/RosetteRibbon.js.map +1 -1
  88. package/dist/assets/icons/SageFullLogo.js.map +1 -1
  89. package/dist/assets/icons/SearchImage.js.map +1 -1
  90. package/dist/assets/icons/ShareYourResearch.js.map +1 -1
  91. package/dist/assets/icons/Sort.js.map +1 -1
  92. package/dist/assets/icons/StarTrophy.js.map +1 -1
  93. package/dist/assets/icons/SynapseFullLogo.js.map +1 -1
  94. package/dist/assets/icons/SynapseIconWhite.js.map +1 -1
  95. package/dist/assets/icons/SynapseLogoName.js.map +1 -1
  96. package/dist/assets/icons/TasksIcon.js.map +1 -1
  97. package/dist/assets/icons/Terminal.js.map +1 -1
  98. package/dist/assets/icons/ThreeStars.js.map +1 -1
  99. package/dist/assets/icons/UnpackagableFile.js.map +1 -1
  100. package/dist/assets/icons/UnpackagableFile2.js.map +1 -1
  101. package/dist/assets/icons/ValidatedProfile.js.map +1 -1
  102. package/dist/assets/icons/account-certified.js.map +1 -1
  103. package/dist/assets/icons/account-enabled-mfa.js.map +1 -1
  104. package/dist/assets/icons/account-validated.js.map +1 -1
  105. package/dist/assets/icons/bioChemicalPhysical.js.map +1 -1
  106. package/dist/assets/icons/chart2.js.map +1 -1
  107. package/dist/assets/icons/columns.js.map +1 -1
  108. package/dist/assets/icons/columnsDarkTheme.js.map +1 -1
  109. package/dist/assets/icons/computationalTool.js.map +1 -1
  110. package/dist/assets/icons/dataReuse.js.map +1 -1
  111. package/dist/assets/icons/emailAddressAdornment2.js.map +1 -1
  112. package/dist/assets/icons/emailWithNotification.js.map +1 -1
  113. package/dist/assets/icons/error_page/maintenance.js.map +1 -1
  114. package/dist/assets/icons/error_page/no-access.js.map +1 -1
  115. package/dist/assets/icons/error_page/unavailable.js.map +1 -1
  116. package/dist/assets/icons/file.js.map +1 -1
  117. package/dist/assets/icons/inSilicoModel.js.map +1 -1
  118. package/dist/assets/icons/institution.js.map +1 -1
  119. package/dist/assets/icons/json-form-tool-no-submissions.js.map +1 -1
  120. package/dist/assets/icons/modelSystem.js.map +1 -1
  121. package/dist/assets/icons/mouse.js.map +1 -1
  122. package/dist/assets/icons/organizations.js.map +1 -1
  123. package/dist/assets/icons/person.js.map +1 -1
  124. package/dist/assets/icons/spatialProfiling.js.map +1 -1
  125. package/dist/assets/icons/standardDataModel.js.map +1 -1
  126. package/dist/assets/icons/study-active.js.map +1 -1
  127. package/dist/assets/icons/study-complete.js.map +1 -1
  128. package/dist/assets/icons/subscribe_plus.js.map +1 -1
  129. package/dist/assets/icons/synapse-logo.js.map +1 -1
  130. package/dist/assets/icons/terms/CheckIcon.js.map +1 -1
  131. package/dist/assets/icons/translational.js.map +1 -1
  132. package/dist/assets/icons/tree_horizontal.js.map +1 -1
  133. package/dist/assets/illustrations/acknowledgement_statements_illustration.js.map +1 -1
  134. package/dist/assets/illustrations/challenges_illustration.js.map +1 -1
  135. package/dist/assets/illustrations/cohort_builder_illustration.js.map +1 -1
  136. package/dist/assets/illustrations/data_access_management_illustration.js.map +1 -1
  137. package/dist/assets/illustrations/datasets_illustration.js.map +1 -1
  138. package/dist/assets/illustrations/diagonalLinePattern.js.map +1 -1
  139. package/dist/assets/illustrations/discussions_illustration.js.map +1 -1
  140. package/dist/assets/illustrations/docker_illustration.js.map +1 -1
  141. package/dist/assets/illustrations/donation_illustration.js.map +1 -1
  142. package/dist/assets/illustrations/favorites_illustration.js.map +1 -1
  143. package/dist/assets/illustrations/files_illustration.js.map +1 -1
  144. package/dist/assets/illustrations/following_illustration.js.map +1 -1
  145. package/dist/assets/illustrations/index.js.map +1 -1
  146. package/dist/assets/illustrations/left_dot_blob_dark_illustration.js.map +1 -1
  147. package/dist/assets/illustrations/left_dot_blob_illustration.js.map +1 -1
  148. package/dist/assets/illustrations/projects_illustration.js.map +1 -1
  149. package/dist/assets/illustrations/right_dot_blob_dark_illustration.js.map +1 -1
  150. package/dist/assets/illustrations/right_dot_blob_illustration.js.map +1 -1
  151. package/dist/assets/illustrations/tables_illustration.js.map +1 -1
  152. package/dist/assets/illustrations/teams_illustration.js.map +1 -1
  153. package/dist/assets/illustrations/trash_can_illustration.js.map +1 -1
  154. package/dist/assets/illustrations/underconstruction_illustration.js.map +1 -1
  155. package/dist/assets/illustrations/wikis_illustration.js.map +1 -1
  156. package/dist/assets/logos/other/ad-workbench-logo.js.map +1 -1
  157. package/dist/assets/logos/other/cavatica-logo.js.map +1 -1
  158. package/dist/assets/logos/other/pluto-logo.js.map +1 -1
  159. package/dist/assets/logos/other/terra-logo.js.map +1 -1
  160. package/dist/assets/mui_components/AccessManagement.js.map +1 -1
  161. package/dist/assets/mui_components/AccountCertified.js.map +1 -1
  162. package/dist/assets/mui_components/AccountRegistered.js.map +1 -1
  163. package/dist/assets/mui_components/AccountValidated.js.map +1 -1
  164. package/dist/assets/mui_components/ActionKey.js.map +1 -1
  165. package/dist/assets/mui_components/BioChemicalPhysical.js.map +1 -1
  166. package/dist/assets/mui_components/Chromatin.js.map +1 -1
  167. package/dist/assets/mui_components/Clinical.js.map +1 -1
  168. package/dist/assets/mui_components/ComputationalTool.js.map +1 -1
  169. package/dist/assets/mui_components/Data.js.map +1 -1
  170. package/dist/assets/mui_components/DataLocked.js.map +1 -1
  171. package/dist/assets/mui_components/DataReuse.js.map +1 -1
  172. package/dist/assets/mui_components/Dataset.js.map +1 -1
  173. package/dist/assets/mui_components/DatasetCollection.js.map +1 -1
  174. package/dist/assets/mui_components/Docker.js.map +1 -1
  175. package/dist/assets/mui_components/GeneExpression.js.map +1 -1
  176. package/dist/assets/mui_components/GeneVariants.js.map +1 -1
  177. package/dist/assets/mui_components/HelpChatBubble.js.map +1 -1
  178. package/dist/assets/mui_components/Imaging.js.map +1 -1
  179. package/dist/assets/mui_components/InSilicoModel.js.map +1 -1
  180. package/dist/assets/mui_components/Kinomics.js.map +1 -1
  181. package/dist/assets/mui_components/LineGraph.js.map +1 -1
  182. package/dist/assets/mui_components/ModelSystem.js.map +1 -1
  183. package/dist/assets/mui_components/Other.js.map +1 -1
  184. package/dist/assets/mui_components/PackagableFile.js.map +1 -1
  185. package/dist/assets/mui_components/PackagableFile2.js.map +1 -1
  186. package/dist/assets/mui_components/Proteomics.js.map +1 -1
  187. package/dist/assets/mui_components/Rat.js.map +1 -1
  188. package/dist/assets/mui_components/SpatialProfiling.js.map +1 -1
  189. package/dist/assets/sustainability/darkDialPosition1.js.map +1 -1
  190. package/dist/assets/sustainability/darkDialPosition2.js.map +1 -1
  191. package/dist/assets/sustainability/darkDialPosition3.js.map +1 -1
  192. package/dist/assets/sustainability/darkDialPosition4.js.map +1 -1
  193. package/dist/assets/sustainability/dialPosition1.js.map +1 -1
  194. package/dist/assets/sustainability/dialPosition2.js.map +1 -1
  195. package/dist/assets/sustainability/dialPosition3.js.map +1 -1
  196. package/dist/assets/sustainability/dialPosition4.js.map +1 -1
  197. package/dist/assets/themed_icons/Active.js.map +1 -1
  198. package/dist/assets/themed_icons/Chart.js.map +1 -1
  199. package/dist/assets/themed_icons/Close.js.map +1 -1
  200. package/dist/assets/themed_icons/Collapse.js.map +1 -1
  201. package/dist/assets/themed_icons/Columns.js.map +1 -1
  202. package/dist/assets/themed_icons/ColumnsDark.js.map +1 -1
  203. package/dist/assets/themed_icons/Database.js.map +1 -1
  204. package/dist/assets/themed_icons/Download.js.map +1 -1
  205. package/dist/assets/themed_icons/Expand.js.map +1 -1
  206. package/dist/assets/themed_icons/Explore.js.map +1 -1
  207. package/dist/assets/themed_icons/ExternalLink.js.map +1 -1
  208. package/dist/assets/themed_icons/Filter.js.map +1 -1
  209. package/dist/assets/themed_icons/Program.js.map +1 -1
  210. package/dist/assets/themed_icons/Project.js.map +1 -1
  211. package/dist/assets/themed_icons/Publication.js.map +1 -1
  212. package/dist/assets/themed_icons/Search.js.map +1 -1
  213. package/dist/assets/themed_icons/Settings.js.map +1 -1
  214. package/dist/assets/themed_icons/SortDown.js.map +1 -1
  215. package/dist/assets/themed_icons/SortUp.js.map +1 -1
  216. package/dist/assets/themed_icons/SqlEditorIcon.js.map +1 -1
  217. package/dist/assets/themed_icons/Study.js.map +1 -1
  218. package/dist/assets/themed_icons/ToolClinical.js.map +1 -1
  219. package/dist/assets/themed_icons/ToolComputational.js.map +1 -1
  220. package/dist/assets/themed_icons/ToolExperimental.js.map +1 -1
  221. package/dist/assets/themed_icons/VerticalDots.js.map +1 -1
  222. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +1 -1
  223. package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
  224. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  225. package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
  226. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +10 -11
  227. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  228. package/dist/components/AccessRequirementList/AccessRequirementList.js +73 -76
  229. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  230. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  231. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
  232. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  233. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  234. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  235. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
  236. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  237. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +1 -1
  238. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
  239. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  240. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  241. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
  242. package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map +1 -1
  243. package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
  244. package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map +1 -1
  245. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js.map +1 -1
  246. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
  247. package/dist/components/AccessRequirementList/RequirementItem/TwoFactorAuthEnabledRequirement.js.map +1 -1
  248. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
  249. package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
  250. package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
  251. package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
  252. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  253. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  254. package/dist/components/AccountLevelBadge/AccountLevelBadge.js.map +1 -1
  255. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  256. package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js.map +1 -1
  257. package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js.map +1 -1
  258. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  259. package/dist/components/AcknowledgementsPage/StudyAcknowledgement.js.map +1 -1
  260. package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
  261. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  262. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  263. package/dist/components/AclEditor/AclEditorSkeleton.js.map +1 -1
  264. package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
  265. package/dist/components/AclEditor/ReadOnlyPermissionLevel.js.map +1 -1
  266. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js +2 -4
  267. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
  268. package/dist/components/AclEditor/ResourceAccessItem.js.map +1 -1
  269. package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
  270. package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
  271. package/dist/components/AdaptiveTwoColumnLayout/AdaptiveTwoColumnLayout.js.map +1 -1
  272. package/dist/components/AddToDownloadListV2.js.map +1 -1
  273. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  274. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  275. package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
  276. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  277. package/dist/components/Authentication/LoginFlowBackButton.js.map +1 -1
  278. package/dist/components/Authentication/LoginForm.js.map +1 -1
  279. package/dist/components/Authentication/LoginMethod.js.map +1 -1
  280. package/dist/components/Authentication/LoginMethodButton.js.map +1 -1
  281. package/dist/components/Authentication/Logout.js.map +1 -1
  282. package/dist/components/Authentication/OneTimePasswordForm.js.map +1 -1
  283. package/dist/components/Authentication/PasswordField.js.map +1 -1
  284. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  285. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  286. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  287. package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
  288. package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
  289. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  290. package/dist/components/Authentication/TwoFactorAuthSettingsPanel.js.map +1 -1
  291. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  292. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  293. package/dist/components/Authentication/TwoFactorSecretDialog.js.map +1 -1
  294. package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
  295. package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
  296. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  297. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  298. package/dist/components/CTASectionWrapper/CTASectionWrapper.js.map +1 -1
  299. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  300. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  301. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  302. package/dist/components/CardDeck/CardDeck.Desktop.js.map +1 -1
  303. package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
  304. package/dist/components/CardDeck/CardDeck.js.map +1 -1
  305. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  306. package/dist/components/CardGridWithLinks/CardGridWithLinks.js.map +1 -1
  307. package/dist/components/CertificationQuiz/CertificationAnswer.js.map +1 -1
  308. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  309. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
  310. package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js.map +1 -1
  311. package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
  312. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  313. package/dist/components/ChallengeSubmission/AddExternalRepo.js.map +1 -1
  314. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  315. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  316. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +62 -64
  317. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
  318. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  319. package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
  320. package/dist/components/ChallengeSubmission/SubmissionCommitList.js.map +1 -1
  321. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  322. package/dist/components/ChallengeTeamWizard/ChallengeTeamSearch.js.map +1 -1
  323. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  324. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +96 -102
  325. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
  326. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  327. package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
  328. package/dist/components/ChallengeTeamWizard/OpenMembershipInvitation.js.map +1 -1
  329. package/dist/components/ChallengeTeamWizard/RegistrationSuccessful.js.map +1 -1
  330. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  331. package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
  332. package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
  333. package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
  334. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  335. package/dist/components/CitationPopover/CitationPopover.js.map +1 -1
  336. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  337. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  338. package/dist/components/CitationPopover/useCitation.js.map +1 -1
  339. package/dist/components/ColorGradient/ColorGradient.js.map +1 -1
  340. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -1
  341. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  342. package/dist/components/ComponentCollapse.js.map +1 -1
  343. package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  344. package/dist/components/CookiesNotification/CookiePreferencesDialog.js.map +1 -1
  345. package/dist/components/CookiesNotification/CookiesNotification.d.ts.map +1 -1
  346. package/dist/components/CookiesNotification/CookiesNotification.js +9 -9
  347. package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
  348. package/dist/components/CopyToClipboardIcon.js.map +1 -1
  349. package/dist/components/CopyToClipboardInput/CopyToClipboardInput.js.map +1 -1
  350. package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
  351. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  352. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizardUtils.js.map +1 -1
  353. package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
  354. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -1
  355. package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
  356. package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
  357. package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
  358. package/dist/components/CreateTableViewWizard/TableTypeSelection.js.map +1 -1
  359. package/dist/components/CreateTableViewWizard/ViewTypeSelection.js.map +1 -1
  360. package/dist/components/CrispChat/CrispChat.js.map +1 -1
  361. package/dist/components/DataExplorer/DataExplorer.css +1 -0
  362. package/dist/components/DataExplorer/DataExplorer.d.ts +13 -0
  363. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -0
  364. package/dist/components/DataExplorer/DataExplorer.js +116 -0
  365. package/dist/components/DataExplorer/DataExplorer.js.map +1 -0
  366. package/dist/components/DataExplorer/DataExplorer.module.js +22 -0
  367. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -0
  368. package/dist/components/DataExplorer/DataExplorer.module.scss +156 -0
  369. package/dist/components/DataGrid/DataGrid.js +72 -72
  370. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  371. package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
  372. package/dist/components/DataGrid/DataGridWebSocket.d.ts +2 -0
  373. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  374. package/dist/components/DataGrid/DataGridWebSocket.js +9 -10
  375. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  376. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
  377. package/dist/components/DataGrid/StartGridSession.js.map +1 -1
  378. package/dist/components/DataGrid/SynapseGrid.d.ts +3 -1
  379. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  380. package/dist/components/DataGrid/SynapseGrid.js +219 -211
  381. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  382. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
  383. package/dist/components/DataGrid/columns/AutocompleteColumn.js +106 -102
  384. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  385. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts.map +1 -1
  386. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js +97 -89
  387. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
  388. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  389. package/dist/components/DataGrid/columns/GridAutocompleteChip.js.map +1 -1
  390. package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts +19 -8
  391. package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts.map +1 -1
  392. package/dist/components/DataGrid/columns/useGridAutocompleteState.js +64 -43
  393. package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
  394. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  395. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  396. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
  397. package/dist/components/DataGrid/components/GridSessionSelectionField.js.map +1 -1
  398. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  399. package/dist/components/DataGrid/components/UploadCsvToGridDialog.d.ts.map +1 -1
  400. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +9 -9
  401. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  402. package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
  403. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  404. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +2 -0
  405. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
  406. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  407. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.d.ts.map +1 -1
  408. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +8 -1
  409. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
  410. package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
  411. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  412. package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
  413. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  414. package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
  415. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
  416. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  417. package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
  418. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  419. package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
  420. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  421. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  422. package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
  423. package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
  424. package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
  425. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  426. package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
  427. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  428. package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
  429. package/dist/components/DataGrid/utils/convertActionToModelChange.js.map +1 -1
  430. package/dist/components/DataGrid/utils/createTestModel.js.map +1 -1
  431. package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -1
  432. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  433. package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -1
  434. package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
  435. package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -1
  436. package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -1
  437. package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -1
  438. package/dist/components/DataGrid/utils/isValidationUpToDateForRow.js.map +1 -1
  439. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  440. package/dist/components/DataGrid/utils/json-rx/JsonRxMessage.js.map +1 -1
  441. package/dist/components/DataGrid/utils/json-rx/JsonRxNotification.js.map +1 -1
  442. package/dist/components/DataGrid/utils/json-rx/JsonRxRequest.js.map +1 -1
  443. package/dist/components/DataGrid/utils/json-rx/JsonRxRequestComplete.js.map +1 -1
  444. package/dist/components/DataGrid/utils/json-rx/JsonRxResponse.js.map +1 -1
  445. package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
  446. package/dist/components/DataGrid/utils/logicalTimestampToString.js.map +1 -1
  447. package/dist/components/DataGrid/utils/mapOperationsToModelChanges.js.map +1 -1
  448. package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
  449. package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
  450. package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
  451. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -1
  452. package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -1
  453. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  454. package/dist/components/DatasetJsonLdScript.js.map +1 -1
  455. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  456. package/dist/components/Dialog/ConfirmCloseWithoutSavingDialog.js.map +1 -1
  457. package/dist/components/DialogBase.js.map +1 -1
  458. package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
  459. package/dist/components/DirectDownload/FileEntityDirectDownload.js.map +1 -1
  460. package/dist/components/DirectDownloadButton.js.map +1 -1
  461. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js.map +1 -1
  462. package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
  463. package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
  464. package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
  465. package/dist/components/DownloadCart/DirectProgrammaticDownload.js.map +1 -1
  466. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  467. package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
  468. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  469. package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
  470. package/dist/components/DownloadCart/DownloadListStats.js.map +1 -1
  471. package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
  472. package/dist/components/DownloadCart/EnableTwoFaRequirementCard.js.map +1 -1
  473. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  474. package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
  475. package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
  476. package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
  477. package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
  478. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  479. package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
  480. package/dist/components/DynamicForm/DynamicForm.js.map +1 -1
  481. package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
  482. package/dist/components/Ecosystem/EcosystemCard.js.map +1 -1
  483. package/dist/components/Ecosystem/EcosystemLayout.js.map +1 -1
  484. package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
  485. package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
  486. package/dist/components/EntityAclEditor/CreateOrDeleteLocalSharingSettingsButton.js.map +1 -1
  487. package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
  488. package/dist/components/EntityAclEditor/EntityAclEditorModal.js.map +1 -1
  489. package/dist/components/EntityAclEditor/InheritanceMessage.js.map +1 -1
  490. package/dist/components/EntityAclEditor/OpenData.js.map +1 -1
  491. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
  492. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +68 -70
  493. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  494. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  495. package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
  496. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +32 -35
  497. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  498. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  499. package/dist/components/EntityFinder/Breadcrumbs.js.map +1 -1
  500. package/dist/components/EntityFinder/EntityFinder.js +134 -136
  501. package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
  502. package/dist/components/EntityFinder/EntityFinderModal.js.map +1 -1
  503. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  504. package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
  505. package/dist/components/EntityFinder/details/EntityDetailsList.js +20 -20
  506. package/dist/components/EntityFinder/details/EntityDetailsList.js.map +1 -1
  507. package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
  508. package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
  509. package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
  510. package/dist/components/EntityFinder/details/configurations/ReferenceDetails.js.map +1 -1
  511. package/dist/components/EntityFinder/details/configurations/SearchDetails.js.map +1 -1
  512. package/dist/components/EntityFinder/details/view/DetailsView.js +67 -67
  513. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  514. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js +1 -1
  515. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js.map +1 -1
  516. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  517. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js.map +1 -1
  518. package/dist/components/EntityFinder/details/view/table/DateCell.js.map +1 -1
  519. package/dist/components/EntityFinder/details/view/table/EntityBadgeIconsCell.js.map +1 -1
  520. package/dist/components/EntityFinder/details/view/table/EntityFinderCheckboxCell.js.map +1 -1
  521. package/dist/components/EntityFinder/details/view/table/EntityFinderVersionCell.js.map +1 -1
  522. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js.map +1 -1
  523. package/dist/components/EntityFinder/details/view/table/EntityTypeCell.js.map +1 -1
  524. package/dist/components/EntityFinder/details/view/table/FileEntityDirectDownloadCell.js.map +1 -1
  525. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js.map +1 -1
  526. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js.map +1 -1
  527. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js.map +1 -1
  528. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js.map +1 -1
  529. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js.map +1 -1
  530. package/dist/components/EntityFinder/details/view/table/UserBadgeCell.js.map +1 -1
  531. package/dist/components/EntityFinder/tree/EntityTree.js +80 -80
  532. package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
  533. package/dist/components/EntityFinder/tree/VirtualizedTree.js +31 -31
  534. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  535. package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
  536. package/dist/components/EntityForm/EntityForm.js.map +1 -1
  537. package/dist/components/EntityHeaderTable/DebouncedInput.js.map +1 -1
  538. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  539. package/dist/components/EntityHeaderTable/EntityHeaderTableCellRenderers.js.map +1 -1
  540. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  541. package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
  542. package/dist/components/EntityIcon.js.map +1 -1
  543. package/dist/components/EntityLink.js.map +1 -1
  544. package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
  545. package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
  546. package/dist/components/EntityTreeTable/components/AutoLoadMore.js.map +1 -1
  547. package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
  548. package/dist/components/EntityTreeTable/components/EntityBadgeIconsCell.js.map +1 -1
  549. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  550. package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
  551. package/dist/components/EntityTreeTable/components/EntityTreeTableRow.js.map +1 -1
  552. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
  553. package/dist/components/EntityTreeTable/components/IdCell.js.map +1 -1
  554. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  555. package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
  556. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  557. package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
  558. package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
  559. package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
  560. package/dist/components/EntityUpload/EntityUploadModal.js +29 -31
  561. package/dist/components/EntityUpload/EntityUploadModal.js.map +1 -1
  562. package/dist/components/EntityUpload/EntityUploadPromptDialog.js.map +1 -1
  563. package/dist/components/EntityUpload/ExternalObjectStoreCredentialsForm.js.map +1 -1
  564. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  565. package/dist/components/EntityUpload/LinkToURL.js.map +1 -1
  566. package/dist/components/EntityUpload/ProjectStorageLimitAlert.js.map +1 -1
  567. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
  568. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditor.js.map +1 -1
  569. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditorModal.js.map +1 -1
  570. package/dist/components/Evaluation/CreatedOnByUserDiv.js.map +1 -1
  571. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -1
  572. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  573. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  574. package/dist/components/Evaluation/EvaluationEditorPage.js.map +1 -1
  575. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  576. package/dist/components/Evaluation/EvaluationRoundEditorDropdown.js.map +1 -1
  577. package/dist/components/Evaluation/EvaluationRoundEditorList.js.map +1 -1
  578. package/dist/components/Evaluation/input_models/models.js.map +1 -1
  579. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
  580. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  581. package/dist/components/EvaluationFinder/EvaluationFinder.js.map +1 -1
  582. package/dist/components/ExperimentalMode/ExperimentalMode.d.ts.map +1 -1
  583. package/dist/components/ExperimentalMode/ExperimentalMode.js +24 -30
  584. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  585. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  586. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  587. package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
  588. package/dist/components/FeaturedDataTabs/FeaturedDataPlots.js.map +1 -1
  589. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
  590. package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
  591. package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
  592. package/dist/components/FeaturedResearch/FeaturedResearch.js +16 -18
  593. package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
  594. package/dist/components/FeaturedToolsList/FeaturedToolCard.js.map +1 -1
  595. package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
  596. package/dist/components/FilePreview/EntityPreview.js.map +1 -1
  597. package/dist/components/FilePreview/FileEntityPreview.js.map +1 -1
  598. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  599. package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
  600. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  601. package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
  602. package/dist/components/FilePreview/PreviewUtils.js.map +1 -1
  603. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  604. package/dist/components/Forum/DiscussionReply.js.map +1 -1
  605. package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
  606. package/dist/components/Forum/DiscussionThread.js.map +1 -1
  607. package/dist/components/Forum/ForumPage.js.map +1 -1
  608. package/dist/components/Forum/ForumTable.js.map +1 -1
  609. package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
  610. package/dist/components/Forum/SubscribersModal.js.map +1 -1
  611. package/dist/components/ForumSearch/ForumSearch.js.map +1 -1
  612. package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
  613. package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
  614. package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
  615. package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
  616. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  617. package/dist/components/GenericCard/CollapsibleDescription.js.map +1 -1
  618. package/dist/components/GenericCard/CroissantButton/CroissantButton.js.map +1 -1
  619. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  620. package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
  621. package/dist/components/GenericCard/GenericCardIcon.js.map +1 -1
  622. package/dist/components/GenericCard/GenericCardTitle.js.map +1 -1
  623. package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -1
  624. package/dist/components/GenericCard/Linkify.js.map +1 -1
  625. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  626. package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
  627. package/dist/components/GenericCard/SynapseCardLabel.js +1 -1
  628. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  629. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  630. package/dist/components/GenericCard/useResolvedSynapseEntity.js.map +1 -1
  631. package/dist/components/Goals/Goals.Desktop.js.map +1 -1
  632. package/dist/components/Goals/Goals.Mobile.js.map +1 -1
  633. package/dist/components/Goals/Goals.js +25 -27
  634. package/dist/components/Goals/Goals.js.map +1 -1
  635. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  636. package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
  637. package/dist/components/GoalsV2/GoalsV2.js +14 -16
  638. package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
  639. package/dist/components/GoalsV3/GoalsV3.Desktop.js.map +1 -1
  640. package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
  641. package/dist/components/GoalsV3/GoalsV3.js +14 -16
  642. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  643. package/dist/components/GoogleAnalytics/GoogleAnalytics.js.map +1 -1
  644. package/dist/components/GoogleMap/GoogleMap.js.map +1 -1
  645. package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
  646. package/dist/components/HasAccess/AccessIcon.js +10 -10
  647. package/dist/components/HasAccess/AccessIcon.js.map +1 -1
  648. package/dist/components/HasAccess/HasAccessV2.js.map +1 -1
  649. package/dist/components/HasAccess/useHasAccess.js.map +1 -1
  650. package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
  651. package/dist/components/HeaderCard.js.map +1 -1
  652. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  653. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  654. package/dist/components/IDUReport/IDUReport.js.map +1 -1
  655. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  656. package/dist/components/Icon/Icon.js.map +1 -1
  657. package/dist/components/IconList.js.map +1 -1
  658. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  659. package/dist/components/IconSvgButton.js.map +1 -1
  660. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js +7 -9
  661. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
  662. package/dist/components/ImageFromSynapseTable.js.map +1 -1
  663. package/dist/components/InteractiveCopyIdsIcon.js.map +1 -1
  664. package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
  665. package/dist/components/JSONArrayEditor/JSONArrayEditorModal.js.map +1 -1
  666. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  667. package/dist/components/JsonLdScript.js.map +1 -1
  668. package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
  669. package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
  670. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemButtonTemplate.js.map +1 -1
  671. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
  672. package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
  673. package/dist/components/JsonSchemaForm/templates/ArrayFieldTitleTemplate.js.map +1 -1
  674. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  675. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  676. package/dist/components/JsonSchemaForm/templates/DescriptionFieldTemplate.js.map +1 -1
  677. package/dist/components/JsonSchemaForm/templates/ErrorListTemplate.js.map +1 -1
  678. package/dist/components/JsonSchemaForm/templates/FieldDescriptionTable.js.map +1 -1
  679. package/dist/components/JsonSchemaForm/templates/FieldErrorTemplate.js.map +1 -1
  680. package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
  681. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  682. package/dist/components/JsonSchemaForm/widgets/BooleanWidget.js.map +1 -1
  683. package/dist/components/JsonSchemaForm/widgets/DateTimeWidget.js.map +1 -1
  684. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
  685. package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
  686. package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
  687. package/dist/components/Markdown/GovernanceMarkdownGithub.js.map +1 -1
  688. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  689. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  690. package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
  691. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  692. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  693. package/dist/components/Markdown/MarkdownSynapse.js +75 -106
  694. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  695. package/dist/components/Markdown/MarkdownUtils.d.ts +14 -4
  696. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  697. package/dist/components/Markdown/MarkdownUtils.js +38 -37
  698. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  699. package/dist/components/Markdown/MarkdownWidget.js.map +1 -1
  700. package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
  701. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  702. package/dist/components/Markdown/widget/Bookmarks.js.map +1 -1
  703. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  704. package/dist/components/Markdown/widget/MarkdownEntityPreview.js.map +1 -1
  705. package/dist/components/Markdown/widget/MarkdownIDUReport.js.map +1 -1
  706. package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
  707. package/dist/components/Markdown/widget/MarkdownSynapseImage.js.map +1 -1
  708. package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
  709. package/dist/components/Markdown/widget/MarkdownSynapseTable.js.map +1 -1
  710. package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
  711. package/dist/components/Markdown/widget/MarkdownUserOrTeamBadge.js.map +1 -1
  712. package/dist/components/Markdown/widget/MarkdownVideo.js.map +1 -1
  713. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  714. package/dist/components/ModalDownload/ModalDownload.FormSchema.js.map +1 -1
  715. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  716. package/dist/components/MuiContainer.js.map +1 -1
  717. package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js.map +1 -1
  718. package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
  719. package/dist/components/OAuthClientManagement/CreateOAuthClient.js.map +1 -1
  720. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  721. package/dist/components/OrientationBanner/OrientationBanner.js.map +1 -1
  722. package/dist/components/PageProgress/PageProgress.js.map +1 -1
  723. package/dist/components/Plot/BarPlot.js.map +1 -1
  724. package/dist/components/Plot/DotPlot.js.map +1 -1
  725. package/dist/components/Plot/Plot.d.ts +12 -1
  726. package/dist/components/Plot/Plot.d.ts.map +1 -1
  727. package/dist/components/Plot/Plot.js +5 -1
  728. package/dist/components/Plot/Plot.js.map +1 -1
  729. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  730. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  731. package/dist/components/Plot/SynapseSankeyPlot.d.ts +12 -0
  732. package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
  733. package/dist/components/Plot/SynapseSankeyPlot.js +54 -0
  734. package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
  735. package/dist/components/Plot/ThemesPlot.js.map +1 -1
  736. package/dist/components/Plot/UpsetPlot.js.map +1 -1
  737. package/dist/components/Plot/index.d.ts +3 -1
  738. package/dist/components/Plot/index.d.ts.map +1 -1
  739. package/dist/components/Plot/index.js +2 -1
  740. package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
  741. package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
  742. package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
  743. package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
  744. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
  745. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
  746. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
  747. package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
  748. package/dist/components/PortalList/PortalCard.js.map +1 -1
  749. package/dist/components/PortalList/PortalList.js.map +1 -1
  750. package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
  751. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
  752. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
  753. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  754. package/dist/components/Programs/Programs.Desktop.js.map +1 -1
  755. package/dist/components/Programs/Programs.Mobile.js.map +1 -1
  756. package/dist/components/Programs/Programs.js.map +1 -1
  757. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  758. package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
  759. package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
  760. package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
  761. package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
  762. package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
  763. package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
  764. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  765. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  766. package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
  767. package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
  768. package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
  769. package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
  770. package/dist/components/QueryContext/QueryContext.js.map +1 -1
  771. package/dist/components/QueryCount/QueryCount.js.map +1 -1
  772. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  773. package/dist/components/QuerySortSelector.js.map +1 -1
  774. package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
  775. package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
  776. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
  777. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +67 -65
  778. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  779. package/dist/components/QueryWrapper/QueryWrapper.js +27 -27
  780. package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
  781. package/dist/components/QueryWrapper/QueryWrapperLoadingScreen.js.map +1 -1
  782. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  783. package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
  784. package/dist/components/QueryWrapper/ViewMoreQueryResultsButton.js.map +1 -1
  785. package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
  786. package/dist/components/QueryWrapper/useComputeRowSelectionPrimaryKey.js.map +1 -1
  787. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  788. package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
  789. package/dist/components/QueryWrapper/useHasFacetedSelectColumn.js.map +1 -1
  790. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  791. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  792. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
  793. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -1
  794. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  795. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +1 -0
  796. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  797. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  798. package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
  799. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  800. package/dist/components/RORInstitutionField/RORInstitutionField.js.map +1 -1
  801. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js +6 -8
  802. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
  803. package/dist/components/RegisterPageLogoutPrompt/RegisterPageLogoutPrompt.js.map +1 -1
  804. package/dist/components/ReleaseCard/ReleaseCard.js.map +1 -1
  805. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  806. package/dist/components/ReleaseCard/ReleaseCardMedium.js.map +1 -1
  807. package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
  808. package/dist/components/RenderIfInView/RenderIfInView.js.map +1 -1
  809. package/dist/components/ResizableContainer/ResizableContainer.js.map +1 -1
  810. package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
  811. package/dist/components/Resources/Resources.Desktop.js.map +1 -1
  812. package/dist/components/Resources/Resources.Mobile.js.map +1 -1
  813. package/dist/components/Resources/Resources.js +8 -11
  814. package/dist/components/Resources/Resources.js.map +1 -1
  815. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  816. package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
  817. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  818. package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
  819. package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
  820. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
  821. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  822. package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
  823. package/dist/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js.map +1 -1
  824. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  825. package/dist/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.js.map +1 -1
  826. package/dist/components/SchemaDrivenAnnotationEditor/widget/TextWidget.js.map +1 -1
  827. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  828. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
  829. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts +1 -1
  830. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts.map +1 -1
  831. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js +1 -0
  832. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
  833. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  834. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementTextInstructions.js.map +1 -1
  835. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js.map +1 -1
  836. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
  837. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
  838. package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
  839. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  840. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  841. package/dist/components/ShowMore/ShowMore.js.map +1 -1
  842. package/dist/components/SignInButton.js.map +1 -1
  843. package/dist/components/SignInRequiredModal/SignInRequiredModal.js.map +1 -1
  844. package/dist/components/Skeleton/SkeletonButton.js.map +1 -1
  845. package/dist/components/Skeleton/SkeletonInlineBlock.js.map +1 -1
  846. package/dist/components/Skeleton/SkeletonParagraph.js.map +1 -1
  847. package/dist/components/Skeleton/SkeletonTable.js.map +1 -1
  848. package/dist/components/SmartLink/SmartButton.js.map +1 -1
  849. package/dist/components/SmartLink/SmartLink.js.map +1 -1
  850. package/dist/components/SmartLink/useSmartLink.js.map +1 -1
  851. package/dist/components/SourceAppImage.js.map +1 -1
  852. package/dist/components/SpinnerButton/SpinnerButton.js.map +1 -1
  853. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditor.js.map +1 -1
  854. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditorModal.js.map +1 -1
  855. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts +1 -1
  856. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts.map +1 -1
  857. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
  858. package/dist/components/StatisticsPlot.js.map +1 -1
  859. package/dist/components/StepperDialog/StepperDialog.js.map +1 -1
  860. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  861. package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditor.js.map +1 -1
  862. package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditorModal.js.map +1 -1
  863. package/dist/components/SubscriptionPage/ForumTopic.js.map +1 -1
  864. package/dist/components/SubscriptionPage/SubscriptionItem.js.map +1 -1
  865. package/dist/components/SubscriptionPage/SubscriptionPage.js.map +1 -1
  866. package/dist/components/SubscriptionPage/ThreadTopic.js.map +1 -1
  867. package/dist/components/SubscriptionPage/Topic.js.map +1 -1
  868. package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
  869. package/dist/components/SustainabilityScorecard/Dial.js.map +1 -1
  870. package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
  871. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
  872. package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js.map +1 -1
  873. package/dist/components/SustainabilityScorecard/SustainabilityScorecardUtils.js.map +1 -1
  874. package/dist/components/SynapseChat/AccessLevelMenu.js.map +1 -1
  875. package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
  876. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  877. package/dist/components/SynapseChat/SynapseChatDialog.js.map +1 -1
  878. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  879. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  880. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
  881. package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
  882. package/dist/components/SynapseChat/useChatState.js.map +1 -1
  883. package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
  884. package/dist/components/SynapseFooter/SynapseLinksColumn.js.map +1 -1
  885. package/dist/components/SynapseForm/DataDebug.js.map +1 -1
  886. package/dist/components/SynapseForm/Header.js.map +1 -1
  887. package/dist/components/SynapseForm/NavButtons.js.map +1 -1
  888. package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
  889. package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
  890. package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
  891. package/dist/components/SynapseForm/SynapseFormCheckboxWidget.js.map +1 -1
  892. package/dist/components/SynapseForm/SynapseFormCheckboxesWidget.js.map +1 -1
  893. package/dist/components/SynapseForm/SynapseFormRadioWidget.js.map +1 -1
  894. package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
  895. package/dist/components/SynapseForm/SynapseFormUtils.js.map +1 -1
  896. package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
  897. package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
  898. package/dist/components/SynapseForm/types.js.map +1 -1
  899. package/dist/components/SynapseForm/useGetFormPropsFromSearchParams.js.map +1 -1
  900. package/dist/components/SynapseHomepageV2/FloatingBlobsBackground.js.map +1 -1
  901. package/dist/components/SynapseHomepageV2/HomepageStyles.js.map +1 -1
  902. package/dist/components/SynapseHomepageV2/SynapseByTheNumbers.js.map +1 -1
  903. package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
  904. package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
  905. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
  906. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasets.js.map +1 -1
  907. package/dist/components/SynapseHomepageV2/SynapseFeatures.js.map +1 -1
  908. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js +18 -21
  909. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
  910. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
  911. package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
  912. package/dist/components/SynapseHomepageV2/SynapseHomepageV2.js.map +1 -1
  913. package/dist/components/SynapseHomepageV2/SynapseHotdrops.js.map +1 -1
  914. package/dist/components/SynapseHomepageV2/SynapseHotdropsItem.js.map +1 -1
  915. package/dist/components/SynapseHomepageV2/SynapseInAction.js.map +1 -1
  916. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
  917. package/dist/components/SynapseHomepageV2/SynapsePartners.js.map +1 -1
  918. package/dist/components/SynapseHomepageV2/SynapsePlan.js.map +1 -1
  919. package/dist/components/SynapseHomepageV2/SynapsePlanContent.js.map +1 -1
  920. package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
  921. package/dist/components/SynapseHomepageV2/SynapsePlansPage.js.map +1 -1
  922. package/dist/components/SynapseHomepageV2/SynapseSearchChips.js.map +1 -1
  923. package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
  924. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
  925. package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
  926. package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
  927. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +78 -78
  928. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  929. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  930. package/dist/components/SynapseSearchPageResults/HasAccessChip.js.map +1 -1
  931. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
  932. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
  933. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
  934. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
  935. package/dist/components/SynapseSearchPageResults/SynapseSearchPage.js.map +1 -1
  936. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
  937. package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.js.map +1 -1
  938. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
  939. package/dist/components/SynapseSearchPageResults/chipStyles.js.map +1 -1
  940. package/dist/components/SynapseTable/CustomControls/CustomControlButton.js.map +1 -1
  941. package/dist/components/SynapseTable/CustomControls/CustomControlPanel.js.map +1 -1
  942. package/dist/components/SynapseTable/CustomControls/CustomControls.js.map +1 -1
  943. package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
  944. package/dist/components/SynapseTable/ExpandCollapseButton.js.map +1 -1
  945. package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
  946. package/dist/components/SynapseTable/NoContentAvailable.js.map +1 -1
  947. package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
  948. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
  949. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  950. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
  951. package/dist/components/SynapseTable/SearchResultsNotFound.js.map +1 -1
  952. package/dist/components/SynapseTable/SearchV2.js.map +1 -1
  953. package/dist/components/SynapseTable/SqlEditor.js.map +1 -1
  954. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  955. package/dist/components/SynapseTable/SynapseTableCell/EntityIdList.js.map +1 -1
  956. package/dist/components/SynapseTable/SynapseTableCell/EvaluationIdRenderer.js.map +1 -1
  957. package/dist/components/SynapseTable/SynapseTableCell/JSON/ComplexJSONRenderer.js.map +1 -1
  958. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONArrayRenderer.js.map +1 -1
  959. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONObjectRenderer.js.map +1 -1
  960. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONPrimitiveRenderer.js.map +1 -1
  961. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONRendererUtils.js.map +1 -1
  962. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONTableCellRenderer.js.map +1 -1
  963. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
  964. package/dist/components/SynapseTable/SynapseTableCell/UserIdList.js.map +1 -1
  965. package/dist/components/SynapseTable/SynapseTableConstants.js.map +1 -1
  966. package/dist/components/SynapseTable/SynapseTableContext.js.map +1 -1
  967. package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
  968. package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
  969. package/dist/components/SynapseTable/TableIsEmpty.js.map +1 -1
  970. package/dist/components/SynapseTable/TablePagination.js.map +1 -1
  971. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  972. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
  973. package/dist/components/SynapseTable/datasets/DatasetEditorCheckboxCell.js.map +1 -1
  974. package/dist/components/SynapseTable/datasets/DatasetEditorUtils.js.map +1 -1
  975. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  976. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +131 -133
  977. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  978. package/dist/components/SynapseTable/datasets/EntityFetchErrorCell.js.map +1 -1
  979. package/dist/components/SynapseTable/export/ADDiscoveryPortalInstructions.js.map +1 -1
  980. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +48 -51
  981. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js.map +1 -1
  982. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformInstructions.js.map +1 -1
  983. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js.map +1 -1
  984. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  985. package/dist/components/SynapseTable/export/ExternalPlatformDisclaimer.js.map +1 -1
  986. package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
  987. package/dist/components/SynapseTable/table-top/DownloadLoginModal.js.map +1 -1
  988. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  989. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  990. package/dist/components/SynapseTable/useTableSort.js.map +1 -1
  991. package/dist/components/SystemUseNotification/SystemUseNotification.js.map +1 -1
  992. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +12 -12
  993. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  994. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
  995. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/FieldWithRecommendedMinimum.js.map +1 -1
  996. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js +4 -4
  997. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js.map +1 -1
  998. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  999. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js.map +1 -1
  1000. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  1001. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  1002. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +32 -32
  1003. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  1004. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  1005. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
  1006. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
  1007. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
  1008. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  1009. package/dist/components/TableColumnSchemaEditor/Validators/DefaultValueValidator.js.map +1 -1
  1010. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
  1011. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.js.map +1 -1
  1012. package/dist/components/TableColumnSchemaEditor/Validators/EnumValuesValidator.js.map +1 -1
  1013. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
  1014. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
  1015. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
  1016. package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
  1017. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  1018. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  1019. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  1020. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
  1021. package/dist/components/TanStackTable/TableBody.js.map +1 -1
  1022. package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
  1023. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  1024. package/dist/components/TeamBadge.js.map +1 -1
  1025. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  1026. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  1027. package/dist/components/TemplateComponent.js.map +1 -1
  1028. package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
  1029. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  1030. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
  1031. package/dist/components/TextField/TextField.js.map +1 -1
  1032. package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
  1033. package/dist/components/TextToComponentCollapse.js.map +1 -1
  1034. package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
  1035. package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
  1036. package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
  1037. package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
  1038. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
  1039. package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
  1040. package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
  1041. package/dist/components/TotalQueryResults.js.map +1 -1
  1042. package/dist/components/UserCard/Avatar.js.map +1 -1
  1043. package/dist/components/UserCard/UserBadge.js.map +1 -1
  1044. package/dist/components/UserCard/UserCard.js.map +1 -1
  1045. package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
  1046. package/dist/components/UserCard/UserCardLarge.js.map +1 -1
  1047. package/dist/components/UserCard/UserCardMedium.js.map +1 -1
  1048. package/dist/components/UserCardList/UserCardList.js.map +1 -1
  1049. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
  1050. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
  1051. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
  1052. package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
  1053. package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
  1054. package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
  1055. package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
  1056. package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
  1057. package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
  1058. package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
  1059. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
  1060. package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
  1061. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  1062. package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
  1063. package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
  1064. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
  1065. package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
  1066. package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
  1067. package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
  1068. package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
  1069. package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
  1070. package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
  1071. package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
  1072. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  1073. package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
  1074. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  1075. package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
  1076. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  1077. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  1078. package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
  1079. package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
  1080. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  1081. package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
  1082. package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
  1083. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
  1084. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  1085. package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
  1086. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  1087. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  1088. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
  1089. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  1090. package/dist/components/doi/DoiFormSchemas.js.map +1 -1
  1091. package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
  1092. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
  1093. package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
  1094. package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
  1095. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  1096. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  1097. package/dist/components/download_list/index.js.map +1 -1
  1098. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  1099. package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
  1100. package/dist/components/entity/metadata/EntityModal.js.map +1 -1
  1101. package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
  1102. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  1103. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  1104. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
  1105. package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
  1106. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  1107. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
  1108. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
  1109. package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
  1110. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  1111. package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
  1112. package/dist/components/error/ErrorBanner.js.map +1 -1
  1113. package/dist/components/error/ErrorChip.js.map +1 -1
  1114. package/dist/components/error/ErrorPage.js +24 -24
  1115. package/dist/components/error/ErrorPage.js.map +1 -1
  1116. package/dist/components/error/RouteErrorBoundary.js.map +1 -1
  1117. package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
  1118. package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
  1119. package/dist/components/favorites/FavoriteButton.js.map +1 -1
  1120. package/dist/components/favorites/FavoritesPage.js.map +1 -1
  1121. package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
  1122. package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
  1123. package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
  1124. package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
  1125. package/dist/components/home_page/ExpandableContent.js.map +1 -1
  1126. package/dist/components/index.js +48 -47
  1127. package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
  1128. package/dist/components/layout/SWCHeader.js.map +1 -1
  1129. package/dist/components/layout/SWCPageLayout.js.map +1 -1
  1130. package/dist/components/menu/ComplexMenu.js.map +1 -1
  1131. package/dist/components/menu/DropdownMenu.js.map +1 -1
  1132. package/dist/components/row_renderers/Dataset.js.map +1 -1
  1133. package/dist/components/row_renderers/Funder.js.map +1 -1
  1134. package/dist/components/row_renderers/ObservationCard.js.map +1 -1
  1135. package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
  1136. package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
  1137. package/dist/components/styled/HoverPopover.js.map +1 -1
  1138. package/dist/components/styled/InlineBadge.js.map +1 -1
  1139. package/dist/components/styled/InputSizedButton.js.map +1 -1
  1140. package/dist/components/styled/LargeButton.js.map +1 -1
  1141. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  1142. package/dist/components/styled/LightTooltip.js.map +1 -1
  1143. package/dist/components/styled/StyledFormControl.js.map +1 -1
  1144. package/dist/components/styled/StyledPopover.js.map +1 -1
  1145. package/dist/components/styled/StyledTableContainer.js.map +1 -1
  1146. package/dist/components/styled/WideButton.js.map +1 -1
  1147. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts +18 -0
  1148. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts.map +1 -0
  1149. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +113 -0
  1150. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -0
  1151. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  1152. package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts +5 -5
  1153. package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts.map +1 -1
  1154. package/dist/components/table/CsvPreview/CsvPreviewDialog.js +27 -76
  1155. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  1156. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts +19 -0
  1157. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts.map +1 -0
  1158. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +41 -0
  1159. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -0
  1160. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts +12 -0
  1161. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts.map +1 -0
  1162. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js +25 -0
  1163. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -0
  1164. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts +18 -0
  1165. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts.map +1 -0
  1166. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js +55 -0
  1167. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -0
  1168. package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts +19 -0
  1169. package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts.map +1 -0
  1170. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js +35 -0
  1171. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -0
  1172. package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts +22 -0
  1173. package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts.map +1 -0
  1174. package/dist/components/table/CsvPreview/useCsvUploadPreview.js +32 -0
  1175. package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -0
  1176. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts +14 -0
  1177. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts.map +1 -0
  1178. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js +23 -0
  1179. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -0
  1180. package/dist/components/table/CsvTableDescriptorForm/CsvTableDescriptorForm.js.map +1 -1
  1181. package/dist/components/trash/TrashCanList.js.map +1 -1
  1182. package/dist/components/utils/Blocker.js.map +1 -1
  1183. package/dist/components/utils/ConditionalWrapper.js.map +1 -1
  1184. package/dist/components/utils/VisibilityObserver.js.map +1 -1
  1185. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  1186. package/dist/components/widgets/EntityColumnImage.js.map +1 -1
  1187. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  1188. package/dist/components/widgets/ImageFileHandle.js.map +1 -1
  1189. package/dist/components/widgets/LoginAwareButton.js.map +1 -1
  1190. package/dist/components/widgets/Range.js.map +1 -1
  1191. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  1192. package/dist/components/widgets/SynapseImage.js.map +1 -1
  1193. package/dist/components/widgets/SynapseVideo.js.map +1 -1
  1194. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  1195. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  1196. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  1197. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  1198. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  1199. package/dist/components/widgets/facet-nav/PlotsContainerSkeleton.js.map +1 -1
  1200. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
  1201. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
  1202. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  1203. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
  1204. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  1205. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
  1206. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  1207. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterSkeleton.js.map +1 -1
  1208. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  1209. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  1210. package/dist/components/widgets/query-filter/FacetChip.js.map +1 -1
  1211. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  1212. package/dist/components/widgets/query-filter/FacetFilterHeader.js.map +1 -1
  1213. package/dist/components/widgets/query-filter/FacetFilterSkeleton.js.map +1 -1
  1214. package/dist/components/widgets/query-filter/FacetFilterUtils.js.map +1 -1
  1215. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  1216. package/dist/components/widgets/query-filter/RangeFacetFilter.js +3 -3
  1217. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  1218. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +41 -41
  1219. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  1220. package/dist/features/curator/GridPage/GridPage.js.map +1 -1
  1221. package/dist/features/curator/GridPage/components/GridPageRouter.js.map +1 -1
  1222. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  1223. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
  1224. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  1225. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  1226. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  1227. package/dist/features/curator/dashboard/components/UserOrTeamChip.js.map +1 -1
  1228. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +5 -0
  1229. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  1230. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +227 -181
  1231. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  1232. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  1233. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +3 -0
  1234. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  1235. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
  1236. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -34
  1237. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  1238. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  1239. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
  1240. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  1241. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  1242. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  1243. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  1244. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  1245. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  1246. package/dist/features/entity/metadata-task/utils/constants.d.ts +11 -3
  1247. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  1248. package/dist/features/entity/metadata-task/utils/constants.js +2 -2
  1249. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  1250. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  1251. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
  1252. package/dist/features/entity/metadata-task/utils/getLatestGridSessionForSource.js.map +1 -1
  1253. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -1
  1254. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  1255. package/dist/index.js +54 -53
  1256. package/dist/index.js.map +1 -1
  1257. package/dist/mocks/MockAccessApprovals.js.map +1 -1
  1258. package/dist/mocks/MockSynapseContext.js.map +1 -1
  1259. package/dist/mocks/accessRequirement/mockAccessRequirementAcls.js.map +1 -1
  1260. package/dist/mocks/accessRequirement/mockAccessRequirements.js.map +1 -1
  1261. package/dist/mocks/applicationSessionContext/MockApplicationSessionContext.js.map +1 -1
  1262. package/dist/mocks/challenge/mockChallenge.js.map +1 -1
  1263. package/dist/mocks/chat/mockChat.js.map +1 -1
  1264. package/dist/mocks/curation/mockCurationTask.js.map +1 -1
  1265. package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
  1266. package/dist/mocks/dataaccess/MockResearchProject.js.map +1 -1
  1267. package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
  1268. package/dist/mocks/dataaccess/mockAccessRequest.js.map +1 -1
  1269. package/dist/mocks/discussion/mock_discussion.js.map +1 -1
  1270. package/dist/mocks/doi/MockDoi.js.map +1 -1
  1271. package/dist/mocks/entity/index.js.map +1 -1
  1272. package/dist/mocks/entity/mockDataset.js.map +1 -1
  1273. package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
  1274. package/dist/mocks/entity/mockEntity.js.map +1 -1
  1275. package/dist/mocks/entity/mockEvaluationQueue.js.map +1 -1
  1276. package/dist/mocks/entity/mockFileEntity.js.map +1 -1
  1277. package/dist/mocks/entity/mockFileEntityACLVariants.js.map +1 -1
  1278. package/dist/mocks/entity/mockFileView.js.map +1 -1
  1279. package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
  1280. package/dist/mocks/entity/mockProject.js.map +1 -1
  1281. package/dist/mocks/entity/mockProjectView.js.map +1 -1
  1282. package/dist/mocks/entity/mockReleaseCardsTable.js.map +1 -1
  1283. package/dist/mocks/entity/mockRootEntity.js.map +1 -1
  1284. package/dist/mocks/entity/mockTableEntity.js.map +1 -1
  1285. package/dist/mocks/faker/fakerUtils.js.map +1 -1
  1286. package/dist/mocks/faker/generateDiscussion.js.map +1 -1
  1287. package/dist/mocks/faker/generateEvaluation.js.map +1 -1
  1288. package/dist/mocks/faker/generateFakeEntity.js.map +1 -1
  1289. package/dist/mocks/faker/generateSubscription.js.map +1 -1
  1290. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  1291. package/dist/mocks/mockCertificationQuiz.js.map +1 -1
  1292. package/dist/mocks/mockDataCatalogQuery.js.map +1 -1
  1293. package/dist/mocks/mockFileViewQuery.js.map +1 -1
  1294. package/dist/mocks/mockOAuthClientAcls.js.map +1 -1
  1295. package/dist/mocks/mockQueryResponseData.js.map +1 -1
  1296. package/dist/mocks/mockQueryResponseDataWithManyEnumFacets.js.map +1 -1
  1297. package/dist/mocks/mockSchema.js.map +1 -1
  1298. package/dist/mocks/mockSearchQueryData.js.map +1 -1
  1299. package/dist/mocks/mockShortIo.js.map +1 -1
  1300. package/dist/mocks/mockSourceAppConfigQuery.js.map +1 -1
  1301. package/dist/mocks/mockSubscription.js.map +1 -1
  1302. package/dist/mocks/mockWiki.js.map +1 -1
  1303. package/dist/mocks/mockWikiPageKey.js.map +1 -1
  1304. package/dist/mocks/mock_drug_tool_data.js.map +1 -1
  1305. package/dist/mocks/mock_file_handle.js.map +1 -1
  1306. package/dist/mocks/mock_file_statistics.js.map +1 -1
  1307. package/dist/mocks/mock_has_access_data.js.map +1 -1
  1308. package/dist/mocks/mock_upload_destination.js.map +1 -1
  1309. package/dist/mocks/msw/handlers/accessRequirementAclHandlers.js.map +1 -1
  1310. package/dist/mocks/msw/handlers/accessRequirementHandlers.js.map +1 -1
  1311. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  1312. package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
  1313. package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
  1314. package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
  1315. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  1316. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  1317. package/dist/mocks/msw/handlers/dataciteHandlers.js.map +1 -1
  1318. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  1319. package/dist/mocks/msw/handlers/doiHandlers.js.map +1 -1
  1320. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  1321. package/dist/mocks/msw/handlers/evaluationHandlers.js.map +1 -1
  1322. package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
  1323. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  1324. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  1325. package/dist/mocks/msw/handlers/messageHandlers.js.map +1 -1
  1326. package/dist/mocks/msw/handlers/oauthClientAclHandlers.js.map +1 -1
  1327. package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
  1328. package/dist/mocks/msw/handlers/projectStorageHandlers.js.map +1 -1
  1329. package/dist/mocks/msw/handlers/realmHandlers.js.map +1 -1
  1330. package/dist/mocks/msw/handlers/researchProjectHandlers.js.map +1 -1
  1331. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
  1332. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  1333. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  1334. package/dist/mocks/msw/handlers/shortIoHandlers.js.map +1 -1
  1335. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  1336. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  1337. package/dist/mocks/msw/handlers/tableQueryService.js.map +1 -1
  1338. package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
  1339. package/dist/mocks/msw/handlers/termsOfServiceHandlers.js.map +1 -1
  1340. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  1341. package/dist/mocks/msw/handlers/webhookHandlers.js.map +1 -1
  1342. package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
  1343. package/dist/mocks/msw/handlers.js.map +1 -1
  1344. package/dist/mocks/msw/server.d.ts +1 -1
  1345. package/dist/mocks/msw/server.d.ts.map +1 -1
  1346. package/dist/mocks/msw/server.js.map +1 -1
  1347. package/dist/mocks/msw/util/BasicMockedCrudService.js.map +1 -1
  1348. package/dist/mocks/oauth/MockClient.js.map +1 -1
  1349. package/dist/mocks/personalAccessToken/mockPersonalAccessToken.js.map +1 -1
  1350. package/dist/mocks/projectStorage/mockProjectStorageLimits.js.map +1 -1
  1351. package/dist/mocks/provenance/mockActivity.js.map +1 -1
  1352. package/dist/mocks/query/defaultFileViewColumnModels.js.map +1 -1
  1353. package/dist/mocks/query/mockFeaturedDataTabsQueryData.js.map +1 -1
  1354. package/dist/mocks/query/mockHomepageQueryResultData.js.map +1 -1
  1355. package/dist/mocks/query/mockProjectViewQueryResults.js.map +1 -1
  1356. package/dist/mocks/query/mockRejectionReasonsTableQueryResultBundle.js.map +1 -1
  1357. package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
  1358. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
  1359. package/dist/mocks/query/mock_query_data.js.map +1 -1
  1360. package/dist/mocks/query/syn16787123.js.map +1 -1
  1361. package/dist/mocks/query/syn17328596.js.map +1 -1
  1362. package/dist/mocks/query/syn51735464.js.map +1 -1
  1363. package/dist/mocks/query/syn51735464GroupBySpecies.js.map +1 -1
  1364. package/dist/mocks/realm/mockRealmPrincipal.js.map +1 -1
  1365. package/dist/mocks/team/mockTeam.js.map +1 -1
  1366. package/dist/mocks/termsOfService/mockTermsOfService.js.map +1 -1
  1367. package/dist/mocks/user/mock_user_profile.js.map +1 -1
  1368. package/dist/mocks/usergroup/mockUserGroup.js.map +1 -1
  1369. package/dist/ror-client/index.js.map +1 -1
  1370. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  1371. package/dist/stories/ToastDemo.js.map +1 -1
  1372. package/dist/stories/stubs/Alert/MuiAlert.js.map +1 -1
  1373. package/dist/stories/stubs/Button/MuiButton.js.map +1 -1
  1374. package/dist/stories/stubs/Dialog/MuiDialog.js.map +1 -1
  1375. package/dist/stories/stubs/TextField/MuiTextField.js.map +1 -1
  1376. package/dist/stories/stubs/Tooltip/MuiTooltip.js.map +1 -1
  1377. package/dist/synapse-client/HttpClient.js.map +1 -1
  1378. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  1379. package/dist/synapse-client/SynapseClient.js +61 -69
  1380. package/dist/synapse-client/SynapseClient.js.map +1 -1
  1381. package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
  1382. package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
  1383. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  1384. package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
  1385. package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
  1386. package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
  1387. package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
  1388. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  1389. package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
  1390. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
  1391. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  1392. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  1393. package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
  1394. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
  1395. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  1396. package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
  1397. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  1398. package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
  1399. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  1400. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  1401. package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
  1402. package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
  1403. package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
  1404. package/dist/synapse-queries/doi/useDOI.js.map +1 -1
  1405. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  1406. package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
  1407. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  1408. package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
  1409. package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
  1410. package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
  1411. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  1412. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  1413. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  1414. package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
  1415. package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
  1416. package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
  1417. package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
  1418. package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
  1419. package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
  1420. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  1421. package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
  1422. package/dist/synapse-queries/entity/useSchema.js.map +1 -1
  1423. package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
  1424. package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
  1425. package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
  1426. package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
  1427. package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
  1428. package/dist/synapse-queries/file/useFiles.js.map +1 -1
  1429. package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
  1430. package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
  1431. package/dist/synapse-queries/forum/useForum.js.map +1 -1
  1432. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  1433. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  1434. package/dist/synapse-queries/github/useGithub.js.map +1 -1
  1435. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  1436. package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
  1437. package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
  1438. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  1439. package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
  1440. package/dist/synapse-queries/message/useMessage.js.map +1 -1
  1441. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  1442. package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
  1443. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  1444. package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
  1445. package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
  1446. package/dist/synapse-queries/ror/index.js.map +1 -1
  1447. package/dist/synapse-queries/search/useSearch.js.map +1 -1
  1448. package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
  1449. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  1450. package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
  1451. package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
  1452. package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
  1453. package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
  1454. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  1455. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  1456. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  1457. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  1458. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  1459. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  1460. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  1461. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  1462. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  1463. package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
  1464. package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
  1465. package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
  1466. package/dist/synapse-queries/user/useProjects.js.map +1 -1
  1467. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  1468. package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
  1469. package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
  1470. package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
  1471. package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
  1472. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  1473. package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
  1474. package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
  1475. package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
  1476. package/dist/testutils/LocationTracker.js.map +1 -1
  1477. package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
  1478. package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
  1479. package/dist/testutils/TestingLibraryUtils.js +18 -16
  1480. package/dist/testutils/TestingLibraryUtils.js.map +1 -1
  1481. package/dist/testutils/muiDatePickerMock.js.map +1 -1
  1482. package/dist/testutils/vitest.setup.js.map +1 -1
  1483. package/dist/theme/DefaultTheme.js.map +1 -1
  1484. package/dist/theme/ThemeProvider.js.map +1 -1
  1485. package/dist/theme/mergeTheme.js.map +1 -1
  1486. package/dist/theme/palette/Palettes.js.map +1 -1
  1487. package/dist/theme/spreadSx.js.map +1 -1
  1488. package/dist/theme/typography/Link.js.map +1 -1
  1489. package/dist/theme/typography/Typography.js.map +1 -1
  1490. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1491. package/dist/utils/APIConstants.js.map +1 -1
  1492. package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
  1493. package/dist/utils/AppUtils/AppUtils.js +11 -11
  1494. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  1495. package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
  1496. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  1497. package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
  1498. package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
  1499. package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
  1500. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  1501. package/dist/utils/ContentTypeUtils.js.map +1 -1
  1502. package/dist/utils/OrientationBannerConstants.js.map +1 -1
  1503. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  1504. package/dist/utils/SynapseConstants.js.map +1 -1
  1505. package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
  1506. package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
  1507. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  1508. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  1509. package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
  1510. package/dist/utils/context/AridhiaContext.js.map +1 -1
  1511. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  1512. package/dist/utils/context/FullContextProvider.js.map +1 -1
  1513. package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
  1514. package/dist/utils/context/SynapseContext.js.map +1 -1
  1515. package/dist/utils/featureflag/FeatureFlags.d.ts +2 -1
  1516. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  1517. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  1518. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  1519. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  1520. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  1521. package/dist/utils/functions/DateFormatter.js.map +1 -1
  1522. package/dist/utils/functions/DateTimeUtils.js.map +1 -1
  1523. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  1524. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  1525. package/dist/utils/functions/GridApiUtils.js.map +1 -1
  1526. package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
  1527. package/dist/utils/functions/IsExternalLink.js.map +1 -1
  1528. package/dist/utils/functions/ObjectUtils.js.map +1 -1
  1529. package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
  1530. package/dist/utils/functions/RealmUtils.js.map +1 -1
  1531. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  1532. package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
  1533. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  1534. package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
  1535. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  1536. package/dist/utils/functions/StringUtils.js.map +1 -1
  1537. package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
  1538. package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
  1539. package/dist/utils/functions/colorPalette.js.map +1 -1
  1540. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  1541. package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
  1542. package/dist/utils/functions/generateCsrfToken.js.map +1 -1
  1543. package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
  1544. package/dist/utils/functions/getEndpoint.js +3 -3
  1545. package/dist/utils/functions/getEndpoint.js.map +1 -1
  1546. package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
  1547. package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
  1548. package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
  1549. package/dist/utils/functions/getUserData.js.map +1 -1
  1550. package/dist/utils/functions/queryUtils.js.map +1 -1
  1551. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  1552. package/dist/utils/functions/unCamelCase.js.map +1 -1
  1553. package/dist/utils/hooks/useConfirmItems.js.map +1 -1
  1554. package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
  1555. package/dist/utils/hooks/useCookiePreferences.js +24 -23
  1556. package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
  1557. package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
  1558. package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
  1559. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  1560. package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
  1561. package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
  1562. package/dist/utils/hooks/useGetGoalData.js +2 -4
  1563. package/dist/utils/hooks/useGetGoalData.js.map +1 -1
  1564. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  1565. package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
  1566. package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
  1567. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  1568. package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
  1569. package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
  1570. package/dist/utils/hooks/useIsBot.js.map +1 -1
  1571. package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
  1572. package/dist/utils/hooks/useListState.js.map +1 -1
  1573. package/dist/utils/hooks/useLogin.js.map +1 -1
  1574. package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
  1575. package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
  1576. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  1577. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  1578. package/dist/utils/hooks/useOverlay.js.map +1 -1
  1579. package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
  1580. package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
  1581. package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
  1582. package/dist/utils/hooks/useSet.js.map +1 -1
  1583. package/dist/utils/hooks/useShowDesktop.js.map +1 -1
  1584. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  1585. package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
  1586. package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
  1587. package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
  1588. package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
  1589. package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
  1590. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  1591. package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
  1592. package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
  1593. package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
  1594. package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
  1595. package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
  1596. package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
  1597. package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
  1598. package/dist/utils/html/TargetEnum.js.map +1 -1
  1599. package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
  1600. package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
  1601. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  1602. package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
  1603. package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
  1604. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  1605. package/dist/utils/jsonschema/getType.js.map +1 -1
  1606. package/dist/utils/searchDefaults.js.map +1 -1
  1607. package/dist/utils/slots/SlotUtils.js.map +1 -1
  1608. package/dist/utils/types/IsType.js.map +1 -1
  1609. package/package.json +67 -66
@@ -1 +1 @@
1
- {"version":3,"file":"useGridAutocompleteState.js","names":["useCallback","useEffect","useLayoutEffect","useRef","useState","UseGridAutocompleteStateProps","active","stopEditing","opts","nextRow","onDeactivate","UseGridAutocompleteStateReturn","menuIsOpen","setMenuIsOpen","open","inputRef","React","RefObject","HTMLInputElement","activeRef","handleListboxMouseDown","event","MouseEvent","notifyOptionCommitted","handleMenuOpen","handleClose","useGridAutocompleteState","t0","$","_c","optionMouseDownRef","t1","current","onDeactivateRef","t2","stopEditingRef","t3","t4","t5","focus","blur","t6","Symbol","for","preventDefault","target","Element","closest","t7","t8","t9","t10"],"sources":["../../../../src/components/DataGrid/columns/useGridAutocompleteState.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\n\nexport type UseGridAutocompleteStateProps = {\n active: boolean\n /**\n * `stopEditing` from react-datasheet-grid's CellProps. The hook ref-stabilizes\n * this internally, so callers can pass it directly without memoizing.\n */\n stopEditing?: (opts?: { nextRow: boolean }) => void\n /**\n * Called when the cell transitions from active to inactive and there is no\n * pending option click in progress (i.e. the portal-click guard is not set).\n * Store any free-text commit logic here. The callback is ref-stabilized inside\n * the hook, so it may freely capture local state without becoming a stale closure.\n */\n onDeactivate?: () => void\n}\n\nexport type UseGridAutocompleteStateReturn = {\n menuIsOpen: boolean\n setMenuIsOpen: (open: boolean) => void\n /** Ref to attach to the focusable input element for programmatic focus/blur. */\n inputRef: React.RefObject<HTMLInputElement | null>\n /**\n * Always reflects the current `active` value. Safe to read inside event\n * handler closures (e.g. onChange) without a stale capture.\n */\n activeRef: React.RefObject<boolean>\n /** Pass to `slotProps.listbox.onMouseDown` on the MUI Autocomplete. */\n handleListboxMouseDown: (event: React.MouseEvent) => void\n /**\n * Call at the top of every `onChange` handler to signal that a pending\n * option click has been committed. Clears the portal-click guard so that\n * subsequent active→false transitions can proceed normally.\n */\n notifyOptionCommitted: () => void\n /** Pass to the Autocomplete `onOpen` prop. */\n handleMenuOpen: () => void\n /**\n * Pass to the Autocomplete `onClose` prop. Clears the portal-click guard and\n * closes the menu, then stops editing without advancing to the next row.\n */\n handleClose: () => void\n}\n\n/**\n * Manages the shared focus/blur/menu state needed by grid autocomplete cell\n * components that are built on top of react-datasheet-grid.\n *\n * Both AutocompleteColumn and AutocompleteMultipleEnumColumn use the same\n * three-part pattern:\n * 1. When `active` becomes true → focus the input.\n * 2. When `active` becomes false with no pending option click → blur + close menu.\n * 3. The dropdown renders in a portal outside the grid cell. react-datasheet-grid\n * sees the mousedown as an outside click and fires active=false before onClick\n * → onChange. The `optionMouseDownRef` guard defers step 2 until the click\n * completes and onChange resets the ref.\n */\nexport function useGridAutocompleteState({\n active,\n stopEditing,\n onDeactivate,\n}: UseGridAutocompleteStateProps): UseGridAutocompleteStateReturn {\n const inputRef = useRef<HTMLInputElement>(null)\n const [menuIsOpen, setMenuIsOpen] = useState(false)\n const optionMouseDownRef = useRef(false)\n\n // Always reflects the latest `active` value — safe to read in closures.\n const activeRef = useRef(active)\n useLayoutEffect(() => {\n activeRef.current = active\n })\n\n // Ref-stabilize callbacks so effects/handlers never need them in deps arrays,\n // yet always call the latest versions (avoiding stale closures).\n const onDeactivateRef = useRef(onDeactivate)\n useLayoutEffect(() => {\n onDeactivateRef.current = onDeactivate\n })\n const stopEditingRef = useRef(stopEditing)\n useLayoutEffect(() => {\n stopEditingRef.current = stopEditing\n })\n\n useEffect(() => {\n if (active) {\n inputRef.current?.focus()\n } else if (!optionMouseDownRef.current) {\n // Only close when there is no pending option click; if there is one,\n // onChange will reset optionMouseDownRef and handle cleanup itself.\n setMenuIsOpen(false)\n inputRef.current?.blur()\n onDeactivateRef.current?.()\n }\n // Intentionally only re-runs when `active` changes.\n }, [active])\n\n const handleListboxMouseDown = useCallback((event: React.MouseEvent) => {\n // Prevent the input from blurring when clicking inside the listbox. MUI's\n // internal listbox onMouseDown does the same, but our slotProps replaces it,\n // so we must call preventDefault() here to preserve that behavior.\n event.preventDefault()\n // Only signal a pending option click when the mousedown actually targets an\n // option element. Clicks on scrollbars or listbox padding would otherwise\n // leave the guard stuck true (onChange never fires for non-selections),\n // causing later active→false transitions to skip blur/onDeactivate cleanup.\n if ((event.target as Element).closest('[role=\"option\"]')) {\n optionMouseDownRef.current = true\n }\n }, [])\n\n const notifyOptionCommitted = useCallback(() => {\n optionMouseDownRef.current = false\n }, [])\n\n const handleMenuOpen = useCallback(() => {\n setMenuIsOpen(true)\n }, [])\n\n const handleClose = useCallback(() => {\n // Clear the guard in case a mousedown on an option was abandoned before\n // onChange could fire (e.g. drag-off).\n optionMouseDownRef.current = false\n setMenuIsOpen(false)\n stopEditingRef.current?.({ nextRow: false })\n }, [])\n\n return {\n menuIsOpen,\n setMenuIsOpen,\n inputRef,\n activeRef,\n handleListboxMouseDown,\n notifyOptionCommitted,\n handleMenuOpen,\n handleClose,\n }\n}\n"],"mappings":";;;AAgEA,SAAO0B,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAkC,EAAAvB,WAAAC,gBAAAG,oBAAAiB,GAKvCZ,IAAiBZ,EAAyB,KAAK,EAC/C,CAAAS,GAAAC,KAAoCT,EAAS,GAAM,EACnD0B,IAA2B3B,EAAO,GAAM,EAGxCgB,IAAkBhB,EAAOG,EAAO,EAAAyB;AAChC7B,CADgC0B,EAAA,OAAAtB,IAG/ByB,IAAAH,EAAA,MAFeG,UAAA;AACdZ,IAASa,UAAW1B;IACrBsB,EAAA,KAAAtB,GAAAsB,EAAA,KAAAG,IAFD7B,EAAgB6B,EAEd;CAIF,IAAAE,IAAwB9B,EAAOO,EAAa,EAAAwB;AAC5ChC,CAD4C0B,EAAA,OAAAlB,IAG3CwB,IAAAN,EAAA,MAFeM,UAAA;AACdD,IAAeD,UAAWtB;IAC3BkB,EAAA,KAAAlB,GAAAkB,EAAA,KAAAM,IAFDhC,EAAgBgC,EAEd;CACF,IAAAC,IAAuBhC,EAAOI,EAAY,EAAA6B;AAC1ClC,CAD0C0B,EAAA,OAAArB,IAGzC6B,IAAAR,EAAA,MAFeQ,UAAA;AACdD,IAAcH,UAAWzB;IAC1BqB,EAAA,KAAArB,GAAAqB,EAAA,KAAAQ,IAFDlC,EAAgBkC,EAEd;CAAA,IAAAC,GAAAC;AAEFrC,CAFE2B,EAAA,OAAAtB,KAaS+B,IAAAT,EAAA,IAAAU,IAAAV,EAAA,OAXDS,UAAA;AACR,EAAI/B,IACFS,EAAQiB,SAAeO,OAAE,GACfT,EAAkBE,YAG5BnB,EAAc,GAAM,EACpBE,EAAQiB,SAAcQ,MAAE,EACxBP,EAAeD,WAAY;IAG5BM,IAAA,CAAChC,EAAO,EAAAsB,EAAA,KAAAtB,GAAAsB,EAAA,KAAAS,GAAAT,EAAA,KAAAU,IAXXrC,EAAUoC,GAWPC,EAAS;CAAA,IAAAG;AAAA,CAAAb,EAAA,OAAAc,OAAAC,IAAA,4BAAA,IAE+BF,KAAApB,MAAA;AASzC,EALAA,EAAKuB,gBAAiB,EAKjBvB,EAAKwB,OAAkBE,QAAU,oBAAkB,KACtDjB,EAAkBE,UAAW;IAEhCJ,EAAA,KAAAa,KAAAA,IAAAb,EAAA;CAZD,IAAAR,IAA+BqB,GAYzBO;AAAA,CAAApB,EAAA,QAAAc,OAAAC,IAAA,4BAAA,IAEoCK,UAAA;AACxClB,IAAkBE,UAAW;IAC9BJ,EAAA,MAAAoB,KAAAA,IAAApB,EAAA;CAFD,IAAAL,IAA8ByB,GAExBC;AAAA,CAAArB,EAAA,QAAAc,OAAAC,IAAA,4BAAA,IAE6BM,UAAA;AACjCpC,IAAc,GAAK;IACpBe,EAAA,MAAAqB,KAAAA,IAAArB,EAAA;CAFD,IAAAJ,IAAuByB,GAEjBC;AAAA,CAAAtB,EAAA,QAAAc,OAAAC,IAAA,4BAAA,IAE0BO,UAAA;AAK9Bf,EAFAL,EAAkBE,UAAW,IAC7BnB,EAAc,GAAM,EACpBsB,EAAcH,UAAW,EAAAvB,SAAW,IAAO,CAAC;IAC7CmB,EAAA,MAAAsB,KAAAA,IAAAtB,EAAA;CAND,IAAAH,IAAoByB,GAMdC;AAWL,QAXKvB,EAAA,QAAAhB,IAWLuC,IAAAvB,EAAA,OATMuB,IAAA;EAAAvC;EAAAC;EAAAE;EAAAI;EAAAC;EAAAG;EAAAC;EAAAC;EASN,EAAAG,EAAA,MAAAhB,GAAAgB,EAAA,MAAAuB,IATMA"}
1
+ {"version":3,"file":"useGridAutocompleteState.js","names":["useCallback","useEffect","useLayoutEffect","useRef","useState","UseGridAutocompleteStateProps","active","focus","stopEditing","opts","nextRow","onDeactivate","UseGridAutocompleteStateReturn","menuIsOpen","setMenuIsOpen","open","inputRef","React","RefObject","HTMLInputElement","activeRef","handleListboxMouseDown","event","MouseEvent","notifyOptionCommitted","handleMenuOpen","handleClose","handlePopupIndicatorMouseDown","useGridAutocompleteState","t0","$","_c","optionMouseDownRef","t1","current","onDeactivateRef","t2","stopEditingRef","t3","popupClickInProgressRef","t4","Symbol","for","t5","t6","blur","t7","t8","input","handleFocus","addEventListener","removeEventListener","t10","t9","t11","preventDefault","target","Element","closest","t12","t13","t14","t15"],"sources":["../../../../src/components/DataGrid/columns/useGridAutocompleteState.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\n\nexport type UseGridAutocompleteStateProps = {\n active: boolean\n focus: boolean\n /**\n * `stopEditing` from react-datasheet-grid's CellProps. The hook ref-stabilizes\n * this internally, so callers can pass it directly without memoizing.\n */\n stopEditing?: (opts?: { nextRow: boolean }) => void\n /**\n * Called when the cell transitions from active to inactive and there is no\n * pending option click in progress (i.e. the portal-click guard is not set).\n * Store any free-text commit logic here. The callback is ref-stabilized inside\n * the hook, so it may freely capture local state without becoming a stale closure.\n */\n onDeactivate?: () => void\n}\n\nexport type UseGridAutocompleteStateReturn = {\n menuIsOpen: boolean\n setMenuIsOpen: (open: boolean) => void\n /** Ref to attach to the focusable input element for programmatic focus/blur. */\n inputRef: React.RefObject<HTMLInputElement | null>\n /**\n * Always reflects the current `active` value. Safe to read inside event\n * handler closures (e.g. onChange) without a stale capture.\n */\n activeRef: React.RefObject<boolean>\n /** Pass to `slotProps.listbox.onMouseDown` on the MUI Autocomplete. */\n handleListboxMouseDown: (event: React.MouseEvent) => void\n /**\n * Call at the top of every `onChange` handler to signal that a pending\n * option click has been committed. Clears the portal-click guard so that\n * subsequent active→false transitions can proceed normally.\n */\n notifyOptionCommitted: () => void\n /** Pass to the Autocomplete `onOpen` prop. */\n handleMenuOpen: () => void\n /**\n * Pass to the Autocomplete `onClose` prop. Clears the portal-click guard and\n * closes the menu, then stops editing without advancing to the next row.\n */\n handleClose: () => void\n /** Pass to `slotProps.popupIndicator.onMouseDown` on the MUI Autocomplete. */\n handlePopupIndicatorMouseDown: () => void\n}\n\n/**\n * Manages the shared focus/blur/menu state needed by grid autocomplete cell\n * components that are built on top of react-datasheet-grid.\n *\n * Grid cell state is two-tiered: `active` is set on first click (cell is\n * selected, but not editing), `focus` is set on second click (cell is in edit\n * mode). This hook keeps browser focus and dropdown visibility tied to `focus`\n * so the active-but-not-focused state doesn't show a caret or open the menu —\n * Backspace/Delete and type-to-edit then fall through to the grid's defaults.\n *\n * 1. When `focus` becomes true → focus the input + open the menu.\n * 2. When `focus` becomes false → blur + close the menu.\n * 3. When `active` becomes false with no pending option click → run\n * `onDeactivate` to commit any uncommitted free-text. This is separate\n * from focus because Escape clears `focus` but keeps `active`, and we\n * should not commit on Escape.\n * 4. The dropdown renders in a portal outside the grid cell. react-datasheet-grid\n * sees the mousedown as an outside click and fires active=false before onClick\n * → onChange. The `optionMouseDownRef` guard defers steps 2 and 3 until the\n * click completes and onChange resets the ref.\n */\nexport function useGridAutocompleteState({\n active,\n focus,\n stopEditing,\n onDeactivate,\n}: UseGridAutocompleteStateProps): UseGridAutocompleteStateReturn {\n const inputRef = useRef<HTMLInputElement>(null)\n const [menuIsOpen, setMenuIsOpen] = useState(false)\n const optionMouseDownRef = useRef(false)\n\n // Always reflects the latest `active` value — safe to read in closures.\n const activeRef = useRef(active)\n useLayoutEffect(() => {\n activeRef.current = active\n })\n\n // Ref-stabilize callbacks so effects/handlers never need them in deps arrays,\n // yet always call the latest versions (avoiding stale closures).\n const onDeactivateRef = useRef(onDeactivate)\n useLayoutEffect(() => {\n onDeactivateRef.current = onDeactivate\n })\n const stopEditingRef = useRef(stopEditing)\n useLayoutEffect(() => {\n stopEditingRef.current = stopEditing\n })\n\n // Tracks an in-flight popup-indicator click so the focus effect skips its\n // auto-open. Without this, the indicator click both (a) promotes the cell to\n // grid focus (our effect would open the menu) and (b) toggles via MUI's\n // own onClick (which would then close because we just opened it) — flicker.\n // Letting MUI handle the open via its onOpen avoids the dueling state.\n // Cleared by handleMenuOpen (successful click) or by the focus/active effects\n // when focus drops (abandoned press).\n const popupClickInProgressRef = useRef(false)\n const handlePopupIndicatorMouseDown = useCallback(() => {\n popupClickInProgressRef.current = true\n }, [])\n\n useEffect(() => {\n if (focus) {\n inputRef.current?.focus()\n if (!popupClickInProgressRef.current) {\n setMenuIsOpen(true)\n }\n } else if (!optionMouseDownRef.current) {\n // Only close when there is no pending option click; if there is one,\n // onChange will reset optionMouseDownRef and handle cleanup itself.\n popupClickInProgressRef.current = false\n setMenuIsOpen(false)\n inputRef.current?.blur()\n }\n }, [focus])\n\n // Defense in depth for the caret: when grid focus is false, MUI may still\n // route browser focus to the <input> (e.g. multi-mode chip-area clicks,\n // popup indicator clicks). Intercept any focus that lands on the input\n // while we're not in edit mode and blur it, so no caret blinks after the\n // last chip or inside the input.\n useEffect(() => {\n if (focus) return\n const input = inputRef.current\n if (!input) return\n const handleFocus = () => {\n input.blur()\n }\n input.addEventListener('focus', handleFocus)\n return () => {\n input.removeEventListener('focus', handleFocus)\n }\n }, [focus])\n\n useEffect(() => {\n if (!active && !optionMouseDownRef.current) {\n // Menus can be opened with grid focus=false (e.g. clicking the popup\n // indicator on a freshly-activated cell), so the focus effect alone is\n // not enough — close on deactivation too. Otherwise a deactivated cell\n // can leave a stale menu open that re-anchors and \"moves\" as the user\n // scrolls the grid, or stack up alongside the next cell's menu.\n popupClickInProgressRef.current = false\n setMenuIsOpen(false)\n inputRef.current?.blur()\n onDeactivateRef.current?.()\n }\n }, [active])\n\n const handleListboxMouseDown = useCallback((event: React.MouseEvent) => {\n // Prevent the input from blurring when clicking inside the listbox. MUI's\n // internal listbox onMouseDown does the same, but our slotProps replaces it,\n // so we must call preventDefault() here to preserve that behavior.\n event.preventDefault()\n // Only signal a pending option click when the mousedown actually targets an\n // option element. Clicks on scrollbars or listbox padding would otherwise\n // leave the guard stuck true (onChange never fires for non-selections),\n // causing later active→false transitions to skip blur/onDeactivate cleanup.\n if ((event.target as Element).closest('[role=\"option\"]')) {\n optionMouseDownRef.current = true\n }\n }, [])\n\n const notifyOptionCommitted = useCallback(() => {\n optionMouseDownRef.current = false\n }, [])\n\n const handleMenuOpen = useCallback(() => {\n popupClickInProgressRef.current = false\n setMenuIsOpen(true)\n }, [])\n\n const handleClose = useCallback(() => {\n // Clear the guard in case a mousedown on an option was abandoned before\n // onChange could fire (e.g. drag-off).\n optionMouseDownRef.current = false\n setMenuIsOpen(false)\n stopEditingRef.current?.({ nextRow: false })\n }, [])\n\n return {\n menuIsOpen,\n setMenuIsOpen,\n inputRef,\n activeRef,\n handleListboxMouseDown,\n notifyOptionCommitted,\n handleMenuOpen,\n handleClose,\n handlePopupIndicatorMouseDown,\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnHeaderWithTooltip.js","names":["Box","IconButton","Tooltip","HelpTwoTone","PushPin","PushPinOutlined","TOOLTIP_DELAY_SHOW","ColumnHeaderWithTooltipProps","name","description","showPinIcon","isPinned","onTogglePin","ColumnHeaderWithTooltip","t0","$","_c","t1","t2","undefined","t3","Symbol","for","display","gridTemplateColumns","gap","width","alignItems","minWidth","t4","overflow","textOverflow","whiteSpace","t5","t6","flexShrink","t7","t8","e","stopPropagation","color","opacity","t9","t10"],"sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"sourcesContent":["import { Box, IconButton, Tooltip } from '@mui/material'\nimport { HelpTwoTone, PushPin, PushPinOutlined } from '@mui/icons-material'\nimport { TOOLTIP_DELAY_SHOW } from '@/components/SynapseTable/SynapseTableConstants'\n\ntype ColumnHeaderWithTooltipProps = {\n name: string\n description?: string\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n}\n\n/**\n * Renders a column header with an optional help icon showing the column description.\n * Adopts the help icon pattern from ColumnHeader for consistent UX.\n */\nexport function ColumnHeaderWithTooltip({\n name,\n description,\n showPinIcon = false,\n isPinned = false,\n onTogglePin,\n}: ColumnHeaderWithTooltipProps) {\n return (\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gap: 0.5,\n width: '100%',\n alignItems: 'center',\n minWidth: 0,\n }}\n >\n {/* Text area - shrinks first */}\n <Box\n component=\"span\"\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n }}\n title={name} // Native tooltip for truncated text\n >\n {name}\n </Box>\n\n {/* Icons area - fixed size, never shrinks */}\n <Box sx={{ display: 'flex', gap: 0.5, flexShrink: 0 }}>\n {description && (\n <Tooltip\n title={description}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton size=\"small\" color=\"inherit\">\n <HelpTwoTone fontSize=\"inherit\" />\n </IconButton>\n </Tooltip>\n )}\n {showPinIcon && onTogglePin && (\n <Tooltip\n title={isPinned ? 'Unpin column' : 'Pin column'}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton\n size=\"small\"\n color=\"inherit\"\n aria-label={isPinned ? 'Unpin column' : 'Pin column'}\n // Use onMouseDown instead of onClick to prevent column selection\n // when clicking the pin icon. stopPropagation prevents event bubbling.\n onMouseDown={e => {\n e.stopPropagation()\n onTogglePin()\n }}\n sx={{\n color: 'inherit',\n opacity: isPinned ? 1 : 0.7,\n '&:hover': {\n opacity: 1,\n },\n }}\n >\n {isPinned ? (\n <PushPin fontSize=\"inherit\" />\n ) : (\n <PushPinOutlined fontSize=\"inherit\" />\n )}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Box>\n )\n}\n"],"mappings":";;;;;;AAgBA,SAAOa,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAiC,EAAAR,SAAAC,gBAAAC,aAAAO,GAAAN,UAAAO,GAAAN,mBAAAE,GAGtCJ,IAAAO,MAAAE,KAAAA,IAAA,KAAAF,GACAN,IAAAO,MAAAC,KAAAA,IAAA,KAAAD,GAAgBE;AAAA,CAAAL,EAAA,OAAAM,OAAAC,IAAA,4BAAA,IAKRF,IAAA;EAAAG,SACO;EAAMC,qBACM;EAAqBC,KACrC;EAAGC,OACD;EAAMC,YACD;EAAQC,UACV;EACX,EAAAb,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAc;AAAA,CAAAd,EAAA,OAAAM,OAAAC,IAAA,4BAAA,IAKKO,IAAA;EAAAC,UACQ;EAAQC,cACJ;EAAUC,YACZ;EAAQJ,UACV;EACX,EAAAb,EAAA,KAAAc,KAAAA,IAAAd,EAAA;CAAA,IAAAkB;AAAA,CAAAlB,EAAA,OAAAP,IAIGyB,IAAAlB,EAAA,MAXNkB,IAAA,kBAAC,GAAD;EACY,WAAA;EACN,IAAAJ;EAMGrB,OAAAA;YAENA;EACG,CAAA,EAAAO,EAAA,KAAAP,GAAAO,EAAA,KAAAkB;CAAA,IAAAC;AAAA,CAAAnB,EAAA,OAAAM,OAAAC,IAAA,4BAAA,IAGGY,IAAA;EAAAX,SAAW;EAAME,KAAO;EAAGU,YAAc;EAAG,EAAApB,EAAA,KAAAmB,KAAAA,IAAAnB,EAAA;CAAA,IAAAqB;AAAA,CAAArB,EAAA,OAAAN,IAWlD2B,IAAArB,EAAA,MAVAqB,IAAA3B,KACC,kBAAC,GAAD;EACSA,OAAAA;EACG,WAAA;EACMH,gBAAAA;YAEhB,kBAAC,GAAD;GAAiB,MAAA;GAAc,OAAA;aAC7B,kBAAC,GAAD,EAAsB,UAAA,WACxB,CAAA;GACF,CAAA;EACD,CAAA,EAAAS,EAAA,KAAAN,GAAAM,EAAA,KAAAqB;CAAA,IAAAC;AAAA,CAAAtB,EAAA,OAAAJ,KAAAI,EAAA,OAAAH,KAAAG,EAAA,OAAAL,KACA2B,IAAA3B,KAAAE,KACC,kBAAC,GAAD;EACS,OAAAD,IAAA,iBAAA;EACG,WAAA;EACML,gBAAAA;YAEhB,kBAAC,GAAD;GACO,MAAA;GACC,OAAA;GACM,cAAAK,IAAA,iBAAA;GAGC,cAAA2B,MAAA;AAEX1B,IADA0B,EAACC,iBAAkB,EACnB3B,GAAa;;GAEX,IAAA;IAAA4B,OACK;IAASC,SACP9B,IAAA,IAAA;IAAkB,WAChB,EAAA8B,SACA,GACX;IACF;aAGE,EADD9B,IACE,IAEA,GAFD,EAAkB,UAAA,WAGnB,CAAD;GAEJ,CAAA;EACD,CAAA,EAAAI,EAAA,KAAAJ,GAAAI,EAAA,KAAAH,GAAAG,EAAA,KAAAL,GAAAK,EAAA,MAAAsB,KAAAA,IAAAtB,EAAA;CAAA,IAAA2B;AAAA,CAAA3B,EAAA,QAAAqB,KAAArB,EAAA,QAAAsB,KA3CHK,IAAA,kBAAC,GAAD;EAAS,IAAAR;YAAT,CACGE,GAWAC,EAgCG;KAAAtB,EAAA,MAAAqB,GAAArB,EAAA,MAAAsB,GAAAtB,EAAA,MAAA2B,KAAAA,IAAA3B,EAAA;CAAA,IAAA4B;AACF,QADE5B,EAAA,QAAAkB,KAAAlB,EAAA,QAAA2B,KArERC,IAAA,kBAAC,GAAD;EACM,IAAAvB;YADN,CAWEa,GAcAS,EA6CI;KAAA3B,EAAA,MAAAkB,GAAAlB,EAAA,MAAA2B,GAAA3B,EAAA,MAAA4B,KAAAA,IAAA5B,EAAA,KAtEN4B"}
1
+ {"version":3,"file":"ColumnHeaderWithTooltip.js","names":["Box","IconButton","Tooltip","HelpTwoTone","PushPin","PushPinOutlined","TOOLTIP_DELAY_SHOW","ColumnHeaderWithTooltipProps","name","description","showPinIcon","isPinned","onTogglePin","ColumnHeaderWithTooltip","t0","$","_c","t1","t2","undefined","t3","Symbol","for","display","gridTemplateColumns","gap","width","alignItems","minWidth","t4","overflow","textOverflow","whiteSpace","t5","t6","flexShrink","t7","t8","e","stopPropagation","color","opacity","t9","t10"],"sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"sourcesContent":["import { Box, IconButton, Tooltip } from '@mui/material'\nimport { HelpTwoTone, PushPin, PushPinOutlined } from '@mui/icons-material'\nimport { TOOLTIP_DELAY_SHOW } from '@/components/SynapseTable/SynapseTableConstants'\n\ntype ColumnHeaderWithTooltipProps = {\n name: string\n description?: string\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n}\n\n/**\n * Renders a column header with an optional help icon showing the column description.\n * Adopts the help icon pattern from ColumnHeader for consistent UX.\n */\nexport function ColumnHeaderWithTooltip({\n name,\n description,\n showPinIcon = false,\n isPinned = false,\n onTogglePin,\n}: ColumnHeaderWithTooltipProps) {\n return (\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gap: 0.5,\n width: '100%',\n alignItems: 'center',\n minWidth: 0,\n }}\n >\n {/* Text area - shrinks first */}\n <Box\n component=\"span\"\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n }}\n title={name} // Native tooltip for truncated text\n >\n {name}\n </Box>\n\n {/* Icons area - fixed size, never shrinks */}\n <Box sx={{ display: 'flex', gap: 0.5, flexShrink: 0 }}>\n {description && (\n <Tooltip\n title={description}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton size=\"small\" color=\"inherit\">\n <HelpTwoTone fontSize=\"inherit\" />\n </IconButton>\n </Tooltip>\n )}\n {showPinIcon && onTogglePin && (\n <Tooltip\n title={isPinned ? 'Unpin column' : 'Pin column'}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton\n size=\"small\"\n color=\"inherit\"\n aria-label={isPinned ? 'Unpin column' : 'Pin column'}\n // Use onMouseDown instead of onClick to prevent column selection\n // when clicking the pin icon. stopPropagation prevents event bubbling.\n onMouseDown={e => {\n e.stopPropagation()\n onTogglePin()\n }}\n sx={{\n color: 'inherit',\n opacity: isPinned ? 1 : 0.7,\n '&:hover': {\n opacity: 1,\n },\n }}\n >\n {isPinned ? (\n <PushPin fontSize=\"inherit\" />\n ) : (\n <PushPinOutlined fontSize=\"inherit\" />\n )}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Box>\n )\n}\n"],"mappings":";;;;;;AAgBA,SAAOa,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAiC,EAAAR,SAAAC,gBAAAC,aAAAO,GAAAN,UAAAO,GAAAN,mBAAAE,GAGtCJ,IAAAO,MAAAE,KAAAA,IAAA,KAAAF,GACAN,IAAAO,MAAAC,KAAAA,IAAA,KAAAD,GAAgBE;CAAA,AAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAKRF,IAAA;EAAAG,SACO;EAAMC,qBACM;EAAqBC,KACrC;EAAGC,OACD;EAAMC,YACD;EAAQC,UACV;CACZ,GAACb,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAc;CAAA,AAAAd,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAKKO,IAAA;EAAAC,UACQ;EAAQC,cACJ;EAAUC,YACZ;EAAQJ,UACV;CACZ,GAACb,EAAA,KAAAc,KAAAA,IAAAd,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,OAAAP,IAIGyB,IAAAlB,EAAA,MAXNkB,IAAA,kBAAC,GAAD;EACY,WAAA;EACN,IAAAJ;EAMGrB,OAAAA;YAENA;CAVC,CAAA,GAWEO,EAAA,KAAAP,GAAAO,EAAA,KAAAkB;CAAA,IAAAC;CAAA,AAAAnB,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAGGY,IAAA;EAAAX,SAAW;EAAME,KAAO;EAAGU,YAAc;CAAE,GAACpB,EAAA,KAAAmB,KAAAA,IAAAnB,EAAA;CAAA,IAAAqB;CAAA,AAAArB,EAAA,OAAAN,IAWlD2B,IAAArB,EAAA,MAVAqB,IAAA3B,KACC,kBAAC,GAAD;EACSA,OAAAA;EACG,WAAA;EACMH,gBAAAA;YAEhB,kBAAC,GAAD;GAAiB,MAAA;GAAc,OAAA;aAC7B,kBAAC,GAAD,EAAsB,UAAA,UAAS,CAAA;EADtB,CAAA;CALL,CAAA,GASTS,EAAA,KAAAN,GAAAM,EAAA,KAAAqB;CAAA,IAAAC;CAAA,AAAAtB,EAAA,OAAAJ,KAAAI,EAAA,OAAAH,KAAAG,EAAA,OAAAL,KACA2B,IAAA3B,KAAAE,KACC,kBAAC,GAAD;EACS,OAAAD,IAAA,iBAAA;EACG,WAAA;EACML,gBAAAA;YAEhB,kBAAC,GAAD;GACO,MAAA;GACC,OAAA;GACM,cAAAK,IAAA,iBAAA;GAGC,cAAA2B,MAAA;IAEX1B,AADA0B,EAACC,gBAAiB,GAClB3B,EAAY;GAAC;GAEX,IAAA;IAAA4B,OACK;IAASC,SACP9B,IAAA,IAAA;IAAkB,WAChB,EAAA8B,SACA,EACX;GACF;aAGE,EADD9B,IACE,IAEA,GAFD,EAAkB,UAAA,UAAS,CAEQ;EArB5B,CAAA;CALL,CAAA,GA8BTI,EAAA,KAAAJ,GAAAI,EAAA,KAAAH,GAAAG,EAAA,KAAAL,GAAAK,EAAA,MAAAsB,KAAAA,IAAAtB,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,QAAAqB,KAAArB,EAAA,QAAAsB,KA3CHK,IAAA,kBAAC,GAAD;EAAS,IAAAR;YAAT,CACGE,GAWAC,CAZC;KA4CEtB,EAAA,MAAAqB,GAAArB,EAAA,MAAAsB,GAAAtB,EAAA,MAAA2B,KAAAA,IAAA3B,EAAA;CAAA,IAAA4B;CACF,OADE5B,EAAA,QAAAkB,KAAAlB,EAAA,QAAA2B,KArERC,IAAA,kBAAC,GAAD;EACM,IAAAvB;YADN,CAWEa,GAcAS,CAzBE;KAsEE3B,EAAA,MAAAkB,GAAAlB,EAAA,MAAA2B,GAAA3B,EAAA,MAAA4B,KAAAA,IAAA5B,EAAA,KAtEN4B;AAsEM"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExportCsvFromGridButton.js","names":["GridMenuButton","useExportDataGridToCsv","DownloadTwoTone","ExportCsvFromGridButtonProps","gridSessionId","filename","ExportCsvFromGridButton","props","$","_c","t0","exportToCsv","isExporting","t1","Symbol","for","t2"],"sources":["../../../../src/components/DataGrid/components/ExportCsvFromGridButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport { useExportDataGridToCsv } from '@/components/DataGrid/hooks/useExportDataGridToCsv'\nimport { DownloadTwoTone } from '@mui/icons-material'\n\nexport type ExportCsvFromGridButtonProps = {\n gridSessionId: string\n filename: string\n}\n\nexport default function ExportCsvFromGridButton(\n props: ExportCsvFromGridButtonProps,\n) {\n const { gridSessionId, filename } = props\n\n const { exportToCsv, isExporting } = useExportDataGridToCsv({\n gridSessionId,\n filename,\n })\n\n return (\n <GridMenuButton\n onClick={exportToCsv}\n variant=\"outlined\"\n startIcon={<DownloadTwoTone />}\n loading={isExporting}\n >\n Export CSV\n </GridMenuButton>\n )\n}\n"],"mappings":";;;;;;AASA,SAAeM,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAGb,EAAAL,kBAAAC,gBAAoCE,GAAKG;AAAA,CAAAF,EAAA,OAAAH,KAAAG,EAAA,OAAAJ,KAEmBM,IAAA;EAAAN;EAAAC;EAG3D,EAAAG,EAAA,KAAAH,GAAAG,EAAA,KAAAJ,GAAAI,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAHD,IAAA,EAAAG,gBAAAC,mBAAqCX,EAAuBS,EAG1D,EAAAG;AAAA,CAAAL,EAAA,OAAAM,OAAAC,IAAA,4BAAA,IAMaF,IAAA,kBAAC,GAAD,EAAmB,CAAA,EAAAL,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAQ;AAIf,QAJeR,EAAA,OAAAG,KAAAH,EAAA,OAAAI,KAHhCI,IAAA,kBAAC,GAAD;EACWL,SAAAA;EACD,SAAA;EACG,WAAAE;EACFD,SAAAA;YACV;EAEgB,CAAA,EAAAJ,EAAA,KAAAG,GAAAH,EAAA,KAAAI,GAAAJ,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAPjBQ"}
1
+ {"version":3,"file":"ExportCsvFromGridButton.js","names":["GridMenuButton","useExportDataGridToCsv","DownloadTwoTone","ExportCsvFromGridButtonProps","gridSessionId","filename","ExportCsvFromGridButton","props","$","_c","t0","exportToCsv","isExporting","t1","Symbol","for","t2"],"sources":["../../../../src/components/DataGrid/components/ExportCsvFromGridButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport { useExportDataGridToCsv } from '@/components/DataGrid/hooks/useExportDataGridToCsv'\nimport { DownloadTwoTone } from '@mui/icons-material'\n\nexport type ExportCsvFromGridButtonProps = {\n gridSessionId: string\n filename: string\n}\n\nexport default function ExportCsvFromGridButton(\n props: ExportCsvFromGridButtonProps,\n) {\n const { gridSessionId, filename } = props\n\n const { exportToCsv, isExporting } = useExportDataGridToCsv({\n gridSessionId,\n filename,\n })\n\n return (\n <GridMenuButton\n onClick={exportToCsv}\n variant=\"outlined\"\n startIcon={<DownloadTwoTone />}\n loading={isExporting}\n >\n Export CSV\n </GridMenuButton>\n )\n}\n"],"mappings":";;;;;;AASA,SAAeM,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAGb,EAAAL,kBAAAC,gBAAoCE,GAAKG;CAAA,AAAAF,EAAA,OAAAH,KAAAG,EAAA,OAAAJ,KAEmBM,IAAA;EAAAN;EAAAC;CAG5D,GAACG,EAAA,KAAAH,GAAAG,EAAA,KAAAJ,GAAAI,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAHD,IAAA,EAAAG,gBAAAC,mBAAqCX,EAAuBS,CAG3D,GAACG;CAAA,AAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAMaF,IAAA,kBAAC,GAAD,CAAgB,CAAA,GAAGL,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAQ;CAIf,OAJeR,EAAA,OAAAG,KAAAH,EAAA,OAAAI,KAHhCI,IAAA,kBAAC,GAAD;EACWL,SAAAA;EACD,SAAA;EACG,WAAAE;EACFD,SAAAA;YACV;CALc,CAAA,GAOEJ,EAAA,KAAAG,GAAAH,EAAA,KAAAI,GAAAJ,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAPjBQ;AAOiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridMenuButton.js","names":["Button","ButtonProps","styles","GridMenuButton","props","$","_c","t0","button"],"sources":["../../../../../src/components/DataGrid/components/GridMenuButton/GridMenuButton.tsx"],"sourcesContent":["import Button, { ButtonProps } from '@mui/material/Button'\nimport styles from './GridMenuButton.module.scss'\n\nexport default function GridMenuButton(props: ButtonProps) {\n return <Button {...props} className={styles.button} />\n}\n"],"mappings":";;;;;AAGA,SAAeG,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;AACyC,QADzCF,EAAA,OAAAD,IACyCG,IAAAF,EAAA,MAA/CE,IAAA,kBAAC,GAAD;EAAO,GAAKH;EAAkB,WAAAF,EAAMM;EAAW,CAAA,EAAAH,EAAA,KAAAD,GAAAC,EAAA,KAAAE,IAA/CA"}
1
+ {"version":3,"file":"GridMenuButton.js","names":["Button","ButtonProps","styles","GridMenuButton","props","$","_c","t0","button"],"sources":["../../../../../src/components/DataGrid/components/GridMenuButton/GridMenuButton.tsx"],"sourcesContent":["import Button, { ButtonProps } from '@mui/material/Button'\nimport styles from './GridMenuButton.module.scss'\n\nexport default function GridMenuButton(props: ButtonProps) {\n return <Button {...props} className={styles.button} />\n}\n"],"mappings":";;;;;AAGA,SAAeG,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CACyC,OADzCF,EAAA,OAAAD,IACyCG,IAAAF,EAAA,MAA/CE,IAAA,kBAAC,GAAD;EAAO,GAAKH;EAAkB,WAAAF,EAAMM;CAAO,CAAA,GAAIH,EAAA,KAAAD,GAAAC,EAAA,KAAAE,IAA/CA;AAA+C"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridSessionSelectionField.js","names":["displayToast","useDeleteGridSession","useGetGridSessionsInfinite","Autocomplete","Grid","MenuItem","TextField","GridSession","noop","useMemo","GridSessionSelectionFieldProps","inputValue","onInputValueChange","value","onConfirmInput","onSessionChange","session","onReplicaChange","replicaId","GridSessionSelectionField","props","$","_c","t0","t1","t2","undefined","t3","Symbol","for","data","t4","onSuccess","_data","sessionId","onError","_temp","mutate","deleteSession","t5","pages","flatMap","_temp2","availableSessions","t6","_e","t7","_e_0","value_0","t8","e","key","t9","props_0","display","padding","cursor","borderBottom","justifyContent","textOverflow","overflow","whiteSpace","xs","md","sourceEntityId","gridJsonSchema$Id","marginLeft","color","fontSize","userSelect","e_0","stopPropagation","t10","_temp3","_temp4","option","params","page","error","reason"],"sources":["../../../../src/components/DataGrid/components/GridSessionSelectionField.tsx"],"sourcesContent":["import { displayToast } from '@/components/ToastMessage/ToastMessage'\nimport {\n useDeleteGridSession,\n useGetGridSessionsInfinite,\n} from '@/synapse-queries/grid/useGridSession'\nimport { Autocomplete, Grid, MenuItem, TextField } from '@mui/material'\nimport { GridSession } from '@sage-bionetworks/synapse-client'\nimport noop from 'lodash-es/noop'\nimport { useMemo } from 'react'\n\ntype GridSessionSelectionFieldProps = {\n inputValue: string\n onInputValueChange: (value: string) => void\n onConfirmInput?: (value: string) => void\n onSessionChange?: (session: GridSession | null) => void\n onReplicaChange?: (replicaId: number | null) => void\n}\n\n/**\n * Utility form field to pick the grid session from existing sessions. Currently, for testing/demo purposes only.\n */\nexport default function GridSessionSelectionField(\n props: GridSessionSelectionFieldProps,\n) {\n const {\n inputValue,\n onInputValueChange,\n onConfirmInput = noop,\n onSessionChange = noop,\n onReplicaChange = noop,\n } = props\n\n const { data } = useGetGridSessionsInfinite({})\n\n const { mutate: deleteSession } = useDeleteGridSession({\n onSuccess: (_data, sessionId) => {\n displayToast(`Successfully deleted grid session ${sessionId}`, 'success')\n onSessionChange(null)\n onReplicaChange(null)\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n },\n })\n const availableSessions = useMemo(\n () => data?.pages.flatMap(page => page.page || []) || [],\n [data],\n )\n\n return (\n <Autocomplete\n freeSolo\n fullWidth\n renderInput={params => (\n <TextField\n {...params}\n label={'SQL Query or Session ID'}\n placeholder=\"Enter a SQL query, RecordSet ID, or session ID\"\n />\n )}\n options={availableSessions}\n getOptionLabel={option =>\n typeof option === 'string' ? option : option.sessionId || ''\n }\n value={inputValue}\n onInputChange={(_e, value) => {\n onInputValueChange(value)\n }}\n onChange={(_e, value) => {\n if (value && typeof value === 'object') {\n onInputValueChange(value.sessionId || '')\n onConfirmInput(value.sessionId || '')\n } else {\n onInputValueChange(value || '')\n }\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n onConfirmInput(inputValue)\n }\n }}\n renderOption={(props, session) => (\n <MenuItem\n {...props}\n key={session.sessionId}\n style={{\n display: 'block',\n padding: '8px',\n cursor: 'pointer',\n borderBottom: '1px solid #eee',\n }}\n >\n <Grid\n container\n sx={{\n justifyContent: 'space-between',\n '& > *': {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n }}\n >\n <Grid size={{ xs: 6, md: 2 }}>{session.sessionId}</Grid>\n <Grid size={{ xs: 5, md: 2 }}>{session.sourceEntityId}</Grid>\n <Grid size={{ xs: 0, md: 6 }}>\n {session.gridJsonSchema$Id ?? 'No schema'}\n </Grid>\n <Grid size={{ xs: 1 }}>\n <span\n data-icon=\"delete\"\n title=\"Delete session\"\n style={{\n marginLeft: '8px',\n color: '#d32f2f',\n cursor: 'pointer',\n fontSize: '16px',\n userSelect: 'none',\n }}\n onClick={e => {\n e.stopPropagation()\n deleteSession(session.sessionId!)\n }}\n >\n 🗑️\n </span>\n </Grid>\n </Grid>\n </MenuItem>\n )}\n />\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"GridSessionSelectionField.js","names":["displayToast","useDeleteGridSession","useGetGridSessionsInfinite","Autocomplete","Grid","MenuItem","TextField","GridSession","noop","useMemo","GridSessionSelectionFieldProps","inputValue","onInputValueChange","value","onConfirmInput","onSessionChange","session","onReplicaChange","replicaId","GridSessionSelectionField","props","$","_c","t0","t1","t2","undefined","t3","Symbol","for","data","t4","onSuccess","_data","sessionId","onError","_temp","mutate","deleteSession","t5","pages","flatMap","_temp2","availableSessions","t6","_e","t7","_e_0","value_0","t8","e","key","t9","props_0","display","padding","cursor","borderBottom","justifyContent","textOverflow","overflow","whiteSpace","xs","md","sourceEntityId","gridJsonSchema$Id","marginLeft","color","fontSize","userSelect","e_0","stopPropagation","t10","_temp3","_temp4","option","params","page","error","reason"],"sources":["../../../../src/components/DataGrid/components/GridSessionSelectionField.tsx"],"sourcesContent":["import { displayToast } from '@/components/ToastMessage/ToastMessage'\nimport {\n useDeleteGridSession,\n useGetGridSessionsInfinite,\n} from '@/synapse-queries/grid/useGridSession'\nimport { Autocomplete, Grid, MenuItem, TextField } from '@mui/material'\nimport { GridSession } from '@sage-bionetworks/synapse-client'\nimport noop from 'lodash-es/noop'\nimport { useMemo } from 'react'\n\ntype GridSessionSelectionFieldProps = {\n inputValue: string\n onInputValueChange: (value: string) => void\n onConfirmInput?: (value: string) => void\n onSessionChange?: (session: GridSession | null) => void\n onReplicaChange?: (replicaId: number | null) => void\n}\n\n/**\n * Utility form field to pick the grid session from existing sessions. Currently, for testing/demo purposes only.\n */\nexport default function GridSessionSelectionField(\n props: GridSessionSelectionFieldProps,\n) {\n const {\n inputValue,\n onInputValueChange,\n onConfirmInput = noop,\n onSessionChange = noop,\n onReplicaChange = noop,\n } = props\n\n const { data } = useGetGridSessionsInfinite({})\n\n const { mutate: deleteSession } = useDeleteGridSession({\n onSuccess: (_data, sessionId) => {\n displayToast(`Successfully deleted grid session ${sessionId}`, 'success')\n onSessionChange(null)\n onReplicaChange(null)\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n },\n })\n const availableSessions = useMemo(\n () => data?.pages.flatMap(page => page.page || []) || [],\n [data],\n )\n\n return (\n <Autocomplete\n freeSolo\n fullWidth\n renderInput={params => (\n <TextField\n {...params}\n label={'SQL Query or Session ID'}\n placeholder=\"Enter a SQL query, RecordSet ID, or session ID\"\n />\n )}\n options={availableSessions}\n getOptionLabel={option =>\n typeof option === 'string' ? option : option.sessionId || ''\n }\n value={inputValue}\n onInputChange={(_e, value) => {\n onInputValueChange(value)\n }}\n onChange={(_e, value) => {\n if (value && typeof value === 'object') {\n onInputValueChange(value.sessionId || '')\n onConfirmInput(value.sessionId || '')\n } else {\n onInputValueChange(value || '')\n }\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n onConfirmInput(inputValue)\n }\n }}\n renderOption={(props, session) => (\n <MenuItem\n {...props}\n key={session.sessionId}\n style={{\n display: 'block',\n padding: '8px',\n cursor: 'pointer',\n borderBottom: '1px solid #eee',\n }}\n >\n <Grid\n container\n sx={{\n justifyContent: 'space-between',\n '& > *': {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n }}\n >\n <Grid size={{ xs: 6, md: 2 }}>{session.sessionId}</Grid>\n <Grid size={{ xs: 5, md: 2 }}>{session.sourceEntityId}</Grid>\n <Grid size={{ xs: 0, md: 6 }}>\n {session.gridJsonSchema$Id ?? 'No schema'}\n </Grid>\n <Grid size={{ xs: 1 }}>\n <span\n data-icon=\"delete\"\n title=\"Delete session\"\n style={{\n marginLeft: '8px',\n color: '#d32f2f',\n cursor: 'pointer',\n fontSize: '16px',\n userSelect: 'none',\n }}\n onClick={e => {\n e.stopPropagation()\n deleteSession(session.sessionId!)\n }}\n >\n 🗑️\n </span>\n </Grid>\n </Grid>\n </MenuItem>\n )}\n />\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadCsvToGridButton.js","names":["GridMenuButton","UploadCsvToGridDialog","useGetEntity","UploadTwoTone","Skeleton","instanceOfRecordSet","useState","UploadCsvToGridButtonProps","sourceEntityId","gridSessionId","UploadCsvToGridButton","props","$","_c","showDialog","setShowDialog","data","entity","isLoading","isLoadingEntity","t0","Symbol","for","t1","t2","t3"],"sources":["../../../../src/components/DataGrid/components/UploadCsvToGridButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport UploadCsvToGridDialog from '@/components/DataGrid/components/UploadCsvToGridDialog'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { UploadTwoTone } from '@mui/icons-material'\nimport Skeleton from '@mui/material/Skeleton'\nimport { instanceOfRecordSet } from '@sage-bionetworks/synapse-client'\nimport { useState } from 'react'\n\nexport type UploadCsvToGridButtonProps = {\n sourceEntityId: string\n gridSessionId: string\n}\n\nexport default function UploadCsvToGridButton(\n props: UploadCsvToGridButtonProps,\n) {\n const { sourceEntityId, gridSessionId } = props\n\n const [showDialog, setShowDialog] = useState(false)\n\n const { data: entity, isLoading: isLoadingEntity } =\n useGetEntity(sourceEntityId)\n\n if (isLoadingEntity) {\n return <Skeleton variant=\"rectangular\" width={100} />\n }\n if (entity && !instanceOfRecordSet(entity)) {\n // Currently, grid upload is only supported for record sets\n return null\n }\n\n return (\n <>\n {showDialog && (\n // Explicitly unmount the dialog when it is closed so that its state is reset\n // This prevents a user from getting stuck in an error state/uploading the wrong CSV\n <UploadCsvToGridDialog\n gridSessionId={gridSessionId}\n open={showDialog}\n onClose={() => setShowDialog(false)}\n onComplete={() => setShowDialog(false)}\n />\n )}\n <GridMenuButton\n onClick={() => {\n setShowDialog(true)\n }}\n variant=\"outlined\"\n startIcon={<UploadTwoTone />}\n >\n Upload\n </GridMenuButton>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;AAaA,SAAeU,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAGb,EAAAL,mBAAAC,qBAA0CE,GAE1C,CAAAG,GAAAC,KAAoCT,EAAS,GAAM,EAEnD,EAAAU,MAAAC,GAAAC,WAAAC,MACEjB,EAAaM,EAAe;AAE9B,KAAIW,GAAe;EAAA,IAAAC;AACoC,SADpCR,EAAA,OAAAS,OAAAC,IAAA,4BAAA,IACVF,IAAA,kBAAC,GAAD;GAAkB,SAAA;GAAqB,OAAA;GAAO,CAAA,EAAAR,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAA9CQ;;AAET,KAAIH,KAAA,CAAWZ,EAAoBY,EAAO,CAAA,QAEjC;CACR,IAAAG;AAAA,CAAAR,EAAA,OAAAH,KAAAG,EAAA,OAAAE,KAIIM,IAAAN,KAGC,kBAAC,GAAD;EACiBL;EACTK,MAAAA;EACG,eAAMC,EAAc,GAAK;EACtB,kBAAMA,EAAc,GAAK;EAExC,CAAA,EAAAH,EAAA,KAAAH,GAAAG,EAAA,KAAAE,GAAAF,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAAA,IAAAW;AAAA,CAAAX,EAAA,OAAAS,OAAAC,IAAA,4BAAA,IAEUC,UAAA;AACPR,IAAc,GAAK;IACpBH,EAAA,KAAAW,KAAAA,IAAAX,EAAA;CAAA,IAAAY;AAAA,CAAAZ,EAAA,OAAAS,OAAAC,IAAA,4BAAA,IAHHE,IAAA,kBAAC,GAAD;EACW,SAAAD;EAGD,SAAA;EACG,WAAA,kBAAC,GAAD,EAAgB,CAAA;YAC5B;EAEgB,CAAA,EAAAX,EAAA,KAAAY,KAAAA,IAAAZ,EAAA;CAAA,IAAAa;AAChB,QADgBb,EAAA,OAAAQ,IAChBK,IAAAb,EAAA,MApBHa,IAAA,kBAAA,GAAA,EAAA,UAAA,CACGL,GAUDI,EASC,EAAA,CAAA,EAAAZ,EAAA,KAAAQ,GAAAR,EAAA,KAAAa,IApBHA"}
1
+ {"version":3,"file":"UploadCsvToGridButton.js","names":["GridMenuButton","UploadCsvToGridDialog","useGetEntity","UploadTwoTone","Skeleton","instanceOfRecordSet","useState","UploadCsvToGridButtonProps","sourceEntityId","gridSessionId","UploadCsvToGridButton","props","$","_c","showDialog","setShowDialog","data","entity","isLoading","isLoadingEntity","t0","Symbol","for","t1","t2","t3"],"sources":["../../../../src/components/DataGrid/components/UploadCsvToGridButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport UploadCsvToGridDialog from '@/components/DataGrid/components/UploadCsvToGridDialog'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { UploadTwoTone } from '@mui/icons-material'\nimport Skeleton from '@mui/material/Skeleton'\nimport { instanceOfRecordSet } from '@sage-bionetworks/synapse-client'\nimport { useState } from 'react'\n\nexport type UploadCsvToGridButtonProps = {\n sourceEntityId: string\n gridSessionId: string\n}\n\nexport default function UploadCsvToGridButton(\n props: UploadCsvToGridButtonProps,\n) {\n const { sourceEntityId, gridSessionId } = props\n\n const [showDialog, setShowDialog] = useState(false)\n\n const { data: entity, isLoading: isLoadingEntity } =\n useGetEntity(sourceEntityId)\n\n if (isLoadingEntity) {\n return <Skeleton variant=\"rectangular\" width={100} />\n }\n if (entity && !instanceOfRecordSet(entity)) {\n // Currently, grid upload is only supported for record sets\n return null\n }\n\n return (\n <>\n {showDialog && (\n // Explicitly unmount the dialog when it is closed so that its state is reset\n // This prevents a user from getting stuck in an error state/uploading the wrong CSV\n <UploadCsvToGridDialog\n gridSessionId={gridSessionId}\n open={showDialog}\n onClose={() => setShowDialog(false)}\n onComplete={() => setShowDialog(false)}\n />\n )}\n <GridMenuButton\n onClick={() => {\n setShowDialog(true)\n }}\n variant=\"outlined\"\n startIcon={<UploadTwoTone />}\n >\n Upload\n </GridMenuButton>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;AAaA,SAAeU,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAGb,EAAAL,mBAAAC,qBAA0CE,GAE1C,CAAAG,GAAAC,KAAoCT,EAAS,EAAK,GAElD,EAAAU,MAAAC,GAAAC,WAAAC,MACEjB,EAAaM,CAAc;CAE7B,IAAIW,GAAe;EAAA,IAAAC;EACoC,OADpCR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KACVF,IAAA,kBAAC,GAAD;GAAkB,SAAA;GAAqB,OAAA;EAAG,CAAA,GAAIR,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAA9CQ;CAA8C;CAEvD,IAAIH,KAAA,CAAWZ,EAAoBY,CAAM,GAAC,OAEjC;CACR,IAAAG;CAAA,AAAAR,EAAA,OAAAH,KAAAG,EAAA,OAAAE,KAIIM,IAAAN,KAGC,kBAAC,GAAD;EACiBL;EACTK,MAAAA;EACG,eAAMC,EAAc,EAAK;EACtB,kBAAMA,EAAc,EAAK;CAAC,CAAA,GAEzCH,EAAA,KAAAH,GAAAG,EAAA,KAAAE,GAAAF,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAAA,IAAAW;CAAA,AAAAX,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAEUC,UAAA;EACPR,EAAc,EAAI;CAAC,GACpBH,EAAA,KAAAW,KAAAA,IAAAX,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAHHE,IAAA,kBAAC,GAAD;EACW,SAAAD;EAGD,SAAA;EACG,WAAA,kBAAC,GAAD,CAAc,CAAA;YAC1B;CANc,CAAA,GAQEX,EAAA,KAAAY,KAAAA,IAAAZ,EAAA;CAAA,IAAAa;CAChB,OADgBb,EAAA,OAAAQ,IAChBK,IAAAb,EAAA,MApBHa,IAAA,kBAAA,GAAA,EAAA,UAAA,CACGL,GAUDI,CAQiB,EAAA,CAAA,GAChBZ,EAAA,KAAAQ,GAAAR,EAAA,KAAAa,IApBHA;AAoBG"}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadCsvToGridDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/UploadCsvToGridDialog.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAGxE,KAAK,0BAA0B,GAAG;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,YAAgB,EAChB,YAAgB,GACjB,EAAE,qBAAqB,GAAG,MAAM,CAchC;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAC3C,KAAK,EAAE,0BAA0B,2CAmClC"}
1
+ {"version":3,"file":"UploadCsvToGridDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/UploadCsvToGridDialog.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAGxE,KAAK,0BAA0B,GAAG;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,YAAgB,EAChB,YAAgB,GACjB,EAAE,qBAAqB,GAAG,MAAM,CAchC;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAC3C,KAAK,EAAE,0BAA0B,2CAoClC"}
@@ -11,12 +11,12 @@ function o({ createdCount: e = 0, updatedCount: t = 0 }) {
11
11
  return e > 0 && (n += `created ${e.toLocaleString()} rows`), e > 0 && t > 0 ? n += " and " : t == 0 && (n += "."), t > 0 && (n += `updated ${t.toLocaleString()} rows.`), a(n);
12
12
  }
13
13
  function s(a) {
14
- let s = i(11), { gridSessionId: c, open: l, onClose: u, onComplete: d } = a, f;
14
+ let s = i(12), { gridSessionId: c, open: l, onClose: u, onComplete: d } = a, f;
15
15
  s[0] === d ? f = s[1] : (f = { onSuccess: (t) => {
16
16
  e(o(t), "success", { title: "Data imported successfully" }), d();
17
17
  } }, s[0] = d, s[1] = f);
18
- let { mutate: p, isPending: m, error: h } = t(f), g;
19
- s[2] !== c || s[3] !== p ? (g = (e, t, n) => {
18
+ let { mutate: p, isPending: m, error: h } = t(f), g = String(l), _;
19
+ s[2] !== c || s[3] !== p ? (_ = (e, t, n) => {
20
20
  p({
21
21
  concreteType: "org.sagebionetworks.repo.model.grid.GridCsvImportRequest",
22
22
  sessionId: c,
@@ -24,15 +24,15 @@ function s(a) {
24
24
  csvDescriptor: n,
25
25
  schema: t
26
26
  });
27
- }, s[2] = c, s[3] = p, s[4] = g) : g = s[4];
28
- let _ = h?.message, v;
29
- return s[5] !== m || s[6] !== u || s[7] !== l || s[8] !== g || s[9] !== _ ? (v = /* @__PURE__ */ r(n, {
27
+ }, s[2] = c, s[3] = p, s[4] = _) : _ = s[4];
28
+ let v = h?.message, y;
29
+ return s[5] !== m || s[6] !== u || s[7] !== l || s[8] !== g || s[9] !== _ || s[10] !== v ? (y = /* @__PURE__ */ r(n, {
30
30
  open: l,
31
31
  onClose: u,
32
- onConfirm: g,
33
- errorMessage: _,
32
+ onConfirm: _,
33
+ errorMessage: v,
34
34
  confirmIsPending: m
35
- }), s[5] = m, s[6] = u, s[7] = l, s[8] = g, s[9] = _, s[10] = v) : v = s[10], v;
35
+ }, g), s[5] = m, s[6] = u, s[7] = l, s[8] = g, s[9] = _, s[10] = v, s[11] = y) : y = s[11], y;
36
36
  }
37
37
  //#endregion
38
38
  export { s as default, o as getUpdateMessage };
@@ -1 +1 @@
1
- {"version":3,"file":"UploadCsvToGridDialog.js","names":["displayToast","CsvPreviewDialog","useImportCsvIntoGrid","GridCsvImportResponse","upperFirst","UploadCsvToGridDialogProps","gridSessionId","open","onClose","onComplete","getUpdateMessage","createdCount","updatedCount","message","toLocaleString","UploadCsvToGridDialog","props","$","_c","t0","onSuccess","result","title","mutate","importCsvIntoGrid","isPending","error","t1","fileHandleId","schema","csvDescriptor","concreteType","sessionId","t2","t3"],"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"],"mappings":";;;;;;;;AAaA,SAAgBU,EAAiB,EAC/BC,kBAAe,GACfC,kBAAe,KACiB;CAChC,IAAIC,IAAU;AAYd,QAXIF,IAAe,MACjBE,KAAW,WAAWF,EAAaG,gBAAgB,CAAA,SAEjDH,IAAe,KAAKC,IAAe,IACrCC,KAAW,UACFD,KAAgB,MACzBC,KAAW,MAETD,IAAe,MACjBC,KAAW,WAAWD,EAAaE,gBAAgB,CAAA,UAE9CV,EAAWS,EAAQ;;AAG5B,SAAeE,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAGb,EAAAZ,kBAAAC,SAAAC,YAAAC,kBAAqDO,GAAKG;AAAA,CAAAF,EAAA,OAAAR,IAazDU,IAAAF,EAAA,MAPwBE,IAAA,EAAAC,YACZC,MAAA;AAITZ,EAHAT,EAAaU,EAAiBW,EAAO,EAAE,WAAW,EAAAC,OACzC,8BACR,CAAC,EACFb,GAAY;IAEf,EAAAQ,EAAA,KAAAR,GAAAQ,EAAA,KAAAE;CAXD,IAAA,EAAAI,QAAAC,GAAAC,cAAAC,aAIIxB,EAAqBiB,EAOvB,EAAAQ;AAAA,CAAAV,EAAA,OAAAX,KAAAW,EAAA,OAAAO,KAMaG,KAAAC,GAAAC,GAAAC,MAAA;AACTN,IAAkB;GAAAO,cAEd;GAA0DC,WACjD1B;GAAasB;GAAAE;GAAAD;GAIzB,CAAC;IACHZ,EAAA,KAAAX,GAAAW,EAAA,KAAAO,GAAAP,EAAA,KAAAU,KAAAA,IAAAV,EAAA;CACa,IAAAgB,IAAAP,GAAKb,SAASqB;AAE5B,QAF4BjB,EAAA,OAAAQ,KAAAR,EAAA,OAAAT,KAAAS,EAAA,OAAAV,KAAAU,EAAA,OAAAU,KAAAV,EAAA,OAAAgB,KAb9BC,IAAA,kBAAC,GAAD;EACQ3B;EACGC;EACE,WAAAmB;EAUG,cAAAM;EACIR,kBAAAA;EAClB,CAAA,EAAAR,EAAA,KAAAQ,GAAAR,EAAA,KAAAT,GAAAS,EAAA,KAAAV,GAAAU,EAAA,KAAAU,GAAAV,EAAA,KAAAgB,GAAAhB,EAAA,MAAAiB,KAAAA,IAAAjB,EAAA,KAfFiB"}
1
+ {"version":3,"file":"UploadCsvToGridDialog.js","names":["displayToast","CsvPreviewDialog","useImportCsvIntoGrid","GridCsvImportResponse","upperFirst","UploadCsvToGridDialogProps","gridSessionId","open","onClose","onComplete","getUpdateMessage","createdCount","updatedCount","message","toLocaleString","UploadCsvToGridDialog","props","$","_c","t0","onSuccess","result","title","mutate","importCsvIntoGrid","isPending","error","t1","String","t2","fileHandleId","schema","csvDescriptor","concreteType","sessionId","t3","t4"],"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 key={String(open)}\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"],"mappings":";;;;;;;;AAaA,SAAgBU,EAAiB,EAC/BC,kBAAe,GACfC,kBAAe,KACiB;CAChC,IAAIC,IAAU;CAYd,OAXIF,IAAe,MACjBE,KAAW,WAAWF,EAAaG,eAAe,EAAC,SAEjDH,IAAe,KAAKC,IAAe,IACrCC,KAAW,UACFD,KAAgB,MACzBC,KAAW,MAETD,IAAe,MACjBC,KAAW,WAAWD,EAAaE,eAAe,EAAC,UAE9CV,EAAWS,CAAO;AAC3B;AAEA,SAAeE,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAGb,EAAAZ,kBAAAC,SAAAC,YAAAC,kBAAqDO,GAAKG;CAAA,AAAAF,EAAA,OAAAR,IAazDU,IAAAF,EAAA,MAPwBE,IAAA,EAAAC,YACZC,MAAA;EAITZ,AAHAT,EAAaU,EAAiBW,CAAM,GAAG,WAAW,EAAAC,OACzC,6BACT,CAAC,GACDb,EAAW;CAAC,EAEhB,GAACQ,EAAA,KAAAR,GAAAQ,EAAA,KAAAE;CAXD,IAAA,EAAAI,QAAAC,GAAAC,cAAAC,aAIIxB,EAAqBiB,CAOxB,GAIQQ,IAAAC,OAAOrB,CAAI,GAACsB;CAAA,AAAAZ,EAAA,OAAAX,KAAAW,EAAA,OAAAO,KAGNK,KAAAC,GAAAC,GAAAC,MAAA;EACTR,EAAkB;GAAAS,cAEd;GAA0DC,WACjD5B;GAAawB;GAAAE;GAAAD;EAI1B,CAAC;CAAC,GACHd,EAAA,KAAAX,GAAAW,EAAA,KAAAO,GAAAP,EAAA,KAAAY,KAAAA,IAAAZ,EAAA;CACa,IAAAkB,IAAAT,GAAKb,SAASuB;CAE5B,OAF4BnB,EAAA,OAAAQ,KAAAR,EAAA,OAAAT,KAAAS,EAAA,OAAAV,KAAAU,EAAA,OAAAU,KAAAV,EAAA,OAAAY,KAAAZ,EAAA,QAAAkB,KAd9BC,IAAA,kBAAC,GAAD;EAEQ7B;EACGC;EACE,WAAAqB;EAUG,cAAAM;EACIV,kBAAAA;CAAS,GAdtBE,CAcsB,GAC3BV,EAAA,KAAAQ,GAAAR,EAAA,KAAAT,GAAAS,EAAA,KAAAV,GAAAU,EAAA,KAAAU,GAAAV,EAAA,KAAAY,GAAAZ,EAAA,MAAAkB,GAAAlB,EAAA,MAAAmB,KAAAA,IAAAnB,EAAA,KAhBFmB;AAgBE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationAlert.js","names":["DataGridRow","Box","Chip","Collapse","Divider","Link","Stack","Tab","Tabs","Typography","Fragment","useMemo","useState","SynapseSpinner","ValidationError","rowIndex","columnName","message","pending","RowEntry","GroupBy","ValidationAlertProps","rowValues","columnNames","columnOrder","onNavigateToCell","colIndex","isLoading","NavProps","getColDisplayIndex","colName","findIndex","i","colLabel","ErrorText","t0","$","_c","rowSuffix","t1","Symbol","for","fontWeight","t2","t3","t4","t5","rowLinkSx","textDecoration","cursor","const","bannerBaseSx","border","borderLeft","borderRadius","mb","tabSx","minHeight","py","groupSectionHeaderSx","display","alignItems","gap","groupSectionItemSx","pl","flexWrap","RowLinks","rows","navCol","j","color","userSelect","opacity","map","ByColumnTab","groups","Array","from","entries","messages","totalCount","values","reduce","_temp","Math","max","msg","rows_0","mr","sum","length","ByMessageTab","columns","_temp2","fontStyle","ValidationAlert","undefined","isExpanded","setIsExpanded","groupBy","setGroupBy","errors","forEach","row","status","__validationStatus","__cellValidationResults","push","allErrors","Map","rowIndex_0","columnName_0","message_0","pending_0","has","set","colGroup","get","byColumn","groups_0","rowIndex_1","columnName_1","message_1","pending_1","msgGroup","byMessage","shouldExpand","firstError","borderColor","borderLeftColor","px","t6","t7","_temp3","flexShrink","t8","t9","t10","textAlign","ml","t11","t12","_","v","t13","t14","t15","t16","t17","borderTop","style","height","t18","t19","maxHeight","overflowY","t20","error","t21","t22","t23","t24","t25","p"],"sources":["../../../../src/components/DataGrid/components/ValidationAlert.tsx"],"sourcesContent":["import { DataGridRow } from '../DataGridTypes'\nimport {\n Box,\n Chip,\n Collapse,\n Divider,\n Link,\n Stack,\n Tab,\n Tabs,\n Typography,\n} from '@mui/material'\nimport { Fragment, useMemo, useState } from 'react'\nimport { SynapseSpinner } from '../../LoadingScreen/LoadingScreen'\n\ntype ValidationError = {\n rowIndex: number\n columnName: string\n message: string\n pending: boolean\n}\n\ntype RowEntry = { rowIndex: number; pending: boolean }\n\ntype GroupBy = 'row' | 'column' | 'message'\n\ntype ValidationAlertProps = {\n rowValues: DataGridRow[]\n columnNames: string[]\n columnOrder: number[]\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n isLoading?: boolean\n}\n\ntype NavProps = {\n columnNames: string[]\n columnOrder: number[]\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n}\n\nfunction getColDisplayIndex(\n colName: string,\n columnNames: string[],\n columnOrder: number[],\n): number {\n return columnOrder.findIndex(i => columnNames[i] === colName)\n}\n\n/** Column name for display — '_row' becomes 'Row-level'. */\nfunction colLabel(colName: string): string {\n return colName === '_row' ? 'Row-level' : colName\n}\n\n/** Renders a column name + message pair with distinct styles. */\nfunction ErrorText({\n columnName,\n message,\n rowIndex,\n}: {\n columnName: string\n message: string\n rowIndex: number\n}) {\n const rowSuffix = ` (Row ${rowIndex + 1})`\n if (columnName === '_row') {\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 'normal' }}>\n {message}\n {rowSuffix}\n </Box>\n </>\n )\n }\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 'bold' }}>\n {columnName}\n </Box>\n <Box component=\"span\" sx={{ fontWeight: 'normal' }}>\n {' — '}\n {message}\n {rowSuffix}\n </Box>\n </>\n )\n}\n\nconst rowLinkSx = {\n textDecoration: 'none',\n cursor: 'pointer',\n '&:hover': { textDecoration: 'underline' },\n} as const\n\nconst bannerBaseSx = {\n border: '1px solid',\n borderLeft: '4px solid',\n borderRadius: 1,\n mb: 1,\n} as const\n\nconst tabSx = { minHeight: 36, py: 0.5 } as const\n\nconst groupSectionHeaderSx = {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n mb: 0.25,\n} as const\n\nconst groupSectionItemSx = {\n pl: 2,\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n gap: 0.5,\n py: 0.25,\n} as const\n\n/** Renders a list of row number links. The first shows \"Row N\"; subsequent\n * items show only the number, separated by a middle dot.\n * Pending entries are dimmed to signal unconfirmed validation state. */\nfunction RowLinks({\n rows,\n navCol,\n onNavigateToCell,\n}: {\n rows: RowEntry[]\n navCol: number\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n}) {\n return (\n <>\n {rows.map(({ rowIndex, pending }, j) => (\n <Fragment key={rowIndex}>\n {j > 0 && (\n <Box\n component=\"span\"\n aria-hidden\n sx={{ color: 'text.disabled', userSelect: 'none' }}\n >\n ·\n </Box>\n )}\n <Link\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() => onNavigateToCell(rowIndex, navCol)}\n sx={{ ...rowLinkSx, opacity: pending ? 0.5 : 1 }}\n >\n {j === 0 ? `Row ${rowIndex + 1}` : rowIndex + 1}\n </Link>\n </Fragment>\n ))}\n </>\n )\n}\n\nfunction ByColumnTab({\n groups,\n columnNames,\n columnOrder,\n onNavigateToCell,\n}: NavProps & { groups: Map<string, Map<string, RowEntry[]>> }) {\n return (\n <Stack divider={<Divider />} spacing={1}>\n {Array.from(groups.entries()).map(([colName, messages]) => {\n const totalCount = Array.from(messages.values()).reduce(\n (sum, rows) => sum + rows.length,\n 0,\n )\n const navCol = Math.max(\n 0,\n getColDisplayIndex(colName, columnNames, columnOrder),\n )\n return (\n <Box key={colName}>\n <Box sx={groupSectionHeaderSx}>\n <Typography variant=\"body1\" fontWeight=\"bold\">\n {colLabel(colName)}\n </Typography>\n <Chip label={totalCount} color=\"error\" size=\"small\" />\n </Box>\n {Array.from(messages.entries()).map(([msg, rows]) => (\n <Box key={msg} sx={groupSectionItemSx}>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mr: 0.5 }}\n >\n {msg}\n </Typography>\n <RowLinks\n rows={rows}\n navCol={navCol}\n onNavigateToCell={onNavigateToCell}\n />\n </Box>\n ))}\n </Box>\n )\n })}\n </Stack>\n )\n}\n\nfunction ByMessageTab({\n groups,\n columnNames,\n columnOrder,\n onNavigateToCell,\n}: NavProps & { groups: Map<string, Map<string, RowEntry[]>> }) {\n return (\n <Stack divider={<Divider />} spacing={1}>\n {Array.from(groups.entries()).map(([msg, columns]) => {\n const totalCount = Array.from(columns.values()).reduce(\n (sum, rows) => sum + rows.length,\n 0,\n )\n return (\n <Box key={msg}>\n <Box sx={groupSectionHeaderSx}>\n <Typography variant=\"body1\" fontWeight=\"bold\">\n {msg}\n </Typography>\n <Chip label={totalCount} color=\"error\" size=\"small\" />\n </Box>\n {Array.from(columns.entries()).map(([colName, rows]) => {\n const navCol = Math.max(\n 0,\n getColDisplayIndex(colName, columnNames, columnOrder),\n )\n return (\n <Box key={colName} sx={groupSectionItemSx}>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mr: 0.5, fontStyle: 'italic' }}\n >\n {colLabel(colName)}\n </Typography>\n <RowLinks\n rows={rows}\n navCol={navCol}\n onNavigateToCell={onNavigateToCell}\n />\n </Box>\n )\n })}\n </Box>\n )\n })}\n </Stack>\n )\n}\n\nexport const ValidationAlert = ({\n rowValues,\n columnNames,\n columnOrder,\n onNavigateToCell,\n isLoading = false,\n}: ValidationAlertProps) => {\n const [isExpanded, setIsExpanded] = useState(false)\n const [groupBy, setGroupBy] = useState<GroupBy>('row')\n\n const allErrors = useMemo((): ValidationError[] => {\n const errors: ValidationError[] = []\n rowValues.forEach((row, rowIndex) => {\n const status = row.__validationStatus\n if (status !== 'invalid' && status !== 'pending') return\n const pending = status === 'pending'\n row.__cellValidationResults?.forEach((messages, columnName) => {\n messages.forEach(message =>\n errors.push({ rowIndex, columnName, message, pending }),\n )\n })\n })\n return errors\n }, [rowValues])\n\n // columnName → messageText → RowEntry[]\n const byColumn = useMemo(() => {\n const groups = new Map<string, Map<string, RowEntry[]>>()\n allErrors.forEach(({ rowIndex, columnName, message, pending }) => {\n if (!groups.has(columnName)) groups.set(columnName, new Map())\n const colGroup = groups.get(columnName)!\n if (!colGroup.has(message)) colGroup.set(message, [])\n colGroup.get(message)!.push({ rowIndex, pending })\n })\n return groups\n }, [allErrors])\n\n // messageText → columnName → RowEntry[]\n const byMessage = useMemo(() => {\n const groups = new Map<string, Map<string, RowEntry[]>>()\n allErrors.forEach(({ rowIndex, columnName, message, pending }) => {\n if (!groups.has(message)) groups.set(message, new Map())\n const msgGroup = groups.get(message)!\n if (!msgGroup.has(columnName)) msgGroup.set(columnName, [])\n msgGroup.get(columnName)!.push({ rowIndex, pending })\n })\n return groups\n }, [allErrors])\n\n const shouldExpand = isExpanded && allErrors.length > 0\n\n const firstError = allErrors[0]\n\n if (isLoading) {\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'divider',\n borderLeftColor: 'divider',\n px: 2,\n py: 2,\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <SynapseSpinner size={14} margin=\"0\" />\n <Typography variant=\"body1\" color=\"text.secondary\">\n Loading validation errors…\n </Typography>\n </Box>\n )\n }\n\n if (allErrors.length === 0) {\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'success.main',\n borderLeftColor: 'success.main',\n px: 2,\n py: 2,\n }}\n >\n <Typography variant=\"body1\" color=\"success.main\">\n No validation errors\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'error.main',\n borderLeftColor: 'error.main',\n }}\n >\n {/* Header */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 2,\n py: 2,\n gap: 1,\n }}\n >\n <Typography variant=\"body1\" fontWeight=\"bold\">\n Validation errors\n </Typography>\n <Chip label={allErrors.length} color=\"error\" size=\"small\" />\n <Link\n component=\"button\"\n variant=\"body1\"\n onClick={() => setIsExpanded(p => !p)}\n sx={{ cursor: 'pointer', flexShrink: 0, fontWeight: 'normal' }}\n >\n {shouldExpand ? 'Collapse' : 'Expand'}\n </Link>\n {!shouldExpand && (\n <Link\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() =>\n onNavigateToCell(\n firstError.rowIndex,\n Math.max(\n 0,\n getColDisplayIndex(\n firstError.columnName,\n columnNames,\n columnOrder,\n ),\n ),\n )\n }\n noWrap\n sx={{\n textAlign: 'left',\n ml: 'auto',\n ...rowLinkSx,\n opacity: firstError.pending ? 0.5 : 1,\n }}\n >\n <ErrorText\n columnName={firstError.columnName}\n message={firstError.message}\n rowIndex={firstError.rowIndex}\n />\n </Link>\n )}\n </Box>\n\n {/* Expanded panel */}\n <Collapse in={shouldExpand}>\n <Tabs\n value={groupBy}\n onChange={(_, v: GroupBy) => setGroupBy(v)}\n textColor=\"inherit\"\n sx={{\n px: 2,\n minHeight: 36,\n borderTop: '1px solid',\n borderColor: 'divider',\n }}\n TabIndicatorProps={{ style: { height: 2 } }}\n >\n <Tab label=\"By row\" value=\"row\" sx={tabSx} />\n <Tab label=\"By column\" value=\"column\" sx={tabSx} />\n <Tab label=\"By message\" value=\"message\" sx={tabSx} />\n </Tabs>\n\n <Box sx={{ px: 2, py: 1, maxHeight: 200, overflowY: 'auto' }}>\n {/* ── By row ─────────────────────────────────────────── */}\n {groupBy === 'row' && (\n <Stack divider={<Divider />}>\n {allErrors.map((error, i) => {\n const navCol = Math.max(\n 0,\n getColDisplayIndex(\n error.columnName,\n columnNames,\n columnOrder,\n ),\n )\n return (\n <Link\n key={i}\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() => onNavigateToCell(error.rowIndex, navCol)}\n sx={{\n textAlign: 'left',\n py: 0.5,\n ...rowLinkSx,\n opacity: error.pending ? 0.5 : 1,\n }}\n >\n <ErrorText\n columnName={error.columnName}\n message={error.message}\n rowIndex={error.rowIndex}\n />\n </Link>\n )\n })}\n </Stack>\n )}\n\n {/* ── By column ──────────────────────────────────────── */}\n {groupBy === 'column' && (\n <ByColumnTab\n groups={byColumn}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={onNavigateToCell}\n />\n )}\n\n {/* ── By message ─────────────────────────────────────── */}\n {groupBy === 'message' && (\n <ByMessageTab\n groups={byMessage}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={onNavigateToCell}\n />\n )}\n </Box>\n </Collapse>\n </Box>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ValidationAlert.js","names":["DataGridRow","Box","Chip","Collapse","Divider","Link","Stack","Tab","Tabs","Typography","Fragment","useMemo","useState","SynapseSpinner","ValidationError","rowIndex","columnName","message","pending","RowEntry","GroupBy","ValidationAlertProps","rowValues","columnNames","columnOrder","onNavigateToCell","colIndex","isLoading","NavProps","getColDisplayIndex","colName","findIndex","i","colLabel","ErrorText","t0","$","_c","rowSuffix","t1","Symbol","for","fontWeight","t2","t3","t4","t5","rowLinkSx","textDecoration","cursor","const","bannerBaseSx","border","borderLeft","borderRadius","mb","tabSx","minHeight","py","groupSectionHeaderSx","display","alignItems","gap","groupSectionItemSx","pl","flexWrap","RowLinks","rows","navCol","j","color","userSelect","opacity","map","ByColumnTab","groups","Array","from","entries","messages","totalCount","values","reduce","_temp","Math","max","msg","rows_0","mr","sum","length","ByMessageTab","columns","_temp2","fontStyle","ValidationAlert","undefined","isExpanded","setIsExpanded","groupBy","setGroupBy","errors","forEach","row","status","__validationStatus","__cellValidationResults","push","allErrors","Map","rowIndex_0","columnName_0","message_0","pending_0","has","set","colGroup","get","byColumn","groups_0","rowIndex_1","columnName_1","message_1","pending_1","msgGroup","byMessage","shouldExpand","firstError","borderColor","borderLeftColor","px","t6","t7","_temp3","flexShrink","t8","t9","t10","textAlign","ml","t11","t12","_","v","t13","t14","t15","t16","t17","borderTop","style","height","t18","t19","maxHeight","overflowY","t20","error","t21","t22","t23","t24","t25","p"],"sources":["../../../../src/components/DataGrid/components/ValidationAlert.tsx"],"sourcesContent":["import { DataGridRow } from '../DataGridTypes'\nimport {\n Box,\n Chip,\n Collapse,\n Divider,\n Link,\n Stack,\n Tab,\n Tabs,\n Typography,\n} from '@mui/material'\nimport { Fragment, useMemo, useState } from 'react'\nimport { SynapseSpinner } from '../../LoadingScreen/LoadingScreen'\n\ntype ValidationError = {\n rowIndex: number\n columnName: string\n message: string\n pending: boolean\n}\n\ntype RowEntry = { rowIndex: number; pending: boolean }\n\ntype GroupBy = 'row' | 'column' | 'message'\n\ntype ValidationAlertProps = {\n rowValues: DataGridRow[]\n columnNames: string[]\n columnOrder: number[]\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n isLoading?: boolean\n}\n\ntype NavProps = {\n columnNames: string[]\n columnOrder: number[]\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n}\n\nfunction getColDisplayIndex(\n colName: string,\n columnNames: string[],\n columnOrder: number[],\n): number {\n return columnOrder.findIndex(i => columnNames[i] === colName)\n}\n\n/** Column name for display — '_row' becomes 'Row-level'. */\nfunction colLabel(colName: string): string {\n return colName === '_row' ? 'Row-level' : colName\n}\n\n/** Renders a column name + message pair with distinct styles. */\nfunction ErrorText({\n columnName,\n message,\n rowIndex,\n}: {\n columnName: string\n message: string\n rowIndex: number\n}) {\n const rowSuffix = ` (Row ${rowIndex + 1})`\n if (columnName === '_row') {\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 'normal' }}>\n {message}\n {rowSuffix}\n </Box>\n </>\n )\n }\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 'bold' }}>\n {columnName}\n </Box>\n <Box component=\"span\" sx={{ fontWeight: 'normal' }}>\n {' — '}\n {message}\n {rowSuffix}\n </Box>\n </>\n )\n}\n\nconst rowLinkSx = {\n textDecoration: 'none',\n cursor: 'pointer',\n '&:hover': { textDecoration: 'underline' },\n} as const\n\nconst bannerBaseSx = {\n border: '1px solid',\n borderLeft: '4px solid',\n borderRadius: 1,\n mb: 1,\n} as const\n\nconst tabSx = { minHeight: 36, py: 0.5 } as const\n\nconst groupSectionHeaderSx = {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n mb: 0.25,\n} as const\n\nconst groupSectionItemSx = {\n pl: 2,\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n gap: 0.5,\n py: 0.25,\n} as const\n\n/** Renders a list of row number links. The first shows \"Row N\"; subsequent\n * items show only the number, separated by a middle dot.\n * Pending entries are dimmed to signal unconfirmed validation state. */\nfunction RowLinks({\n rows,\n navCol,\n onNavigateToCell,\n}: {\n rows: RowEntry[]\n navCol: number\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n}) {\n return (\n <>\n {rows.map(({ rowIndex, pending }, j) => (\n <Fragment key={rowIndex}>\n {j > 0 && (\n <Box\n component=\"span\"\n aria-hidden\n sx={{ color: 'text.disabled', userSelect: 'none' }}\n >\n ·\n </Box>\n )}\n <Link\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() => onNavigateToCell(rowIndex, navCol)}\n sx={{ ...rowLinkSx, opacity: pending ? 0.5 : 1 }}\n >\n {j === 0 ? `Row ${rowIndex + 1}` : rowIndex + 1}\n </Link>\n </Fragment>\n ))}\n </>\n )\n}\n\nfunction ByColumnTab({\n groups,\n columnNames,\n columnOrder,\n onNavigateToCell,\n}: NavProps & { groups: Map<string, Map<string, RowEntry[]>> }) {\n return (\n <Stack divider={<Divider />} spacing={1}>\n {Array.from(groups.entries()).map(([colName, messages]) => {\n const totalCount = Array.from(messages.values()).reduce(\n (sum, rows) => sum + rows.length,\n 0,\n )\n const navCol = Math.max(\n 0,\n getColDisplayIndex(colName, columnNames, columnOrder),\n )\n return (\n <Box key={colName}>\n <Box sx={groupSectionHeaderSx}>\n <Typography variant=\"body1\" fontWeight=\"bold\">\n {colLabel(colName)}\n </Typography>\n <Chip label={totalCount} color=\"error\" size=\"small\" />\n </Box>\n {Array.from(messages.entries()).map(([msg, rows]) => (\n <Box key={msg} sx={groupSectionItemSx}>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mr: 0.5 }}\n >\n {msg}\n </Typography>\n <RowLinks\n rows={rows}\n navCol={navCol}\n onNavigateToCell={onNavigateToCell}\n />\n </Box>\n ))}\n </Box>\n )\n })}\n </Stack>\n )\n}\n\nfunction ByMessageTab({\n groups,\n columnNames,\n columnOrder,\n onNavigateToCell,\n}: NavProps & { groups: Map<string, Map<string, RowEntry[]>> }) {\n return (\n <Stack divider={<Divider />} spacing={1}>\n {Array.from(groups.entries()).map(([msg, columns]) => {\n const totalCount = Array.from(columns.values()).reduce(\n (sum, rows) => sum + rows.length,\n 0,\n )\n return (\n <Box key={msg}>\n <Box sx={groupSectionHeaderSx}>\n <Typography variant=\"body1\" fontWeight=\"bold\">\n {msg}\n </Typography>\n <Chip label={totalCount} color=\"error\" size=\"small\" />\n </Box>\n {Array.from(columns.entries()).map(([colName, rows]) => {\n const navCol = Math.max(\n 0,\n getColDisplayIndex(colName, columnNames, columnOrder),\n )\n return (\n <Box key={colName} sx={groupSectionItemSx}>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mr: 0.5, fontStyle: 'italic' }}\n >\n {colLabel(colName)}\n </Typography>\n <RowLinks\n rows={rows}\n navCol={navCol}\n onNavigateToCell={onNavigateToCell}\n />\n </Box>\n )\n })}\n </Box>\n )\n })}\n </Stack>\n )\n}\n\nexport const ValidationAlert = ({\n rowValues,\n columnNames,\n columnOrder,\n onNavigateToCell,\n isLoading = false,\n}: ValidationAlertProps) => {\n const [isExpanded, setIsExpanded] = useState(false)\n const [groupBy, setGroupBy] = useState<GroupBy>('row')\n\n const allErrors = useMemo((): ValidationError[] => {\n const errors: ValidationError[] = []\n rowValues.forEach((row, rowIndex) => {\n const status = row.__validationStatus\n if (status !== 'invalid' && status !== 'pending') return\n const pending = status === 'pending'\n row.__cellValidationResults?.forEach((messages, columnName) => {\n messages.forEach(message =>\n errors.push({ rowIndex, columnName, message, pending }),\n )\n })\n })\n return errors\n }, [rowValues])\n\n // columnName → messageText → RowEntry[]\n const byColumn = useMemo(() => {\n const groups = new Map<string, Map<string, RowEntry[]>>()\n allErrors.forEach(({ rowIndex, columnName, message, pending }) => {\n if (!groups.has(columnName)) groups.set(columnName, new Map())\n const colGroup = groups.get(columnName)!\n if (!colGroup.has(message)) colGroup.set(message, [])\n colGroup.get(message)!.push({ rowIndex, pending })\n })\n return groups\n }, [allErrors])\n\n // messageText → columnName → RowEntry[]\n const byMessage = useMemo(() => {\n const groups = new Map<string, Map<string, RowEntry[]>>()\n allErrors.forEach(({ rowIndex, columnName, message, pending }) => {\n if (!groups.has(message)) groups.set(message, new Map())\n const msgGroup = groups.get(message)!\n if (!msgGroup.has(columnName)) msgGroup.set(columnName, [])\n msgGroup.get(columnName)!.push({ rowIndex, pending })\n })\n return groups\n }, [allErrors])\n\n const shouldExpand = isExpanded && allErrors.length > 0\n\n const firstError = allErrors[0]\n\n if (isLoading) {\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'divider',\n borderLeftColor: 'divider',\n px: 2,\n py: 2,\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <SynapseSpinner size={14} margin=\"0\" />\n <Typography variant=\"body1\" color=\"text.secondary\">\n Loading validation errors…\n </Typography>\n </Box>\n )\n }\n\n if (allErrors.length === 0) {\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'success.main',\n borderLeftColor: 'success.main',\n px: 2,\n py: 2,\n }}\n >\n <Typography variant=\"body1\" color=\"success.main\">\n No validation errors\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'error.main',\n borderLeftColor: 'error.main',\n }}\n >\n {/* Header */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 2,\n py: 2,\n gap: 1,\n }}\n >\n <Typography variant=\"body1\" fontWeight=\"bold\">\n Validation errors\n </Typography>\n <Chip label={allErrors.length} color=\"error\" size=\"small\" />\n <Link\n component=\"button\"\n variant=\"body1\"\n onClick={() => setIsExpanded(p => !p)}\n sx={{ cursor: 'pointer', flexShrink: 0, fontWeight: 'normal' }}\n >\n {shouldExpand ? 'Collapse' : 'Expand'}\n </Link>\n {!shouldExpand && (\n <Link\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() =>\n onNavigateToCell(\n firstError.rowIndex,\n Math.max(\n 0,\n getColDisplayIndex(\n firstError.columnName,\n columnNames,\n columnOrder,\n ),\n ),\n )\n }\n noWrap\n sx={{\n textAlign: 'left',\n ml: 'auto',\n ...rowLinkSx,\n opacity: firstError.pending ? 0.5 : 1,\n }}\n >\n <ErrorText\n columnName={firstError.columnName}\n message={firstError.message}\n rowIndex={firstError.rowIndex}\n />\n </Link>\n )}\n </Box>\n\n {/* Expanded panel */}\n <Collapse in={shouldExpand}>\n <Tabs\n value={groupBy}\n onChange={(_, v: GroupBy) => setGroupBy(v)}\n textColor=\"inherit\"\n sx={{\n px: 2,\n minHeight: 36,\n borderTop: '1px solid',\n borderColor: 'divider',\n }}\n TabIndicatorProps={{ style: { height: 2 } }}\n >\n <Tab label=\"By row\" value=\"row\" sx={tabSx} />\n <Tab label=\"By column\" value=\"column\" sx={tabSx} />\n <Tab label=\"By message\" value=\"message\" sx={tabSx} />\n </Tabs>\n\n <Box sx={{ px: 2, py: 1, maxHeight: 200, overflowY: 'auto' }}>\n {/* ── By row ─────────────────────────────────────────── */}\n {groupBy === 'row' && (\n <Stack divider={<Divider />}>\n {allErrors.map((error, i) => {\n const navCol = Math.max(\n 0,\n getColDisplayIndex(\n error.columnName,\n columnNames,\n columnOrder,\n ),\n )\n return (\n <Link\n key={i}\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() => onNavigateToCell(error.rowIndex, navCol)}\n sx={{\n textAlign: 'left',\n py: 0.5,\n ...rowLinkSx,\n opacity: error.pending ? 0.5 : 1,\n }}\n >\n <ErrorText\n columnName={error.columnName}\n message={error.message}\n rowIndex={error.rowIndex}\n />\n </Link>\n )\n })}\n </Stack>\n )}\n\n {/* ── By column ──────────────────────────────────────── */}\n {groupBy === 'column' && (\n <ByColumnTab\n groups={byColumn}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={onNavigateToCell}\n />\n )}\n\n {/* ── By message ─────────────────────────────────────── */}\n {groupBy === 'message' && (\n <ByMessageTab\n groups={byMessage}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={onNavigateToCell}\n />\n )}\n </Box>\n </Collapse>\n </Box>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"contextMenu.js","names":["createAddRowsComponent","createContextMenuComponent","ContextMenuItem","DataSheetGrid","VIEW_ALLOWED_MENU_ITEMS","AddRowsComponent","renderContextMenuItem","item","type","undefined","BaseViewContextMenuComponent","RecordSetContextMenuComponent","ViewContextMenuComponent","React","FC","ComponentProps","props","$","_c","t0","items","filter","_temp","filteredItems","t1","renderAddRowsComponent","renderViewContextMenu","renderRecordSetContextMenu","includes"],"sources":["../../../../src/components/DataGrid/components/contextMenu.tsx"],"sourcesContent":["import {\n createAddRowsComponent,\n createContextMenuComponent,\n ContextMenuItem,\n DataSheetGrid,\n} from '@sage-bionetworks/react-datasheet-grid'\n\n// Define which context menu items are allowed for tables (a subset)\nconst VIEW_ALLOWED_MENU_ITEMS: ContextMenuItem['type'][] = [\n 'COPY',\n 'PASTE',\n 'CUT',\n]\n\n// Create components outside of render to avoid recreating on every render\nconst AddRowsComponent = createAddRowsComponent()\n\n// Shared render function for context menu items\nconst renderContextMenuItem = (item: ContextMenuItem) => {\n if (item.type === 'COPY') {\n return <>Copy</>\n }\n if (item.type === 'PASTE') {\n return <>Paste</>\n }\n if (item.type === 'CUT') {\n return <>Cut</>\n }\n if (item.type === 'INSERT_ROW_BELLOW') {\n return <>Insert row below</>\n }\n if (item.type === 'DELETE_ROW') {\n return <>Delete row</>\n }\n if (item.type === 'DUPLICATE_ROW') {\n return <>Duplicate row</>\n }\n if (item.type === 'DELETE_ROWS') {\n return <>Delete rows</>\n }\n if (item.type === 'DUPLICATE_ROWS') {\n return <>Duplicate rows</>\n }\n return undefined\n}\n\n// Create base context menus (copy/cut/paste for recordSet, default for views)\nconst BaseViewContextMenuComponent = createContextMenuComponent(\n renderContextMenuItem,\n)\n\nconst RecordSetContextMenuComponent = createContextMenuComponent(\n renderContextMenuItem,\n)\n\n// Create a wrapper component that filters items for views\nconst ViewContextMenuComponent: React.FC<\n React.ComponentProps<typeof BaseViewContextMenuComponent>\n> = props => {\n // Filter the items to only include allowed ones for views\n const filteredItems = props.items.filter(item =>\n VIEW_ALLOWED_MENU_ITEMS.includes(item.type),\n )\n\n return <BaseViewContextMenuComponent {...props} items={filteredItems} />\n}\n\n// Create stable render functions outside the component\nexport const renderAddRowsComponent: React.ComponentProps<\n typeof DataSheetGrid\n>['addRowsComponent'] = props => <AddRowsComponent {...props} />\n\nexport const renderViewContextMenu: React.ComponentProps<\n typeof DataSheetGrid\n>['contextMenuComponent'] = props => <ViewContextMenuComponent {...props} />\n\nexport const renderRecordSetContextMenu: React.ComponentProps<\n typeof DataSheetGrid\n>['contextMenuComponent'] = props => (\n <RecordSetContextMenuComponent {...props} />\n)\n"],"mappings":";;;;AAQA,IAAMI,IAAqD;CACzD;CACA;CACA;CACD,EAGKC,IAAmBL,GAAwB,EAG3CM,KAAyBC,MAA0B;AACvD,KAAIA,EAAKC,SAAS,OAChB,QAAO,kBAAA,GAAA,EAAA,UAAE,QAAO,CAAA;AAElB,KAAID,EAAKC,SAAS,QAChB,QAAO,kBAAA,GAAA,EAAA,UAAE,SAAQ,CAAA;AAEnB,KAAID,EAAKC,SAAS,MAChB,QAAO,kBAAA,GAAA,EAAA,UAAE,OAAM,CAAA;AAEjB,KAAID,EAAKC,SAAS,oBAChB,QAAO,kBAAA,GAAA,EAAA,UAAE,oBAAmB,CAAA;AAE9B,KAAID,EAAKC,SAAS,aAChB,QAAO,kBAAA,GAAA,EAAA,UAAE,cAAa,CAAA;AAExB,KAAID,EAAKC,SAAS,gBAChB,QAAO,kBAAA,GAAA,EAAA,UAAE,iBAAgB,CAAA;AAE3B,KAAID,EAAKC,SAAS,cAChB,QAAO,kBAAA,GAAA,EAAA,UAAE,eAAc,CAAA;AAEzB,KAAID,EAAKC,SAAS,iBAChB,QAAO,kBAAA,GAAA,EAAA,UAAE,kBAAiB,CAAA;GAMxBE,IAA+BT,EACnCK,EACD,EAEKK,IAAgCV,EACpCK,EACD,EAGKM,KAEFI,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;AAAA,CAAAF,EAAA,OAAAD,EAAAI,QAIDD,IAAAF,EAAA,MAFqBE,IAAAH,EAAKI,MAAMC,OAAQC,EAExC,EAAAL,EAAA,KAAAD,EAAAI,OAAAH,EAAA,KAAAE;CAFD,IAAAI,IAAsBJ,GAErBK;AAEuE,QAFvEP,EAAA,OAAAM,KAAAN,EAAA,OAAAD,KAEMQ,IAAA,kBAAC,GAAD;EAA6B,GAAKR;EAAcO,OAAAA;EAAiB,CAAA,EAAAN,EAAA,KAAAM,GAAAN,EAAA,KAAAD,GAAAC,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAAjEO;GAIIC,KAEWT,MAAS,kBAAC,GAAD,EAAkB,GAAIA,GAAS,CAAA,EAEnDU,KAEeV,MAAS,kBAAC,GAAD,EAA0B,GAAIA,GAAS,CAAA,EAE/DW,KAEeX,MAC1B,kBAAC,GAAD,EAA+B,GAAIA,GACpC,CAAA;AAtBG,SAAAM,EAAAf,GAAA;AAAA,QAGAH,EAAuBwB,SAAUrB,EAAIC,KAAM"}
1
+ {"version":3,"file":"contextMenu.js","names":["createAddRowsComponent","createContextMenuComponent","ContextMenuItem","DataSheetGrid","VIEW_ALLOWED_MENU_ITEMS","AddRowsComponent","renderContextMenuItem","item","type","undefined","BaseViewContextMenuComponent","RecordSetContextMenuComponent","ViewContextMenuComponent","React","FC","ComponentProps","props","$","_c","t0","items","filter","_temp","filteredItems","t1","renderAddRowsComponent","renderViewContextMenu","renderRecordSetContextMenu","includes"],"sources":["../../../../src/components/DataGrid/components/contextMenu.tsx"],"sourcesContent":["import {\n createAddRowsComponent,\n createContextMenuComponent,\n ContextMenuItem,\n DataSheetGrid,\n} from '@sage-bionetworks/react-datasheet-grid'\n\n// Define which context menu items are allowed for tables (a subset)\nconst VIEW_ALLOWED_MENU_ITEMS: ContextMenuItem['type'][] = [\n 'COPY',\n 'PASTE',\n 'CUT',\n]\n\n// Create components outside of render to avoid recreating on every render\nconst AddRowsComponent = createAddRowsComponent()\n\n// Shared render function for context menu items\nconst renderContextMenuItem = (item: ContextMenuItem) => {\n if (item.type === 'COPY') {\n return <>Copy</>\n }\n if (item.type === 'PASTE') {\n return <>Paste</>\n }\n if (item.type === 'CUT') {\n return <>Cut</>\n }\n if (item.type === 'INSERT_ROW_BELLOW') {\n return <>Insert row below</>\n }\n if (item.type === 'DELETE_ROW') {\n return <>Delete row</>\n }\n if (item.type === 'DUPLICATE_ROW') {\n return <>Duplicate row</>\n }\n if (item.type === 'DELETE_ROWS') {\n return <>Delete rows</>\n }\n if (item.type === 'DUPLICATE_ROWS') {\n return <>Duplicate rows</>\n }\n return undefined\n}\n\n// Create base context menus (copy/cut/paste for recordSet, default for views)\nconst BaseViewContextMenuComponent = createContextMenuComponent(\n renderContextMenuItem,\n)\n\nconst RecordSetContextMenuComponent = createContextMenuComponent(\n renderContextMenuItem,\n)\n\n// Create a wrapper component that filters items for views\nconst ViewContextMenuComponent: React.FC<\n React.ComponentProps<typeof BaseViewContextMenuComponent>\n> = props => {\n // Filter the items to only include allowed ones for views\n const filteredItems = props.items.filter(item =>\n VIEW_ALLOWED_MENU_ITEMS.includes(item.type),\n )\n\n return <BaseViewContextMenuComponent {...props} items={filteredItems} />\n}\n\n// Create stable render functions outside the component\nexport const renderAddRowsComponent: React.ComponentProps<\n typeof DataSheetGrid\n>['addRowsComponent'] = props => <AddRowsComponent {...props} />\n\nexport const renderViewContextMenu: React.ComponentProps<\n typeof DataSheetGrid\n>['contextMenuComponent'] = props => <ViewContextMenuComponent {...props} />\n\nexport const renderRecordSetContextMenu: React.ComponentProps<\n typeof DataSheetGrid\n>['contextMenuComponent'] = props => (\n <RecordSetContextMenuComponent {...props} />\n)\n"],"mappings":";;;;AAQA,IAAMI,IAAqD;CACzD;CACA;CACA;AAAK,GAIDC,IAAmBL,EAAuB,GAG1CM,KAAyBC,MAA0B;CACvD,IAAIA,EAAKC,SAAS,QAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,OAAI,CAAA;CAEf,IAAID,EAAKC,SAAS,SAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,QAAK,CAAA;CAEhB,IAAID,EAAKC,SAAS,OAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,MAAG,CAAA;CAEd,IAAID,EAAKC,SAAS,qBAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,mBAAgB,CAAA;CAE3B,IAAID,EAAKC,SAAS,cAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,aAAU,CAAA;CAErB,IAAID,EAAKC,SAAS,iBAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,gBAAa,CAAA;CAExB,IAAID,EAAKC,SAAS,eAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,cAAW,CAAA;CAEtB,IAAID,EAAKC,SAAS,kBAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,iBAAc,CAAA;AAG3B,GAGME,IAA+BT,EACnCK,CACF,GAEMK,IAAgCV,EACpCK,CACF,GAGMM,KAEFI,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAD,EAAAI,QAIDD,IAAAF,EAAA,MAFqBE,IAAAH,EAAKI,MAAMC,OAAQC,CAEzC,GAACL,EAAA,KAAAD,EAAAI,OAAAH,EAAA,KAAAE;CAFD,IAAAI,IAAsBJ,GAErBK;CAEuE,OAFvEP,EAAA,OAAAM,KAAAN,EAAA,OAAAD,KAEMQ,IAAA,kBAAC,GAAD;EAA6B,GAAKR;EAAcO,OAAAA;CAAa,CAAA,GAAIN,EAAA,KAAAM,GAAAN,EAAA,KAAAD,GAAAC,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAAjEO;AAAiE,GAI7DC,KAEWT,MAAS,kBAAC,GAAD,EAAkB,GAAIA,EAAM,CAAA,GAEhDU,KAEeV,MAAS,kBAAC,GAAD,EAA0B,GAAIA,EAAM,CAAA,GAE5DW,KAEeX,MAC1B,kBAAC,GAAD,EAA+B,GAAIA,EAAM,CAAA;AArBvC,SAAAM,EAAAf,GAAA;CAAA,OAGAH,EAAuBwB,SAAUrB,EAAIC,IAAK;AAAC"}
@@ -3,6 +3,8 @@ import { useResizeObserver as n } from "@react-hookz/web";
3
3
  import { c as r } from "react/compiler-runtime";
4
4
  //#region src/components/DataGrid/hooks/useColumnResizeHandles.ts
5
5
  var i = class e {
6
+ colValues;
7
+ onColumnResize;
6
8
  static COLUMN_MIN_WIDTH_PX = 50;
7
9
  handlesMap = /* @__PURE__ */ new Map();
8
10
  cleanupFunctions = [];
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnResizeHandles.js","names":["useEffect","useRef","Column","useResizeObserver","ResizeHandleElement","HTMLDivElement","__cellElement","HTMLElement","__columnName","UseColumnResizeHandlesProps","wrapperRef","React","RefObject","colValues","onColumnResize","columnName","newWidth","ResizeState","startX","startWidth","handle","initialLeft","ColumnResizeManager","COLUMN_MIN_WIDTH_PX","handlesMap","Map","cleanupFunctions","Array","activeResize","gridContainer","headerRow","Element","observer","MutationObserver","constructor","name","width","updateColumns","syncHandles","initialize","querySelector","setupEventListeners","createNewHandle","Error","document","createElement","className","dataset","style","position","top","cursor","pointerEvents","zIndex","onMouseDown","e","MouseEvent","handleMouseDown","addEventListener","push","removeEventListener","appendChild","set","createOrUpdateHandle","cellElement","columnIndex","id","get","updateHandlePosition","gridHeight","scrollHeight","left","offsetLeft","offsetWidth","height","display","preventDefault","stopPropagation","currentColumnName","currentCellElement","currentLeft","parseFloat","clientX","classList","add","body","handleMouseMove","deltaX","handleMouseUp","Math","max","remove","headerCells","querySelectorAll","length","visibleColumns","Set","forEach","cell","index","cellText","textContent","trim","actualColumnIndex","findIndex","col","has","requestAnimationFrame","observe","childList","subtree","disconnect","cleanup","item","clear","useColumnResizeHandles","t0","$","_c","managerRef","t1","entry","current","contentRect","manager","success","t2","t3","t4","t5","Symbol","for"],"sources":["../../../../src/components/DataGrid/hooks/useColumnResizeHandles.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Column } from '@sage-bionetworks/react-datasheet-grid'\nimport { useResizeObserver } from '@react-hookz/web'\n\n// Extended HTMLDivElement with custom properties for resize handles\ninterface ResizeHandleElement extends HTMLDivElement {\n __cellElement?: HTMLElement\n __columnName?: string\n}\n\ntype UseColumnResizeHandlesProps = {\n wrapperRef: React.RefObject<HTMLDivElement | null>\n colValues: Column[]\n onColumnResize: (columnName: string, newWidth: number) => void\n}\n\ninterface ResizeState {\n columnName: string\n startX: number\n startWidth: number\n handle: HTMLDivElement\n initialLeft: number\n}\n\n/**\n * Encapsulates all column resize handle logic and state management.\n * Manages handle creation, positioning, mouse interactions, and cleanup.\n */\nclass ColumnResizeManager {\n private static readonly COLUMN_MIN_WIDTH_PX = 50\n\n private handlesMap = new Map<string, ResizeHandleElement>()\n private cleanupFunctions: Array<(() => void) | HTMLDivElement> = []\n private activeResize: ResizeState | null = null\n private gridContainer: HTMLElement | null = null\n private headerRow: Element | null = null\n private observer: MutationObserver | null = null\n\n constructor(\n private colValues: Column[],\n private onColumnResize: (name: string, width: number) => void,\n ) {}\n\n /**\n * Update the column values and callback without reinitializing.\n */\n updateColumns(\n colValues: Column[],\n onColumnResize: (name: string, width: number) => void,\n ): void {\n this.colValues = colValues\n this.onColumnResize = onColumnResize\n // Resync handles with new column data\n this.syncHandles()\n }\n\n /**\n * Initialize the manager by finding grid elements and setting up event listeners.\n * Returns true if initialization was successful, false otherwise.\n */\n initialize(wrapperRef: HTMLDivElement): boolean {\n const gridContainer = wrapperRef.querySelector(\n '.dsg-container',\n ) as HTMLElement\n\n if (!gridContainer) {\n return false\n }\n\n const headerRow = gridContainer.querySelector('.dsg-row.dsg-row-header')\n\n if (!headerRow) {\n return false\n }\n\n this.gridContainer = gridContainer\n this.headerRow = headerRow\n\n this.setupEventListeners()\n this.syncHandles()\n\n return true\n }\n\n /**\n * Creates a new resize handle element with mousedown listener.\n */\n private createNewHandle(columnName: string): ResizeHandleElement {\n if (!this.gridContainer) {\n throw new Error('Cannot create handle without grid container')\n }\n\n const handle = document.createElement('div') as ResizeHandleElement\n handle.className = 'column-resize-handle'\n handle.dataset.columnName = columnName\n handle.style.position = 'absolute'\n handle.style.top = '0'\n handle.style.width = '8px'\n handle.style.cursor = 'col-resize'\n handle.style.pointerEvents = 'auto'\n handle.style.zIndex = '1000'\n\n const onMouseDown = (e: MouseEvent) => this.handleMouseDown(e, handle)\n handle.addEventListener('mousedown', onMouseDown)\n\n this.cleanupFunctions.push(() =>\n handle.removeEventListener('mousedown', onMouseDown),\n )\n\n this.gridContainer.appendChild(handle)\n this.cleanupFunctions.push(handle)\n this.handlesMap.set(columnName, handle)\n\n return handle\n }\n\n /**\n * Creates or updates a handle for a given cell element.\n */\n private createOrUpdateHandle(\n cellElement: HTMLElement,\n columnIndex: number,\n ): void {\n const columnName = this.colValues[columnIndex]?.id as string\n if (!columnName || !this.gridContainer) return\n\n let handle = this.handlesMap.get(columnName)\n\n if (!handle) {\n handle = this.createNewHandle(columnName)\n }\n\n this.updateHandlePosition(handle, cellElement)\n }\n\n /**\n * Updates the position and size of a handle based on its cell element.\n */\n private updateHandlePosition(\n handle: ResizeHandleElement,\n cellElement: HTMLElement,\n ): void {\n if (!this.gridContainer) return\n\n const gridHeight = this.gridContainer.scrollHeight\n const left = cellElement.offsetLeft + cellElement.offsetWidth - 3\n\n handle.__cellElement = cellElement\n handle.__columnName = handle.dataset.columnName\n handle.style.left = `${left}px`\n handle.style.height = `${gridHeight}px`\n handle.style.display = '' // Ensure visible\n }\n\n /**\n * Handles mousedown event on a resize handle to initiate dragging.\n */\n private handleMouseDown(e: MouseEvent, handle: ResizeHandleElement): void {\n e.preventDefault()\n e.stopPropagation()\n\n // Read the column info fresh at mousedown time\n const currentColumnName = handle.__columnName\n const currentCellElement = handle.__cellElement\n\n if (!currentColumnName || !currentCellElement) return\n\n // Get current width and position at the time of mousedown\n const currentLeft = parseFloat(handle.style.left)\n\n this.activeResize = {\n columnName: currentColumnName,\n startX: e.clientX,\n startWidth: currentCellElement.offsetWidth,\n handle,\n initialLeft: currentLeft,\n }\n\n handle.classList.add('is-resizing')\n document.body.classList.add('col-resizing')\n }\n\n /**\n * Handles mousemove event to update handle position during drag.\n */\n private handleMouseMove = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { startX, handle, initialLeft } = this.activeResize\n const deltaX = e.clientX - startX\n handle.style.left = `${initialLeft + deltaX}px`\n }\n\n /**\n * Handles mouseup/mouseleave to finalize the resize operation.\n */\n private handleMouseUp = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { columnName, startX, startWidth, handle } = this.activeResize\n const deltaX = e.clientX - startX\n const newWidth = Math.max(\n ColumnResizeManager.COLUMN_MIN_WIDTH_PX,\n startWidth + deltaX,\n )\n\n handle.classList.remove('is-resizing')\n document.body.classList.remove('col-resizing')\n this.activeResize = null\n\n // Only update state when drag is complete\n this.onColumnResize(columnName, newWidth)\n }\n\n /**\n * Synchronizes handles with currently visible columns in the header.\n * Handles virtualization by showing/hiding handles as columns appear/disappear.\n */\n private syncHandles = (): void => {\n if (this.activeResize || !this.headerRow) return // Don't sync during resize\n\n const headerCells = this.headerRow.querySelectorAll('.dsg-cell')\n if (headerCells.length <= 1) return\n\n // Track which columns are currently visible\n const visibleColumns = new Set<string>()\n\n // Update or create handles for visible columns\n headerCells.forEach((cell: Element, index: number) => {\n if (index === 0) return // Skip gutter column\n\n const cellElement = cell as HTMLElement\n\n // Get the column name from the cell's text content\n // This is more reliable than using DOM index with virtualization\n const cellText = cellElement.textContent?.trim() || ''\n\n // Find the actual column index in colValues by matching the id (column name)\n // Note: col.title may be a React element (e.g. ColumnHeaderWithTooltip), so we use col.id\n const actualColumnIndex = this.colValues.findIndex(\n col => col.id === cellText,\n )\n\n if (actualColumnIndex !== -1) {\n const columnName = this.colValues[actualColumnIndex]?.id as string\n visibleColumns.add(columnName)\n this.createOrUpdateHandle(cellElement, actualColumnIndex)\n }\n })\n\n // Hide handles for columns that are no longer visible (virtualized out)\n this.handlesMap.forEach((handle, columnName) => {\n if (!visibleColumns.has(columnName)) {\n handle.style.display = 'none'\n }\n })\n }\n\n /**\n * Sets up all event listeners for mouse interactions, scroll, and virtualization.\n */\n private setupEventListeners(): void {\n if (!this.gridContainer || !this.headerRow) return\n\n // Global mouse event listeners\n document.addEventListener('mousemove', this.handleMouseMove)\n document.addEventListener('mouseup', this.handleMouseUp)\n document.addEventListener('mouseleave', this.handleMouseUp)\n\n // Scroll listener for updating handle positions\n this.gridContainer.addEventListener('scroll', this.syncHandles)\n\n // MutationObserver to detect when columns are added/removed due to virtualization\n this.observer = new MutationObserver(() => {\n // Debounce mutations to avoid excessive syncs\n requestAnimationFrame(() => {\n this.syncHandles()\n })\n })\n\n this.observer.observe(this.headerRow, {\n childList: true, // Watch for added/removed columns\n subtree: true,\n })\n\n // Register cleanup functions\n this.cleanupFunctions.push(() => {\n document.removeEventListener('mousemove', this.handleMouseMove)\n document.removeEventListener('mouseup', this.handleMouseUp)\n document.removeEventListener('mouseleave', this.handleMouseUp)\n this.gridContainer?.removeEventListener('scroll', this.syncHandles)\n this.observer?.disconnect()\n })\n }\n\n /**\n * Cleans up all handles, event listeners, and resets state.\n */\n cleanup(): void {\n // Ensure cursor class is removed\n document.body.classList.remove('col-resizing')\n\n // Reset active resize state\n if (this.activeResize) {\n this.activeResize.handle?.classList.remove('is-resizing')\n this.activeResize = null\n }\n\n // Run all cleanup functions and remove handles\n this.cleanupFunctions.forEach(item => {\n if (typeof item === 'function') {\n item()\n } else {\n // It's a handle element, remove it\n item.remove()\n }\n })\n\n this.cleanupFunctions = []\n this.handlesMap.clear()\n this.gridContainer = null\n this.headerRow = null\n this.observer = null\n }\n}\n\n/**\n * Custom hook that manages interactive column resize handles for a data grid.\n * Creates, positions, and updates resize handles that allow users to drag column borders.\n * Handles virtualization, scrolling, and proper cleanup.\n */\nexport function useColumnResizeHandles({\n wrapperRef,\n colValues,\n onColumnResize,\n}: UseColumnResizeHandlesProps) {\n const managerRef = useRef<ColumnResizeManager | null>(null)\n\n // Use react-hookz useResizeObserver to detect when wrapper is rendered and sized\n useResizeObserver(wrapperRef, entry => {\n if (!wrapperRef.current || !entry || entry.contentRect.height === 0) {\n return\n }\n\n // Initialize manager if not already done\n if (!managerRef.current) {\n const manager = new ColumnResizeManager(colValues, onColumnResize)\n const success = manager.initialize(wrapperRef.current)\n if (success) {\n managerRef.current = manager\n }\n }\n })\n\n useEffect(() => {\n // Update columns when they change instead of full reinitialization\n if (managerRef.current) {\n managerRef.current.updateColumns(colValues, onColumnResize)\n }\n }, [colValues, onColumnResize])\n\n useEffect(() => {\n // Cleanup on unmount\n return () => {\n managerRef.current?.cleanup()\n managerRef.current = null\n }\n }, [])\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useColumnResizeHandles.js","names":["useEffect","useRef","Column","useResizeObserver","ResizeHandleElement","HTMLDivElement","__cellElement","HTMLElement","__columnName","UseColumnResizeHandlesProps","wrapperRef","React","RefObject","colValues","onColumnResize","columnName","newWidth","ResizeState","startX","startWidth","handle","initialLeft","ColumnResizeManager","COLUMN_MIN_WIDTH_PX","handlesMap","Map","cleanupFunctions","Array","activeResize","gridContainer","headerRow","Element","observer","MutationObserver","constructor","name","width","updateColumns","syncHandles","initialize","querySelector","setupEventListeners","createNewHandle","Error","document","createElement","className","dataset","style","position","top","cursor","pointerEvents","zIndex","onMouseDown","e","MouseEvent","handleMouseDown","addEventListener","push","removeEventListener","appendChild","set","createOrUpdateHandle","cellElement","columnIndex","id","get","updateHandlePosition","gridHeight","scrollHeight","left","offsetLeft","offsetWidth","height","display","preventDefault","stopPropagation","currentColumnName","currentCellElement","currentLeft","parseFloat","clientX","classList","add","body","handleMouseMove","deltaX","handleMouseUp","Math","max","remove","headerCells","querySelectorAll","length","visibleColumns","Set","forEach","cell","index","cellText","textContent","trim","actualColumnIndex","findIndex","col","has","requestAnimationFrame","observe","childList","subtree","disconnect","cleanup","item","clear","useColumnResizeHandles","t0","$","_c","managerRef","t1","entry","current","contentRect","manager","success","t2","t3","t4","t5","Symbol","for"],"sources":["../../../../src/components/DataGrid/hooks/useColumnResizeHandles.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Column } from '@sage-bionetworks/react-datasheet-grid'\nimport { useResizeObserver } from '@react-hookz/web'\n\n// Extended HTMLDivElement with custom properties for resize handles\ninterface ResizeHandleElement extends HTMLDivElement {\n __cellElement?: HTMLElement\n __columnName?: string\n}\n\ntype UseColumnResizeHandlesProps = {\n wrapperRef: React.RefObject<HTMLDivElement | null>\n colValues: Column[]\n onColumnResize: (columnName: string, newWidth: number) => void\n}\n\ninterface ResizeState {\n columnName: string\n startX: number\n startWidth: number\n handle: HTMLDivElement\n initialLeft: number\n}\n\n/**\n * Encapsulates all column resize handle logic and state management.\n * Manages handle creation, positioning, mouse interactions, and cleanup.\n */\nclass ColumnResizeManager {\n private static readonly COLUMN_MIN_WIDTH_PX = 50\n\n private handlesMap = new Map<string, ResizeHandleElement>()\n private cleanupFunctions: Array<(() => void) | HTMLDivElement> = []\n private activeResize: ResizeState | null = null\n private gridContainer: HTMLElement | null = null\n private headerRow: Element | null = null\n private observer: MutationObserver | null = null\n\n constructor(\n private colValues: Column[],\n private onColumnResize: (name: string, width: number) => void,\n ) {}\n\n /**\n * Update the column values and callback without reinitializing.\n */\n updateColumns(\n colValues: Column[],\n onColumnResize: (name: string, width: number) => void,\n ): void {\n this.colValues = colValues\n this.onColumnResize = onColumnResize\n // Resync handles with new column data\n this.syncHandles()\n }\n\n /**\n * Initialize the manager by finding grid elements and setting up event listeners.\n * Returns true if initialization was successful, false otherwise.\n */\n initialize(wrapperRef: HTMLDivElement): boolean {\n const gridContainer = wrapperRef.querySelector(\n '.dsg-container',\n ) as HTMLElement\n\n if (!gridContainer) {\n return false\n }\n\n const headerRow = gridContainer.querySelector('.dsg-row.dsg-row-header')\n\n if (!headerRow) {\n return false\n }\n\n this.gridContainer = gridContainer\n this.headerRow = headerRow\n\n this.setupEventListeners()\n this.syncHandles()\n\n return true\n }\n\n /**\n * Creates a new resize handle element with mousedown listener.\n */\n private createNewHandle(columnName: string): ResizeHandleElement {\n if (!this.gridContainer) {\n throw new Error('Cannot create handle without grid container')\n }\n\n const handle = document.createElement('div') as ResizeHandleElement\n handle.className = 'column-resize-handle'\n handle.dataset.columnName = columnName\n handle.style.position = 'absolute'\n handle.style.top = '0'\n handle.style.width = '8px'\n handle.style.cursor = 'col-resize'\n handle.style.pointerEvents = 'auto'\n handle.style.zIndex = '1000'\n\n const onMouseDown = (e: MouseEvent) => this.handleMouseDown(e, handle)\n handle.addEventListener('mousedown', onMouseDown)\n\n this.cleanupFunctions.push(() =>\n handle.removeEventListener('mousedown', onMouseDown),\n )\n\n this.gridContainer.appendChild(handle)\n this.cleanupFunctions.push(handle)\n this.handlesMap.set(columnName, handle)\n\n return handle\n }\n\n /**\n * Creates or updates a handle for a given cell element.\n */\n private createOrUpdateHandle(\n cellElement: HTMLElement,\n columnIndex: number,\n ): void {\n const columnName = this.colValues[columnIndex]?.id as string\n if (!columnName || !this.gridContainer) return\n\n let handle = this.handlesMap.get(columnName)\n\n if (!handle) {\n handle = this.createNewHandle(columnName)\n }\n\n this.updateHandlePosition(handle, cellElement)\n }\n\n /**\n * Updates the position and size of a handle based on its cell element.\n */\n private updateHandlePosition(\n handle: ResizeHandleElement,\n cellElement: HTMLElement,\n ): void {\n if (!this.gridContainer) return\n\n const gridHeight = this.gridContainer.scrollHeight\n const left = cellElement.offsetLeft + cellElement.offsetWidth - 3\n\n handle.__cellElement = cellElement\n handle.__columnName = handle.dataset.columnName\n handle.style.left = `${left}px`\n handle.style.height = `${gridHeight}px`\n handle.style.display = '' // Ensure visible\n }\n\n /**\n * Handles mousedown event on a resize handle to initiate dragging.\n */\n private handleMouseDown(e: MouseEvent, handle: ResizeHandleElement): void {\n e.preventDefault()\n e.stopPropagation()\n\n // Read the column info fresh at mousedown time\n const currentColumnName = handle.__columnName\n const currentCellElement = handle.__cellElement\n\n if (!currentColumnName || !currentCellElement) return\n\n // Get current width and position at the time of mousedown\n const currentLeft = parseFloat(handle.style.left)\n\n this.activeResize = {\n columnName: currentColumnName,\n startX: e.clientX,\n startWidth: currentCellElement.offsetWidth,\n handle,\n initialLeft: currentLeft,\n }\n\n handle.classList.add('is-resizing')\n document.body.classList.add('col-resizing')\n }\n\n /**\n * Handles mousemove event to update handle position during drag.\n */\n private handleMouseMove = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { startX, handle, initialLeft } = this.activeResize\n const deltaX = e.clientX - startX\n handle.style.left = `${initialLeft + deltaX}px`\n }\n\n /**\n * Handles mouseup/mouseleave to finalize the resize operation.\n */\n private handleMouseUp = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { columnName, startX, startWidth, handle } = this.activeResize\n const deltaX = e.clientX - startX\n const newWidth = Math.max(\n ColumnResizeManager.COLUMN_MIN_WIDTH_PX,\n startWidth + deltaX,\n )\n\n handle.classList.remove('is-resizing')\n document.body.classList.remove('col-resizing')\n this.activeResize = null\n\n // Only update state when drag is complete\n this.onColumnResize(columnName, newWidth)\n }\n\n /**\n * Synchronizes handles with currently visible columns in the header.\n * Handles virtualization by showing/hiding handles as columns appear/disappear.\n */\n private syncHandles = (): void => {\n if (this.activeResize || !this.headerRow) return // Don't sync during resize\n\n const headerCells = this.headerRow.querySelectorAll('.dsg-cell')\n if (headerCells.length <= 1) return\n\n // Track which columns are currently visible\n const visibleColumns = new Set<string>()\n\n // Update or create handles for visible columns\n headerCells.forEach((cell: Element, index: number) => {\n if (index === 0) return // Skip gutter column\n\n const cellElement = cell as HTMLElement\n\n // Get the column name from the cell's text content\n // This is more reliable than using DOM index with virtualization\n const cellText = cellElement.textContent?.trim() || ''\n\n // Find the actual column index in colValues by matching the id (column name)\n // Note: col.title may be a React element (e.g. ColumnHeaderWithTooltip), so we use col.id\n const actualColumnIndex = this.colValues.findIndex(\n col => col.id === cellText,\n )\n\n if (actualColumnIndex !== -1) {\n const columnName = this.colValues[actualColumnIndex]?.id as string\n visibleColumns.add(columnName)\n this.createOrUpdateHandle(cellElement, actualColumnIndex)\n }\n })\n\n // Hide handles for columns that are no longer visible (virtualized out)\n this.handlesMap.forEach((handle, columnName) => {\n if (!visibleColumns.has(columnName)) {\n handle.style.display = 'none'\n }\n })\n }\n\n /**\n * Sets up all event listeners for mouse interactions, scroll, and virtualization.\n */\n private setupEventListeners(): void {\n if (!this.gridContainer || !this.headerRow) return\n\n // Global mouse event listeners\n document.addEventListener('mousemove', this.handleMouseMove)\n document.addEventListener('mouseup', this.handleMouseUp)\n document.addEventListener('mouseleave', this.handleMouseUp)\n\n // Scroll listener for updating handle positions\n this.gridContainer.addEventListener('scroll', this.syncHandles)\n\n // MutationObserver to detect when columns are added/removed due to virtualization\n this.observer = new MutationObserver(() => {\n // Debounce mutations to avoid excessive syncs\n requestAnimationFrame(() => {\n this.syncHandles()\n })\n })\n\n this.observer.observe(this.headerRow, {\n childList: true, // Watch for added/removed columns\n subtree: true,\n })\n\n // Register cleanup functions\n this.cleanupFunctions.push(() => {\n document.removeEventListener('mousemove', this.handleMouseMove)\n document.removeEventListener('mouseup', this.handleMouseUp)\n document.removeEventListener('mouseleave', this.handleMouseUp)\n this.gridContainer?.removeEventListener('scroll', this.syncHandles)\n this.observer?.disconnect()\n })\n }\n\n /**\n * Cleans up all handles, event listeners, and resets state.\n */\n cleanup(): void {\n // Ensure cursor class is removed\n document.body.classList.remove('col-resizing')\n\n // Reset active resize state\n if (this.activeResize) {\n this.activeResize.handle?.classList.remove('is-resizing')\n this.activeResize = null\n }\n\n // Run all cleanup functions and remove handles\n this.cleanupFunctions.forEach(item => {\n if (typeof item === 'function') {\n item()\n } else {\n // It's a handle element, remove it\n item.remove()\n }\n })\n\n this.cleanupFunctions = []\n this.handlesMap.clear()\n this.gridContainer = null\n this.headerRow = null\n this.observer = null\n }\n}\n\n/**\n * Custom hook that manages interactive column resize handles for a data grid.\n * Creates, positions, and updates resize handles that allow users to drag column borders.\n * Handles virtualization, scrolling, and proper cleanup.\n */\nexport function useColumnResizeHandles({\n wrapperRef,\n colValues,\n onColumnResize,\n}: UseColumnResizeHandlesProps) {\n const managerRef = useRef<ColumnResizeManager | null>(null)\n\n // Use react-hookz useResizeObserver to detect when wrapper is rendered and sized\n useResizeObserver(wrapperRef, entry => {\n if (!wrapperRef.current || !entry || entry.contentRect.height === 0) {\n return\n }\n\n // Initialize manager if not already done\n if (!managerRef.current) {\n const manager = new ColumnResizeManager(colValues, onColumnResize)\n const success = manager.initialize(wrapperRef.current)\n if (success) {\n managerRef.current = manager\n }\n }\n })\n\n useEffect(() => {\n // Update columns when they change instead of full reinitialization\n if (managerRef.current) {\n managerRef.current.updateColumns(colValues, onColumnResize)\n }\n }, [colValues, onColumnResize])\n\n useEffect(() => {\n // Cleanup on unmount\n return () => {\n managerRef.current?.cleanup()\n managerRef.current = null\n }\n }, [])\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useExportDataGridToCsv.js","names":["useExportGridAsCsv","displayToast","useSynapseContext","getFileHandleByIdURL","UseExportDataGridToCsvOptions","gridSessionId","filename","useExportDataGridToCsv","options","$","_c","accessToken","t0","onSuccess","data","resultsFileHandleId","then","presignedUrl","fetch","_temp","blob","blobUrl","URL","createObjectURL","link","document","createElement","href","timestamp","Date","toISOString","replace","setAttribute","body","appendChild","click","removeChild","revokeObjectURL","catch","_temp2","onError","_temp3","mutate","exportGrid","isPending","t1","sessionId","includeEtag","includeRowIdAndRowVersion","concreteType","exportToCsv","t2","isExporting","error","reason","err","Error","message","response"],"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"],"mappings":";;;;;;;AAUA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACL,EAAAL,kBAAAC,gBAAoCE,GACpC,EAAAG,mBAAwBT,GAAmB,EAAAU;AAAA,CAAAH,EAAA,OAAAE,KAAAF,EAAA,OAAAH,KAEkBM,IAAA;EAAAC,YAChDC,MAAA;AACT,GAAIA,GAAIC,uBAENZ,EAAqBW,EAAIC,qBAAsBJ,EAAY,CAAAK,MACnDC,MAEGC,MAAMD,EAAa,CAAAD,KAClBG,EAA4B,CAAAH,MAC5BI,MAAA;IAEJ,IAAAC,IAAgBC,IAAGC,gBAAiBH,EAAK,EACzCI,IAAaC,SAAQC,cAAe,IAAI;AACxCF,MAAIG,OAAQN;IAEZ,IAAAO,qBAAkB,IAAIC,MAAM,EAAAC,aAAc,CAAAC,QAAS,SAAS,IAAI;AAQhE9B,IAPAuB,EAAIQ,aAAc,YAAY,GAAG1B,EAAQ,GAAIsB,EAAS,MAAO,EAC7DH,SAAQQ,KAAKC,YAAaV,EAAK,EAC/BA,EAAIW,OAAQ,EACZV,SAAQQ,KAAKG,YAAaZ,EAAK,EAE/BF,IAAGe,gBAAiBhB,EAAQ,EAE5BpB,EAAa,qCAAqC,UAAU;KAEjE,CAAC,CAAAqC,MACKC,EAOL;;EAEPC,SACQC;EAMV,EAAAhC,EAAA,KAAAE,GAAAF,EAAA,KAAAH,GAAAG,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CA1CD,IAAA,EAAAiC,QAAAC,GAAAC,iBAA0C5C,EAAmBY,EA0C3D,EAAAiC;AAAA,CAAApC,EAAA,OAAAkC,KAAAlC,EAAA,OAAAJ,KAEkBwC,UAAA;AAClBF,IAAW;GAAAG,WACEzC;GAAa0C,aACX;GAAKC,2BACS;GAAKC,cAE9B;GACH,CAAC;IACHxC,EAAA,KAAAkC,GAAAlC,EAAA,KAAAJ,GAAAI,EAAA,KAAAoC,KAAAA,IAAApC,EAAA;CARD,IAAAyC,IAAoBL,GAQnBM;AAKA,QALA1C,EAAA,OAAAyC,KAAAzC,EAAA,OAAAmC,KAEMO,IAAA;EAAAD;EAAAE,aAEQR;EACd,EAAAnC,EAAA,KAAAyC,GAAAzC,EAAA,KAAAmC,GAAAnC,EAAA,KAAA0C,KAAAA,IAAA1C,EAAA,IAHM0C;;AA1DF,SAAAV,EAAAY,GAAA;AAyCDpD,GACE,sBAAsBoD,EAAKC,UAAL,mBACtB,SACD;;AA5CA,SAAAf,EAAAgB,GAAA;AA+BKtD,GACE,2BACEsD,aAAeC,QAAQD,EAAGE,UAA1B,mBAEF,SACD;;AApCN,SAAAtC,EAAAuC,GAAA;AAAA,QAYyBA,EAAQtC,MAAO"}
1
+ {"version":3,"file":"useExportDataGridToCsv.js","names":["useExportGridAsCsv","displayToast","useSynapseContext","getFileHandleByIdURL","UseExportDataGridToCsvOptions","gridSessionId","filename","useExportDataGridToCsv","options","$","_c","accessToken","t0","onSuccess","data","resultsFileHandleId","then","presignedUrl","fetch","_temp","blob","blobUrl","URL","createObjectURL","link","document","createElement","href","timestamp","Date","toISOString","replace","setAttribute","body","appendChild","click","removeChild","revokeObjectURL","catch","_temp2","onError","_temp3","mutate","exportGrid","isPending","t1","sessionId","includeEtag","includeRowIdAndRowVersion","concreteType","exportToCsv","t2","isExporting","error","reason","err","Error","message","response"],"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"],"mappings":";;;;;;;AAUA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAL,kBAAAC,gBAAoCE,GACpC,EAAAG,mBAAwBT,EAAkB,GAACU;CAAA,AAAAH,EAAA,OAAAE,KAAAF,EAAA,OAAAH,KAEkBM,IAAA;EAAAC,YAChDC,MAAA;GACT,AAAIA,GAAIC,uBAENZ,EAAqBW,EAAIC,qBAAsBJ,CAAW,EAACK,MACnDC,MAEGC,MAAMD,CAAY,EAACD,KAClBG,CAA2B,EAACH,MAC5BI,MAAA;IAEJ,IAAAC,IAAgBC,IAAGC,gBAAiBH,CAAI,GACxCI,IAAaC,SAAQC,cAAe,GAAG;IACvCF,EAAIG,OAAQN;IAEZ,IAAAO,qBAAkB,IAAIC,KAAK,GAACC,YAAa,EAACC,QAAS,SAAS,GAAG;IAQ/D9B,AAPAuB,EAAIQ,aAAc,YAAY,GAAG1B,EAAQ,GAAIsB,EAAS,KAAM,GAC5DH,SAAQQ,KAAKC,YAAaV,CAAI,GAC9BA,EAAIW,MAAO,GACXV,SAAQQ,KAAKG,YAAaZ,CAAI,GAE9BF,IAAGe,gBAAiBhB,CAAO,GAE3BpB,EAAa,qCAAqC,SAAS;GAAC,CAC7D,CACJ,EAACqC,MACKC,CAON;EACJ;EACFC,SACQC;CAMX,GAAChC,EAAA,KAAAE,GAAAF,EAAA,KAAAH,GAAAG,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CA1CD,IAAA,EAAAiC,QAAAC,GAAAC,iBAA0C5C,EAAmBY,CA0C5D,GAACiC;CAAA,AAAApC,EAAA,OAAAkC,KAAAlC,EAAA,OAAAJ,KAEkBwC,UAAA;EAClBF,EAAW;GAAAG,WACEzC;GAAa0C,aACX;GAAKC,2BACS;GAAKC,cAE9B;EACJ,CAAC;CAAC,GACHxC,EAAA,KAAAkC,GAAAlC,EAAA,KAAAJ,GAAAI,EAAA,KAAAoC,KAAAA,IAAApC,EAAA;CARD,IAAAyC,IAAoBL,GAQnBM;CAKA,OALA1C,EAAA,OAAAyC,KAAAzC,EAAA,OAAAmC,KAEMO,IAAA;EAAAD;EAAAE,aAEQR;CACf,GAACnC,EAAA,KAAAyC,GAAAzC,EAAA,KAAAmC,GAAAnC,EAAA,KAAA0C,KAAAA,IAAA1C,EAAA,IAHM0C;AAGN;AA7DI,SAAAV,EAAAY,GAAA;CAyCDpD,EACE,sBAAsBoD,EAAKC,UAAL,mBACtB,QACF;AAAC;AA5CA,SAAAf,EAAAgB,GAAA;CA+BKtD,EACE,2BACEsD,aAAeC,QAAQD,EAAGE,UAA1B,mBAEF,QACF;AAAC;AApCN,SAAAtC,EAAAuC,GAAA;CAAA,OAYyBA,EAAQtC,KAAM;AAAC"}