synapse-react-client 4.0.18 → 4.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1609) hide show
  1. package/dist/SWC.index.d.ts +3 -1
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +3 -1
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
  6. package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
  7. package/dist/assets/DefaultColorfulPortalCardBackground.js.map +1 -1
  8. package/dist/assets/GoogleIcon.js.map +1 -1
  9. package/dist/assets/GoogleIcon24.js.map +1 -1
  10. package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
  11. package/dist/assets/homepage/BlinkingLiveIcon.js.map +1 -1
  12. package/dist/assets/homepage/aacr.js.map +1 -1
  13. package/dist/assets/homepage/cri.js.map +1 -1
  14. package/dist/assets/homepage/ctf.js.map +1 -1
  15. package/dist/assets/homepage/egress.js.map +1 -1
  16. package/dist/assets/homepage/facebook.js.map +1 -1
  17. package/dist/assets/homepage/fisma.js.map +1 -1
  18. package/dist/assets/homepage/gff.js.map +1 -1
  19. package/dist/assets/homepage/github.js.map +1 -1
  20. package/dist/assets/homepage/gray.js.map +1 -1
  21. package/dist/assets/homepage/hipaa-compliant.js.map +1 -1
  22. package/dist/assets/homepage/instagram.js.map +1 -1
  23. package/dist/assets/homepage/linkedin.js.map +1 -1
  24. package/dist/assets/homepage/ml-commons.js.map +1 -1
  25. package/dist/assets/homepage/nih-aging.js.map +1 -1
  26. package/dist/assets/homepage/nih-heart.js.map +1 -1
  27. package/dist/assets/homepage/nih-nci.js.map +1 -1
  28. package/dist/assets/homepage/nih-nimh.js.map +1 -1
  29. package/dist/assets/homepage/ntap.js.map +1 -1
  30. package/dist/assets/homepage/plan-item.js.map +1 -1
  31. package/dist/assets/homepage/powered-by-synapse-feature.js.map +1 -1
  32. package/dist/assets/homepage/precision-governance-feature.js.map +1 -1
  33. package/dist/assets/homepage/python.js.map +1 -1
  34. package/dist/assets/homepage/r.js.map +1 -1
  35. package/dist/assets/homepage/research-credit-feature.js.map +1 -1
  36. package/dist/assets/homepage/seamless-integration-feature.js.map +1 -1
  37. package/dist/assets/homepage/sloan.js.map +1 -1
  38. package/dist/assets/homepage/twitter.js.map +1 -1
  39. package/dist/assets/homepage/users.js.map +1 -1
  40. package/dist/assets/homepage/youtube.js.map +1 -1
  41. package/dist/assets/icons/AccessDataAnywhere.js.map +1 -1
  42. package/dist/assets/icons/AccessPending.js.map +1 -1
  43. package/dist/assets/icons/AccessPendingCloud.js.map +1 -1
  44. package/dist/assets/icons/AddAd.js.map +1 -1
  45. package/dist/assets/icons/AddToList.js.map +1 -1
  46. package/dist/assets/icons/Alert.js.map +1 -1
  47. package/dist/assets/icons/Arrow.js.map +1 -1
  48. package/dist/assets/icons/AwardScroll.js.map +1 -1
  49. package/dist/assets/icons/Baseline.js.map +1 -1
  50. package/dist/assets/icons/Cavatica.js.map +1 -1
  51. package/dist/assets/icons/CertifiedUser.js.map +1 -1
  52. package/dist/assets/icons/Challenge.js.map +1 -1
  53. package/dist/assets/icons/Checkbox/Checked.js.map +1 -1
  54. package/dist/assets/icons/Checkbox/Checked2.js.map +1 -1
  55. package/dist/assets/icons/Checkbox/Indeterminate.js.map +1 -1
  56. package/dist/assets/icons/Checkbox/Indeterminate2.js.map +1 -1
  57. package/dist/assets/icons/Checkbox/Unchecked.js.map +1 -1
  58. package/dist/assets/icons/Checkbox/Unchecked2.js.map +1 -1
  59. package/dist/assets/icons/ClappingHands.js.map +1 -1
  60. package/dist/assets/icons/CloudWarning.js.map +1 -1
  61. package/dist/assets/icons/CommunicateFindings.js.map +1 -1
  62. package/dist/assets/icons/CreateVersion.js.map +1 -1
  63. package/dist/assets/icons/DNA_Two.js.map +1 -1
  64. package/dist/assets/icons/Data2.js.map +1 -1
  65. package/dist/assets/icons/DoubleQuotes.js.map +1 -1
  66. package/dist/assets/icons/EmailAddressAdornment.js.map +1 -1
  67. package/dist/assets/icons/FileWithShield.js.map +1 -1
  68. package/dist/assets/icons/FileWithShield2.js.map +1 -1
  69. package/dist/assets/icons/FrontHand.js.map +1 -1
  70. package/dist/assets/icons/HandWithMoney.js.map +1 -1
  71. package/dist/assets/icons/IconCopy.js.map +1 -1
  72. package/dist/assets/icons/IconMinus.js.map +1 -1
  73. package/dist/assets/icons/IconPlus.js.map +1 -1
  74. package/dist/assets/icons/Java.js.map +1 -1
  75. package/dist/assets/icons/MintDoi.js.map +1 -1
  76. package/dist/assets/icons/MultiFile.js.map +1 -1
  77. package/dist/assets/icons/MultiFile2.js.map +1 -1
  78. package/dist/assets/icons/NoData.js.map +1 -1
  79. package/dist/assets/icons/NoSearchResults.js.map +1 -1
  80. package/dist/assets/icons/ORCIDIcon.js.map +1 -1
  81. package/dist/assets/icons/OpenBook.js.map +1 -1
  82. package/dist/assets/icons/Podium.js.map +1 -1
  83. package/dist/assets/icons/Python.js.map +1 -1
  84. package/dist/assets/icons/QueryStructuredData.js.map +1 -1
  85. package/dist/assets/icons/RLogo.js.map +1 -1
  86. package/dist/assets/icons/RecordProvenance.js.map +1 -1
  87. package/dist/assets/icons/RosetteRibbon.js.map +1 -1
  88. package/dist/assets/icons/SageFullLogo.js.map +1 -1
  89. package/dist/assets/icons/SearchImage.js.map +1 -1
  90. package/dist/assets/icons/ShareYourResearch.js.map +1 -1
  91. package/dist/assets/icons/Sort.js.map +1 -1
  92. package/dist/assets/icons/StarTrophy.js.map +1 -1
  93. package/dist/assets/icons/SynapseFullLogo.js.map +1 -1
  94. package/dist/assets/icons/SynapseIconWhite.js.map +1 -1
  95. package/dist/assets/icons/SynapseLogoName.js.map +1 -1
  96. package/dist/assets/icons/TasksIcon.js.map +1 -1
  97. package/dist/assets/icons/Terminal.js.map +1 -1
  98. package/dist/assets/icons/ThreeStars.js.map +1 -1
  99. package/dist/assets/icons/UnpackagableFile.js.map +1 -1
  100. package/dist/assets/icons/UnpackagableFile2.js.map +1 -1
  101. package/dist/assets/icons/ValidatedProfile.js.map +1 -1
  102. package/dist/assets/icons/account-certified.js.map +1 -1
  103. package/dist/assets/icons/account-enabled-mfa.js.map +1 -1
  104. package/dist/assets/icons/account-validated.js.map +1 -1
  105. package/dist/assets/icons/bioChemicalPhysical.js.map +1 -1
  106. package/dist/assets/icons/chart2.js.map +1 -1
  107. package/dist/assets/icons/columns.js.map +1 -1
  108. package/dist/assets/icons/columnsDarkTheme.js.map +1 -1
  109. package/dist/assets/icons/computationalTool.js.map +1 -1
  110. package/dist/assets/icons/dataReuse.js.map +1 -1
  111. package/dist/assets/icons/emailAddressAdornment2.js.map +1 -1
  112. package/dist/assets/icons/emailWithNotification.js.map +1 -1
  113. package/dist/assets/icons/error_page/maintenance.js.map +1 -1
  114. package/dist/assets/icons/error_page/no-access.js.map +1 -1
  115. package/dist/assets/icons/error_page/unavailable.js.map +1 -1
  116. package/dist/assets/icons/file.js.map +1 -1
  117. package/dist/assets/icons/inSilicoModel.js.map +1 -1
  118. package/dist/assets/icons/institution.js.map +1 -1
  119. package/dist/assets/icons/json-form-tool-no-submissions.js.map +1 -1
  120. package/dist/assets/icons/modelSystem.js.map +1 -1
  121. package/dist/assets/icons/mouse.js.map +1 -1
  122. package/dist/assets/icons/organizations.js.map +1 -1
  123. package/dist/assets/icons/person.js.map +1 -1
  124. package/dist/assets/icons/spatialProfiling.js.map +1 -1
  125. package/dist/assets/icons/standardDataModel.js.map +1 -1
  126. package/dist/assets/icons/study-active.js.map +1 -1
  127. package/dist/assets/icons/study-complete.js.map +1 -1
  128. package/dist/assets/icons/subscribe_plus.js.map +1 -1
  129. package/dist/assets/icons/synapse-logo.js.map +1 -1
  130. package/dist/assets/icons/terms/CheckIcon.js.map +1 -1
  131. package/dist/assets/icons/translational.js.map +1 -1
  132. package/dist/assets/icons/tree_horizontal.js.map +1 -1
  133. package/dist/assets/illustrations/acknowledgement_statements_illustration.js.map +1 -1
  134. package/dist/assets/illustrations/challenges_illustration.js.map +1 -1
  135. package/dist/assets/illustrations/cohort_builder_illustration.js.map +1 -1
  136. package/dist/assets/illustrations/data_access_management_illustration.js.map +1 -1
  137. package/dist/assets/illustrations/datasets_illustration.js.map +1 -1
  138. package/dist/assets/illustrations/diagonalLinePattern.js.map +1 -1
  139. package/dist/assets/illustrations/discussions_illustration.js.map +1 -1
  140. package/dist/assets/illustrations/docker_illustration.js.map +1 -1
  141. package/dist/assets/illustrations/donation_illustration.js.map +1 -1
  142. package/dist/assets/illustrations/favorites_illustration.js.map +1 -1
  143. package/dist/assets/illustrations/files_illustration.js.map +1 -1
  144. package/dist/assets/illustrations/following_illustration.js.map +1 -1
  145. package/dist/assets/illustrations/index.js.map +1 -1
  146. package/dist/assets/illustrations/left_dot_blob_dark_illustration.js.map +1 -1
  147. package/dist/assets/illustrations/left_dot_blob_illustration.js.map +1 -1
  148. package/dist/assets/illustrations/projects_illustration.js.map +1 -1
  149. package/dist/assets/illustrations/right_dot_blob_dark_illustration.js.map +1 -1
  150. package/dist/assets/illustrations/right_dot_blob_illustration.js.map +1 -1
  151. package/dist/assets/illustrations/tables_illustration.js.map +1 -1
  152. package/dist/assets/illustrations/teams_illustration.js.map +1 -1
  153. package/dist/assets/illustrations/trash_can_illustration.js.map +1 -1
  154. package/dist/assets/illustrations/underconstruction_illustration.js.map +1 -1
  155. package/dist/assets/illustrations/wikis_illustration.js.map +1 -1
  156. package/dist/assets/logos/other/ad-workbench-logo.js.map +1 -1
  157. package/dist/assets/logos/other/cavatica-logo.js.map +1 -1
  158. package/dist/assets/logos/other/pluto-logo.js.map +1 -1
  159. package/dist/assets/logos/other/terra-logo.js.map +1 -1
  160. package/dist/assets/mui_components/AccessManagement.js.map +1 -1
  161. package/dist/assets/mui_components/AccountCertified.js.map +1 -1
  162. package/dist/assets/mui_components/AccountRegistered.js.map +1 -1
  163. package/dist/assets/mui_components/AccountValidated.js.map +1 -1
  164. package/dist/assets/mui_components/ActionKey.js.map +1 -1
  165. package/dist/assets/mui_components/BioChemicalPhysical.js.map +1 -1
  166. package/dist/assets/mui_components/Chromatin.js.map +1 -1
  167. package/dist/assets/mui_components/Clinical.js.map +1 -1
  168. package/dist/assets/mui_components/ComputationalTool.js.map +1 -1
  169. package/dist/assets/mui_components/Data.js.map +1 -1
  170. package/dist/assets/mui_components/DataLocked.js.map +1 -1
  171. package/dist/assets/mui_components/DataReuse.js.map +1 -1
  172. package/dist/assets/mui_components/Dataset.js.map +1 -1
  173. package/dist/assets/mui_components/DatasetCollection.js.map +1 -1
  174. package/dist/assets/mui_components/Docker.js.map +1 -1
  175. package/dist/assets/mui_components/GeneExpression.js.map +1 -1
  176. package/dist/assets/mui_components/GeneVariants.js.map +1 -1
  177. package/dist/assets/mui_components/HelpChatBubble.js.map +1 -1
  178. package/dist/assets/mui_components/Imaging.js.map +1 -1
  179. package/dist/assets/mui_components/InSilicoModel.js.map +1 -1
  180. package/dist/assets/mui_components/Kinomics.js.map +1 -1
  181. package/dist/assets/mui_components/LineGraph.js.map +1 -1
  182. package/dist/assets/mui_components/ModelSystem.js.map +1 -1
  183. package/dist/assets/mui_components/Other.js.map +1 -1
  184. package/dist/assets/mui_components/PackagableFile.js.map +1 -1
  185. package/dist/assets/mui_components/PackagableFile2.js.map +1 -1
  186. package/dist/assets/mui_components/Proteomics.js.map +1 -1
  187. package/dist/assets/mui_components/Rat.js.map +1 -1
  188. package/dist/assets/mui_components/SpatialProfiling.js.map +1 -1
  189. package/dist/assets/sustainability/darkDialPosition1.js.map +1 -1
  190. package/dist/assets/sustainability/darkDialPosition2.js.map +1 -1
  191. package/dist/assets/sustainability/darkDialPosition3.js.map +1 -1
  192. package/dist/assets/sustainability/darkDialPosition4.js.map +1 -1
  193. package/dist/assets/sustainability/dialPosition1.js.map +1 -1
  194. package/dist/assets/sustainability/dialPosition2.js.map +1 -1
  195. package/dist/assets/sustainability/dialPosition3.js.map +1 -1
  196. package/dist/assets/sustainability/dialPosition4.js.map +1 -1
  197. package/dist/assets/themed_icons/Active.js.map +1 -1
  198. package/dist/assets/themed_icons/Chart.js.map +1 -1
  199. package/dist/assets/themed_icons/Close.js.map +1 -1
  200. package/dist/assets/themed_icons/Collapse.js.map +1 -1
  201. package/dist/assets/themed_icons/Columns.js.map +1 -1
  202. package/dist/assets/themed_icons/ColumnsDark.js.map +1 -1
  203. package/dist/assets/themed_icons/Database.js.map +1 -1
  204. package/dist/assets/themed_icons/Download.js.map +1 -1
  205. package/dist/assets/themed_icons/Expand.js.map +1 -1
  206. package/dist/assets/themed_icons/Explore.js.map +1 -1
  207. package/dist/assets/themed_icons/ExternalLink.js.map +1 -1
  208. package/dist/assets/themed_icons/Filter.js.map +1 -1
  209. package/dist/assets/themed_icons/Program.js.map +1 -1
  210. package/dist/assets/themed_icons/Project.js.map +1 -1
  211. package/dist/assets/themed_icons/Publication.js.map +1 -1
  212. package/dist/assets/themed_icons/Search.js.map +1 -1
  213. package/dist/assets/themed_icons/Settings.js.map +1 -1
  214. package/dist/assets/themed_icons/SortDown.js.map +1 -1
  215. package/dist/assets/themed_icons/SortUp.js.map +1 -1
  216. package/dist/assets/themed_icons/SqlEditorIcon.js.map +1 -1
  217. package/dist/assets/themed_icons/Study.js.map +1 -1
  218. package/dist/assets/themed_icons/ToolClinical.js.map +1 -1
  219. package/dist/assets/themed_icons/ToolComputational.js.map +1 -1
  220. package/dist/assets/themed_icons/ToolExperimental.js.map +1 -1
  221. package/dist/assets/themed_icons/VerticalDots.js.map +1 -1
  222. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +1 -1
  223. package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
  224. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  225. package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
  226. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +10 -11
  227. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  228. package/dist/components/AccessRequirementList/AccessRequirementList.js +73 -76
  229. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  230. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  231. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
  232. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  233. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  234. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  235. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
  236. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  237. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +1 -1
  238. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
  239. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  240. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  241. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
  242. package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map +1 -1
  243. package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
  244. package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map +1 -1
  245. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js.map +1 -1
  246. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
  247. package/dist/components/AccessRequirementList/RequirementItem/TwoFactorAuthEnabledRequirement.js.map +1 -1
  248. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
  249. package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
  250. package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
  251. package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
  252. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  253. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  254. package/dist/components/AccountLevelBadge/AccountLevelBadge.js.map +1 -1
  255. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  256. package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js.map +1 -1
  257. package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js.map +1 -1
  258. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  259. package/dist/components/AcknowledgementsPage/StudyAcknowledgement.js.map +1 -1
  260. package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
  261. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  262. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  263. package/dist/components/AclEditor/AclEditorSkeleton.js.map +1 -1
  264. package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
  265. package/dist/components/AclEditor/ReadOnlyPermissionLevel.js.map +1 -1
  266. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js +2 -4
  267. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
  268. package/dist/components/AclEditor/ResourceAccessItem.js.map +1 -1
  269. package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
  270. package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
  271. package/dist/components/AdaptiveTwoColumnLayout/AdaptiveTwoColumnLayout.js.map +1 -1
  272. package/dist/components/AddToDownloadListV2.js.map +1 -1
  273. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  274. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  275. package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
  276. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  277. package/dist/components/Authentication/LoginFlowBackButton.js.map +1 -1
  278. package/dist/components/Authentication/LoginForm.js.map +1 -1
  279. package/dist/components/Authentication/LoginMethod.js.map +1 -1
  280. package/dist/components/Authentication/LoginMethodButton.js.map +1 -1
  281. package/dist/components/Authentication/Logout.js.map +1 -1
  282. package/dist/components/Authentication/OneTimePasswordForm.js.map +1 -1
  283. package/dist/components/Authentication/PasswordField.js.map +1 -1
  284. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  285. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  286. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  287. package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
  288. package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
  289. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  290. package/dist/components/Authentication/TwoFactorAuthSettingsPanel.js.map +1 -1
  291. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  292. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  293. package/dist/components/Authentication/TwoFactorSecretDialog.js.map +1 -1
  294. package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
  295. package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
  296. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  297. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  298. package/dist/components/CTASectionWrapper/CTASectionWrapper.js.map +1 -1
  299. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  300. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  301. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  302. package/dist/components/CardDeck/CardDeck.Desktop.js.map +1 -1
  303. package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
  304. package/dist/components/CardDeck/CardDeck.js.map +1 -1
  305. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  306. package/dist/components/CardGridWithLinks/CardGridWithLinks.js.map +1 -1
  307. package/dist/components/CertificationQuiz/CertificationAnswer.js.map +1 -1
  308. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  309. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
  310. package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js.map +1 -1
  311. package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
  312. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  313. package/dist/components/ChallengeSubmission/AddExternalRepo.js.map +1 -1
  314. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  315. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  316. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +62 -64
  317. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
  318. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  319. package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
  320. package/dist/components/ChallengeSubmission/SubmissionCommitList.js.map +1 -1
  321. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  322. package/dist/components/ChallengeTeamWizard/ChallengeTeamSearch.js.map +1 -1
  323. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  324. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +96 -102
  325. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
  326. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  327. package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
  328. package/dist/components/ChallengeTeamWizard/OpenMembershipInvitation.js.map +1 -1
  329. package/dist/components/ChallengeTeamWizard/RegistrationSuccessful.js.map +1 -1
  330. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  331. package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
  332. package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
  333. package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
  334. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  335. package/dist/components/CitationPopover/CitationPopover.js.map +1 -1
  336. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  337. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  338. package/dist/components/CitationPopover/useCitation.js.map +1 -1
  339. package/dist/components/ColorGradient/ColorGradient.js.map +1 -1
  340. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -1
  341. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  342. package/dist/components/ComponentCollapse.js.map +1 -1
  343. package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  344. package/dist/components/CookiesNotification/CookiePreferencesDialog.js.map +1 -1
  345. package/dist/components/CookiesNotification/CookiesNotification.d.ts.map +1 -1
  346. package/dist/components/CookiesNotification/CookiesNotification.js +9 -9
  347. package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
  348. package/dist/components/CopyToClipboardIcon.js.map +1 -1
  349. package/dist/components/CopyToClipboardInput/CopyToClipboardInput.js.map +1 -1
  350. package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
  351. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  352. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizardUtils.js.map +1 -1
  353. package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
  354. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -1
  355. package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
  356. package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
  357. package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
  358. package/dist/components/CreateTableViewWizard/TableTypeSelection.js.map +1 -1
  359. package/dist/components/CreateTableViewWizard/ViewTypeSelection.js.map +1 -1
  360. package/dist/components/CrispChat/CrispChat.js.map +1 -1
  361. package/dist/components/DataExplorer/DataExplorer.css +1 -0
  362. package/dist/components/DataExplorer/DataExplorer.d.ts +13 -0
  363. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -0
  364. package/dist/components/DataExplorer/DataExplorer.js +116 -0
  365. package/dist/components/DataExplorer/DataExplorer.js.map +1 -0
  366. package/dist/components/DataExplorer/DataExplorer.module.js +22 -0
  367. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -0
  368. package/dist/components/DataExplorer/DataExplorer.module.scss +156 -0
  369. package/dist/components/DataGrid/DataGrid.js +72 -72
  370. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  371. package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
  372. package/dist/components/DataGrid/DataGridWebSocket.d.ts +2 -0
  373. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  374. package/dist/components/DataGrid/DataGridWebSocket.js +9 -10
  375. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  376. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
  377. package/dist/components/DataGrid/StartGridSession.js.map +1 -1
  378. package/dist/components/DataGrid/SynapseGrid.d.ts +3 -1
  379. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  380. package/dist/components/DataGrid/SynapseGrid.js +219 -211
  381. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  382. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
  383. package/dist/components/DataGrid/columns/AutocompleteColumn.js +106 -102
  384. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  385. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts.map +1 -1
  386. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js +97 -89
  387. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
  388. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  389. package/dist/components/DataGrid/columns/GridAutocompleteChip.js.map +1 -1
  390. package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts +19 -8
  391. package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts.map +1 -1
  392. package/dist/components/DataGrid/columns/useGridAutocompleteState.js +64 -43
  393. package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
  394. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  395. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  396. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
  397. package/dist/components/DataGrid/components/GridSessionSelectionField.js.map +1 -1
  398. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  399. package/dist/components/DataGrid/components/UploadCsvToGridDialog.d.ts.map +1 -1
  400. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +9 -9
  401. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  402. package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
  403. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  404. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +2 -0
  405. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
  406. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  407. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.d.ts.map +1 -1
  408. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +8 -1
  409. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
  410. package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
  411. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  412. package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
  413. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  414. package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
  415. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
  416. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  417. package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
  418. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  419. package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
  420. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  421. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  422. package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
  423. package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
  424. package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
  425. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  426. package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
  427. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  428. package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
  429. package/dist/components/DataGrid/utils/convertActionToModelChange.js.map +1 -1
  430. package/dist/components/DataGrid/utils/createTestModel.js.map +1 -1
  431. package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -1
  432. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  433. package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -1
  434. package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
  435. package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -1
  436. package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -1
  437. package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -1
  438. package/dist/components/DataGrid/utils/isValidationUpToDateForRow.js.map +1 -1
  439. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  440. package/dist/components/DataGrid/utils/json-rx/JsonRxMessage.js.map +1 -1
  441. package/dist/components/DataGrid/utils/json-rx/JsonRxNotification.js.map +1 -1
  442. package/dist/components/DataGrid/utils/json-rx/JsonRxRequest.js.map +1 -1
  443. package/dist/components/DataGrid/utils/json-rx/JsonRxRequestComplete.js.map +1 -1
  444. package/dist/components/DataGrid/utils/json-rx/JsonRxResponse.js.map +1 -1
  445. package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
  446. package/dist/components/DataGrid/utils/logicalTimestampToString.js.map +1 -1
  447. package/dist/components/DataGrid/utils/mapOperationsToModelChanges.js.map +1 -1
  448. package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
  449. package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
  450. package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
  451. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -1
  452. package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -1
  453. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  454. package/dist/components/DatasetJsonLdScript.js.map +1 -1
  455. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  456. package/dist/components/Dialog/ConfirmCloseWithoutSavingDialog.js.map +1 -1
  457. package/dist/components/DialogBase.js.map +1 -1
  458. package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
  459. package/dist/components/DirectDownload/FileEntityDirectDownload.js.map +1 -1
  460. package/dist/components/DirectDownloadButton.js.map +1 -1
  461. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js.map +1 -1
  462. package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
  463. package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
  464. package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
  465. package/dist/components/DownloadCart/DirectProgrammaticDownload.js.map +1 -1
  466. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  467. package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
  468. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  469. package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
  470. package/dist/components/DownloadCart/DownloadListStats.js.map +1 -1
  471. package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
  472. package/dist/components/DownloadCart/EnableTwoFaRequirementCard.js.map +1 -1
  473. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  474. package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
  475. package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
  476. package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
  477. package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
  478. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  479. package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
  480. package/dist/components/DynamicForm/DynamicForm.js.map +1 -1
  481. package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
  482. package/dist/components/Ecosystem/EcosystemCard.js.map +1 -1
  483. package/dist/components/Ecosystem/EcosystemLayout.js.map +1 -1
  484. package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
  485. package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
  486. package/dist/components/EntityAclEditor/CreateOrDeleteLocalSharingSettingsButton.js.map +1 -1
  487. package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
  488. package/dist/components/EntityAclEditor/EntityAclEditorModal.js.map +1 -1
  489. package/dist/components/EntityAclEditor/InheritanceMessage.js.map +1 -1
  490. package/dist/components/EntityAclEditor/OpenData.js.map +1 -1
  491. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
  492. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +68 -70
  493. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  494. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  495. package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
  496. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +32 -35
  497. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  498. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  499. package/dist/components/EntityFinder/Breadcrumbs.js.map +1 -1
  500. package/dist/components/EntityFinder/EntityFinder.js +134 -136
  501. package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
  502. package/dist/components/EntityFinder/EntityFinderModal.js.map +1 -1
  503. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  504. package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
  505. package/dist/components/EntityFinder/details/EntityDetailsList.js +20 -20
  506. package/dist/components/EntityFinder/details/EntityDetailsList.js.map +1 -1
  507. package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
  508. package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
  509. package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
  510. package/dist/components/EntityFinder/details/configurations/ReferenceDetails.js.map +1 -1
  511. package/dist/components/EntityFinder/details/configurations/SearchDetails.js.map +1 -1
  512. package/dist/components/EntityFinder/details/view/DetailsView.js +67 -67
  513. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  514. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js +1 -1
  515. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js.map +1 -1
  516. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  517. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js.map +1 -1
  518. package/dist/components/EntityFinder/details/view/table/DateCell.js.map +1 -1
  519. package/dist/components/EntityFinder/details/view/table/EntityBadgeIconsCell.js.map +1 -1
  520. package/dist/components/EntityFinder/details/view/table/EntityFinderCheckboxCell.js.map +1 -1
  521. package/dist/components/EntityFinder/details/view/table/EntityFinderVersionCell.js.map +1 -1
  522. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js.map +1 -1
  523. package/dist/components/EntityFinder/details/view/table/EntityTypeCell.js.map +1 -1
  524. package/dist/components/EntityFinder/details/view/table/FileEntityDirectDownloadCell.js.map +1 -1
  525. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js.map +1 -1
  526. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js.map +1 -1
  527. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js.map +1 -1
  528. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js.map +1 -1
  529. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js.map +1 -1
  530. package/dist/components/EntityFinder/details/view/table/UserBadgeCell.js.map +1 -1
  531. package/dist/components/EntityFinder/tree/EntityTree.js +80 -80
  532. package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
  533. package/dist/components/EntityFinder/tree/VirtualizedTree.js +31 -31
  534. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  535. package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
  536. package/dist/components/EntityForm/EntityForm.js.map +1 -1
  537. package/dist/components/EntityHeaderTable/DebouncedInput.js.map +1 -1
  538. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  539. package/dist/components/EntityHeaderTable/EntityHeaderTableCellRenderers.js.map +1 -1
  540. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  541. package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
  542. package/dist/components/EntityIcon.js.map +1 -1
  543. package/dist/components/EntityLink.js.map +1 -1
  544. package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
  545. package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
  546. package/dist/components/EntityTreeTable/components/AutoLoadMore.js.map +1 -1
  547. package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
  548. package/dist/components/EntityTreeTable/components/EntityBadgeIconsCell.js.map +1 -1
  549. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  550. package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
  551. package/dist/components/EntityTreeTable/components/EntityTreeTableRow.js.map +1 -1
  552. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
  553. package/dist/components/EntityTreeTable/components/IdCell.js.map +1 -1
  554. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  555. package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
  556. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  557. package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
  558. package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
  559. package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
  560. package/dist/components/EntityUpload/EntityUploadModal.js +29 -31
  561. package/dist/components/EntityUpload/EntityUploadModal.js.map +1 -1
  562. package/dist/components/EntityUpload/EntityUploadPromptDialog.js.map +1 -1
  563. package/dist/components/EntityUpload/ExternalObjectStoreCredentialsForm.js.map +1 -1
  564. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  565. package/dist/components/EntityUpload/LinkToURL.js.map +1 -1
  566. package/dist/components/EntityUpload/ProjectStorageLimitAlert.js.map +1 -1
  567. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
  568. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditor.js.map +1 -1
  569. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditorModal.js.map +1 -1
  570. package/dist/components/Evaluation/CreatedOnByUserDiv.js.map +1 -1
  571. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -1
  572. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  573. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  574. package/dist/components/Evaluation/EvaluationEditorPage.js.map +1 -1
  575. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  576. package/dist/components/Evaluation/EvaluationRoundEditorDropdown.js.map +1 -1
  577. package/dist/components/Evaluation/EvaluationRoundEditorList.js.map +1 -1
  578. package/dist/components/Evaluation/input_models/models.js.map +1 -1
  579. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
  580. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  581. package/dist/components/EvaluationFinder/EvaluationFinder.js.map +1 -1
  582. package/dist/components/ExperimentalMode/ExperimentalMode.d.ts.map +1 -1
  583. package/dist/components/ExperimentalMode/ExperimentalMode.js +24 -30
  584. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  585. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  586. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  587. package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
  588. package/dist/components/FeaturedDataTabs/FeaturedDataPlots.js.map +1 -1
  589. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
  590. package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
  591. package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
  592. package/dist/components/FeaturedResearch/FeaturedResearch.js +16 -18
  593. package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
  594. package/dist/components/FeaturedToolsList/FeaturedToolCard.js.map +1 -1
  595. package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
  596. package/dist/components/FilePreview/EntityPreview.js.map +1 -1
  597. package/dist/components/FilePreview/FileEntityPreview.js.map +1 -1
  598. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  599. package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
  600. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  601. package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
  602. package/dist/components/FilePreview/PreviewUtils.js.map +1 -1
  603. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  604. package/dist/components/Forum/DiscussionReply.js.map +1 -1
  605. package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
  606. package/dist/components/Forum/DiscussionThread.js.map +1 -1
  607. package/dist/components/Forum/ForumPage.js.map +1 -1
  608. package/dist/components/Forum/ForumTable.js.map +1 -1
  609. package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
  610. package/dist/components/Forum/SubscribersModal.js.map +1 -1
  611. package/dist/components/ForumSearch/ForumSearch.js.map +1 -1
  612. package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
  613. package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
  614. package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
  615. package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
  616. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  617. package/dist/components/GenericCard/CollapsibleDescription.js.map +1 -1
  618. package/dist/components/GenericCard/CroissantButton/CroissantButton.js.map +1 -1
  619. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  620. package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
  621. package/dist/components/GenericCard/GenericCardIcon.js.map +1 -1
  622. package/dist/components/GenericCard/GenericCardTitle.js.map +1 -1
  623. package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -1
  624. package/dist/components/GenericCard/Linkify.js.map +1 -1
  625. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  626. package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
  627. package/dist/components/GenericCard/SynapseCardLabel.js +1 -1
  628. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  629. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  630. package/dist/components/GenericCard/useResolvedSynapseEntity.js.map +1 -1
  631. package/dist/components/Goals/Goals.Desktop.js.map +1 -1
  632. package/dist/components/Goals/Goals.Mobile.js.map +1 -1
  633. package/dist/components/Goals/Goals.js +25 -27
  634. package/dist/components/Goals/Goals.js.map +1 -1
  635. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  636. package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
  637. package/dist/components/GoalsV2/GoalsV2.js +14 -16
  638. package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
  639. package/dist/components/GoalsV3/GoalsV3.Desktop.js.map +1 -1
  640. package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
  641. package/dist/components/GoalsV3/GoalsV3.js +14 -16
  642. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  643. package/dist/components/GoogleAnalytics/GoogleAnalytics.js.map +1 -1
  644. package/dist/components/GoogleMap/GoogleMap.js.map +1 -1
  645. package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
  646. package/dist/components/HasAccess/AccessIcon.js +10 -10
  647. package/dist/components/HasAccess/AccessIcon.js.map +1 -1
  648. package/dist/components/HasAccess/HasAccessV2.js.map +1 -1
  649. package/dist/components/HasAccess/useHasAccess.js.map +1 -1
  650. package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
  651. package/dist/components/HeaderCard.js.map +1 -1
  652. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  653. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  654. package/dist/components/IDUReport/IDUReport.js.map +1 -1
  655. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  656. package/dist/components/Icon/Icon.js.map +1 -1
  657. package/dist/components/IconList.js.map +1 -1
  658. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  659. package/dist/components/IconSvgButton.js.map +1 -1
  660. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js +7 -9
  661. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
  662. package/dist/components/ImageFromSynapseTable.js.map +1 -1
  663. package/dist/components/InteractiveCopyIdsIcon.js.map +1 -1
  664. package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
  665. package/dist/components/JSONArrayEditor/JSONArrayEditorModal.js.map +1 -1
  666. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  667. package/dist/components/JsonLdScript.js.map +1 -1
  668. package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
  669. package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
  670. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemButtonTemplate.js.map +1 -1
  671. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
  672. package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
  673. package/dist/components/JsonSchemaForm/templates/ArrayFieldTitleTemplate.js.map +1 -1
  674. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  675. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  676. package/dist/components/JsonSchemaForm/templates/DescriptionFieldTemplate.js.map +1 -1
  677. package/dist/components/JsonSchemaForm/templates/ErrorListTemplate.js.map +1 -1
  678. package/dist/components/JsonSchemaForm/templates/FieldDescriptionTable.js.map +1 -1
  679. package/dist/components/JsonSchemaForm/templates/FieldErrorTemplate.js.map +1 -1
  680. package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
  681. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  682. package/dist/components/JsonSchemaForm/widgets/BooleanWidget.js.map +1 -1
  683. package/dist/components/JsonSchemaForm/widgets/DateTimeWidget.js.map +1 -1
  684. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
  685. package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
  686. package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
  687. package/dist/components/Markdown/GovernanceMarkdownGithub.js.map +1 -1
  688. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  689. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  690. package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
  691. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  692. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  693. package/dist/components/Markdown/MarkdownSynapse.js +75 -106
  694. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  695. package/dist/components/Markdown/MarkdownUtils.d.ts +14 -4
  696. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  697. package/dist/components/Markdown/MarkdownUtils.js +38 -37
  698. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  699. package/dist/components/Markdown/MarkdownWidget.js.map +1 -1
  700. package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
  701. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  702. package/dist/components/Markdown/widget/Bookmarks.js.map +1 -1
  703. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  704. package/dist/components/Markdown/widget/MarkdownEntityPreview.js.map +1 -1
  705. package/dist/components/Markdown/widget/MarkdownIDUReport.js.map +1 -1
  706. package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
  707. package/dist/components/Markdown/widget/MarkdownSynapseImage.js.map +1 -1
  708. package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
  709. package/dist/components/Markdown/widget/MarkdownSynapseTable.js.map +1 -1
  710. package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
  711. package/dist/components/Markdown/widget/MarkdownUserOrTeamBadge.js.map +1 -1
  712. package/dist/components/Markdown/widget/MarkdownVideo.js.map +1 -1
  713. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  714. package/dist/components/ModalDownload/ModalDownload.FormSchema.js.map +1 -1
  715. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  716. package/dist/components/MuiContainer.js.map +1 -1
  717. package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js.map +1 -1
  718. package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
  719. package/dist/components/OAuthClientManagement/CreateOAuthClient.js.map +1 -1
  720. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  721. package/dist/components/OrientationBanner/OrientationBanner.js.map +1 -1
  722. package/dist/components/PageProgress/PageProgress.js.map +1 -1
  723. package/dist/components/Plot/BarPlot.js.map +1 -1
  724. package/dist/components/Plot/DotPlot.js.map +1 -1
  725. package/dist/components/Plot/Plot.d.ts +12 -1
  726. package/dist/components/Plot/Plot.d.ts.map +1 -1
  727. package/dist/components/Plot/Plot.js +5 -1
  728. package/dist/components/Plot/Plot.js.map +1 -1
  729. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  730. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  731. package/dist/components/Plot/SynapseSankeyPlot.d.ts +12 -0
  732. package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
  733. package/dist/components/Plot/SynapseSankeyPlot.js +54 -0
  734. package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
  735. package/dist/components/Plot/ThemesPlot.js.map +1 -1
  736. package/dist/components/Plot/UpsetPlot.js.map +1 -1
  737. package/dist/components/Plot/index.d.ts +3 -1
  738. package/dist/components/Plot/index.d.ts.map +1 -1
  739. package/dist/components/Plot/index.js +2 -1
  740. package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
  741. package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
  742. package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
  743. package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
  744. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
  745. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
  746. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
  747. package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
  748. package/dist/components/PortalList/PortalCard.js.map +1 -1
  749. package/dist/components/PortalList/PortalList.js.map +1 -1
  750. package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
  751. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
  752. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
  753. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  754. package/dist/components/Programs/Programs.Desktop.js.map +1 -1
  755. package/dist/components/Programs/Programs.Mobile.js.map +1 -1
  756. package/dist/components/Programs/Programs.js.map +1 -1
  757. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  758. package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
  759. package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
  760. package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
  761. package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
  762. package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
  763. package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
  764. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  765. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  766. package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
  767. package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
  768. package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
  769. package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
  770. package/dist/components/QueryContext/QueryContext.js.map +1 -1
  771. package/dist/components/QueryCount/QueryCount.js.map +1 -1
  772. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  773. package/dist/components/QuerySortSelector.js.map +1 -1
  774. package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
  775. package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
  776. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
  777. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +67 -65
  778. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  779. package/dist/components/QueryWrapper/QueryWrapper.js +27 -27
  780. package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
  781. package/dist/components/QueryWrapper/QueryWrapperLoadingScreen.js.map +1 -1
  782. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  783. package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
  784. package/dist/components/QueryWrapper/ViewMoreQueryResultsButton.js.map +1 -1
  785. package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
  786. package/dist/components/QueryWrapper/useComputeRowSelectionPrimaryKey.js.map +1 -1
  787. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  788. package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
  789. package/dist/components/QueryWrapper/useHasFacetedSelectColumn.js.map +1 -1
  790. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  791. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  792. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
  793. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -1
  794. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  795. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +1 -0
  796. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  797. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  798. package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
  799. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  800. package/dist/components/RORInstitutionField/RORInstitutionField.js.map +1 -1
  801. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js +6 -8
  802. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
  803. package/dist/components/RegisterPageLogoutPrompt/RegisterPageLogoutPrompt.js.map +1 -1
  804. package/dist/components/ReleaseCard/ReleaseCard.js.map +1 -1
  805. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  806. package/dist/components/ReleaseCard/ReleaseCardMedium.js.map +1 -1
  807. package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
  808. package/dist/components/RenderIfInView/RenderIfInView.js.map +1 -1
  809. package/dist/components/ResizableContainer/ResizableContainer.js.map +1 -1
  810. package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
  811. package/dist/components/Resources/Resources.Desktop.js.map +1 -1
  812. package/dist/components/Resources/Resources.Mobile.js.map +1 -1
  813. package/dist/components/Resources/Resources.js +8 -11
  814. package/dist/components/Resources/Resources.js.map +1 -1
  815. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  816. package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
  817. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  818. package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
  819. package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
  820. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
  821. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  822. package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
  823. package/dist/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js.map +1 -1
  824. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  825. package/dist/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.js.map +1 -1
  826. package/dist/components/SchemaDrivenAnnotationEditor/widget/TextWidget.js.map +1 -1
  827. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  828. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
  829. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts +1 -1
  830. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts.map +1 -1
  831. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js +1 -0
  832. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
  833. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  834. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementTextInstructions.js.map +1 -1
  835. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js.map +1 -1
  836. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
  837. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
  838. package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
  839. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  840. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  841. package/dist/components/ShowMore/ShowMore.js.map +1 -1
  842. package/dist/components/SignInButton.js.map +1 -1
  843. package/dist/components/SignInRequiredModal/SignInRequiredModal.js.map +1 -1
  844. package/dist/components/Skeleton/SkeletonButton.js.map +1 -1
  845. package/dist/components/Skeleton/SkeletonInlineBlock.js.map +1 -1
  846. package/dist/components/Skeleton/SkeletonParagraph.js.map +1 -1
  847. package/dist/components/Skeleton/SkeletonTable.js.map +1 -1
  848. package/dist/components/SmartLink/SmartButton.js.map +1 -1
  849. package/dist/components/SmartLink/SmartLink.js.map +1 -1
  850. package/dist/components/SmartLink/useSmartLink.js.map +1 -1
  851. package/dist/components/SourceAppImage.js.map +1 -1
  852. package/dist/components/SpinnerButton/SpinnerButton.js.map +1 -1
  853. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditor.js.map +1 -1
  854. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditorModal.js.map +1 -1
  855. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts +1 -1
  856. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts.map +1 -1
  857. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
  858. package/dist/components/StatisticsPlot.js.map +1 -1
  859. package/dist/components/StepperDialog/StepperDialog.js.map +1 -1
  860. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  861. package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditor.js.map +1 -1
  862. package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditorModal.js.map +1 -1
  863. package/dist/components/SubscriptionPage/ForumTopic.js.map +1 -1
  864. package/dist/components/SubscriptionPage/SubscriptionItem.js.map +1 -1
  865. package/dist/components/SubscriptionPage/SubscriptionPage.js.map +1 -1
  866. package/dist/components/SubscriptionPage/ThreadTopic.js.map +1 -1
  867. package/dist/components/SubscriptionPage/Topic.js.map +1 -1
  868. package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
  869. package/dist/components/SustainabilityScorecard/Dial.js.map +1 -1
  870. package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
  871. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
  872. package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js.map +1 -1
  873. package/dist/components/SustainabilityScorecard/SustainabilityScorecardUtils.js.map +1 -1
  874. package/dist/components/SynapseChat/AccessLevelMenu.js.map +1 -1
  875. package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
  876. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  877. package/dist/components/SynapseChat/SynapseChatDialog.js.map +1 -1
  878. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  879. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  880. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
  881. package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
  882. package/dist/components/SynapseChat/useChatState.js.map +1 -1
  883. package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
  884. package/dist/components/SynapseFooter/SynapseLinksColumn.js.map +1 -1
  885. package/dist/components/SynapseForm/DataDebug.js.map +1 -1
  886. package/dist/components/SynapseForm/Header.js.map +1 -1
  887. package/dist/components/SynapseForm/NavButtons.js.map +1 -1
  888. package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
  889. package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
  890. package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
  891. package/dist/components/SynapseForm/SynapseFormCheckboxWidget.js.map +1 -1
  892. package/dist/components/SynapseForm/SynapseFormCheckboxesWidget.js.map +1 -1
  893. package/dist/components/SynapseForm/SynapseFormRadioWidget.js.map +1 -1
  894. package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
  895. package/dist/components/SynapseForm/SynapseFormUtils.js.map +1 -1
  896. package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
  897. package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
  898. package/dist/components/SynapseForm/types.js.map +1 -1
  899. package/dist/components/SynapseForm/useGetFormPropsFromSearchParams.js.map +1 -1
  900. package/dist/components/SynapseHomepageV2/FloatingBlobsBackground.js.map +1 -1
  901. package/dist/components/SynapseHomepageV2/HomepageStyles.js.map +1 -1
  902. package/dist/components/SynapseHomepageV2/SynapseByTheNumbers.js.map +1 -1
  903. package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
  904. package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
  905. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
  906. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasets.js.map +1 -1
  907. package/dist/components/SynapseHomepageV2/SynapseFeatures.js.map +1 -1
  908. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js +18 -21
  909. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
  910. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
  911. package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
  912. package/dist/components/SynapseHomepageV2/SynapseHomepageV2.js.map +1 -1
  913. package/dist/components/SynapseHomepageV2/SynapseHotdrops.js.map +1 -1
  914. package/dist/components/SynapseHomepageV2/SynapseHotdropsItem.js.map +1 -1
  915. package/dist/components/SynapseHomepageV2/SynapseInAction.js.map +1 -1
  916. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
  917. package/dist/components/SynapseHomepageV2/SynapsePartners.js.map +1 -1
  918. package/dist/components/SynapseHomepageV2/SynapsePlan.js.map +1 -1
  919. package/dist/components/SynapseHomepageV2/SynapsePlanContent.js.map +1 -1
  920. package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
  921. package/dist/components/SynapseHomepageV2/SynapsePlansPage.js.map +1 -1
  922. package/dist/components/SynapseHomepageV2/SynapseSearchChips.js.map +1 -1
  923. package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
  924. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
  925. package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
  926. package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
  927. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +78 -78
  928. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  929. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  930. package/dist/components/SynapseSearchPageResults/HasAccessChip.js.map +1 -1
  931. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
  932. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
  933. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
  934. package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
  935. package/dist/components/SynapseSearchPageResults/SynapseSearchPage.js.map +1 -1
  936. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
  937. package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.js.map +1 -1
  938. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
  939. package/dist/components/SynapseSearchPageResults/chipStyles.js.map +1 -1
  940. package/dist/components/SynapseTable/CustomControls/CustomControlButton.js.map +1 -1
  941. package/dist/components/SynapseTable/CustomControls/CustomControlPanel.js.map +1 -1
  942. package/dist/components/SynapseTable/CustomControls/CustomControls.js.map +1 -1
  943. package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
  944. package/dist/components/SynapseTable/ExpandCollapseButton.js.map +1 -1
  945. package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
  946. package/dist/components/SynapseTable/NoContentAvailable.js.map +1 -1
  947. package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
  948. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
  949. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  950. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
  951. package/dist/components/SynapseTable/SearchResultsNotFound.js.map +1 -1
  952. package/dist/components/SynapseTable/SearchV2.js.map +1 -1
  953. package/dist/components/SynapseTable/SqlEditor.js.map +1 -1
  954. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  955. package/dist/components/SynapseTable/SynapseTableCell/EntityIdList.js.map +1 -1
  956. package/dist/components/SynapseTable/SynapseTableCell/EvaluationIdRenderer.js.map +1 -1
  957. package/dist/components/SynapseTable/SynapseTableCell/JSON/ComplexJSONRenderer.js.map +1 -1
  958. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONArrayRenderer.js.map +1 -1
  959. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONObjectRenderer.js.map +1 -1
  960. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONPrimitiveRenderer.js.map +1 -1
  961. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONRendererUtils.js.map +1 -1
  962. package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONTableCellRenderer.js.map +1 -1
  963. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
  964. package/dist/components/SynapseTable/SynapseTableCell/UserIdList.js.map +1 -1
  965. package/dist/components/SynapseTable/SynapseTableConstants.js.map +1 -1
  966. package/dist/components/SynapseTable/SynapseTableContext.js.map +1 -1
  967. package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
  968. package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
  969. package/dist/components/SynapseTable/TableIsEmpty.js.map +1 -1
  970. package/dist/components/SynapseTable/TablePagination.js.map +1 -1
  971. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  972. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
  973. package/dist/components/SynapseTable/datasets/DatasetEditorCheckboxCell.js.map +1 -1
  974. package/dist/components/SynapseTable/datasets/DatasetEditorUtils.js.map +1 -1
  975. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  976. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +131 -133
  977. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  978. package/dist/components/SynapseTable/datasets/EntityFetchErrorCell.js.map +1 -1
  979. package/dist/components/SynapseTable/export/ADDiscoveryPortalInstructions.js.map +1 -1
  980. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +48 -51
  981. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js.map +1 -1
  982. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformInstructions.js.map +1 -1
  983. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js.map +1 -1
  984. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  985. package/dist/components/SynapseTable/export/ExternalPlatformDisclaimer.js.map +1 -1
  986. package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
  987. package/dist/components/SynapseTable/table-top/DownloadLoginModal.js.map +1 -1
  988. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  989. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  990. package/dist/components/SynapseTable/useTableSort.js.map +1 -1
  991. package/dist/components/SystemUseNotification/SystemUseNotification.js.map +1 -1
  992. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +12 -12
  993. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  994. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
  995. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/FieldWithRecommendedMinimum.js.map +1 -1
  996. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js +4 -4
  997. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js.map +1 -1
  998. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  999. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js.map +1 -1
  1000. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  1001. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  1002. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +32 -32
  1003. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  1004. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  1005. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
  1006. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
  1007. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
  1008. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  1009. package/dist/components/TableColumnSchemaEditor/Validators/DefaultValueValidator.js.map +1 -1
  1010. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
  1011. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.js.map +1 -1
  1012. package/dist/components/TableColumnSchemaEditor/Validators/EnumValuesValidator.js.map +1 -1
  1013. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
  1014. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
  1015. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
  1016. package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
  1017. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  1018. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  1019. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  1020. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
  1021. package/dist/components/TanStackTable/TableBody.js.map +1 -1
  1022. package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
  1023. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  1024. package/dist/components/TeamBadge.js.map +1 -1
  1025. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  1026. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  1027. package/dist/components/TemplateComponent.js.map +1 -1
  1028. package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
  1029. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  1030. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
  1031. package/dist/components/TextField/TextField.js.map +1 -1
  1032. package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
  1033. package/dist/components/TextToComponentCollapse.js.map +1 -1
  1034. package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
  1035. package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
  1036. package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
  1037. package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
  1038. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
  1039. package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
  1040. package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
  1041. package/dist/components/TotalQueryResults.js.map +1 -1
  1042. package/dist/components/UserCard/Avatar.js.map +1 -1
  1043. package/dist/components/UserCard/UserBadge.js.map +1 -1
  1044. package/dist/components/UserCard/UserCard.js.map +1 -1
  1045. package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
  1046. package/dist/components/UserCard/UserCardLarge.js.map +1 -1
  1047. package/dist/components/UserCard/UserCardMedium.js.map +1 -1
  1048. package/dist/components/UserCardList/UserCardList.js.map +1 -1
  1049. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
  1050. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
  1051. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
  1052. package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
  1053. package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
  1054. package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
  1055. package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
  1056. package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
  1057. package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
  1058. package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
  1059. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
  1060. package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
  1061. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  1062. package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
  1063. package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
  1064. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
  1065. package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
  1066. package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
  1067. package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
  1068. package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
  1069. package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
  1070. package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
  1071. package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
  1072. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  1073. package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
  1074. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  1075. package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
  1076. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  1077. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  1078. package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
  1079. package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
  1080. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  1081. package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
  1082. package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
  1083. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
  1084. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  1085. package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
  1086. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  1087. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  1088. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
  1089. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  1090. package/dist/components/doi/DoiFormSchemas.js.map +1 -1
  1091. package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
  1092. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
  1093. package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
  1094. package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
  1095. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  1096. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  1097. package/dist/components/download_list/index.js.map +1 -1
  1098. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  1099. package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
  1100. package/dist/components/entity/metadata/EntityModal.js.map +1 -1
  1101. package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
  1102. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  1103. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  1104. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
  1105. package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
  1106. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  1107. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
  1108. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
  1109. package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
  1110. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  1111. package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
  1112. package/dist/components/error/ErrorBanner.js.map +1 -1
  1113. package/dist/components/error/ErrorChip.js.map +1 -1
  1114. package/dist/components/error/ErrorPage.js +24 -24
  1115. package/dist/components/error/ErrorPage.js.map +1 -1
  1116. package/dist/components/error/RouteErrorBoundary.js.map +1 -1
  1117. package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
  1118. package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
  1119. package/dist/components/favorites/FavoriteButton.js.map +1 -1
  1120. package/dist/components/favorites/FavoritesPage.js.map +1 -1
  1121. package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
  1122. package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
  1123. package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
  1124. package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
  1125. package/dist/components/home_page/ExpandableContent.js.map +1 -1
  1126. package/dist/components/index.js +48 -47
  1127. package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
  1128. package/dist/components/layout/SWCHeader.js.map +1 -1
  1129. package/dist/components/layout/SWCPageLayout.js.map +1 -1
  1130. package/dist/components/menu/ComplexMenu.js.map +1 -1
  1131. package/dist/components/menu/DropdownMenu.js.map +1 -1
  1132. package/dist/components/row_renderers/Dataset.js.map +1 -1
  1133. package/dist/components/row_renderers/Funder.js.map +1 -1
  1134. package/dist/components/row_renderers/ObservationCard.js.map +1 -1
  1135. package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
  1136. package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
  1137. package/dist/components/styled/HoverPopover.js.map +1 -1
  1138. package/dist/components/styled/InlineBadge.js.map +1 -1
  1139. package/dist/components/styled/InputSizedButton.js.map +1 -1
  1140. package/dist/components/styled/LargeButton.js.map +1 -1
  1141. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  1142. package/dist/components/styled/LightTooltip.js.map +1 -1
  1143. package/dist/components/styled/StyledFormControl.js.map +1 -1
  1144. package/dist/components/styled/StyledPopover.js.map +1 -1
  1145. package/dist/components/styled/StyledTableContainer.js.map +1 -1
  1146. package/dist/components/styled/WideButton.js.map +1 -1
  1147. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts +18 -0
  1148. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts.map +1 -0
  1149. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +113 -0
  1150. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -0
  1151. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  1152. package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts +5 -5
  1153. package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts.map +1 -1
  1154. package/dist/components/table/CsvPreview/CsvPreviewDialog.js +27 -76
  1155. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  1156. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts +19 -0
  1157. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts.map +1 -0
  1158. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +41 -0
  1159. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -0
  1160. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts +12 -0
  1161. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts.map +1 -0
  1162. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js +25 -0
  1163. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -0
  1164. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts +18 -0
  1165. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts.map +1 -0
  1166. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js +55 -0
  1167. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -0
  1168. package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts +19 -0
  1169. package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts.map +1 -0
  1170. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js +35 -0
  1171. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -0
  1172. package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts +22 -0
  1173. package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts.map +1 -0
  1174. package/dist/components/table/CsvPreview/useCsvUploadPreview.js +32 -0
  1175. package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -0
  1176. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts +14 -0
  1177. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts.map +1 -0
  1178. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js +23 -0
  1179. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -0
  1180. package/dist/components/table/CsvTableDescriptorForm/CsvTableDescriptorForm.js.map +1 -1
  1181. package/dist/components/trash/TrashCanList.js.map +1 -1
  1182. package/dist/components/utils/Blocker.js.map +1 -1
  1183. package/dist/components/utils/ConditionalWrapper.js.map +1 -1
  1184. package/dist/components/utils/VisibilityObserver.js.map +1 -1
  1185. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  1186. package/dist/components/widgets/EntityColumnImage.js.map +1 -1
  1187. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  1188. package/dist/components/widgets/ImageFileHandle.js.map +1 -1
  1189. package/dist/components/widgets/LoginAwareButton.js.map +1 -1
  1190. package/dist/components/widgets/Range.js.map +1 -1
  1191. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  1192. package/dist/components/widgets/SynapseImage.js.map +1 -1
  1193. package/dist/components/widgets/SynapseVideo.js.map +1 -1
  1194. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  1195. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  1196. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  1197. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  1198. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  1199. package/dist/components/widgets/facet-nav/PlotsContainerSkeleton.js.map +1 -1
  1200. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
  1201. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
  1202. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  1203. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
  1204. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  1205. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
  1206. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  1207. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterSkeleton.js.map +1 -1
  1208. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  1209. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  1210. package/dist/components/widgets/query-filter/FacetChip.js.map +1 -1
  1211. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  1212. package/dist/components/widgets/query-filter/FacetFilterHeader.js.map +1 -1
  1213. package/dist/components/widgets/query-filter/FacetFilterSkeleton.js.map +1 -1
  1214. package/dist/components/widgets/query-filter/FacetFilterUtils.js.map +1 -1
  1215. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  1216. package/dist/components/widgets/query-filter/RangeFacetFilter.js +3 -3
  1217. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  1218. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +41 -41
  1219. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  1220. package/dist/features/curator/GridPage/GridPage.js.map +1 -1
  1221. package/dist/features/curator/GridPage/components/GridPageRouter.js.map +1 -1
  1222. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  1223. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
  1224. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  1225. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  1226. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  1227. package/dist/features/curator/dashboard/components/UserOrTeamChip.js.map +1 -1
  1228. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +5 -0
  1229. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  1230. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +227 -181
  1231. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  1232. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  1233. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +3 -0
  1234. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  1235. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
  1236. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -34
  1237. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  1238. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  1239. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
  1240. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  1241. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  1242. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  1243. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  1244. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  1245. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  1246. package/dist/features/entity/metadata-task/utils/constants.d.ts +11 -3
  1247. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  1248. package/dist/features/entity/metadata-task/utils/constants.js +2 -2
  1249. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  1250. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  1251. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
  1252. package/dist/features/entity/metadata-task/utils/getLatestGridSessionForSource.js.map +1 -1
  1253. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -1
  1254. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  1255. package/dist/index.js +54 -53
  1256. package/dist/index.js.map +1 -1
  1257. package/dist/mocks/MockAccessApprovals.js.map +1 -1
  1258. package/dist/mocks/MockSynapseContext.js.map +1 -1
  1259. package/dist/mocks/accessRequirement/mockAccessRequirementAcls.js.map +1 -1
  1260. package/dist/mocks/accessRequirement/mockAccessRequirements.js.map +1 -1
  1261. package/dist/mocks/applicationSessionContext/MockApplicationSessionContext.js.map +1 -1
  1262. package/dist/mocks/challenge/mockChallenge.js.map +1 -1
  1263. package/dist/mocks/chat/mockChat.js.map +1 -1
  1264. package/dist/mocks/curation/mockCurationTask.js.map +1 -1
  1265. package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
  1266. package/dist/mocks/dataaccess/MockResearchProject.js.map +1 -1
  1267. package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
  1268. package/dist/mocks/dataaccess/mockAccessRequest.js.map +1 -1
  1269. package/dist/mocks/discussion/mock_discussion.js.map +1 -1
  1270. package/dist/mocks/doi/MockDoi.js.map +1 -1
  1271. package/dist/mocks/entity/index.js.map +1 -1
  1272. package/dist/mocks/entity/mockDataset.js.map +1 -1
  1273. package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
  1274. package/dist/mocks/entity/mockEntity.js.map +1 -1
  1275. package/dist/mocks/entity/mockEvaluationQueue.js.map +1 -1
  1276. package/dist/mocks/entity/mockFileEntity.js.map +1 -1
  1277. package/dist/mocks/entity/mockFileEntityACLVariants.js.map +1 -1
  1278. package/dist/mocks/entity/mockFileView.js.map +1 -1
  1279. package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
  1280. package/dist/mocks/entity/mockProject.js.map +1 -1
  1281. package/dist/mocks/entity/mockProjectView.js.map +1 -1
  1282. package/dist/mocks/entity/mockReleaseCardsTable.js.map +1 -1
  1283. package/dist/mocks/entity/mockRootEntity.js.map +1 -1
  1284. package/dist/mocks/entity/mockTableEntity.js.map +1 -1
  1285. package/dist/mocks/faker/fakerUtils.js.map +1 -1
  1286. package/dist/mocks/faker/generateDiscussion.js.map +1 -1
  1287. package/dist/mocks/faker/generateEvaluation.js.map +1 -1
  1288. package/dist/mocks/faker/generateFakeEntity.js.map +1 -1
  1289. package/dist/mocks/faker/generateSubscription.js.map +1 -1
  1290. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  1291. package/dist/mocks/mockCertificationQuiz.js.map +1 -1
  1292. package/dist/mocks/mockDataCatalogQuery.js.map +1 -1
  1293. package/dist/mocks/mockFileViewQuery.js.map +1 -1
  1294. package/dist/mocks/mockOAuthClientAcls.js.map +1 -1
  1295. package/dist/mocks/mockQueryResponseData.js.map +1 -1
  1296. package/dist/mocks/mockQueryResponseDataWithManyEnumFacets.js.map +1 -1
  1297. package/dist/mocks/mockSchema.js.map +1 -1
  1298. package/dist/mocks/mockSearchQueryData.js.map +1 -1
  1299. package/dist/mocks/mockShortIo.js.map +1 -1
  1300. package/dist/mocks/mockSourceAppConfigQuery.js.map +1 -1
  1301. package/dist/mocks/mockSubscription.js.map +1 -1
  1302. package/dist/mocks/mockWiki.js.map +1 -1
  1303. package/dist/mocks/mockWikiPageKey.js.map +1 -1
  1304. package/dist/mocks/mock_drug_tool_data.js.map +1 -1
  1305. package/dist/mocks/mock_file_handle.js.map +1 -1
  1306. package/dist/mocks/mock_file_statistics.js.map +1 -1
  1307. package/dist/mocks/mock_has_access_data.js.map +1 -1
  1308. package/dist/mocks/mock_upload_destination.js.map +1 -1
  1309. package/dist/mocks/msw/handlers/accessRequirementAclHandlers.js.map +1 -1
  1310. package/dist/mocks/msw/handlers/accessRequirementHandlers.js.map +1 -1
  1311. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  1312. package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
  1313. package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
  1314. package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
  1315. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  1316. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  1317. package/dist/mocks/msw/handlers/dataciteHandlers.js.map +1 -1
  1318. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  1319. package/dist/mocks/msw/handlers/doiHandlers.js.map +1 -1
  1320. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  1321. package/dist/mocks/msw/handlers/evaluationHandlers.js.map +1 -1
  1322. package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
  1323. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  1324. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  1325. package/dist/mocks/msw/handlers/messageHandlers.js.map +1 -1
  1326. package/dist/mocks/msw/handlers/oauthClientAclHandlers.js.map +1 -1
  1327. package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
  1328. package/dist/mocks/msw/handlers/projectStorageHandlers.js.map +1 -1
  1329. package/dist/mocks/msw/handlers/realmHandlers.js.map +1 -1
  1330. package/dist/mocks/msw/handlers/researchProjectHandlers.js.map +1 -1
  1331. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
  1332. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  1333. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  1334. package/dist/mocks/msw/handlers/shortIoHandlers.js.map +1 -1
  1335. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  1336. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  1337. package/dist/mocks/msw/handlers/tableQueryService.js.map +1 -1
  1338. package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
  1339. package/dist/mocks/msw/handlers/termsOfServiceHandlers.js.map +1 -1
  1340. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  1341. package/dist/mocks/msw/handlers/webhookHandlers.js.map +1 -1
  1342. package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
  1343. package/dist/mocks/msw/handlers.js.map +1 -1
  1344. package/dist/mocks/msw/server.d.ts +1 -1
  1345. package/dist/mocks/msw/server.d.ts.map +1 -1
  1346. package/dist/mocks/msw/server.js.map +1 -1
  1347. package/dist/mocks/msw/util/BasicMockedCrudService.js.map +1 -1
  1348. package/dist/mocks/oauth/MockClient.js.map +1 -1
  1349. package/dist/mocks/personalAccessToken/mockPersonalAccessToken.js.map +1 -1
  1350. package/dist/mocks/projectStorage/mockProjectStorageLimits.js.map +1 -1
  1351. package/dist/mocks/provenance/mockActivity.js.map +1 -1
  1352. package/dist/mocks/query/defaultFileViewColumnModels.js.map +1 -1
  1353. package/dist/mocks/query/mockFeaturedDataTabsQueryData.js.map +1 -1
  1354. package/dist/mocks/query/mockHomepageQueryResultData.js.map +1 -1
  1355. package/dist/mocks/query/mockProjectViewQueryResults.js.map +1 -1
  1356. package/dist/mocks/query/mockRejectionReasonsTableQueryResultBundle.js.map +1 -1
  1357. package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
  1358. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
  1359. package/dist/mocks/query/mock_query_data.js.map +1 -1
  1360. package/dist/mocks/query/syn16787123.js.map +1 -1
  1361. package/dist/mocks/query/syn17328596.js.map +1 -1
  1362. package/dist/mocks/query/syn51735464.js.map +1 -1
  1363. package/dist/mocks/query/syn51735464GroupBySpecies.js.map +1 -1
  1364. package/dist/mocks/realm/mockRealmPrincipal.js.map +1 -1
  1365. package/dist/mocks/team/mockTeam.js.map +1 -1
  1366. package/dist/mocks/termsOfService/mockTermsOfService.js.map +1 -1
  1367. package/dist/mocks/user/mock_user_profile.js.map +1 -1
  1368. package/dist/mocks/usergroup/mockUserGroup.js.map +1 -1
  1369. package/dist/ror-client/index.js.map +1 -1
  1370. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  1371. package/dist/stories/ToastDemo.js.map +1 -1
  1372. package/dist/stories/stubs/Alert/MuiAlert.js.map +1 -1
  1373. package/dist/stories/stubs/Button/MuiButton.js.map +1 -1
  1374. package/dist/stories/stubs/Dialog/MuiDialog.js.map +1 -1
  1375. package/dist/stories/stubs/TextField/MuiTextField.js.map +1 -1
  1376. package/dist/stories/stubs/Tooltip/MuiTooltip.js.map +1 -1
  1377. package/dist/synapse-client/HttpClient.js.map +1 -1
  1378. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  1379. package/dist/synapse-client/SynapseClient.js +61 -69
  1380. package/dist/synapse-client/SynapseClient.js.map +1 -1
  1381. package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
  1382. package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
  1383. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  1384. package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
  1385. package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
  1386. package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
  1387. package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
  1388. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  1389. package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
  1390. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
  1391. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  1392. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  1393. package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
  1394. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
  1395. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  1396. package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
  1397. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  1398. package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
  1399. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  1400. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  1401. package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
  1402. package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
  1403. package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
  1404. package/dist/synapse-queries/doi/useDOI.js.map +1 -1
  1405. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  1406. package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
  1407. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  1408. package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
  1409. package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
  1410. package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
  1411. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  1412. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  1413. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  1414. package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
  1415. package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
  1416. package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
  1417. package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
  1418. package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
  1419. package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
  1420. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  1421. package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
  1422. package/dist/synapse-queries/entity/useSchema.js.map +1 -1
  1423. package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
  1424. package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
  1425. package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
  1426. package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
  1427. package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
  1428. package/dist/synapse-queries/file/useFiles.js.map +1 -1
  1429. package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
  1430. package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
  1431. package/dist/synapse-queries/forum/useForum.js.map +1 -1
  1432. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  1433. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  1434. package/dist/synapse-queries/github/useGithub.js.map +1 -1
  1435. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  1436. package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
  1437. package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
  1438. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  1439. package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
  1440. package/dist/synapse-queries/message/useMessage.js.map +1 -1
  1441. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  1442. package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
  1443. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  1444. package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
  1445. package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
  1446. package/dist/synapse-queries/ror/index.js.map +1 -1
  1447. package/dist/synapse-queries/search/useSearch.js.map +1 -1
  1448. package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
  1449. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  1450. package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
  1451. package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
  1452. package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
  1453. package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
  1454. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  1455. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  1456. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  1457. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  1458. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  1459. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  1460. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  1461. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  1462. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  1463. package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
  1464. package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
  1465. package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
  1466. package/dist/synapse-queries/user/useProjects.js.map +1 -1
  1467. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  1468. package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
  1469. package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
  1470. package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
  1471. package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
  1472. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  1473. package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
  1474. package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
  1475. package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
  1476. package/dist/testutils/LocationTracker.js.map +1 -1
  1477. package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
  1478. package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
  1479. package/dist/testutils/TestingLibraryUtils.js +18 -16
  1480. package/dist/testutils/TestingLibraryUtils.js.map +1 -1
  1481. package/dist/testutils/muiDatePickerMock.js.map +1 -1
  1482. package/dist/testutils/vitest.setup.js.map +1 -1
  1483. package/dist/theme/DefaultTheme.js.map +1 -1
  1484. package/dist/theme/ThemeProvider.js.map +1 -1
  1485. package/dist/theme/mergeTheme.js.map +1 -1
  1486. package/dist/theme/palette/Palettes.js.map +1 -1
  1487. package/dist/theme/spreadSx.js.map +1 -1
  1488. package/dist/theme/typography/Link.js.map +1 -1
  1489. package/dist/theme/typography/Typography.js.map +1 -1
  1490. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1491. package/dist/utils/APIConstants.js.map +1 -1
  1492. package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
  1493. package/dist/utils/AppUtils/AppUtils.js +11 -11
  1494. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  1495. package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
  1496. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  1497. package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
  1498. package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
  1499. package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
  1500. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  1501. package/dist/utils/ContentTypeUtils.js.map +1 -1
  1502. package/dist/utils/OrientationBannerConstants.js.map +1 -1
  1503. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  1504. package/dist/utils/SynapseConstants.js.map +1 -1
  1505. package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
  1506. package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
  1507. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  1508. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  1509. package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
  1510. package/dist/utils/context/AridhiaContext.js.map +1 -1
  1511. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  1512. package/dist/utils/context/FullContextProvider.js.map +1 -1
  1513. package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
  1514. package/dist/utils/context/SynapseContext.js.map +1 -1
  1515. package/dist/utils/featureflag/FeatureFlags.d.ts +2 -1
  1516. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  1517. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  1518. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  1519. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  1520. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  1521. package/dist/utils/functions/DateFormatter.js.map +1 -1
  1522. package/dist/utils/functions/DateTimeUtils.js.map +1 -1
  1523. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  1524. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  1525. package/dist/utils/functions/GridApiUtils.js.map +1 -1
  1526. package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
  1527. package/dist/utils/functions/IsExternalLink.js.map +1 -1
  1528. package/dist/utils/functions/ObjectUtils.js.map +1 -1
  1529. package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
  1530. package/dist/utils/functions/RealmUtils.js.map +1 -1
  1531. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  1532. package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
  1533. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  1534. package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
  1535. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  1536. package/dist/utils/functions/StringUtils.js.map +1 -1
  1537. package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
  1538. package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
  1539. package/dist/utils/functions/colorPalette.js.map +1 -1
  1540. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  1541. package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
  1542. package/dist/utils/functions/generateCsrfToken.js.map +1 -1
  1543. package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
  1544. package/dist/utils/functions/getEndpoint.js +3 -3
  1545. package/dist/utils/functions/getEndpoint.js.map +1 -1
  1546. package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
  1547. package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
  1548. package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
  1549. package/dist/utils/functions/getUserData.js.map +1 -1
  1550. package/dist/utils/functions/queryUtils.js.map +1 -1
  1551. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  1552. package/dist/utils/functions/unCamelCase.js.map +1 -1
  1553. package/dist/utils/hooks/useConfirmItems.js.map +1 -1
  1554. package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
  1555. package/dist/utils/hooks/useCookiePreferences.js +24 -23
  1556. package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
  1557. package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
  1558. package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
  1559. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  1560. package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
  1561. package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
  1562. package/dist/utils/hooks/useGetGoalData.js +2 -4
  1563. package/dist/utils/hooks/useGetGoalData.js.map +1 -1
  1564. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  1565. package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
  1566. package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
  1567. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  1568. package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
  1569. package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
  1570. package/dist/utils/hooks/useIsBot.js.map +1 -1
  1571. package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
  1572. package/dist/utils/hooks/useListState.js.map +1 -1
  1573. package/dist/utils/hooks/useLogin.js.map +1 -1
  1574. package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
  1575. package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
  1576. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  1577. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  1578. package/dist/utils/hooks/useOverlay.js.map +1 -1
  1579. package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
  1580. package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
  1581. package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
  1582. package/dist/utils/hooks/useSet.js.map +1 -1
  1583. package/dist/utils/hooks/useShowDesktop.js.map +1 -1
  1584. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  1585. package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
  1586. package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
  1587. package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
  1588. package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
  1589. package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
  1590. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  1591. package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
  1592. package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
  1593. package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
  1594. package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
  1595. package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
  1596. package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
  1597. package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
  1598. package/dist/utils/html/TargetEnum.js.map +1 -1
  1599. package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
  1600. package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
  1601. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  1602. package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
  1603. package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
  1604. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  1605. package/dist/utils/jsonschema/getType.js.map +1 -1
  1606. package/dist/utils/searchDefaults.js.map +1 -1
  1607. package/dist/utils/slots/SlotUtils.js.map +1 -1
  1608. package/dist/utils/types/IsType.js.map +1 -1
  1609. package/package.json +67 -66
@@ -1 +1 @@
1
- {"version":3,"file":"RowSelectionControls.js","names":[],"sources":["../../../../src/components/SynapseTable/RowSelection/RowSelectionControls.tsx"],"sourcesContent":["import AddToDownloadListConfirmationAlert from '@/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert'\nimport { useGetAddToDownloadListRequestForCurrentQuery } from '@/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery'\nimport { useGetEntity } from '@/synapse-queries'\nimport { canTableQueryBeAddedToDownloadList } from '@/utils/functions/queryUtils'\nimport { GetAppTwoTone } from '@mui/icons-material'\nimport { Box, Button } from '@mui/material'\nimport { Table } from '@sage-bionetworks/synapse-types'\nimport { useAtom } from 'jotai'\nimport { useState } from 'react'\nimport { toast } from 'react-hot-toast'\nimport { useSynapseContext } from '@/utils'\nimport { useQueryContext } from '../../QueryContext'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\nimport { selectedRowsAtom } from '../../QueryWrapper/TableRowSelectionState'\nimport { useGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport {\n getFileColumnModelId,\n SEND_TO_ANALYSIS_PLATFORM_SIGN_IN_MESSAGE,\n} from '../SynapseTableUtils'\nimport { CustomControlButton } from '../CustomControls/CustomControlButton'\nimport { CustomControl } from '../TopLevelControls/TopLevelControls'\nimport { RowSelectionUI } from './RowSelectionUI'\nimport { SignInRequiredModal } from '@/components/SignInRequiredModal/SignInRequiredModal'\n\nconst SEND_TO_ANALYSIS_PLATFORM_BUTTON_ID =\n 'SendToAnalysisPlatformRowSelectionControlButton'\n\nexport type RowSelectionControlsProps = {\n customControls?: CustomControl[]\n remount?: () => void\n}\n\n/**\n * This component is responsible for rendering the RowSelectionUI and the custom controls. Must be wrapped in a\n * QueryContext and a QueryVisualizationContext.\n * @param props\n * @constructor\n */\nexport function RowSelectionControls(props: RowSelectionControlsProps) {\n const { customControls = [], remount } = props\n const { isAuthenticated } = useSynapseContext()\n const [showLoginModal, setShowLoginModal] = useState(false)\n const { entityId, versionNumber, getCurrentQueryRequest } = useQueryContext()\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n const { data: queryMetadata } = useGetQueryMetadata()\n const [selectedRows, setSelectedRows] = useAtom(selectedRowsAtom)\n\n const addToDownloadListRequest =\n useGetAddToDownloadListRequestForCurrentQuery()\n\n const {\n setIsShowingExportToAnalysisPlatformModal,\n enabledExternalAnalysisPlatforms,\n } = useQueryVisualizationContext()\n\n const showExportToAnalysisPlatformButton =\n enabledExternalAnalysisPlatforms.length > 0\n\n const refresh = () => {\n // clear selection\n setSelectedRows([])\n if (remount) {\n remount()\n }\n }\n const fileColumnId = getFileColumnModelId(queryMetadata?.columnModels)\n const showAddToDownloadCart = canTableQueryBeAddedToDownloadList(\n entity,\n fileColumnId,\n )\n\n return (\n <RowSelectionUI\n show={selectedRows.length > 0}\n selectedRowCount={selectedRows.length}\n onClearSelection={() => setSelectedRows([])}\n customControls={\n <>\n {customControls.map(customControl => {\n return (\n <CustomControlButton\n key={customControl.buttonText}\n variant=\"contained\"\n callbackData={{\n tableId: entityId!,\n queryMetadata: queryMetadata,\n selectedRows,\n refresh,\n request: getCurrentQueryRequest(),\n }}\n control={customControl}\n startIcon={customControl.icon}\n />\n )\n })}\n {/* TODO: Generic button */}\n {showExportToAnalysisPlatformButton && (\n <Button\n variant=\"outlined\"\n onClick={() => {\n if (isAuthenticated) {\n setIsShowingExportToAnalysisPlatformModal(true)\n } else {\n setShowLoginModal(true)\n }\n }}\n id={SEND_TO_ANALYSIS_PLATFORM_BUTTON_ID}\n >\n Send to Analysis Platform\n </Button>\n )}\n {showLoginModal && (\n <SignInRequiredModal\n onHide={() => setShowLoginModal(false)}\n content={SEND_TO_ANALYSIS_PLATFORM_SIGN_IN_MESSAGE}\n />\n )}\n {showAddToDownloadCart && (\n <Button\n variant=\"contained\"\n onClick={() => {\n const toastId = toast.custom(\n <Box\n sx={{\n width: '100%',\n }}\n >\n <AddToDownloadListConfirmationAlert\n addToDownloadListRequest={addToDownloadListRequest}\n onClose={() => {\n toast.dismiss(toastId)\n }}\n />\n </Box>,\n {\n duration: Infinity,\n },\n )\n }}\n startIcon={<GetAppTwoTone />}\n >\n Add to Download List\n </Button>\n )}\n </>\n }\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM,IACJ;AAaF,SAAgB,EAAqB,GAAkC;CACrE,IAAM,EAAE,oBAAiB,EAAE,EAAE,eAAY,GACnC,EAAE,uBAAoB,GAAmB,EACzC,CAAC,GAAgB,KAAqB,EAAS,GAAM,EACrD,EAAE,aAAU,kBAAe,8BAA2B,GAAiB,EACvE,EAAE,MAAM,MAAW,EAAoB,GAAU,EAAc,EAC/D,EAAE,MAAM,MAAkB,GAAqB,EAC/C,CAAC,GAAc,KAAmB,EAAQ,EAAiB,EAE3D,IACJ,GAA+C,EAE3C,EACJ,8CACA,wCACE,GAA8B,EAE5B,IACJ,EAAiC,SAAS,GAEtC,UAAgB;AAGpB,EADA,EAAgB,EAAE,CAAC,EACf,KACF,GAAS;IAIP,IAAwB,EAC5B,GAFmB,EAAqB,GAAe,aAGvD,CACD;AAED,QACE,kBAAC,GAAD;EACE,MAAM,EAAa,SAAS;EAC5B,kBAAkB,EAAa;EAC/B,wBAAwB,EAAgB,EAAE,CAAC;EAC3C,gBACE,kBAAA,GAAA,EAAA,UAAA;GACG,EAAe,KAAI,MAEhB,kBAAC,GAAD;IAEE,SAAQ;IACR,cAAc;KACZ,SAAS;KACM;KACf;KACA;KACA,SAAS,GAAwB;KAClC;IACD,SAAS;IACT,WAAW,EAAc;IACzB,EAXK,EAAc,WAWnB,CAEJ;GAED,KACC,kBAAC,GAAD;IACE,SAAQ;IACR,eAAe;AACb,KAAI,IACF,EAA0C,GAAK,GAE/C,EAAkB,GAAK;;IAG3B,IAAI;cACL;IAEQ,CAAA;GAEV,KACC,kBAAC,GAAD;IACE,cAAc,EAAkB,GAAM;IACtC,SAAA;IACA,CAAA;GAEH,KACC,kBAAC,GAAD;IACE,SAAQ;IACR,eAAe;KACb,IAAM,IAAU,EAAM,OACpB,kBAAC,GAAD;MACE,IAAI,EACF,OAAO,QACR;gBAED,kBAAC,GAAD;OAC4B;OAC1B,eAAe;AACb,UAAM,QAAQ,EAAQ;;OAExB,CAAA;MACE,CAAA,EACN,EACE,UAAU,UACX,CACF;;IAEH,WAAW,kBAAC,GAAD,EAAiB,CAAA;cAC7B;IAEQ,CAAA;GAEV,EAAA,CAAA;EAEL,CAAA"}
1
+ {"version":3,"file":"RowSelectionControls.js","names":[],"sources":["../../../../src/components/SynapseTable/RowSelection/RowSelectionControls.tsx"],"sourcesContent":["import AddToDownloadListConfirmationAlert from '@/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert'\nimport { useGetAddToDownloadListRequestForCurrentQuery } from '@/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery'\nimport { useGetEntity } from '@/synapse-queries'\nimport { canTableQueryBeAddedToDownloadList } from '@/utils/functions/queryUtils'\nimport { GetAppTwoTone } from '@mui/icons-material'\nimport { Box, Button } from '@mui/material'\nimport { Table } from '@sage-bionetworks/synapse-types'\nimport { useAtom } from 'jotai'\nimport { useState } from 'react'\nimport { toast } from 'react-hot-toast'\nimport { useSynapseContext } from '@/utils'\nimport { useQueryContext } from '../../QueryContext'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\nimport { selectedRowsAtom } from '../../QueryWrapper/TableRowSelectionState'\nimport { useGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport {\n getFileColumnModelId,\n SEND_TO_ANALYSIS_PLATFORM_SIGN_IN_MESSAGE,\n} from '../SynapseTableUtils'\nimport { CustomControlButton } from '../CustomControls/CustomControlButton'\nimport { CustomControl } from '../TopLevelControls/TopLevelControls'\nimport { RowSelectionUI } from './RowSelectionUI'\nimport { SignInRequiredModal } from '@/components/SignInRequiredModal/SignInRequiredModal'\n\nconst SEND_TO_ANALYSIS_PLATFORM_BUTTON_ID =\n 'SendToAnalysisPlatformRowSelectionControlButton'\n\nexport type RowSelectionControlsProps = {\n customControls?: CustomControl[]\n remount?: () => void\n}\n\n/**\n * This component is responsible for rendering the RowSelectionUI and the custom controls. Must be wrapped in a\n * QueryContext and a QueryVisualizationContext.\n * @param props\n * @constructor\n */\nexport function RowSelectionControls(props: RowSelectionControlsProps) {\n const { customControls = [], remount } = props\n const { isAuthenticated } = useSynapseContext()\n const [showLoginModal, setShowLoginModal] = useState(false)\n const { entityId, versionNumber, getCurrentQueryRequest } = useQueryContext()\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n const { data: queryMetadata } = useGetQueryMetadata()\n const [selectedRows, setSelectedRows] = useAtom(selectedRowsAtom)\n\n const addToDownloadListRequest =\n useGetAddToDownloadListRequestForCurrentQuery()\n\n const {\n setIsShowingExportToAnalysisPlatformModal,\n enabledExternalAnalysisPlatforms,\n } = useQueryVisualizationContext()\n\n const showExportToAnalysisPlatformButton =\n enabledExternalAnalysisPlatforms.length > 0\n\n const refresh = () => {\n // clear selection\n setSelectedRows([])\n if (remount) {\n remount()\n }\n }\n const fileColumnId = getFileColumnModelId(queryMetadata?.columnModels)\n const showAddToDownloadCart = canTableQueryBeAddedToDownloadList(\n entity,\n fileColumnId,\n )\n\n return (\n <RowSelectionUI\n show={selectedRows.length > 0}\n selectedRowCount={selectedRows.length}\n onClearSelection={() => setSelectedRows([])}\n customControls={\n <>\n {customControls.map(customControl => {\n return (\n <CustomControlButton\n key={customControl.buttonText}\n variant=\"contained\"\n callbackData={{\n tableId: entityId!,\n queryMetadata: queryMetadata,\n selectedRows,\n refresh,\n request: getCurrentQueryRequest(),\n }}\n control={customControl}\n startIcon={customControl.icon}\n />\n )\n })}\n {/* TODO: Generic button */}\n {showExportToAnalysisPlatformButton && (\n <Button\n variant=\"outlined\"\n onClick={() => {\n if (isAuthenticated) {\n setIsShowingExportToAnalysisPlatformModal(true)\n } else {\n setShowLoginModal(true)\n }\n }}\n id={SEND_TO_ANALYSIS_PLATFORM_BUTTON_ID}\n >\n Send to Analysis Platform\n </Button>\n )}\n {showLoginModal && (\n <SignInRequiredModal\n onHide={() => setShowLoginModal(false)}\n content={SEND_TO_ANALYSIS_PLATFORM_SIGN_IN_MESSAGE}\n />\n )}\n {showAddToDownloadCart && (\n <Button\n variant=\"contained\"\n onClick={() => {\n const toastId = toast.custom(\n <Box\n sx={{\n width: '100%',\n }}\n >\n <AddToDownloadListConfirmationAlert\n addToDownloadListRequest={addToDownloadListRequest}\n onClose={() => {\n toast.dismiss(toastId)\n }}\n />\n </Box>,\n {\n duration: Infinity,\n },\n )\n }}\n startIcon={<GetAppTwoTone />}\n >\n Add to Download List\n </Button>\n )}\n </>\n }\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM,IACJ;AAaF,SAAgB,EAAqB,GAAkC;CACrE,IAAM,EAAE,oBAAiB,CAAC,GAAG,eAAY,GACnC,EAAE,uBAAoB,EAAkB,GACxC,CAAC,GAAgB,KAAqB,EAAS,EAAK,GACpD,EAAE,aAAU,kBAAe,8BAA2B,EAAgB,GACtE,EAAE,MAAM,MAAW,EAAoB,GAAU,CAAa,GAC9D,EAAE,MAAM,MAAkB,EAAoB,GAC9C,CAAC,GAAc,KAAmB,EAAQ,CAAgB,GAE1D,IACJ,EAA8C,GAE1C,EACJ,8CACA,wCACE,EAA6B,GAE3B,IACJ,EAAiC,SAAS,GAEtC,UAAgB;EAGpB,AADA,EAAgB,CAAC,CAAC,GACd,KACF,EAAQ;CAEZ,GAEM,IAAwB,EAC5B,GAFmB,EAAqB,GAAe,YAGvD,CACF;CAEA,OACE,kBAAC,GAAD;EACE,MAAM,EAAa,SAAS;EAC5B,kBAAkB,EAAa;EAC/B,wBAAwB,EAAgB,CAAC,CAAC;EAC1C,gBACE,kBAAA,GAAA,EAAA,UAAA;GACG,EAAe,KAAI,MAEhB,kBAAC,GAAD;IAEE,SAAQ;IACR,cAAc;KACZ,SAAS;KACM;KACf;KACA;KACA,SAAS,EAAuB;IAClC;IACA,SAAS;IACT,WAAW,EAAc;GAC1B,GAXM,EAAc,UAWpB,CAEJ;GAEA,KACC,kBAAC,GAAD;IACE,SAAQ;IACR,eAAe;KACb,AAAI,IACF,EAA0C,EAAI,IAE9C,EAAkB,EAAI;IAE1B;IACA,IAAI;cACL;GAEO,CAAA;GAET,KACC,kBAAC,GAAD;IACE,cAAc,EAAkB,EAAK;IACrC,SAAA;GACD,CAAA;GAEF,KACC,kBAAC,GAAD;IACE,SAAQ;IACR,eAAe;KACb,IAAM,IAAU,EAAM,OACpB,kBAAC,GAAD;MACE,IAAI,EACF,OAAO,OACT;gBAEA,kBAAC,GAAD;OAC4B;OAC1B,eAAe;QACb,EAAM,QAAQ,CAAO;OACvB;MACD,CAAA;KACE,CAAA,GACL,EACE,UAAU,SACZ,CACF;IACF;IACA,WAAW,kBAAC,GAAD,CAAgB,CAAA;cAC5B;GAEO,CAAA;EAEV,EAAA,CAAA;CAEL,CAAA;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"RowSelectionUI.js","names":[],"sources":["../../../../src/components/SynapseTable/RowSelection/RowSelectionUI.tsx"],"sourcesContent":["import InlineBadge from '@/components/styled/InlineBadge'\nimport { Box, Button, Paper, Typography } from '@mui/material'\nimport { useAtomValue } from 'jotai'\nimport pluralize from 'pluralize'\nimport { ReactNode } from 'react'\nimport { isRowSelectionUIFloatingAtom } from '../../QueryWrapper/TableRowSelectionState'\n\nexport type RowSelectionUIProps = {\n show?: boolean\n selectedRowCount: number\n onClearSelection: () => void\n customControls?: ReactNode\n}\n\n/**\n * UI-only component for displaying the number of table rows selected, along with actions that can be performed on those rows\n */\nexport function RowSelectionUI(props: RowSelectionUIProps) {\n const {\n show = true,\n selectedRowCount,\n onClearSelection,\n customControls = <></>,\n } = props\n const isRowSelectionUIFloating = useAtomValue(isRowSelectionUIFloatingAtom)\n if (!show) {\n return <></>\n }\n\n return (\n <Paper\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n position: isRowSelectionUIFloating ? 'fixed' : 'absolute',\n bottom: isRowSelectionUIFloating ? 0 : -70,\n left: 0,\n width: '100%',\n height: '70px',\n zIndex: 1,\n px: 2.5,\n }}\n >\n <Button\n variant=\"text\"\n color=\"error\"\n onClick={() => {\n onClearSelection()\n }}\n >\n Clear Selection\n </Button>\n <Box\n sx={{\n display: 'flex',\n gap: 2.5,\n alignItems: 'center',\n }}\n >\n <Box\n sx={{\n display: 'flex',\n gap: 1.5,\n }}\n >\n <InlineBadge\n badgeContent={selectedRowCount.toLocaleString()}\n color=\"primary\"\n max={Infinity}\n />\n <Typography variant=\"body1\">\n {pluralize('Row', selectedRowCount)} Selected\n </Typography>\n </Box>\n {customControls}\n </Box>\n </Paper>\n )\n}\n"],"mappings":";;;;;;;AAiBA,SAAgB,EAAe,GAA4B;CACzD,IAAM,EACJ,UAAO,IACP,qBACA,qBACA,oBAAiB,kBAAA,GAAA,EAAK,CAAA,KACpB,GACE,IAA2B,EAAa,EAA6B;AAK3E,QAJK,IAKH,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,UAAU,IAA2B,UAAU;GAC/C,QAAQ,IAA2B,IAAI;GACvC,MAAM;GACN,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,IAAI;GACL;YAZH,CAcE,kBAAC,GAAD;GACE,SAAQ;GACR,OAAM;GACN,eAAe;AACb,OAAkB;;aAErB;GAEQ,CAAA,EACT,kBAAC,GAAD;GACE,IAAI;IACF,SAAS;IACT,KAAK;IACL,YAAY;IACb;aALH,CAOE,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,KAAK;KACN;cAJH,CAME,kBAAC,GAAD;KACE,cAAc,EAAiB,gBAAgB;KAC/C,OAAM;KACN,KAAK;KACL,CAAA,EACF,kBAAC,GAAD;KAAY,SAAQ;eAApB,CACG,EAAU,OAAO,EAAiB,EAAC,YACzB;OACT;OACL,EACG;KACA;MAnDD,kBAAA,GAAA,EAAK,CAAA"}
1
+ {"version":3,"file":"RowSelectionUI.js","names":[],"sources":["../../../../src/components/SynapseTable/RowSelection/RowSelectionUI.tsx"],"sourcesContent":["import InlineBadge from '@/components/styled/InlineBadge'\nimport { Box, Button, Paper, Typography } from '@mui/material'\nimport { useAtomValue } from 'jotai'\nimport pluralize from 'pluralize'\nimport { ReactNode } from 'react'\nimport { isRowSelectionUIFloatingAtom } from '../../QueryWrapper/TableRowSelectionState'\n\nexport type RowSelectionUIProps = {\n show?: boolean\n selectedRowCount: number\n onClearSelection: () => void\n customControls?: ReactNode\n}\n\n/**\n * UI-only component for displaying the number of table rows selected, along with actions that can be performed on those rows\n */\nexport function RowSelectionUI(props: RowSelectionUIProps) {\n const {\n show = true,\n selectedRowCount,\n onClearSelection,\n customControls = <></>,\n } = props\n const isRowSelectionUIFloating = useAtomValue(isRowSelectionUIFloatingAtom)\n if (!show) {\n return <></>\n }\n\n return (\n <Paper\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n position: isRowSelectionUIFloating ? 'fixed' : 'absolute',\n bottom: isRowSelectionUIFloating ? 0 : -70,\n left: 0,\n width: '100%',\n height: '70px',\n zIndex: 1,\n px: 2.5,\n }}\n >\n <Button\n variant=\"text\"\n color=\"error\"\n onClick={() => {\n onClearSelection()\n }}\n >\n Clear Selection\n </Button>\n <Box\n sx={{\n display: 'flex',\n gap: 2.5,\n alignItems: 'center',\n }}\n >\n <Box\n sx={{\n display: 'flex',\n gap: 1.5,\n }}\n >\n <InlineBadge\n badgeContent={selectedRowCount.toLocaleString()}\n color=\"primary\"\n max={Infinity}\n />\n <Typography variant=\"body1\">\n {pluralize('Row', selectedRowCount)} Selected\n </Typography>\n </Box>\n {customControls}\n </Box>\n </Paper>\n )\n}\n"],"mappings":";;;;;;;AAiBA,SAAgB,EAAe,GAA4B;CACzD,IAAM,EACJ,UAAO,IACP,qBACA,qBACA,oBAAiB,kBAAA,GAAA,CAAI,CAAA,MACnB,GACE,IAA2B,EAAa,CAA4B;CAK1E,OAJK,IAKH,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,UAAU,IAA2B,UAAU;GAC/C,QAAQ,IAA2B,IAAI;GACvC,MAAM;GACN,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,IAAI;EACN;YAZF,CAcE,kBAAC,GAAD;GACE,SAAQ;GACR,OAAM;GACN,eAAe;IACb,EAAiB;GACnB;aACD;EAEO,CAAA,GACR,kBAAC,GAAD;GACE,IAAI;IACF,SAAS;IACT,KAAK;IACL,YAAY;GACd;aALF,CAOE,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,KAAK;IACP;cAJF,CAME,kBAAC,GAAD;KACE,cAAc,EAAiB,eAAe;KAC9C,OAAM;KACN,KAAK;IACN,CAAA,GACD,kBAAC,GAAD;KAAY,SAAQ;eAApB,CACG,EAAU,OAAO,CAAgB,GAAE,WAC1B;MACT;OACJ,CACE;IACA;MAnDA,kBAAA,GAAA,CAAI,CAAA;AAqDf"}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResultsNotFound.js","names":[],"sources":["../../../src/components/SynapseTable/SearchResultsNotFound.tsx"],"sourcesContent":["import NoSearchResults from '@/assets/icons/NoSearchResults'\n\nexport default function SearchResultsNotFound() {\n return (\n <div className=\"text-center\">\n <NoSearchResults\n className=\"no-search-results\"\n display=\"block\"\n height=\"181px\"\n sx={{ pt: '40px', pb: '10px' }}\n />\n <h4>No Matching Results</h4>\n <p>Try checking the spelling or removing filters.</p>\n </div>\n )\n}\n"],"mappings":";;;AAEA,SAAwB,IAAwB;AAC9C,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD;IACE,WAAU;IACV,SAAQ;IACR,QAAO;IACP,IAAI;KAAE,IAAI;KAAQ,IAAI;KAAQ;IAC9B,CAAA;GACF,kBAAC,MAAD,EAAA,UAAI,uBAAwB,CAAA;GAC5B,kBAAC,KAAD,EAAA,UAAG,kDAAkD,CAAA;GACjD"}
1
+ {"version":3,"file":"SearchResultsNotFound.js","names":[],"sources":["../../../src/components/SynapseTable/SearchResultsNotFound.tsx"],"sourcesContent":["import NoSearchResults from '@/assets/icons/NoSearchResults'\n\nexport default function SearchResultsNotFound() {\n return (\n <div className=\"text-center\">\n <NoSearchResults\n className=\"no-search-results\"\n display=\"block\"\n height=\"181px\"\n sx={{ pt: '40px', pb: '10px' }}\n />\n <h4>No Matching Results</h4>\n <p>Try checking the spelling or removing filters.</p>\n </div>\n )\n}\n"],"mappings":";;;AAEA,SAAwB,IAAwB;CAC9C,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD;IACE,WAAU;IACV,SAAQ;IACR,QAAO;IACP,IAAI;KAAE,IAAI;KAAQ,IAAI;IAAO;GAC9B,CAAA;GACD,kBAAC,MAAD,EAAA,UAAI,sBAAuB,CAAA;GAC3B,kBAAC,KAAD,EAAA,UAAG,iDAAiD,CAAA;EACjD;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchV2.js","names":[],"sources":["../../../src/components/SynapseTable/SearchV2.tsx"],"sourcesContent":["import {\n isColumnMultiValueFunctionQueryFilter,\n isColumnSingleValueQueryFilter,\n LockedColumn,\n} from '@/utils'\nimport { Collapse } from '@mui/material'\nimport {\n ColumnModel,\n ColumnMultiValueFunction,\n ColumnMultiValueFunctionQueryFilter,\n ColumnSingleValueFilterOperator,\n ColumnSingleValueQueryFilter,\n ColumnTypeEnum,\n QueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport {\n Component,\n createRef,\n FormEvent,\n RefObject,\n SyntheticEvent,\n} from 'react'\nimport { CSSTransition } from 'react-transition-group'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { QueryContextType } from '../QueryContext'\nimport { QueryVisualizationContextType } from '../QueryVisualizationWrapper'\nimport { useGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ReadonlyDeep } from 'type-fest'\n\ntype SearchState = {\n show: boolean\n /*\n When the component is revealed in queryplotnav we want to focus on the input field and reveal the dropdown\n there is an issue where the method handleClickOutsideForm will override the state from componentDidUpdate\n so we track when componentDidUpdate just fired so that `show` is not overriden on the click event which\n triggers componentDidUpdate \n */\n didUpdateRanLast: boolean\n searchText: string\n columnName: string\n}\n\nexport type SearchableColumnsV2 = string[]\n\nexport type SearchV2Props = {\n queryContext: QueryContextType\n queryVisualizationContext: QueryVisualizationContextType\n isQueryWrapperMenuChild?: boolean\n defaultColumn?: string\n searchable?: SearchableColumnsV2\n lockedColumn?: LockedColumn\n /**\n * PLFM-8897, PORTALS-3534: Full-Text Search configuration.\n * For Tables that have FTS enabled...\n * If specified, use the specified mode and distance (if BOOLEAN mode). Otherwise default to NATURAL_LANGUAGE mode.\n */\n ftsConfig?: ReadonlyDeep<FTSConfig>\n}\n\nexport type TextMatchesMode = 'NATURAL_LANGUAGE' | 'BOOLEAN'\nexport type FTSConfig = {\n textMatchesMode: TextMatchesMode\n distance?: number // In BOOLEAN mode, this operator tests whether two or more words all start within a specified distance from each other, measured in words.\n searchHelpURL?: string\n /**\n * Optional function to provide autocomplete suggestions for the search bar.\n * When provided, the search input will show a dropdown of suggestions as the user types.\n * @param searchText - The current text in the search input\n * @returns A promise resolving to an array of suggestion strings\n */\n getSuggestions?: (searchText: string) => Promise<string[]>\n /**\n * Override the minimum number of characters required before a search is executed.\n * Defaults to 3 (see PLFM-7011).\n */\n minSearchQueryLength?: number\n /**\n * When true, submitting a new search term replaces any existing TextMatchesQueryFilter\n * in additionalFilters rather than appending a new one.\n * Defaults to false (existing behaviour: filters accumulate).\n */\n replaceExistingFilter?: boolean\n}\n\ntype InternalSearchProps = SearchV2Props & {\n columnModels: ColumnModel[] | undefined\n}\n\nclass _Search extends Component<InternalSearchProps, SearchState> {\n public searchFormRef: RefObject<HTMLFormElement | null>\n public radioFormRef: RefObject<HTMLFormElement | null>\n\n constructor(props: InternalSearchProps) {\n super(props)\n this.state = {\n show: false,\n didUpdateRanLast: false,\n searchText: '',\n columnName: this.props.defaultColumn ?? '',\n }\n this.searchFormRef = createRef()\n this.radioFormRef = createRef()\n }\n\n componentDidMount() {\n // @ts-expect-error\n document.addEventListener('click', this.handleClickOutsideForm)\n }\n\n componentDidUpdate(prevProps: InternalSearchProps) {\n if (\n !prevProps.queryVisualizationContext?.showSearchBar &&\n this.props.queryVisualizationContext?.showSearchBar\n ) {\n this.setState({\n show: true,\n didUpdateRanLast: true,\n })\n this.searchFormRef?.current?.querySelector('input')?.focus()\n }\n }\n\n componentWillUnmount() {\n // @ts-expect-error\n document.removeEventListener('click', this.handleClickOutsideForm)\n }\n\n handleClickOutsideForm = (event: SyntheticEvent) => {\n if (\n // @ts-expect-error\n !this.searchFormRef.current?.contains(event?.target) &&\n // @ts-expect-error\n !this.radioFormRef.current?.contains(event?.target)\n ) {\n if (this.state.didUpdateRanLast) {\n this.setState({\n didUpdateRanLast: false,\n })\n } else {\n this.setState({\n show: false,\n })\n }\n }\n }\n\n public search = (event: SyntheticEvent<HTMLFormElement>) => {\n // form completion by default causes the page to reload, so we prevent that\n event.preventDefault()\n const { searchText } = this.state\n let { columnName } = this.state\n const { searchable, lockedColumn } = this.props\n if (columnName === '') {\n if (searchable) {\n // If searchable column names are defined in the config, grab the first one (that is not locked)\n columnName = searchable.filter(\n colName => colName !== lockedColumn?.columnName,\n )[0]\n } else {\n // Otherwise, get the first column model that can be searched.\n // And for study details page: if lockedColumn is defined, remove it from the search\n const searchableColumnModels = this.props.columnModels\n ?.filter(el => el.name !== lockedColumn?.columnName)\n .filter(el => this.isSupportedColumn(el))\n columnName = searchableColumnModels?.[0].name ?? ''\n }\n }\n this.setState({\n show: false,\n })\n const { executeQueryRequest, getCurrentQueryRequest } =\n this.props.queryContext\n\n const lastQueryRequestDeepClone = getCurrentQueryRequest()\n\n const { additionalFilters = [] } = lastQueryRequestDeepClone.query\n\n const indexOfColumn = additionalFilters.findIndex((el: QueryFilter) => {\n if (\n isColumnSingleValueQueryFilter(el) ||\n (isColumnMultiValueFunctionQueryFilter(el) &&\n el.columnName === columnName)\n ) {\n return true\n }\n return false\n })\n if (indexOfColumn === -1) {\n // get the column model to figure out what kind of filter we should apply.\n const columnModel: ColumnModel | undefined =\n this.props.columnModels?.filter(el => el.name === columnName)[0]\n if (columnModel?.columnType.endsWith('_LIST')) {\n const columnMultiValueQueryFilter: ColumnMultiValueFunctionQueryFilter =\n {\n columnName,\n function: ColumnMultiValueFunction.HAS_LIKE,\n _function: ColumnMultiValueFunction.HAS_LIKE,\n values: [`%${searchText}%`],\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnMultiValueFunctionQueryFilter',\n }\n additionalFilters.push(columnMultiValueQueryFilter)\n } else {\n if (columnModel?.columnType == ColumnTypeEnum.ENTITYID) {\n const columnSingleValueQueryFilter: ColumnSingleValueQueryFilter = {\n columnName,\n operator: ColumnSingleValueFilterOperator.EQUAL,\n values: [`${searchText.toLowerCase().replace('syn', '')}`],\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n }\n additionalFilters.push(columnSingleValueQueryFilter)\n } else {\n const columnSingleValueQueryFilter: ColumnSingleValueQueryFilter = {\n columnName,\n operator: ColumnSingleValueFilterOperator.LIKE,\n values: [`%${searchText}%`],\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n }\n additionalFilters.push(columnSingleValueQueryFilter)\n }\n }\n } else {\n ;(\n additionalFilters[indexOfColumn] as\n | ColumnSingleValueQueryFilter\n | ColumnMultiValueFunctionQueryFilter\n ).values.push(`%${searchText}%`)\n }\n lastQueryRequestDeepClone.query.additionalFilters = additionalFilters\n executeQueryRequest(lastQueryRequestDeepClone)\n }\n\n public handleChange = (event: FormEvent<HTMLInputElement>) => {\n this.setState({\n searchText: event.currentTarget.value,\n })\n }\n\n public isSupportedColumn = (columnModel?: ColumnModel) => {\n switch (columnModel?.columnType) {\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n case ColumnTypeEnum.USERID:\n // case ColumnTypeEnum.ENTITYID: //PORTALS-2995: users may want to search on Synapse ID\n return false\n default:\n return true\n }\n }\n\n public isSupportedColumnAndInProps = (columnModel?: ColumnModel) => {\n if (this.isSupportedColumn(columnModel)) {\n // return true if the searchable array contains this column name\n const { searchable } = this.props\n return searchable?.some(e => e === columnModel?.name)\n }\n return false\n }\n\n render() {\n const {\n searchable,\n lockedColumn,\n columnModels,\n queryVisualizationContext: { showSearchBar, getColumnDisplayName },\n } = this.props\n const { searchText, show, columnName } = this.state\n let searchColumns: string[] = []\n\n // searchable specifies the order of the columns to search\n if (searchable) {\n searchColumns = searchable\n .map(el => columnModels?.find(model => model.name === el))\n .filter(this.isSupportedColumnAndInProps)\n .map(el => el!.name)\n } else if (columnModels) {\n searchColumns = columnModels\n ?.filter(this.isSupportedColumn)\n .map(el => el.name)\n }\n\n // For study details page: if lockedColumn is defined, remove it from the radio dropdown\n if (searchColumns.length && lockedColumn?.columnName) {\n searchColumns = searchColumns.filter(\n el => el !== lockedColumn?.columnName,\n )\n }\n return (\n <div className={`QueryWrapperSearchInput`}>\n <Collapse in={showSearchBar}>\n <form\n className=\"QueryWrapperSearchInput__searchbar\"\n onSubmit={this.search}\n onClick={() => {\n this.setState({ show: true })\n }}\n ref={this.searchFormRef}\n >\n <span className=\"QueryWrapperSearchInput__searchbar__searchicon\">\n <IconSvg icon=\"search\" />\n </span>\n <input\n onChange={this.handleChange}\n onClick={() => {\n this.setState({\n show: true,\n })\n }}\n placeholder=\"Enter Search Terms\"\n value={searchText}\n type=\"text\"\n />\n {this.state.searchText.length > 0 && (\n <button\n className=\"QueryWrapperSearchInput__searchbar__clearbutton\"\n type=\"button\"\n onClick={() => {\n this.setState({\n searchText: '',\n })\n }}\n >\n <IconSvg icon=\"close\" />\n </button>\n )}\n </form>\n </Collapse>\n <div className=\"QueryWrapperSearchInput__dropdown_pos\">\n <CSSTransition\n nodeRef={this.radioFormRef}\n in={show}\n classNames=\"QueryWrapperSearchInput__animate_dropdown\"\n timeout={{ enter: 0, exit: 300 }}\n >\n <form\n ref={this.radioFormRef}\n className=\"QueryWrapperSearchInput__column-select QueryWrapperSearchInput__animate_height\"\n >\n <p className=\"deemphasized\">\n <i> Search In Field: </i>\n </p>\n {searchColumns.map((name, index) => {\n const displayName = getColumnDisplayName(name)\n const isSelected =\n (columnName === '' && index === 0) || columnName === name\n return (\n <div className=\"radio\" key={`search-field-${name}-${index}`}>\n <label>\n <span>\n <input\n id={name}\n type=\"radio\"\n value={name}\n checked={isSelected}\n onClick={() => {\n this.searchFormRef?.current\n ?.querySelector('input')\n ?.focus()\n this.setState({\n columnName: name,\n })\n }}\n />\n <span>{displayName}</span>\n </span>\n </label>\n </div>\n )\n })}\n </form>\n </CSSTransition>\n </div>\n </div>\n )\n }\n}\n\nexport default function Search(props: SearchV2Props) {\n const { data: queryMetadata } = useGetQueryMetadata()\n return <_Search {...props} columnModels={queryMetadata?.columnModels} />\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SearchV2.js","names":[],"sources":["../../../src/components/SynapseTable/SearchV2.tsx"],"sourcesContent":["import {\n isColumnMultiValueFunctionQueryFilter,\n isColumnSingleValueQueryFilter,\n LockedColumn,\n} from '@/utils'\nimport { Collapse } from '@mui/material'\nimport {\n ColumnModel,\n ColumnMultiValueFunction,\n ColumnMultiValueFunctionQueryFilter,\n ColumnSingleValueFilterOperator,\n ColumnSingleValueQueryFilter,\n ColumnTypeEnum,\n QueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport {\n Component,\n createRef,\n FormEvent,\n RefObject,\n SyntheticEvent,\n} from 'react'\nimport { CSSTransition } from 'react-transition-group'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { QueryContextType } from '../QueryContext'\nimport { QueryVisualizationContextType } from '../QueryVisualizationWrapper'\nimport { useGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ReadonlyDeep } from 'type-fest'\n\ntype SearchState = {\n show: boolean\n /*\n When the component is revealed in queryplotnav we want to focus on the input field and reveal the dropdown\n there is an issue where the method handleClickOutsideForm will override the state from componentDidUpdate\n so we track when componentDidUpdate just fired so that `show` is not overriden on the click event which\n triggers componentDidUpdate \n */\n didUpdateRanLast: boolean\n searchText: string\n columnName: string\n}\n\nexport type SearchableColumnsV2 = string[]\n\nexport type SearchV2Props = {\n queryContext: QueryContextType\n queryVisualizationContext: QueryVisualizationContextType\n isQueryWrapperMenuChild?: boolean\n defaultColumn?: string\n searchable?: SearchableColumnsV2\n lockedColumn?: LockedColumn\n /**\n * PLFM-8897, PORTALS-3534: Full-Text Search configuration.\n * For Tables that have FTS enabled...\n * If specified, use the specified mode and distance (if BOOLEAN mode). Otherwise default to NATURAL_LANGUAGE mode.\n */\n ftsConfig?: ReadonlyDeep<FTSConfig>\n}\n\nexport type TextMatchesMode = 'NATURAL_LANGUAGE' | 'BOOLEAN'\nexport type FTSConfig = {\n textMatchesMode: TextMatchesMode\n distance?: number // In BOOLEAN mode, this operator tests whether two or more words all start within a specified distance from each other, measured in words.\n searchHelpURL?: string\n /**\n * Optional function to provide autocomplete suggestions for the search bar.\n * When provided, the search input will show a dropdown of suggestions as the user types.\n * @param searchText - The current text in the search input\n * @returns A promise resolving to an array of suggestion strings\n */\n getSuggestions?: (searchText: string) => Promise<string[]>\n /**\n * Override the minimum number of characters required before a search is executed.\n * Defaults to 3 (see PLFM-7011).\n */\n minSearchQueryLength?: number\n /**\n * When true, submitting a new search term replaces any existing TextMatchesQueryFilter\n * in additionalFilters rather than appending a new one.\n * Defaults to false (existing behaviour: filters accumulate).\n */\n replaceExistingFilter?: boolean\n}\n\ntype InternalSearchProps = SearchV2Props & {\n columnModels: ColumnModel[] | undefined\n}\n\nclass _Search extends Component<InternalSearchProps, SearchState> {\n public searchFormRef: RefObject<HTMLFormElement | null>\n public radioFormRef: RefObject<HTMLFormElement | null>\n\n constructor(props: InternalSearchProps) {\n super(props)\n this.state = {\n show: false,\n didUpdateRanLast: false,\n searchText: '',\n columnName: this.props.defaultColumn ?? '',\n }\n this.searchFormRef = createRef()\n this.radioFormRef = createRef()\n }\n\n componentDidMount() {\n // @ts-expect-error\n document.addEventListener('click', this.handleClickOutsideForm)\n }\n\n componentDidUpdate(prevProps: InternalSearchProps) {\n if (\n !prevProps.queryVisualizationContext?.showSearchBar &&\n this.props.queryVisualizationContext?.showSearchBar\n ) {\n this.setState({\n show: true,\n didUpdateRanLast: true,\n })\n this.searchFormRef?.current?.querySelector('input')?.focus()\n }\n }\n\n componentWillUnmount() {\n // @ts-expect-error\n document.removeEventListener('click', this.handleClickOutsideForm)\n }\n\n handleClickOutsideForm = (event: SyntheticEvent) => {\n if (\n // @ts-expect-error\n !this.searchFormRef.current?.contains(event?.target) &&\n // @ts-expect-error\n !this.radioFormRef.current?.contains(event?.target)\n ) {\n if (this.state.didUpdateRanLast) {\n this.setState({\n didUpdateRanLast: false,\n })\n } else {\n this.setState({\n show: false,\n })\n }\n }\n }\n\n public search = (event: SyntheticEvent<HTMLFormElement>) => {\n // form completion by default causes the page to reload, so we prevent that\n event.preventDefault()\n const { searchText } = this.state\n let { columnName } = this.state\n const { searchable, lockedColumn } = this.props\n if (columnName === '') {\n if (searchable) {\n // If searchable column names are defined in the config, grab the first one (that is not locked)\n columnName = searchable.filter(\n colName => colName !== lockedColumn?.columnName,\n )[0]\n } else {\n // Otherwise, get the first column model that can be searched.\n // And for study details page: if lockedColumn is defined, remove it from the search\n const searchableColumnModels = this.props.columnModels\n ?.filter(el => el.name !== lockedColumn?.columnName)\n .filter(el => this.isSupportedColumn(el))\n columnName = searchableColumnModels?.[0].name ?? ''\n }\n }\n this.setState({\n show: false,\n })\n const { executeQueryRequest, getCurrentQueryRequest } =\n this.props.queryContext\n\n const lastQueryRequestDeepClone = getCurrentQueryRequest()\n\n const { additionalFilters = [] } = lastQueryRequestDeepClone.query\n\n const indexOfColumn = additionalFilters.findIndex((el: QueryFilter) => {\n if (\n isColumnSingleValueQueryFilter(el) ||\n (isColumnMultiValueFunctionQueryFilter(el) &&\n el.columnName === columnName)\n ) {\n return true\n }\n return false\n })\n if (indexOfColumn === -1) {\n // get the column model to figure out what kind of filter we should apply.\n const columnModel: ColumnModel | undefined =\n this.props.columnModels?.filter(el => el.name === columnName)[0]\n if (columnModel?.columnType.endsWith('_LIST')) {\n const columnMultiValueQueryFilter: ColumnMultiValueFunctionQueryFilter =\n {\n columnName,\n function: ColumnMultiValueFunction.HAS_LIKE,\n _function: ColumnMultiValueFunction.HAS_LIKE,\n values: [`%${searchText}%`],\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnMultiValueFunctionQueryFilter',\n }\n additionalFilters.push(columnMultiValueQueryFilter)\n } else {\n if (columnModel?.columnType == ColumnTypeEnum.ENTITYID) {\n const columnSingleValueQueryFilter: ColumnSingleValueQueryFilter = {\n columnName,\n operator: ColumnSingleValueFilterOperator.EQUAL,\n values: [`${searchText.toLowerCase().replace('syn', '')}`],\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n }\n additionalFilters.push(columnSingleValueQueryFilter)\n } else {\n const columnSingleValueQueryFilter: ColumnSingleValueQueryFilter = {\n columnName,\n operator: ColumnSingleValueFilterOperator.LIKE,\n values: [`%${searchText}%`],\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n }\n additionalFilters.push(columnSingleValueQueryFilter)\n }\n }\n } else {\n ;(\n additionalFilters[indexOfColumn] as\n | ColumnSingleValueQueryFilter\n | ColumnMultiValueFunctionQueryFilter\n ).values.push(`%${searchText}%`)\n }\n lastQueryRequestDeepClone.query.additionalFilters = additionalFilters\n executeQueryRequest(lastQueryRequestDeepClone)\n }\n\n public handleChange = (event: FormEvent<HTMLInputElement>) => {\n this.setState({\n searchText: event.currentTarget.value,\n })\n }\n\n public isSupportedColumn = (columnModel?: ColumnModel) => {\n switch (columnModel?.columnType) {\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n case ColumnTypeEnum.USERID:\n // case ColumnTypeEnum.ENTITYID: //PORTALS-2995: users may want to search on Synapse ID\n return false\n default:\n return true\n }\n }\n\n public isSupportedColumnAndInProps = (columnModel?: ColumnModel) => {\n if (this.isSupportedColumn(columnModel)) {\n // return true if the searchable array contains this column name\n const { searchable } = this.props\n return searchable?.some(e => e === columnModel?.name)\n }\n return false\n }\n\n render() {\n const {\n searchable,\n lockedColumn,\n columnModels,\n queryVisualizationContext: { showSearchBar, getColumnDisplayName },\n } = this.props\n const { searchText, show, columnName } = this.state\n let searchColumns: string[] = []\n\n // searchable specifies the order of the columns to search\n if (searchable) {\n searchColumns = searchable\n .map(el => columnModels?.find(model => model.name === el))\n .filter(this.isSupportedColumnAndInProps)\n .map(el => el!.name)\n } else if (columnModels) {\n searchColumns = columnModels\n ?.filter(this.isSupportedColumn)\n .map(el => el.name)\n }\n\n // For study details page: if lockedColumn is defined, remove it from the radio dropdown\n if (searchColumns.length && lockedColumn?.columnName) {\n searchColumns = searchColumns.filter(\n el => el !== lockedColumn?.columnName,\n )\n }\n return (\n <div className={`QueryWrapperSearchInput`}>\n <Collapse in={showSearchBar}>\n <form\n className=\"QueryWrapperSearchInput__searchbar\"\n onSubmit={this.search}\n onClick={() => {\n this.setState({ show: true })\n }}\n ref={this.searchFormRef}\n >\n <span className=\"QueryWrapperSearchInput__searchbar__searchicon\">\n <IconSvg icon=\"search\" />\n </span>\n <input\n onChange={this.handleChange}\n onClick={() => {\n this.setState({\n show: true,\n })\n }}\n placeholder=\"Enter Search Terms\"\n value={searchText}\n type=\"text\"\n />\n {this.state.searchText.length > 0 && (\n <button\n className=\"QueryWrapperSearchInput__searchbar__clearbutton\"\n type=\"button\"\n onClick={() => {\n this.setState({\n searchText: '',\n })\n }}\n >\n <IconSvg icon=\"close\" />\n </button>\n )}\n </form>\n </Collapse>\n <div className=\"QueryWrapperSearchInput__dropdown_pos\">\n <CSSTransition\n nodeRef={this.radioFormRef}\n in={show}\n classNames=\"QueryWrapperSearchInput__animate_dropdown\"\n timeout={{ enter: 0, exit: 300 }}\n >\n <form\n ref={this.radioFormRef}\n className=\"QueryWrapperSearchInput__column-select QueryWrapperSearchInput__animate_height\"\n >\n <p className=\"deemphasized\">\n <i> Search In Field: </i>\n </p>\n {searchColumns.map((name, index) => {\n const displayName = getColumnDisplayName(name)\n const isSelected =\n (columnName === '' && index === 0) || columnName === name\n return (\n <div className=\"radio\" key={`search-field-${name}-${index}`}>\n <label>\n <span>\n <input\n id={name}\n type=\"radio\"\n value={name}\n checked={isSelected}\n onClick={() => {\n this.searchFormRef?.current\n ?.querySelector('input')\n ?.focus()\n this.setState({\n columnName: name,\n })\n }}\n />\n <span>{displayName}</span>\n </span>\n </label>\n </div>\n )\n })}\n </form>\n </CSSTransition>\n </div>\n </div>\n )\n }\n}\n\nexport default function Search(props: SearchV2Props) {\n const { data: queryMetadata } = useGetQueryMetadata()\n return <_Search {...props} columnModels={queryMetadata?.columnModels} />\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SqlEditor.js","names":[],"sources":["../../../src/components/SynapseTable/SqlEditor.tsx"],"sourcesContent":["import { Collapse, TextField } from '@mui/material'\nimport {\n ChangeEvent,\n SyntheticEvent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useQueryContext } from '../QueryContext'\nimport IconSvg from '../IconSvg'\n\nexport type SqlEditorProps = {\n helpMessage?: string\n helpUrl?: string\n // SWC-7094: many errors occur due to experimenting with the query. Provide the SqlEditor (if shown) in the QueryWrapperErrorBoundary, and on search reset the error boundary.\n resetErrorBoundary?: (...args: Array<unknown>) => void\n}\n\nconst helpMessageCopy =\n 'The data within tables and views can be retrieved by using a SQL-like query language either from the web interface or from the programmatic clients.'\nconst helpLink =\n 'https://docs.synapse.org/synapse-docs/querying-tables-views-and-datasets#Using-Advanced-Search-Queries'\n\nexport function SqlEditor({\n helpMessage = helpMessageCopy,\n helpUrl = helpLink,\n resetErrorBoundary,\n}: SqlEditorProps) {\n const { executeQueryRequest, getCurrentQueryRequest } = useQueryContext()\n const { showSqlEditor } = useQueryVisualizationContext()\n\n const [sql, setSql] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n const lastQueryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n useEffect(() => {\n if (showSqlEditor) {\n const defaultSql = lastQueryRequest.query.sql\n\n setSql(defaultSql)\n inputRef.current?.focus()\n }\n }, [showSqlEditor, lastQueryRequest])\n\n const search = (event: SyntheticEvent<HTMLFormElement>) => {\n event.preventDefault()\n if (resetErrorBoundary) {\n resetErrorBoundary()\n }\n executeQueryRequest(request => {\n request.query.sql = sql\n request.query.offset = 0\n request.query.additionalFilters = []\n request.query.selectedFacets = []\n return request\n })\n }\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n inputRef.current?.setCustomValidity('')\n setSql(event.currentTarget.value)\n }\n\n return (\n <div className={`QueryWrapperSqlEditorInput`}>\n <Collapse in={showSqlEditor} timeout={{ enter: 300, exit: 300 }}>\n <form onSubmit={search}>\n <TextField\n sx={{ width: '100%' }}\n onChange={handleChange}\n placeholder=\"Enter Query\"\n value={sql}\n type=\"text\"\n slotProps={{\n input: {\n startAdornment: (\n <IconSvg\n icon=\"search\"\n wrap={false}\n sx={{\n mr: 1,\n color: 'grey.600',\n }}\n />\n ),\n endAdornment: (\n <HelpPopover\n markdownText={helpMessage}\n helpUrl={helpUrl}\n placement=\"right\"\n />\n ),\n },\n\n htmlInput: {\n ref: inputRef,\n },\n }}\n />\n </form>\n </Collapse>\n </div>\n )\n}\n\nexport default SqlEditor\n"],"mappings":";;;;;;;;;;AAqBA,IAAM,IACJ,wJACI,IACJ;AAEF,SAAgB,EAAU,EACxB,iBAAc,GACd,aAAU,GACV,yBACiB;CACjB,IAAM,EAAE,wBAAqB,8BAA2B,GAAiB,EACnE,EAAE,qBAAkB,GAA8B,EAElD,CAAC,GAAK,KAAU,EAAS,GAAG,EAC5B,IAAW,EAAyB,KAAK,EAEzC,IAAmB,QACjB,GAAwB,EAC9B,CAAC,EAAuB,CACzB;AA8BD,QA5BA,QAAgB;AACd,MAAI,GAAe;GACjB,IAAM,IAAa,EAAiB,MAAM;AAG1C,GADA,EAAO,EAAW,EAClB,EAAS,SAAS,OAAO;;IAE1B,CAAC,GAAe,EAAiB,CAAC,EAsBnC,kBAAC,OAAD;EAAK,WAAW;YACd,kBAAC,GAAD;GAAU,IAAI;GAAe,SAAS;IAAE,OAAO;IAAK,MAAM;IAAK;aAC7D,kBAAC,QAAD;IAAM,WAtBI,MAA2C;AAKzD,KAJA,EAAM,gBAAgB,EAClB,KACF,GAAoB,EAEtB,GAAoB,OAClB,EAAQ,MAAM,MAAM,GACpB,EAAQ,MAAM,SAAS,GACvB,EAAQ,MAAM,oBAAoB,EAAE,EACpC,EAAQ,MAAM,iBAAiB,EAAE,EAC1B,GACP;;cAYI,kBAAC,GAAD;KACE,IAAI,EAAE,OAAO,QAAQ;KACrB,WAXY,MAAyC;AAE7D,MADA,EAAS,SAAS,kBAAkB,GAAG,EACvC,EAAO,EAAM,cAAc,MAAM;;KAUzB,aAAY;KACZ,OAAO;KACP,MAAK;KACL,WAAW;MACT,OAAO;OACL,gBACE,kBAAC,GAAD;QACE,MAAK;QACL,MAAM;QACN,IAAI;SACF,IAAI;SACJ,OAAO;SACR;QACD,CAAA;OAEJ,cACE,kBAAC,GAAD;QACE,cAAc;QACL;QACT,WAAU;QACV,CAAA;OAEL;MAED,WAAW,EACT,KAAK,GACN;MACF;KACD,CAAA;IACG,CAAA;GACE,CAAA;EACP,CAAA"}
1
+ {"version":3,"file":"SqlEditor.js","names":[],"sources":["../../../src/components/SynapseTable/SqlEditor.tsx"],"sourcesContent":["import { Collapse, TextField } from '@mui/material'\nimport {\n ChangeEvent,\n SyntheticEvent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useQueryContext } from '../QueryContext'\nimport IconSvg from '../IconSvg'\n\nexport type SqlEditorProps = {\n helpMessage?: string\n helpUrl?: string\n // SWC-7094: many errors occur due to experimenting with the query. Provide the SqlEditor (if shown) in the QueryWrapperErrorBoundary, and on search reset the error boundary.\n resetErrorBoundary?: (...args: Array<unknown>) => void\n}\n\nconst helpMessageCopy =\n 'The data within tables and views can be retrieved by using a SQL-like query language either from the web interface or from the programmatic clients.'\nconst helpLink =\n 'https://docs.synapse.org/synapse-docs/querying-tables-views-and-datasets#Using-Advanced-Search-Queries'\n\nexport function SqlEditor({\n helpMessage = helpMessageCopy,\n helpUrl = helpLink,\n resetErrorBoundary,\n}: SqlEditorProps) {\n const { executeQueryRequest, getCurrentQueryRequest } = useQueryContext()\n const { showSqlEditor } = useQueryVisualizationContext()\n\n const [sql, setSql] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n const lastQueryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n useEffect(() => {\n if (showSqlEditor) {\n const defaultSql = lastQueryRequest.query.sql\n\n setSql(defaultSql)\n inputRef.current?.focus()\n }\n }, [showSqlEditor, lastQueryRequest])\n\n const search = (event: SyntheticEvent<HTMLFormElement>) => {\n event.preventDefault()\n if (resetErrorBoundary) {\n resetErrorBoundary()\n }\n executeQueryRequest(request => {\n request.query.sql = sql\n request.query.offset = 0\n request.query.additionalFilters = []\n request.query.selectedFacets = []\n return request\n })\n }\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n inputRef.current?.setCustomValidity('')\n setSql(event.currentTarget.value)\n }\n\n return (\n <div className={`QueryWrapperSqlEditorInput`}>\n <Collapse in={showSqlEditor} timeout={{ enter: 300, exit: 300 }}>\n <form onSubmit={search}>\n <TextField\n sx={{ width: '100%' }}\n onChange={handleChange}\n placeholder=\"Enter Query\"\n value={sql}\n type=\"text\"\n slotProps={{\n input: {\n startAdornment: (\n <IconSvg\n icon=\"search\"\n wrap={false}\n sx={{\n mr: 1,\n color: 'grey.600',\n }}\n />\n ),\n endAdornment: (\n <HelpPopover\n markdownText={helpMessage}\n helpUrl={helpUrl}\n placement=\"right\"\n />\n ),\n },\n\n htmlInput: {\n ref: inputRef,\n },\n }}\n />\n </form>\n </Collapse>\n </div>\n )\n}\n\nexport default SqlEditor\n"],"mappings":";;;;;;;;;;AAqBA,IAAM,IACJ,wJACI,IACJ;AAEF,SAAgB,EAAU,EACxB,iBAAc,GACd,aAAU,GACV,yBACiB;CACjB,IAAM,EAAE,wBAAqB,8BAA2B,EAAgB,GAClE,EAAE,qBAAkB,EAA6B,GAEjD,CAAC,GAAK,KAAU,EAAS,EAAE,GAC3B,IAAW,EAAyB,IAAI,GAExC,IAAmB,QACjB,EAAuB,GAC7B,CAAC,CAAsB,CACzB;CA8BA,OA5BA,QAAgB;EACd,IAAI,GAAe;GACjB,IAAM,IAAa,EAAiB,MAAM;GAG1C,AADA,EAAO,CAAU,GACjB,EAAS,SAAS,MAAM;EAC1B;CACF,GAAG,CAAC,GAAe,CAAgB,CAAC,GAsBlC,kBAAC,OAAD;EAAK,WAAW;YACd,kBAAC,GAAD;GAAU,IAAI;GAAe,SAAS;IAAE,OAAO;IAAK,MAAM;GAAI;aAC5D,kBAAC,QAAD;IAAM,WAtBI,MAA2C;KAKzD,AAJA,EAAM,eAAe,GACjB,KACF,EAAmB,GAErB,GAAoB,OAClB,EAAQ,MAAM,MAAM,GACpB,EAAQ,MAAM,SAAS,GACvB,EAAQ,MAAM,oBAAoB,CAAC,GACnC,EAAQ,MAAM,iBAAiB,CAAC,GACzB,EACR;IACH;cAWQ,kBAAC,GAAD;KACE,IAAI,EAAE,OAAO,OAAO;KACpB,WAXY,MAAyC;MAE7D,AADA,EAAS,SAAS,kBAAkB,EAAE,GACtC,EAAO,EAAM,cAAc,KAAK;KAClC;KASU,aAAY;KACZ,OAAO;KACP,MAAK;KACL,WAAW;MACT,OAAO;OACL,gBACE,kBAAC,GAAD;QACE,MAAK;QACL,MAAM;QACN,IAAI;SACF,IAAI;SACJ,OAAO;QACT;OACD,CAAA;OAEH,cACE,kBAAC,GAAD;QACE,cAAc;QACL;QACT,WAAU;OACX,CAAA;MAEL;MAEA,WAAW,EACT,KAAK,EACP;KACF;IACD,CAAA;GACG,CAAA;EACE,CAAA;CACP,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseTable.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTable.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport {\n ColumnTypeEnum,\n Row,\n RowSet,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport {\n Cell,\n ColumnDef,\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table'\nimport { useAtomValue } from 'jotai'\nimport { useMemo, useState } from 'react'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { SynapseTableContext } from './SynapseTableContext'\nimport {\n accessColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n rowSelectionColumn,\n TableDataCell,\n TableDataColumnHeader,\n} from './SynapseTableRenderers'\nimport {\n isEntityViewOrDatasetOrCollection,\n isFileViewOrDataset,\n isSortableColumn,\n} from './SynapseTableUtils'\nimport { usePrefetchResourcesInTable } from './usePrefetchTableData'\nimport { useTableSort } from './useTableSort'\n\nconst DEFAULT_CUSTOM_COLUMNS: ColumnDef<Row, any>[] = []\n\n/**\n * Returns the minimum column width (in px) for a Synapse table column\n * based on its type and name.\n */\nexport function getColumnMinSize(\n columnName: string,\n columnType: ColumnTypeEnum,\n): number {\n const nameLower = columnName.toLowerCase()\n if (nameLower.includes('name') || nameLower.includes('description')) {\n return 250\n }\n switch (columnType) {\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.EVALUATIONID:\n case ColumnTypeEnum.SUBMISSIONID:\n return 180\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n return 120\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n return 100\n default:\n return 60\n }\n}\n\nexport type SynapseTableConfiguration = Pick<\n SynapseTableProps,\n | 'showAccessColumn'\n | 'showExternalAccessIcon'\n | 'showAccessColumnHeader'\n | 'showDownloadColumn'\n | 'hideDownload'\n | 'showDirectDownloadColumn'\n | 'hideAddToDownloadListColumn'\n | 'columnLinks'\n | 'customColumns'\n>\n\nexport type SynapseTableProps = {\n /** The row data shown in the table. */\n rowSet: RowSet\n /** Whether a new page of data is being loaded */\n isLoadingNewPage: boolean\n /** Custom columns to render in the table */\n customColumns?: ColumnDef<Row, any>[]\n /** If true and entity is a view or dataset, renders a column that represents if the caller has permission to download the entity represented by the row */\n showAccessColumn?: boolean\n /**\n * If true, the component will show enhanced UI for the case where\n * - the entity is a FileEntity, AND\n * - the caller has permission to fetch the dataFileHandle, AND\n * - the dataFileHandle is an instance of ExternalFileHandleInterface (i.e. the file is not controlled by Synapse)\n * Note that this requires an additional API call that cannot be batched, so it should be avoided in bulk contexts if possible.\n * @default false\n */\n showExternalAccessIcon?: boolean\n showAccessColumnHeader?: boolean\n /** @deprecated use showDirectDownloadColumn */\n showDownloadColumn?: boolean\n /** @deprecated use hideAddToDownloadListColumn */\n hideDownload?: boolean\n /** If true and entity is a file view or dataset, renders a column that allows the logged-in user to directly download the file, if they have permission */\n showDirectDownloadColumn?: boolean\n /** If true, the add to download list column will be hidden */\n hideAddToDownloadListColumn?: boolean\n /** Configuration to override cell renderers with e.g. a link to a portals detail page */\n columnLinks?: LabelLinkConfig\n}\n\nconst columnHelper = createColumnHelper<Row>()\n\nexport function SynapseTable(props: SynapseTableProps) {\n const { showDownloadColumn, hideDownload } = props\n const {\n rowSet,\n isLoadingNewPage,\n customColumns = DEFAULT_CUSTOM_COLUMNS,\n showAccessColumn,\n showExternalAccessIcon,\n showAccessColumnHeader,\n showDirectDownloadColumn = showDownloadColumn,\n hideAddToDownloadListColumn = hideDownload,\n columnLinks,\n } = props\n const {\n entityId,\n versionNumber,\n getCurrentQueryRequest,\n fileIdColumnName,\n fileVersionColumnName,\n } = useQueryContext()\n const queryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n const selectColumns = rowSet.headers\n\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n\n const { columnsToShowInTable, NoContentPlaceholder } =\n useQueryVisualizationContext()\n const synapseTableContext = useMemo(\n () => ({\n columnLinks,\n showExternalAccessIcon,\n }),\n [columnLinks, showExternalAccessIcon],\n )\n const { isAuthenticated } = useSynapseContext()\n\n const [isExportTableDownloadOpen, setIsExportTableDownloadOpen] =\n useState(false)\n\n const { sort, setSort } = useTableSort()\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const isShowingAccessColumn: boolean = Boolean(\n showAccessColumn &&\n entity &&\n ((isEntityViewOrDatasetOrCollection(entity) && allRowsHaveId(rowSet)) ||\n fileIdColumnName),\n )\n const rowsAreDownloadable =\n entity &&\n isAuthenticated &&\n ((isFileViewOrDataset(entity) && allRowsHaveId(rowSet)) || fileIdColumnName)\n\n const isShowingDirectDownloadColumn = Boolean(\n rowsAreDownloadable && showDirectDownloadColumn,\n )\n\n const isShowingAddToV2DownloadListColumn: boolean = Boolean(\n rowsAreDownloadable &&\n !hideAddToDownloadListColumn &&\n !isRowSelectionVisible,\n )\n const rowEntityIDColumnIndex = fileIdColumnName\n ? rowSet.headers.findIndex(col => col.name == fileIdColumnName)\n : undefined\n const rowEntityVersionColumnIndex = fileVersionColumnName\n ? rowSet.headers.findIndex(col => col.name == fileVersionColumnName)\n : undefined\n\n const columns = useMemo(\n () => [\n ...customColumns,\n rowSelectionColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n {\n ...accessColumn,\n header: showAccessColumn && showAccessColumnHeader ? 'Access' : '',\n },\n ...(selectColumns.map((selectColumn, index) => {\n return columnHelper.accessor(row => row.values[index], {\n id: selectColumn.name,\n enableSorting: isSortableColumn(selectColumn.columnType),\n enableResizing: true,\n minSize: getColumnMinSize(\n selectColumn.name,\n selectColumn.columnType as ColumnTypeEnum,\n ),\n header: TableDataColumnHeader,\n cell: TableDataCell,\n })\n }) ?? []),\n ],\n [customColumns, selectColumns, showAccessColumn, showAccessColumnHeader],\n )\n\n const prependColumnVisibility: VisibilityState = useMemo(\n () => ({\n [rowSelectionColumn.id as string]: isRowSelectionVisible,\n [addToDownloadListColumn.id as string]:\n isShowingAddToV2DownloadListColumn,\n [directDownloadColumn.id as string]: isShowingDirectDownloadColumn,\n [accessColumn.id as string]: isShowingAccessColumn,\n }),\n [\n isRowSelectionVisible,\n isShowingAccessColumn,\n isShowingAddToV2DownloadListColumn,\n isShowingDirectDownloadColumn,\n ],\n )\n\n // Transform our `columnsToShowInTable` to @tanstack/react-table's `VisibilityState`\n const columnVisibility: VisibilityState = useMemo(\n () =>\n selectColumns.reduce((prev: VisibilityState, curr) => {\n return {\n ...prev,\n [curr.name]: columnsToShowInTable.includes(curr.name),\n }\n }, prependColumnVisibility),\n [columnsToShowInTable, selectColumns, prependColumnVisibility],\n )\n\n const { dataHasBeenPrefetched } = usePrefetchResourcesInTable(rowSet)\n const renderTableDataPlaceholder = isLoadingNewPage || !dataHasBeenPrefetched\n\n const table = useReactTable({\n data: rowSet.rows,\n columns,\n defaultColumn: { minSize: 60 },\n getCoreRowModel: getCoreRowModel(),\n manualSorting: true,\n manualFiltering: true,\n onSortingChange: setSort,\n enableMultiSort: true,\n columnResizeMode: 'onChange',\n state: {\n sorting: sort,\n columnVisibility: columnVisibility,\n },\n meta: {\n rowSet,\n // make the rowEntityIDColumnIndex available to all cell renderers\n rowEntityIDColumnIndex,\n rowEntityVersionColumnIndex,\n renderPlaceholderData: renderTableDataPlaceholder,\n getWrapInExpandableTd: (cell: Cell<Row, unknown>) => {\n const selectColumn = selectColumns.find(\n cm => cm.name === cell.column.id,\n )\n return Boolean(\n selectColumn &&\n /* JSON handles its own overflow*/\n selectColumn.columnType !== ColumnTypeEnum.JSON,\n )\n },\n },\n })\n\n /**\n * Display the view\n */\n if (!rowSet) {\n return <></>\n }\n const hasResults = (rowSet.rows?.length ?? 0) > 0\n // Show the No Results UI if the current page has no rows, and this is the first page of data (offset === 0 or null/undefined).\n if (\n !hasResults &&\n (queryRequest.query.offset === 0 || queryRequest.query.offset == null)\n ) {\n return <NoContentPlaceholder />\n }\n\n return (\n <SynapseTableContext.Provider value={synapseTableContext}>\n <div>\n {isExportTableDownloadOpen && (\n <ModalDownload\n onClose={() => {\n setIsExportTableDownloadOpen(false)\n }}\n queryBundleRequest={queryRequest}\n />\n )}\n <StyledTanStackTable\n styledTableContainerProps={{\n className: 'SynapseTable',\n ['data-testid']: 'SynapseTable',\n density: 'default',\n }}\n table={table}\n fullWidth={false}\n autoColumnSizing={true}\n />\n </div>\n </SynapseTableContext.Provider>\n )\n}\n\n/**\n * If this is a view/dataset and rows have an ID, then rows represent individual objects in Synapse.\n * Presence of row IDs also indicates that the query is also necessarily not summary data, e.g. the query does\n * not include an operation like GROUP BY, DISTINCT, etc., that would cause rows to not map 1:1 to Synapse Entities\n */\nfunction allRowsHaveId(rowSet: RowSet): boolean {\n return Boolean(rowSet.rows?.every(row => !!row.rowId))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SynapseTable.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTable.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport {\n ColumnTypeEnum,\n Row,\n RowSet,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport {\n Cell,\n ColumnDef,\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table'\nimport { useAtomValue } from 'jotai'\nimport { useMemo, useState } from 'react'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { SynapseTableContext } from './SynapseTableContext'\nimport {\n accessColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n rowSelectionColumn,\n TableDataCell,\n TableDataColumnHeader,\n} from './SynapseTableRenderers'\nimport {\n isEntityViewOrDatasetOrCollection,\n isFileViewOrDataset,\n isSortableColumn,\n} from './SynapseTableUtils'\nimport { usePrefetchResourcesInTable } from './usePrefetchTableData'\nimport { useTableSort } from './useTableSort'\n\nconst DEFAULT_CUSTOM_COLUMNS: ColumnDef<Row, any>[] = []\n\n/**\n * Returns the minimum column width (in px) for a Synapse table column\n * based on its type and name.\n */\nexport function getColumnMinSize(\n columnName: string,\n columnType: ColumnTypeEnum,\n): number {\n const nameLower = columnName.toLowerCase()\n if (nameLower.includes('name') || nameLower.includes('description')) {\n return 250\n }\n switch (columnType) {\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.EVALUATIONID:\n case ColumnTypeEnum.SUBMISSIONID:\n return 180\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n return 120\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n return 100\n default:\n return 60\n }\n}\n\nexport type SynapseTableConfiguration = Pick<\n SynapseTableProps,\n | 'showAccessColumn'\n | 'showExternalAccessIcon'\n | 'showAccessColumnHeader'\n | 'showDownloadColumn'\n | 'hideDownload'\n | 'showDirectDownloadColumn'\n | 'hideAddToDownloadListColumn'\n | 'columnLinks'\n | 'customColumns'\n>\n\nexport type SynapseTableProps = {\n /** The row data shown in the table. */\n rowSet: RowSet\n /** Whether a new page of data is being loaded */\n isLoadingNewPage: boolean\n /** Custom columns to render in the table */\n customColumns?: ColumnDef<Row, any>[]\n /** If true and entity is a view or dataset, renders a column that represents if the caller has permission to download the entity represented by the row */\n showAccessColumn?: boolean\n /**\n * If true, the component will show enhanced UI for the case where\n * - the entity is a FileEntity, AND\n * - the caller has permission to fetch the dataFileHandle, AND\n * - the dataFileHandle is an instance of ExternalFileHandleInterface (i.e. the file is not controlled by Synapse)\n * Note that this requires an additional API call that cannot be batched, so it should be avoided in bulk contexts if possible.\n * @default false\n */\n showExternalAccessIcon?: boolean\n showAccessColumnHeader?: boolean\n /** @deprecated use showDirectDownloadColumn */\n showDownloadColumn?: boolean\n /** @deprecated use hideAddToDownloadListColumn */\n hideDownload?: boolean\n /** If true and entity is a file view or dataset, renders a column that allows the logged-in user to directly download the file, if they have permission */\n showDirectDownloadColumn?: boolean\n /** If true, the add to download list column will be hidden */\n hideAddToDownloadListColumn?: boolean\n /** Configuration to override cell renderers with e.g. a link to a portals detail page */\n columnLinks?: LabelLinkConfig\n}\n\nconst columnHelper = createColumnHelper<Row>()\n\nexport function SynapseTable(props: SynapseTableProps) {\n const { showDownloadColumn, hideDownload } = props\n const {\n rowSet,\n isLoadingNewPage,\n customColumns = DEFAULT_CUSTOM_COLUMNS,\n showAccessColumn,\n showExternalAccessIcon,\n showAccessColumnHeader,\n showDirectDownloadColumn = showDownloadColumn,\n hideAddToDownloadListColumn = hideDownload,\n columnLinks,\n } = props\n const {\n entityId,\n versionNumber,\n getCurrentQueryRequest,\n fileIdColumnName,\n fileVersionColumnName,\n } = useQueryContext()\n const queryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n const selectColumns = rowSet.headers\n\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n\n const { columnsToShowInTable, NoContentPlaceholder } =\n useQueryVisualizationContext()\n const synapseTableContext = useMemo(\n () => ({\n columnLinks,\n showExternalAccessIcon,\n }),\n [columnLinks, showExternalAccessIcon],\n )\n const { isAuthenticated } = useSynapseContext()\n\n const [isExportTableDownloadOpen, setIsExportTableDownloadOpen] =\n useState(false)\n\n const { sort, setSort } = useTableSort()\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const isShowingAccessColumn: boolean = Boolean(\n showAccessColumn &&\n entity &&\n ((isEntityViewOrDatasetOrCollection(entity) && allRowsHaveId(rowSet)) ||\n fileIdColumnName),\n )\n const rowsAreDownloadable =\n entity &&\n isAuthenticated &&\n ((isFileViewOrDataset(entity) && allRowsHaveId(rowSet)) || fileIdColumnName)\n\n const isShowingDirectDownloadColumn = Boolean(\n rowsAreDownloadable && showDirectDownloadColumn,\n )\n\n const isShowingAddToV2DownloadListColumn: boolean = Boolean(\n rowsAreDownloadable &&\n !hideAddToDownloadListColumn &&\n !isRowSelectionVisible,\n )\n const rowEntityIDColumnIndex = fileIdColumnName\n ? rowSet.headers.findIndex(col => col.name == fileIdColumnName)\n : undefined\n const rowEntityVersionColumnIndex = fileVersionColumnName\n ? rowSet.headers.findIndex(col => col.name == fileVersionColumnName)\n : undefined\n\n const columns = useMemo(\n () => [\n ...customColumns,\n rowSelectionColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n {\n ...accessColumn,\n header: showAccessColumn && showAccessColumnHeader ? 'Access' : '',\n },\n ...(selectColumns.map((selectColumn, index) => {\n return columnHelper.accessor(row => row.values[index], {\n id: selectColumn.name,\n enableSorting: isSortableColumn(selectColumn.columnType),\n enableResizing: true,\n minSize: getColumnMinSize(\n selectColumn.name,\n selectColumn.columnType as ColumnTypeEnum,\n ),\n header: TableDataColumnHeader,\n cell: TableDataCell,\n })\n }) ?? []),\n ],\n [customColumns, selectColumns, showAccessColumn, showAccessColumnHeader],\n )\n\n const prependColumnVisibility: VisibilityState = useMemo(\n () => ({\n [rowSelectionColumn.id as string]: isRowSelectionVisible,\n [addToDownloadListColumn.id as string]:\n isShowingAddToV2DownloadListColumn,\n [directDownloadColumn.id as string]: isShowingDirectDownloadColumn,\n [accessColumn.id as string]: isShowingAccessColumn,\n }),\n [\n isRowSelectionVisible,\n isShowingAccessColumn,\n isShowingAddToV2DownloadListColumn,\n isShowingDirectDownloadColumn,\n ],\n )\n\n // Transform our `columnsToShowInTable` to @tanstack/react-table's `VisibilityState`\n const columnVisibility: VisibilityState = useMemo(\n () =>\n selectColumns.reduce((prev: VisibilityState, curr) => {\n return {\n ...prev,\n [curr.name]: columnsToShowInTable.includes(curr.name),\n }\n }, prependColumnVisibility),\n [columnsToShowInTable, selectColumns, prependColumnVisibility],\n )\n\n const { dataHasBeenPrefetched } = usePrefetchResourcesInTable(rowSet)\n const renderTableDataPlaceholder = isLoadingNewPage || !dataHasBeenPrefetched\n\n const table = useReactTable({\n data: rowSet.rows,\n columns,\n defaultColumn: { minSize: 60 },\n getCoreRowModel: getCoreRowModel(),\n manualSorting: true,\n manualFiltering: true,\n onSortingChange: setSort,\n enableMultiSort: true,\n columnResizeMode: 'onChange',\n state: {\n sorting: sort,\n columnVisibility: columnVisibility,\n },\n meta: {\n rowSet,\n // make the rowEntityIDColumnIndex available to all cell renderers\n rowEntityIDColumnIndex,\n rowEntityVersionColumnIndex,\n renderPlaceholderData: renderTableDataPlaceholder,\n getWrapInExpandableTd: (cell: Cell<Row, unknown>) => {\n const selectColumn = selectColumns.find(\n cm => cm.name === cell.column.id,\n )\n return Boolean(\n selectColumn &&\n /* JSON handles its own overflow*/\n selectColumn.columnType !== ColumnTypeEnum.JSON,\n )\n },\n },\n })\n\n /**\n * Display the view\n */\n if (!rowSet) {\n return <></>\n }\n const hasResults = (rowSet.rows?.length ?? 0) > 0\n // Show the No Results UI if the current page has no rows, and this is the first page of data (offset === 0 or null/undefined).\n if (\n !hasResults &&\n (queryRequest.query.offset === 0 || queryRequest.query.offset == null)\n ) {\n return <NoContentPlaceholder />\n }\n\n return (\n <SynapseTableContext.Provider value={synapseTableContext}>\n <div>\n {isExportTableDownloadOpen && (\n <ModalDownload\n onClose={() => {\n setIsExportTableDownloadOpen(false)\n }}\n queryBundleRequest={queryRequest}\n />\n )}\n <StyledTanStackTable\n styledTableContainerProps={{\n className: 'SynapseTable',\n ['data-testid']: 'SynapseTable',\n density: 'default',\n }}\n table={table}\n fullWidth={false}\n autoColumnSizing={true}\n />\n </div>\n </SynapseTableContext.Provider>\n )\n}\n\n/**\n * If this is a view/dataset and rows have an ID, then rows represent individual objects in Synapse.\n * Presence of row IDs also indicates that the query is also necessarily not summary data, e.g. the query does\n * not include an operation like GROUP BY, DISTINCT, etc., that would cause rows to not map 1:1 to Synapse Entities\n */\nfunction allRowsHaveId(rowSet: RowSet): boolean {\n return Boolean(rowSet.rows?.every(row => !!row.rowId))\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAyCA,IAAM,KAAgD,CAAC;AAMvD,SAAgB,EACd,GACA,GACQ;CACR,IAAM,IAAY,EAAW,YAAY;CACzC,IAAI,EAAU,SAAS,MAAM,KAAK,EAAU,SAAS,aAAa,GAChE,OAAO;CAET,QAAQ,GAAR;EACE,KAAK,EAAe;EACpB,KAAK,EAAe;EACpB,KAAK,EAAe;EACpB,KAAK,EAAe;EACpB,KAAK,EAAe;EACpB,KAAK,EAAe;EACpB,KAAK,EAAe,cAClB,OAAO;EACT,KAAK,EAAe;EACpB,KAAK,EAAe,WAClB,OAAO;EACT,KAAK,EAAe;EACpB,KAAK,EAAe,aAClB,OAAO;EACT,SACE,OAAO;CACX;AACF;AA8CA,IAAM,KAAe,EAAwB;AAE7C,SAAgB,EAAa,GAA0B;CACrD,IAAM,EAAE,uBAAoB,oBAAiB,GACvC,EACJ,WACA,qBACA,mBAAgB,IAChB,qBACA,2BACA,2BACA,8BAA2B,GAC3B,iCAA8B,GAC9B,mBACE,GACE,EACJ,aACA,kBACA,2BACA,qBACA,6BACE,EAAgB,GACd,IAAe,QACb,EAAuB,GAC7B,CAAC,CAAsB,CACzB,GAEM,IAAgB,EAAO,SAEvB,EAAE,MAAM,MAAW,EAAoB,GAAU,CAAa,GAE9D,EAAE,yBAAsB,4BAC5B,EAA6B,GACzB,IAAsB,SACnB;EACL;EACA;CACF,IACA,CAAC,GAAa,CAAsB,CACtC,GACM,EAAE,wBAAoB,EAAkB,GAExC,CAAC,IAA2B,MAChC,EAAS,EAAK,GAEV,EAAE,UAAM,gBAAY,EAAa,GACjC,IAAwB,EAAa,CAAyB,GAE9D,IAAiC,GACrC,KACA,MACE,EAAkC,CAAM,KAAK,EAAc,CAAM,KACjE,KAEE,IACJ,KACA,OACE,GAAoB,CAAM,KAAK,EAAc,CAAM,KAAM,IAEvD,IAAgC,GACpC,KAAuB,IAGnB,IAA8C,GAClD,KACA,CAAC,KACD,CAAC,IAEG,KAAyB,IAC3B,EAAO,QAAQ,WAAU,MAAO,EAAI,QAAQ,CAAgB,IAC5D,KAAA,GACE,KAA8B,IAChC,EAAO,QAAQ,WAAU,MAAO,EAAI,QAAQ,CAAqB,IACjE,KAAA,GAEE,KAAU,QACR;EACJ,GAAG;EACH;EACA;EACA;EACA;GACE,GAAG;GACH,QAAQ,KAAoB,IAAyB,WAAW;EAClE;EACA,GAAI,EAAc,KAAK,GAAc,MAC5B,GAAa,UAAS,MAAO,EAAI,OAAO,IAAQ;GACrD,IAAI,EAAa;GACjB,eAAe,EAAiB,EAAa,UAAU;GACvD,gBAAgB;GAChB,SAAS,EACP,EAAa,MACb,EAAa,UACf;GACA,QAAQ;GACR,MAAM;EACR,CAAC,CACF,KAAK,CAAC;CACT,GACA;EAAC;EAAe;EAAe;EAAkB;CAAsB,CACzE,GAEM,IAA2C,SACxC;GACJ,EAAmB,KAAe;GAClC,EAAwB,KACvB;GACD,EAAqB,KAAe;GACpC,EAAa,KAAe;CAC/B,IACA;EACE;EACA;EACA;EACA;CACF,CACF,GAGM,KAAoC,QAEtC,EAAc,QAAQ,GAAuB,OACpC;EACL,GAAG;GACF,EAAK,OAAO,EAAqB,SAAS,EAAK,IAAI;CACtD,IACC,CAAuB,GAC5B;EAAC;EAAsB;EAAe;CAAuB,CAC/D,GAEM,EAAE,6BAA0B,EAA4B,CAAM,GAC9D,KAA6B,KAAoB,CAAC,GAElD,KAAQ,GAAc;EAC1B,MAAM,EAAO;EACb;EACA,eAAe,EAAE,SAAS,GAAG;EAC7B,iBAAiB,GAAgB;EACjC,eAAe;EACf,iBAAiB;EACjB,iBAAiB;EACjB,iBAAiB;EACjB,kBAAkB;EAClB,OAAO;GACL,SAAS;GACS;EACpB;EACA,MAAM;GACJ;GAEA;GACA;GACA,uBAAuB;GACvB,wBAAwB,MAA6B;IACnD,IAAM,IAAe,EAAc,MACjC,MAAM,EAAG,SAAS,EAAK,OAAO,EAChC;IACA,OAAO,GACL,KAEA,EAAa,eAAe,EAAe;GAE/C;EACF;CACF,CAAC;CAiBD,OAZK,IAMH,GAHkB,EAAO,MAAM,UAAU,KAAK,OAI7C,EAAa,MAAM,WAAW,KAAK,EAAa,MAAM,UAAU,QAE1D,kBAAC,GAAD,CAAuB,CAAA,IAI9B,kBAAC,EAAoB,UAArB;EAA8B,OAAO;YACnC,kBAAC,OAAD,EAAA,UAAA,CACG,MACC,kBAAC,GAAD;GACE,eAAe;IACb,GAA6B,EAAK;GACpC;GACA,oBAAoB;EACrB,CAAA,GAEH,kBAAC,IAAD;GACE,2BAA2B;IACzB,WAAW;IACV,eAAgB;IACjB,SAAS;GACX;GACO;GACP,WAAW;GACX,kBAAkB;EACnB,CAAA,CACE,EAAA,CAAA;CACuB,CAAA,IAjCvB,kBAAA,GAAA,CAAI,CAAA;AAmCf;AAOA,SAAS,EAAc,GAAyB;CAC9C,OAAO,EAAQ,EAAO,MAAM,OAAM,MAAO,CAAC,CAAC,EAAI,KAAK;AACtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityIdList.js","names":[],"sources":["../../../../src/components/SynapseTable/SynapseTableCell/EntityIdList.tsx"],"sourcesContent":["import { useGetEntityHeaders } from '@/synapse-queries'\nimport { Stack } from '@mui/material'\nimport { EntityLink, EntityLinkProps } from '../../EntityLink'\n\nexport type EntityIdListProps = {\n entityIdList: string[]\n} & Omit<EntityLinkProps, 'entity' | 'versionNumber'>\n\nfunction EntityIdList(props: EntityIdListProps) {\n const { entityIdList, ...rest } = props\n\n const { data: entityHeaders } = useGetEntityHeaders(\n entityIdList.map(id => ({ targetId: id })),\n {},\n )\n\n return (\n <Stack\n sx={{\n gap: 1,\n }}\n >\n {entityHeaders?.results.map(header => (\n <EntityLink key={header.id} entity={header} {...rest} />\n ))}\n </Stack>\n )\n}\n\nexport default EntityIdList\n"],"mappings":";;;;;;AAQA,SAAS,EAAa,GAA0B;CAC9C,IAAM,EAAE,iBAAc,GAAG,MAAS,GAE5B,EAAE,MAAM,MAAkB,EAC9B,EAAa,KAAI,OAAO,EAAE,UAAU,GAAI,EAAE,EAC1C,EAAE,CACH;AAED,QACE,kBAAC,GAAD;EACE,IAAI,EACF,KAAK,GACN;YAEA,GAAe,QAAQ,KAAI,MAC1B,kBAAC,GAAD;GAA4B,QAAQ;GAAQ,GAAI;GAAQ,EAAvC,EAAO,GAAgC,CACxD;EACI,CAAA"}
1
+ {"version":3,"file":"EntityIdList.js","names":[],"sources":["../../../../src/components/SynapseTable/SynapseTableCell/EntityIdList.tsx"],"sourcesContent":["import { useGetEntityHeaders } from '@/synapse-queries'\nimport { Stack } from '@mui/material'\nimport { EntityLink, EntityLinkProps } from '../../EntityLink'\n\nexport type EntityIdListProps = {\n entityIdList: string[]\n} & Omit<EntityLinkProps, 'entity' | 'versionNumber'>\n\nfunction EntityIdList(props: EntityIdListProps) {\n const { entityIdList, ...rest } = props\n\n const { data: entityHeaders } = useGetEntityHeaders(\n entityIdList.map(id => ({ targetId: id })),\n {},\n )\n\n return (\n <Stack\n sx={{\n gap: 1,\n }}\n >\n {entityHeaders?.results.map(header => (\n <EntityLink key={header.id} entity={header} {...rest} />\n ))}\n </Stack>\n )\n}\n\nexport default EntityIdList\n"],"mappings":";;;;;;AAQA,SAAS,EAAa,GAA0B;CAC9C,IAAM,EAAE,iBAAc,GAAG,MAAS,GAE5B,EAAE,MAAM,MAAkB,EAC9B,EAAa,KAAI,OAAO,EAAE,UAAU,EAAG,EAAE,GACzC,CAAC,CACH;CAEA,OACE,kBAAC,GAAD;EACE,IAAI,EACF,KAAK,EACP;YAEC,GAAe,QAAQ,KAAI,MAC1B,kBAAC,GAAD;GAA4B,QAAQ;GAAQ,GAAI;EAAO,GAAtC,EAAO,EAA+B,CACxD;CACI,CAAA;AAEX"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationIdRenderer.js","names":[],"sources":["../../../../src/components/SynapseTable/SynapseTableCell/EvaluationIdRenderer.tsx"],"sourcesContent":["import { getEvaluation } from '@/synapse-client/SynapseClient'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { useEffect, useState } from 'react'\nimport { useInView } from 'react-intersection-observer'\n\nexport type EvaluationIdRendererProps = {\n evaluationId: string\n}\n\nfunction EvaluationIdRenderer(props: EvaluationIdRendererProps) {\n const { accessToken } = useSynapseContext()\n const { evaluationId } = props\n const [evaluationName, setEvaluationName] = useState<string>()\n const { ref, inView } = useInView()\n let mounted: boolean = true\n\n useEffect(() => {\n if (mounted && inView) {\n getEvaluationQueue()\n }\n return () => {\n mounted = false\n }\n }, [evaluationId, inView])\n\n const getEvaluationQueue = () => {\n if (!evaluationId) return\n\n getEvaluation(evaluationId, accessToken)\n .then(evaluationQueue => {\n setEvaluationName(evaluationQueue.name)\n })\n .catch(e => {\n console.log(\n 'EvaluationIdListRenderer: Error getting evaluation queue names',\n e,\n )\n })\n }\n\n return <p ref={ref}>{evaluationName}</p>\n}\n\nexport default EvaluationIdRenderer\n"],"mappings":";;;;;;AASA,SAAS,EAAqB,GAAkC;CAC9D,IAAM,EAAE,mBAAgB,GAAmB,EACrC,EAAE,oBAAiB,GACnB,CAAC,GAAgB,KAAqB,GAAkB,EACxD,EAAE,QAAK,cAAW,GAAW,EAC/B,IAAmB;AAEvB,UACM,KAAW,KACb,GAAoB,QAET;AACX,MAAU;KAEX,CAAC,GAAc,EAAO,CAAC;CAE1B,IAAM,UAA2B;AAC1B,OAEL,EAAc,GAAc,EAAY,CACrC,MAAK,MAAmB;AACvB,KAAkB,EAAgB,KAAK;IACvC,CACD,OAAM,MAAK;AACV,WAAQ,IACN,kEACA,EACD;IACD;;AAGN,QAAO,kBAAC,KAAD;EAAQ;YAAM;EAAmB,CAAA"}
1
+ {"version":3,"file":"EvaluationIdRenderer.js","names":[],"sources":["../../../../src/components/SynapseTable/SynapseTableCell/EvaluationIdRenderer.tsx"],"sourcesContent":["import { getEvaluation } from '@/synapse-client/SynapseClient'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { useEffect, useState } from 'react'\nimport { useInView } from 'react-intersection-observer'\n\nexport type EvaluationIdRendererProps = {\n evaluationId: string\n}\n\nfunction EvaluationIdRenderer(props: EvaluationIdRendererProps) {\n const { accessToken } = useSynapseContext()\n const { evaluationId } = props\n const [evaluationName, setEvaluationName] = useState<string>()\n const { ref, inView } = useInView()\n let mounted: boolean = true\n\n useEffect(() => {\n if (mounted && inView) {\n getEvaluationQueue()\n }\n return () => {\n mounted = false\n }\n }, [evaluationId, inView])\n\n const getEvaluationQueue = () => {\n if (!evaluationId) return\n\n getEvaluation(evaluationId, accessToken)\n .then(evaluationQueue => {\n setEvaluationName(evaluationQueue.name)\n })\n .catch(e => {\n console.log(\n 'EvaluationIdListRenderer: Error getting evaluation queue names',\n e,\n )\n })\n }\n\n return <p ref={ref}>{evaluationName}</p>\n}\n\nexport default EvaluationIdRenderer\n"],"mappings":";;;;;;AASA,SAAS,EAAqB,GAAkC;CAC9D,IAAM,EAAE,mBAAgB,EAAkB,GACpC,EAAE,oBAAiB,GACnB,CAAC,GAAgB,KAAqB,EAAiB,GACvD,EAAE,QAAK,cAAW,EAAU,GAC9B,IAAmB;CAEvB,SACM,KAAW,KACb,EAAmB,SAER;EACX,IAAU;CACZ,IACC,CAAC,GAAc,CAAM,CAAC;CAEzB,IAAM,UAA2B;EAC1B,KAEL,EAAc,GAAc,CAAW,EACpC,MAAK,MAAmB;GACvB,EAAkB,EAAgB,IAAI;EACxC,CAAC,EACA,OAAM,MAAK;GACV,QAAQ,IACN,kEACA,CACF;EACF,CAAC;CACL;CAEA,OAAO,kBAAC,KAAD;EAAQ;YAAM;CAAkB,CAAA;AACzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComplexJSONRenderer.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/ComplexJSONRenderer.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Box, Typography } from '@mui/material'\nimport ExpandCollapseButton from '../../ExpandCollapseButton'\nimport { chromeLight, Inspector } from 'react-inspector'\n\ntype ComplexJSONRendererProps = {\n value: any\n}\n\n/**\n * Handles rendering any complex JSON value in a Synapse table cell. This generally acts as a fallback renderer if the\n * JSON data doesn't have a simple structure handled by a different renderer.\n * @param props\n * @constructor\n */\nexport function ComplexJSONRenderer(props: ComplexJSONRendererProps) {\n const { value } = props\n const [expandAll, setExpandAll] = useState(false)\n\n // @ts-expect-error - the theme prop type provided by react-inspector is wrong\n const theme: ComponentProps<typeof Inspector>['theme'] = {\n ...chromeLight,\n BASE_BACKGROUND_COLOR: 'none',\n }\n\n return (\n <>\n <Typography\n variant={'smallText1'}\n sx={{\n py: 0.5,\n color: 'grey.600',\n fontStyle: 'italic',\n cursor: 'pointer',\n }}\n onClick={() => setExpandAll(v => !v)}\n >\n {expandAll ? 'Collapse' : 'Expand'} all\n <ExpandCollapseButton\n className=\"ExpandableTableData__expandButton\"\n isExpanded={expandAll}\n />\n </Typography>\n <Box sx={{ pl: '2px' }}>\n <Inspector\n data={value}\n theme={theme}\n table={false}\n key={\n // Setting `expandLevel` to 0 doesn't trigger a re-render, so force the rerender by updating the key\n String(expandAll)\n }\n expandLevel={\n expandAll\n ? // making this number very large actually results in a performance hit, so choose a reasonably small number\n 20\n : 0\n }\n />\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;AAeA,SAAgB,EAAoB,GAAiC;CACnE,IAAM,EAAE,aAAU,GACZ,CAAC,GAAW,KAAgB,EAAS,GAAM,EAG3C,IAAmD;EACvD,GAAG;EACH,uBAAuB;EACxB;AAED,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,SAAS;EACT,IAAI;GACF,IAAI;GACJ,OAAO;GACP,WAAW;GACX,QAAQ;GACT;EACD,eAAe,GAAa,MAAK,CAAC,EAAE;YARtC;GAUG,IAAY,aAAa;GAAS;GACnC,kBAAC,GAAD;IACE,WAAU;IACV,YAAY;IACZ,CAAA;GACS;KACb,kBAAC,GAAD;EAAK,IAAI,EAAE,IAAI,OAAO;YACpB,kBAAC,GAAD;GACE,MAAM;GACC;GACP,OAAO;GAKP,aACE,IAEI,KACA;GAEN,EARE,OAAO,EAAU,CAQnB;EACE,CAAA,CACL,EAAA,CAAA"}
1
+ {"version":3,"file":"ComplexJSONRenderer.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/ComplexJSONRenderer.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Box, Typography } from '@mui/material'\nimport ExpandCollapseButton from '../../ExpandCollapseButton'\nimport { chromeLight, Inspector } from 'react-inspector'\n\ntype ComplexJSONRendererProps = {\n value: any\n}\n\n/**\n * Handles rendering any complex JSON value in a Synapse table cell. This generally acts as a fallback renderer if the\n * JSON data doesn't have a simple structure handled by a different renderer.\n * @param props\n * @constructor\n */\nexport function ComplexJSONRenderer(props: ComplexJSONRendererProps) {\n const { value } = props\n const [expandAll, setExpandAll] = useState(false)\n\n // @ts-expect-error - the theme prop type provided by react-inspector is wrong\n const theme: ComponentProps<typeof Inspector>['theme'] = {\n ...chromeLight,\n BASE_BACKGROUND_COLOR: 'none',\n }\n\n return (\n <>\n <Typography\n variant={'smallText1'}\n sx={{\n py: 0.5,\n color: 'grey.600',\n fontStyle: 'italic',\n cursor: 'pointer',\n }}\n onClick={() => setExpandAll(v => !v)}\n >\n {expandAll ? 'Collapse' : 'Expand'} all\n <ExpandCollapseButton\n className=\"ExpandableTableData__expandButton\"\n isExpanded={expandAll}\n />\n </Typography>\n <Box sx={{ pl: '2px' }}>\n <Inspector\n data={value}\n theme={theme}\n table={false}\n key={\n // Setting `expandLevel` to 0 doesn't trigger a re-render, so force the rerender by updating the key\n String(expandAll)\n }\n expandLevel={\n expandAll\n ? // making this number very large actually results in a performance hit, so choose a reasonably small number\n 20\n : 0\n }\n />\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;AAeA,SAAgB,EAAoB,GAAiC;CACnE,IAAM,EAAE,aAAU,GACZ,CAAC,GAAW,KAAgB,EAAS,EAAK,GAG1C,IAAmD;EACvD,GAAG;EACH,uBAAuB;CACzB;CAEA,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,SAAS;EACT,IAAI;GACF,IAAI;GACJ,OAAO;GACP,WAAW;GACX,QAAQ;EACV;EACA,eAAe,GAAa,MAAK,CAAC,CAAC;YARrC;GAUG,IAAY,aAAa;GAAS;GACnC,kBAAC,GAAD;IACE,WAAU;IACV,YAAY;GACb,CAAA;EACS;KACZ,kBAAC,GAAD;EAAK,IAAI,EAAE,IAAI,MAAM;YACnB,kBAAC,GAAD;GACE,MAAM;GACC;GACP,OAAO;GAKP,aACE,IAEI,KACA;EAEP,GARG,OAAO,CAAS,CAQnB;CACE,CAAA,CACL,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"JSONArrayRenderer.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/JSONArrayRenderer.tsx"],"sourcesContent":["import { JSONPrimitiveType } from './JSONRendererUtils'\nimport { useState } from 'react'\nimport { Box, Collapse, Typography } from '@mui/material'\nimport { JSONPrimitiveRenderer } from './JSONPrimitiveRenderer'\nimport ExpandCollapseButton from '../../ExpandCollapseButton'\n\ntype JSONArrayRendererProps = { value: JSONPrimitiveType[] }\n\n/**\n * Handles rendering a JSON array of \"primitive\" types in a Synapse table cell.\n * @param props\n * @constructor\n */\nexport function JSONArrayRenderer(props: JSONArrayRendererProps) {\n const { value } = props\n const [expanded, setExpanded] = useState(false)\n const showCollapseText = value.length > 1\n\n if (value.length === 0) {\n return (\n <Typography variant={'smallText1'} className=\"SRC-inactive\">\n {'Empty array'}\n </Typography>\n )\n }\n if (value.length === 1) {\n return (\n <Typography variant={'smallText1'}>\n <JSONPrimitiveRenderer value={value[0]} />\n </Typography>\n )\n }\n return (\n <>\n {showCollapseText && (\n <Typography\n variant={'smallText1'}\n sx={{ color: 'grey.600', fontStyle: 'italic', mb: 1 }}\n >\n {`${value.length.toLocaleString()} items`}\n <ExpandCollapseButton\n isExpanded={expanded}\n className=\"ExpandableTableData__expandButton\"\n onClick={() => setExpanded(!expanded)}\n />\n </Typography>\n )}\n <Collapse in={expanded}>\n {value.map((val: JSONPrimitiveType, index: number) => (\n <Box\n key={index}\n sx={{\n display: 'flex',\n gap: 0.5,\n mb: 1,\n }}\n >\n <Typography variant={'smallText1'}>\n <JSONPrimitiveRenderer value={val} />\n </Typography>\n </Box>\n ))}\n </Collapse>\n </>\n )\n}\n"],"mappings":";;;;;;AAaA,SAAgB,EAAkB,GAA+B;CAC/D,IAAM,EAAE,aAAU,GACZ,CAAC,GAAU,KAAe,EAAS,GAAM,EACzC,IAAmB,EAAM,SAAS;AAgBxC,QAdI,EAAM,WAAW,IAEjB,kBAAC,GAAD;EAAY,SAAS;EAAc,WAAU;YAC1C;EACU,CAAA,GAGb,EAAM,WAAW,IAEjB,kBAAC,GAAD;EAAY,SAAS;YACnB,kBAAC,GAAD,EAAuB,OAAO,EAAM,IAAM,CAAA;EAC/B,CAAA,GAIf,kBAAA,GAAA,EAAA,UAAA,CACG,KACC,kBAAC,GAAD;EACE,SAAS;EACT,IAAI;GAAE,OAAO;GAAY,WAAW;GAAU,IAAI;GAAG;YAFvD,CAIG,GAAG,EAAM,OAAO,gBAAgB,CAAC,SAClC,kBAAC,GAAD;GACE,YAAY;GACZ,WAAU;GACV,eAAe,EAAY,CAAC,EAAS;GACrC,CAAA,CACS;KAEf,kBAAC,GAAD;EAAU,IAAI;YACX,EAAM,KAAK,GAAwB,MAClC,kBAAC,GAAD;GAEE,IAAI;IACF,SAAS;IACT,KAAK;IACL,IAAI;IACL;aAED,kBAAC,GAAD;IAAY,SAAS;cACnB,kBAAC,GAAD,EAAuB,OAAO,GAAO,CAAA;IAC1B,CAAA;GACT,EAVC,EAUD,CACN;EACO,CAAA,CACV,EAAA,CAAA"}
1
+ {"version":3,"file":"JSONArrayRenderer.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/JSONArrayRenderer.tsx"],"sourcesContent":["import { JSONPrimitiveType } from './JSONRendererUtils'\nimport { useState } from 'react'\nimport { Box, Collapse, Typography } from '@mui/material'\nimport { JSONPrimitiveRenderer } from './JSONPrimitiveRenderer'\nimport ExpandCollapseButton from '../../ExpandCollapseButton'\n\ntype JSONArrayRendererProps = { value: JSONPrimitiveType[] }\n\n/**\n * Handles rendering a JSON array of \"primitive\" types in a Synapse table cell.\n * @param props\n * @constructor\n */\nexport function JSONArrayRenderer(props: JSONArrayRendererProps) {\n const { value } = props\n const [expanded, setExpanded] = useState(false)\n const showCollapseText = value.length > 1\n\n if (value.length === 0) {\n return (\n <Typography variant={'smallText1'} className=\"SRC-inactive\">\n {'Empty array'}\n </Typography>\n )\n }\n if (value.length === 1) {\n return (\n <Typography variant={'smallText1'}>\n <JSONPrimitiveRenderer value={value[0]} />\n </Typography>\n )\n }\n return (\n <>\n {showCollapseText && (\n <Typography\n variant={'smallText1'}\n sx={{ color: 'grey.600', fontStyle: 'italic', mb: 1 }}\n >\n {`${value.length.toLocaleString()} items`}\n <ExpandCollapseButton\n isExpanded={expanded}\n className=\"ExpandableTableData__expandButton\"\n onClick={() => setExpanded(!expanded)}\n />\n </Typography>\n )}\n <Collapse in={expanded}>\n {value.map((val: JSONPrimitiveType, index: number) => (\n <Box\n key={index}\n sx={{\n display: 'flex',\n gap: 0.5,\n mb: 1,\n }}\n >\n <Typography variant={'smallText1'}>\n <JSONPrimitiveRenderer value={val} />\n </Typography>\n </Box>\n ))}\n </Collapse>\n </>\n )\n}\n"],"mappings":";;;;;;AAaA,SAAgB,EAAkB,GAA+B;CAC/D,IAAM,EAAE,aAAU,GACZ,CAAC,GAAU,KAAe,EAAS,EAAK,GACxC,IAAmB,EAAM,SAAS;CAgBxC,OAdI,EAAM,WAAW,IAEjB,kBAAC,GAAD;EAAY,SAAS;EAAc,WAAU;YAC1C;CACS,CAAA,IAGZ,EAAM,WAAW,IAEjB,kBAAC,GAAD;EAAY,SAAS;YACnB,kBAAC,GAAD,EAAuB,OAAO,EAAM,GAAK,CAAA;CAC/B,CAAA,IAId,kBAAA,GAAA,EAAA,UAAA,CACG,KACC,kBAAC,GAAD;EACE,SAAS;EACT,IAAI;GAAE,OAAO;GAAY,WAAW;GAAU,IAAI;EAAE;YAFtD,CAIG,GAAG,EAAM,OAAO,eAAe,EAAE,SAClC,kBAAC,GAAD;GACE,YAAY;GACZ,WAAU;GACV,eAAe,EAAY,CAAC,CAAQ;EACrC,CAAA,CACS;KAEd,kBAAC,GAAD;EAAU,IAAI;YACX,EAAM,KAAK,GAAwB,MAClC,kBAAC,GAAD;GAEE,IAAI;IACF,SAAS;IACT,KAAK;IACL,IAAI;GACN;aAEA,kBAAC,GAAD;IAAY,SAAS;cACnB,kBAAC,GAAD,EAAuB,OAAO,EAAM,CAAA;GAC1B,CAAA;EACT,GAVE,CAUF,CACN;CACO,CAAA,CACV,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"JSONObjectRenderer.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/JSONObjectRenderer.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Box, Collapse, Typography } from '@mui/material'\nimport ExpandCollapseButton from '../../ExpandCollapseButton'\nimport { JSONPrimitiveType } from './JSONRendererUtils'\nimport { JSONPrimitiveRenderer } from './JSONPrimitiveRenderer'\n\nconst OBJECT_DEFAULT_NUM_KEYS_TO_SHOW = 3\ntype JSONObjectKeyValuePairProps = {\n keyName: string\n value: JSONPrimitiveType\n}\n\nfunction JSONObjectKeyValuePair(props: JSONObjectKeyValuePairProps) {\n const { keyName, value } = props\n\n return (\n <Box\n sx={{\n display: 'flex',\n mb: 1,\n }}\n >\n <Typography variant={'smallText1'}>\n <JSONPrimitiveRenderer value={keyName} />\n </Typography>\n <Typography\n variant={'smallText1'}\n sx={{ color: 'grey.600', fontStyle: 'italic', px: 0.5 }}\n >\n <JSONPrimitiveRenderer value={value} />\n </Typography>\n </Box>\n )\n}\n\ntype JSONObjectRendererProps = {\n value: Record<string, JSONPrimitiveType>\n}\n\n/**\n * Handles rendering a JSON object where all values are JSON primitives in a Synapse table cell.\n * @param props\n * @constructor\n */\nexport function JSONObjectRenderer(props: JSONObjectRendererProps) {\n const { value } = props\n const numKeys = Object.keys(value).length\n const isCollapsible = numKeys > OBJECT_DEFAULT_NUM_KEYS_TO_SHOW\n const [expanded, setExpanded] = useState(false)\n\n if (numKeys === 0) {\n return (\n <Typography variant={'smallText1'} className=\"SRC-inactive\">\n {'Empty object'}\n </Typography>\n )\n }\n\n return (\n <>\n {Object.entries(value)\n // Render the first set of items unconditionally\n .slice(0, OBJECT_DEFAULT_NUM_KEYS_TO_SHOW)\n .map(([key, val]) => (\n <JSONObjectKeyValuePair key={key} keyName={key} value={val} />\n ))}\n {/* Render the rest of the items in a Collapse */}\n {isCollapsible && (\n <>\n <Collapse in={expanded}>\n {Object.entries(value)\n .slice(OBJECT_DEFAULT_NUM_KEYS_TO_SHOW)\n .map(([key, val]) => (\n <JSONObjectKeyValuePair key={key} keyName={key} value={val} />\n ))}\n </Collapse>\n <Typography\n variant={'smallText1'}\n sx={{ mb: 0.5, color: 'grey.600', fontStyle: 'italic' }}\n >\n {expanded\n ? ''\n : `${(\n numKeys - OBJECT_DEFAULT_NUM_KEYS_TO_SHOW\n ).toLocaleString()} more`}\n <ExpandCollapseButton\n isExpanded={expanded}\n className=\"ExpandableTableData__expandButton\"\n onClick={() => setExpanded(v => !v)}\n />\n </Typography>\n </>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;AAMA,IAAM,IAAkC;AAMxC,SAAS,EAAuB,GAAoC;CAClE,IAAM,EAAE,YAAS,aAAU;AAE3B,QACE,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,IAAI;GACL;YAJH,CAME,kBAAC,GAAD;GAAY,SAAS;aACnB,kBAAC,GAAD,EAAuB,OAAO,GAAW,CAAA;GAC9B,CAAA,EACb,kBAAC,GAAD;GACE,SAAS;GACT,IAAI;IAAE,OAAO;IAAY,WAAW;IAAU,IAAI;IAAK;aAEvD,kBAAC,GAAD,EAA8B,UAAS,CAAA;GAC5B,CAAA,CACT;;;AAaV,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EAAE,aAAU,GACZ,IAAU,OAAO,KAAK,EAAM,CAAC,QAC7B,IAAgB,IAAU,GAC1B,CAAC,GAAU,KAAe,EAAS,GAAM;AAU/C,QARI,MAAY,IAEZ,kBAAC,GAAD;EAAY,SAAS;EAAc,WAAU;YAC1C;EACU,CAAA,GAKf,kBAAA,GAAA,EAAA,UAAA,CACG,OAAO,QAAQ,EAAM,CAEnB,MAAM,GAAG,EAAgC,CACzC,KAAK,CAAC,GAAK,OACV,kBAAC,GAAD;EAAkC,SAAS;EAAK,OAAO;EAAO,EAAjC,EAAiC,CAC9D,EAEH,KACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EAAU,IAAI;YACX,OAAO,QAAQ,EAAM,CACnB,MAAM,EAAgC,CACtC,KAAK,CAAC,GAAK,OACV,kBAAC,GAAD;GAAkC,SAAS;GAAK,OAAO;GAAO,EAAjC,EAAiC,CAC9D;EACK,CAAA,EACX,kBAAC,GAAD;EACE,SAAS;EACT,IAAI;GAAE,IAAI;GAAK,OAAO;GAAY,WAAW;GAAU;YAFzD,CAIG,IACG,KACA,IACE,IAAU,GACV,gBAAgB,CAAC,QACvB,kBAAC,GAAD;GACE,YAAY;GACZ,WAAU;GACV,eAAe,GAAY,MAAK,CAAC,EAAE;GACnC,CAAA,CACS;IACZ,EAAA,CAAA,CAEJ,EAAA,CAAA"}
1
+ {"version":3,"file":"JSONObjectRenderer.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/JSONObjectRenderer.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Box, Collapse, Typography } from '@mui/material'\nimport ExpandCollapseButton from '../../ExpandCollapseButton'\nimport { JSONPrimitiveType } from './JSONRendererUtils'\nimport { JSONPrimitiveRenderer } from './JSONPrimitiveRenderer'\n\nconst OBJECT_DEFAULT_NUM_KEYS_TO_SHOW = 3\ntype JSONObjectKeyValuePairProps = {\n keyName: string\n value: JSONPrimitiveType\n}\n\nfunction JSONObjectKeyValuePair(props: JSONObjectKeyValuePairProps) {\n const { keyName, value } = props\n\n return (\n <Box\n sx={{\n display: 'flex',\n mb: 1,\n }}\n >\n <Typography variant={'smallText1'}>\n <JSONPrimitiveRenderer value={keyName} />\n </Typography>\n <Typography\n variant={'smallText1'}\n sx={{ color: 'grey.600', fontStyle: 'italic', px: 0.5 }}\n >\n <JSONPrimitiveRenderer value={value} />\n </Typography>\n </Box>\n )\n}\n\ntype JSONObjectRendererProps = {\n value: Record<string, JSONPrimitiveType>\n}\n\n/**\n * Handles rendering a JSON object where all values are JSON primitives in a Synapse table cell.\n * @param props\n * @constructor\n */\nexport function JSONObjectRenderer(props: JSONObjectRendererProps) {\n const { value } = props\n const numKeys = Object.keys(value).length\n const isCollapsible = numKeys > OBJECT_DEFAULT_NUM_KEYS_TO_SHOW\n const [expanded, setExpanded] = useState(false)\n\n if (numKeys === 0) {\n return (\n <Typography variant={'smallText1'} className=\"SRC-inactive\">\n {'Empty object'}\n </Typography>\n )\n }\n\n return (\n <>\n {Object.entries(value)\n // Render the first set of items unconditionally\n .slice(0, OBJECT_DEFAULT_NUM_KEYS_TO_SHOW)\n .map(([key, val]) => (\n <JSONObjectKeyValuePair key={key} keyName={key} value={val} />\n ))}\n {/* Render the rest of the items in a Collapse */}\n {isCollapsible && (\n <>\n <Collapse in={expanded}>\n {Object.entries(value)\n .slice(OBJECT_DEFAULT_NUM_KEYS_TO_SHOW)\n .map(([key, val]) => (\n <JSONObjectKeyValuePair key={key} keyName={key} value={val} />\n ))}\n </Collapse>\n <Typography\n variant={'smallText1'}\n sx={{ mb: 0.5, color: 'grey.600', fontStyle: 'italic' }}\n >\n {expanded\n ? ''\n : `${(\n numKeys - OBJECT_DEFAULT_NUM_KEYS_TO_SHOW\n ).toLocaleString()} more`}\n <ExpandCollapseButton\n isExpanded={expanded}\n className=\"ExpandableTableData__expandButton\"\n onClick={() => setExpanded(v => !v)}\n />\n </Typography>\n </>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;AAMA,IAAM,IAAkC;AAMxC,SAAS,EAAuB,GAAoC;CAClE,IAAM,EAAE,YAAS,aAAU;CAE3B,OACE,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,IAAI;EACN;YAJF,CAME,kBAAC,GAAD;GAAY,SAAS;aACnB,kBAAC,GAAD,EAAuB,OAAO,EAAU,CAAA;EAC9B,CAAA,GACZ,kBAAC,GAAD;GACE,SAAS;GACT,IAAI;IAAE,OAAO;IAAY,WAAW;IAAU,IAAI;GAAI;aAEtD,kBAAC,GAAD,EAA8B,SAAQ,CAAA;EAC5B,CAAA,CACT;;AAET;AAWA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EAAE,aAAU,GACZ,IAAU,OAAO,KAAK,CAAK,EAAE,QAC7B,IAAgB,IAAU,GAC1B,CAAC,GAAU,KAAe,EAAS,EAAK;CAU9C,OARI,MAAY,IAEZ,kBAAC,GAAD;EAAY,SAAS;EAAc,WAAU;YAC1C;CACS,CAAA,IAKd,kBAAA,GAAA,EAAA,UAAA,CACG,OAAO,QAAQ,CAAK,EAElB,MAAM,GAAG,CAA+B,EACxC,KAAK,CAAC,GAAK,OACV,kBAAC,GAAD;EAAkC,SAAS;EAAK,OAAO;CAAM,GAAhC,CAAgC,CAC9D,GAEF,KACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EAAU,IAAI;YACX,OAAO,QAAQ,CAAK,EAClB,MAAM,CAA+B,EACrC,KAAK,CAAC,GAAK,OACV,kBAAC,GAAD;GAAkC,SAAS;GAAK,OAAO;EAAM,GAAhC,CAAgC,CAC9D;CACK,CAAA,GACV,kBAAC,GAAD;EACE,SAAS;EACT,IAAI;GAAE,IAAI;GAAK,OAAO;GAAY,WAAW;EAAS;YAFxD,CAIG,IACG,KACA,IACE,IAAU,GACV,eAAe,EAAE,QACvB,kBAAC,GAAD;GACE,YAAY;GACZ,WAAU;GACV,eAAe,GAAY,MAAK,CAAC,CAAC;EACnC,CAAA,CACS;GACZ,EAAA,CAAA,CAEJ,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"JSONPrimitiveRenderer.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/JSONPrimitiveRenderer.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { JSONPrimitiveType } from './JSONRendererUtils'\n\ntype JSONPrimitiveRendererProps = { value: JSONPrimitiveType }\n\n/**\n * Handles rendering a JSON \"primitive\" value in a Synapse table cell.\n *\n * A JSON primitive value is a string, number, boolean, or null.\n * @param props\n * @constructor\n */\nexport function JSONPrimitiveRenderer(props: JSONPrimitiveRendererProps) {\n const { value } = props\n if (value === null) {\n return (\n <Typography variant={'smallText1'} className=\"SRC-inactive\">\n {'<null value>'}\n </Typography>\n )\n }\n if (typeof value === 'number') {\n return <>{value.toLocaleString()}</>\n }\n return <>{String(value)}</>\n}\n"],"mappings":";;;AAYA,SAAgB,EAAsB,GAAmC;CACvE,IAAM,EAAE,aAAU;AAWlB,QAVI,MAAU,OAEV,kBAAC,GAAD;EAAY,SAAS;EAAc,WAAU;YAC1C;EACU,CAAA,GAGb,OAAO,KAAU,WACZ,kBAAA,GAAA,EAAA,UAAG,EAAM,gBAAgB,EAAI,CAAA,GAE/B,kBAAA,GAAA,EAAA,UAAG,OAAO,EAAM,EAAI,CAAA"}
1
+ {"version":3,"file":"JSONPrimitiveRenderer.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/JSONPrimitiveRenderer.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { JSONPrimitiveType } from './JSONRendererUtils'\n\ntype JSONPrimitiveRendererProps = { value: JSONPrimitiveType }\n\n/**\n * Handles rendering a JSON \"primitive\" value in a Synapse table cell.\n *\n * A JSON primitive value is a string, number, boolean, or null.\n * @param props\n * @constructor\n */\nexport function JSONPrimitiveRenderer(props: JSONPrimitiveRendererProps) {\n const { value } = props\n if (value === null) {\n return (\n <Typography variant={'smallText1'} className=\"SRC-inactive\">\n {'<null value>'}\n </Typography>\n )\n }\n if (typeof value === 'number') {\n return <>{value.toLocaleString()}</>\n }\n return <>{String(value)}</>\n}\n"],"mappings":";;;AAYA,SAAgB,EAAsB,GAAmC;CACvE,IAAM,EAAE,aAAU;CAWlB,OAVI,MAAU,OAEV,kBAAC,GAAD;EAAY,SAAS;EAAc,WAAU;YAC1C;CACS,CAAA,IAGZ,OAAO,KAAU,WACZ,kBAAA,GAAA,EAAA,UAAG,EAAM,eAAe,EAAI,CAAA,IAE9B,kBAAA,GAAA,EAAA,UAAG,OAAO,CAAK,EAAI,CAAA;AAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"JSONRendererUtils.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/JSONRendererUtils.ts"],"sourcesContent":["export type JSONPrimitiveType = string | number | boolean | null\n\n/**\n * returns true iff the value is a primitive that could have been parsed from JSON\n * i.e. is null, string, number, or boolean\n *\n * This is false for objects and arrays, as well as JavaScript types that are not valid JSON, like\n * undefined, NaN, Infinity, Symbol, and functions\n * @param value\n */\nexport function isJSONPrimitive(value: unknown): value is JSONPrimitiveType {\n if (value === null) {\n return true\n }\n if (typeof value === 'number') {\n return !Number.isNaN(value) && Number.isFinite(value)\n }\n return ['string', 'boolean'].includes(typeof value)\n}\n\nexport function isJSONObjectAllPrimitiveKeys(\n value: object,\n): value is Record<string, JSONPrimitiveType> {\n return Object.values(value).every(v => isJSONPrimitive(v))\n}\n"],"mappings":";AAUA,SAAgB,EAAgB,GAA4C;AAO1E,QANI,MAAU,OACL,KAEL,OAAO,KAAU,WACZ,CAAC,OAAO,MAAM,EAAM,IAAI,OAAO,SAAS,EAAM,GAEhD,CAAC,UAAU,UAAU,CAAC,SAAS,OAAO,EAAM;;AAGrD,SAAgB,EACd,GAC4C;AAC5C,QAAO,OAAO,OAAO,EAAM,CAAC,OAAM,MAAK,EAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"JSONRendererUtils.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/JSONRendererUtils.ts"],"sourcesContent":["export type JSONPrimitiveType = string | number | boolean | null\n\n/**\n * returns true iff the value is a primitive that could have been parsed from JSON\n * i.e. is null, string, number, or boolean\n *\n * This is false for objects and arrays, as well as JavaScript types that are not valid JSON, like\n * undefined, NaN, Infinity, Symbol, and functions\n * @param value\n */\nexport function isJSONPrimitive(value: unknown): value is JSONPrimitiveType {\n if (value === null) {\n return true\n }\n if (typeof value === 'number') {\n return !Number.isNaN(value) && Number.isFinite(value)\n }\n return ['string', 'boolean'].includes(typeof value)\n}\n\nexport function isJSONObjectAllPrimitiveKeys(\n value: object,\n): value is Record<string, JSONPrimitiveType> {\n return Object.values(value).every(v => isJSONPrimitive(v))\n}\n"],"mappings":";AAUA,SAAgB,EAAgB,GAA4C;CAO1E,OANI,MAAU,OACL,KAEL,OAAO,KAAU,WACZ,CAAC,OAAO,MAAM,CAAK,KAAK,OAAO,SAAS,CAAK,IAE/C,CAAC,UAAU,SAAS,EAAE,SAAS,OAAO,CAAK;AACpD;AAEA,SAAgB,EACd,GAC4C;CAC5C,OAAO,OAAO,OAAO,CAAK,EAAE,OAAM,MAAK,EAAgB,CAAC,CAAC;AAC3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"JSONTableCellRenderer.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/JSONTableCellRenderer.tsx"],"sourcesContent":["import {\n isJSONObjectAllPrimitiveKeys,\n isJSONPrimitive,\n} from './JSONRendererUtils'\nimport { JSONPrimitiveRenderer } from './JSONPrimitiveRenderer'\nimport { JSONArrayRenderer } from './JSONArrayRenderer'\nimport { JSONObjectRenderer } from './JSONObjectRenderer'\nimport { ComplexJSONRenderer } from './ComplexJSONRenderer'\nimport { Typography } from '@mui/material'\n\nexport type JSONTableCellRendererProps = {\n value: string | null\n}\n\nexport default function JSONTableCellRenderer(\n props: JSONTableCellRendererProps,\n) {\n let value: unknown = props.value\n try {\n if (typeof value === 'string') {\n value = JSON.parse(value)\n }\n } catch (e) {\n console.warn('JSONTableCellRenderer: failed to parse JSON', e)\n }\n\n if (isJSONPrimitive(value) || value === null) {\n return (\n <Typography variant=\"smallText1\">\n <JSONPrimitiveRenderer value={value} />\n </Typography>\n )\n } else if (Array.isArray(value) && value.every(isJSONPrimitive)) {\n return <JSONArrayRenderer value={value} />\n } else if (\n typeof value === 'object' &&\n // To render a simple flat table, ensure that we have no array/object values\n isJSONObjectAllPrimitiveKeys(value)\n ) {\n return <JSONObjectRenderer value={value} />\n }\n\n return <ComplexJSONRenderer value={value} />\n}\n"],"mappings":";;;;;;;;AAcA,SAAwB,EACtB,GACA;CACA,IAAI,IAAiB,EAAM;AAC3B,KAAI;AACF,EAAI,OAAO,KAAU,aACnB,IAAQ,KAAK,MAAM,EAAM;UAEpB,GAAG;AACV,UAAQ,KAAK,+CAA+C,EAAE;;AAmBhE,QAhBI,EAAgB,EAAM,IAAI,MAAU,OAEpC,kBAAC,GAAD;EAAY,SAAQ;YAClB,kBAAC,GAAD,EAA8B,UAAS,CAAA;EAC5B,CAAA,GAEN,MAAM,QAAQ,EAAM,IAAI,EAAM,MAAM,EAAgB,GACtD,kBAAC,GAAD,EAA0B,UAAS,CAAA,GAE1C,OAAO,KAAU,YAEjB,EAA6B,EAAM,GAE5B,kBAAC,GAAD,EAA2B,UAAS,CAAA,GAGtC,kBAAC,GAAD,EAA4B,UAAS,CAAA"}
1
+ {"version":3,"file":"JSONTableCellRenderer.js","names":[],"sources":["../../../../../src/components/SynapseTable/SynapseTableCell/JSON/JSONTableCellRenderer.tsx"],"sourcesContent":["import {\n isJSONObjectAllPrimitiveKeys,\n isJSONPrimitive,\n} from './JSONRendererUtils'\nimport { JSONPrimitiveRenderer } from './JSONPrimitiveRenderer'\nimport { JSONArrayRenderer } from './JSONArrayRenderer'\nimport { JSONObjectRenderer } from './JSONObjectRenderer'\nimport { ComplexJSONRenderer } from './ComplexJSONRenderer'\nimport { Typography } from '@mui/material'\n\nexport type JSONTableCellRendererProps = {\n value: string | null\n}\n\nexport default function JSONTableCellRenderer(\n props: JSONTableCellRendererProps,\n) {\n let value: unknown = props.value\n try {\n if (typeof value === 'string') {\n value = JSON.parse(value)\n }\n } catch (e) {\n console.warn('JSONTableCellRenderer: failed to parse JSON', e)\n }\n\n if (isJSONPrimitive(value) || value === null) {\n return (\n <Typography variant=\"smallText1\">\n <JSONPrimitiveRenderer value={value} />\n </Typography>\n )\n } else if (Array.isArray(value) && value.every(isJSONPrimitive)) {\n return <JSONArrayRenderer value={value} />\n } else if (\n typeof value === 'object' &&\n // To render a simple flat table, ensure that we have no array/object values\n isJSONObjectAllPrimitiveKeys(value)\n ) {\n return <JSONObjectRenderer value={value} />\n }\n\n return <ComplexJSONRenderer value={value} />\n}\n"],"mappings":";;;;;;;;AAcA,SAAwB,EACtB,GACA;CACA,IAAI,IAAiB,EAAM;CAC3B,IAAI;EACF,AAAI,OAAO,KAAU,aACnB,IAAQ,KAAK,MAAM,CAAK;CAE5B,SAAS,GAAG;EACV,QAAQ,KAAK,+CAA+C,CAAC;CAC/D;CAkBA,OAhBI,EAAgB,CAAK,KAAK,MAAU,OAEpC,kBAAC,GAAD;EAAY,SAAQ;YAClB,kBAAC,GAAD,EAA8B,SAAQ,CAAA;CAC5B,CAAA,IAEL,MAAM,QAAQ,CAAK,KAAK,EAAM,MAAM,CAAe,IACrD,kBAAC,GAAD,EAA0B,SAAQ,CAAA,IAEzC,OAAO,KAAU,YAEjB,EAA6B,CAAK,IAE3B,kBAAC,GAAD,EAA2B,SAAQ,CAAA,IAGrC,kBAAC,GAAD,EAA4B,SAAQ,CAAA;AAC7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseTableCell.js","names":[],"sources":["../../../../src/components/SynapseTable/SynapseTableCell/SynapseTableCell.tsx"],"sourcesContent":["import { CardLink } from '@/components/CardContainer/CardLink'\nimport { useGetEntity } from '@/synapse-queries'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport {\n isDataset,\n isDatasetCollection,\n isEntityView,\n} from '@/utils/functions/EntityTypeUtils'\nimport { Link, Typography } from '@mui/material'\nimport {\n ColumnModel,\n ColumnType,\n ColumnTypeEnum,\n FileHandleAssociateType,\n Row,\n SelectColumn,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { Fragment, memo } from 'react'\nimport { ColumnSpecifiedLink, MarkdownLink } from '../../CardContainerLogic'\nimport {\n EntityImage,\n MapValueToReactComponentConfig,\n} from '../../CardContainerLogic/CardContainerLogic'\nimport DirectDownload from '../../DirectDownload/DirectDownload'\nimport { EntityLink, EntityLinkProps } from '../../EntityLink'\nimport { SynapseCardLabel } from '../../GenericCard'\nimport Linkify from '../../GenericCard/Linkify'\nimport { useQueryContext } from '../../QueryContext'\nimport UserOrTeamBadge from '../../UserOrTeamBadge'\nimport { NOT_SET_DISPLAY_VALUE } from '../SynapseTableConstants'\nimport { isFileViewOrDataset } from '../SynapseTableUtils'\nimport EntityIdList from './EntityIdList'\nimport EvaluationIdRenderer from './EvaluationIdRenderer'\nimport JSONTableCellRenderer from './JSON/JSONTableCellRenderer'\nimport UserIdList from './UserIdList'\n\nexport type SynapseTableCellProps = {\n columnType: ColumnType\n columnValue: string | null\n isBold: string\n columnLinkConfig?:\n | CardLink\n | MarkdownLink\n | ColumnSpecifiedLink\n | EntityImage\n | MapValueToReactComponentConfig\n columnName: string\n selectColumns?: SelectColumn[]\n columnModels?: ColumnModel[]\n rowData: Row['values']\n rowId?: string\n rowVersionNumber?: number\n isRowEntityColumn?: boolean\n}\n\nfunction getDisplayTextFieldForEntityIdColumn(\n columnName: string,\n): EntityLinkProps['displayTextField'] {\n // SWC-7235 - For any table type, if the column is an ENTITYID and the column name is 'id', then display the ID.\n // Otherwise, display the entity name.\n if (columnName.toLowerCase() === 'id') {\n return 'id'\n }\n return 'name'\n}\n\nfunction SynapseTableCell(props: SynapseTableCellProps) {\n const {\n columnType,\n columnValue,\n isBold,\n columnLinkConfig,\n columnName,\n selectColumns,\n columnModels,\n rowData,\n rowId,\n rowVersionNumber,\n isRowEntityColumn,\n } = props\n const { entityId, versionNumber } = useQueryContext()\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n\n if (!columnValue) {\n return (\n <div className=\"SynapseTableCellContent SRC-inactive\">\n {NOT_SET_DISPLAY_VALUE}\n </div>\n )\n }\n\n if (columnLinkConfig) {\n return (\n <SynapseCardLabel\n value={columnValue}\n columnName={columnName}\n selectColumns={selectColumns}\n columnModels={columnModels}\n isHeader={false}\n labelLink={columnLinkConfig}\n rowData={rowData}\n rowId={rowId}\n />\n )\n }\n\n // PORTALS-2095: Special case. If this is an EntityView, and we are rendering the 'id' or 'name' column,\n // and we have a rowId and rowVersionNumber (should always be the case), and our entityIdToHeader map\n // contains the row Synapse ID, then auto-link.\n const tableRowRepresentsEntity =\n entity &&\n (isEntityView(entity) || isDataset(entity) || isDatasetCollection(entity))\n if (\n (tableRowRepresentsEntity || isRowEntityColumn) &&\n (columnName === 'id' || columnName === 'name') &&\n rowId &&\n rowVersionNumber\n ) {\n return (\n <div className=\"SynapseTableCellContent\">\n <EntityLink\n entity={rowId}\n versionNumber={rowVersionNumber}\n className={`${isBold}`}\n showIcon={false}\n displayTextField={columnName}\n />\n </div>\n )\n }\n\n switch (columnType) {\n case ColumnTypeEnum.ENTITYID: {\n const displayTextField = getDisplayTextFieldForEntityIdColumn(columnName)\n return (\n <div className=\"SynapseTableCellContent\">\n <EntityLink\n entity={columnValue}\n className={`${isBold}`}\n displayTextField={displayTextField}\n showIcon={false}\n />\n </div>\n )\n }\n case ColumnTypeEnum.DATE_LIST: {\n const jsonData: number[] = JSON.parse(columnValue)\n return (\n <div className=\"SynapseTableCellContent\">\n {jsonData.map((val: number, index: number) => {\n return (\n <span key={index} className={isBold}>\n {formatDate(dayjs(Number(val)))}\n {index !== jsonData.length - 1 ? ', ' : ''}\n </span>\n )\n })}{' '}\n </div>\n )\n }\n case ColumnTypeEnum.BOOLEAN_LIST: {\n const jsonData: boolean[] = JSON.parse(columnValue)\n return (\n <div className=\"SynapseTableCellContent\">\n {jsonData.map((val: boolean, index: number) => {\n return (\n <span key={index} className={isBold}>\n {val ? 'true' : 'false'}\n {index !== jsonData.length - 1 ? ', ' : ''}\n </span>\n )\n })}\n </div>\n )\n }\n case ColumnTypeEnum.FILEHANDLEID: {\n let associatedObjectId = entity!.id!\n let associatedObjectType = FileHandleAssociateType.TableEntity\n if (isFileViewOrDataset(entity) && columnName === 'dataFileHandleId') {\n associatedObjectId = String(rowId)\n associatedObjectType = FileHandleAssociateType.FileEntity\n }\n return (\n <>\n {entity && (\n <div className=\"SynapseTableCellContent\">\n <DirectDownload\n iconSvgPropOverrides={{ sx: { color: 'primary.main' } }}\n associatedObjectId={associatedObjectId}\n associatedObjectType={associatedObjectType}\n fileHandleId={columnValue}\n displayFileName={true}\n />\n </div>\n )}\n </>\n )\n }\n case ColumnTypeEnum.ENTITYID_LIST: {\n const displayTextField = getDisplayTextFieldForEntityIdColumn(columnName)\n const jsonData: string[] = JSON.parse(columnValue)\n return (\n <div className=\"SynapseTableCellContent\">\n <EntityIdList\n entityIdList={jsonData}\n displayTextField={displayTextField}\n showIcon={false}\n />\n </div>\n )\n }\n case ColumnTypeEnum.USERID_LIST: {\n const jsonData: string[] = JSON.parse(columnValue)\n return (\n <div className=\"SynapseTableCellContent\">\n <UserIdList userIds={jsonData} />\n </div>\n )\n }\n // handle other list types\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.INTEGER_LIST: {\n const jsonData: string[] = JSON.parse(columnValue)\n return (\n <div className={`SynapseTableCellContent ${isBold}`}>\n {jsonData.map((val: string, index: number) => {\n const textRenderer =\n columnType == ColumnTypeEnum.STRING_LIST ? (\n <Linkify text={val} />\n ) : (\n <>{val}</>\n )\n return (\n <Fragment key={val}>\n {textRenderer}\n {index !== jsonData.length - 1 ? ', ' : ''}\n </Fragment>\n )\n })}\n </div>\n )\n }\n case ColumnTypeEnum.EVALUATIONID: {\n return (\n <div className=\"SynapseTableCellContent\">\n <EvaluationIdRenderer evaluationId={columnValue} />\n </div>\n )\n }\n\n case ColumnTypeEnum.DATE:\n return (\n <div className={`SynapseTableCellContent ${isBold}`}>\n {formatDate(dayjs(Number(columnValue)))}\n </div>\n )\n\n case ColumnTypeEnum.USERID:\n return (\n <div className=\"SynapseTableCellContent\">\n <UserOrTeamBadge principalId={columnValue} />\n </div>\n )\n case ColumnTypeEnum.LINK:\n return (\n <div className=\"SynapseTableCellContent\">\n <Link target=\"_blank\" rel=\"noopener noreferrer\" href={columnValue}>\n {columnValue}\n </Link>\n </div>\n )\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.BOOLEAN:\n case ColumnTypeEnum.MEDIUMTEXT:\n case ColumnTypeEnum.LARGETEXT: {\n return (\n <div className=\"SynapseTableCellContent\">\n <Typography variant={'smallText1'} className={isBold}>\n <Linkify text={columnValue} />\n </Typography>\n </div>\n )\n }\n case ColumnTypeEnum.INTEGER:\n return (\n <div className=\"SynapseTableCellContent\">\n <Typography\n variant={'smallText1'}\n sx={{ textAlign: 'right' }}\n className={isBold}\n >\n {parseInt(columnValue).toLocaleString()}\n </Typography>\n </div>\n )\n case ColumnTypeEnum.DOUBLE:\n return (\n <div className=\"SynapseTableCellContent\">\n <Typography\n variant={'smallText1'}\n sx={{ textAlign: 'right' }}\n className={isBold}\n >\n {parseFloat(columnValue).toLocaleString()}\n </Typography>\n </div>\n )\n case ColumnTypeEnum.JSON:\n return (\n <div className=\"SynapseTableCellContent\">\n <JSONTableCellRenderer value={columnValue} />\n </div>\n )\n default:\n console.warn(\n `ColumnType ${columnType} has unspecified handler. Rendering the column value.`,\n )\n return (\n <div className=\"SynapseTableCellContent\">\n <Typography variant={'smallText1'} className={isBold}>\n {columnValue}\n </Typography>\n </div>\n )\n }\n // We can reach this if we don't get a mapping of IDs to entities or principals.\n // TODO: If we don't have a id:data mapping, we should render a component that can fetch the required data, rather than breaking from the case.\n return (\n <div className={`SynapseTableCellContent ${isBold}`}>{columnValue}</div>\n )\n}\n\nexport default memo(SynapseTableCell)\n"],"mappings":"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"}
1
+ {"version":3,"file":"SynapseTableCell.js","names":[],"sources":["../../../../src/components/SynapseTable/SynapseTableCell/SynapseTableCell.tsx"],"sourcesContent":["import { CardLink } from '@/components/CardContainer/CardLink'\nimport { useGetEntity } from '@/synapse-queries'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport {\n isDataset,\n isDatasetCollection,\n isEntityView,\n} from '@/utils/functions/EntityTypeUtils'\nimport { Link, Typography } from '@mui/material'\nimport {\n ColumnModel,\n ColumnType,\n ColumnTypeEnum,\n FileHandleAssociateType,\n Row,\n SelectColumn,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { Fragment, memo } from 'react'\nimport { ColumnSpecifiedLink, MarkdownLink } from '../../CardContainerLogic'\nimport {\n EntityImage,\n MapValueToReactComponentConfig,\n} from '../../CardContainerLogic/CardContainerLogic'\nimport DirectDownload from '../../DirectDownload/DirectDownload'\nimport { EntityLink, EntityLinkProps } from '../../EntityLink'\nimport { SynapseCardLabel } from '../../GenericCard'\nimport Linkify from '../../GenericCard/Linkify'\nimport { useQueryContext } from '../../QueryContext'\nimport UserOrTeamBadge from '../../UserOrTeamBadge'\nimport { NOT_SET_DISPLAY_VALUE } from '../SynapseTableConstants'\nimport { isFileViewOrDataset } from '../SynapseTableUtils'\nimport EntityIdList from './EntityIdList'\nimport EvaluationIdRenderer from './EvaluationIdRenderer'\nimport JSONTableCellRenderer from './JSON/JSONTableCellRenderer'\nimport UserIdList from './UserIdList'\n\nexport type SynapseTableCellProps = {\n columnType: ColumnType\n columnValue: string | null\n isBold: string\n columnLinkConfig?:\n | CardLink\n | MarkdownLink\n | ColumnSpecifiedLink\n | EntityImage\n | MapValueToReactComponentConfig\n columnName: string\n selectColumns?: SelectColumn[]\n columnModels?: ColumnModel[]\n rowData: Row['values']\n rowId?: string\n rowVersionNumber?: number\n isRowEntityColumn?: boolean\n}\n\nfunction getDisplayTextFieldForEntityIdColumn(\n columnName: string,\n): EntityLinkProps['displayTextField'] {\n // SWC-7235 - For any table type, if the column is an ENTITYID and the column name is 'id', then display the ID.\n // Otherwise, display the entity name.\n if (columnName.toLowerCase() === 'id') {\n return 'id'\n }\n return 'name'\n}\n\nfunction SynapseTableCell(props: SynapseTableCellProps) {\n const {\n columnType,\n columnValue,\n isBold,\n columnLinkConfig,\n columnName,\n selectColumns,\n columnModels,\n rowData,\n rowId,\n rowVersionNumber,\n isRowEntityColumn,\n } = props\n const { entityId, versionNumber } = useQueryContext()\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n\n if (!columnValue) {\n return (\n <div className=\"SynapseTableCellContent SRC-inactive\">\n {NOT_SET_DISPLAY_VALUE}\n </div>\n )\n }\n\n if (columnLinkConfig) {\n return (\n <SynapseCardLabel\n value={columnValue}\n columnName={columnName}\n selectColumns={selectColumns}\n columnModels={columnModels}\n isHeader={false}\n labelLink={columnLinkConfig}\n rowData={rowData}\n rowId={rowId}\n />\n )\n }\n\n // PORTALS-2095: Special case. If this is an EntityView, and we are rendering the 'id' or 'name' column,\n // and we have a rowId and rowVersionNumber (should always be the case), and our entityIdToHeader map\n // contains the row Synapse ID, then auto-link.\n const tableRowRepresentsEntity =\n entity &&\n (isEntityView(entity) || isDataset(entity) || isDatasetCollection(entity))\n if (\n (tableRowRepresentsEntity || isRowEntityColumn) &&\n (columnName === 'id' || columnName === 'name') &&\n rowId &&\n rowVersionNumber\n ) {\n return (\n <div className=\"SynapseTableCellContent\">\n <EntityLink\n entity={rowId}\n versionNumber={rowVersionNumber}\n className={`${isBold}`}\n showIcon={false}\n displayTextField={columnName}\n />\n </div>\n )\n }\n\n switch (columnType) {\n case ColumnTypeEnum.ENTITYID: {\n const displayTextField = getDisplayTextFieldForEntityIdColumn(columnName)\n return (\n <div className=\"SynapseTableCellContent\">\n <EntityLink\n entity={columnValue}\n className={`${isBold}`}\n displayTextField={displayTextField}\n showIcon={false}\n />\n </div>\n )\n }\n case ColumnTypeEnum.DATE_LIST: {\n const jsonData: number[] = JSON.parse(columnValue)\n return (\n <div className=\"SynapseTableCellContent\">\n {jsonData.map((val: number, index: number) => {\n return (\n <span key={index} className={isBold}>\n {formatDate(dayjs(Number(val)))}\n {index !== jsonData.length - 1 ? ', ' : ''}\n </span>\n )\n })}{' '}\n </div>\n )\n }\n case ColumnTypeEnum.BOOLEAN_LIST: {\n const jsonData: boolean[] = JSON.parse(columnValue)\n return (\n <div className=\"SynapseTableCellContent\">\n {jsonData.map((val: boolean, index: number) => {\n return (\n <span key={index} className={isBold}>\n {val ? 'true' : 'false'}\n {index !== jsonData.length - 1 ? ', ' : ''}\n </span>\n )\n })}\n </div>\n )\n }\n case ColumnTypeEnum.FILEHANDLEID: {\n let associatedObjectId = entity!.id!\n let associatedObjectType = FileHandleAssociateType.TableEntity\n if (isFileViewOrDataset(entity) && columnName === 'dataFileHandleId') {\n associatedObjectId = String(rowId)\n associatedObjectType = FileHandleAssociateType.FileEntity\n }\n return (\n <>\n {entity && (\n <div className=\"SynapseTableCellContent\">\n <DirectDownload\n iconSvgPropOverrides={{ sx: { color: 'primary.main' } }}\n associatedObjectId={associatedObjectId}\n associatedObjectType={associatedObjectType}\n fileHandleId={columnValue}\n displayFileName={true}\n />\n </div>\n )}\n </>\n )\n }\n case ColumnTypeEnum.ENTITYID_LIST: {\n const displayTextField = getDisplayTextFieldForEntityIdColumn(columnName)\n const jsonData: string[] = JSON.parse(columnValue)\n return (\n <div className=\"SynapseTableCellContent\">\n <EntityIdList\n entityIdList={jsonData}\n displayTextField={displayTextField}\n showIcon={false}\n />\n </div>\n )\n }\n case ColumnTypeEnum.USERID_LIST: {\n const jsonData: string[] = JSON.parse(columnValue)\n return (\n <div className=\"SynapseTableCellContent\">\n <UserIdList userIds={jsonData} />\n </div>\n )\n }\n // handle other list types\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.INTEGER_LIST: {\n const jsonData: string[] = JSON.parse(columnValue)\n return (\n <div className={`SynapseTableCellContent ${isBold}`}>\n {jsonData.map((val: string, index: number) => {\n const textRenderer =\n columnType == ColumnTypeEnum.STRING_LIST ? (\n <Linkify text={val} />\n ) : (\n <>{val}</>\n )\n return (\n <Fragment key={val}>\n {textRenderer}\n {index !== jsonData.length - 1 ? ', ' : ''}\n </Fragment>\n )\n })}\n </div>\n )\n }\n case ColumnTypeEnum.EVALUATIONID: {\n return (\n <div className=\"SynapseTableCellContent\">\n <EvaluationIdRenderer evaluationId={columnValue} />\n </div>\n )\n }\n\n case ColumnTypeEnum.DATE:\n return (\n <div className={`SynapseTableCellContent ${isBold}`}>\n {formatDate(dayjs(Number(columnValue)))}\n </div>\n )\n\n case ColumnTypeEnum.USERID:\n return (\n <div className=\"SynapseTableCellContent\">\n <UserOrTeamBadge principalId={columnValue} />\n </div>\n )\n case ColumnTypeEnum.LINK:\n return (\n <div className=\"SynapseTableCellContent\">\n <Link target=\"_blank\" rel=\"noopener noreferrer\" href={columnValue}>\n {columnValue}\n </Link>\n </div>\n )\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.BOOLEAN:\n case ColumnTypeEnum.MEDIUMTEXT:\n case ColumnTypeEnum.LARGETEXT: {\n return (\n <div className=\"SynapseTableCellContent\">\n <Typography variant={'smallText1'} className={isBold}>\n <Linkify text={columnValue} />\n </Typography>\n </div>\n )\n }\n case ColumnTypeEnum.INTEGER:\n return (\n <div className=\"SynapseTableCellContent\">\n <Typography\n variant={'smallText1'}\n sx={{ textAlign: 'right' }}\n className={isBold}\n >\n {parseInt(columnValue).toLocaleString()}\n </Typography>\n </div>\n )\n case ColumnTypeEnum.DOUBLE:\n return (\n <div className=\"SynapseTableCellContent\">\n <Typography\n variant={'smallText1'}\n sx={{ textAlign: 'right' }}\n className={isBold}\n >\n {parseFloat(columnValue).toLocaleString()}\n </Typography>\n </div>\n )\n case ColumnTypeEnum.JSON:\n return (\n <div className=\"SynapseTableCellContent\">\n <JSONTableCellRenderer value={columnValue} />\n </div>\n )\n default:\n console.warn(\n `ColumnType ${columnType} has unspecified handler. Rendering the column value.`,\n )\n return (\n <div className=\"SynapseTableCellContent\">\n <Typography variant={'smallText1'} className={isBold}>\n {columnValue}\n </Typography>\n </div>\n )\n }\n // We can reach this if we don't get a mapping of IDs to entities or principals.\n // TODO: If we don't have a id:data mapping, we should render a component that can fetch the required data, rather than breaking from the case.\n return (\n <div className={`SynapseTableCellContent ${isBold}`}>{columnValue}</div>\n )\n}\n\nexport default memo(SynapseTableCell)\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserIdList.js","names":[],"sources":["../../../../src/components/SynapseTable/SynapseTableCell/UserIdList.tsx"],"sourcesContent":["import UserOrTeamBadge from '../../UserOrTeamBadge'\nimport { Stack } from '@mui/material'\n\nexport type UserIdListProps = {\n userIds: string[]\n}\n\nfunction UserIdList(props: UserIdListProps) {\n const { userIds } = props\n\n return (\n <Stack\n sx={{\n gap: 1,\n }}\n >\n {userIds.map(userId => (\n <UserOrTeamBadge key={userId} principalId={userId} />\n ))}\n </Stack>\n )\n}\n\nexport default UserIdList\n"],"mappings":";;;;AAOA,SAAS,EAAW,GAAwB;CAC1C,IAAM,EAAE,eAAY;AAEpB,QACE,kBAAC,GAAD;EACE,IAAI,EACF,KAAK,GACN;YAEA,EAAQ,KAAI,MACX,kBAAC,GAAD,EAA8B,aAAa,GAAU,EAA/B,EAA+B,CACrD;EACI,CAAA"}
1
+ {"version":3,"file":"UserIdList.js","names":[],"sources":["../../../../src/components/SynapseTable/SynapseTableCell/UserIdList.tsx"],"sourcesContent":["import UserOrTeamBadge from '../../UserOrTeamBadge'\nimport { Stack } from '@mui/material'\n\nexport type UserIdListProps = {\n userIds: string[]\n}\n\nfunction UserIdList(props: UserIdListProps) {\n const { userIds } = props\n\n return (\n <Stack\n sx={{\n gap: 1,\n }}\n >\n {userIds.map(userId => (\n <UserOrTeamBadge key={userId} principalId={userId} />\n ))}\n </Stack>\n )\n}\n\nexport default UserIdList\n"],"mappings":";;;;AAOA,SAAS,EAAW,GAAwB;CAC1C,IAAM,EAAE,eAAY;CAEpB,OACE,kBAAC,GAAD;EACE,IAAI,EACF,KAAK,EACP;YAEC,EAAQ,KAAI,MACX,kBAAC,GAAD,EAA8B,aAAa,EAAS,GAA9B,CAA8B,CACrD;CACI,CAAA;AAEX"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseTableConstants.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTableConstants.ts"],"sourcesContent":["import { IconName } from '../IconSvg'\n\nexport const TOOLTIP_DELAY_SHOW = 500\nexport const SELECT_ALL = 'SELECT_ALL'\nexport const DESELECT_ALL = 'DESELECT_ALL'\nexport const NOT_SET_DISPLAY_VALUE = '\\u2013' // html dash\n// double check these icons!\nexport const ICON_STATE: IconName[] = ['sortDown', 'sortDown', 'sortUp']\n"],"mappings":";AAEA,IAAa,IAAqB,KACrB,IAAa,cACb,IAAe,gBACf,IAAwB,KAExB,IAAyB;CAAC;CAAY;CAAY;CAAS"}
1
+ {"version":3,"file":"SynapseTableConstants.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTableConstants.ts"],"sourcesContent":["import { IconName } from '../IconSvg'\n\nexport const TOOLTIP_DELAY_SHOW = 500\nexport const SELECT_ALL = 'SELECT_ALL'\nexport const DESELECT_ALL = 'DESELECT_ALL'\nexport const NOT_SET_DISPLAY_VALUE = '\\u2013' // html dash\n// double check these icons!\nexport const ICON_STATE: IconName[] = ['sortDown', 'sortDown', 'sortUp']\n"],"mappings":";AAEA,IAAa,IAAqB,KACrB,IAAa,cACb,IAAe,gBACf,IAAwB,KAExB,IAAyB;CAAC;CAAY;CAAY;AAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseTableContext.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTableContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport { LabelLinkConfig } from '../CardContainerLogic'\n\nexport type SynapseTableContextType = {\n columnLinks?: LabelLinkConfig\n /**\n * If true, the component will show enhanced UI for the case where\n * - the entity is a FileEntity, AND\n * - the caller has permission to fetch the dataFileHandle, AND\n * - the dataFileHandle is an instance of ExternalFileHandleInterface (i.e. the file is not controlled by Synapse)\n * Note that this requires an additional API call that cannot be batched, so it should be avoided in bulk contexts if possible.\n * @default false\n */\n showExternalAccessIcon?: boolean\n}\n\nexport const SynapseTableContext = createContext<\n SynapseTableContextType | undefined\n>(undefined)\n\nexport function useSynapseTableContext(): SynapseTableContextType {\n const context = useContext(SynapseTableContext)\n if (context === undefined) {\n throw new Error(\n 'useSynapseTableContext must be used within a SynapseTableContext',\n )\n }\n return context\n}\n"],"mappings":";;AAgBA,IAAa,IAAsB,EAEjC,KAAA,EAAU;AAEZ,SAAgB,IAAkD;CAChE,IAAM,IAAU,EAAW,EAAoB;AAC/C,KAAI,MAAY,KAAA,EACd,OAAU,MACR,mEACD;AAEH,QAAO"}
1
+ {"version":3,"file":"SynapseTableContext.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTableContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport { LabelLinkConfig } from '../CardContainerLogic'\n\nexport type SynapseTableContextType = {\n columnLinks?: LabelLinkConfig\n /**\n * If true, the component will show enhanced UI for the case where\n * - the entity is a FileEntity, AND\n * - the caller has permission to fetch the dataFileHandle, AND\n * - the dataFileHandle is an instance of ExternalFileHandleInterface (i.e. the file is not controlled by Synapse)\n * Note that this requires an additional API call that cannot be batched, so it should be avoided in bulk contexts if possible.\n * @default false\n */\n showExternalAccessIcon?: boolean\n}\n\nexport const SynapseTableContext = createContext<\n SynapseTableContextType | undefined\n>(undefined)\n\nexport function useSynapseTableContext(): SynapseTableContextType {\n const context = useContext(SynapseTableContext)\n if (context === undefined) {\n throw new Error(\n 'useSynapseTableContext must be used within a SynapseTableContext',\n )\n }\n return context\n}\n"],"mappings":";;AAgBA,IAAa,IAAsB,EAEjC,KAAA,CAAS;AAEX,SAAgB,IAAkD;CAChE,IAAM,IAAU,EAAW,CAAmB;CAC9C,IAAI,MAAY,KAAA,GACd,MAAU,MACR,kEACF;CAEF,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseTableRenderers.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTableRenderers.tsx"],"sourcesContent":["import { useGetEntityHeader } from '@/synapse-queries'\nimport { Checkbox } from '@mui/material'\nimport {\n ColumnTypeEnum,\n FacetColumnResult,\n FacetColumnResultValues,\n Row,\n} from '@sage-bionetworks/synapse-types'\nimport {\n CellContext,\n createColumnHelper,\n HeaderContext,\n} from '@tanstack/react-table'\nimport { useAtom, useAtomValue } from 'jotai'\nimport { isEqual } from 'lodash-es'\nimport { useCallback } from 'react'\nimport AddToDownloadListV2 from '../AddToDownloadListV2'\nimport FileEntityDirectDownload from '../DirectDownload/FileEntityDirectDownload'\nimport HasAccessV2 from '../HasAccess'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport {\n isRowSelectedAtom,\n selectedRowsAtom,\n} from '../QueryWrapper/TableRowSelectionState'\nimport { useGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport { EnumFacetFilter } from '../widgets/query-filter/EnumFacetFilter/EnumFacetFilter'\nimport EntityIDColumnCopyIcon from './EntityIDColumnCopyIcon'\nimport SynapseTableCell from './SynapseTableCell'\nimport { useSynapseTableContext } from './SynapseTableContext'\nimport { useInView } from 'react-intersection-observer'\n\n// Add a prefix to these column IDs so they don't collide with actual column names\nconst columnIdPrefix =\n 'org.sagebionetworks.web.client.SynapseTablePredefinedColumn'\n\nconst columnHelper = createColumnHelper<Row>()\n\nfunction RowSelectionCell<TValue = unknown>(props: CellContext<Row, TValue>) {\n const { row, table } = props\n const rowSet = table.options.meta?.rowSet\n\n const isRowSelected = useAtomValue(isRowSelectedAtom)\n const [selectedRows, setSelectedRows] = useAtom(selectedRowsAtom)\n\n return (\n <div>\n <Checkbox\n inputProps={{ 'aria-label': 'Select row' }}\n checked={isRowSelected(row.original, rowSet!.headers)}\n onChange={(_event, checked) => {\n const cloneSelectedRows = [...selectedRows]\n if (checked) {\n cloneSelectedRows.push(row.original)\n } else {\n const index = cloneSelectedRows.findIndex(selectedRow =>\n isEqual(selectedRow, row.original),\n )\n if (index > -1) {\n cloneSelectedRows.splice(index, 1)\n }\n }\n // update context on change\n setSelectedRows(cloneSelectedRows)\n }}\n />\n </div>\n )\n}\n\nexport const rowSelectionColumn = columnHelper.display({\n id: `${columnIdPrefix}.RowSelectionColumn`,\n enableResizing: false,\n cell: RowSelectionCell,\n maxSize: 36,\n meta: {\n textAlign: 'center',\n },\n})\n\nfunction AddToDownloadListCell<TValue = unknown>(\n props: CellContext<Row, TValue>,\n) {\n const entityId = getEntityOrRowId(props)!\n const versionNumberString = getEntityOrRowVersion(props)\n const versionNumber = versionNumberString\n ? parseInt(versionNumberString)\n : undefined\n const { data: entityHeader } = useGetEntityHeader(entityId)\n return (\n <div data-testid={'AddToDownloadListCell'}>\n {entityHeader?.type === 'org.sagebionetworks.repo.model.FileEntity' && (\n <AddToDownloadListV2\n entityId={entityId}\n entityVersionNumber={versionNumber}\n />\n )}\n </div>\n )\n}\n\nexport const addToDownloadListColumn = columnHelper.display({\n id: `${columnIdPrefix}.AddToDownloadListColumn`,\n enableResizing: false,\n cell: AddToDownloadListCell,\n maxSize: 50,\n meta: {\n textAlign: 'center',\n },\n})\n\nfunction DirectDownloadCell<TValue = unknown>(props: CellContext<Row, TValue>) {\n const entityId = getEntityOrRowId(props)!\n const versionNumber = getEntityOrRowVersion(props)\n\n return (\n <div data-testid={'DirectDownloadCell'}>\n <FileEntityDirectDownload\n entityId={entityId}\n entityVersionNumber={versionNumber}\n iconSvgPropOverrides={{ sx: { color: 'primary.main' } }}\n />\n </div>\n )\n}\n\nexport const directDownloadColumn = columnHelper.display({\n id: `${columnIdPrefix}.DirectDownload`,\n enableResizing: false,\n cell: DirectDownloadCell,\n maxSize: 50,\n meta: {\n textAlign: 'center',\n },\n})\n\n/**\n * Given the (tanstack react) Table CellContext, return the rowId of the current Synapse Table Row.\n * If a rowEntityIDColumnName was provided in the table config, then instead return the entityID found in\n * that cell of the current Row.\n */\nfunction getEntityOrRowId<TValue = unknown>(\n props: CellContext<Row, TValue>,\n): string | undefined {\n const { row, table } = props\n const rowEntityIDColumnIndex = table.options.meta?.rowEntityIDColumnIndex\n const entityId =\n rowEntityIDColumnIndex !== undefined\n ? row.original.values[rowEntityIDColumnIndex]!\n : row.original.rowId?.toString()\n return entityId\n}\n\n/**\n * Given the (tanstack react) Table CellContext, return true if the table configuration defines a row entity version column name.\n * This will be used as the entity that represents the current Row.\n * @param props\n * @returns\n */\nfunction isRowEntityColumn<TValue = unknown>(\n props: CellContext<Row, TValue>,\n): boolean {\n const { table } = props\n return table.options.meta?.rowEntityVersionColumnIndex !== undefined\n}\n\n/**\n * Given the (tanstack react) Table CellContext, return the version of the current Synapse Table Row.\n * If a rowEntityVersionColumnName was provided in the table config, then instead return the version found in\n * that cell of the current Row.\n */\nfunction getEntityOrRowVersion<TValue = unknown>(\n props: CellContext<Row, TValue>,\n): string | undefined {\n const { row, table } = props\n const rowEntityVersionColumnIndex =\n table.options.meta?.rowEntityVersionColumnIndex\n const versionNumber =\n rowEntityVersionColumnIndex !== undefined\n ? row.original.values[rowEntityVersionColumnIndex]!\n : row.original.versionNumber?.toString()\n return versionNumber\n}\n\nfunction AccessCell<TValue = unknown>(props: CellContext<Row, TValue>) {\n const { showExternalAccessIcon } = useSynapseTableContext()\n const { ref, inView } = useInView({ triggerOnce: true })\n const entityId = getEntityOrRowId(props)!\n\n // If showExternalAccessIcon is true, defer rendering until the cell is in view to limit simultaneous API calls\n const canRenderAccessIcon =\n !showExternalAccessIcon || (showExternalAccessIcon && inView)\n\n return (\n <div ref={ref} data-testid=\"AccessCell\">\n {canRenderAccessIcon && (\n <HasAccessV2\n key={entityId}\n entityId={entityId}\n showButtonText={false}\n showExternalAccessIcon={showExternalAccessIcon}\n />\n )}\n </div>\n )\n}\n\nexport const accessColumn = columnHelper.display({\n id: `${columnIdPrefix}.Access`,\n enableResizing: false,\n cell: AccessCell,\n maxSize: 50,\n meta: {\n textAlign: 'center',\n },\n})\n\nexport function TableDataColumnHeader(\n props: HeaderContext<Row, string | null>,\n) {\n const { column } = props\n const { lockedColumn } = useQueryContext()\n const { data: queryMetadata } = useGetQueryMetadata()\n const columnModels = queryMetadata?.columnModels ?? []\n const selectColumns = queryMetadata?.selectColumns ?? []\n const selectColumn = selectColumns.find(sc => sc.name === column.id)\n const columnModel = columnModels.find(cm => cm.name === column.id)\n const facets = queryMetadata?.facets ?? []\n const { getColumnDisplayName, getHelpText } = useQueryVisualizationContext()\n\n const displayColumnName = selectColumn\n ? getColumnDisplayName(selectColumn.name)\n : column.id\n const columnHelpText = selectColumn\n ? getHelpText(selectColumn.name)\n : undefined\n // we have to figure out if the current column is a facet selection\n const facetIndex: number = facets.findIndex(\n (facetColumnResult: FacetColumnResult) => {\n return (\n facetColumnResult.columnName === columnModel?.name &&\n // Exclude JSON subcolumn facets, since there may be more than one on a given column\n facetColumnResult.jsonPath == undefined\n )\n },\n )\n // the header must be included in the facets and it has to be enumerable for current rendering capabilities\n const isFacetSelection: boolean =\n facetIndex !== -1 && facets[facetIndex].facetType === 'enumeration'\n const facet = facets[facetIndex] as FacetColumnResultValues\n const isLockedColumn =\n selectColumn &&\n selectColumn.name.toLowerCase() === lockedColumn?.columnName?.toLowerCase() // used in details page to disable filter the column\n const isEntityIDColumn =\n selectColumn &&\n selectColumn.name == 'id' &&\n selectColumn.columnType == ColumnTypeEnum.ENTITYID\n\n // TODO: enableFiltering should be specified on the column, but for now it's easier to override `getCanFilter` here where we have the facet information\n props.column.getCanFilter = useCallback(\n () => Boolean(isFacetSelection && !isLockedColumn && columnModel),\n [isFacetSelection, isLockedColumn, columnModel],\n )\n\n return (\n <ColumnHeader\n {...props}\n title={displayColumnName}\n helpText={columnHelpText}\n filterControl={\n <span>\n <EnumFacetFilter\n containerAs=\"Dropdown\"\n facet={facet}\n defaultShowAllValues={true}\n />\n </span>\n }\n additionalButtons={\n <>{isEntityIDColumn && <EntityIDColumnCopyIcon size={'small'} />}</>\n }\n />\n )\n}\n\nexport function TableDataCell(props: CellContext<Row, string | null>) {\n const { cell, table } = props\n const { data: queryMetadata } = useGetQueryMetadata()\n const entityOrRowId = getEntityOrRowId(props)\n const entityOrRowVersion = getEntityOrRowVersion(props)\n const versionNumber =\n entityOrRowVersion !== undefined ? parseInt(entityOrRowVersion) : undefined\n const selectColumns = table.options.meta?.rowSet?.headers ?? []\n const selectColumn = selectColumns.find(cm => cm.name === cell.column.id)\n const columnModels = queryMetadata?.columnModels ?? []\n const { columnLinks } = useSynapseTableContext()\n if (selectColumn) {\n const columnLinkConfig = (columnLinks ?? []).find(el => {\n return el.matchColumnName === selectColumn.name\n })\n // Prefer the authoritative ColumnModel type over the SelectColumn type.\n // For regular table queries the two are always identical. For search queries,\n // SelectColumn types are fabricated as 'STRING' during the conversion from\n // SearchQueryResults, but columnModels (from the entity bundle) carry the\n // correct types (DATE, USERID, etc.) and are available once that bundle loads.\n const columnType =\n columnModels.find(cm => cm.name === selectColumn.name)?.columnType ??\n selectColumn.columnType\n const isBold = cell.column.getIsSorted() ? 'SRC-boldText' : ''\n return (\n <SynapseTableCell\n key={cell.id}\n columnType={columnType}\n columnValue={cell.getValue()}\n isBold={isBold}\n columnLinkConfig={columnLinkConfig}\n columnName={selectColumn.name}\n rowData={cell.row.original.values}\n selectColumns={selectColumns}\n columnModels={columnModels}\n rowId={entityOrRowId}\n rowVersionNumber={versionNumber}\n isRowEntityColumn={isRowEntityColumn(props)}\n />\n )\n } else return <td key={cell.id}></td>\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SynapseTableRenderers.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTableRenderers.tsx"],"sourcesContent":["import { useGetEntityHeader } from '@/synapse-queries'\nimport { Checkbox } from '@mui/material'\nimport {\n ColumnTypeEnum,\n FacetColumnResult,\n FacetColumnResultValues,\n Row,\n} from '@sage-bionetworks/synapse-types'\nimport {\n CellContext,\n createColumnHelper,\n HeaderContext,\n} from '@tanstack/react-table'\nimport { useAtom, useAtomValue } from 'jotai'\nimport { isEqual } from 'lodash-es'\nimport { useCallback } from 'react'\nimport AddToDownloadListV2 from '../AddToDownloadListV2'\nimport FileEntityDirectDownload from '../DirectDownload/FileEntityDirectDownload'\nimport HasAccessV2 from '../HasAccess'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport {\n isRowSelectedAtom,\n selectedRowsAtom,\n} from '../QueryWrapper/TableRowSelectionState'\nimport { useGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport { EnumFacetFilter } from '../widgets/query-filter/EnumFacetFilter/EnumFacetFilter'\nimport EntityIDColumnCopyIcon from './EntityIDColumnCopyIcon'\nimport SynapseTableCell from './SynapseTableCell'\nimport { useSynapseTableContext } from './SynapseTableContext'\nimport { useInView } from 'react-intersection-observer'\n\n// Add a prefix to these column IDs so they don't collide with actual column names\nconst columnIdPrefix =\n 'org.sagebionetworks.web.client.SynapseTablePredefinedColumn'\n\nconst columnHelper = createColumnHelper<Row>()\n\nfunction RowSelectionCell<TValue = unknown>(props: CellContext<Row, TValue>) {\n const { row, table } = props\n const rowSet = table.options.meta?.rowSet\n\n const isRowSelected = useAtomValue(isRowSelectedAtom)\n const [selectedRows, setSelectedRows] = useAtom(selectedRowsAtom)\n\n return (\n <div>\n <Checkbox\n inputProps={{ 'aria-label': 'Select row' }}\n checked={isRowSelected(row.original, rowSet!.headers)}\n onChange={(_event, checked) => {\n const cloneSelectedRows = [...selectedRows]\n if (checked) {\n cloneSelectedRows.push(row.original)\n } else {\n const index = cloneSelectedRows.findIndex(selectedRow =>\n isEqual(selectedRow, row.original),\n )\n if (index > -1) {\n cloneSelectedRows.splice(index, 1)\n }\n }\n // update context on change\n setSelectedRows(cloneSelectedRows)\n }}\n />\n </div>\n )\n}\n\nexport const rowSelectionColumn = columnHelper.display({\n id: `${columnIdPrefix}.RowSelectionColumn`,\n enableResizing: false,\n cell: RowSelectionCell,\n maxSize: 36,\n meta: {\n textAlign: 'center',\n },\n})\n\nfunction AddToDownloadListCell<TValue = unknown>(\n props: CellContext<Row, TValue>,\n) {\n const entityId = getEntityOrRowId(props)!\n const versionNumberString = getEntityOrRowVersion(props)\n const versionNumber = versionNumberString\n ? parseInt(versionNumberString)\n : undefined\n const { data: entityHeader } = useGetEntityHeader(entityId)\n return (\n <div data-testid={'AddToDownloadListCell'}>\n {entityHeader?.type === 'org.sagebionetworks.repo.model.FileEntity' && (\n <AddToDownloadListV2\n entityId={entityId}\n entityVersionNumber={versionNumber}\n />\n )}\n </div>\n )\n}\n\nexport const addToDownloadListColumn = columnHelper.display({\n id: `${columnIdPrefix}.AddToDownloadListColumn`,\n enableResizing: false,\n cell: AddToDownloadListCell,\n maxSize: 50,\n meta: {\n textAlign: 'center',\n },\n})\n\nfunction DirectDownloadCell<TValue = unknown>(props: CellContext<Row, TValue>) {\n const entityId = getEntityOrRowId(props)!\n const versionNumber = getEntityOrRowVersion(props)\n\n return (\n <div data-testid={'DirectDownloadCell'}>\n <FileEntityDirectDownload\n entityId={entityId}\n entityVersionNumber={versionNumber}\n iconSvgPropOverrides={{ sx: { color: 'primary.main' } }}\n />\n </div>\n )\n}\n\nexport const directDownloadColumn = columnHelper.display({\n id: `${columnIdPrefix}.DirectDownload`,\n enableResizing: false,\n cell: DirectDownloadCell,\n maxSize: 50,\n meta: {\n textAlign: 'center',\n },\n})\n\n/**\n * Given the (tanstack react) Table CellContext, return the rowId of the current Synapse Table Row.\n * If a rowEntityIDColumnName was provided in the table config, then instead return the entityID found in\n * that cell of the current Row.\n */\nfunction getEntityOrRowId<TValue = unknown>(\n props: CellContext<Row, TValue>,\n): string | undefined {\n const { row, table } = props\n const rowEntityIDColumnIndex = table.options.meta?.rowEntityIDColumnIndex\n const entityId =\n rowEntityIDColumnIndex !== undefined\n ? row.original.values[rowEntityIDColumnIndex]!\n : row.original.rowId?.toString()\n return entityId\n}\n\n/**\n * Given the (tanstack react) Table CellContext, return true if the table configuration defines a row entity version column name.\n * This will be used as the entity that represents the current Row.\n * @param props\n * @returns\n */\nfunction isRowEntityColumn<TValue = unknown>(\n props: CellContext<Row, TValue>,\n): boolean {\n const { table } = props\n return table.options.meta?.rowEntityVersionColumnIndex !== undefined\n}\n\n/**\n * Given the (tanstack react) Table CellContext, return the version of the current Synapse Table Row.\n * If a rowEntityVersionColumnName was provided in the table config, then instead return the version found in\n * that cell of the current Row.\n */\nfunction getEntityOrRowVersion<TValue = unknown>(\n props: CellContext<Row, TValue>,\n): string | undefined {\n const { row, table } = props\n const rowEntityVersionColumnIndex =\n table.options.meta?.rowEntityVersionColumnIndex\n const versionNumber =\n rowEntityVersionColumnIndex !== undefined\n ? row.original.values[rowEntityVersionColumnIndex]!\n : row.original.versionNumber?.toString()\n return versionNumber\n}\n\nfunction AccessCell<TValue = unknown>(props: CellContext<Row, TValue>) {\n const { showExternalAccessIcon } = useSynapseTableContext()\n const { ref, inView } = useInView({ triggerOnce: true })\n const entityId = getEntityOrRowId(props)!\n\n // If showExternalAccessIcon is true, defer rendering until the cell is in view to limit simultaneous API calls\n const canRenderAccessIcon =\n !showExternalAccessIcon || (showExternalAccessIcon && inView)\n\n return (\n <div ref={ref} data-testid=\"AccessCell\">\n {canRenderAccessIcon && (\n <HasAccessV2\n key={entityId}\n entityId={entityId}\n showButtonText={false}\n showExternalAccessIcon={showExternalAccessIcon}\n />\n )}\n </div>\n )\n}\n\nexport const accessColumn = columnHelper.display({\n id: `${columnIdPrefix}.Access`,\n enableResizing: false,\n cell: AccessCell,\n maxSize: 50,\n meta: {\n textAlign: 'center',\n },\n})\n\nexport function TableDataColumnHeader(\n props: HeaderContext<Row, string | null>,\n) {\n const { column } = props\n const { lockedColumn } = useQueryContext()\n const { data: queryMetadata } = useGetQueryMetadata()\n const columnModels = queryMetadata?.columnModels ?? []\n const selectColumns = queryMetadata?.selectColumns ?? []\n const selectColumn = selectColumns.find(sc => sc.name === column.id)\n const columnModel = columnModels.find(cm => cm.name === column.id)\n const facets = queryMetadata?.facets ?? []\n const { getColumnDisplayName, getHelpText } = useQueryVisualizationContext()\n\n const displayColumnName = selectColumn\n ? getColumnDisplayName(selectColumn.name)\n : column.id\n const columnHelpText = selectColumn\n ? getHelpText(selectColumn.name)\n : undefined\n // we have to figure out if the current column is a facet selection\n const facetIndex: number = facets.findIndex(\n (facetColumnResult: FacetColumnResult) => {\n return (\n facetColumnResult.columnName === columnModel?.name &&\n // Exclude JSON subcolumn facets, since there may be more than one on a given column\n facetColumnResult.jsonPath == undefined\n )\n },\n )\n // the header must be included in the facets and it has to be enumerable for current rendering capabilities\n const isFacetSelection: boolean =\n facetIndex !== -1 && facets[facetIndex].facetType === 'enumeration'\n const facet = facets[facetIndex] as FacetColumnResultValues\n const isLockedColumn =\n selectColumn &&\n selectColumn.name.toLowerCase() === lockedColumn?.columnName?.toLowerCase() // used in details page to disable filter the column\n const isEntityIDColumn =\n selectColumn &&\n selectColumn.name == 'id' &&\n selectColumn.columnType == ColumnTypeEnum.ENTITYID\n\n // TODO: enableFiltering should be specified on the column, but for now it's easier to override `getCanFilter` here where we have the facet information\n props.column.getCanFilter = useCallback(\n () => Boolean(isFacetSelection && !isLockedColumn && columnModel),\n [isFacetSelection, isLockedColumn, columnModel],\n )\n\n return (\n <ColumnHeader\n {...props}\n title={displayColumnName}\n helpText={columnHelpText}\n filterControl={\n <span>\n <EnumFacetFilter\n containerAs=\"Dropdown\"\n facet={facet}\n defaultShowAllValues={true}\n />\n </span>\n }\n additionalButtons={\n <>{isEntityIDColumn && <EntityIDColumnCopyIcon size={'small'} />}</>\n }\n />\n )\n}\n\nexport function TableDataCell(props: CellContext<Row, string | null>) {\n const { cell, table } = props\n const { data: queryMetadata } = useGetQueryMetadata()\n const entityOrRowId = getEntityOrRowId(props)\n const entityOrRowVersion = getEntityOrRowVersion(props)\n const versionNumber =\n entityOrRowVersion !== undefined ? parseInt(entityOrRowVersion) : undefined\n const selectColumns = table.options.meta?.rowSet?.headers ?? []\n const selectColumn = selectColumns.find(cm => cm.name === cell.column.id)\n const columnModels = queryMetadata?.columnModels ?? []\n const { columnLinks } = useSynapseTableContext()\n if (selectColumn) {\n const columnLinkConfig = (columnLinks ?? []).find(el => {\n return el.matchColumnName === selectColumn.name\n })\n // Prefer the authoritative ColumnModel type over the SelectColumn type.\n // For regular table queries the two are always identical. For search queries,\n // SelectColumn types are fabricated as 'STRING' during the conversion from\n // SearchQueryResults, but columnModels (from the entity bundle) carry the\n // correct types (DATE, USERID, etc.) and are available once that bundle loads.\n const columnType =\n columnModels.find(cm => cm.name === selectColumn.name)?.columnType ??\n selectColumn.columnType\n const isBold = cell.column.getIsSorted() ? 'SRC-boldText' : ''\n return (\n <SynapseTableCell\n key={cell.id}\n columnType={columnType}\n columnValue={cell.getValue()}\n isBold={isBold}\n columnLinkConfig={columnLinkConfig}\n columnName={selectColumn.name}\n rowData={cell.row.original.values}\n selectColumns={selectColumns}\n columnModels={columnModels}\n rowId={entityOrRowId}\n rowVersionNumber={versionNumber}\n isRowEntityColumn={isRowEntityColumn(props)}\n />\n )\n } else return <td key={cell.id}></td>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,IAAM,IACJ,+DAEI,IAAe,EAAwB;AAE7C,SAAS,EAAmC,GAAiC;CAC3E,IAAM,EAAE,QAAK,aAAU,GACjB,IAAS,EAAM,QAAQ,MAAM,QAE7B,IAAgB,EAAa,CAAiB,GAC9C,CAAC,GAAc,KAAmB,EAAQ,CAAgB;CAEhE,OACE,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;EACE,YAAY,EAAE,cAAc,aAAa;EACzC,SAAS,EAAc,EAAI,UAAU,EAAQ,OAAO;EACpD,WAAW,GAAQ,MAAY;GAC7B,IAAM,IAAoB,CAAC,GAAG,CAAY;GAC1C,IAAI,GACF,EAAkB,KAAK,EAAI,QAAQ;QAC9B;IACL,IAAM,IAAQ,EAAkB,WAAU,MACxC,EAAQ,GAAa,EAAI,QAAQ,CACnC;IACA,AAAI,IAAQ,MACV,EAAkB,OAAO,GAAO,CAAC;GAErC;GAEA,EAAgB,CAAiB;EACnC;CACD,CAAA,EACE,CAAA;AAET;AAEA,IAAa,IAAqB,EAAa,QAAQ;CACrD,IAAI,GAAG,EAAe;CACtB,gBAAgB;CAChB,MAAM;CACN,SAAS;CACT,MAAM,EACJ,WAAW,SACb;AACF,CAAC;AAED,SAAS,EACP,GACA;CACA,IAAM,IAAW,EAAiB,CAAK,GACjC,IAAsB,EAAsB,CAAK,GACjD,IAAgB,IAClB,SAAS,CAAmB,IAC5B,KAAA,GACE,EAAE,MAAM,MAAiB,EAAmB,CAAQ;CAC1D,OACE,kBAAC,OAAD;EAAK,eAAa;YACf,GAAc,SAAS,+CACtB,kBAAC,GAAD;GACY;GACV,qBAAqB;EACtB,CAAA;CAEA,CAAA;AAET;AAEA,IAAa,IAA0B,EAAa,QAAQ;CAC1D,IAAI,GAAG,EAAe;CACtB,gBAAgB;CAChB,MAAM;CACN,SAAS;CACT,MAAM,EACJ,WAAW,SACb;AACF,CAAC;AAED,SAAS,EAAqC,GAAiC;CAI7E,OACE,kBAAC,OAAD;EAAK,eAAa;YAChB,kBAAC,GAAD;GACY,UANC,EAAiB,CAMlB;GACV,qBANgB,EAAsB,CAMjB;GACrB,sBAAsB,EAAE,IAAI,EAAE,OAAO,eAAe,EAAE;EACvD,CAAA;CACE,CAAA;AAET;AAEA,IAAa,IAAuB,EAAa,QAAQ;CACvD,IAAI,GAAG,EAAe;CACtB,gBAAgB;CAChB,MAAM;CACN,SAAS;CACT,MAAM,EACJ,WAAW,SACb;AACF,CAAC;AAOD,SAAS,EACP,GACoB;CACpB,IAAM,EAAE,QAAK,aAAU,GACjB,IAAyB,EAAM,QAAQ,MAAM;CAKnD,OAHE,MAA2B,KAAA,IAEvB,EAAI,SAAS,OAAO,SAAS,IAD7B,EAAI,SAAS,OAAO;AAG5B;AAQA,SAAS,EACP,GACS;CACT,IAAM,EAAE,aAAU;CAClB,OAAO,EAAM,QAAQ,MAAM,gCAAgC,KAAA;AAC7D;AAOA,SAAS,EACP,GACoB;CACpB,IAAM,EAAE,QAAK,aAAU,GACjB,IACJ,EAAM,QAAQ,MAAM;CAKtB,OAHE,MAAgC,KAAA,IAE5B,EAAI,SAAS,eAAe,SAAS,IADrC,EAAI,SAAS,OAAO;AAG5B;AAEA,SAAS,EAA6B,GAAiC;CACrE,IAAM,EAAE,8BAA2B,EAAuB,GACpD,EAAE,QAAK,cAAW,EAAU,EAAE,aAAa,GAAK,CAAC,GACjD,IAAW,EAAiB,CAAK;CAMvC,OACE,kBAAC,OAAD;EAAU;EAAK,eAAY;aAH3B,CAAC,KAA2B,KAA0B,MAKlD,kBAAC,GAAD;GAEY;GACV,gBAAgB;GACQ;EACzB,GAJM,CAIN;CAEA,CAAA;AAET;AAEA,IAAa,IAAe,EAAa,QAAQ;CAC/C,IAAI,GAAG,EAAe;CACtB,gBAAgB;CAChB,MAAM;CACN,SAAS;CACT,MAAM,EACJ,WAAW,SACb;AACF,CAAC;AAED,SAAgB,EACd,GACA;CACA,IAAM,EAAE,cAAW,GACb,EAAE,oBAAiB,EAAgB,GACnC,EAAE,MAAM,MAAkB,EAAoB,GAC9C,IAAe,GAAe,gBAAgB,CAAC,GAE/C,KADgB,GAAe,iBAAiB,CAAC,GACpB,MAAK,MAAM,EAAG,SAAS,EAAO,EAAE,GAC7D,IAAc,EAAa,MAAK,MAAM,EAAG,SAAS,EAAO,EAAE,GAC3D,IAAS,GAAe,UAAU,CAAC,GACnC,EAAE,yBAAsB,mBAAgB,EAA6B,GAErE,IAAoB,IACtB,EAAqB,EAAa,IAAI,IACtC,EAAO,IACL,IAAiB,IACnB,EAAY,EAAa,IAAI,IAC7B,KAAA,GAEE,IAAqB,EAAO,WAC/B,MAEG,EAAkB,eAAe,GAAa,QAE9C,EAAkB,YAAY,IAGpC,GAEM,IACJ,MAAe,MAAM,EAAO,GAAY,cAAc,eAClD,IAAQ,EAAO,IACf,IACJ,KACA,EAAa,KAAK,YAAY,MAAM,GAAc,YAAY,YAAY,GACtE,IACJ,KACA,EAAa,QAAQ,QACrB,EAAa,cAAc,EAAe;CAQ5C,OALA,EAAM,OAAO,eAAe,QACpB,GAAQ,KAAoB,CAAC,KAAkB,IACrD;EAAC;EAAkB;EAAgB;CAAW,CAChD,GAGE,kBAAC,GAAD;EACE,GAAI;EACJ,OAAO;EACP,UAAU;EACV,eACE,kBAAC,QAAD,EAAA,UACE,kBAAC,GAAD;GACE,aAAY;GACL;GACP,sBAAsB;EACvB,CAAA,EACG,CAAA;EAER,mBACE,kBAAA,GAAA,EAAA,UAAG,KAAoB,kBAAC,GAAD,EAAwB,MAAM,QAAU,CAAA,EAAI,CAAA;CAEtE,CAAA;AAEL;AAEA,SAAgB,EAAc,GAAwC;CACpE,IAAM,EAAE,SAAM,aAAU,GAClB,EAAE,MAAM,MAAkB,EAAoB,GAC9C,IAAgB,EAAiB,CAAK,GACtC,IAAqB,EAAsB,CAAK,GAChD,IACJ,MAAuB,KAAA,IAA2C,KAAA,IAA/B,SAAS,CAAkB,GAC1D,IAAgB,EAAM,QAAQ,MAAM,QAAQ,WAAW,CAAC,GACxD,IAAe,EAAc,MAAK,MAAM,EAAG,SAAS,EAAK,OAAO,EAAE,GAClE,IAAe,GAAe,gBAAgB,CAAC,GAC/C,EAAE,mBAAgB,EAAuB;CAC/C,IAAI,GAAc;EAChB,IAAM,KAAoB,KAAe,CAAC,GAAG,MAAK,MACzC,EAAG,oBAAoB,EAAa,IAC5C,GAMK,IACJ,EAAa,MAAK,MAAM,EAAG,SAAS,EAAa,IAAI,GAAG,cACxD,EAAa,YACT,IAAS,EAAK,OAAO,YAAY,IAAI,iBAAiB;EAC5D,OACE,kBAAC,GAAD;GAEc;GACZ,aAAa,EAAK,SAAS;GACnB;GACU;GAClB,YAAY,EAAa;GACzB,SAAS,EAAK,IAAI,SAAS;GACZ;GACD;GACd,OAAO;GACP,kBAAkB;GAClB,mBAAmB,EAAkB,CAAK;EAC3C,GAZM,EAAK,EAYX;CAEL,OAAO,OAAO,kBAAC,MAAD,CAAsB,GAAb,EAAK,EAAQ;AACtC"}