synapse-react-client 4.0.19 → 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 (1553) hide show
  1. package/dist/SWC.index.d.ts +1 -1
  2. package/dist/SWC.index.js +1 -1
  3. package/dist/SWC.index.js.map +1 -1
  4. package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
  5. package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
  6. package/dist/assets/DefaultColorfulPortalCardBackground.js.map +1 -1
  7. package/dist/assets/GoogleIcon.js.map +1 -1
  8. package/dist/assets/GoogleIcon24.js.map +1 -1
  9. package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
  10. package/dist/assets/homepage/BlinkingLiveIcon.js.map +1 -1
  11. package/dist/assets/homepage/aacr.js.map +1 -1
  12. package/dist/assets/homepage/cri.js.map +1 -1
  13. package/dist/assets/homepage/ctf.js.map +1 -1
  14. package/dist/assets/homepage/egress.js.map +1 -1
  15. package/dist/assets/homepage/facebook.js.map +1 -1
  16. package/dist/assets/homepage/fisma.js.map +1 -1
  17. package/dist/assets/homepage/gff.js.map +1 -1
  18. package/dist/assets/homepage/github.js.map +1 -1
  19. package/dist/assets/homepage/gray.js.map +1 -1
  20. package/dist/assets/homepage/hipaa-compliant.js.map +1 -1
  21. package/dist/assets/homepage/instagram.js.map +1 -1
  22. package/dist/assets/homepage/linkedin.js.map +1 -1
  23. package/dist/assets/homepage/ml-commons.js.map +1 -1
  24. package/dist/assets/homepage/nih-aging.js.map +1 -1
  25. package/dist/assets/homepage/nih-heart.js.map +1 -1
  26. package/dist/assets/homepage/nih-nci.js.map +1 -1
  27. package/dist/assets/homepage/nih-nimh.js.map +1 -1
  28. package/dist/assets/homepage/ntap.js.map +1 -1
  29. package/dist/assets/homepage/plan-item.js.map +1 -1
  30. package/dist/assets/homepage/powered-by-synapse-feature.js.map +1 -1
  31. package/dist/assets/homepage/precision-governance-feature.js.map +1 -1
  32. package/dist/assets/homepage/python.js.map +1 -1
  33. package/dist/assets/homepage/r.js.map +1 -1
  34. package/dist/assets/homepage/research-credit-feature.js.map +1 -1
  35. package/dist/assets/homepage/seamless-integration-feature.js.map +1 -1
  36. package/dist/assets/homepage/sloan.js.map +1 -1
  37. package/dist/assets/homepage/twitter.js.map +1 -1
  38. package/dist/assets/homepage/users.js.map +1 -1
  39. package/dist/assets/homepage/youtube.js.map +1 -1
  40. package/dist/assets/icons/AccessDataAnywhere.js.map +1 -1
  41. package/dist/assets/icons/AccessPending.js.map +1 -1
  42. package/dist/assets/icons/AccessPendingCloud.js.map +1 -1
  43. package/dist/assets/icons/AddAd.js.map +1 -1
  44. package/dist/assets/icons/AddToList.js.map +1 -1
  45. package/dist/assets/icons/Alert.js.map +1 -1
  46. package/dist/assets/icons/Arrow.js.map +1 -1
  47. package/dist/assets/icons/AwardScroll.js.map +1 -1
  48. package/dist/assets/icons/Baseline.js.map +1 -1
  49. package/dist/assets/icons/Cavatica.js.map +1 -1
  50. package/dist/assets/icons/CertifiedUser.js.map +1 -1
  51. package/dist/assets/icons/Challenge.js.map +1 -1
  52. package/dist/assets/icons/Checkbox/Checked.js.map +1 -1
  53. package/dist/assets/icons/Checkbox/Checked2.js.map +1 -1
  54. package/dist/assets/icons/Checkbox/Indeterminate.js.map +1 -1
  55. package/dist/assets/icons/Checkbox/Indeterminate2.js.map +1 -1
  56. package/dist/assets/icons/Checkbox/Unchecked.js.map +1 -1
  57. package/dist/assets/icons/Checkbox/Unchecked2.js.map +1 -1
  58. package/dist/assets/icons/ClappingHands.js.map +1 -1
  59. package/dist/assets/icons/CloudWarning.js.map +1 -1
  60. package/dist/assets/icons/CommunicateFindings.js.map +1 -1
  61. package/dist/assets/icons/CreateVersion.js.map +1 -1
  62. package/dist/assets/icons/DNA_Two.js.map +1 -1
  63. package/dist/assets/icons/Data2.js.map +1 -1
  64. package/dist/assets/icons/DoubleQuotes.js.map +1 -1
  65. package/dist/assets/icons/EmailAddressAdornment.js.map +1 -1
  66. package/dist/assets/icons/FileWithShield.js.map +1 -1
  67. package/dist/assets/icons/FileWithShield2.js.map +1 -1
  68. package/dist/assets/icons/FrontHand.js.map +1 -1
  69. package/dist/assets/icons/HandWithMoney.js.map +1 -1
  70. package/dist/assets/icons/IconCopy.js.map +1 -1
  71. package/dist/assets/icons/IconMinus.js.map +1 -1
  72. package/dist/assets/icons/IconPlus.js.map +1 -1
  73. package/dist/assets/icons/Java.js.map +1 -1
  74. package/dist/assets/icons/MintDoi.js.map +1 -1
  75. package/dist/assets/icons/MultiFile.js.map +1 -1
  76. package/dist/assets/icons/MultiFile2.js.map +1 -1
  77. package/dist/assets/icons/NoData.js.map +1 -1
  78. package/dist/assets/icons/NoSearchResults.js.map +1 -1
  79. package/dist/assets/icons/ORCIDIcon.js.map +1 -1
  80. package/dist/assets/icons/OpenBook.js.map +1 -1
  81. package/dist/assets/icons/Podium.js.map +1 -1
  82. package/dist/assets/icons/Python.js.map +1 -1
  83. package/dist/assets/icons/QueryStructuredData.js.map +1 -1
  84. package/dist/assets/icons/RLogo.js.map +1 -1
  85. package/dist/assets/icons/RecordProvenance.js.map +1 -1
  86. package/dist/assets/icons/RosetteRibbon.js.map +1 -1
  87. package/dist/assets/icons/SageFullLogo.js.map +1 -1
  88. package/dist/assets/icons/SearchImage.js.map +1 -1
  89. package/dist/assets/icons/ShareYourResearch.js.map +1 -1
  90. package/dist/assets/icons/Sort.js.map +1 -1
  91. package/dist/assets/icons/StarTrophy.js.map +1 -1
  92. package/dist/assets/icons/SynapseFullLogo.js.map +1 -1
  93. package/dist/assets/icons/SynapseIconWhite.js.map +1 -1
  94. package/dist/assets/icons/SynapseLogoName.js.map +1 -1
  95. package/dist/assets/icons/TasksIcon.js.map +1 -1
  96. package/dist/assets/icons/Terminal.js.map +1 -1
  97. package/dist/assets/icons/ThreeStars.js.map +1 -1
  98. package/dist/assets/icons/UnpackagableFile.js.map +1 -1
  99. package/dist/assets/icons/UnpackagableFile2.js.map +1 -1
  100. package/dist/assets/icons/ValidatedProfile.js.map +1 -1
  101. package/dist/assets/icons/account-certified.js.map +1 -1
  102. package/dist/assets/icons/account-enabled-mfa.js.map +1 -1
  103. package/dist/assets/icons/account-validated.js.map +1 -1
  104. package/dist/assets/icons/bioChemicalPhysical.js.map +1 -1
  105. package/dist/assets/icons/chart2.js.map +1 -1
  106. package/dist/assets/icons/columns.js.map +1 -1
  107. package/dist/assets/icons/columnsDarkTheme.js.map +1 -1
  108. package/dist/assets/icons/computationalTool.js.map +1 -1
  109. package/dist/assets/icons/dataReuse.js.map +1 -1
  110. package/dist/assets/icons/emailAddressAdornment2.js.map +1 -1
  111. package/dist/assets/icons/emailWithNotification.js.map +1 -1
  112. package/dist/assets/icons/error_page/maintenance.js.map +1 -1
  113. package/dist/assets/icons/error_page/no-access.js.map +1 -1
  114. package/dist/assets/icons/error_page/unavailable.js.map +1 -1
  115. package/dist/assets/icons/file.js.map +1 -1
  116. package/dist/assets/icons/inSilicoModel.js.map +1 -1
  117. package/dist/assets/icons/institution.js.map +1 -1
  118. package/dist/assets/icons/json-form-tool-no-submissions.js.map +1 -1
  119. package/dist/assets/icons/modelSystem.js.map +1 -1
  120. package/dist/assets/icons/mouse.js.map +1 -1
  121. package/dist/assets/icons/organizations.js.map +1 -1
  122. package/dist/assets/icons/person.js.map +1 -1
  123. package/dist/assets/icons/spatialProfiling.js.map +1 -1
  124. package/dist/assets/icons/standardDataModel.js.map +1 -1
  125. package/dist/assets/icons/study-active.js.map +1 -1
  126. package/dist/assets/icons/study-complete.js.map +1 -1
  127. package/dist/assets/icons/subscribe_plus.js.map +1 -1
  128. package/dist/assets/icons/synapse-logo.js.map +1 -1
  129. package/dist/assets/icons/terms/CheckIcon.js.map +1 -1
  130. package/dist/assets/icons/translational.js.map +1 -1
  131. package/dist/assets/icons/tree_horizontal.js.map +1 -1
  132. package/dist/assets/illustrations/acknowledgement_statements_illustration.js.map +1 -1
  133. package/dist/assets/illustrations/challenges_illustration.js.map +1 -1
  134. package/dist/assets/illustrations/cohort_builder_illustration.js.map +1 -1
  135. package/dist/assets/illustrations/data_access_management_illustration.js.map +1 -1
  136. package/dist/assets/illustrations/datasets_illustration.js.map +1 -1
  137. package/dist/assets/illustrations/diagonalLinePattern.js.map +1 -1
  138. package/dist/assets/illustrations/discussions_illustration.js.map +1 -1
  139. package/dist/assets/illustrations/docker_illustration.js.map +1 -1
  140. package/dist/assets/illustrations/donation_illustration.js.map +1 -1
  141. package/dist/assets/illustrations/favorites_illustration.js.map +1 -1
  142. package/dist/assets/illustrations/files_illustration.js.map +1 -1
  143. package/dist/assets/illustrations/following_illustration.js.map +1 -1
  144. package/dist/assets/illustrations/index.js.map +1 -1
  145. package/dist/assets/illustrations/left_dot_blob_dark_illustration.js.map +1 -1
  146. package/dist/assets/illustrations/left_dot_blob_illustration.js.map +1 -1
  147. package/dist/assets/illustrations/projects_illustration.js.map +1 -1
  148. package/dist/assets/illustrations/right_dot_blob_dark_illustration.js.map +1 -1
  149. package/dist/assets/illustrations/right_dot_blob_illustration.js.map +1 -1
  150. package/dist/assets/illustrations/tables_illustration.js.map +1 -1
  151. package/dist/assets/illustrations/teams_illustration.js.map +1 -1
  152. package/dist/assets/illustrations/trash_can_illustration.js.map +1 -1
  153. package/dist/assets/illustrations/underconstruction_illustration.js.map +1 -1
  154. package/dist/assets/illustrations/wikis_illustration.js.map +1 -1
  155. package/dist/assets/logos/other/ad-workbench-logo.js.map +1 -1
  156. package/dist/assets/logos/other/cavatica-logo.js.map +1 -1
  157. package/dist/assets/logos/other/pluto-logo.js.map +1 -1
  158. package/dist/assets/logos/other/terra-logo.js.map +1 -1
  159. package/dist/assets/mui_components/AccessManagement.js.map +1 -1
  160. package/dist/assets/mui_components/AccountCertified.js.map +1 -1
  161. package/dist/assets/mui_components/AccountRegistered.js.map +1 -1
  162. package/dist/assets/mui_components/AccountValidated.js.map +1 -1
  163. package/dist/assets/mui_components/ActionKey.js.map +1 -1
  164. package/dist/assets/mui_components/BioChemicalPhysical.js.map +1 -1
  165. package/dist/assets/mui_components/Chromatin.js.map +1 -1
  166. package/dist/assets/mui_components/Clinical.js.map +1 -1
  167. package/dist/assets/mui_components/ComputationalTool.js.map +1 -1
  168. package/dist/assets/mui_components/Data.js.map +1 -1
  169. package/dist/assets/mui_components/DataLocked.js.map +1 -1
  170. package/dist/assets/mui_components/DataReuse.js.map +1 -1
  171. package/dist/assets/mui_components/Dataset.js.map +1 -1
  172. package/dist/assets/mui_components/DatasetCollection.js.map +1 -1
  173. package/dist/assets/mui_components/Docker.js.map +1 -1
  174. package/dist/assets/mui_components/GeneExpression.js.map +1 -1
  175. package/dist/assets/mui_components/GeneVariants.js.map +1 -1
  176. package/dist/assets/mui_components/HelpChatBubble.js.map +1 -1
  177. package/dist/assets/mui_components/Imaging.js.map +1 -1
  178. package/dist/assets/mui_components/InSilicoModel.js.map +1 -1
  179. package/dist/assets/mui_components/Kinomics.js.map +1 -1
  180. package/dist/assets/mui_components/LineGraph.js.map +1 -1
  181. package/dist/assets/mui_components/ModelSystem.js.map +1 -1
  182. package/dist/assets/mui_components/Other.js.map +1 -1
  183. package/dist/assets/mui_components/PackagableFile.js.map +1 -1
  184. package/dist/assets/mui_components/PackagableFile2.js.map +1 -1
  185. package/dist/assets/mui_components/Proteomics.js.map +1 -1
  186. package/dist/assets/mui_components/Rat.js.map +1 -1
  187. package/dist/assets/mui_components/SpatialProfiling.js.map +1 -1
  188. package/dist/assets/sustainability/darkDialPosition1.js.map +1 -1
  189. package/dist/assets/sustainability/darkDialPosition2.js.map +1 -1
  190. package/dist/assets/sustainability/darkDialPosition3.js.map +1 -1
  191. package/dist/assets/sustainability/darkDialPosition4.js.map +1 -1
  192. package/dist/assets/sustainability/dialPosition1.js.map +1 -1
  193. package/dist/assets/sustainability/dialPosition2.js.map +1 -1
  194. package/dist/assets/sustainability/dialPosition3.js.map +1 -1
  195. package/dist/assets/sustainability/dialPosition4.js.map +1 -1
  196. package/dist/assets/themed_icons/Active.js.map +1 -1
  197. package/dist/assets/themed_icons/Chart.js.map +1 -1
  198. package/dist/assets/themed_icons/Close.js.map +1 -1
  199. package/dist/assets/themed_icons/Collapse.js.map +1 -1
  200. package/dist/assets/themed_icons/Columns.js.map +1 -1
  201. package/dist/assets/themed_icons/ColumnsDark.js.map +1 -1
  202. package/dist/assets/themed_icons/Database.js.map +1 -1
  203. package/dist/assets/themed_icons/Download.js.map +1 -1
  204. package/dist/assets/themed_icons/Expand.js.map +1 -1
  205. package/dist/assets/themed_icons/Explore.js.map +1 -1
  206. package/dist/assets/themed_icons/ExternalLink.js.map +1 -1
  207. package/dist/assets/themed_icons/Filter.js.map +1 -1
  208. package/dist/assets/themed_icons/Program.js.map +1 -1
  209. package/dist/assets/themed_icons/Project.js.map +1 -1
  210. package/dist/assets/themed_icons/Publication.js.map +1 -1
  211. package/dist/assets/themed_icons/Search.js.map +1 -1
  212. package/dist/assets/themed_icons/Settings.js.map +1 -1
  213. package/dist/assets/themed_icons/SortDown.js.map +1 -1
  214. package/dist/assets/themed_icons/SortUp.js.map +1 -1
  215. package/dist/assets/themed_icons/SqlEditorIcon.js.map +1 -1
  216. package/dist/assets/themed_icons/Study.js.map +1 -1
  217. package/dist/assets/themed_icons/ToolClinical.js.map +1 -1
  218. package/dist/assets/themed_icons/ToolComputational.js.map +1 -1
  219. package/dist/assets/themed_icons/ToolExperimental.js.map +1 -1
  220. package/dist/assets/themed_icons/VerticalDots.js.map +1 -1
  221. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +1 -1
  222. package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
  223. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  224. package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
  225. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +10 -11
  226. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  227. package/dist/components/AccessRequirementList/AccessRequirementList.js +73 -76
  228. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  229. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  230. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
  231. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  232. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  233. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  234. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
  235. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  236. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +1 -1
  237. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
  238. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  239. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  240. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
  241. package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map +1 -1
  242. package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
  243. package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map +1 -1
  244. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js.map +1 -1
  245. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
  246. package/dist/components/AccessRequirementList/RequirementItem/TwoFactorAuthEnabledRequirement.js.map +1 -1
  247. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
  248. package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
  249. package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
  250. package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
  251. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  252. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  253. package/dist/components/AccountLevelBadge/AccountLevelBadge.js.map +1 -1
  254. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  255. package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js.map +1 -1
  256. package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js.map +1 -1
  257. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  258. package/dist/components/AcknowledgementsPage/StudyAcknowledgement.js.map +1 -1
  259. package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
  260. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  261. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  262. package/dist/components/AclEditor/AclEditorSkeleton.js.map +1 -1
  263. package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
  264. package/dist/components/AclEditor/ReadOnlyPermissionLevel.js.map +1 -1
  265. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js +2 -4
  266. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
  267. package/dist/components/AclEditor/ResourceAccessItem.js.map +1 -1
  268. package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
  269. package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
  270. package/dist/components/AdaptiveTwoColumnLayout/AdaptiveTwoColumnLayout.js.map +1 -1
  271. package/dist/components/AddToDownloadListV2.js.map +1 -1
  272. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  273. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  274. package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
  275. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  276. package/dist/components/Authentication/LoginFlowBackButton.js.map +1 -1
  277. package/dist/components/Authentication/LoginForm.js.map +1 -1
  278. package/dist/components/Authentication/LoginMethod.js.map +1 -1
  279. package/dist/components/Authentication/LoginMethodButton.js.map +1 -1
  280. package/dist/components/Authentication/Logout.js.map +1 -1
  281. package/dist/components/Authentication/OneTimePasswordForm.js.map +1 -1
  282. package/dist/components/Authentication/PasswordField.js.map +1 -1
  283. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  284. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  285. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  286. package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
  287. package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
  288. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  289. package/dist/components/Authentication/TwoFactorAuthSettingsPanel.js.map +1 -1
  290. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  291. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  292. package/dist/components/Authentication/TwoFactorSecretDialog.js.map +1 -1
  293. package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
  294. package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
  295. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  296. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  297. package/dist/components/CTASectionWrapper/CTASectionWrapper.js.map +1 -1
  298. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  299. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  300. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  301. package/dist/components/CardDeck/CardDeck.Desktop.js.map +1 -1
  302. package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
  303. package/dist/components/CardDeck/CardDeck.js.map +1 -1
  304. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  305. package/dist/components/CardGridWithLinks/CardGridWithLinks.js.map +1 -1
  306. package/dist/components/CertificationQuiz/CertificationAnswer.js.map +1 -1
  307. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  308. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
  309. package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js.map +1 -1
  310. package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
  311. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  312. package/dist/components/ChallengeSubmission/AddExternalRepo.js.map +1 -1
  313. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  314. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  315. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +62 -64
  316. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
  317. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  318. package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
  319. package/dist/components/ChallengeSubmission/SubmissionCommitList.js.map +1 -1
  320. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  321. package/dist/components/ChallengeTeamWizard/ChallengeTeamSearch.js.map +1 -1
  322. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  323. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +96 -102
  324. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
  325. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  326. package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
  327. package/dist/components/ChallengeTeamWizard/OpenMembershipInvitation.js.map +1 -1
  328. package/dist/components/ChallengeTeamWizard/RegistrationSuccessful.js.map +1 -1
  329. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  330. package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
  331. package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
  332. package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
  333. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  334. package/dist/components/CitationPopover/CitationPopover.js.map +1 -1
  335. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  336. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  337. package/dist/components/CitationPopover/useCitation.js.map +1 -1
  338. package/dist/components/ColorGradient/ColorGradient.js.map +1 -1
  339. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -1
  340. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  341. package/dist/components/ComponentCollapse.js.map +1 -1
  342. package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  343. package/dist/components/CookiesNotification/CookiePreferencesDialog.js.map +1 -1
  344. package/dist/components/CookiesNotification/CookiesNotification.d.ts.map +1 -1
  345. package/dist/components/CookiesNotification/CookiesNotification.js +9 -9
  346. package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
  347. package/dist/components/CopyToClipboardIcon.js.map +1 -1
  348. package/dist/components/CopyToClipboardInput/CopyToClipboardInput.js.map +1 -1
  349. package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
  350. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  351. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizardUtils.js.map +1 -1
  352. package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
  353. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -1
  354. package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
  355. package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
  356. package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
  357. package/dist/components/CreateTableViewWizard/TableTypeSelection.js.map +1 -1
  358. package/dist/components/CreateTableViewWizard/ViewTypeSelection.js.map +1 -1
  359. package/dist/components/CrispChat/CrispChat.js.map +1 -1
  360. package/dist/components/DataExplorer/DataExplorer.js +28 -31
  361. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  362. package/dist/components/DataGrid/DataGrid.js +72 -72
  363. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  364. package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
  365. package/dist/components/DataGrid/DataGridWebSocket.d.ts +2 -0
  366. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  367. package/dist/components/DataGrid/DataGridWebSocket.js +9 -10
  368. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  369. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
  370. package/dist/components/DataGrid/StartGridSession.js.map +1 -1
  371. package/dist/components/DataGrid/SynapseGrid.d.ts +3 -1
  372. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  373. package/dist/components/DataGrid/SynapseGrid.js +219 -211
  374. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  375. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  376. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
  377. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  378. package/dist/components/DataGrid/columns/GridAutocompleteChip.js.map +1 -1
  379. package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
  380. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  381. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  382. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
  383. package/dist/components/DataGrid/components/GridSessionSelectionField.js.map +1 -1
  384. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  385. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  386. package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
  387. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  388. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +2 -0
  389. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
  390. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  391. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
  392. package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
  393. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  394. package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
  395. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  396. package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
  397. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
  398. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  399. package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
  400. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  401. package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
  402. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  403. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  404. package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
  405. package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
  406. package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
  407. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  408. package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
  409. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  410. package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
  411. package/dist/components/DataGrid/utils/convertActionToModelChange.js.map +1 -1
  412. package/dist/components/DataGrid/utils/createTestModel.js.map +1 -1
  413. package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -1
  414. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  415. package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -1
  416. package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
  417. package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -1
  418. package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -1
  419. package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -1
  420. package/dist/components/DataGrid/utils/isValidationUpToDateForRow.js.map +1 -1
  421. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  422. package/dist/components/DataGrid/utils/json-rx/JsonRxMessage.js.map +1 -1
  423. package/dist/components/DataGrid/utils/json-rx/JsonRxNotification.js.map +1 -1
  424. package/dist/components/DataGrid/utils/json-rx/JsonRxRequest.js.map +1 -1
  425. package/dist/components/DataGrid/utils/json-rx/JsonRxRequestComplete.js.map +1 -1
  426. package/dist/components/DataGrid/utils/json-rx/JsonRxResponse.js.map +1 -1
  427. package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
  428. package/dist/components/DataGrid/utils/logicalTimestampToString.js.map +1 -1
  429. package/dist/components/DataGrid/utils/mapOperationsToModelChanges.js.map +1 -1
  430. package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
  431. package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
  432. package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
  433. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -1
  434. package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -1
  435. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  436. package/dist/components/DatasetJsonLdScript.js.map +1 -1
  437. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  438. package/dist/components/Dialog/ConfirmCloseWithoutSavingDialog.js.map +1 -1
  439. package/dist/components/DialogBase.js.map +1 -1
  440. package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
  441. package/dist/components/DirectDownload/FileEntityDirectDownload.js.map +1 -1
  442. package/dist/components/DirectDownloadButton.js.map +1 -1
  443. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js.map +1 -1
  444. package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
  445. package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
  446. package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
  447. package/dist/components/DownloadCart/DirectProgrammaticDownload.js.map +1 -1
  448. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  449. package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
  450. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  451. package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
  452. package/dist/components/DownloadCart/DownloadListStats.js.map +1 -1
  453. package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
  454. package/dist/components/DownloadCart/EnableTwoFaRequirementCard.js.map +1 -1
  455. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  456. package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
  457. package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
  458. package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
  459. package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
  460. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  461. package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
  462. package/dist/components/DynamicForm/DynamicForm.js.map +1 -1
  463. package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
  464. package/dist/components/Ecosystem/EcosystemCard.js.map +1 -1
  465. package/dist/components/Ecosystem/EcosystemLayout.js.map +1 -1
  466. package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
  467. package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
  468. package/dist/components/EntityAclEditor/CreateOrDeleteLocalSharingSettingsButton.js.map +1 -1
  469. package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
  470. package/dist/components/EntityAclEditor/EntityAclEditorModal.js.map +1 -1
  471. package/dist/components/EntityAclEditor/InheritanceMessage.js.map +1 -1
  472. package/dist/components/EntityAclEditor/OpenData.js.map +1 -1
  473. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
  474. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +68 -70
  475. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  476. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  477. package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
  478. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +32 -35
  479. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  480. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  481. package/dist/components/EntityFinder/Breadcrumbs.js.map +1 -1
  482. package/dist/components/EntityFinder/EntityFinder.js +134 -136
  483. package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
  484. package/dist/components/EntityFinder/EntityFinderModal.js.map +1 -1
  485. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  486. package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
  487. package/dist/components/EntityFinder/details/EntityDetailsList.js +20 -20
  488. package/dist/components/EntityFinder/details/EntityDetailsList.js.map +1 -1
  489. package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
  490. package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
  491. package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
  492. package/dist/components/EntityFinder/details/configurations/ReferenceDetails.js.map +1 -1
  493. package/dist/components/EntityFinder/details/configurations/SearchDetails.js.map +1 -1
  494. package/dist/components/EntityFinder/details/view/DetailsView.js +67 -67
  495. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  496. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js +1 -1
  497. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js.map +1 -1
  498. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  499. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js.map +1 -1
  500. package/dist/components/EntityFinder/details/view/table/DateCell.js.map +1 -1
  501. package/dist/components/EntityFinder/details/view/table/EntityBadgeIconsCell.js.map +1 -1
  502. package/dist/components/EntityFinder/details/view/table/EntityFinderCheckboxCell.js.map +1 -1
  503. package/dist/components/EntityFinder/details/view/table/EntityFinderVersionCell.js.map +1 -1
  504. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js.map +1 -1
  505. package/dist/components/EntityFinder/details/view/table/EntityTypeCell.js.map +1 -1
  506. package/dist/components/EntityFinder/details/view/table/FileEntityDirectDownloadCell.js.map +1 -1
  507. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js.map +1 -1
  508. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js.map +1 -1
  509. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js.map +1 -1
  510. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js.map +1 -1
  511. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js.map +1 -1
  512. package/dist/components/EntityFinder/details/view/table/UserBadgeCell.js.map +1 -1
  513. package/dist/components/EntityFinder/tree/EntityTree.js +80 -80
  514. package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
  515. package/dist/components/EntityFinder/tree/VirtualizedTree.js +31 -31
  516. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  517. package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
  518. package/dist/components/EntityForm/EntityForm.js.map +1 -1
  519. package/dist/components/EntityHeaderTable/DebouncedInput.js.map +1 -1
  520. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  521. package/dist/components/EntityHeaderTable/EntityHeaderTableCellRenderers.js.map +1 -1
  522. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  523. package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
  524. package/dist/components/EntityIcon.js.map +1 -1
  525. package/dist/components/EntityLink.js.map +1 -1
  526. package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
  527. package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
  528. package/dist/components/EntityTreeTable/components/AutoLoadMore.js.map +1 -1
  529. package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
  530. package/dist/components/EntityTreeTable/components/EntityBadgeIconsCell.js.map +1 -1
  531. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  532. package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
  533. package/dist/components/EntityTreeTable/components/EntityTreeTableRow.js.map +1 -1
  534. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
  535. package/dist/components/EntityTreeTable/components/IdCell.js.map +1 -1
  536. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  537. package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
  538. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  539. package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
  540. package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
  541. package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
  542. package/dist/components/EntityUpload/EntityUploadModal.js +29 -31
  543. package/dist/components/EntityUpload/EntityUploadModal.js.map +1 -1
  544. package/dist/components/EntityUpload/EntityUploadPromptDialog.js.map +1 -1
  545. package/dist/components/EntityUpload/ExternalObjectStoreCredentialsForm.js.map +1 -1
  546. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  547. package/dist/components/EntityUpload/LinkToURL.js.map +1 -1
  548. package/dist/components/EntityUpload/ProjectStorageLimitAlert.js.map +1 -1
  549. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
  550. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditor.js.map +1 -1
  551. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditorModal.js.map +1 -1
  552. package/dist/components/Evaluation/CreatedOnByUserDiv.js.map +1 -1
  553. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -1
  554. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  555. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  556. package/dist/components/Evaluation/EvaluationEditorPage.js.map +1 -1
  557. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  558. package/dist/components/Evaluation/EvaluationRoundEditorDropdown.js.map +1 -1
  559. package/dist/components/Evaluation/EvaluationRoundEditorList.js.map +1 -1
  560. package/dist/components/Evaluation/input_models/models.js.map +1 -1
  561. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
  562. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  563. package/dist/components/EvaluationFinder/EvaluationFinder.js.map +1 -1
  564. package/dist/components/ExperimentalMode/ExperimentalMode.d.ts.map +1 -1
  565. package/dist/components/ExperimentalMode/ExperimentalMode.js +24 -30
  566. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  567. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  568. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  569. package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
  570. package/dist/components/FeaturedDataTabs/FeaturedDataPlots.js.map +1 -1
  571. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
  572. package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
  573. package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
  574. package/dist/components/FeaturedResearch/FeaturedResearch.js +16 -18
  575. package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
  576. package/dist/components/FeaturedToolsList/FeaturedToolCard.js.map +1 -1
  577. package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
  578. package/dist/components/FilePreview/EntityPreview.js.map +1 -1
  579. package/dist/components/FilePreview/FileEntityPreview.js.map +1 -1
  580. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  581. package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
  582. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  583. package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
  584. package/dist/components/FilePreview/PreviewUtils.js.map +1 -1
  585. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  586. package/dist/components/Forum/DiscussionReply.js.map +1 -1
  587. package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
  588. package/dist/components/Forum/DiscussionThread.js.map +1 -1
  589. package/dist/components/Forum/ForumPage.js.map +1 -1
  590. package/dist/components/Forum/ForumTable.js.map +1 -1
  591. package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
  592. package/dist/components/Forum/SubscribersModal.js.map +1 -1
  593. package/dist/components/ForumSearch/ForumSearch.js.map +1 -1
  594. package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
  595. package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
  596. package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
  597. package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
  598. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  599. package/dist/components/GenericCard/CollapsibleDescription.js.map +1 -1
  600. package/dist/components/GenericCard/CroissantButton/CroissantButton.js.map +1 -1
  601. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  602. package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
  603. package/dist/components/GenericCard/GenericCardIcon.js.map +1 -1
  604. package/dist/components/GenericCard/GenericCardTitle.js.map +1 -1
  605. package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -1
  606. package/dist/components/GenericCard/Linkify.js.map +1 -1
  607. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  608. package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
  609. package/dist/components/GenericCard/SynapseCardLabel.js +1 -1
  610. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  611. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  612. package/dist/components/GenericCard/useResolvedSynapseEntity.js.map +1 -1
  613. package/dist/components/Goals/Goals.Desktop.js.map +1 -1
  614. package/dist/components/Goals/Goals.Mobile.js.map +1 -1
  615. package/dist/components/Goals/Goals.js +25 -27
  616. package/dist/components/Goals/Goals.js.map +1 -1
  617. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  618. package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
  619. package/dist/components/GoalsV2/GoalsV2.js +14 -16
  620. package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
  621. package/dist/components/GoalsV3/GoalsV3.Desktop.js.map +1 -1
  622. package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
  623. package/dist/components/GoalsV3/GoalsV3.js +14 -16
  624. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  625. package/dist/components/GoogleAnalytics/GoogleAnalytics.js.map +1 -1
  626. package/dist/components/GoogleMap/GoogleMap.js.map +1 -1
  627. package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
  628. package/dist/components/HasAccess/AccessIcon.js +10 -10
  629. package/dist/components/HasAccess/AccessIcon.js.map +1 -1
  630. package/dist/components/HasAccess/HasAccessV2.js.map +1 -1
  631. package/dist/components/HasAccess/useHasAccess.js.map +1 -1
  632. package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
  633. package/dist/components/HeaderCard.js.map +1 -1
  634. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  635. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  636. package/dist/components/IDUReport/IDUReport.js.map +1 -1
  637. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  638. package/dist/components/Icon/Icon.js.map +1 -1
  639. package/dist/components/IconList.js.map +1 -1
  640. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  641. package/dist/components/IconSvgButton.js.map +1 -1
  642. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js +7 -9
  643. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
  644. package/dist/components/ImageFromSynapseTable.js.map +1 -1
  645. package/dist/components/InteractiveCopyIdsIcon.js.map +1 -1
  646. package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
  647. package/dist/components/JSONArrayEditor/JSONArrayEditorModal.js.map +1 -1
  648. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  649. package/dist/components/JsonLdScript.js.map +1 -1
  650. package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
  651. package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
  652. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemButtonTemplate.js.map +1 -1
  653. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
  654. package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
  655. package/dist/components/JsonSchemaForm/templates/ArrayFieldTitleTemplate.js.map +1 -1
  656. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  657. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  658. package/dist/components/JsonSchemaForm/templates/DescriptionFieldTemplate.js.map +1 -1
  659. package/dist/components/JsonSchemaForm/templates/ErrorListTemplate.js.map +1 -1
  660. package/dist/components/JsonSchemaForm/templates/FieldDescriptionTable.js.map +1 -1
  661. package/dist/components/JsonSchemaForm/templates/FieldErrorTemplate.js.map +1 -1
  662. package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
  663. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  664. package/dist/components/JsonSchemaForm/widgets/BooleanWidget.js.map +1 -1
  665. package/dist/components/JsonSchemaForm/widgets/DateTimeWidget.js.map +1 -1
  666. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
  667. package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
  668. package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
  669. package/dist/components/Markdown/GovernanceMarkdownGithub.js.map +1 -1
  670. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  671. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  672. package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
  673. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  674. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  675. package/dist/components/Markdown/MarkdownSynapse.js +75 -106
  676. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  677. package/dist/components/Markdown/MarkdownUtils.d.ts +14 -4
  678. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  679. package/dist/components/Markdown/MarkdownUtils.js +38 -37
  680. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  681. package/dist/components/Markdown/MarkdownWidget.js.map +1 -1
  682. package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
  683. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  684. package/dist/components/Markdown/widget/Bookmarks.js.map +1 -1
  685. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  686. package/dist/components/Markdown/widget/MarkdownEntityPreview.js.map +1 -1
  687. package/dist/components/Markdown/widget/MarkdownIDUReport.js.map +1 -1
  688. package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
  689. package/dist/components/Markdown/widget/MarkdownSynapseImage.js.map +1 -1
  690. package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
  691. package/dist/components/Markdown/widget/MarkdownSynapseTable.js.map +1 -1
  692. package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
  693. package/dist/components/Markdown/widget/MarkdownUserOrTeamBadge.js.map +1 -1
  694. package/dist/components/Markdown/widget/MarkdownVideo.js.map +1 -1
  695. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  696. package/dist/components/ModalDownload/ModalDownload.FormSchema.js.map +1 -1
  697. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  698. package/dist/components/MuiContainer.js.map +1 -1
  699. package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js.map +1 -1
  700. package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
  701. package/dist/components/OAuthClientManagement/CreateOAuthClient.js.map +1 -1
  702. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  703. package/dist/components/OrientationBanner/OrientationBanner.js.map +1 -1
  704. package/dist/components/PageProgress/PageProgress.js.map +1 -1
  705. package/dist/components/Plot/BarPlot.js.map +1 -1
  706. package/dist/components/Plot/DotPlot.js.map +1 -1
  707. package/dist/components/Plot/Plot.d.ts +12 -1
  708. package/dist/components/Plot/Plot.d.ts.map +1 -1
  709. package/dist/components/Plot/Plot.js +5 -1
  710. package/dist/components/Plot/Plot.js.map +1 -1
  711. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  712. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  713. package/dist/components/Plot/SynapseSankeyPlot.d.ts +12 -0
  714. package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
  715. package/dist/components/Plot/SynapseSankeyPlot.js +54 -0
  716. package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
  717. package/dist/components/Plot/ThemesPlot.js.map +1 -1
  718. package/dist/components/Plot/UpsetPlot.js.map +1 -1
  719. package/dist/components/Plot/index.d.ts +3 -1
  720. package/dist/components/Plot/index.d.ts.map +1 -1
  721. package/dist/components/Plot/index.js +2 -1
  722. package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
  723. package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
  724. package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
  725. package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
  726. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
  727. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
  728. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
  729. package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
  730. package/dist/components/PortalList/PortalCard.js.map +1 -1
  731. package/dist/components/PortalList/PortalList.js.map +1 -1
  732. package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
  733. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
  734. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
  735. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  736. package/dist/components/Programs/Programs.Desktop.js.map +1 -1
  737. package/dist/components/Programs/Programs.Mobile.js.map +1 -1
  738. package/dist/components/Programs/Programs.js.map +1 -1
  739. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  740. package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
  741. package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
  742. package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
  743. package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
  744. package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
  745. package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
  746. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  747. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  748. package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
  749. package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
  750. package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
  751. package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
  752. package/dist/components/QueryContext/QueryContext.js.map +1 -1
  753. package/dist/components/QueryCount/QueryCount.js.map +1 -1
  754. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  755. package/dist/components/QuerySortSelector.js.map +1 -1
  756. package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
  757. package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
  758. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  759. package/dist/components/QueryWrapper/QueryWrapper.js +27 -27
  760. package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
  761. package/dist/components/QueryWrapper/QueryWrapperLoadingScreen.js.map +1 -1
  762. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  763. package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
  764. package/dist/components/QueryWrapper/ViewMoreQueryResultsButton.js.map +1 -1
  765. package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
  766. package/dist/components/QueryWrapper/useComputeRowSelectionPrimaryKey.js.map +1 -1
  767. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  768. package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
  769. package/dist/components/QueryWrapper/useHasFacetedSelectColumn.js.map +1 -1
  770. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  771. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  772. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
  773. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  774. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  775. package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
  776. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  777. package/dist/components/RORInstitutionField/RORInstitutionField.js.map +1 -1
  778. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js +6 -8
  779. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
  780. package/dist/components/RegisterPageLogoutPrompt/RegisterPageLogoutPrompt.js.map +1 -1
  781. package/dist/components/ReleaseCard/ReleaseCard.js.map +1 -1
  782. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  783. package/dist/components/ReleaseCard/ReleaseCardMedium.js.map +1 -1
  784. package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
  785. package/dist/components/RenderIfInView/RenderIfInView.js.map +1 -1
  786. package/dist/components/ResizableContainer/ResizableContainer.js.map +1 -1
  787. package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
  788. package/dist/components/Resources/Resources.Desktop.js.map +1 -1
  789. package/dist/components/Resources/Resources.Mobile.js.map +1 -1
  790. package/dist/components/Resources/Resources.js +8 -11
  791. package/dist/components/Resources/Resources.js.map +1 -1
  792. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  793. package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
  794. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  795. package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
  796. package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
  797. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
  798. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  799. package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
  800. package/dist/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js.map +1 -1
  801. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  802. package/dist/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.js.map +1 -1
  803. package/dist/components/SchemaDrivenAnnotationEditor/widget/TextWidget.js.map +1 -1
  804. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  805. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
  806. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
  807. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  808. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementTextInstructions.js.map +1 -1
  809. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js.map +1 -1
  810. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
  811. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
  812. package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
  813. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  814. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  815. package/dist/components/ShowMore/ShowMore.js.map +1 -1
  816. package/dist/components/SignInButton.js.map +1 -1
  817. package/dist/components/SignInRequiredModal/SignInRequiredModal.js.map +1 -1
  818. package/dist/components/Skeleton/SkeletonButton.js.map +1 -1
  819. package/dist/components/Skeleton/SkeletonInlineBlock.js.map +1 -1
  820. package/dist/components/Skeleton/SkeletonParagraph.js.map +1 -1
  821. package/dist/components/Skeleton/SkeletonTable.js.map +1 -1
  822. package/dist/components/SmartLink/SmartButton.js.map +1 -1
  823. package/dist/components/SmartLink/SmartLink.js.map +1 -1
  824. package/dist/components/SmartLink/useSmartLink.js.map +1 -1
  825. package/dist/components/SourceAppImage.js.map +1 -1
  826. package/dist/components/SpinnerButton/SpinnerButton.js.map +1 -1
  827. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditor.js.map +1 -1
  828. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditorModal.js.map +1 -1
  829. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
  830. package/dist/components/StatisticsPlot.js.map +1 -1
  831. package/dist/components/StepperDialog/StepperDialog.js.map +1 -1
  832. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  833. package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditor.js.map +1 -1
  834. package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditorModal.js.map +1 -1
  835. package/dist/components/SubscriptionPage/ForumTopic.js.map +1 -1
  836. package/dist/components/SubscriptionPage/SubscriptionItem.js.map +1 -1
  837. package/dist/components/SubscriptionPage/SubscriptionPage.js.map +1 -1
  838. package/dist/components/SubscriptionPage/ThreadTopic.js.map +1 -1
  839. package/dist/components/SubscriptionPage/Topic.js.map +1 -1
  840. package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
  841. package/dist/components/SustainabilityScorecard/Dial.js.map +1 -1
  842. package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
  843. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
  844. package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js.map +1 -1
  845. package/dist/components/SustainabilityScorecard/SustainabilityScorecardUtils.js.map +1 -1
  846. package/dist/components/SynapseChat/AccessLevelMenu.js.map +1 -1
  847. package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
  848. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  849. package/dist/components/SynapseChat/SynapseChatDialog.js.map +1 -1
  850. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  851. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  852. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
  853. package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
  854. package/dist/components/SynapseChat/useChatState.js.map +1 -1
  855. package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
  856. package/dist/components/SynapseFooter/SynapseLinksColumn.js.map +1 -1
  857. package/dist/components/SynapseForm/DataDebug.js.map +1 -1
  858. package/dist/components/SynapseForm/Header.js.map +1 -1
  859. package/dist/components/SynapseForm/NavButtons.js.map +1 -1
  860. package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
  861. package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
  862. package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
  863. package/dist/components/SynapseForm/SynapseFormCheckboxWidget.js.map +1 -1
  864. package/dist/components/SynapseForm/SynapseFormCheckboxesWidget.js.map +1 -1
  865. package/dist/components/SynapseForm/SynapseFormRadioWidget.js.map +1 -1
  866. package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
  867. package/dist/components/SynapseForm/SynapseFormUtils.js.map +1 -1
  868. package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
  869. package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
  870. package/dist/components/SynapseForm/types.js.map +1 -1
  871. package/dist/components/SynapseForm/useGetFormPropsFromSearchParams.js.map +1 -1
  872. package/dist/components/SynapseHomepageV2/FloatingBlobsBackground.js.map +1 -1
  873. package/dist/components/SynapseHomepageV2/HomepageStyles.js.map +1 -1
  874. package/dist/components/SynapseHomepageV2/SynapseByTheNumbers.js.map +1 -1
  875. package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
  876. package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
  877. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
  878. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasets.js.map +1 -1
  879. package/dist/components/SynapseHomepageV2/SynapseFeatures.js.map +1 -1
  880. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js +18 -21
  881. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
  882. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
  883. package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
  884. package/dist/components/SynapseHomepageV2/SynapseHomepageV2.js.map +1 -1
  885. package/dist/components/SynapseHomepageV2/SynapseHotdrops.js.map +1 -1
  886. package/dist/components/SynapseHomepageV2/SynapseHotdropsItem.js.map +1 -1
  887. package/dist/components/SynapseHomepageV2/SynapseInAction.js.map +1 -1
  888. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
  889. package/dist/components/SynapseHomepageV2/SynapsePartners.js.map +1 -1
  890. package/dist/components/SynapseHomepageV2/SynapsePlan.js.map +1 -1
  891. package/dist/components/SynapseHomepageV2/SynapsePlanContent.js.map +1 -1
  892. package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
  893. package/dist/components/SynapseHomepageV2/SynapsePlansPage.js.map +1 -1
  894. package/dist/components/SynapseHomepageV2/SynapseSearchChips.js.map +1 -1
  895. package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
  896. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
  897. package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
  898. package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
  899. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +78 -78
  900. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  901. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  902. package/dist/components/SynapseSearchPageResults/HasAccessChip.js.map +1 -1
  903. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
  904. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
  905. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
  906. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
  907. package/dist/components/SynapseSearchPageResults/SynapseSearchPage.js.map +1 -1
  908. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
  909. package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.js.map +1 -1
  910. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
  911. package/dist/components/SynapseSearchPageResults/chipStyles.js.map +1 -1
  912. package/dist/components/SynapseTable/CustomControls/CustomControlButton.js.map +1 -1
  913. package/dist/components/SynapseTable/CustomControls/CustomControlPanel.js.map +1 -1
  914. package/dist/components/SynapseTable/CustomControls/CustomControls.js.map +1 -1
  915. package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
  916. package/dist/components/SynapseTable/ExpandCollapseButton.js.map +1 -1
  917. package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
  918. package/dist/components/SynapseTable/NoContentAvailable.js.map +1 -1
  919. package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
  920. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
  921. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  922. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
  923. package/dist/components/SynapseTable/SearchResultsNotFound.js.map +1 -1
  924. package/dist/components/SynapseTable/SearchV2.js.map +1 -1
  925. package/dist/components/SynapseTable/SqlEditor.js.map +1 -1
  926. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  927. package/dist/components/SynapseTable/SynapseTableCell/EntityIdList.js.map +1 -1
  928. package/dist/components/SynapseTable/SynapseTableCell/EvaluationIdRenderer.js.map +1 -1
  929. package/dist/components/SynapseTable/SynapseTableCell/JSON/ComplexJSONRenderer.js.map +1 -1
  930. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONArrayRenderer.js.map +1 -1
  931. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONObjectRenderer.js.map +1 -1
  932. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONPrimitiveRenderer.js.map +1 -1
  933. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONRendererUtils.js.map +1 -1
  934. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONTableCellRenderer.js.map +1 -1
  935. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
  936. package/dist/components/SynapseTable/SynapseTableCell/UserIdList.js.map +1 -1
  937. package/dist/components/SynapseTable/SynapseTableConstants.js.map +1 -1
  938. package/dist/components/SynapseTable/SynapseTableContext.js.map +1 -1
  939. package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
  940. package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
  941. package/dist/components/SynapseTable/TableIsEmpty.js.map +1 -1
  942. package/dist/components/SynapseTable/TablePagination.js.map +1 -1
  943. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  944. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
  945. package/dist/components/SynapseTable/datasets/DatasetEditorCheckboxCell.js.map +1 -1
  946. package/dist/components/SynapseTable/datasets/DatasetEditorUtils.js.map +1 -1
  947. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  948. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +131 -133
  949. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  950. package/dist/components/SynapseTable/datasets/EntityFetchErrorCell.js.map +1 -1
  951. package/dist/components/SynapseTable/export/ADDiscoveryPortalInstructions.js.map +1 -1
  952. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +48 -51
  953. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js.map +1 -1
  954. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformInstructions.js.map +1 -1
  955. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js.map +1 -1
  956. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  957. package/dist/components/SynapseTable/export/ExternalPlatformDisclaimer.js.map +1 -1
  958. package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
  959. package/dist/components/SynapseTable/table-top/DownloadLoginModal.js.map +1 -1
  960. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  961. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  962. package/dist/components/SynapseTable/useTableSort.js.map +1 -1
  963. package/dist/components/SystemUseNotification/SystemUseNotification.js.map +1 -1
  964. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +4 -4
  965. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  966. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
  967. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/FieldWithRecommendedMinimum.js.map +1 -1
  968. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js.map +1 -1
  969. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  970. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js.map +1 -1
  971. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  972. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  973. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +9 -9
  974. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  975. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  976. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
  977. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
  978. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
  979. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  980. package/dist/components/TableColumnSchemaEditor/Validators/DefaultValueValidator.js.map +1 -1
  981. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
  982. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.js.map +1 -1
  983. package/dist/components/TableColumnSchemaEditor/Validators/EnumValuesValidator.js.map +1 -1
  984. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
  985. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
  986. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
  987. package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
  988. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  989. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  990. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  991. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
  992. package/dist/components/TanStackTable/TableBody.js.map +1 -1
  993. package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
  994. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  995. package/dist/components/TeamBadge.js.map +1 -1
  996. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  997. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  998. package/dist/components/TemplateComponent.js.map +1 -1
  999. package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
  1000. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  1001. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
  1002. package/dist/components/TextField/TextField.js.map +1 -1
  1003. package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
  1004. package/dist/components/TextToComponentCollapse.js.map +1 -1
  1005. package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
  1006. package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
  1007. package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
  1008. package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
  1009. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
  1010. package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
  1011. package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
  1012. package/dist/components/TotalQueryResults.js.map +1 -1
  1013. package/dist/components/UserCard/Avatar.js.map +1 -1
  1014. package/dist/components/UserCard/UserBadge.js.map +1 -1
  1015. package/dist/components/UserCard/UserCard.js.map +1 -1
  1016. package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
  1017. package/dist/components/UserCard/UserCardLarge.js.map +1 -1
  1018. package/dist/components/UserCard/UserCardMedium.js.map +1 -1
  1019. package/dist/components/UserCardList/UserCardList.js.map +1 -1
  1020. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
  1021. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
  1022. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
  1023. package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
  1024. package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
  1025. package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
  1026. package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
  1027. package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
  1028. package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
  1029. package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
  1030. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
  1031. package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
  1032. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  1033. package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
  1034. package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
  1035. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
  1036. package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
  1037. package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
  1038. package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
  1039. package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
  1040. package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
  1041. package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
  1042. package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
  1043. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  1044. package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
  1045. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  1046. package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
  1047. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  1048. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  1049. package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
  1050. package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
  1051. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  1052. package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
  1053. package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
  1054. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
  1055. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  1056. package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
  1057. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  1058. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  1059. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
  1060. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  1061. package/dist/components/doi/DoiFormSchemas.js.map +1 -1
  1062. package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
  1063. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
  1064. package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
  1065. package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
  1066. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  1067. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  1068. package/dist/components/download_list/index.js.map +1 -1
  1069. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  1070. package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
  1071. package/dist/components/entity/metadata/EntityModal.js.map +1 -1
  1072. package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
  1073. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  1074. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  1075. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
  1076. package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
  1077. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  1078. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
  1079. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
  1080. package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
  1081. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  1082. package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
  1083. package/dist/components/error/ErrorBanner.js.map +1 -1
  1084. package/dist/components/error/ErrorChip.js.map +1 -1
  1085. package/dist/components/error/ErrorPage.js +24 -24
  1086. package/dist/components/error/ErrorPage.js.map +1 -1
  1087. package/dist/components/error/RouteErrorBoundary.js.map +1 -1
  1088. package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
  1089. package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
  1090. package/dist/components/favorites/FavoriteButton.js.map +1 -1
  1091. package/dist/components/favorites/FavoritesPage.js.map +1 -1
  1092. package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
  1093. package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
  1094. package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
  1095. package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
  1096. package/dist/components/home_page/ExpandableContent.js.map +1 -1
  1097. package/dist/components/index.js +48 -47
  1098. package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
  1099. package/dist/components/layout/SWCHeader.js.map +1 -1
  1100. package/dist/components/layout/SWCPageLayout.js.map +1 -1
  1101. package/dist/components/menu/ComplexMenu.js.map +1 -1
  1102. package/dist/components/menu/DropdownMenu.js.map +1 -1
  1103. package/dist/components/row_renderers/Dataset.js.map +1 -1
  1104. package/dist/components/row_renderers/Funder.js.map +1 -1
  1105. package/dist/components/row_renderers/ObservationCard.js.map +1 -1
  1106. package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
  1107. package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
  1108. package/dist/components/styled/HoverPopover.js.map +1 -1
  1109. package/dist/components/styled/InlineBadge.js.map +1 -1
  1110. package/dist/components/styled/InputSizedButton.js.map +1 -1
  1111. package/dist/components/styled/LargeButton.js.map +1 -1
  1112. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  1113. package/dist/components/styled/LightTooltip.js.map +1 -1
  1114. package/dist/components/styled/StyledFormControl.js.map +1 -1
  1115. package/dist/components/styled/StyledPopover.js.map +1 -1
  1116. package/dist/components/styled/StyledTableContainer.js.map +1 -1
  1117. package/dist/components/styled/WideButton.js.map +1 -1
  1118. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +39 -42
  1119. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -1
  1120. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  1121. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  1122. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
  1123. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -1
  1124. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -1
  1125. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -1
  1126. package/dist/components/table/CsvPreview/useCsvUploadPreview.js +11 -11
  1127. package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -1
  1128. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -1
  1129. package/dist/components/table/CsvTableDescriptorForm/CsvTableDescriptorForm.js.map +1 -1
  1130. package/dist/components/trash/TrashCanList.js.map +1 -1
  1131. package/dist/components/utils/Blocker.js.map +1 -1
  1132. package/dist/components/utils/ConditionalWrapper.js.map +1 -1
  1133. package/dist/components/utils/VisibilityObserver.js.map +1 -1
  1134. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  1135. package/dist/components/widgets/EntityColumnImage.js.map +1 -1
  1136. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  1137. package/dist/components/widgets/ImageFileHandle.js.map +1 -1
  1138. package/dist/components/widgets/LoginAwareButton.js.map +1 -1
  1139. package/dist/components/widgets/Range.js.map +1 -1
  1140. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  1141. package/dist/components/widgets/SynapseImage.js.map +1 -1
  1142. package/dist/components/widgets/SynapseVideo.js.map +1 -1
  1143. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  1144. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  1145. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  1146. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  1147. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  1148. package/dist/components/widgets/facet-nav/PlotsContainerSkeleton.js.map +1 -1
  1149. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
  1150. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
  1151. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  1152. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
  1153. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  1154. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
  1155. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  1156. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterSkeleton.js.map +1 -1
  1157. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  1158. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  1159. package/dist/components/widgets/query-filter/FacetChip.js.map +1 -1
  1160. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  1161. package/dist/components/widgets/query-filter/FacetFilterHeader.js.map +1 -1
  1162. package/dist/components/widgets/query-filter/FacetFilterSkeleton.js.map +1 -1
  1163. package/dist/components/widgets/query-filter/FacetFilterUtils.js.map +1 -1
  1164. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  1165. package/dist/components/widgets/query-filter/RangeFacetFilter.js +3 -3
  1166. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  1167. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +41 -41
  1168. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  1169. package/dist/features/curator/GridPage/GridPage.js.map +1 -1
  1170. package/dist/features/curator/GridPage/components/GridPageRouter.js.map +1 -1
  1171. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  1172. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
  1173. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  1174. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  1175. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  1176. package/dist/features/curator/dashboard/components/UserOrTeamChip.js.map +1 -1
  1177. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +5 -0
  1178. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  1179. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +227 -181
  1180. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  1181. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  1182. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +3 -0
  1183. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  1184. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  1185. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  1186. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
  1187. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  1188. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  1189. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  1190. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  1191. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  1192. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  1193. package/dist/features/entity/metadata-task/utils/constants.d.ts +5 -0
  1194. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  1195. package/dist/features/entity/metadata-task/utils/constants.js +2 -2
  1196. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  1197. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  1198. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
  1199. package/dist/features/entity/metadata-task/utils/getLatestGridSessionForSource.js.map +1 -1
  1200. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -1
  1201. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  1202. package/dist/index.js +54 -53
  1203. package/dist/index.js.map +1 -1
  1204. package/dist/mocks/MockAccessApprovals.js.map +1 -1
  1205. package/dist/mocks/MockSynapseContext.js.map +1 -1
  1206. package/dist/mocks/accessRequirement/mockAccessRequirementAcls.js.map +1 -1
  1207. package/dist/mocks/accessRequirement/mockAccessRequirements.js.map +1 -1
  1208. package/dist/mocks/applicationSessionContext/MockApplicationSessionContext.js.map +1 -1
  1209. package/dist/mocks/challenge/mockChallenge.js.map +1 -1
  1210. package/dist/mocks/chat/mockChat.js.map +1 -1
  1211. package/dist/mocks/curation/mockCurationTask.js.map +1 -1
  1212. package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
  1213. package/dist/mocks/dataaccess/MockResearchProject.js.map +1 -1
  1214. package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
  1215. package/dist/mocks/dataaccess/mockAccessRequest.js.map +1 -1
  1216. package/dist/mocks/discussion/mock_discussion.js.map +1 -1
  1217. package/dist/mocks/doi/MockDoi.js.map +1 -1
  1218. package/dist/mocks/entity/index.js.map +1 -1
  1219. package/dist/mocks/entity/mockDataset.js.map +1 -1
  1220. package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
  1221. package/dist/mocks/entity/mockEntity.js.map +1 -1
  1222. package/dist/mocks/entity/mockEvaluationQueue.js.map +1 -1
  1223. package/dist/mocks/entity/mockFileEntity.js.map +1 -1
  1224. package/dist/mocks/entity/mockFileEntityACLVariants.js.map +1 -1
  1225. package/dist/mocks/entity/mockFileView.js.map +1 -1
  1226. package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
  1227. package/dist/mocks/entity/mockProject.js.map +1 -1
  1228. package/dist/mocks/entity/mockProjectView.js.map +1 -1
  1229. package/dist/mocks/entity/mockReleaseCardsTable.js.map +1 -1
  1230. package/dist/mocks/entity/mockRootEntity.js.map +1 -1
  1231. package/dist/mocks/entity/mockTableEntity.js.map +1 -1
  1232. package/dist/mocks/faker/fakerUtils.js.map +1 -1
  1233. package/dist/mocks/faker/generateDiscussion.js.map +1 -1
  1234. package/dist/mocks/faker/generateEvaluation.js.map +1 -1
  1235. package/dist/mocks/faker/generateFakeEntity.js.map +1 -1
  1236. package/dist/mocks/faker/generateSubscription.js.map +1 -1
  1237. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  1238. package/dist/mocks/mockCertificationQuiz.js.map +1 -1
  1239. package/dist/mocks/mockDataCatalogQuery.js.map +1 -1
  1240. package/dist/mocks/mockFileViewQuery.js.map +1 -1
  1241. package/dist/mocks/mockOAuthClientAcls.js.map +1 -1
  1242. package/dist/mocks/mockQueryResponseData.js.map +1 -1
  1243. package/dist/mocks/mockQueryResponseDataWithManyEnumFacets.js.map +1 -1
  1244. package/dist/mocks/mockSchema.js.map +1 -1
  1245. package/dist/mocks/mockSearchQueryData.js.map +1 -1
  1246. package/dist/mocks/mockShortIo.js.map +1 -1
  1247. package/dist/mocks/mockSourceAppConfigQuery.js.map +1 -1
  1248. package/dist/mocks/mockSubscription.js.map +1 -1
  1249. package/dist/mocks/mockWiki.js.map +1 -1
  1250. package/dist/mocks/mockWikiPageKey.js.map +1 -1
  1251. package/dist/mocks/mock_drug_tool_data.js.map +1 -1
  1252. package/dist/mocks/mock_file_handle.js.map +1 -1
  1253. package/dist/mocks/mock_file_statistics.js.map +1 -1
  1254. package/dist/mocks/mock_has_access_data.js.map +1 -1
  1255. package/dist/mocks/mock_upload_destination.js.map +1 -1
  1256. package/dist/mocks/msw/handlers/accessRequirementAclHandlers.js.map +1 -1
  1257. package/dist/mocks/msw/handlers/accessRequirementHandlers.js.map +1 -1
  1258. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  1259. package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
  1260. package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
  1261. package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
  1262. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  1263. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  1264. package/dist/mocks/msw/handlers/dataciteHandlers.js.map +1 -1
  1265. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  1266. package/dist/mocks/msw/handlers/doiHandlers.js.map +1 -1
  1267. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  1268. package/dist/mocks/msw/handlers/evaluationHandlers.js.map +1 -1
  1269. package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
  1270. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  1271. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  1272. package/dist/mocks/msw/handlers/messageHandlers.js.map +1 -1
  1273. package/dist/mocks/msw/handlers/oauthClientAclHandlers.js.map +1 -1
  1274. package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
  1275. package/dist/mocks/msw/handlers/projectStorageHandlers.js.map +1 -1
  1276. package/dist/mocks/msw/handlers/realmHandlers.js.map +1 -1
  1277. package/dist/mocks/msw/handlers/researchProjectHandlers.js.map +1 -1
  1278. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
  1279. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  1280. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  1281. package/dist/mocks/msw/handlers/shortIoHandlers.js.map +1 -1
  1282. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  1283. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  1284. package/dist/mocks/msw/handlers/tableQueryService.js.map +1 -1
  1285. package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
  1286. package/dist/mocks/msw/handlers/termsOfServiceHandlers.js.map +1 -1
  1287. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  1288. package/dist/mocks/msw/handlers/webhookHandlers.js.map +1 -1
  1289. package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
  1290. package/dist/mocks/msw/handlers.js.map +1 -1
  1291. package/dist/mocks/msw/server.d.ts +1 -1
  1292. package/dist/mocks/msw/server.d.ts.map +1 -1
  1293. package/dist/mocks/msw/server.js.map +1 -1
  1294. package/dist/mocks/msw/util/BasicMockedCrudService.js.map +1 -1
  1295. package/dist/mocks/oauth/MockClient.js.map +1 -1
  1296. package/dist/mocks/personalAccessToken/mockPersonalAccessToken.js.map +1 -1
  1297. package/dist/mocks/projectStorage/mockProjectStorageLimits.js.map +1 -1
  1298. package/dist/mocks/provenance/mockActivity.js.map +1 -1
  1299. package/dist/mocks/query/defaultFileViewColumnModels.js.map +1 -1
  1300. package/dist/mocks/query/mockFeaturedDataTabsQueryData.js.map +1 -1
  1301. package/dist/mocks/query/mockHomepageQueryResultData.js.map +1 -1
  1302. package/dist/mocks/query/mockProjectViewQueryResults.js.map +1 -1
  1303. package/dist/mocks/query/mockRejectionReasonsTableQueryResultBundle.js.map +1 -1
  1304. package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
  1305. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
  1306. package/dist/mocks/query/mock_query_data.js.map +1 -1
  1307. package/dist/mocks/query/syn16787123.js.map +1 -1
  1308. package/dist/mocks/query/syn17328596.js.map +1 -1
  1309. package/dist/mocks/query/syn51735464.js.map +1 -1
  1310. package/dist/mocks/query/syn51735464GroupBySpecies.js.map +1 -1
  1311. package/dist/mocks/realm/mockRealmPrincipal.js.map +1 -1
  1312. package/dist/mocks/team/mockTeam.js.map +1 -1
  1313. package/dist/mocks/termsOfService/mockTermsOfService.js.map +1 -1
  1314. package/dist/mocks/user/mock_user_profile.js.map +1 -1
  1315. package/dist/mocks/usergroup/mockUserGroup.js.map +1 -1
  1316. package/dist/ror-client/index.js.map +1 -1
  1317. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  1318. package/dist/stories/ToastDemo.js.map +1 -1
  1319. package/dist/stories/stubs/Alert/MuiAlert.js.map +1 -1
  1320. package/dist/stories/stubs/Button/MuiButton.js.map +1 -1
  1321. package/dist/stories/stubs/Dialog/MuiDialog.js.map +1 -1
  1322. package/dist/stories/stubs/TextField/MuiTextField.js.map +1 -1
  1323. package/dist/stories/stubs/Tooltip/MuiTooltip.js.map +1 -1
  1324. package/dist/synapse-client/HttpClient.js.map +1 -1
  1325. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  1326. package/dist/synapse-client/SynapseClient.js +61 -69
  1327. package/dist/synapse-client/SynapseClient.js.map +1 -1
  1328. package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
  1329. package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
  1330. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  1331. package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
  1332. package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
  1333. package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
  1334. package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
  1335. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  1336. package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
  1337. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
  1338. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  1339. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  1340. package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
  1341. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
  1342. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  1343. package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
  1344. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  1345. package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
  1346. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  1347. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  1348. package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
  1349. package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
  1350. package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
  1351. package/dist/synapse-queries/doi/useDOI.js.map +1 -1
  1352. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  1353. package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
  1354. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  1355. package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
  1356. package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
  1357. package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
  1358. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  1359. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  1360. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  1361. package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
  1362. package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
  1363. package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
  1364. package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
  1365. package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
  1366. package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
  1367. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  1368. package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
  1369. package/dist/synapse-queries/entity/useSchema.js.map +1 -1
  1370. package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
  1371. package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
  1372. package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
  1373. package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
  1374. package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
  1375. package/dist/synapse-queries/file/useFiles.js.map +1 -1
  1376. package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
  1377. package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
  1378. package/dist/synapse-queries/forum/useForum.js.map +1 -1
  1379. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  1380. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  1381. package/dist/synapse-queries/github/useGithub.js.map +1 -1
  1382. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  1383. package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
  1384. package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
  1385. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  1386. package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
  1387. package/dist/synapse-queries/message/useMessage.js.map +1 -1
  1388. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  1389. package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
  1390. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  1391. package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
  1392. package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
  1393. package/dist/synapse-queries/ror/index.js.map +1 -1
  1394. package/dist/synapse-queries/search/useSearch.js.map +1 -1
  1395. package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
  1396. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  1397. package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
  1398. package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
  1399. package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
  1400. package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
  1401. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  1402. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  1403. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  1404. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  1405. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  1406. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  1407. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  1408. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  1409. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  1410. package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
  1411. package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
  1412. package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
  1413. package/dist/synapse-queries/user/useProjects.js.map +1 -1
  1414. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  1415. package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
  1416. package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
  1417. package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
  1418. package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
  1419. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  1420. package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
  1421. package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
  1422. package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
  1423. package/dist/testutils/LocationTracker.js.map +1 -1
  1424. package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
  1425. package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
  1426. package/dist/testutils/TestingLibraryUtils.js +18 -16
  1427. package/dist/testutils/TestingLibraryUtils.js.map +1 -1
  1428. package/dist/testutils/muiDatePickerMock.js.map +1 -1
  1429. package/dist/testutils/vitest.setup.js.map +1 -1
  1430. package/dist/theme/DefaultTheme.js.map +1 -1
  1431. package/dist/theme/ThemeProvider.js.map +1 -1
  1432. package/dist/theme/mergeTheme.js.map +1 -1
  1433. package/dist/theme/palette/Palettes.js.map +1 -1
  1434. package/dist/theme/spreadSx.js.map +1 -1
  1435. package/dist/theme/typography/Link.js.map +1 -1
  1436. package/dist/theme/typography/Typography.js.map +1 -1
  1437. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1438. package/dist/utils/APIConstants.js.map +1 -1
  1439. package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
  1440. package/dist/utils/AppUtils/AppUtils.js +11 -11
  1441. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  1442. package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
  1443. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  1444. package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
  1445. package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
  1446. package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
  1447. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  1448. package/dist/utils/ContentTypeUtils.js.map +1 -1
  1449. package/dist/utils/OrientationBannerConstants.js.map +1 -1
  1450. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  1451. package/dist/utils/SynapseConstants.js.map +1 -1
  1452. package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
  1453. package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
  1454. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  1455. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  1456. package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
  1457. package/dist/utils/context/AridhiaContext.js.map +1 -1
  1458. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  1459. package/dist/utils/context/FullContextProvider.js.map +1 -1
  1460. package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
  1461. package/dist/utils/context/SynapseContext.js.map +1 -1
  1462. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  1463. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  1464. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  1465. package/dist/utils/functions/DateFormatter.js.map +1 -1
  1466. package/dist/utils/functions/DateTimeUtils.js.map +1 -1
  1467. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  1468. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  1469. package/dist/utils/functions/GridApiUtils.js.map +1 -1
  1470. package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
  1471. package/dist/utils/functions/IsExternalLink.js.map +1 -1
  1472. package/dist/utils/functions/ObjectUtils.js.map +1 -1
  1473. package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
  1474. package/dist/utils/functions/RealmUtils.js.map +1 -1
  1475. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  1476. package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
  1477. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  1478. package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
  1479. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  1480. package/dist/utils/functions/StringUtils.js.map +1 -1
  1481. package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
  1482. package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
  1483. package/dist/utils/functions/colorPalette.js.map +1 -1
  1484. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  1485. package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
  1486. package/dist/utils/functions/generateCsrfToken.js.map +1 -1
  1487. package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
  1488. package/dist/utils/functions/getEndpoint.js +3 -3
  1489. package/dist/utils/functions/getEndpoint.js.map +1 -1
  1490. package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
  1491. package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
  1492. package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
  1493. package/dist/utils/functions/getUserData.js.map +1 -1
  1494. package/dist/utils/functions/queryUtils.js.map +1 -1
  1495. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  1496. package/dist/utils/functions/unCamelCase.js.map +1 -1
  1497. package/dist/utils/hooks/useConfirmItems.js.map +1 -1
  1498. package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
  1499. package/dist/utils/hooks/useCookiePreferences.js +24 -23
  1500. package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
  1501. package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
  1502. package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
  1503. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  1504. package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
  1505. package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
  1506. package/dist/utils/hooks/useGetGoalData.js +2 -4
  1507. package/dist/utils/hooks/useGetGoalData.js.map +1 -1
  1508. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  1509. package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
  1510. package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
  1511. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  1512. package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
  1513. package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
  1514. package/dist/utils/hooks/useIsBot.js.map +1 -1
  1515. package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
  1516. package/dist/utils/hooks/useListState.js.map +1 -1
  1517. package/dist/utils/hooks/useLogin.js.map +1 -1
  1518. package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
  1519. package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
  1520. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  1521. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  1522. package/dist/utils/hooks/useOverlay.js.map +1 -1
  1523. package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
  1524. package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
  1525. package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
  1526. package/dist/utils/hooks/useSet.js.map +1 -1
  1527. package/dist/utils/hooks/useShowDesktop.js.map +1 -1
  1528. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  1529. package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
  1530. package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
  1531. package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
  1532. package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
  1533. package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
  1534. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  1535. package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
  1536. package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
  1537. package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
  1538. package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
  1539. package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
  1540. package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
  1541. package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
  1542. package/dist/utils/html/TargetEnum.js.map +1 -1
  1543. package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
  1544. package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
  1545. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  1546. package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
  1547. package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
  1548. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  1549. package/dist/utils/jsonschema/getType.js.map +1 -1
  1550. package/dist/utils/searchDefaults.js.map +1 -1
  1551. package/dist/utils/slots/SlotUtils.js.map +1 -1
  1552. package/dist/utils/types/IsType.js.map +1 -1
  1553. package/package.json +67 -66
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseGrid.js","names":["GridMenuButton","UploadCsvToGridButton","ExportCsvFromGridButton","useGetSchemaForGrid","MergeGridWithSourceTableButton","computeReplicaSelectionModel","modelRowsToGrid","SkeletonTable","useGetEntity","getSchemaPropertiesInfo","SmartToyTwoTone","Box","Stack","Tooltip","Typography","SynapseSpinner","Grid","CreateGridRequest","GridSession","ClickableJsonCrdt","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","DataSheetGridRef","SelectionWithId","GridAgentChat","DataGrid","DataGridRow","GridModel","Operation","useGridUndoRedo","StartGridSession","StartGridSessionHandle","useDataGridWebSocket","applyModelChange","ModelChange","removeNoOpOperations","mapOperationsToModelChanges","useGetCurrentUserBundle","useListGridReplicas","useGridReplicaUsers","useRemoteSelections","enrichRowsWithChangeInfo","CertificationRequirement","ValidationAlert","SynapseGridProps","agentRegistrationId","showDebugInfo","SynapseGridHandle","initializeGrid","request","loadExistingSession","sessionId","SynapseGrid","t0","ref","$","_c","t1","undefined","session","setSession","replicaId","setReplicaId","chatOpen","setChatOpen","lastSelection","setLastSelection","startGridSessionRef","gridRef","data","userBundle","isLoading","t2","refetch","refetchReplicas","t3","replicas","t4","handleReplicaConnectionChange","currentUserId","userId","String","replicaUserMap","t5","t6","Symbol","for","current","handleStartSession","handleLoadSession","t7","onGridReady","onReplicaConnected","onReplicaDisconnected","isConnected","websocketInstance","hasCompletedInitialSync","isSyncing","model","modelSnapshot","connect","presignedUrl","hasSufficientData","websocketInstanceRef","t8","t9","lastConnectParamsRef","t10","nextParams","prevParams","t11","t12","t13","t14","setActiveCell","jsonSchema","t15","sourceEntityId","t16","enabled","entityData","entityIsView","concreteType","t17","t18","schemaPropertiesInfo","connectionStatus","remoteSelections","t19","rowValues","t20","enrichedRowValues","t21","sendPatch","commit","t22","t23","t24","model_0","modelChanges","forEach","change","applyAndCommitChanges","t25","change_0","console","error","type","applyModelChangeFromUndoRedo","undoUI","redoUI","addOperationsToUndoStack","clearRedoStack","t26","newValue","operations","length","modelChanges_0","handleChange","t27","opts","selection","replicaSelectionModel","toString","handleSelectionChange","t28","rowIndex","colIndex","col","row","handleNavigateToCell","isCertified","t29","xs","xl","t30","t31","t32","gridJsonSchema$Id","substring","color","connectedReplicas","filter","_temp","map","r_0","i","r","margin","fontSize","JSON","stringify","cursor","textDecoration","t33","t34","columnNames","columnOrder","marginBottom","justifyContent","display","alignItems","gap","mr","padding","border","maxHeight","overflowY","t35"],"sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport UploadCsvToGridButton from '@/components/DataGrid/components/UploadCsvToGridButton'\nimport ExportCsvFromGridButton from '@/components/DataGrid/components/ExportCsvFromGridButton'\nimport useGetSchemaForGrid from '@/components/DataGrid/hooks/useGetSchemaForGrid'\nimport MergeGridWithSourceTableButton from '@/components/DataGrid/MergeGridWithSourceTableButton'\nimport computeReplicaSelectionModel from '@/components/DataGrid/utils/computeReplicaSelectionModel'\nimport modelRowsToGrid from '@/components/DataGrid/utils/modelRowsToGrid'\nimport { SkeletonTable } from '@/components/index'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { getSchemaPropertiesInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { SmartToyTwoTone } from '@mui/icons-material'\nimport { Box, Stack, Tooltip, Typography } from '@mui/material'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport Grid from '@mui/material/Grid'\nimport {\n CreateGridRequest,\n GridSession,\n} from '@sage-bionetworks/synapse-client'\nimport { ClickableJsonCrdt } from 'clickable-json'\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { DataSheetGridRef } from '@sage-bionetworks/react-datasheet-grid'\nimport { SelectionWithId } from '@sage-bionetworks/react-datasheet-grid'\nimport GridAgentChat from '../SynapseChat/GridAgentChat'\nimport DataGrid from './DataGrid'\nimport { DataGridRow, GridModel, Operation } from './DataGridTypes'\nimport { useGridUndoRedo } from './hooks/useGridUndoRedo'\nimport { StartGridSession, StartGridSessionHandle } from './StartGridSession'\nimport { useDataGridWebSocket } from './useDataGridWebsocket'\nimport { applyModelChange, ModelChange } from './utils/applyModelChange'\nimport { removeNoOpOperations } from './utils/DataGridUtils'\nimport { mapOperationsToModelChanges } from './utils/mapOperationsToModelChanges'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useListGridReplicas } from '@/synapse-queries/grid/useGridSession'\nimport { useGridReplicaUsers } from './hooks/useGridReplicaUsers'\nimport { useRemoteSelections } from './hooks/useRemoteSelections'\nimport { enrichRowsWithChangeInfo } from './utils/enrichRowsWithChangeInfo'\nimport CertificationRequirement from '@/components/AccessRequirementList/RequirementItem/CertificationRequirement'\nimport { ValidationAlert } from './components/ValidationAlert'\n\nexport type SynapseGridProps = {\n agentRegistrationId?: string\n showDebugInfo?: boolean\n}\n\nexport type SynapseGridHandle = {\n initializeGrid: (request: CreateGridRequest) => void\n loadExistingSession: (sessionId: string) => void\n}\n\nconst SynapseGrid = forwardRef<SynapseGridHandle, SynapseGridProps>(\n ({ agentRegistrationId, showDebugInfo = false }, ref) => {\n const [session, setSession] = useState<GridSession | null>(null)\n const [replicaId, setReplicaId] = useState<number | null>(null)\n const [chatOpen, setChatOpen] = useState(false)\n const [lastSelection, setLastSelection] = useState<SelectionWithId | null>(\n null,\n )\n\n const startGridSessionRef = useRef<StartGridSessionHandle | null>(null)\n const gridRef = useRef<DataSheetGridRef | null>(null)\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const { data: replicas = [], refetch: refetchReplicas } =\n useListGridReplicas(session?.sessionId)\n\n const handleReplicaConnectionChange = useCallback(() => {\n void refetchReplicas()\n }, [refetchReplicas])\n\n // ── Attribution infrastructure ─────────────────────────────────────────\n const currentUserId =\n userBundle?.userId != null ? String(userBundle.userId) : undefined\n\n const replicaUserMap = useGridReplicaUsers(\n replicas,\n replicaId,\n currentUserId,\n )\n\n useImperativeHandle(\n ref,\n () => ({\n initializeGrid: (request: CreateGridRequest) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleStartSession(request)\n }\n },\n loadExistingSession: (sessionId: string) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleLoadSession(sessionId)\n }\n },\n }),\n [],\n )\n\n // WebSocket state\n const {\n isConnected,\n websocketInstance,\n hasCompletedInitialSync,\n isSyncing,\n model,\n modelSnapshot,\n connect,\n presignedUrl,\n hasSufficientData,\n } = useDataGridWebSocket({\n onGridReady: handleReplicaConnectionChange,\n onReplicaConnected: handleReplicaConnectionChange,\n onReplicaDisconnected: handleReplicaConnectionChange,\n })\n\n const websocketInstanceRef = useRef<typeof websocketInstance | null>(null)\n\n useEffect(() => {\n websocketInstanceRef.current = websocketInstance\n }, [websocketInstance])\n\n // Track last connection parameters to avoid redundant connections\n const lastConnectParamsRef = useRef<{\n replicaId: number\n sessionId: string\n } | null>(null)\n\n useEffect(() => {\n if (\n replicaId === null ||\n replicaId === undefined ||\n !session?.sessionId\n ) {\n lastConnectParamsRef.current = null\n return\n }\n\n const nextParams = {\n replicaId,\n sessionId: session.sessionId,\n }\n\n const prevParams = lastConnectParamsRef.current\n\n if (\n prevParams &&\n prevParams.replicaId === nextParams.replicaId &&\n prevParams.sessionId === nextParams.sessionId\n ) {\n return\n }\n\n lastConnectParamsRef.current = nextParams\n connect(replicaId, session.sessionId)\n }, [replicaId, session?.sessionId, connect])\n\n // Reset grid state when model is reset (new session/replica)\n useEffect(() => {\n if (model === null) {\n // Clear any grid-specific state when starting a new session\n setLastSelection(null)\n // Clear active cell if grid exists\n if (gridRef.current) {\n gridRef.current.setActiveCell(null)\n }\n }\n }, [model])\n\n const jsonSchema = useGetSchemaForGrid(session)\n\n // Grid behaves differently for views vs recordSets\n // Note for future: can get modifiedOn to refresh grid when view changes\n const { data: entityData } = useGetEntity(\n session?.sourceEntityId,\n undefined,\n {\n enabled: !!session?.sourceEntityId,\n },\n )\n\n const entityIsView =\n entityData?.concreteType ===\n 'org.sagebionetworks.repo.model.table.EntityView'\n\n // Process schema properties once\n const schemaPropertiesInfo = useMemo(() => {\n return getSchemaPropertiesInfo(jsonSchema ?? null)\n }, [jsonSchema])\n\n const connectionStatus = isConnected ? 'Connected' : 'Disconnected'\n\n const remoteSelections = useRemoteSelections(\n modelSnapshot,\n model,\n replicas,\n replicaId,\n )\n\n // Transform the model view rows and columns to DataSheetGrid format\n const rowValues = useMemo(\n () => (modelSnapshot ? modelRowsToGrid(model, modelSnapshot) : []),\n [model, modelSnapshot],\n )\n\n // Enrich rows with per-cell change attribution for CSS indicators and tooltips\n const enrichedRowValues = useMemo(\n () =>\n enrichRowsWithChangeInfo(\n rowValues,\n model,\n modelSnapshot,\n replicaUserMap,\n ),\n [rowValues, model, modelSnapshot, replicaUserMap],\n )\n\n const commit = useCallback(() => {\n if (!isConnected || !websocketInstanceRef.current) {\n return\n }\n\n websocketInstanceRef.current.sendPatch()\n }, [isConnected, websocketInstanceRef])\n\n useEffect(() => {\n if (isConnected) {\n commit()\n }\n }, [isConnected, commit])\n\n const applyAndCommitChanges = useCallback(\n (model: GridModel, modelChanges: ModelChange[]) => {\n // Apply each change to the model\n modelChanges.forEach(change => {\n applyModelChange(model, change, schemaPropertiesInfo)\n })\n\n commit()\n },\n [commit, schemaPropertiesInfo],\n )\n\n const applyModelChangeFromUndoRedo = useCallback(\n (change: ModelChange) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n if (change.type === 'DELETE' && gridRef.current) {\n // The user may have set a cell as active that we are removing with an 'undo'. In that case, clear the active state\n gridRef.current.setActiveCell(null)\n }\n\n applyAndCommitChanges(model, [change])\n },\n [model, applyAndCommitChanges],\n )\n\n const { undoUI, redoUI, addOperationsToUndoStack, clearRedoStack } =\n useGridUndoRedo(applyModelChangeFromUndoRedo)\n\n const handleChange = useCallback(\n (newValue: DataGridRow[], operations: Operation[]) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n // Check that something changed before updating the model\n operations = removeNoOpOperations(newValue, rowValues, operations)\n\n if (operations.length > 0) {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n // Track row creation, updates, and deletions to keep UI state and undo history in sync\n\n // Add all operations to the undo stack\n addOperationsToUndoStack(operations, rowValues, newValue)\n\n // Transform operations to model changes\n const modelChanges = mapOperationsToModelChanges(operations, newValue)\n\n applyAndCommitChanges(model, modelChanges)\n }\n },\n [\n model,\n rowValues,\n clearRedoStack,\n addOperationsToUndoStack,\n applyAndCommitChanges,\n ],\n )\n\n const handleSelectionChange = useCallback(\n (opts: { selection: SelectionWithId | null }) => {\n const { selection } = opts\n if (selection != null) {\n setLastSelection(selection)\n\n if (model != null && replicaId != null) {\n const replicaSelectionModel = computeReplicaSelectionModel(\n selection,\n model,\n )\n // insert it into the CRDT Model\n applyAndCommitChanges(model, [\n {\n type: 'SET_SELECTION',\n replicaId: replicaId.toString(),\n selection: replicaSelectionModel,\n },\n ])\n }\n }\n },\n [applyAndCommitChanges, model, replicaId],\n )\n\n const handleNavigateToCell = useCallback(\n (rowIndex: number, colIndex: number) => {\n gridRef.current?.setActiveCell({ col: colIndex, row: rowIndex })\n },\n [],\n )\n\n if (!isLoading && !userBundle?.isCertified) {\n return <CertificationRequirement />\n }\n\n return (\n <div>\n <Grid container spacing={2}>\n <Grid size={{ xs: 12, xl: 8 }}>\n <StartGridSession\n ref={startGridSessionRef}\n onSessionChange={setSession}\n onReplicaChange={setReplicaId}\n show={showDebugInfo}\n />\n </Grid>\n {/* Debug Information */}\n <Grid size={{ xs: 12, xl: 4 }}>\n {showDebugInfo && (\n <div>\n <p>Session ID: {session?.sessionId || 'No session created'}</p>\n <p>Replica ID: {replicaId || 'No replica created'}</p>\n <p>\n Source Entity ID:{' '}\n {session?.sourceEntityId || 'No source entity'}\n </p>\n <p>\n JSON Schema $id:{' '}\n {session?.gridJsonSchema$Id ||\n 'No schema attached to session'}\n </p>\n <p>\n Presigned URL:{' '}\n {presignedUrl\n ? presignedUrl.substring(0, 30) +\n (presignedUrl.length > 30\n ? ' ... ' +\n presignedUrl.substring(presignedUrl.length - 10)\n : '')\n : 'No URL generated'}\n </p>\n <p>\n WebSocket Status:{' '}\n <span style={{ color: isConnected ? 'green' : 'red' }}>\n {connectionStatus}\n </span>\n </p>\n <p>\n {(() => {\n const connectedReplicas = replicas.filter(\n r => r.isConnected,\n )\n return (\n <>\n Connected Replicas ({connectedReplicas.length} /{' '}\n {replicas.length} total):{' '}\n {connectedReplicas.length === 0\n ? 'none'\n : connectedReplicas.map((r, i) => (\n <Tooltip\n key={r.replicaId}\n title={\n <pre style={{ margin: 0, fontSize: '11px' }}>\n {JSON.stringify(r, null, 2)}\n </pre>\n }\n >\n <span\n style={{\n cursor: 'pointer',\n textDecoration: 'underline dotted',\n }}\n >\n {r.replicaId}\n {i < connectedReplicas.length - 1 ? ', ' : ''}\n </span>\n </Tooltip>\n ))}\n </>\n )\n })()}\n </p>\n </div>\n )}\n </Grid>\n\n {session && (\n <>\n {/* Grid Loading State */}\n {!hasSufficientData && (\n <Grid size={12}>\n <h3>Setting up grid...</h3>\n <div style={{ marginBottom: '10px' }}>\n {!session && <p>Creating grid session...</p>}\n {session && !replicaId && (\n <p>Setting up real-time sync...</p>\n )}\n {session && replicaId && !presignedUrl && (\n <p>Establishing secure connection...</p>\n )}\n {session && replicaId && presignedUrl && !isConnected && (\n <p>Connecting to server...</p>\n )}\n {isConnected && !hasCompletedInitialSync && (\n <p>Loading table data...</p>\n )}\n <SkeletonTable numRows={4} numCols={1} />\n </div>\n </Grid>\n )}\n {/* Grid */}\n {hasSufficientData && (\n <>\n <Grid size={12}>\n <ValidationAlert\n rowValues={rowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n onNavigateToCell={handleNavigateToCell}\n isLoading={!hasCompletedInitialSync}\n />\n </Grid>\n <Grid size={12}>\n <Stack\n direction={'row'}\n spacing={1}\n sx={{ justifyContent: 'flex-end' }}\n >\n {(!hasCompletedInitialSync || isSyncing) && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n mr: 'auto',\n }}\n >\n <SynapseSpinner size={16} margin=\"0\" />\n <Typography variant=\"caption\" color=\"text.secondary\">\n {hasCompletedInitialSync ? 'Syncing…' : 'Loading…'}\n </Typography>\n </Box>\n )}\n {undoUI}\n {redoUI}\n <GridMenuButton\n variant={'outlined'}\n onClick={() => setChatOpen(true)}\n startIcon={<SmartToyTwoTone />}\n >\n Open chat\n </GridMenuButton>\n <GridAgentChat\n agentRegistrationId={agentRegistrationId}\n open={chatOpen}\n onClose={() => setChatOpen(false)}\n gridSessionId={session.sessionId!}\n usersReplicaId={replicaId!}\n chatbotName=\"Grid Assistant\"\n />\n {session.sourceEntityId && (\n <UploadCsvToGridButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n {session.sessionId && (\n <ExportCsvFromGridButton\n gridSessionId={session.sessionId}\n filename={\n 'grid-' + (session.sourceEntityId || 'export')\n }\n />\n )}\n {session.sourceEntityId && (\n <MergeGridWithSourceTableButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n </Stack>\n </Grid>\n <Grid size={12}>\n <DataGrid\n gridRef={gridRef}\n rowValues={enrichedRowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n schemaPropertiesInfo={schemaPropertiesInfo}\n entityIsView={entityIsView}\n jsonSchema={jsonSchema}\n lastSelection={lastSelection}\n handleChange={handleChange}\n handleSelectionChange={handleSelectionChange}\n remoteSelections={remoteSelections}\n />\n </Grid>\n </>\n )}\n {/* Debug Model Snapshot */}\n {showDebugInfo && (\n <Grid\n size={12}\n style={{\n margin: '10px 0',\n padding: '10px',\n border: '1px solid #ccc',\n maxHeight: '400px',\n overflowY: 'auto',\n }}\n >\n <h3>Model</h3>\n {model ? (\n <ClickableJsonCrdt model={model} />\n ) : (\n 'No model available'\n )}\n </Grid>\n )}\n </>\n )}\n </Grid>\n </div>\n )\n },\n)\n\nexport default SynapseGrid\n"],"mappings":"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"}
1
+ {"version":3,"file":"SynapseGrid.js","names":["GridMenuButton","UploadCsvToGridButton","ExportCsvFromGridButton","useGetSchemaForGrid","MergeGridWithSourceTableButton","computeReplicaSelectionModel","modelRowsToGrid","SkeletonTable","useGetEntity","getSchemaPropertiesInfo","SmartToyTwoTone","Box","Stack","Tooltip","Typography","SynapseSpinner","Grid","CreateGridRequest","GridSession","ClickableJsonCrdt","Ref","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","DataSheetGridRef","SelectionWithId","GridAgentChat","DataGrid","DataGridRow","GridModel","Operation","useGridUndoRedo","StartGridSession","StartGridSessionHandle","useDataGridWebSocket","applyModelChange","ModelChange","removeNoOpOperations","mapOperationsToModelChanges","useGetCurrentUserBundle","useListGridReplicas","useGridReplicaUsers","useRemoteSelections","enrichRowsWithChangeInfo","CertificationRequirement","ValidationAlert","SynapseErrorBoundary","useErrorHandler","SynapseGridProps","agentRegistrationId","showDebugInfo","ref","SynapseGridHandle","initializeGrid","request","loadExistingSession","sessionId","SynapseGridInner","t0","$","_c","t1","undefined","session","setSession","replicaId","setReplicaId","chatOpen","setChatOpen","lastSelection","setLastSelection","startGridSessionRef","gridRef","data","userBundle","isLoading","t2","refetch","refetchReplicas","t3","replicas","t4","handleReplicaConnectionChange","currentUserId","userId","String","replicaUserMap","t5","t6","Symbol","for","current","handleStartSession","handleLoadSession","t7","onGridReady","onReplicaConnected","onReplicaDisconnected","isConnected","websocketInstance","hasCompletedInitialSync","isSyncing","model","modelSnapshot","connect","presignedUrl","hasSufficientData","websocketError","websocketInstanceRef","t8","t9","lastConnectParamsRef","t10","nextParams","prevParams","t11","t12","t13","t14","setActiveCell","jsonSchema","t15","sourceEntityId","t16","enabled","entityData","entityIsView","concreteType","t17","t18","schemaPropertiesInfo","connectionStatus","remoteSelections","t19","rowValues","t20","enrichedRowValues","t21","sendPatch","commit","t22","t23","t24","model_0","modelChanges","forEach","change","applyAndCommitChanges","t25","change_0","console","error","type","applyModelChangeFromUndoRedo","undoUI","redoUI","addOperationsToUndoStack","clearRedoStack","t26","newValue","operations","length","modelChanges_0","handleChange","t27","opts","selection","replicaSelectionModel","toString","handleSelectionChange","t28","rowIndex","colIndex","col","row","handleNavigateToCell","isCertified","t29","xs","xl","t30","t31","t32","gridJsonSchema$Id","substring","color","connectedReplicas","filter","_temp","map","r_0","i","r","margin","fontSize","JSON","stringify","cursor","textDecoration","t33","t34","columnNames","columnOrder","marginBottom","justifyContent","display","alignItems","gap","mr","padding","border","maxHeight","overflowY","t35","SynapseGrid","props"],"sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport UploadCsvToGridButton from '@/components/DataGrid/components/UploadCsvToGridButton'\nimport ExportCsvFromGridButton from '@/components/DataGrid/components/ExportCsvFromGridButton'\nimport useGetSchemaForGrid from '@/components/DataGrid/hooks/useGetSchemaForGrid'\nimport MergeGridWithSourceTableButton from '@/components/DataGrid/MergeGridWithSourceTableButton'\nimport computeReplicaSelectionModel from '@/components/DataGrid/utils/computeReplicaSelectionModel'\nimport modelRowsToGrid from '@/components/DataGrid/utils/modelRowsToGrid'\nimport { SkeletonTable } from '@/components/index'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { getSchemaPropertiesInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { SmartToyTwoTone } from '@mui/icons-material'\nimport { Box, Stack, Tooltip, Typography } from '@mui/material'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport Grid from '@mui/material/Grid'\nimport {\n CreateGridRequest,\n GridSession,\n} from '@sage-bionetworks/synapse-client'\nimport { ClickableJsonCrdt } from 'clickable-json'\nimport {\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { DataSheetGridRef } from '@sage-bionetworks/react-datasheet-grid'\nimport { SelectionWithId } from '@sage-bionetworks/react-datasheet-grid'\nimport GridAgentChat from '../SynapseChat/GridAgentChat'\nimport DataGrid from './DataGrid'\nimport { DataGridRow, GridModel, Operation } from './DataGridTypes'\nimport { useGridUndoRedo } from './hooks/useGridUndoRedo'\nimport { StartGridSession, StartGridSessionHandle } from './StartGridSession'\nimport { useDataGridWebSocket } from './useDataGridWebsocket'\nimport { applyModelChange, ModelChange } from './utils/applyModelChange'\nimport { removeNoOpOperations } from './utils/DataGridUtils'\nimport { mapOperationsToModelChanges } from './utils/mapOperationsToModelChanges'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useListGridReplicas } from '@/synapse-queries/grid/useGridSession'\nimport { useGridReplicaUsers } from './hooks/useGridReplicaUsers'\nimport { useRemoteSelections } from './hooks/useRemoteSelections'\nimport { enrichRowsWithChangeInfo } from './utils/enrichRowsWithChangeInfo'\nimport CertificationRequirement from '@/components/AccessRequirementList/RequirementItem/CertificationRequirement'\nimport { ValidationAlert } from './components/ValidationAlert'\nimport { SynapseErrorBoundary } from '@/components/error/ErrorBanner'\nimport { useErrorHandler } from 'react-error-boundary'\n\nexport type SynapseGridProps = {\n agentRegistrationId?: string\n showDebugInfo?: boolean\n ref?: Ref<SynapseGridHandle>\n}\n\nexport type SynapseGridHandle = {\n initializeGrid: (request: CreateGridRequest) => void\n loadExistingSession: (sessionId: string) => void\n}\n\nfunction SynapseGridInner({\n agentRegistrationId,\n showDebugInfo = false,\n ref,\n}: SynapseGridProps) {\n const [session, setSession] = useState<GridSession | null>(null)\n const [replicaId, setReplicaId] = useState<number | null>(null)\n const [chatOpen, setChatOpen] = useState(false)\n const [lastSelection, setLastSelection] = useState<SelectionWithId | null>(\n null,\n )\n\n const startGridSessionRef = useRef<StartGridSessionHandle | null>(null)\n const gridRef = useRef<DataSheetGridRef | null>(null)\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const { data: replicas = [], refetch: refetchReplicas } = useListGridReplicas(\n session?.sessionId,\n )\n\n const handleReplicaConnectionChange = useCallback(() => {\n void refetchReplicas()\n }, [refetchReplicas])\n\n // ── Attribution infrastructure ─────────────────────────────────────────\n const currentUserId =\n userBundle?.userId != null ? String(userBundle.userId) : undefined\n\n const replicaUserMap = useGridReplicaUsers(replicas, replicaId, currentUserId)\n\n useImperativeHandle(\n ref,\n () => ({\n initializeGrid: (request: CreateGridRequest) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleStartSession(request)\n }\n },\n loadExistingSession: (sessionId: string) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleLoadSession(sessionId)\n }\n },\n }),\n [],\n )\n\n // WebSocket state\n const {\n isConnected,\n websocketInstance,\n hasCompletedInitialSync,\n isSyncing,\n model,\n modelSnapshot,\n connect,\n presignedUrl,\n hasSufficientData,\n websocketError,\n } = useDataGridWebSocket({\n onGridReady: handleReplicaConnectionChange,\n onReplicaConnected: handleReplicaConnectionChange,\n onReplicaDisconnected: handleReplicaConnectionChange,\n })\n\n useErrorHandler(websocketError)\n\n const websocketInstanceRef = useRef<typeof websocketInstance | null>(null)\n\n useEffect(() => {\n websocketInstanceRef.current = websocketInstance\n }, [websocketInstance])\n\n // Track last connection parameters to avoid redundant connections\n const lastConnectParamsRef = useRef<{\n replicaId: number\n sessionId: string\n } | null>(null)\n\n useEffect(() => {\n if (replicaId === null || replicaId === undefined || !session?.sessionId) {\n lastConnectParamsRef.current = null\n return\n }\n\n const nextParams = {\n replicaId,\n sessionId: session.sessionId,\n }\n\n const prevParams = lastConnectParamsRef.current\n\n if (\n prevParams &&\n prevParams.replicaId === nextParams.replicaId &&\n prevParams.sessionId === nextParams.sessionId\n ) {\n return\n }\n\n lastConnectParamsRef.current = nextParams\n connect(replicaId, session.sessionId)\n }, [replicaId, session?.sessionId, connect])\n\n // Reset grid state when model is reset (new session/replica)\n useEffect(() => {\n if (model === null) {\n // Clear any grid-specific state when starting a new session\n setLastSelection(null)\n // Clear active cell if grid exists\n if (gridRef.current) {\n gridRef.current.setActiveCell(null)\n }\n }\n }, [model])\n\n const jsonSchema = useGetSchemaForGrid(session)\n\n // Grid behaves differently for views vs recordSets\n // Note for future: can get modifiedOn to refresh grid when view changes\n const { data: entityData } = useGetEntity(\n session?.sourceEntityId,\n undefined,\n {\n enabled: !!session?.sourceEntityId,\n },\n )\n\n const entityIsView =\n entityData?.concreteType ===\n 'org.sagebionetworks.repo.model.table.EntityView'\n\n // Process schema properties once\n const schemaPropertiesInfo = useMemo(() => {\n return getSchemaPropertiesInfo(jsonSchema ?? null)\n }, [jsonSchema])\n\n const connectionStatus = isConnected ? 'Connected' : 'Disconnected'\n\n const remoteSelections = useRemoteSelections(\n modelSnapshot,\n model,\n replicas,\n replicaId,\n )\n\n // Transform the model view rows and columns to DataSheetGrid format\n const rowValues = useMemo(\n () => (modelSnapshot ? modelRowsToGrid(model, modelSnapshot) : []),\n [model, modelSnapshot],\n )\n\n // Enrich rows with per-cell change attribution for CSS indicators and tooltips\n const enrichedRowValues = useMemo(\n () =>\n enrichRowsWithChangeInfo(rowValues, model, modelSnapshot, replicaUserMap),\n [rowValues, model, modelSnapshot, replicaUserMap],\n )\n\n const commit = useCallback(() => {\n if (!isConnected || !websocketInstanceRef.current) {\n return\n }\n\n websocketInstanceRef.current.sendPatch()\n }, [isConnected, websocketInstanceRef])\n\n useEffect(() => {\n if (isConnected) {\n commit()\n }\n }, [isConnected, commit])\n\n const applyAndCommitChanges = useCallback(\n (model: GridModel, modelChanges: ModelChange[]) => {\n // Apply each change to the model\n modelChanges.forEach(change => {\n applyModelChange(model, change, schemaPropertiesInfo)\n })\n\n commit()\n },\n [commit, schemaPropertiesInfo],\n )\n\n const applyModelChangeFromUndoRedo = useCallback(\n (change: ModelChange) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n if (change.type === 'DELETE' && gridRef.current) {\n // The user may have set a cell as active that we are removing with an 'undo'. In that case, clear the active state\n gridRef.current.setActiveCell(null)\n }\n\n applyAndCommitChanges(model, [change])\n },\n [model, applyAndCommitChanges],\n )\n\n const { undoUI, redoUI, addOperationsToUndoStack, clearRedoStack } =\n useGridUndoRedo(applyModelChangeFromUndoRedo)\n\n const handleChange = useCallback(\n (newValue: DataGridRow[], operations: Operation[]) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n // Check that something changed before updating the model\n operations = removeNoOpOperations(newValue, rowValues, operations)\n\n if (operations.length > 0) {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n // Track row creation, updates, and deletions to keep UI state and undo history in sync\n\n // Add all operations to the undo stack\n addOperationsToUndoStack(operations, rowValues, newValue)\n\n // Transform operations to model changes\n const modelChanges = mapOperationsToModelChanges(operations, newValue)\n\n applyAndCommitChanges(model, modelChanges)\n }\n },\n [\n model,\n rowValues,\n clearRedoStack,\n addOperationsToUndoStack,\n applyAndCommitChanges,\n ],\n )\n\n const handleSelectionChange = useCallback(\n (opts: { selection: SelectionWithId | null }) => {\n const { selection } = opts\n if (selection != null) {\n setLastSelection(selection)\n\n if (model != null && replicaId != null) {\n const replicaSelectionModel = computeReplicaSelectionModel(\n selection,\n model,\n )\n // insert it into the CRDT Model\n applyAndCommitChanges(model, [\n {\n type: 'SET_SELECTION',\n replicaId: replicaId.toString(),\n selection: replicaSelectionModel,\n },\n ])\n }\n }\n },\n [applyAndCommitChanges, model, replicaId],\n )\n\n const handleNavigateToCell = useCallback(\n (rowIndex: number, colIndex: number) => {\n gridRef.current?.setActiveCell({ col: colIndex, row: rowIndex })\n },\n [],\n )\n\n if (!isLoading && !userBundle?.isCertified) {\n return <CertificationRequirement />\n }\n\n return (\n <div>\n <Grid container spacing={2}>\n <Grid size={{ xs: 12, xl: 8 }}>\n <StartGridSession\n ref={startGridSessionRef}\n onSessionChange={setSession}\n onReplicaChange={setReplicaId}\n show={showDebugInfo}\n />\n </Grid>\n {/* Debug Information */}\n <Grid size={{ xs: 12, xl: 4 }}>\n {showDebugInfo && (\n <div>\n <p>Session ID: {session?.sessionId || 'No session created'}</p>\n <p>Replica ID: {replicaId || 'No replica created'}</p>\n <p>\n Source Entity ID:{' '}\n {session?.sourceEntityId || 'No source entity'}\n </p>\n <p>\n JSON Schema $id:{' '}\n {session?.gridJsonSchema$Id || 'No schema attached to session'}\n </p>\n <p>\n Presigned URL:{' '}\n {presignedUrl\n ? presignedUrl.substring(0, 30) +\n (presignedUrl.length > 30\n ? ' ... ' +\n presignedUrl.substring(presignedUrl.length - 10)\n : '')\n : 'No URL generated'}\n </p>\n <p>\n WebSocket Status:{' '}\n <span style={{ color: isConnected ? 'green' : 'red' }}>\n {connectionStatus}\n </span>\n </p>\n <p>\n {(() => {\n const connectedReplicas = replicas.filter(r => r.isConnected)\n return (\n <>\n Connected Replicas ({connectedReplicas.length} /{' '}\n {replicas.length} total):{' '}\n {connectedReplicas.length === 0\n ? 'none'\n : connectedReplicas.map((r, i) => (\n <Tooltip\n key={r.replicaId}\n title={\n <pre style={{ margin: 0, fontSize: '11px' }}>\n {JSON.stringify(r, null, 2)}\n </pre>\n }\n >\n <span\n style={{\n cursor: 'pointer',\n textDecoration: 'underline dotted',\n }}\n >\n {r.replicaId}\n {i < connectedReplicas.length - 1 ? ', ' : ''}\n </span>\n </Tooltip>\n ))}\n </>\n )\n })()}\n </p>\n </div>\n )}\n </Grid>\n\n {session && (\n <>\n {/* Grid Loading State */}\n {!hasSufficientData && (\n <Grid size={12}>\n <h3>Setting up grid...</h3>\n <div style={{ marginBottom: '10px' }}>\n {!session && <p>Creating grid session...</p>}\n {session && !replicaId && <p>Setting up real-time sync...</p>}\n {session && replicaId && !presignedUrl && (\n <p>Establishing secure connection...</p>\n )}\n {session && replicaId && presignedUrl && !isConnected && (\n <p>Connecting to server...</p>\n )}\n {isConnected && !hasCompletedInitialSync && (\n <p>Loading table data...</p>\n )}\n <SkeletonTable numRows={4} numCols={1} />\n </div>\n </Grid>\n )}\n {/* Grid */}\n {hasSufficientData && (\n <>\n <Grid size={12}>\n <ValidationAlert\n rowValues={rowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n onNavigateToCell={handleNavigateToCell}\n isLoading={!hasCompletedInitialSync}\n />\n </Grid>\n <Grid size={12}>\n <Stack\n direction={'row'}\n spacing={1}\n sx={{ justifyContent: 'flex-end' }}\n >\n {(!hasCompletedInitialSync || isSyncing) && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n mr: 'auto',\n }}\n >\n <SynapseSpinner size={16} margin=\"0\" />\n <Typography variant=\"caption\" color=\"text.secondary\">\n {hasCompletedInitialSync ? 'Syncing…' : 'Loading…'}\n </Typography>\n </Box>\n )}\n {undoUI}\n {redoUI}\n <GridMenuButton\n variant={'outlined'}\n onClick={() => setChatOpen(true)}\n startIcon={<SmartToyTwoTone />}\n >\n Open Curie\n </GridMenuButton>\n <GridAgentChat\n agentRegistrationId={agentRegistrationId}\n open={chatOpen}\n onClose={() => setChatOpen(false)}\n gridSessionId={session.sessionId!}\n usersReplicaId={replicaId!}\n chatbotName=\"Curie\"\n />\n {session.sourceEntityId && (\n <UploadCsvToGridButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n {session.sessionId && (\n <ExportCsvFromGridButton\n gridSessionId={session.sessionId}\n filename={\n 'grid-' + (session.sourceEntityId || 'export')\n }\n />\n )}\n {session.sourceEntityId && (\n <MergeGridWithSourceTableButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n </Stack>\n </Grid>\n <Grid size={12}>\n <DataGrid\n gridRef={gridRef}\n rowValues={enrichedRowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n schemaPropertiesInfo={schemaPropertiesInfo}\n entityIsView={entityIsView}\n jsonSchema={jsonSchema}\n lastSelection={lastSelection}\n handleChange={handleChange}\n handleSelectionChange={handleSelectionChange}\n remoteSelections={remoteSelections}\n />\n </Grid>\n </>\n )}\n {/* Debug Model Snapshot */}\n {showDebugInfo && (\n <Grid\n size={12}\n style={{\n margin: '10px 0',\n padding: '10px',\n border: '1px solid #ccc',\n maxHeight: '400px',\n overflowY: 'auto',\n }}\n >\n <h3>Model</h3>\n {model ? (\n <ClickableJsonCrdt model={model} />\n ) : (\n 'No model available'\n )}\n </Grid>\n )}\n </>\n )}\n </Grid>\n </div>\n )\n}\n\nfunction SynapseGrid(props: SynapseGridProps) {\n return (\n <SynapseErrorBoundary>\n <SynapseGridInner {...props} />\n </SynapseErrorBoundary>\n )\n}\n\nexport default SynapseGrid\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteColumn.js","names":["parseFreeTextGivenJsonSchemaType","Autocomplete","AutocompleteChangeReason","SxProps","TextField","Theme","JSONSchema7Type","isNil","memo","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","CellComponent","CellProps","Column","useGridAutocompleteState","AUTOCOMPLETE_BASE_SX","width","height","padding","backgroundColor","borderRadius","AutocompleteOption","Record","Array","AutocompleteCellProps","rowData","setRowData","value","choices","colType","clearValue","castCellValueToString","toCast","JSON","stringify","String","commitParsedValue","parsed","undefined","trim","AutocompleteCell","t0","$","_c","focus","stopEditing","active","t1","setRowDataRef","t2","current","stopEditingRef","t3","t4","rowDataAsString","localInputState","setLocalInputState","t5","t6","onDeactivate","menuIsOpen","inputRef","handleListboxMouseDown","notifyOptionCommitted","handleMenuOpen","handleClose","handlePopupIndicatorMouseDown","t7","t8","t9","hasValue","t10","t11","pointerEvents","t12","t13","visibility","t14","t15","t16","t17","Symbol","for","t18","autocompleteSx","t19","e","key","preventDefault","nextRow","handleKeyDown","t20","_e","newVal","reason","parsed_0","setTimeout","handleChange","t21","t22","t23","_","newInputValue","t24","onMouseDown","t25","t26","listbox","popupIndicator","t27","params","t28","_temp","option","areAutocompleteCellPropsEqual","prevProps","nextProps","MemoizedAutocompleteCell","AutocompleteColumnProps","autocompleteColumn","Partial","component","props","Omit","copyValue","pasteValue","disableKeys","keepFocus"],"sources":["../../../../src/components/DataGrid/columns/AutocompleteColumn.tsx"],"sourcesContent":["import parseFreeTextGivenJsonSchemaType from '@/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType'\nimport {\n Autocomplete,\n AutocompleteChangeReason,\n SxProps,\n TextField,\n Theme,\n} from '@mui/material'\nimport { JSONSchema7Type } from 'json-schema'\nimport { isNil } from 'lodash-es'\nimport {\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n CellComponent,\n CellProps,\n Column,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { useGridAutocompleteState } from './useGridAutocompleteState'\n\n// Static styles extracted to avoid recreation on every render\nconst AUTOCOMPLETE_BASE_SX: SxProps<Theme> = {\n width: '100%',\n height: '100%',\n '& .MuiTextField-root .MuiInputBase-root': {\n height: '100%',\n padding: '0 10px',\n backgroundColor: 'inherit',\n borderRadius: 0,\n },\n '& .MuiAutocomplete-inputRoot': {\n padding: '0 10px',\n backgroundColor: 'inherit',\n },\n '& .MuiFormControl-root': { height: '100%' },\n}\n\nexport type AutocompleteOption =\n | string\n | number\n | boolean\n | null\n | Record<string, unknown>\n | Array<unknown>\n\nexport type AutocompleteCellProps = CellProps & {\n rowData: AutocompleteOption\n setRowData: (value: AutocompleteOption) => void\n choices: AutocompleteOption[]\n colType?: JSONSchema7Type\n clearValue?: undefined | null\n}\n\nexport function castCellValueToString(toCast: any): string {\n if (isNil(toCast)) {\n return ''\n }\n if (typeof toCast === 'object') {\n return JSON.stringify(toCast)\n }\n return String(toCast)\n}\n\n// Free-text typed/pasted into the cell parses to \"\" for empty input. Committing\n// \"\" leaves the cell as an empty string, which fails enum validation with a\n// terse \"is not a valid enum value\" message. Substitute the column's clearValue\n// (null for required, undefined for optional) so the commit path matches the\n// X-button clear path and the validator surfaces the substantive message.\nfunction commitParsedValue(\n parsed: unknown,\n clearValue: undefined | null,\n): unknown {\n if (\n parsed === null ||\n parsed === undefined ||\n (typeof parsed === 'string' && parsed.trim() === '')\n ) {\n return clearValue\n }\n return parsed\n}\n\nexport function AutocompleteCell({\n rowData,\n setRowData,\n choices,\n colType,\n focus,\n stopEditing,\n active,\n clearValue = undefined,\n}: AutocompleteCellProps) {\n // Stable refs so memo(AutocompleteCell) can use default shallow comparison —\n // react-datasheet-grid recreates these functions on every render, but their\n // behavior is stable for a given cell position.\n const setRowDataRef = useRef(setRowData)\n useLayoutEffect(() => {\n setRowDataRef.current = setRowData\n })\n const stopEditingRef = useRef(stopEditing)\n useLayoutEffect(() => {\n stopEditingRef.current = stopEditing\n })\n\n const rowDataAsString = castCellValueToString(rowData)\n const [localInputState, setLocalInputState] =\n useState<string>(rowDataAsString)\n\n const {\n menuIsOpen,\n inputRef,\n handleListboxMouseDown,\n notifyOptionCommitted,\n handleMenuOpen,\n handleClose,\n handlePopupIndicatorMouseDown,\n } = useGridAutocompleteState({\n active,\n focus,\n stopEditing,\n onDeactivate: () => {\n if (localInputState !== rowDataAsString) {\n // Commit any free-typed text that hasn't been saved yet\n const parsed = parseFreeTextGivenJsonSchemaType(\n localInputState,\n colType,\n )\n setRowDataRef.current(\n commitParsedValue(parsed, clearValue) as AutocompleteOption,\n )\n }\n },\n })\n\n // Sync localInputState with rowData whenever the cell isn't being edited.\n // Covers: deletes/cuts from active-but-not-focused state, Escape (grid flips\n // focus=false while active stays true, so the gate must allow this case),\n // and post-commit cleanup after the cell exits edit mode.\n useEffect(() => {\n if (!focus) {\n setLocalInputState(rowDataAsString)\n }\n }, [focus, rowDataAsString])\n\n const hasValue = !isNil(rowData) && rowData !== ''\n\n // Memoize sx to avoid recreation — dynamic styles change based on active/focus state\n const autocompleteSx = useMemo<SxProps<Theme>>(\n () => ({\n ...AUTOCOMPLETE_BASE_SX,\n '& .MuiAutocomplete-inputRoot': {\n padding: '0 10px',\n backgroundColor: 'inherit',\n pointerEvents: focus ? undefined : 'none',\n },\n '& .MuiAutocomplete-clearIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n '& .MuiAutocomplete-popupIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n '&:hover .MuiAutocomplete-clearIndicator': {\n visibility: 'visible',\n },\n '&:hover .MuiAutocomplete-popupIndicator': {\n visibility: 'visible',\n },\n }),\n [active, focus],\n )\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n e.preventDefault()\n stopEditingRef.current({ nextRow: false })\n } else if (e.key === 'Enter') {\n e.preventDefault()\n stopEditingRef.current({ nextRow: true })\n }\n }, [])\n\n const handleChange = useCallback(\n (\n _e: React.SyntheticEvent,\n newVal: unknown,\n reason: AutocompleteChangeReason,\n ) => {\n notifyOptionCommitted()\n if (reason === 'clear') {\n setRowDataRef.current(clearValue)\n } else if (reason === 'createOption') {\n // The user typed an option that wasn't a defined enum — cast to correct type\n const parsed = parseFreeTextGivenJsonSchemaType(\n newVal as string,\n colType,\n )\n setRowDataRef.current(\n commitParsedValue(parsed, clearValue) as AutocompleteOption,\n )\n } else {\n setRowDataRef.current(newVal as AutocompleteOption)\n }\n setTimeout(() => {\n stopEditingRef.current({ nextRow: false })\n }, 0)\n },\n [clearValue, colType, notifyOptionCommitted],\n )\n\n return (\n <Autocomplete\n open={menuIsOpen}\n onOpen={handleMenuOpen}\n forcePopupIcon={true}\n disableClearable={!hasValue}\n freeSolo={true}\n disablePortal={false}\n options={choices}\n selectOnFocus\n getOptionLabel={option => castCellValueToString(option)}\n value={rowData as AutocompleteOption}\n inputValue={localInputState}\n onInputChange={(_, newInputValue) => {\n setLocalInputState(newInputValue)\n }}\n onKeyDown={handleKeyDown}\n onClose={handleClose}\n onChange={handleChange}\n blurOnSelect={true}\n slotProps={{\n listbox: { onMouseDown: handleListboxMouseDown },\n popupIndicator: { onMouseDown: handlePopupIndicatorMouseDown },\n }}\n renderInput={params => <TextField {...params} inputRef={inputRef} />}\n sx={autocompleteSx}\n />\n )\n}\n\n// Memoize the cell component to prevent unnecessary re-renders.\n// react-datasheet-grid provides new setRowData/stopEditing function instances\n// on each render, so we must ignore those callback identities here and only\n// compare the props that affect rendering.\nexport function areAutocompleteCellPropsEqual(\n prevProps: AutocompleteCellProps,\n nextProps: AutocompleteCellProps,\n) {\n return (\n prevProps.rowData === nextProps.rowData &&\n prevProps.choices === nextProps.choices &&\n prevProps.colType === nextProps.colType &&\n prevProps.focus === nextProps.focus &&\n prevProps.active === nextProps.active &&\n prevProps.clearValue === nextProps.clearValue\n )\n}\n\nexport const MemoizedAutocompleteCell = memo(\n AutocompleteCell,\n areAutocompleteCellPropsEqual,\n)\nexport type AutocompleteColumnProps = {\n choices: AutocompleteOption[]\n colType?: JSONSchema7Type\n clearValue: undefined | null\n}\n\nexport function autocompleteColumn({\n choices,\n colType,\n clearValue,\n}: AutocompleteColumnProps): Partial<Column> {\n return {\n component: ((props: Omit<AutocompleteCellProps, 'choices'>) => (\n <MemoizedAutocompleteCell\n {...props}\n choices={choices}\n colType={colType}\n clearValue={clearValue}\n />\n )) as CellComponent,\n // If we update our enums to support labels, then we can update copy to copy the label and paste to lookup the mapping from label -> value\n copyValue: ({ rowData }) => rowData,\n pasteValue: ({ value }) => value,\n disableKeys: true,\n keepFocus: true,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AutocompleteColumn.js","names":["parseFreeTextGivenJsonSchemaType","Autocomplete","AutocompleteChangeReason","SxProps","TextField","Theme","JSONSchema7Type","isNil","memo","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","CellComponent","CellProps","Column","useGridAutocompleteState","AUTOCOMPLETE_BASE_SX","width","height","padding","backgroundColor","borderRadius","AutocompleteOption","Record","Array","AutocompleteCellProps","rowData","setRowData","value","choices","colType","clearValue","castCellValueToString","toCast","JSON","stringify","String","commitParsedValue","parsed","undefined","trim","AutocompleteCell","t0","$","_c","focus","stopEditing","active","t1","setRowDataRef","t2","current","stopEditingRef","t3","t4","rowDataAsString","localInputState","setLocalInputState","t5","t6","onDeactivate","menuIsOpen","inputRef","handleListboxMouseDown","notifyOptionCommitted","handleMenuOpen","handleClose","handlePopupIndicatorMouseDown","t7","t8","t9","hasValue","t10","t11","pointerEvents","t12","t13","visibility","t14","t15","t16","t17","Symbol","for","t18","autocompleteSx","t19","e","key","preventDefault","nextRow","handleKeyDown","t20","_e","newVal","reason","parsed_0","setTimeout","handleChange","t21","t22","t23","_","newInputValue","t24","onMouseDown","t25","t26","listbox","popupIndicator","t27","params","t28","_temp","option","areAutocompleteCellPropsEqual","prevProps","nextProps","MemoizedAutocompleteCell","AutocompleteColumnProps","autocompleteColumn","Partial","component","props","Omit","copyValue","pasteValue","disableKeys","keepFocus"],"sources":["../../../../src/components/DataGrid/columns/AutocompleteColumn.tsx"],"sourcesContent":["import parseFreeTextGivenJsonSchemaType from '@/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType'\nimport {\n Autocomplete,\n AutocompleteChangeReason,\n SxProps,\n TextField,\n Theme,\n} from '@mui/material'\nimport { JSONSchema7Type } from 'json-schema'\nimport { isNil } from 'lodash-es'\nimport {\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n CellComponent,\n CellProps,\n Column,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { useGridAutocompleteState } from './useGridAutocompleteState'\n\n// Static styles extracted to avoid recreation on every render\nconst AUTOCOMPLETE_BASE_SX: SxProps<Theme> = {\n width: '100%',\n height: '100%',\n '& .MuiTextField-root .MuiInputBase-root': {\n height: '100%',\n padding: '0 10px',\n backgroundColor: 'inherit',\n borderRadius: 0,\n },\n '& .MuiAutocomplete-inputRoot': {\n padding: '0 10px',\n backgroundColor: 'inherit',\n },\n '& .MuiFormControl-root': { height: '100%' },\n}\n\nexport type AutocompleteOption =\n | string\n | number\n | boolean\n | null\n | Record<string, unknown>\n | Array<unknown>\n\nexport type AutocompleteCellProps = CellProps & {\n rowData: AutocompleteOption\n setRowData: (value: AutocompleteOption) => void\n choices: AutocompleteOption[]\n colType?: JSONSchema7Type\n clearValue?: undefined | null\n}\n\nexport function castCellValueToString(toCast: any): string {\n if (isNil(toCast)) {\n return ''\n }\n if (typeof toCast === 'object') {\n return JSON.stringify(toCast)\n }\n return String(toCast)\n}\n\n// Free-text typed/pasted into the cell parses to \"\" for empty input. Committing\n// \"\" leaves the cell as an empty string, which fails enum validation with a\n// terse \"is not a valid enum value\" message. Substitute the column's clearValue\n// (null for required, undefined for optional) so the commit path matches the\n// X-button clear path and the validator surfaces the substantive message.\nfunction commitParsedValue(\n parsed: unknown,\n clearValue: undefined | null,\n): unknown {\n if (\n parsed === null ||\n parsed === undefined ||\n (typeof parsed === 'string' && parsed.trim() === '')\n ) {\n return clearValue\n }\n return parsed\n}\n\nexport function AutocompleteCell({\n rowData,\n setRowData,\n choices,\n colType,\n focus,\n stopEditing,\n active,\n clearValue = undefined,\n}: AutocompleteCellProps) {\n // Stable refs so memo(AutocompleteCell) can use default shallow comparison —\n // react-datasheet-grid recreates these functions on every render, but their\n // behavior is stable for a given cell position.\n const setRowDataRef = useRef(setRowData)\n useLayoutEffect(() => {\n setRowDataRef.current = setRowData\n })\n const stopEditingRef = useRef(stopEditing)\n useLayoutEffect(() => {\n stopEditingRef.current = stopEditing\n })\n\n const rowDataAsString = castCellValueToString(rowData)\n const [localInputState, setLocalInputState] =\n useState<string>(rowDataAsString)\n\n const {\n menuIsOpen,\n inputRef,\n handleListboxMouseDown,\n notifyOptionCommitted,\n handleMenuOpen,\n handleClose,\n handlePopupIndicatorMouseDown,\n } = useGridAutocompleteState({\n active,\n focus,\n stopEditing,\n onDeactivate: () => {\n if (localInputState !== rowDataAsString) {\n // Commit any free-typed text that hasn't been saved yet\n const parsed = parseFreeTextGivenJsonSchemaType(\n localInputState,\n colType,\n )\n setRowDataRef.current(\n commitParsedValue(parsed, clearValue) as AutocompleteOption,\n )\n }\n },\n })\n\n // Sync localInputState with rowData whenever the cell isn't being edited.\n // Covers: deletes/cuts from active-but-not-focused state, Escape (grid flips\n // focus=false while active stays true, so the gate must allow this case),\n // and post-commit cleanup after the cell exits edit mode.\n useEffect(() => {\n if (!focus) {\n setLocalInputState(rowDataAsString)\n }\n }, [focus, rowDataAsString])\n\n const hasValue = !isNil(rowData) && rowData !== ''\n\n // Memoize sx to avoid recreation — dynamic styles change based on active/focus state\n const autocompleteSx = useMemo<SxProps<Theme>>(\n () => ({\n ...AUTOCOMPLETE_BASE_SX,\n '& .MuiAutocomplete-inputRoot': {\n padding: '0 10px',\n backgroundColor: 'inherit',\n pointerEvents: focus ? undefined : 'none',\n },\n '& .MuiAutocomplete-clearIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n '& .MuiAutocomplete-popupIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n '&:hover .MuiAutocomplete-clearIndicator': {\n visibility: 'visible',\n },\n '&:hover .MuiAutocomplete-popupIndicator': {\n visibility: 'visible',\n },\n }),\n [active, focus],\n )\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n e.preventDefault()\n stopEditingRef.current({ nextRow: false })\n } else if (e.key === 'Enter') {\n e.preventDefault()\n stopEditingRef.current({ nextRow: true })\n }\n }, [])\n\n const handleChange = useCallback(\n (\n _e: React.SyntheticEvent,\n newVal: unknown,\n reason: AutocompleteChangeReason,\n ) => {\n notifyOptionCommitted()\n if (reason === 'clear') {\n setRowDataRef.current(clearValue)\n } else if (reason === 'createOption') {\n // The user typed an option that wasn't a defined enum — cast to correct type\n const parsed = parseFreeTextGivenJsonSchemaType(\n newVal as string,\n colType,\n )\n setRowDataRef.current(\n commitParsedValue(parsed, clearValue) as AutocompleteOption,\n )\n } else {\n setRowDataRef.current(newVal as AutocompleteOption)\n }\n setTimeout(() => {\n stopEditingRef.current({ nextRow: false })\n }, 0)\n },\n [clearValue, colType, notifyOptionCommitted],\n )\n\n return (\n <Autocomplete\n open={menuIsOpen}\n onOpen={handleMenuOpen}\n forcePopupIcon={true}\n disableClearable={!hasValue}\n freeSolo={true}\n disablePortal={false}\n options={choices}\n selectOnFocus\n getOptionLabel={option => castCellValueToString(option)}\n value={rowData as AutocompleteOption}\n inputValue={localInputState}\n onInputChange={(_, newInputValue) => {\n setLocalInputState(newInputValue)\n }}\n onKeyDown={handleKeyDown}\n onClose={handleClose}\n onChange={handleChange}\n blurOnSelect={true}\n slotProps={{\n listbox: { onMouseDown: handleListboxMouseDown },\n popupIndicator: { onMouseDown: handlePopupIndicatorMouseDown },\n }}\n renderInput={params => <TextField {...params} inputRef={inputRef} />}\n sx={autocompleteSx}\n />\n )\n}\n\n// Memoize the cell component to prevent unnecessary re-renders.\n// react-datasheet-grid provides new setRowData/stopEditing function instances\n// on each render, so we must ignore those callback identities here and only\n// compare the props that affect rendering.\nexport function areAutocompleteCellPropsEqual(\n prevProps: AutocompleteCellProps,\n nextProps: AutocompleteCellProps,\n) {\n return (\n prevProps.rowData === nextProps.rowData &&\n prevProps.choices === nextProps.choices &&\n prevProps.colType === nextProps.colType &&\n prevProps.focus === nextProps.focus &&\n prevProps.active === nextProps.active &&\n prevProps.clearValue === nextProps.clearValue\n )\n}\n\nexport const MemoizedAutocompleteCell = memo(\n AutocompleteCell,\n areAutocompleteCellPropsEqual,\n)\nexport type AutocompleteColumnProps = {\n choices: AutocompleteOption[]\n colType?: JSONSchema7Type\n clearValue: undefined | null\n}\n\nexport function autocompleteColumn({\n choices,\n colType,\n clearValue,\n}: AutocompleteColumnProps): Partial<Column> {\n return {\n component: ((props: Omit<AutocompleteCellProps, 'choices'>) => (\n <MemoizedAutocompleteCell\n {...props}\n choices={choices}\n colType={colType}\n clearValue={clearValue}\n />\n )) as CellComponent,\n // If we update our enums to support labels, then we can update copy to copy the label and paste to lookup the mapping from label -> value\n copyValue: ({ rowData }) => rowData,\n pasteValue: ({ value }) => value,\n disableKeys: true,\n keepFocus: true,\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteMultipleEnumColumn.js","names":["parseFreeTextGivenJsonSchemaType","Autocomplete","AutocompleteChangeReason","SxProps","TextField","Theme","Tooltip","JSONSchema7Type","memo","useCallback","useLayoutEffect","useMemo","useRef","useState","CellComponent","Column","areAutocompleteCellPropsEqual","AutocompleteCellProps","castCellValueToString","AutocompleteOption","GridAutocompleteChip","isNil","isEqual","useGridAutocompleteState","AUTOCOMPLETE_MULTIPLE_BASE_SX","width","height","margin","visibility","TEXT_FIELD_SX","padding","backgroundColor","borderRadius","AutocompleteMultipleEnumOption","AutocompleteMultipleEnumCellProps","Omit","choices","limitTags","clearValue","EnumOption","label","value","createOptionFromValue","createSafeRowData","rowData","Array","isArray","AutocompleteMultipleEnumCell","t0","$","_c","setRowData","colType","t1","active","focus","stopEditing","t2","undefined","setRowDataRef","t3","current","localInputState","setLocalInputState","t4","menuIsOpen","setMenuIsOpen","inputRef","activeRef","handleListboxMouseDown","notifyOptionCommitted","handleMenuOpen","handleClose","handlePopupIndicatorMouseDown","effectiveLimitTags","optionsWithLabels","safeRowData","selectedOptions","t5","t6","map","length","_temp","join","tooltipContent","hasValue","t7","t8","t9","t10","t11","t12","t13","Symbol","for","background","t14","pointerEvents","flexWrap","minHeight","maxHeight","overflowY","overflowX","t15","t16","t17","t18","t19","autocompleteSx","t20","_e","newVal","_reason","values","item_0","item","handleChange","t21","trim","parsedValue","handleBlur","t22","t23","overflow","t24","t25","t26","_","newInputValue","t27","t28","onMouseDown","t29","t30","listbox","popupIndicator","t31","tagValue","getTagProps","option_1","index","key","tagProps","optionValue_0","option","optionValue","t32","params","input","InputProps","disableUnderline","sx","t33","_temp2","_temp3","t34","option_0","valueValue","areAutocompleteMultipleEnumCellPropsEqual","prevProps","nextProps","MemoizedAutocompleteMultipleEnumCell","AutocompleteMultipleEnumColumnProps","dynamicHeight","autocompleteMultipleEnumColumn","Partial","component","props","copyValue","pasteValue","delimiters","parsedValues","split","filter","disableKeys","keepFocus","cellClassName"],"sources":["../../../../src/components/DataGrid/columns/AutocompleteMultipleEnumColumn.tsx"],"sourcesContent":["import parseFreeTextGivenJsonSchemaType from '@/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType'\nimport {\n Autocomplete,\n AutocompleteChangeReason,\n SxProps,\n TextField,\n Theme,\n Tooltip,\n} from '@mui/material'\nimport { JSONSchema7Type } from 'json-schema'\nimport {\n memo,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { CellComponent, Column } from '@sage-bionetworks/react-datasheet-grid'\nimport {\n areAutocompleteCellPropsEqual,\n AutocompleteCellProps,\n castCellValueToString,\n AutocompleteOption,\n} from './AutocompleteColumn'\nimport { GridAutocompleteChip } from './GridAutocompleteChip'\nimport isNil from 'lodash-es/isNil'\nimport isEqual from 'lodash-es/isEqual'\nimport { useGridAutocompleteState } from './useGridAutocompleteState'\n\n// Static styles extracted to avoid recreation on every render\nconst AUTOCOMPLETE_MULTIPLE_BASE_SX: SxProps<Theme> = {\n width: '100%',\n height: '100%',\n '& .MuiFormControl-root': {\n height: '100%',\n },\n '& .MuiAutocomplete-tag': {\n margin: '1px',\n },\n '&:hover .MuiAutocomplete-clearIndicator': {\n visibility: 'visible',\n },\n '&:hover .MuiAutocomplete-popupIndicator': {\n visibility: 'visible',\n },\n}\n\nconst TEXT_FIELD_SX: SxProps<Theme> = {\n height: '100%',\n padding: '0 10px',\n backgroundColor: 'inherit',\n borderRadius: 0,\n}\n\nexport type AutocompleteMultipleEnumOption = AutocompleteOption\n\nexport type AutocompleteMultipleEnumCellProps = Omit<\n AutocompleteCellProps,\n 'choices'\n> & {\n choices: AutocompleteMultipleEnumOption[]\n limitTags?: number\n clearValue?: undefined | null\n}\n\ntype EnumOption = {\n label: string\n value: AutocompleteMultipleEnumOption\n}\n\nfunction createOptionFromValue(\n value: AutocompleteMultipleEnumOption,\n): EnumOption {\n return {\n label: castCellValueToString(value),\n value: value,\n }\n}\n\nfunction createSafeRowData(\n rowData: AutocompleteMultipleEnumOption,\n): AutocompleteMultipleEnumOption[] {\n if (Array.isArray(rowData)) {\n return rowData as AutocompleteMultipleEnumOption[]\n } else if (isNil(rowData)) {\n return []\n } else {\n return [rowData]\n }\n}\n\nfunction AutocompleteMultipleEnumCell({\n rowData,\n setRowData,\n choices,\n colType,\n limitTags = 2,\n active,\n focus,\n stopEditing,\n clearValue = undefined,\n}: AutocompleteMultipleEnumCellProps) {\n // Stable refs so memo(AutocompleteMultipleEnumCell) can use default shallow\n // comparison — react-datasheet-grid recreates these functions on every render,\n // but their behavior is stable for a given cell position.\n const setRowDataRef = useRef(setRowData)\n useLayoutEffect(() => {\n setRowDataRef.current = setRowData\n })\n const [localInputState, setLocalInputState] = useState<string>('')\n\n const {\n menuIsOpen,\n setMenuIsOpen,\n inputRef,\n activeRef,\n handleListboxMouseDown,\n notifyOptionCommitted,\n handleMenuOpen,\n handleClose,\n handlePopupIndicatorMouseDown,\n } = useGridAutocompleteState({ active, focus, stopEditing })\n\n const safeRowData = createSafeRowData(rowData)\n const optionsWithLabels = choices.map(createOptionFromValue)\n const selectedOptions = safeRowData.map(createOptionFromValue)\n const effectiveLimitTags = active ? -1 : limitTags\n\n // Create tooltip content showing all values\n const tooltipContent =\n safeRowData.length > 0\n ? safeRowData.map(item => castCellValueToString(item)).join(',')\n : ''\n\n const hasValue = !isNil(rowData) && rowData !== ''\n\n // Memoize sx to avoid recreation — dynamic styles change based on active/focus state\n const autocompleteSx = useMemo<SxProps<Theme>>(\n () => ({\n ...AUTOCOMPLETE_MULTIPLE_BASE_SX,\n '& .MuiAutocomplete-inputRoot': {\n pointerEvents: focus ? undefined : 'none',\n padding: '0 10px',\n backgroundColor: 'inherit',\n // Allow tags to wrap and enable scrolling\n flexWrap: active ? 'wrap' : 'nowrap',\n minHeight: '100%',\n maxHeight: '100%',\n overflowY: active ? 'auto' : 'hidden',\n overflowX: 'hidden',\n '&::-webkit-scrollbar': {\n width: '6px',\n height: '6px',\n },\n '&::-webkit-scrollbar-track': {\n background: 'transparent',\n },\n '&::-webkit-scrollbar-thumb': {\n background: '#888',\n borderRadius: '3px',\n },\n '&::-webkit-scrollbar-thumb:hover': {\n background: '#555',\n },\n },\n '& .MuiAutocomplete-clearIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n '& .MuiAutocomplete-popupIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n }),\n [active, focus],\n )\n\n const handleChange = useCallback(\n (\n _e: React.SyntheticEvent,\n newVal: (EnumOption | string)[],\n _reason: AutocompleteChangeReason,\n ) => {\n notifyOptionCommitted()\n const values = newVal.map(item => {\n return typeof item === 'string'\n ? parseFreeTextGivenJsonSchemaType(item, colType)\n : item.value\n })\n // Use clearValue when all items are removed\n setRowDataRef.current(values.length === 0 ? clearValue : values)\n setLocalInputState('')\n if (!activeRef.current) {\n // The cell was deactivated while the option click was in progress (portal\n // click was seen as an outside click by the grid). Now that the value is\n // committed, close the menu.\n setMenuIsOpen(false)\n }\n },\n [activeRef, clearValue, colType, notifyOptionCommitted, setMenuIsOpen],\n )\n\n const handleBlur = useCallback(() => {\n if (localInputState.trim()) {\n const parsedValue = parseFreeTextGivenJsonSchemaType(\n localInputState,\n colType,\n )\n setRowDataRef.current([...safeRowData, parsedValue])\n setLocalInputState('')\n }\n }, [localInputState, colType, safeRowData])\n\n return (\n <Tooltip\n title={tooltipContent}\n placement=\"top-start\"\n arrow\n enterDelay={500}\n disableHoverListener={active || safeRowData.length <= limitTags}\n >\n <div\n style={{\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n }}\n >\n <Autocomplete\n forcePopupIcon={choices.length > 0}\n disableClearable={!hasValue}\n multiple\n freeSolo\n open={menuIsOpen}\n onOpen={handleMenuOpen}\n disablePortal={false}\n limitTags={effectiveLimitTags}\n options={optionsWithLabels}\n getOptionLabel={option => {\n // Handle both string (for freeSolo) and object options\n return typeof option === 'string' ? option : option.label\n }}\n isOptionEqualToValue={(option, value) => {\n // Compare the actual values, not labels\n const optionValue =\n typeof option === 'string' ? option : option.value\n const valueValue = typeof value === 'string' ? value : value.value\n return isEqual(optionValue, valueValue)\n }}\n value={selectedOptions}\n inputValue={localInputState}\n onInputChange={(_, newInputValue) => {\n setLocalInputState(newInputValue)\n }}\n onClose={handleClose}\n onChange={handleChange}\n disableCloseOnSelect={choices.length > 1}\n slotProps={{\n listbox: { onMouseDown: handleListboxMouseDown },\n popupIndicator: { onMouseDown: handlePopupIndicatorMouseDown },\n }}\n onBlur={handleBlur}\n renderValue={(tagValue, getTagProps) =>\n tagValue.map((option, index) => {\n const { key, ...tagProps } = getTagProps({ index })\n const optionValue =\n typeof option === 'string' ? option : option.value\n return (\n <GridAutocompleteChip\n key={key}\n option={optionValue}\n active={active}\n {...tagProps}\n />\n )\n })\n }\n renderInput={params => (\n <TextField\n {...params}\n inputRef={inputRef}\n slotProps={{\n input: {\n ...params.InputProps,\n disableUnderline: true,\n sx: TEXT_FIELD_SX,\n },\n }}\n />\n )}\n sx={autocompleteSx}\n />\n </div>\n </Tooltip>\n )\n}\n\n// Memoize the cell component to prevent unnecessary re-renders.\n// react-datasheet-grid provides new setRowData/stopEditing function instances\n// on each render, so we must ignore those callback identities here and only\n// compare the props that affect rendering.\nexport function areAutocompleteMultipleEnumCellPropsEqual(\n prevProps: AutocompleteMultipleEnumCellProps,\n nextProps: AutocompleteMultipleEnumCellProps,\n) {\n return (\n areAutocompleteCellPropsEqual(prevProps, nextProps) &&\n prevProps.limitTags === nextProps.limitTags\n )\n}\n\nconst MemoizedAutocompleteMultipleEnumCell = memo(\n AutocompleteMultipleEnumCell,\n areAutocompleteMultipleEnumCellPropsEqual,\n)\n\nexport type AutocompleteMultipleEnumColumnProps = {\n choices: AutocompleteMultipleEnumOption[]\n colType?: JSONSchema7Type\n limitTags?: number\n dynamicHeight?: boolean\n clearValue?: undefined | null\n}\n\nexport function autocompleteMultipleEnumColumn({\n choices,\n colType,\n limitTags = 2,\n dynamicHeight = false,\n clearValue = undefined,\n}: AutocompleteMultipleEnumColumnProps): Partial<Column> {\n return {\n component: ((\n props: Omit<AutocompleteMultipleEnumCellProps, 'choices' | 'limitTags'>,\n ) => (\n <MemoizedAutocompleteMultipleEnumCell\n {...props}\n choices={choices}\n colType={colType}\n limitTags={limitTags}\n clearValue={clearValue}\n />\n )) as CellComponent,\n copyValue: ({ rowData }) => {\n // Convert array to comma-separated string\n const safeRowData = createSafeRowData(rowData)\n return safeRowData.map(item => castCellValueToString(item)).join(',')\n },\n pasteValue: ({ value }) => {\n if (typeof value !== 'string') {\n return value\n }\n\n // Split by comma or tab and clean up values\n const delimiters = /[,\\t]/\n const parsedValues = value\n .split(delimiters)\n .map(item => item.trim())\n .filter(item => item.length > 0)\n .map(item => parseFreeTextGivenJsonSchemaType(item, colType))\n .filter(item => item !== null && item !== undefined)\n\n // When no values remain, use clearValue (null for required, undefined for\n // optional) so paste and the X-clear button converge on the same\n // in-model representation instead of [].\n // Note: columnFactory also wraps this pasteValue with\n // wrapPasteValueWithSchemaCoercion, which is a no-op here because\n // coerceModelCellValue does not coerce empty arrays — this layer is the\n // one responsible for the [] → clearValue conversion.\n return parsedValues.length > 0 ? parsedValues : clearValue\n },\n disableKeys: true,\n keepFocus: true,\n ...(dynamicHeight && {\n cellClassName: ({ rowData }) => {\n const safeRowData = createSafeRowData(rowData)\n return safeRowData.length > 3\n ? 'multi-value-cell-large'\n : 'multi-value-cell'\n },\n }),\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AutocompleteMultipleEnumColumn.js","names":["parseFreeTextGivenJsonSchemaType","Autocomplete","AutocompleteChangeReason","SxProps","TextField","Theme","Tooltip","JSONSchema7Type","memo","useCallback","useLayoutEffect","useMemo","useRef","useState","CellComponent","Column","areAutocompleteCellPropsEqual","AutocompleteCellProps","castCellValueToString","AutocompleteOption","GridAutocompleteChip","isNil","isEqual","useGridAutocompleteState","AUTOCOMPLETE_MULTIPLE_BASE_SX","width","height","margin","visibility","TEXT_FIELD_SX","padding","backgroundColor","borderRadius","AutocompleteMultipleEnumOption","AutocompleteMultipleEnumCellProps","Omit","choices","limitTags","clearValue","EnumOption","label","value","createOptionFromValue","createSafeRowData","rowData","Array","isArray","AutocompleteMultipleEnumCell","t0","$","_c","setRowData","colType","t1","active","focus","stopEditing","t2","undefined","setRowDataRef","t3","current","localInputState","setLocalInputState","t4","menuIsOpen","setMenuIsOpen","inputRef","activeRef","handleListboxMouseDown","notifyOptionCommitted","handleMenuOpen","handleClose","handlePopupIndicatorMouseDown","effectiveLimitTags","optionsWithLabels","safeRowData","selectedOptions","t5","t6","map","length","_temp","join","tooltipContent","hasValue","t7","t8","t9","t10","t11","t12","t13","Symbol","for","background","t14","pointerEvents","flexWrap","minHeight","maxHeight","overflowY","overflowX","t15","t16","t17","t18","t19","autocompleteSx","t20","_e","newVal","_reason","values","item_0","item","handleChange","t21","trim","parsedValue","handleBlur","t22","t23","overflow","t24","t25","t26","_","newInputValue","t27","t28","onMouseDown","t29","t30","listbox","popupIndicator","t31","tagValue","getTagProps","option_1","index","key","tagProps","optionValue_0","option","optionValue","t32","params","input","InputProps","disableUnderline","sx","t33","_temp2","_temp3","t34","option_0","valueValue","areAutocompleteMultipleEnumCellPropsEqual","prevProps","nextProps","MemoizedAutocompleteMultipleEnumCell","AutocompleteMultipleEnumColumnProps","dynamicHeight","autocompleteMultipleEnumColumn","Partial","component","props","copyValue","pasteValue","delimiters","parsedValues","split","filter","disableKeys","keepFocus","cellClassName"],"sources":["../../../../src/components/DataGrid/columns/AutocompleteMultipleEnumColumn.tsx"],"sourcesContent":["import parseFreeTextGivenJsonSchemaType from '@/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType'\nimport {\n Autocomplete,\n AutocompleteChangeReason,\n SxProps,\n TextField,\n Theme,\n Tooltip,\n} from '@mui/material'\nimport { JSONSchema7Type } from 'json-schema'\nimport {\n memo,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { CellComponent, Column } from '@sage-bionetworks/react-datasheet-grid'\nimport {\n areAutocompleteCellPropsEqual,\n AutocompleteCellProps,\n castCellValueToString,\n AutocompleteOption,\n} from './AutocompleteColumn'\nimport { GridAutocompleteChip } from './GridAutocompleteChip'\nimport isNil from 'lodash-es/isNil'\nimport isEqual from 'lodash-es/isEqual'\nimport { useGridAutocompleteState } from './useGridAutocompleteState'\n\n// Static styles extracted to avoid recreation on every render\nconst AUTOCOMPLETE_MULTIPLE_BASE_SX: SxProps<Theme> = {\n width: '100%',\n height: '100%',\n '& .MuiFormControl-root': {\n height: '100%',\n },\n '& .MuiAutocomplete-tag': {\n margin: '1px',\n },\n '&:hover .MuiAutocomplete-clearIndicator': {\n visibility: 'visible',\n },\n '&:hover .MuiAutocomplete-popupIndicator': {\n visibility: 'visible',\n },\n}\n\nconst TEXT_FIELD_SX: SxProps<Theme> = {\n height: '100%',\n padding: '0 10px',\n backgroundColor: 'inherit',\n borderRadius: 0,\n}\n\nexport type AutocompleteMultipleEnumOption = AutocompleteOption\n\nexport type AutocompleteMultipleEnumCellProps = Omit<\n AutocompleteCellProps,\n 'choices'\n> & {\n choices: AutocompleteMultipleEnumOption[]\n limitTags?: number\n clearValue?: undefined | null\n}\n\ntype EnumOption = {\n label: string\n value: AutocompleteMultipleEnumOption\n}\n\nfunction createOptionFromValue(\n value: AutocompleteMultipleEnumOption,\n): EnumOption {\n return {\n label: castCellValueToString(value),\n value: value,\n }\n}\n\nfunction createSafeRowData(\n rowData: AutocompleteMultipleEnumOption,\n): AutocompleteMultipleEnumOption[] {\n if (Array.isArray(rowData)) {\n return rowData as AutocompleteMultipleEnumOption[]\n } else if (isNil(rowData)) {\n return []\n } else {\n return [rowData]\n }\n}\n\nfunction AutocompleteMultipleEnumCell({\n rowData,\n setRowData,\n choices,\n colType,\n limitTags = 2,\n active,\n focus,\n stopEditing,\n clearValue = undefined,\n}: AutocompleteMultipleEnumCellProps) {\n // Stable refs so memo(AutocompleteMultipleEnumCell) can use default shallow\n // comparison — react-datasheet-grid recreates these functions on every render,\n // but their behavior is stable for a given cell position.\n const setRowDataRef = useRef(setRowData)\n useLayoutEffect(() => {\n setRowDataRef.current = setRowData\n })\n const [localInputState, setLocalInputState] = useState<string>('')\n\n const {\n menuIsOpen,\n setMenuIsOpen,\n inputRef,\n activeRef,\n handleListboxMouseDown,\n notifyOptionCommitted,\n handleMenuOpen,\n handleClose,\n handlePopupIndicatorMouseDown,\n } = useGridAutocompleteState({ active, focus, stopEditing })\n\n const safeRowData = createSafeRowData(rowData)\n const optionsWithLabels = choices.map(createOptionFromValue)\n const selectedOptions = safeRowData.map(createOptionFromValue)\n const effectiveLimitTags = active ? -1 : limitTags\n\n // Create tooltip content showing all values\n const tooltipContent =\n safeRowData.length > 0\n ? safeRowData.map(item => castCellValueToString(item)).join(',')\n : ''\n\n const hasValue = !isNil(rowData) && rowData !== ''\n\n // Memoize sx to avoid recreation — dynamic styles change based on active/focus state\n const autocompleteSx = useMemo<SxProps<Theme>>(\n () => ({\n ...AUTOCOMPLETE_MULTIPLE_BASE_SX,\n '& .MuiAutocomplete-inputRoot': {\n pointerEvents: focus ? undefined : 'none',\n padding: '0 10px',\n backgroundColor: 'inherit',\n // Allow tags to wrap and enable scrolling\n flexWrap: active ? 'wrap' : 'nowrap',\n minHeight: '100%',\n maxHeight: '100%',\n overflowY: active ? 'auto' : 'hidden',\n overflowX: 'hidden',\n '&::-webkit-scrollbar': {\n width: '6px',\n height: '6px',\n },\n '&::-webkit-scrollbar-track': {\n background: 'transparent',\n },\n '&::-webkit-scrollbar-thumb': {\n background: '#888',\n borderRadius: '3px',\n },\n '&::-webkit-scrollbar-thumb:hover': {\n background: '#555',\n },\n },\n '& .MuiAutocomplete-clearIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n '& .MuiAutocomplete-popupIndicator': {\n visibility: active ? 'visible' : 'hidden',\n pointerEvents: 'auto',\n },\n }),\n [active, focus],\n )\n\n const handleChange = useCallback(\n (\n _e: React.SyntheticEvent,\n newVal: (EnumOption | string)[],\n _reason: AutocompleteChangeReason,\n ) => {\n notifyOptionCommitted()\n const values = newVal.map(item => {\n return typeof item === 'string'\n ? parseFreeTextGivenJsonSchemaType(item, colType)\n : item.value\n })\n // Use clearValue when all items are removed\n setRowDataRef.current(values.length === 0 ? clearValue : values)\n setLocalInputState('')\n if (!activeRef.current) {\n // The cell was deactivated while the option click was in progress (portal\n // click was seen as an outside click by the grid). Now that the value is\n // committed, close the menu.\n setMenuIsOpen(false)\n }\n },\n [activeRef, clearValue, colType, notifyOptionCommitted, setMenuIsOpen],\n )\n\n const handleBlur = useCallback(() => {\n if (localInputState.trim()) {\n const parsedValue = parseFreeTextGivenJsonSchemaType(\n localInputState,\n colType,\n )\n setRowDataRef.current([...safeRowData, parsedValue])\n setLocalInputState('')\n }\n }, [localInputState, colType, safeRowData])\n\n return (\n <Tooltip\n title={tooltipContent}\n placement=\"top-start\"\n arrow\n enterDelay={500}\n disableHoverListener={active || safeRowData.length <= limitTags}\n >\n <div\n style={{\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n }}\n >\n <Autocomplete\n forcePopupIcon={choices.length > 0}\n disableClearable={!hasValue}\n multiple\n freeSolo\n open={menuIsOpen}\n onOpen={handleMenuOpen}\n disablePortal={false}\n limitTags={effectiveLimitTags}\n options={optionsWithLabels}\n getOptionLabel={option => {\n // Handle both string (for freeSolo) and object options\n return typeof option === 'string' ? option : option.label\n }}\n isOptionEqualToValue={(option, value) => {\n // Compare the actual values, not labels\n const optionValue =\n typeof option === 'string' ? option : option.value\n const valueValue = typeof value === 'string' ? value : value.value\n return isEqual(optionValue, valueValue)\n }}\n value={selectedOptions}\n inputValue={localInputState}\n onInputChange={(_, newInputValue) => {\n setLocalInputState(newInputValue)\n }}\n onClose={handleClose}\n onChange={handleChange}\n disableCloseOnSelect={choices.length > 1}\n slotProps={{\n listbox: { onMouseDown: handleListboxMouseDown },\n popupIndicator: { onMouseDown: handlePopupIndicatorMouseDown },\n }}\n onBlur={handleBlur}\n renderValue={(tagValue, getTagProps) =>\n tagValue.map((option, index) => {\n const { key, ...tagProps } = getTagProps({ index })\n const optionValue =\n typeof option === 'string' ? option : option.value\n return (\n <GridAutocompleteChip\n key={key}\n option={optionValue}\n active={active}\n {...tagProps}\n />\n )\n })\n }\n renderInput={params => (\n <TextField\n {...params}\n inputRef={inputRef}\n slotProps={{\n input: {\n ...params.InputProps,\n disableUnderline: true,\n sx: TEXT_FIELD_SX,\n },\n }}\n />\n )}\n sx={autocompleteSx}\n />\n </div>\n </Tooltip>\n )\n}\n\n// Memoize the cell component to prevent unnecessary re-renders.\n// react-datasheet-grid provides new setRowData/stopEditing function instances\n// on each render, so we must ignore those callback identities here and only\n// compare the props that affect rendering.\nexport function areAutocompleteMultipleEnumCellPropsEqual(\n prevProps: AutocompleteMultipleEnumCellProps,\n nextProps: AutocompleteMultipleEnumCellProps,\n) {\n return (\n areAutocompleteCellPropsEqual(prevProps, nextProps) &&\n prevProps.limitTags === nextProps.limitTags\n )\n}\n\nconst MemoizedAutocompleteMultipleEnumCell = memo(\n AutocompleteMultipleEnumCell,\n areAutocompleteMultipleEnumCellPropsEqual,\n)\n\nexport type AutocompleteMultipleEnumColumnProps = {\n choices: AutocompleteMultipleEnumOption[]\n colType?: JSONSchema7Type\n limitTags?: number\n dynamicHeight?: boolean\n clearValue?: undefined | null\n}\n\nexport function autocompleteMultipleEnumColumn({\n choices,\n colType,\n limitTags = 2,\n dynamicHeight = false,\n clearValue = undefined,\n}: AutocompleteMultipleEnumColumnProps): Partial<Column> {\n return {\n component: ((\n props: Omit<AutocompleteMultipleEnumCellProps, 'choices' | 'limitTags'>,\n ) => (\n <MemoizedAutocompleteMultipleEnumCell\n {...props}\n choices={choices}\n colType={colType}\n limitTags={limitTags}\n clearValue={clearValue}\n />\n )) as CellComponent,\n copyValue: ({ rowData }) => {\n // Convert array to comma-separated string\n const safeRowData = createSafeRowData(rowData)\n return safeRowData.map(item => castCellValueToString(item)).join(',')\n },\n pasteValue: ({ value }) => {\n if (typeof value !== 'string') {\n return value\n }\n\n // Split by comma or tab and clean up values\n const delimiters = /[,\\t]/\n const parsedValues = value\n .split(delimiters)\n .map(item => item.trim())\n .filter(item => item.length > 0)\n .map(item => parseFreeTextGivenJsonSchemaType(item, colType))\n .filter(item => item !== null && item !== undefined)\n\n // When no values remain, use clearValue (null for required, undefined for\n // optional) so paste and the X-clear button converge on the same\n // in-model representation instead of [].\n // Note: columnFactory also wraps this pasteValue with\n // wrapPasteValueWithSchemaCoercion, which is a no-op here because\n // coerceModelCellValue does not coerce empty arrays — this layer is the\n // one responsible for the [] → clearValue conversion.\n return parsedValues.length > 0 ? parsedValues : clearValue\n },\n disableKeys: true,\n keepFocus: true,\n ...(dynamicHeight && {\n cellClassName: ({ rowData }) => {\n const safeRowData = createSafeRowData(rowData)\n return safeRowData.length > 3\n ? 'multi-value-cell-large'\n : 'multi-value-cell'\n },\n }),\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeColumn.js","names":["DateTimePicker","dayjs","Dayjs","JSONSchema7Type","CellComponent","CellProps","Column","DateTimeCellProps","colType","DateTimeCell","t0","$","_c","rowData","setRowData","disabled","t1","t2","newValue","valueOf","toISOString","t3","undefined","t4","Symbol","for","height","backgroundColor","t5","pointerEvents","width","t6","DateTimeColumnProps","dateTimeColumn","Partial","component","props","copyValue","pasteValue","value","disableKeys","keepFocus"],"sources":["../../../../src/components/DataGrid/columns/DateTimeColumn.tsx"],"sourcesContent":["import DateTimePicker from '@/components/DateTimePicker/DateTimePicker'\nimport dayjs, { Dayjs } from 'dayjs'\nimport { JSONSchema7Type } from 'json-schema'\nimport {\n CellComponent,\n CellProps,\n Column,\n} from '@sage-bionetworks/react-datasheet-grid'\n\nexport type DateTimeCellProps = CellProps & {\n colType?: JSONSchema7Type\n}\n\nexport function DateTimeCell({\n rowData,\n setRowData,\n disabled,\n colType,\n}: DateTimeCellProps) {\n return (\n <DateTimePicker\n disabled={disabled}\n value={rowData ? dayjs(rowData) : null}\n onChange={(newValue: string | Dayjs | null) => {\n if (newValue == null) {\n setRowData(null)\n } else if (colType === 'number') {\n // Assume unix millisecond timestamp\n setRowData(dayjs(newValue).valueOf())\n } else {\n // colType is 'string' or unspecified, use ISO string\n setRowData(dayjs(newValue).toISOString())\n }\n }}\n sx={{\n // When disabled, allow selecting the entire cell\n pointerEvents: disabled ? 'none' : undefined,\n width: '100%',\n height: '100%',\n '& .MuiInputBase-root': {\n height: '100%',\n backgroundColor: 'inherit',\n },\n }}\n />\n )\n}\n\nexport type DateTimeColumnProps = {\n colType?: JSONSchema7Type\n}\n\nexport function dateTimeColumn({\n colType,\n}: DateTimeColumnProps): Partial<Column> {\n return {\n component: ((props: DateTimeCellProps) => (\n <DateTimeCell {...props} colType={colType} />\n )) as CellComponent,\n copyValue: ({ rowData }) => rowData,\n pasteValue: ({ value }) => value,\n disableKeys: true,\n keepFocus: true,\n }\n}\n"],"mappings":";;;;;AAaA,SAAOS,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAsB,EAAAC,YAAAC,eAAAC,aAAAP,eAAAE,GAKTM;AAAA,CAAAL,EAAA,OAAAE,IAIwBG,IAAAL,EAAA,MAA/BK,IAAAH,IAAUZ,EAAMY,EAAe,GAA/B,MAA+BF,EAAA,KAAAE,GAAAF,EAAA,KAAAK;CAAA,IAAAC;AAAA,CAAAN,EAAA,OAAAH,KAAAG,EAAA,OAAAG,KAC5BG,KAAAC,MAAA;AACR,EACEJ,EADEI,KAAY,OACH,OACFV,MAAY,WAEVP,EAAMiB,EAAS,CAAAC,SAAU,GAGzBlB,EAAMiB,EAAS,CAAAE,aAAc,CAAC;IAE5CT,EAAA,KAAAH,GAAAG,EAAA,KAAAG,GAAAH,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAGgB,IAAAU,IAAAN,IAAA,SAAAO,KAAAA,GAA6BC;AAAA,CAAAZ,EAAA,OAAAa,OAAAC,IAAA,4BAAA,IAGpBF,IAAA;EAAAG,QACd;EAAMC,iBACG;EAClB,EAAAhB,EAAA,KAAAY,KAAAA,IAAAZ,EAAA;CAAA,IAAAiB;AAAA,CAAAjB,EAAA,OAAAU,IACFO,IAAAjB,EAAA,MATGiB,IAAA;EAAAC,eAEaR;EAA6BS,OACrC;EAAMJ,QACL;EAAM,wBACUH;EAIzB,EAAAZ,EAAA,KAAAU,GAAAV,EAAA,KAAAiB;CAAA,IAAAG;AACD,QADCpB,EAAA,OAAAI,KAAAJ,EAAA,OAAAK,KAAAL,EAAA,QAAAM,KAAAN,EAAA,QAAAiB,KAvBHG,IAAA,kBAAC,GAAD;EACYhB;EACH,OAAAC;EACG,UAAAC;EAWN,IAAAW;EAUJ,CAAA,EAAAjB,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,GAAAL,EAAA,MAAAM,GAAAN,EAAA,MAAAiB,GAAAjB,EAAA,MAAAoB,KAAAA,IAAApB,EAAA,KAxBFoB;;AAgCJ,SAAgBE,EAAe,EAC7BzB,cACuC;AACvC,QAAO;EACL2B,aAAaC,MACX,kBAAC,GAAD;GAAc,GAAIA;GAAgB5B;GACnC,CAAA;EACD6B,YAAY,EAAExB,iBAAcA;EAC5ByB,aAAa,EAAEC,eAAYA;EAC3BC,aAAa;EACbC,WAAW;EACZ"}
1
+ {"version":3,"file":"DateTimeColumn.js","names":["DateTimePicker","dayjs","Dayjs","JSONSchema7Type","CellComponent","CellProps","Column","DateTimeCellProps","colType","DateTimeCell","t0","$","_c","rowData","setRowData","disabled","t1","t2","newValue","valueOf","toISOString","t3","undefined","t4","Symbol","for","height","backgroundColor","t5","pointerEvents","width","t6","DateTimeColumnProps","dateTimeColumn","Partial","component","props","copyValue","pasteValue","value","disableKeys","keepFocus"],"sources":["../../../../src/components/DataGrid/columns/DateTimeColumn.tsx"],"sourcesContent":["import DateTimePicker from '@/components/DateTimePicker/DateTimePicker'\nimport dayjs, { Dayjs } from 'dayjs'\nimport { JSONSchema7Type } from 'json-schema'\nimport {\n CellComponent,\n CellProps,\n Column,\n} from '@sage-bionetworks/react-datasheet-grid'\n\nexport type DateTimeCellProps = CellProps & {\n colType?: JSONSchema7Type\n}\n\nexport function DateTimeCell({\n rowData,\n setRowData,\n disabled,\n colType,\n}: DateTimeCellProps) {\n return (\n <DateTimePicker\n disabled={disabled}\n value={rowData ? dayjs(rowData) : null}\n onChange={(newValue: string | Dayjs | null) => {\n if (newValue == null) {\n setRowData(null)\n } else if (colType === 'number') {\n // Assume unix millisecond timestamp\n setRowData(dayjs(newValue).valueOf())\n } else {\n // colType is 'string' or unspecified, use ISO string\n setRowData(dayjs(newValue).toISOString())\n }\n }}\n sx={{\n // When disabled, allow selecting the entire cell\n pointerEvents: disabled ? 'none' : undefined,\n width: '100%',\n height: '100%',\n '& .MuiInputBase-root': {\n height: '100%',\n backgroundColor: 'inherit',\n },\n }}\n />\n )\n}\n\nexport type DateTimeColumnProps = {\n colType?: JSONSchema7Type\n}\n\nexport function dateTimeColumn({\n colType,\n}: DateTimeColumnProps): Partial<Column> {\n return {\n component: ((props: DateTimeCellProps) => (\n <DateTimeCell {...props} colType={colType} />\n )) as CellComponent,\n copyValue: ({ rowData }) => rowData,\n pasteValue: ({ value }) => value,\n disableKeys: true,\n keepFocus: true,\n }\n}\n"],"mappings":";;;;;AAaA,SAAOS,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAsB,EAAAC,YAAAC,eAAAC,aAAAP,eAAAE,GAKTM;CAAA,AAAAL,EAAA,OAAAE,IAIwBG,IAAAL,EAAA,MAA/BK,IAAAH,IAAUZ,EAAMY,CAAc,IAA9B,MAA+BF,EAAA,KAAAE,GAAAF,EAAA,KAAAK;CAAA,IAAAC;CAAA,AAAAN,EAAA,OAAAH,KAAAG,EAAA,OAAAG,KAC5BG,KAAAC,MAAA;EACR,AACEJ,EADEI,KAAY,OACH,OACFV,MAAY,WAEVP,EAAMiB,CAAQ,EAACC,QAAS,IAGxBlB,EAAMiB,CAAQ,EAACE,YAAa,CAAC;CACzC,GACFT,EAAA,KAAAH,GAAAG,EAAA,KAAAG,GAAAH,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAGgB,IAAAU,IAAAN,IAAA,SAAAO,KAAAA,GAA6BC;CAAA,AAAAZ,EAAA,OAAAa,OAAAC,IAAA,2BAAA,KAGpBF,IAAA;EAAAG,QACd;EAAMC,iBACG;CACnB,GAAChB,EAAA,KAAAY,KAAAA,IAAAZ,EAAA;CAAA,IAAAiB;CAAA,AAAAjB,EAAA,OAAAU,IACFO,IAAAjB,EAAA,MATGiB,IAAA;EAAAC,eAEaR;EAA6BS,OACrC;EAAMJ,QACL;EAAM,wBACUH;CAI1B,GAACZ,EAAA,KAAAU,GAAAV,EAAA,KAAAiB;CAAA,IAAAG;CACD,OADCpB,EAAA,OAAAI,KAAAJ,EAAA,OAAAK,KAAAL,EAAA,QAAAM,KAAAN,EAAA,QAAAiB,KAvBHG,IAAA,kBAAC,GAAD;EACYhB;EACH,OAAAC;EACG,UAAAC;EAWN,IAAAW;CASH,CAAA,GACDjB,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,GAAAL,EAAA,MAAAM,GAAAN,EAAA,MAAAiB,GAAAjB,EAAA,MAAAoB,KAAAA,IAAApB,EAAA,KAxBFoB;AAwBE;AAQN,SAAgBE,EAAe,EAC7BzB,cACuC;CACvC,OAAO;EACL2B,aAAaC,MACX,kBAAC,GAAD;GAAc,GAAIA;GAAgB5B;EAAQ,CAAA;EAE5C6B,YAAY,EAAExB,iBAAcA;EAC5ByB,aAAa,EAAEC,eAAYA;EAC3BC,aAAa;EACbC,WAAW;CACb;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridAutocompleteChip.js","names":["Chip","ChipProps","castCellValueToString","AutocompleteMultipleEnumOption","GridAutocompleteChipProps","Omit","option","active","GridAutocompleteChip","t0","$","_c","chipProps","t1","undefined","t2","t3","t4","sx","maxWidth","fontSize","height","margin","flexShrink","t5"],"sources":["../../../../src/components/DataGrid/columns/GridAutocompleteChip.tsx"],"sourcesContent":["import { Chip, ChipProps } from '@mui/material'\nimport { castCellValueToString } from './AutocompleteColumn'\nimport { AutocompleteMultipleEnumOption } from './AutocompleteMultipleEnumColumn'\n\nexport interface GridAutocompleteChipProps extends Omit<ChipProps, 'label'> {\n option: AutocompleteMultipleEnumOption\n active?: boolean\n}\n\nexport function GridAutocompleteChip({\n option,\n active = false,\n ...chipProps\n}: GridAutocompleteChipProps) {\n return (\n <Chip\n {...chipProps}\n label={castCellValueToString(option)}\n sx={{\n maxWidth: active ? 'none' : '120px',\n fontSize: '0.75rem',\n height: '24px',\n margin: '1px',\n flexShrink: 0,\n ...chipProps.sx,\n }}\n />\n )\n}\n"],"mappings":";;;;;AASA,SAAOQ,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC,GAAAN,GAAAO;AAAA,CAAAH,EAAA,OAAAD,KAIqBG,IAAAF,EAAA,IAAAJ,IAAAI,EAAA,IAAAG,IAAAH,EAAA,OAJS,YAAAH,QAAAM,MAAAD,KAAAH,GAITC,EAAA,KAAAD,GAAAC,EAAA,KAAAE,GAAAF,EAAA,KAAAJ,GAAAI,EAAA,KAAAG;CAF1B,IAAAN,IAAAM,MAAAC,KAAAA,IAAA,KAAAD,GAAcE;AAAA,CAAAL,EAAA,OAAAJ,IAM0BS,IAAAL,EAAA,MAA7BK,IAAAb,EAAsBI,EAAO,EAAAI,EAAA,KAAAJ,GAAAI,EAAA,KAAAK;CAExB,IAAAC,IAAAT,IAAA,SAAA,SAAyBU;AAAA,CAAAP,EAAA,OAAAE,EAAAM,MAAAR,EAAA,OAAAM,KADjCC,IAAA;EAAAE,UACQH;EAAyBI,UACzB;EAASC,QACX;EAAMC,QACN;EAAKC,YACD;EAAC,GACVX,EAASM;EACb,EAAAR,EAAA,KAAAE,EAAAM,IAAAR,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAc;AACD,QADCd,EAAA,OAAAE,KAAAF,EAAA,QAAAK,KAAAL,EAAA,QAAAO,KAVHO,IAAA,kBAAC,GAAD;EAAK,GACCZ;EACG,OAAAG;EACH,IAAAE;EAQJ,CAAA,EAAAP,EAAA,KAAAE,GAAAF,EAAA,MAAAK,GAAAL,EAAA,MAAAO,GAAAP,EAAA,MAAAc,KAAAA,IAAAd,EAAA,KAXFc"}
1
+ {"version":3,"file":"GridAutocompleteChip.js","names":["Chip","ChipProps","castCellValueToString","AutocompleteMultipleEnumOption","GridAutocompleteChipProps","Omit","option","active","GridAutocompleteChip","t0","$","_c","chipProps","t1","undefined","t2","t3","t4","sx","maxWidth","fontSize","height","margin","flexShrink","t5"],"sources":["../../../../src/components/DataGrid/columns/GridAutocompleteChip.tsx"],"sourcesContent":["import { Chip, ChipProps } from '@mui/material'\nimport { castCellValueToString } from './AutocompleteColumn'\nimport { AutocompleteMultipleEnumOption } from './AutocompleteMultipleEnumColumn'\n\nexport interface GridAutocompleteChipProps extends Omit<ChipProps, 'label'> {\n option: AutocompleteMultipleEnumOption\n active?: boolean\n}\n\nexport function GridAutocompleteChip({\n option,\n active = false,\n ...chipProps\n}: GridAutocompleteChipProps) {\n return (\n <Chip\n {...chipProps}\n label={castCellValueToString(option)}\n sx={{\n maxWidth: active ? 'none' : '120px',\n fontSize: '0.75rem',\n height: '24px',\n margin: '1px',\n flexShrink: 0,\n ...chipProps.sx,\n }}\n />\n )\n}\n"],"mappings":";;;;;AASA,SAAOQ,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,GAAAN,GAAAO;CAAA,AAAAH,EAAA,OAAAD,KAIqBG,IAAAF,EAAA,IAAAJ,IAAAI,EAAA,IAAAG,IAAAH,EAAA,OAJS,YAAAH,QAAAM,MAAAD,KAAAH,GAITC,EAAA,KAAAD,GAAAC,EAAA,KAAAE,GAAAF,EAAA,KAAAJ,GAAAI,EAAA,KAAAG;CAF1B,IAAAN,IAAAM,MAAAC,KAAAA,IAAA,KAAAD,GAAcE;CAAA,AAAAL,EAAA,OAAAJ,IAM0BS,IAAAL,EAAA,MAA7BK,IAAAb,EAAsBI,CAAM,GAACI,EAAA,KAAAJ,GAAAI,EAAA,KAAAK;CAExB,IAAAC,IAAAT,IAAA,SAAA,SAAyBU;CAAA,AAAAP,EAAA,OAAAE,EAAAM,MAAAR,EAAA,OAAAM,KADjCC,IAAA;EAAAE,UACQH;EAAyBI,UACzB;EAASC,QACX;EAAMC,QACN;EAAKC,YACD;EAAC,GACVX,EAASM;CACd,GAACR,EAAA,KAAAE,EAAAM,IAAAR,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAc;CACD,OADCd,EAAA,OAAAE,KAAAF,EAAA,QAAAK,KAAAL,EAAA,QAAAO,KAVHO,IAAA,kBAAC,GAAD;EAAK,GACCZ;EACG,OAAAG;EACH,IAAAE;CAOH,CAAA,GACDP,EAAA,KAAAE,GAAAF,EAAA,MAAAK,GAAAL,EAAA,MAAAO,GAAAP,EAAA,MAAAc,KAAAA,IAAAd,EAAA,KAXFc;AAWE"}
@@ -1 +1 @@
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
+ {"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"}