synapse-react-client 4.0.19 → 4.0.21

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 (1619) hide show
  1. package/dist/SWC.index.d.ts +1 -1
  2. package/dist/SWC.index.js +1 -1
  3. package/dist/SWC.index.js.map +1 -1
  4. package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
  5. package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
  6. package/dist/assets/DefaultColorfulPortalCardBackground.js.map +1 -1
  7. package/dist/assets/GoogleIcon.js.map +1 -1
  8. package/dist/assets/GoogleIcon24.js.map +1 -1
  9. package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
  10. package/dist/assets/homepage/BlinkingLiveIcon.js.map +1 -1
  11. package/dist/assets/homepage/aacr.js.map +1 -1
  12. package/dist/assets/homepage/cri.js.map +1 -1
  13. package/dist/assets/homepage/ctf.js.map +1 -1
  14. package/dist/assets/homepage/egress.js.map +1 -1
  15. package/dist/assets/homepage/facebook.js.map +1 -1
  16. package/dist/assets/homepage/fisma.js.map +1 -1
  17. package/dist/assets/homepage/gff.js.map +1 -1
  18. package/dist/assets/homepage/github.js.map +1 -1
  19. package/dist/assets/homepage/gray.js.map +1 -1
  20. package/dist/assets/homepage/hipaa-compliant.js.map +1 -1
  21. package/dist/assets/homepage/instagram.js.map +1 -1
  22. package/dist/assets/homepage/linkedin.js.map +1 -1
  23. package/dist/assets/homepage/ml-commons.js.map +1 -1
  24. package/dist/assets/homepage/nih-aging.js.map +1 -1
  25. package/dist/assets/homepage/nih-heart.js.map +1 -1
  26. package/dist/assets/homepage/nih-nci.js.map +1 -1
  27. package/dist/assets/homepage/nih-nimh.js.map +1 -1
  28. package/dist/assets/homepage/ntap.js.map +1 -1
  29. package/dist/assets/homepage/plan-item.js.map +1 -1
  30. package/dist/assets/homepage/powered-by-synapse-feature.js.map +1 -1
  31. package/dist/assets/homepage/precision-governance-feature.js.map +1 -1
  32. package/dist/assets/homepage/python.js.map +1 -1
  33. package/dist/assets/homepage/r.js.map +1 -1
  34. package/dist/assets/homepage/research-credit-feature.js.map +1 -1
  35. package/dist/assets/homepage/seamless-integration-feature.js.map +1 -1
  36. package/dist/assets/homepage/sloan.js.map +1 -1
  37. package/dist/assets/homepage/twitter.js.map +1 -1
  38. package/dist/assets/homepage/users.js.map +1 -1
  39. package/dist/assets/homepage/youtube.js.map +1 -1
  40. package/dist/assets/icons/AccessDataAnywhere.js.map +1 -1
  41. package/dist/assets/icons/AccessPending.js.map +1 -1
  42. package/dist/assets/icons/AccessPendingCloud.js.map +1 -1
  43. package/dist/assets/icons/AddAd.js.map +1 -1
  44. package/dist/assets/icons/AddToList.js.map +1 -1
  45. package/dist/assets/icons/Alert.js.map +1 -1
  46. package/dist/assets/icons/Arrow.js.map +1 -1
  47. package/dist/assets/icons/AwardScroll.js.map +1 -1
  48. package/dist/assets/icons/Baseline.js.map +1 -1
  49. package/dist/assets/icons/Cavatica.js.map +1 -1
  50. package/dist/assets/icons/CertifiedUser.js.map +1 -1
  51. package/dist/assets/icons/Challenge.js.map +1 -1
  52. package/dist/assets/icons/Checkbox/Checked.js.map +1 -1
  53. package/dist/assets/icons/Checkbox/Checked2.js.map +1 -1
  54. package/dist/assets/icons/Checkbox/Indeterminate.js.map +1 -1
  55. package/dist/assets/icons/Checkbox/Indeterminate2.js.map +1 -1
  56. package/dist/assets/icons/Checkbox/Unchecked.js.map +1 -1
  57. package/dist/assets/icons/Checkbox/Unchecked2.js.map +1 -1
  58. package/dist/assets/icons/ClappingHands.js.map +1 -1
  59. package/dist/assets/icons/CloudWarning.js.map +1 -1
  60. package/dist/assets/icons/CommunicateFindings.js.map +1 -1
  61. package/dist/assets/icons/CreateVersion.js.map +1 -1
  62. package/dist/assets/icons/DNA_Two.js.map +1 -1
  63. package/dist/assets/icons/Data2.js.map +1 -1
  64. package/dist/assets/icons/DoubleQuotes.js.map +1 -1
  65. package/dist/assets/icons/EmailAddressAdornment.js.map +1 -1
  66. package/dist/assets/icons/FileWithShield.js.map +1 -1
  67. package/dist/assets/icons/FileWithShield2.js.map +1 -1
  68. package/dist/assets/icons/FrontHand.js.map +1 -1
  69. package/dist/assets/icons/HandWithMoney.js.map +1 -1
  70. package/dist/assets/icons/IconCopy.js.map +1 -1
  71. package/dist/assets/icons/IconMinus.js.map +1 -1
  72. package/dist/assets/icons/IconPlus.js.map +1 -1
  73. package/dist/assets/icons/Java.js.map +1 -1
  74. package/dist/assets/icons/MintDoi.js.map +1 -1
  75. package/dist/assets/icons/MultiFile.js.map +1 -1
  76. package/dist/assets/icons/MultiFile2.js.map +1 -1
  77. package/dist/assets/icons/NoData.js.map +1 -1
  78. package/dist/assets/icons/NoSearchResults.js.map +1 -1
  79. package/dist/assets/icons/ORCIDIcon.js.map +1 -1
  80. package/dist/assets/icons/OpenBook.js.map +1 -1
  81. package/dist/assets/icons/Podium.js.map +1 -1
  82. package/dist/assets/icons/Python.js.map +1 -1
  83. package/dist/assets/icons/QueryStructuredData.js.map +1 -1
  84. package/dist/assets/icons/RLogo.js.map +1 -1
  85. package/dist/assets/icons/RecordProvenance.js.map +1 -1
  86. package/dist/assets/icons/RosetteRibbon.js.map +1 -1
  87. package/dist/assets/icons/SageFullLogo.js.map +1 -1
  88. package/dist/assets/icons/SearchImage.js.map +1 -1
  89. package/dist/assets/icons/ShareYourResearch.js.map +1 -1
  90. package/dist/assets/icons/Sort.js.map +1 -1
  91. package/dist/assets/icons/StarTrophy.js.map +1 -1
  92. package/dist/assets/icons/SynapseFullLogo.js.map +1 -1
  93. package/dist/assets/icons/SynapseIconWhite.js.map +1 -1
  94. package/dist/assets/icons/SynapseLogoName.js.map +1 -1
  95. package/dist/assets/icons/TasksIcon.js.map +1 -1
  96. package/dist/assets/icons/Terminal.js.map +1 -1
  97. package/dist/assets/icons/ThreeStars.js.map +1 -1
  98. package/dist/assets/icons/UnpackagableFile.js.map +1 -1
  99. package/dist/assets/icons/UnpackagableFile2.js.map +1 -1
  100. package/dist/assets/icons/ValidatedProfile.js.map +1 -1
  101. package/dist/assets/icons/account-certified.js.map +1 -1
  102. package/dist/assets/icons/account-enabled-mfa.js.map +1 -1
  103. package/dist/assets/icons/account-validated.js.map +1 -1
  104. package/dist/assets/icons/bioChemicalPhysical.js.map +1 -1
  105. package/dist/assets/icons/chart2.js.map +1 -1
  106. package/dist/assets/icons/columns.js.map +1 -1
  107. package/dist/assets/icons/columnsDarkTheme.js.map +1 -1
  108. package/dist/assets/icons/computationalTool.js.map +1 -1
  109. package/dist/assets/icons/dataReuse.js.map +1 -1
  110. package/dist/assets/icons/emailAddressAdornment2.js.map +1 -1
  111. package/dist/assets/icons/emailWithNotification.js.map +1 -1
  112. package/dist/assets/icons/error_page/maintenance.js.map +1 -1
  113. package/dist/assets/icons/error_page/no-access.js.map +1 -1
  114. package/dist/assets/icons/error_page/unavailable.js.map +1 -1
  115. package/dist/assets/icons/file.js.map +1 -1
  116. package/dist/assets/icons/inSilicoModel.js.map +1 -1
  117. package/dist/assets/icons/institution.js.map +1 -1
  118. package/dist/assets/icons/json-form-tool-no-submissions.js.map +1 -1
  119. package/dist/assets/icons/modelSystem.js.map +1 -1
  120. package/dist/assets/icons/mouse.js.map +1 -1
  121. package/dist/assets/icons/organizations.js.map +1 -1
  122. package/dist/assets/icons/person.js.map +1 -1
  123. package/dist/assets/icons/spatialProfiling.js.map +1 -1
  124. package/dist/assets/icons/standardDataModel.js.map +1 -1
  125. package/dist/assets/icons/study-active.js.map +1 -1
  126. package/dist/assets/icons/study-complete.js.map +1 -1
  127. package/dist/assets/icons/subscribe_plus.js.map +1 -1
  128. package/dist/assets/icons/synapse-logo.js.map +1 -1
  129. package/dist/assets/icons/terms/CheckIcon.js.map +1 -1
  130. package/dist/assets/icons/translational.js.map +1 -1
  131. package/dist/assets/icons/tree_horizontal.js.map +1 -1
  132. package/dist/assets/illustrations/acknowledgement_statements_illustration.js.map +1 -1
  133. package/dist/assets/illustrations/challenges_illustration.js.map +1 -1
  134. package/dist/assets/illustrations/cohort_builder_illustration.js.map +1 -1
  135. package/dist/assets/illustrations/data_access_management_illustration.js.map +1 -1
  136. package/dist/assets/illustrations/datasets_illustration.js.map +1 -1
  137. package/dist/assets/illustrations/diagonalLinePattern.js.map +1 -1
  138. package/dist/assets/illustrations/discussions_illustration.js.map +1 -1
  139. package/dist/assets/illustrations/docker_illustration.js.map +1 -1
  140. package/dist/assets/illustrations/donation_illustration.js.map +1 -1
  141. package/dist/assets/illustrations/favorites_illustration.js.map +1 -1
  142. package/dist/assets/illustrations/files_illustration.js.map +1 -1
  143. package/dist/assets/illustrations/following_illustration.js.map +1 -1
  144. package/dist/assets/illustrations/index.js.map +1 -1
  145. package/dist/assets/illustrations/left_dot_blob_dark_illustration.js.map +1 -1
  146. package/dist/assets/illustrations/left_dot_blob_illustration.js.map +1 -1
  147. package/dist/assets/illustrations/projects_illustration.js.map +1 -1
  148. package/dist/assets/illustrations/right_dot_blob_dark_illustration.js.map +1 -1
  149. package/dist/assets/illustrations/right_dot_blob_illustration.js.map +1 -1
  150. package/dist/assets/illustrations/tables_illustration.js.map +1 -1
  151. package/dist/assets/illustrations/teams_illustration.js.map +1 -1
  152. package/dist/assets/illustrations/trash_can_illustration.js.map +1 -1
  153. package/dist/assets/illustrations/underconstruction_illustration.js.map +1 -1
  154. package/dist/assets/illustrations/wikis_illustration.js.map +1 -1
  155. package/dist/assets/logos/other/ad-workbench-logo.js.map +1 -1
  156. package/dist/assets/logos/other/cavatica-logo.js.map +1 -1
  157. package/dist/assets/logos/other/pluto-logo.js.map +1 -1
  158. package/dist/assets/logos/other/terra-logo.js.map +1 -1
  159. package/dist/assets/mui_components/AccessManagement.js.map +1 -1
  160. package/dist/assets/mui_components/AccountCertified.js.map +1 -1
  161. package/dist/assets/mui_components/AccountRegistered.js.map +1 -1
  162. package/dist/assets/mui_components/AccountValidated.js.map +1 -1
  163. package/dist/assets/mui_components/ActionKey.js.map +1 -1
  164. package/dist/assets/mui_components/BioChemicalPhysical.js.map +1 -1
  165. package/dist/assets/mui_components/Chromatin.js.map +1 -1
  166. package/dist/assets/mui_components/Clinical.js.map +1 -1
  167. package/dist/assets/mui_components/ComputationalTool.js.map +1 -1
  168. package/dist/assets/mui_components/Data.js.map +1 -1
  169. package/dist/assets/mui_components/DataLocked.js.map +1 -1
  170. package/dist/assets/mui_components/DataReuse.js.map +1 -1
  171. package/dist/assets/mui_components/Dataset.js.map +1 -1
  172. package/dist/assets/mui_components/DatasetCollection.js.map +1 -1
  173. package/dist/assets/mui_components/Docker.js.map +1 -1
  174. package/dist/assets/mui_components/GeneExpression.js.map +1 -1
  175. package/dist/assets/mui_components/GeneVariants.js.map +1 -1
  176. package/dist/assets/mui_components/HelpChatBubble.js.map +1 -1
  177. package/dist/assets/mui_components/Imaging.js.map +1 -1
  178. package/dist/assets/mui_components/InSilicoModel.js.map +1 -1
  179. package/dist/assets/mui_components/Kinomics.js.map +1 -1
  180. package/dist/assets/mui_components/LineGraph.js.map +1 -1
  181. package/dist/assets/mui_components/ModelSystem.js.map +1 -1
  182. package/dist/assets/mui_components/Other.js.map +1 -1
  183. package/dist/assets/mui_components/PackagableFile.js.map +1 -1
  184. package/dist/assets/mui_components/PackagableFile2.js.map +1 -1
  185. package/dist/assets/mui_components/Proteomics.js.map +1 -1
  186. package/dist/assets/mui_components/Rat.js.map +1 -1
  187. package/dist/assets/mui_components/SpatialProfiling.js.map +1 -1
  188. package/dist/assets/sustainability/darkDialPosition1.js.map +1 -1
  189. package/dist/assets/sustainability/darkDialPosition2.js.map +1 -1
  190. package/dist/assets/sustainability/darkDialPosition3.js.map +1 -1
  191. package/dist/assets/sustainability/darkDialPosition4.js.map +1 -1
  192. package/dist/assets/sustainability/dialPosition1.js.map +1 -1
  193. package/dist/assets/sustainability/dialPosition2.js.map +1 -1
  194. package/dist/assets/sustainability/dialPosition3.js.map +1 -1
  195. package/dist/assets/sustainability/dialPosition4.js.map +1 -1
  196. package/dist/assets/themed_icons/Active.js.map +1 -1
  197. package/dist/assets/themed_icons/Chart.js.map +1 -1
  198. package/dist/assets/themed_icons/Close.js.map +1 -1
  199. package/dist/assets/themed_icons/Collapse.js.map +1 -1
  200. package/dist/assets/themed_icons/Columns.js.map +1 -1
  201. package/dist/assets/themed_icons/ColumnsDark.js.map +1 -1
  202. package/dist/assets/themed_icons/Database.js.map +1 -1
  203. package/dist/assets/themed_icons/Download.js.map +1 -1
  204. package/dist/assets/themed_icons/Expand.js.map +1 -1
  205. package/dist/assets/themed_icons/Explore.js.map +1 -1
  206. package/dist/assets/themed_icons/ExternalLink.js.map +1 -1
  207. package/dist/assets/themed_icons/Filter.js.map +1 -1
  208. package/dist/assets/themed_icons/Program.js.map +1 -1
  209. package/dist/assets/themed_icons/Project.js.map +1 -1
  210. package/dist/assets/themed_icons/Publication.js.map +1 -1
  211. package/dist/assets/themed_icons/Search.js.map +1 -1
  212. package/dist/assets/themed_icons/Settings.js.map +1 -1
  213. package/dist/assets/themed_icons/SortDown.js.map +1 -1
  214. package/dist/assets/themed_icons/SortUp.js.map +1 -1
  215. package/dist/assets/themed_icons/SqlEditorIcon.js.map +1 -1
  216. package/dist/assets/themed_icons/Study.js.map +1 -1
  217. package/dist/assets/themed_icons/ToolClinical.js.map +1 -1
  218. package/dist/assets/themed_icons/ToolComputational.js.map +1 -1
  219. package/dist/assets/themed_icons/ToolExperimental.js.map +1 -1
  220. package/dist/assets/themed_icons/VerticalDots.js.map +1 -1
  221. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +1 -1
  222. package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
  223. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  224. package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
  225. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +10 -11
  226. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  227. package/dist/components/AccessRequirementList/AccessRequirementList.js +73 -76
  228. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  229. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  230. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
  231. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  232. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  233. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  234. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
  235. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  236. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +1 -1
  237. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
  238. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  239. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  240. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
  241. package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map +1 -1
  242. package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
  243. package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map +1 -1
  244. package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js.map +1 -1
  245. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
  246. package/dist/components/AccessRequirementList/RequirementItem/TwoFactorAuthEnabledRequirement.js.map +1 -1
  247. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
  248. package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
  249. package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
  250. package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
  251. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  252. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  253. package/dist/components/AccountLevelBadge/AccountLevelBadge.js.map +1 -1
  254. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  255. package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js.map +1 -1
  256. package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js.map +1 -1
  257. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  258. package/dist/components/AcknowledgementsPage/StudyAcknowledgement.js.map +1 -1
  259. package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
  260. package/dist/components/AclEditor/AclEditor.js.map +1 -1
  261. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  262. package/dist/components/AclEditor/AclEditorSkeleton.js.map +1 -1
  263. package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
  264. package/dist/components/AclEditor/ReadOnlyPermissionLevel.js.map +1 -1
  265. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js +2 -4
  266. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
  267. package/dist/components/AclEditor/ResourceAccessItem.js.map +1 -1
  268. package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
  269. package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
  270. package/dist/components/AdaptiveTwoColumnLayout/AdaptiveTwoColumnLayout.js.map +1 -1
  271. package/dist/components/AddToDownloadListV2.js.map +1 -1
  272. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  273. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  274. package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
  275. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  276. package/dist/components/Authentication/LoginFlowBackButton.js.map +1 -1
  277. package/dist/components/Authentication/LoginForm.js.map +1 -1
  278. package/dist/components/Authentication/LoginMethod.js.map +1 -1
  279. package/dist/components/Authentication/LoginMethodButton.js.map +1 -1
  280. package/dist/components/Authentication/Logout.js.map +1 -1
  281. package/dist/components/Authentication/OneTimePasswordForm.js.map +1 -1
  282. package/dist/components/Authentication/PasswordField.js.map +1 -1
  283. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  284. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  285. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  286. package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
  287. package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
  288. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  289. package/dist/components/Authentication/TwoFactorAuthSettingsPanel.js.map +1 -1
  290. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  291. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  292. package/dist/components/Authentication/TwoFactorSecretDialog.js.map +1 -1
  293. package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
  294. package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
  295. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  296. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  297. package/dist/components/CTASectionWrapper/CTASectionWrapper.js.map +1 -1
  298. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  299. package/dist/components/CardContainer/CardConfiguration.d.ts +2 -0
  300. package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
  301. package/dist/components/CardContainer/CardContainer.d.ts.map +1 -1
  302. package/dist/components/CardContainer/CardContainer.js +3 -3
  303. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  304. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +1 -0
  305. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
  306. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  307. package/dist/components/CardDeck/CardDeck.Desktop.js.map +1 -1
  308. package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
  309. package/dist/components/CardDeck/CardDeck.js.map +1 -1
  310. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  311. package/dist/components/CardGridWithLinks/CardGridWithLinks.js.map +1 -1
  312. package/dist/components/CertificationQuiz/CertificationAnswer.js.map +1 -1
  313. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  314. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
  315. package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js.map +1 -1
  316. package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
  317. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  318. package/dist/components/ChallengeSubmission/AddExternalRepo.js.map +1 -1
  319. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  320. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  321. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +62 -64
  322. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
  323. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  324. package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
  325. package/dist/components/ChallengeSubmission/SubmissionCommitList.js.map +1 -1
  326. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  327. package/dist/components/ChallengeTeamWizard/ChallengeTeamSearch.js.map +1 -1
  328. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  329. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +96 -102
  330. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
  331. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  332. package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
  333. package/dist/components/ChallengeTeamWizard/OpenMembershipInvitation.js.map +1 -1
  334. package/dist/components/ChallengeTeamWizard/RegistrationSuccessful.js.map +1 -1
  335. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  336. package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
  337. package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
  338. package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
  339. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  340. package/dist/components/CitationPopover/CitationPopover.js.map +1 -1
  341. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  342. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  343. package/dist/components/CitationPopover/useCitation.js.map +1 -1
  344. package/dist/components/ColorGradient/ColorGradient.js.map +1 -1
  345. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -1
  346. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  347. package/dist/components/ComponentCollapse.js.map +1 -1
  348. package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  349. package/dist/components/CookiesNotification/CookiePreferencesDialog.js.map +1 -1
  350. package/dist/components/CookiesNotification/CookiesNotification.d.ts.map +1 -1
  351. package/dist/components/CookiesNotification/CookiesNotification.js +9 -9
  352. package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
  353. package/dist/components/CopyToClipboardIcon.js.map +1 -1
  354. package/dist/components/CopyToClipboardInput/CopyToClipboardInput.js.map +1 -1
  355. package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
  356. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  357. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizardUtils.js.map +1 -1
  358. package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
  359. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -1
  360. package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
  361. package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
  362. package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
  363. package/dist/components/CreateTableViewWizard/TableTypeSelection.js.map +1 -1
  364. package/dist/components/CreateTableViewWizard/ViewTypeSelection.js.map +1 -1
  365. package/dist/components/CrispChat/CrispChat.js.map +1 -1
  366. package/dist/components/DataExplorer/DataExplorer.css +1 -1
  367. package/dist/components/DataExplorer/DataExplorer.js +28 -31
  368. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  369. package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
  370. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
  371. package/dist/components/DataExplorer/DataExplorer.module.scss +26 -6
  372. package/dist/components/DataGrid/DataGrid.js +72 -72
  373. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  374. package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
  375. package/dist/components/DataGrid/DataGridWebSocket.d.ts +2 -0
  376. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  377. package/dist/components/DataGrid/DataGridWebSocket.js +9 -10
  378. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  379. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
  380. package/dist/components/DataGrid/StartGridSession.js.map +1 -1
  381. package/dist/components/DataGrid/SynapseGrid.d.ts +3 -1
  382. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  383. package/dist/components/DataGrid/SynapseGrid.js +219 -211
  384. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  385. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  386. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
  387. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  388. package/dist/components/DataGrid/columns/GridAutocompleteChip.js.map +1 -1
  389. package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
  390. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts +5 -3
  391. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  392. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +46 -47
  393. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  394. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  395. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
  396. package/dist/components/DataGrid/components/GridSessionSelectionField.js.map +1 -1
  397. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  398. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  399. package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
  400. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  401. package/dist/components/DataGrid/hooks/useColumnResizeHandles.d.ts.map +1 -1
  402. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +3 -1
  403. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
  404. package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
  405. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
  406. package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
  407. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  408. package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
  409. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  410. package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
  411. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
  412. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  413. package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
  414. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  415. package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
  416. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  417. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  418. package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
  419. package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
  420. package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
  421. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  422. package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
  423. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  424. package/dist/components/DataGrid/utils/columnFactory.js +1 -0
  425. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  426. package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
  427. package/dist/components/DataGrid/utils/convertActionToModelChange.js.map +1 -1
  428. package/dist/components/DataGrid/utils/createTestModel.js.map +1 -1
  429. package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -1
  430. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  431. package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -1
  432. package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
  433. package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -1
  434. package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -1
  435. package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -1
  436. package/dist/components/DataGrid/utils/isValidationUpToDateForRow.js.map +1 -1
  437. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  438. package/dist/components/DataGrid/utils/json-rx/JsonRxMessage.js.map +1 -1
  439. package/dist/components/DataGrid/utils/json-rx/JsonRxNotification.js.map +1 -1
  440. package/dist/components/DataGrid/utils/json-rx/JsonRxRequest.js.map +1 -1
  441. package/dist/components/DataGrid/utils/json-rx/JsonRxRequestComplete.js.map +1 -1
  442. package/dist/components/DataGrid/utils/json-rx/JsonRxResponse.js.map +1 -1
  443. package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
  444. package/dist/components/DataGrid/utils/logicalTimestampToString.js.map +1 -1
  445. package/dist/components/DataGrid/utils/mapOperationsToModelChanges.js.map +1 -1
  446. package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
  447. package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
  448. package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
  449. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -1
  450. package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -1
  451. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  452. package/dist/components/DatasetJsonLdScript.js.map +1 -1
  453. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  454. package/dist/components/Dialog/ConfirmCloseWithoutSavingDialog.js.map +1 -1
  455. package/dist/components/DialogBase.js.map +1 -1
  456. package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
  457. package/dist/components/DirectDownload/FileEntityDirectDownload.js.map +1 -1
  458. package/dist/components/DirectDownloadButton.js.map +1 -1
  459. package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js.map +1 -1
  460. package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
  461. package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
  462. package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
  463. package/dist/components/DownloadCart/DirectProgrammaticDownload.js.map +1 -1
  464. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  465. package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
  466. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  467. package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
  468. package/dist/components/DownloadCart/DownloadListStats.js.map +1 -1
  469. package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
  470. package/dist/components/DownloadCart/EnableTwoFaRequirementCard.js.map +1 -1
  471. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  472. package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
  473. package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
  474. package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
  475. package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
  476. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  477. package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
  478. package/dist/components/DynamicForm/DynamicForm.js.map +1 -1
  479. package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
  480. package/dist/components/Ecosystem/EcosystemCard.js.map +1 -1
  481. package/dist/components/Ecosystem/EcosystemLayout.js.map +1 -1
  482. package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
  483. package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
  484. package/dist/components/EntityAclEditor/CreateOrDeleteLocalSharingSettingsButton.js.map +1 -1
  485. package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
  486. package/dist/components/EntityAclEditor/EntityAclEditorModal.js.map +1 -1
  487. package/dist/components/EntityAclEditor/InheritanceMessage.js.map +1 -1
  488. package/dist/components/EntityAclEditor/OpenData.js.map +1 -1
  489. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
  490. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +68 -70
  491. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  492. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  493. package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
  494. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +32 -35
  495. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  496. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  497. package/dist/components/EntityFinder/Breadcrumbs.js.map +1 -1
  498. package/dist/components/EntityFinder/EntityFinder.js +134 -136
  499. package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
  500. package/dist/components/EntityFinder/EntityFinderModal.js.map +1 -1
  501. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  502. package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
  503. package/dist/components/EntityFinder/details/EntityDetailsList.js +20 -20
  504. package/dist/components/EntityFinder/details/EntityDetailsList.js.map +1 -1
  505. package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
  506. package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
  507. package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
  508. package/dist/components/EntityFinder/details/configurations/ReferenceDetails.js.map +1 -1
  509. package/dist/components/EntityFinder/details/configurations/SearchDetails.js.map +1 -1
  510. package/dist/components/EntityFinder/details/view/DetailsView.js +67 -67
  511. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  512. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js +1 -1
  513. package/dist/components/EntityFinder/details/view/VersionColumnHeader.js.map +1 -1
  514. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  515. package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js.map +1 -1
  516. package/dist/components/EntityFinder/details/view/table/DateCell.js.map +1 -1
  517. package/dist/components/EntityFinder/details/view/table/EntityBadgeIconsCell.js.map +1 -1
  518. package/dist/components/EntityFinder/details/view/table/EntityFinderCheckboxCell.js.map +1 -1
  519. package/dist/components/EntityFinder/details/view/table/EntityFinderVersionCell.js.map +1 -1
  520. package/dist/components/EntityFinder/details/view/table/EntityNameCell.js.map +1 -1
  521. package/dist/components/EntityFinder/details/view/table/EntityTypeCell.js.map +1 -1
  522. package/dist/components/EntityFinder/details/view/table/FileEntityDirectDownloadCell.js.map +1 -1
  523. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js.map +1 -1
  524. package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js.map +1 -1
  525. package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js.map +1 -1
  526. package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js.map +1 -1
  527. package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js.map +1 -1
  528. package/dist/components/EntityFinder/details/view/table/UserBadgeCell.js.map +1 -1
  529. package/dist/components/EntityFinder/tree/EntityTree.js +80 -80
  530. package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
  531. package/dist/components/EntityFinder/tree/VirtualizedTree.js +31 -31
  532. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  533. package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
  534. package/dist/components/EntityForm/EntityForm.js.map +1 -1
  535. package/dist/components/EntityHeaderTable/DebouncedInput.js.map +1 -1
  536. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  537. package/dist/components/EntityHeaderTable/EntityHeaderTableCellRenderers.js.map +1 -1
  538. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  539. package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
  540. package/dist/components/EntityIcon.js.map +1 -1
  541. package/dist/components/EntityLink.js.map +1 -1
  542. package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
  543. package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
  544. package/dist/components/EntityTreeTable/components/AutoLoadMore.js.map +1 -1
  545. package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
  546. package/dist/components/EntityTreeTable/components/EntityBadgeIconsCell.js.map +1 -1
  547. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  548. package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
  549. package/dist/components/EntityTreeTable/components/EntityTreeTableRow.js.map +1 -1
  550. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
  551. package/dist/components/EntityTreeTable/components/IdCell.js.map +1 -1
  552. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  553. package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
  554. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  555. package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
  556. package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
  557. package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
  558. package/dist/components/EntityUpload/EntityUploadModal.js +29 -31
  559. package/dist/components/EntityUpload/EntityUploadModal.js.map +1 -1
  560. package/dist/components/EntityUpload/EntityUploadPromptDialog.js.map +1 -1
  561. package/dist/components/EntityUpload/ExternalObjectStoreCredentialsForm.js.map +1 -1
  562. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  563. package/dist/components/EntityUpload/LinkToURL.js.map +1 -1
  564. package/dist/components/EntityUpload/ProjectStorageLimitAlert.js.map +1 -1
  565. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
  566. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditor.js.map +1 -1
  567. package/dist/components/EntityViewScopeEditor/EntityViewScopeEditorModal.js.map +1 -1
  568. package/dist/components/Evaluation/CreatedOnByUserDiv.js.map +1 -1
  569. package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -1
  570. package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
  571. package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
  572. package/dist/components/Evaluation/EvaluationEditorPage.js.map +1 -1
  573. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  574. package/dist/components/Evaluation/EvaluationRoundEditorDropdown.js.map +1 -1
  575. package/dist/components/Evaluation/EvaluationRoundEditorList.js.map +1 -1
  576. package/dist/components/Evaluation/input_models/models.js.map +1 -1
  577. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
  578. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  579. package/dist/components/EvaluationFinder/EvaluationFinder.js.map +1 -1
  580. package/dist/components/ExperimentalMode/ExperimentalMode.d.ts.map +1 -1
  581. package/dist/components/ExperimentalMode/ExperimentalMode.js +24 -30
  582. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  583. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  584. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  585. package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
  586. package/dist/components/FeaturedDataTabs/FeaturedDataPlots.js.map +1 -1
  587. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
  588. package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
  589. package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
  590. package/dist/components/FeaturedResearch/FeaturedResearch.js +16 -18
  591. package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
  592. package/dist/components/FeaturedToolsList/FeaturedToolCard.js.map +1 -1
  593. package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
  594. package/dist/components/FilePreview/EntityPreview.js.map +1 -1
  595. package/dist/components/FilePreview/FileEntityPreview.js.map +1 -1
  596. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  597. package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
  598. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  599. package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
  600. package/dist/components/FilePreview/PreviewUtils.js.map +1 -1
  601. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  602. package/dist/components/Forum/DiscussionReply.js.map +1 -1
  603. package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
  604. package/dist/components/Forum/DiscussionThread.js.map +1 -1
  605. package/dist/components/Forum/ForumPage.js.map +1 -1
  606. package/dist/components/Forum/ForumTable.js.map +1 -1
  607. package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
  608. package/dist/components/Forum/SubscribersModal.js.map +1 -1
  609. package/dist/components/ForumSearch/ForumSearch.js.map +1 -1
  610. package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
  611. package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
  612. package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
  613. package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
  614. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  615. package/dist/components/GenericCard/CollapsibleDescription.js.map +1 -1
  616. package/dist/components/GenericCard/CroissantButton/CroissantButton.js.map +1 -1
  617. package/dist/components/GenericCard/GenericCard.d.ts +2 -0
  618. package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
  619. package/dist/components/GenericCard/GenericCard.js +76 -64
  620. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  621. package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
  622. package/dist/components/GenericCard/GenericCardIcon.js.map +1 -1
  623. package/dist/components/GenericCard/GenericCardTitle.js.map +1 -1
  624. package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -1
  625. package/dist/components/GenericCard/Linkify.js.map +1 -1
  626. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  627. package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
  628. package/dist/components/GenericCard/SynapseCardLabel.js +1 -1
  629. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  630. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  631. package/dist/components/GenericCard/TableRowGenericCard.js +33 -25
  632. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  633. package/dist/components/GenericCard/useResolvedSynapseEntity.js.map +1 -1
  634. package/dist/components/Goals/Goals.Desktop.js.map +1 -1
  635. package/dist/components/Goals/Goals.Mobile.js.map +1 -1
  636. package/dist/components/Goals/Goals.js +25 -27
  637. package/dist/components/Goals/Goals.js.map +1 -1
  638. package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
  639. package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
  640. package/dist/components/GoalsV2/GoalsV2.js +14 -16
  641. package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
  642. package/dist/components/GoalsV3/GoalsV3.Desktop.js.map +1 -1
  643. package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
  644. package/dist/components/GoalsV3/GoalsV3.js +14 -16
  645. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  646. package/dist/components/GoogleAnalytics/GoogleAnalytics.js.map +1 -1
  647. package/dist/components/GoogleMap/GoogleMap.js.map +1 -1
  648. package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
  649. package/dist/components/HasAccess/AccessIcon.js +10 -10
  650. package/dist/components/HasAccess/AccessIcon.js.map +1 -1
  651. package/dist/components/HasAccess/HasAccessV2.js.map +1 -1
  652. package/dist/components/HasAccess/useHasAccess.js.map +1 -1
  653. package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
  654. package/dist/components/HeaderCard.js.map +1 -1
  655. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  656. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  657. package/dist/components/IDUReport/IDUReport.js.map +1 -1
  658. package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
  659. package/dist/components/Icon/Icon.js.map +1 -1
  660. package/dist/components/IconList.js.map +1 -1
  661. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  662. package/dist/components/IconSvgButton.js.map +1 -1
  663. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js +7 -9
  664. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
  665. package/dist/components/ImageFromSynapseTable.js.map +1 -1
  666. package/dist/components/InteractiveCopyIdsIcon.js.map +1 -1
  667. package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
  668. package/dist/components/JSONArrayEditor/JSONArrayEditorModal.js.map +1 -1
  669. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  670. package/dist/components/JsonLdScript.js.map +1 -1
  671. package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
  672. package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
  673. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemButtonTemplate.js.map +1 -1
  674. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
  675. package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
  676. package/dist/components/JsonSchemaForm/templates/ArrayFieldTitleTemplate.js.map +1 -1
  677. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  678. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  679. package/dist/components/JsonSchemaForm/templates/DescriptionFieldTemplate.js.map +1 -1
  680. package/dist/components/JsonSchemaForm/templates/ErrorListTemplate.js.map +1 -1
  681. package/dist/components/JsonSchemaForm/templates/FieldDescriptionTable.js.map +1 -1
  682. package/dist/components/JsonSchemaForm/templates/FieldErrorTemplate.js.map +1 -1
  683. package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
  684. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  685. package/dist/components/JsonSchemaForm/widgets/BooleanWidget.js.map +1 -1
  686. package/dist/components/JsonSchemaForm/widgets/DateTimeWidget.js.map +1 -1
  687. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
  688. package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
  689. package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
  690. package/dist/components/Markdown/GovernanceMarkdownGithub.js.map +1 -1
  691. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  692. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  693. package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
  694. package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
  695. package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
  696. package/dist/components/Markdown/MarkdownSynapse.js +75 -106
  697. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  698. package/dist/components/Markdown/MarkdownUtils.d.ts +14 -4
  699. package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
  700. package/dist/components/Markdown/MarkdownUtils.js +38 -37
  701. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  702. package/dist/components/Markdown/MarkdownWidget.js.map +1 -1
  703. package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
  704. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  705. package/dist/components/Markdown/widget/Bookmarks.js.map +1 -1
  706. package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
  707. package/dist/components/Markdown/widget/MarkdownEntityPreview.js.map +1 -1
  708. package/dist/components/Markdown/widget/MarkdownIDUReport.js.map +1 -1
  709. package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
  710. package/dist/components/Markdown/widget/MarkdownSynapseImage.js.map +1 -1
  711. package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
  712. package/dist/components/Markdown/widget/MarkdownSynapseTable.js.map +1 -1
  713. package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
  714. package/dist/components/Markdown/widget/MarkdownUserOrTeamBadge.js.map +1 -1
  715. package/dist/components/Markdown/widget/MarkdownVideo.js.map +1 -1
  716. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  717. package/dist/components/ModalDownload/ModalDownload.FormSchema.js.map +1 -1
  718. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  719. package/dist/components/MuiContainer.js.map +1 -1
  720. package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js.map +1 -1
  721. package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
  722. package/dist/components/OAuthClientManagement/CreateOAuthClient.js.map +1 -1
  723. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  724. package/dist/components/OrientationBanner/OrientationBanner.js.map +1 -1
  725. package/dist/components/PageProgress/PageProgress.js.map +1 -1
  726. package/dist/components/Plot/BarPlot.js.map +1 -1
  727. package/dist/components/Plot/DotPlot.js.map +1 -1
  728. package/dist/components/Plot/Plot.d.ts +12 -1
  729. package/dist/components/Plot/Plot.d.ts.map +1 -1
  730. package/dist/components/Plot/Plot.js +5 -1
  731. package/dist/components/Plot/Plot.js.map +1 -1
  732. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  733. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  734. package/dist/components/Plot/SynapseSankeyPlot.css +1 -0
  735. package/dist/components/Plot/SynapseSankeyPlot.d.ts +54 -0
  736. package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
  737. package/dist/components/Plot/SynapseSankeyPlot.js +359 -0
  738. package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
  739. package/dist/components/Plot/SynapseSankeyPlot.module.js +15 -0
  740. package/dist/components/Plot/SynapseSankeyPlot.module.js.map +1 -0
  741. package/dist/components/Plot/SynapseSankeyPlot.module.scss +63 -0
  742. package/dist/components/Plot/ThemesPlot.js.map +1 -1
  743. package/dist/components/Plot/UpsetPlot.js.map +1 -1
  744. package/dist/components/Plot/index.d.ts +3 -1
  745. package/dist/components/Plot/index.d.ts.map +1 -1
  746. package/dist/components/Plot/index.js +2 -1
  747. package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
  748. package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
  749. package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
  750. package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
  751. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
  752. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
  753. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
  754. package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
  755. package/dist/components/PortalList/PortalCard.js.map +1 -1
  756. package/dist/components/PortalList/PortalList.js.map +1 -1
  757. package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
  758. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
  759. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
  760. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  761. package/dist/components/Programs/Programs.Desktop.js.map +1 -1
  762. package/dist/components/Programs/Programs.Mobile.js.map +1 -1
  763. package/dist/components/Programs/Programs.js.map +1 -1
  764. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  765. package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
  766. package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
  767. package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
  768. package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
  769. package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
  770. package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
  771. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  772. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  773. package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
  774. package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
  775. package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
  776. package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
  777. package/dist/components/QueryContext/QueryContext.js.map +1 -1
  778. package/dist/components/QueryCount/QueryCount.js.map +1 -1
  779. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  780. package/dist/components/QuerySortSelector.js.map +1 -1
  781. package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
  782. package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
  783. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  784. package/dist/components/QueryWrapper/QueryWrapper.js +27 -27
  785. package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
  786. package/dist/components/QueryWrapper/QueryWrapperLoadingScreen.js.map +1 -1
  787. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  788. package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
  789. package/dist/components/QueryWrapper/ViewMoreQueryResultsButton.js.map +1 -1
  790. package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
  791. package/dist/components/QueryWrapper/useComputeRowSelectionPrimaryKey.js.map +1 -1
  792. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  793. package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
  794. package/dist/components/QueryWrapper/useHasFacetedSelectColumn.js.map +1 -1
  795. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  796. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  797. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
  798. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  799. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
  800. package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
  801. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  802. package/dist/components/RORInstitutionField/RORInstitutionField.js.map +1 -1
  803. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js +6 -8
  804. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
  805. package/dist/components/RegisterPageLogoutPrompt/RegisterPageLogoutPrompt.js.map +1 -1
  806. package/dist/components/ReleaseCard/ReleaseCard.js.map +1 -1
  807. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  808. package/dist/components/ReleaseCard/ReleaseCardMedium.js.map +1 -1
  809. package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
  810. package/dist/components/RenderIfInView/RenderIfInView.js.map +1 -1
  811. package/dist/components/ResizableContainer/ResizableContainer.js.map +1 -1
  812. package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
  813. package/dist/components/Resources/Resources.Desktop.js.map +1 -1
  814. package/dist/components/Resources/Resources.Mobile.js.map +1 -1
  815. package/dist/components/Resources/Resources.js +8 -11
  816. package/dist/components/Resources/Resources.js.map +1 -1
  817. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  818. package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
  819. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  820. package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
  821. package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
  822. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
  823. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  824. package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
  825. package/dist/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js.map +1 -1
  826. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  827. package/dist/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.js.map +1 -1
  828. package/dist/components/SchemaDrivenAnnotationEditor/widget/TextWidget.js.map +1 -1
  829. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +13 -12
  830. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  831. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +88 -77
  832. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  833. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
  834. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
  835. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  836. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementTextInstructions.js.map +1 -1
  837. package/dist/components/SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js.map +1 -1
  838. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
  839. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
  840. package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
  841. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  842. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  843. package/dist/components/ShowMore/ShowMore.js.map +1 -1
  844. package/dist/components/SignInButton.js.map +1 -1
  845. package/dist/components/SignInRequiredModal/SignInRequiredModal.js.map +1 -1
  846. package/dist/components/Skeleton/SkeletonButton.js.map +1 -1
  847. package/dist/components/Skeleton/SkeletonInlineBlock.js.map +1 -1
  848. package/dist/components/Skeleton/SkeletonParagraph.js.map +1 -1
  849. package/dist/components/Skeleton/SkeletonTable.js.map +1 -1
  850. package/dist/components/SmartLink/SmartButton.js.map +1 -1
  851. package/dist/components/SmartLink/SmartLink.js.map +1 -1
  852. package/dist/components/SmartLink/useSmartLink.js.map +1 -1
  853. package/dist/components/SourceAppImage.js.map +1 -1
  854. package/dist/components/SpinnerButton/SpinnerButton.js.map +1 -1
  855. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditor.js.map +1 -1
  856. package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditorModal.js.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.d.ts.map +1 -1
  972. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +63 -74
  973. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  974. package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
  975. package/dist/components/SynapseTable/datasets/DatasetEditorCheckboxCell.js.map +1 -1
  976. package/dist/components/SynapseTable/datasets/DatasetEditorUtils.js.map +1 -1
  977. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  978. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +131 -133
  979. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  980. package/dist/components/SynapseTable/datasets/EntityFetchErrorCell.js.map +1 -1
  981. package/dist/components/SynapseTable/export/ADDiscoveryPortalInstructions.js.map +1 -1
  982. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +48 -51
  983. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js.map +1 -1
  984. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformInstructions.js.map +1 -1
  985. package/dist/components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js.map +1 -1
  986. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  987. package/dist/components/SynapseTable/export/ExternalPlatformDisclaimer.js.map +1 -1
  988. package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
  989. package/dist/components/SynapseTable/table-top/DownloadLoginModal.js.map +1 -1
  990. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  991. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  992. package/dist/components/SynapseTable/useTableSort.js.map +1 -1
  993. package/dist/components/SystemUseNotification/SystemUseNotification.js.map +1 -1
  994. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.d.ts.map +1 -1
  995. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +72 -68
  996. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  997. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
  998. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/FieldWithRecommendedMinimum.js.map +1 -1
  999. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js.map +1 -1
  1000. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  1001. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js.map +1 -1
  1002. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  1003. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts +27 -1
  1004. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
  1005. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +47 -36
  1006. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  1007. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +10 -10
  1008. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  1009. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  1010. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.d.ts +12 -12
  1011. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
  1012. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts +4 -1
  1013. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts.map +1 -1
  1014. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
  1015. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts +167 -517
  1016. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts.map +1 -1
  1017. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js +65 -65
  1018. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
  1019. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts +1 -1
  1020. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts.map +1 -1
  1021. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  1022. package/dist/components/TableColumnSchemaEditor/Validators/DefaultValueValidator.js.map +1 -1
  1023. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts +1 -1
  1024. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts.map +1 -1
  1025. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js +6 -13
  1026. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
  1027. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts +1 -1
  1028. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts.map +1 -1
  1029. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.js.map +1 -1
  1030. package/dist/components/TableColumnSchemaEditor/Validators/EnumValuesValidator.js.map +1 -1
  1031. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts +1 -1
  1032. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts.map +1 -1
  1033. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js +2 -2
  1034. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
  1035. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts +1 -1
  1036. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts.map +1 -1
  1037. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
  1038. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts +2 -2
  1039. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts.map +1 -1
  1040. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js +15 -16
  1041. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
  1042. package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
  1043. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  1044. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  1045. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  1046. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
  1047. package/dist/components/TanStackTable/TableBody.js.map +1 -1
  1048. package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
  1049. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  1050. package/dist/components/TeamBadge.js.map +1 -1
  1051. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  1052. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  1053. package/dist/components/TemplateComponent.js.map +1 -1
  1054. package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
  1055. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  1056. package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
  1057. package/dist/components/TextField/TextField.js.map +1 -1
  1058. package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
  1059. package/dist/components/TextToComponentCollapse.js.map +1 -1
  1060. package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
  1061. package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
  1062. package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
  1063. package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
  1064. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
  1065. package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
  1066. package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
  1067. package/dist/components/TotalQueryResults.js.map +1 -1
  1068. package/dist/components/UserCard/Avatar.js.map +1 -1
  1069. package/dist/components/UserCard/UserBadge.js.map +1 -1
  1070. package/dist/components/UserCard/UserCard.js.map +1 -1
  1071. package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
  1072. package/dist/components/UserCard/UserCardLarge.js.map +1 -1
  1073. package/dist/components/UserCard/UserCardMedium.js.map +1 -1
  1074. package/dist/components/UserCardList/UserCardList.js.map +1 -1
  1075. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
  1076. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
  1077. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
  1078. package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
  1079. package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
  1080. package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
  1081. package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
  1082. package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
  1083. package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
  1084. package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
  1085. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
  1086. package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
  1087. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  1088. package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
  1089. package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
  1090. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
  1091. package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
  1092. package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
  1093. package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
  1094. package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
  1095. package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
  1096. package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
  1097. package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
  1098. package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
  1099. package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
  1100. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  1101. package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
  1102. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  1103. package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
  1104. package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
  1105. package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
  1106. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  1107. package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
  1108. package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
  1109. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
  1110. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  1111. package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
  1112. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  1113. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  1114. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
  1115. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  1116. package/dist/components/doi/DoiFormSchemas.js.map +1 -1
  1117. package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
  1118. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
  1119. package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
  1120. package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
  1121. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  1122. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  1123. package/dist/components/download_list/index.js.map +1 -1
  1124. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  1125. package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
  1126. package/dist/components/entity/metadata/EntityModal.js.map +1 -1
  1127. package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
  1128. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  1129. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  1130. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
  1131. package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
  1132. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  1133. package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
  1134. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
  1135. package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
  1136. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  1137. package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
  1138. package/dist/components/error/ErrorBanner.js.map +1 -1
  1139. package/dist/components/error/ErrorChip.js.map +1 -1
  1140. package/dist/components/error/ErrorPage.js +24 -24
  1141. package/dist/components/error/ErrorPage.js.map +1 -1
  1142. package/dist/components/error/RouteErrorBoundary.js.map +1 -1
  1143. package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
  1144. package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
  1145. package/dist/components/favorites/FavoriteButton.js.map +1 -1
  1146. package/dist/components/favorites/FavoritesPage.js.map +1 -1
  1147. package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
  1148. package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
  1149. package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
  1150. package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
  1151. package/dist/components/home_page/ExpandableContent.js.map +1 -1
  1152. package/dist/components/index.js +48 -47
  1153. package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
  1154. package/dist/components/layout/SWCHeader.js.map +1 -1
  1155. package/dist/components/layout/SWCPageLayout.js.map +1 -1
  1156. package/dist/components/menu/ComplexMenu.js.map +1 -1
  1157. package/dist/components/menu/DropdownMenu.js.map +1 -1
  1158. package/dist/components/row_renderers/Dataset.js.map +1 -1
  1159. package/dist/components/row_renderers/Funder.js.map +1 -1
  1160. package/dist/components/row_renderers/ObservationCard.js.map +1 -1
  1161. package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
  1162. package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
  1163. package/dist/components/styled/HoverPopover.js.map +1 -1
  1164. package/dist/components/styled/InlineBadge.js.map +1 -1
  1165. package/dist/components/styled/InputSizedButton.js.map +1 -1
  1166. package/dist/components/styled/LargeButton.js.map +1 -1
  1167. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  1168. package/dist/components/styled/LightTooltip.js.map +1 -1
  1169. package/dist/components/styled/StyledFormControl.js.map +1 -1
  1170. package/dist/components/styled/StyledPopover.js.map +1 -1
  1171. package/dist/components/styled/StyledTableContainer.js.map +1 -1
  1172. package/dist/components/styled/WideButton.js.map +1 -1
  1173. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +39 -42
  1174. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -1
  1175. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  1176. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  1177. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
  1178. package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -1
  1179. package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -1
  1180. package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -1
  1181. package/dist/components/table/CsvPreview/useCsvUploadPreview.js +11 -11
  1182. package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -1
  1183. package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -1
  1184. package/dist/components/table/CsvTableDescriptorForm/CsvTableDescriptorForm.js.map +1 -1
  1185. package/dist/components/trash/TrashCanList.js.map +1 -1
  1186. package/dist/components/utils/Blocker.js.map +1 -1
  1187. package/dist/components/utils/ConditionalWrapper.js.map +1 -1
  1188. package/dist/components/utils/VisibilityObserver.js.map +1 -1
  1189. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  1190. package/dist/components/widgets/EntityColumnImage.js.map +1 -1
  1191. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  1192. package/dist/components/widgets/ImageFileHandle.js.map +1 -1
  1193. package/dist/components/widgets/LoginAwareButton.js.map +1 -1
  1194. package/dist/components/widgets/Range.js.map +1 -1
  1195. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  1196. package/dist/components/widgets/SynapseImage.js.map +1 -1
  1197. package/dist/components/widgets/SynapseVideo.js.map +1 -1
  1198. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  1199. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  1200. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  1201. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  1202. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  1203. package/dist/components/widgets/facet-nav/PlotsContainerSkeleton.js.map +1 -1
  1204. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
  1205. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
  1206. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  1207. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
  1208. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  1209. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
  1210. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  1211. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterSkeleton.js.map +1 -1
  1212. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  1213. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  1214. package/dist/components/widgets/query-filter/FacetChip.js.map +1 -1
  1215. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  1216. package/dist/components/widgets/query-filter/FacetFilterHeader.js.map +1 -1
  1217. package/dist/components/widgets/query-filter/FacetFilterSkeleton.js.map +1 -1
  1218. package/dist/components/widgets/query-filter/FacetFilterUtils.js.map +1 -1
  1219. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  1220. package/dist/components/widgets/query-filter/RangeFacetFilter.js +3 -3
  1221. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  1222. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +41 -41
  1223. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  1224. package/dist/features/curator/GridPage/GridPage.js.map +1 -1
  1225. package/dist/features/curator/GridPage/components/GridPageRouter.js.map +1 -1
  1226. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  1227. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
  1228. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  1229. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  1230. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  1231. package/dist/features/curator/dashboard/components/UserOrTeamChip.js.map +1 -1
  1232. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +5 -0
  1233. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  1234. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +227 -181
  1235. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  1236. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  1237. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +3 -0
  1238. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  1239. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  1240. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  1241. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
  1242. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  1243. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  1244. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  1245. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  1246. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  1247. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  1248. package/dist/features/entity/metadata-task/utils/constants.d.ts +5 -0
  1249. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  1250. package/dist/features/entity/metadata-task/utils/constants.js +2 -2
  1251. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  1252. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  1253. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
  1254. package/dist/features/entity/metadata-task/utils/getLatestGridSessionForSource.js.map +1 -1
  1255. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -1
  1256. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  1257. package/dist/index.js +54 -53
  1258. package/dist/index.js.map +1 -1
  1259. package/dist/mocks/MockAccessApprovals.js.map +1 -1
  1260. package/dist/mocks/MockSynapseContext.js.map +1 -1
  1261. package/dist/mocks/accessRequirement/mockAccessRequirementAcls.js.map +1 -1
  1262. package/dist/mocks/accessRequirement/mockAccessRequirements.js.map +1 -1
  1263. package/dist/mocks/applicationSessionContext/MockApplicationSessionContext.js.map +1 -1
  1264. package/dist/mocks/challenge/mockChallenge.js.map +1 -1
  1265. package/dist/mocks/chat/mockChat.js.map +1 -1
  1266. package/dist/mocks/curation/mockCurationTask.js.map +1 -1
  1267. package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
  1268. package/dist/mocks/dataaccess/MockResearchProject.js.map +1 -1
  1269. package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
  1270. package/dist/mocks/dataaccess/mockAccessRequest.js.map +1 -1
  1271. package/dist/mocks/discussion/mock_discussion.js.map +1 -1
  1272. package/dist/mocks/doi/MockDoi.js.map +1 -1
  1273. package/dist/mocks/entity/index.js.map +1 -1
  1274. package/dist/mocks/entity/mockDataset.js.map +1 -1
  1275. package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
  1276. package/dist/mocks/entity/mockEntity.js.map +1 -1
  1277. package/dist/mocks/entity/mockEvaluationQueue.js.map +1 -1
  1278. package/dist/mocks/entity/mockFileEntity.js.map +1 -1
  1279. package/dist/mocks/entity/mockFileEntityACLVariants.js.map +1 -1
  1280. package/dist/mocks/entity/mockFileView.js.map +1 -1
  1281. package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
  1282. package/dist/mocks/entity/mockProject.js.map +1 -1
  1283. package/dist/mocks/entity/mockProjectView.js.map +1 -1
  1284. package/dist/mocks/entity/mockReleaseCardsTable.js.map +1 -1
  1285. package/dist/mocks/entity/mockRootEntity.js.map +1 -1
  1286. package/dist/mocks/entity/mockTableEntity.js.map +1 -1
  1287. package/dist/mocks/faker/fakerUtils.js.map +1 -1
  1288. package/dist/mocks/faker/generateDiscussion.js.map +1 -1
  1289. package/dist/mocks/faker/generateEvaluation.js.map +1 -1
  1290. package/dist/mocks/faker/generateFakeEntity.js.map +1 -1
  1291. package/dist/mocks/faker/generateSubscription.js.map +1 -1
  1292. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  1293. package/dist/mocks/mockCertificationQuiz.js.map +1 -1
  1294. package/dist/mocks/mockDataCatalogQuery.js.map +1 -1
  1295. package/dist/mocks/mockFileViewQuery.js.map +1 -1
  1296. package/dist/mocks/mockOAuthClientAcls.js.map +1 -1
  1297. package/dist/mocks/mockQueryResponseData.js.map +1 -1
  1298. package/dist/mocks/mockQueryResponseDataWithManyEnumFacets.js.map +1 -1
  1299. package/dist/mocks/mockSchema.js.map +1 -1
  1300. package/dist/mocks/mockSearchQueryData.js +2 -2
  1301. package/dist/mocks/mockSearchQueryData.js.map +1 -1
  1302. package/dist/mocks/mockShortIo.js.map +1 -1
  1303. package/dist/mocks/mockSourceAppConfigQuery.js.map +1 -1
  1304. package/dist/mocks/mockSubscription.js.map +1 -1
  1305. package/dist/mocks/mockWiki.js.map +1 -1
  1306. package/dist/mocks/mockWikiPageKey.js.map +1 -1
  1307. package/dist/mocks/mock_drug_tool_data.js.map +1 -1
  1308. package/dist/mocks/mock_file_handle.js.map +1 -1
  1309. package/dist/mocks/mock_file_statistics.js.map +1 -1
  1310. package/dist/mocks/mock_has_access_data.js.map +1 -1
  1311. package/dist/mocks/mock_upload_destination.js.map +1 -1
  1312. package/dist/mocks/msw/handlers/accessRequirementAclHandlers.js.map +1 -1
  1313. package/dist/mocks/msw/handlers/accessRequirementHandlers.js.map +1 -1
  1314. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  1315. package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
  1316. package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
  1317. package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
  1318. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  1319. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  1320. package/dist/mocks/msw/handlers/dataciteHandlers.js.map +1 -1
  1321. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  1322. package/dist/mocks/msw/handlers/doiHandlers.js.map +1 -1
  1323. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  1324. package/dist/mocks/msw/handlers/evaluationHandlers.js.map +1 -1
  1325. package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
  1326. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  1327. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  1328. package/dist/mocks/msw/handlers/messageHandlers.js.map +1 -1
  1329. package/dist/mocks/msw/handlers/oauthClientAclHandlers.js.map +1 -1
  1330. package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
  1331. package/dist/mocks/msw/handlers/projectStorageHandlers.js.map +1 -1
  1332. package/dist/mocks/msw/handlers/realmHandlers.js.map +1 -1
  1333. package/dist/mocks/msw/handlers/researchProjectHandlers.js.map +1 -1
  1334. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
  1335. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  1336. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts +1 -1
  1337. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
  1338. package/dist/mocks/msw/handlers/searchQueryHandlers.js +6 -3
  1339. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  1340. package/dist/mocks/msw/handlers/shortIoHandlers.js.map +1 -1
  1341. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  1342. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  1343. package/dist/mocks/msw/handlers/tableQueryService.js.map +1 -1
  1344. package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
  1345. package/dist/mocks/msw/handlers/termsOfServiceHandlers.js.map +1 -1
  1346. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  1347. package/dist/mocks/msw/handlers/webhookHandlers.js.map +1 -1
  1348. package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
  1349. package/dist/mocks/msw/handlers.js.map +1 -1
  1350. package/dist/mocks/msw/server.d.ts +1 -1
  1351. package/dist/mocks/msw/server.d.ts.map +1 -1
  1352. package/dist/mocks/msw/server.js.map +1 -1
  1353. package/dist/mocks/msw/util/BasicMockedCrudService.js.map +1 -1
  1354. package/dist/mocks/oauth/MockClient.js.map +1 -1
  1355. package/dist/mocks/personalAccessToken/mockPersonalAccessToken.js.map +1 -1
  1356. package/dist/mocks/projectStorage/mockProjectStorageLimits.js.map +1 -1
  1357. package/dist/mocks/provenance/mockActivity.js.map +1 -1
  1358. package/dist/mocks/query/defaultFileViewColumnModels.js.map +1 -1
  1359. package/dist/mocks/query/mockFeaturedDataTabsQueryData.js.map +1 -1
  1360. package/dist/mocks/query/mockHomepageQueryResultData.js.map +1 -1
  1361. package/dist/mocks/query/mockProjectViewQueryResults.js.map +1 -1
  1362. package/dist/mocks/query/mockRejectionReasonsTableQueryResultBundle.js.map +1 -1
  1363. package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
  1364. package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts +13 -0
  1365. package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts.map +1 -1
  1366. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js +27 -0
  1367. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
  1368. package/dist/mocks/query/mock_query_data.js.map +1 -1
  1369. package/dist/mocks/query/syn16787123.js.map +1 -1
  1370. package/dist/mocks/query/syn17328596.js.map +1 -1
  1371. package/dist/mocks/query/syn51735464.js.map +1 -1
  1372. package/dist/mocks/query/syn51735464GroupBySpecies.js.map +1 -1
  1373. package/dist/mocks/realm/mockRealmPrincipal.js.map +1 -1
  1374. package/dist/mocks/team/mockTeam.js.map +1 -1
  1375. package/dist/mocks/termsOfService/mockTermsOfService.js.map +1 -1
  1376. package/dist/mocks/user/mock_user_profile.js.map +1 -1
  1377. package/dist/mocks/usergroup/mockUserGroup.js.map +1 -1
  1378. package/dist/ror-client/index.js.map +1 -1
  1379. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  1380. package/dist/stories/ToastDemo.js.map +1 -1
  1381. package/dist/stories/stubs/Alert/MuiAlert.js.map +1 -1
  1382. package/dist/stories/stubs/Button/MuiButton.js.map +1 -1
  1383. package/dist/stories/stubs/Dialog/MuiDialog.js.map +1 -1
  1384. package/dist/stories/stubs/TextField/MuiTextField.js.map +1 -1
  1385. package/dist/stories/stubs/Tooltip/MuiTooltip.js.map +1 -1
  1386. package/dist/style/components/_cards.scss +10 -0
  1387. package/dist/style/components/_data-grid-extra.css +1 -1
  1388. package/dist/style/components/_data-grid-extra.scss +7 -1
  1389. package/dist/style/main.css +1 -1
  1390. package/dist/synapse-client/HttpClient.js.map +1 -1
  1391. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  1392. package/dist/synapse-client/SynapseClient.js +499 -505
  1393. package/dist/synapse-client/SynapseClient.js.map +1 -1
  1394. package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
  1395. package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
  1396. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  1397. package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
  1398. package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
  1399. package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
  1400. package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
  1401. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  1402. package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
  1403. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
  1404. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  1405. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  1406. package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
  1407. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
  1408. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  1409. package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
  1410. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  1411. package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
  1412. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  1413. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  1414. package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
  1415. package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
  1416. package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
  1417. package/dist/synapse-queries/doi/useDOI.js.map +1 -1
  1418. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  1419. package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
  1420. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  1421. package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
  1422. package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
  1423. package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
  1424. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  1425. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  1426. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  1427. package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
  1428. package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
  1429. package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
  1430. package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
  1431. package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
  1432. package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
  1433. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  1434. package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
  1435. package/dist/synapse-queries/entity/useSchema.js.map +1 -1
  1436. package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
  1437. package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
  1438. package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
  1439. package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
  1440. package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
  1441. package/dist/synapse-queries/file/useFiles.js.map +1 -1
  1442. package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
  1443. package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
  1444. package/dist/synapse-queries/forum/useForum.js.map +1 -1
  1445. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  1446. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  1447. package/dist/synapse-queries/github/useGithub.js.map +1 -1
  1448. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  1449. package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
  1450. package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
  1451. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  1452. package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
  1453. package/dist/synapse-queries/message/useMessage.js.map +1 -1
  1454. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  1455. package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
  1456. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  1457. package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
  1458. package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
  1459. package/dist/synapse-queries/ror/index.js.map +1 -1
  1460. package/dist/synapse-queries/search/useSearch.js.map +1 -1
  1461. package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
  1462. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  1463. package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
  1464. package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
  1465. package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
  1466. package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
  1467. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  1468. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  1469. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  1470. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  1471. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  1472. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  1473. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  1474. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  1475. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  1476. package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
  1477. package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
  1478. package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
  1479. package/dist/synapse-queries/user/useProjects.js.map +1 -1
  1480. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  1481. package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
  1482. package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
  1483. package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
  1484. package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
  1485. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  1486. package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
  1487. package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
  1488. package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
  1489. package/dist/testutils/LocationTracker.js.map +1 -1
  1490. package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
  1491. package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
  1492. package/dist/testutils/TestingLibraryUtils.js +18 -16
  1493. package/dist/testutils/TestingLibraryUtils.js.map +1 -1
  1494. package/dist/testutils/muiDatePickerMock.js.map +1 -1
  1495. package/dist/testutils/vitest.setup.js.map +1 -1
  1496. package/dist/theme/DefaultTheme.js.map +1 -1
  1497. package/dist/theme/ThemeProvider.js.map +1 -1
  1498. package/dist/theme/mergeTheme.js.map +1 -1
  1499. package/dist/theme/palette/Palettes.js.map +1 -1
  1500. package/dist/theme/spreadSx.js.map +1 -1
  1501. package/dist/theme/typography/Link.js.map +1 -1
  1502. package/dist/theme/typography/Typography.js.map +1 -1
  1503. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1504. package/dist/utils/APIConstants.js.map +1 -1
  1505. package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
  1506. package/dist/utils/AppUtils/AppUtils.js +11 -11
  1507. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  1508. package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
  1509. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  1510. package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
  1511. package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
  1512. package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
  1513. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  1514. package/dist/utils/ContentTypeUtils.js.map +1 -1
  1515. package/dist/utils/OrientationBannerConstants.js.map +1 -1
  1516. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  1517. package/dist/utils/SynapseConstants.js.map +1 -1
  1518. package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
  1519. package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
  1520. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  1521. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  1522. package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
  1523. package/dist/utils/context/AridhiaContext.js.map +1 -1
  1524. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  1525. package/dist/utils/context/FullContextProvider.js.map +1 -1
  1526. package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
  1527. package/dist/utils/context/SynapseContext.js.map +1 -1
  1528. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  1529. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  1530. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  1531. package/dist/utils/functions/DateFormatter.js.map +1 -1
  1532. package/dist/utils/functions/DateTimeUtils.js.map +1 -1
  1533. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  1534. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  1535. package/dist/utils/functions/GridApiUtils.js.map +1 -1
  1536. package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
  1537. package/dist/utils/functions/IsExternalLink.js.map +1 -1
  1538. package/dist/utils/functions/ObjectUtils.js.map +1 -1
  1539. package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
  1540. package/dist/utils/functions/RealmUtils.js.map +1 -1
  1541. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  1542. package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
  1543. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  1544. package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
  1545. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  1546. package/dist/utils/functions/StringUtils.js.map +1 -1
  1547. package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
  1548. package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
  1549. package/dist/utils/functions/colorPalette.js.map +1 -1
  1550. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  1551. package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
  1552. package/dist/utils/functions/generateCsrfToken.js.map +1 -1
  1553. package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
  1554. package/dist/utils/functions/getEndpoint.js +3 -3
  1555. package/dist/utils/functions/getEndpoint.js.map +1 -1
  1556. package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
  1557. package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
  1558. package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
  1559. package/dist/utils/functions/getUserData.js.map +1 -1
  1560. package/dist/utils/functions/queryUtils.js.map +1 -1
  1561. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  1562. package/dist/utils/functions/unCamelCase.js.map +1 -1
  1563. package/dist/utils/hooks/useConfirmItems.js.map +1 -1
  1564. package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
  1565. package/dist/utils/hooks/useCookiePreferences.js +24 -23
  1566. package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
  1567. package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
  1568. package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
  1569. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  1570. package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
  1571. package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
  1572. package/dist/utils/hooks/useGetGoalData.js +2 -4
  1573. package/dist/utils/hooks/useGetGoalData.js.map +1 -1
  1574. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  1575. package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
  1576. package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
  1577. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  1578. package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
  1579. package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
  1580. package/dist/utils/hooks/useIsBot.js.map +1 -1
  1581. package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
  1582. package/dist/utils/hooks/useListState.js.map +1 -1
  1583. package/dist/utils/hooks/useLogin.js.map +1 -1
  1584. package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
  1585. package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
  1586. package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
  1587. package/dist/utils/hooks/useOneSageURL.js.map +1 -1
  1588. package/dist/utils/hooks/useOverlay.js.map +1 -1
  1589. package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
  1590. package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
  1591. package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
  1592. package/dist/utils/hooks/useSet.js.map +1 -1
  1593. package/dist/utils/hooks/useShowDesktop.js.map +1 -1
  1594. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  1595. package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
  1596. package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
  1597. package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
  1598. package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
  1599. package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
  1600. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  1601. package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
  1602. package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
  1603. package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
  1604. package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
  1605. package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
  1606. package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
  1607. package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
  1608. package/dist/utils/html/TargetEnum.js.map +1 -1
  1609. package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
  1610. package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
  1611. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  1612. package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
  1613. package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
  1614. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  1615. package/dist/utils/jsonschema/getType.js.map +1 -1
  1616. package/dist/utils/searchDefaults.js.map +1 -1
  1617. package/dist/utils/slots/SlotUtils.js.map +1 -1
  1618. package/dist/utils/types/IsType.js.map +1 -1
  1619. package/package.json +68 -65
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnHeaderEnumFilter.js","names":[],"sources":["../../../src/components/TanStackTable/ColumnHeaderEnumFilter.tsx"],"sourcesContent":["import { Column, RowData } from '@tanstack/react-table'\nimport { isEmpty, isEqual, noop } from 'lodash-es'\nimport { useMemo } from 'react'\nimport EnumFacetFilterUI, {\n EnumFacetFilterUIProps,\n RenderedFacetValue,\n} from '../widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI'\n\nfunction setEnumFilterValue<TData extends RowData, TValue = unknown>(\n column: Column<TData, TValue>,\n newValue: TValue,\n) {\n if (column.columnDef.meta?.enableMultipleSelect) {\n // Append the value to the list, or create the list if it does not exist\n column.setFilterValue((curr: TValue[] | null): TValue[] | null => {\n if (curr) {\n return [...curr, newValue]\n }\n return [newValue]\n })\n } else {\n // Replace the list\n column.setFilterValue([newValue])\n }\n}\n\nfunction removeEnumFilterValue<TData extends RowData, TValue = unknown>(\n column: Column<TData, TValue>,\n valueToRemove: TValue,\n) {\n column.setFilterValue((curr: TValue[] | null): TValue[] | null => {\n if (curr) {\n const newValue = [\n ...curr.filter(currValue => !isEqual(currValue, valueToRemove)),\n ]\n if (!isEmpty(newValue)) {\n return newValue\n }\n }\n return null\n })\n}\n\ntype ColumnHeaderEnumFilterProps<TData = unknown, TValue = unknown> = {\n column: Column<TData, TValue>\n title: string\n}\n\nfunction getMaybeFacetedUniqueValues<TValue = unknown>(\n columnFacetedUniqueValues: Map<TValue, number>,\n): {\n value: TValue\n count?: number\n}[] {\n if (columnFacetedUniqueValues) {\n // @tanstack/table currently has no API to define a unique set of values for a column without count statistics\n // In each instance, we manually defined a set of unique values and set the count to 0\n const hasFacetCounts = Array.from(columnFacetedUniqueValues.values()).some(\n v => v != 0,\n )\n return Array.from(columnFacetedUniqueValues.entries()).map(\n (entry: [TValue, number]) => ({\n value: entry[0],\n count: hasFacetCounts ? entry[1] : undefined,\n }),\n )\n }\n return []\n}\n\n/**\n * Used to create {@link EnumFacetFilterUIProps} that can be used to create a control to filter column values based on\n * the provided @tanstack/react-table {@link Column}. The custom properties used to configure the filter should be set\n * in the column's `meta` field.\n * @param props\n * @constructor\n */\nexport function ColumnHeaderEnumFilter<TData = unknown, TValue = unknown>(\n props: ColumnHeaderEnumFilterProps<TData, TValue>,\n) {\n type EnumFilterValue = TValue[]\n const { column, title } = props\n\n const canMultiSelect = column.columnDef.meta?.enableMultipleSelect || false\n\n const _uncheckedFilterValues = column.getFilterValue() as EnumFilterValue\n const filterValues = useMemo(\n () => _uncheckedFilterValues || [],\n [_uncheckedFilterValues],\n )\n\n // Use the column's enumValues and filterValues to create the facet value objects used by EnumFacetFilterUI\n const facetedUniqueValues = column.getFacetedUniqueValues() as Map<\n TValue,\n number\n >\n const transformedFilterValues: RenderedFacetValue<TValue>[] = useMemo(\n () =>\n getMaybeFacetedUniqueValues(facetedUniqueValues).map(\n (facetValue): RenderedFacetValue<TValue> => {\n let displayText: string = facetValue.value as unknown as string\n if (column.columnDef?.meta?.getDisplayText) {\n displayText = column.columnDef.meta.getDisplayText(facetValue.value)\n }\n const currentFilterValue = filterValues || []\n const isSelected = Boolean(\n currentFilterValue.find(\n filterValue => filterValue === facetValue.value,\n ),\n )\n return { ...facetValue, displayText, isSelected }\n },\n ),\n [column, filterValues, facetedUniqueValues],\n )\n return (\n <EnumFacetFilterUI\n facetTitle={title}\n facetValues={transformedFilterValues}\n filterIsActive={column.getIsFiltered()}\n containerAs={'Dropdown'}\n dropdownType={'Icon'}\n defaultShowAllValues={true}\n onAddValueToSelection={newFilterValue => {\n setEnumFilterValue(column, newFilterValue)\n }}\n onRemoveValueFromSelection={valueToRemove => {\n removeEnumFilterValue(column, valueToRemove)\n }}\n onRemoveAllFacetSelections={() => {\n column.setFilterValue(null)\n }}\n onHoverOverValue={noop}\n canMultiSelect={canMultiSelect}\n />\n )\n}\n"],"mappings":";;;;;AAQA,SAAS,EACP,GACA,GACA;AACA,CAAI,EAAO,UAAU,MAAM,uBAEzB,EAAO,gBAAgB,MACjB,IACK,CAAC,GAAG,GAAM,EAAS,GAErB,CAAC,EAAS,CACjB,GAGF,EAAO,eAAe,CAAC,EAAS,CAAC;;AAIrC,SAAS,EACP,GACA,GACA;AACA,GAAO,gBAAgB,MAA2C;AAChE,MAAI,GAAM;GACR,IAAM,IAAW,CACf,GAAG,EAAK,QAAO,MAAa,CAAC,EAAQ,GAAW,EAAc,CAAC,CAChE;AACD,OAAI,CAAC,EAAQ,EAAS,CACpB,QAAO;;AAGX,SAAO;GACP;;AAQJ,SAAS,EACP,GAIE;AACF,KAAI,GAA2B;EAG7B,IAAM,IAAiB,MAAM,KAAK,EAA0B,QAAQ,CAAC,CAAC,MACpE,MAAK,KAAK,EACX;AACD,SAAO,MAAM,KAAK,EAA0B,SAAS,CAAC,CAAC,KACpD,OAA6B;GAC5B,OAAO,EAAM;GACb,OAAO,IAAiB,EAAM,KAAK,KAAA;GACpC,EACF;;AAEH,QAAO,EAAE;;AAUX,SAAgB,EACd,GACA;CAEA,IAAM,EAAE,WAAQ,aAAU,GAEpB,IAAiB,EAAO,UAAU,MAAM,wBAAwB,IAEhE,IAAyB,EAAO,gBAAgB,EAChD,IAAe,QACb,KAA0B,EAAE,EAClC,CAAC,EAAuB,CACzB,EAGK,IAAsB,EAAO,wBAAwB;AAuB3D,QACE,kBAAC,GAAD;EACE,YAAY;EACZ,aAtB0D,QAE1D,EAA4B,EAAoB,CAAC,KAC9C,MAA2C;GAC1C,IAAI,IAAsB,EAAW;AACrC,GAAI,EAAO,WAAW,MAAM,mBAC1B,IAAc,EAAO,UAAU,KAAK,eAAe,EAAW,MAAM;GAGtE,IAAM,IAAa,GADQ,KAAgB,EAAE,EAExB,MACjB,MAAe,MAAgB,EAAW,MAC3C;AAEH,UAAO;IAAE,GAAG;IAAY;IAAa;IAAY;IAEpD,EACH;GAAC;GAAQ;GAAc;GAAoB,CAK5B;EACb,gBAAgB,EAAO,eAAe;EACtC,aAAa;EACb,cAAc;EACd,sBAAsB;EACtB,wBAAuB,MAAkB;AACvC,KAAmB,GAAQ,EAAe;;EAE5C,6BAA4B,MAAiB;AAC3C,KAAsB,GAAQ,EAAc;;EAE9C,kCAAkC;AAChC,KAAO,eAAe,KAAK;;EAE7B,kBAAkB;EACF;EAChB,CAAA"}
1
+ {"version":3,"file":"ColumnHeaderEnumFilter.js","names":[],"sources":["../../../src/components/TanStackTable/ColumnHeaderEnumFilter.tsx"],"sourcesContent":["import { Column, RowData } from '@tanstack/react-table'\nimport { isEmpty, isEqual, noop } from 'lodash-es'\nimport { useMemo } from 'react'\nimport EnumFacetFilterUI, {\n EnumFacetFilterUIProps,\n RenderedFacetValue,\n} from '../widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI'\n\nfunction setEnumFilterValue<TData extends RowData, TValue = unknown>(\n column: Column<TData, TValue>,\n newValue: TValue,\n) {\n if (column.columnDef.meta?.enableMultipleSelect) {\n // Append the value to the list, or create the list if it does not exist\n column.setFilterValue((curr: TValue[] | null): TValue[] | null => {\n if (curr) {\n return [...curr, newValue]\n }\n return [newValue]\n })\n } else {\n // Replace the list\n column.setFilterValue([newValue])\n }\n}\n\nfunction removeEnumFilterValue<TData extends RowData, TValue = unknown>(\n column: Column<TData, TValue>,\n valueToRemove: TValue,\n) {\n column.setFilterValue((curr: TValue[] | null): TValue[] | null => {\n if (curr) {\n const newValue = [\n ...curr.filter(currValue => !isEqual(currValue, valueToRemove)),\n ]\n if (!isEmpty(newValue)) {\n return newValue\n }\n }\n return null\n })\n}\n\ntype ColumnHeaderEnumFilterProps<TData = unknown, TValue = unknown> = {\n column: Column<TData, TValue>\n title: string\n}\n\nfunction getMaybeFacetedUniqueValues<TValue = unknown>(\n columnFacetedUniqueValues: Map<TValue, number>,\n): {\n value: TValue\n count?: number\n}[] {\n if (columnFacetedUniqueValues) {\n // @tanstack/table currently has no API to define a unique set of values for a column without count statistics\n // In each instance, we manually defined a set of unique values and set the count to 0\n const hasFacetCounts = Array.from(columnFacetedUniqueValues.values()).some(\n v => v != 0,\n )\n return Array.from(columnFacetedUniqueValues.entries()).map(\n (entry: [TValue, number]) => ({\n value: entry[0],\n count: hasFacetCounts ? entry[1] : undefined,\n }),\n )\n }\n return []\n}\n\n/**\n * Used to create {@link EnumFacetFilterUIProps} that can be used to create a control to filter column values based on\n * the provided @tanstack/react-table {@link Column}. The custom properties used to configure the filter should be set\n * in the column's `meta` field.\n * @param props\n * @constructor\n */\nexport function ColumnHeaderEnumFilter<TData = unknown, TValue = unknown>(\n props: ColumnHeaderEnumFilterProps<TData, TValue>,\n) {\n type EnumFilterValue = TValue[]\n const { column, title } = props\n\n const canMultiSelect = column.columnDef.meta?.enableMultipleSelect || false\n\n const _uncheckedFilterValues = column.getFilterValue() as EnumFilterValue\n const filterValues = useMemo(\n () => _uncheckedFilterValues || [],\n [_uncheckedFilterValues],\n )\n\n // Use the column's enumValues and filterValues to create the facet value objects used by EnumFacetFilterUI\n const facetedUniqueValues = column.getFacetedUniqueValues() as Map<\n TValue,\n number\n >\n const transformedFilterValues: RenderedFacetValue<TValue>[] = useMemo(\n () =>\n getMaybeFacetedUniqueValues(facetedUniqueValues).map(\n (facetValue): RenderedFacetValue<TValue> => {\n let displayText: string = facetValue.value as unknown as string\n if (column.columnDef?.meta?.getDisplayText) {\n displayText = column.columnDef.meta.getDisplayText(facetValue.value)\n }\n const currentFilterValue = filterValues || []\n const isSelected = Boolean(\n currentFilterValue.find(\n filterValue => filterValue === facetValue.value,\n ),\n )\n return { ...facetValue, displayText, isSelected }\n },\n ),\n [column, filterValues, facetedUniqueValues],\n )\n return (\n <EnumFacetFilterUI\n facetTitle={title}\n facetValues={transformedFilterValues}\n filterIsActive={column.getIsFiltered()}\n containerAs={'Dropdown'}\n dropdownType={'Icon'}\n defaultShowAllValues={true}\n onAddValueToSelection={newFilterValue => {\n setEnumFilterValue(column, newFilterValue)\n }}\n onRemoveValueFromSelection={valueToRemove => {\n removeEnumFilterValue(column, valueToRemove)\n }}\n onRemoveAllFacetSelections={() => {\n column.setFilterValue(null)\n }}\n onHoverOverValue={noop}\n canMultiSelect={canMultiSelect}\n />\n )\n}\n"],"mappings":";;;;;AAQA,SAAS,EACP,GACA,GACA;CACA,AAAI,EAAO,UAAU,MAAM,uBAEzB,EAAO,gBAAgB,MACjB,IACK,CAAC,GAAG,GAAM,CAAQ,IAEpB,CAAC,CAAQ,CACjB,IAGD,EAAO,eAAe,CAAC,CAAQ,CAAC;AAEpC;AAEA,SAAS,EACP,GACA,GACA;CACA,EAAO,gBAAgB,MAA2C;EAChE,IAAI,GAAM;GACR,IAAM,IAAW,CACf,GAAG,EAAK,QAAO,MAAa,CAAC,EAAQ,GAAW,CAAa,CAAC,CAChE;GACA,IAAI,CAAC,EAAQ,CAAQ,GACnB,OAAO;EAEX;EACA,OAAO;CACT,CAAC;AACH;AAOA,SAAS,EACP,GAIE;CACF,IAAI,GAA2B;EAG7B,IAAM,IAAiB,MAAM,KAAK,EAA0B,OAAO,CAAC,EAAE,MACpE,MAAK,KAAK,CACZ;EACA,OAAO,MAAM,KAAK,EAA0B,QAAQ,CAAC,EAAE,KACpD,OAA6B;GAC5B,OAAO,EAAM;GACb,OAAO,IAAiB,EAAM,KAAK,KAAA;EACrC,EACF;CACF;CACA,OAAO,CAAC;AACV;AASA,SAAgB,EACd,GACA;CAEA,IAAM,EAAE,WAAQ,aAAU,GAEpB,IAAiB,EAAO,UAAU,MAAM,wBAAwB,IAEhE,IAAyB,EAAO,eAAe,GAC/C,IAAe,QACb,KAA0B,CAAC,GACjC,CAAC,CAAsB,CACzB,GAGM,IAAsB,EAAO,uBAAuB;CAuB1D,OACE,kBAAC,GAAD;EACE,YAAY;EACZ,aAtB0D,QAE1D,EAA4B,CAAmB,EAAE,KAC9C,MAA2C;GAC1C,IAAI,IAAsB,EAAW;GACrC,AAAI,EAAO,WAAW,MAAM,mBAC1B,IAAc,EAAO,UAAU,KAAK,eAAe,EAAW,KAAK;GAGrE,IAAM,IAAa,GADQ,KAAgB,CAAC,GAEvB,MACjB,MAAe,MAAgB,EAAW,KAC5C;GAEF,OAAO;IAAE,GAAG;IAAY;IAAa;GAAW;EAClD,CACF,GACF;GAAC;GAAQ;GAAc;EAAmB,CAK3B;EACb,gBAAgB,EAAO,cAAc;EACrC,aAAa;EACb,cAAc;EACd,sBAAsB;EACtB,wBAAuB,MAAkB;GACvC,EAAmB,GAAQ,CAAc;EAC3C;EACA,6BAA4B,MAAiB;GAC3C,EAAsB,GAAQ,CAAa;EAC7C;EACA,kCAAkC;GAChC,EAAO,eAAe,IAAI;EAC5B;EACA,kBAAkB;EACF;CACjB,CAAA;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"StyledTanStackTable.js","names":[],"sources":["../../../src/components/TanStackTable/StyledTanStackTable.tsx"],"sourcesContent":["import {\n StyledTableContainer,\n StyledTableContainerProps,\n} from '@/components/styled/StyledTableContainer'\nimport {\n ColumnSizingState,\n flexRender,\n Row,\n Table,\n} from '@tanstack/react-table'\nimport { useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { MemoizedTableBody, TableBody, TableBodyProps } from './TableBody'\nimport {\n getColumnSizeCssVariable,\n getCommonPinningStyles,\n getHeaderSizeCssVariable,\n} from './TanStackTableUtils'\nimport { StyledTanStackTableSlotProps, StyledTanStackTableSlots } from './types'\n\nexport type StyledTanStackTableProps<TData = unknown, TRowType = Row<TData>> = {\n table: Table<TData>\n styledTableContainerProps?: StyledTableContainerProps\n fullWidth?: boolean\n /**\n * When true, uses `table-layout: auto` so the browser sizes columns to fit their content.\n * Column sizes from TanStack act as minimum widths, and columns expand to fit wider content.\n * Resizing still works — dragging a column sets a new minimum width.\n * Defaults to false (fixed layout).\n */\n autoColumnSizing?: boolean\n slots?: StyledTanStackTableSlots<TData, TRowType>\n slotProps?: StyledTanStackTableSlotProps<TData, TRowType>\n} & Pick<TableBodyProps<TData, TRowType>, 'rows' | 'rowTransform'>\n\n/**\n * Component that renders a styled table using @tanstack/react-table. Pass your table instance into the component and\n * it will render the table with the appropriate headers and rows.\n */\nexport default function StyledTanStackTable<\n TData = unknown,\n TRowType = Row<TData>,\n>(props: StyledTanStackTableProps<TData, TRowType>) {\n const {\n table,\n styledTableContainerProps,\n fullWidth = true,\n autoColumnSizing = false,\n slots = {},\n slotProps = {},\n } = props\n const {\n Thead = 'thead',\n Th = 'th',\n Table = 'table',\n ...tableBodySlots\n } = slots\n const {\n Table: tableSlotProps = {},\n Thead: theadSlotProps = {},\n Th: thSlotProps = {},\n ...tableBodySlotProps\n } = slotProps\n\n const tableBodyProps: TableBodyProps<TData, TRowType> = {\n table,\n slots: tableBodySlots,\n slotProps: tableBodySlotProps,\n rows: props.rows!,\n rowTransform: props.rowTransform!,\n }\n\n /**\n * When autoColumnSizing is true we do a two-phase render:\n * 1. Render with table-layout: auto and no width constraints so the browser\n * natively sizes each column to its content.\n * 2. After the first paint, measure each <th> and write the real pixel widths\n * into TanStack's columnSizing state, then switch to table-layout: fixed.\n *\n * This gives content-based initial sizes while still allowing the user to drag\n * a column narrower than its content.\n */\n const tableRef = useRef<HTMLTableElement>(null)\n\n // Track what columns+visibility combination was last measured so we know when\n // a re-measurement is needed (e.g. columns change or visibility is toggled).\n const columnVisibility = table.getState().columnVisibility\n const [lastMeasuredState, setLastMeasuredState] = useState<{\n columns: typeof table.options.columns\n columnVisibility: typeof columnVisibility\n } | null>(null)\n\n // hasMeasured is true when auto-sizing is disabled (nothing to do) OR when the\n // current columns+visibility matches the last measured snapshot.\n const hasMeasured =\n !autoColumnSizing ||\n (lastMeasuredState?.columns === table.options.columns &&\n lastMeasuredState?.columnVisibility === columnVisibility)\n\n // After the browser has laid out the auto-sized table, capture the widths and\n // switch to fixed layout so that the user can resize below the content width.\n // useLayoutEffect runs synchronously after DOM mutations, before the browser\n // paints, which is required for accurate DOM measurements.\n useLayoutEffect(() => {\n if (!autoColumnSizing || hasMeasured || !tableRef.current) return\n\n const ths = tableRef.current.querySelectorAll(\n ':scope > thead > tr:first-child > th',\n )\n const headers = table.getFlatHeaders()\n const newSizes: ColumnSizingState = {}\n headers.forEach((header, i) => {\n const th = ths[i] as HTMLElement | undefined\n if (th) {\n newSizes[header.column.id] = Math.ceil(th.getBoundingClientRect().width)\n }\n })\n if (Object.keys(newSizes).length > 0) {\n table.setColumnSizing(newSizes)\n setLastMeasuredState({\n columns: table.options.columns,\n columnVisibility,\n })\n }\n }, [autoColumnSizing, columnVisibility, hasMeasured, table])\n\n /**\n * Instead of calling `column.getSize()` on every render for every header\n * and especially every data cell (very expensive),\n * we will calculate all column sizes at once at the root table level in a useMemo\n * and pass the column sizes down as CSS variables to the <table> element.\n *\n * See https://tanstack.com/table/v8/docs/guide/column-sizing#advanced-column-resizing-performance\n */\n const columnSizeVars = useMemo(() => {\n const headers = table.getFlatHeaders()\n const colSizes: { [key: string]: number } = {}\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]\n colSizes[getHeaderSizeCssVariable(header.id)] = header.getSize()\n colSizes[getColumnSizeCssVariable(header.column.id)] =\n header.column.getSize()\n }\n return colSizes\n // Intentionally limit the dependencies to only recompute when the column sizes change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n table.getState().columnSizingInfo,\n table.getState().columnSizing,\n table.getState().columnVisibility, // If a column is added, its width should be recalculated\n ])\n\n // Before measurement: let the browser shrink the table to content width so we\n // can read accurate sizes. After measurement: use the exact measured total.\n let tableWidth: string\n if (fullWidth) {\n tableWidth = '100%'\n } else if (!hasMeasured) {\n tableWidth = 'max-content'\n } else {\n tableWidth = `${table.getTotalSize()}px`\n }\n\n /* When resizing any column we will render this special memoized version of our table body */\n const TableBodyElement = table.getState().columnSizingInfo.isResizingColumn\n ? MemoizedTableBody\n : TableBody\n\n return (\n <StyledTableContainer {...styledTableContainerProps}>\n <Table\n {...tableSlotProps}\n ref={tableRef}\n style={{\n ...columnSizeVars,\n // Pre-measurement: auto layout so the browser can size columns to content.\n // Post-measurement: fixed layout so the user can resize below content width.\n tableLayout: hasMeasured ? 'fixed' : 'auto',\n width: tableWidth,\n ...tableSlotProps['style'],\n }}\n >\n <Thead {...theadSlotProps}>\n {table.getHeaderGroups().map(headerGroup => {\n return (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map(header => (\n <Th\n key={header.id}\n colSpan={header.colSpan}\n {...thSlotProps}\n style={{\n // Pre-measurement: no width hint — let the browser size freely.\n // Post-measurement: exact width from the measured/resized value.\n ...(hasMeasured && {\n width: `calc(var(${getHeaderSizeCssVariable(\n header.id,\n )}) * 1px)`,\n }),\n ...getCommonPinningStyles(header.column),\n ...thSlotProps['style'],\n }}\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {header.column.getCanResize() && (\n <div\n className={`resizer ${\n header.column.getIsResizing() ? 'isResizing' : ''\n }`}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n />\n )}\n </Th>\n ))}\n </tr>\n )\n })}\n </Thead>\n <TableBodyElement<TData, TRowType> {...tableBodyProps} />\n </Table>\n </StyledTableContainer>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"StyledTanStackTable.js","names":[],"sources":["../../../src/components/TanStackTable/StyledTanStackTable.tsx"],"sourcesContent":["import {\n StyledTableContainer,\n StyledTableContainerProps,\n} from '@/components/styled/StyledTableContainer'\nimport {\n ColumnSizingState,\n flexRender,\n Row,\n Table,\n} from '@tanstack/react-table'\nimport { useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { MemoizedTableBody, TableBody, TableBodyProps } from './TableBody'\nimport {\n getColumnSizeCssVariable,\n getCommonPinningStyles,\n getHeaderSizeCssVariable,\n} from './TanStackTableUtils'\nimport { StyledTanStackTableSlotProps, StyledTanStackTableSlots } from './types'\n\nexport type StyledTanStackTableProps<TData = unknown, TRowType = Row<TData>> = {\n table: Table<TData>\n styledTableContainerProps?: StyledTableContainerProps\n fullWidth?: boolean\n /**\n * When true, uses `table-layout: auto` so the browser sizes columns to fit their content.\n * Column sizes from TanStack act as minimum widths, and columns expand to fit wider content.\n * Resizing still works — dragging a column sets a new minimum width.\n * Defaults to false (fixed layout).\n */\n autoColumnSizing?: boolean\n slots?: StyledTanStackTableSlots<TData, TRowType>\n slotProps?: StyledTanStackTableSlotProps<TData, TRowType>\n} & Pick<TableBodyProps<TData, TRowType>, 'rows' | 'rowTransform'>\n\n/**\n * Component that renders a styled table using @tanstack/react-table. Pass your table instance into the component and\n * it will render the table with the appropriate headers and rows.\n */\nexport default function StyledTanStackTable<\n TData = unknown,\n TRowType = Row<TData>,\n>(props: StyledTanStackTableProps<TData, TRowType>) {\n const {\n table,\n styledTableContainerProps,\n fullWidth = true,\n autoColumnSizing = false,\n slots = {},\n slotProps = {},\n } = props\n const {\n Thead = 'thead',\n Th = 'th',\n Table = 'table',\n ...tableBodySlots\n } = slots\n const {\n Table: tableSlotProps = {},\n Thead: theadSlotProps = {},\n Th: thSlotProps = {},\n ...tableBodySlotProps\n } = slotProps\n\n const tableBodyProps: TableBodyProps<TData, TRowType> = {\n table,\n slots: tableBodySlots,\n slotProps: tableBodySlotProps,\n rows: props.rows!,\n rowTransform: props.rowTransform!,\n }\n\n /**\n * When autoColumnSizing is true we do a two-phase render:\n * 1. Render with table-layout: auto and no width constraints so the browser\n * natively sizes each column to its content.\n * 2. After the first paint, measure each <th> and write the real pixel widths\n * into TanStack's columnSizing state, then switch to table-layout: fixed.\n *\n * This gives content-based initial sizes while still allowing the user to drag\n * a column narrower than its content.\n */\n const tableRef = useRef<HTMLTableElement>(null)\n\n // Track what columns+visibility combination was last measured so we know when\n // a re-measurement is needed (e.g. columns change or visibility is toggled).\n const columnVisibility = table.getState().columnVisibility\n const [lastMeasuredState, setLastMeasuredState] = useState<{\n columns: typeof table.options.columns\n columnVisibility: typeof columnVisibility\n } | null>(null)\n\n // hasMeasured is true when auto-sizing is disabled (nothing to do) OR when the\n // current columns+visibility matches the last measured snapshot.\n const hasMeasured =\n !autoColumnSizing ||\n (lastMeasuredState?.columns === table.options.columns &&\n lastMeasuredState?.columnVisibility === columnVisibility)\n\n // After the browser has laid out the auto-sized table, capture the widths and\n // switch to fixed layout so that the user can resize below the content width.\n // useLayoutEffect runs synchronously after DOM mutations, before the browser\n // paints, which is required for accurate DOM measurements.\n useLayoutEffect(() => {\n if (!autoColumnSizing || hasMeasured || !tableRef.current) return\n\n const ths = tableRef.current.querySelectorAll(\n ':scope > thead > tr:first-child > th',\n )\n const headers = table.getFlatHeaders()\n const newSizes: ColumnSizingState = {}\n headers.forEach((header, i) => {\n const th = ths[i] as HTMLElement | undefined\n if (th) {\n newSizes[header.column.id] = Math.ceil(th.getBoundingClientRect().width)\n }\n })\n if (Object.keys(newSizes).length > 0) {\n table.setColumnSizing(newSizes)\n setLastMeasuredState({\n columns: table.options.columns,\n columnVisibility,\n })\n }\n }, [autoColumnSizing, columnVisibility, hasMeasured, table])\n\n /**\n * Instead of calling `column.getSize()` on every render for every header\n * and especially every data cell (very expensive),\n * we will calculate all column sizes at once at the root table level in a useMemo\n * and pass the column sizes down as CSS variables to the <table> element.\n *\n * See https://tanstack.com/table/v8/docs/guide/column-sizing#advanced-column-resizing-performance\n */\n const columnSizeVars = useMemo(() => {\n const headers = table.getFlatHeaders()\n const colSizes: { [key: string]: number } = {}\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]\n colSizes[getHeaderSizeCssVariable(header.id)] = header.getSize()\n colSizes[getColumnSizeCssVariable(header.column.id)] =\n header.column.getSize()\n }\n return colSizes\n // Intentionally limit the dependencies to only recompute when the column sizes change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n table.getState().columnSizingInfo,\n table.getState().columnSizing,\n table.getState().columnVisibility, // If a column is added, its width should be recalculated\n ])\n\n // Before measurement: let the browser shrink the table to content width so we\n // can read accurate sizes. After measurement: use the exact measured total.\n let tableWidth: string\n if (fullWidth) {\n tableWidth = '100%'\n } else if (!hasMeasured) {\n tableWidth = 'max-content'\n } else {\n tableWidth = `${table.getTotalSize()}px`\n }\n\n /* When resizing any column we will render this special memoized version of our table body */\n const TableBodyElement = table.getState().columnSizingInfo.isResizingColumn\n ? MemoizedTableBody\n : TableBody\n\n return (\n <StyledTableContainer {...styledTableContainerProps}>\n <Table\n {...tableSlotProps}\n ref={tableRef}\n style={{\n ...columnSizeVars,\n // Pre-measurement: auto layout so the browser can size columns to content.\n // Post-measurement: fixed layout so the user can resize below content width.\n tableLayout: hasMeasured ? 'fixed' : 'auto',\n width: tableWidth,\n ...tableSlotProps['style'],\n }}\n >\n <Thead {...theadSlotProps}>\n {table.getHeaderGroups().map(headerGroup => {\n return (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map(header => (\n <Th\n key={header.id}\n colSpan={header.colSpan}\n {...thSlotProps}\n style={{\n // Pre-measurement: no width hint — let the browser size freely.\n // Post-measurement: exact width from the measured/resized value.\n ...(hasMeasured && {\n width: `calc(var(${getHeaderSizeCssVariable(\n header.id,\n )}) * 1px)`,\n }),\n ...getCommonPinningStyles(header.column),\n ...thSlotProps['style'],\n }}\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {header.column.getCanResize() && (\n <div\n className={`resizer ${\n header.column.getIsResizing() ? 'isResizing' : ''\n }`}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n />\n )}\n </Th>\n ))}\n </tr>\n )\n })}\n </Thead>\n <TableBodyElement<TData, TRowType> {...tableBodyProps} />\n </Table>\n </StyledTableContainer>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StyledVirtualTanStackTable.js","names":[],"sources":["../../../src/components/TanStackTable/StyledVirtualTanStackTable.tsx"],"sourcesContent":["import { mergeSlotProps } from '@/utils/slots/SlotUtils'\nimport { VirtualItem, Virtualizer } from '@tanstack/react-virtual'\nimport { noop } from 'lodash-es'\nimport React, { useContext } from 'react'\nimport StyledTanStackTable, {\n StyledTanStackTableProps,\n} from './StyledTanStackTable'\n\nimport { TrProps } from './types'\n\ntype StyledVirtualTanStackTableProps<T = unknown> = Omit<\n StyledTanStackTableProps<T, VirtualItem>,\n 'slots' | 'rows' | 'rowTransform'\n> & {\n rowVirtualizer: Virtualizer<any, any>\n onTableContainerScroll?: (target: EventTarget) => void\n}\n\n// Context to pass the row virtualizer to the Tr component\nconst RowVirtualizerContext = React.createContext<\n Virtualizer<any, any> | undefined\n>(undefined)\n\n/**\n * A table row component modified to be used with @tanstack/react-virtual.\n */\nexport function VirtualizedTr<TData = unknown>(\n props: TrProps<TData, VirtualItem>,\n) {\n const { row: virtualItem, tableRow: _tableRow, ...rest } = props\n const rowVirtualizer = useContext(RowVirtualizerContext)\n return (\n <tr\n data-index={virtualItem.index} // needed for dynamic row height measurement\n ref={node => rowVirtualizer?.measureElement(node)} //measure dynamic row height\n {...rest}\n style={{\n ...rest.style,\n display: 'flex',\n position: 'absolute',\n transform: `translateY(${virtualItem.start}px)`, //this should always be a `style` as it changes on scroll\n width: '100%',\n alignItems: 'center',\n }}\n />\n )\n}\n\n/**\n * Stylized table component that is compatible with @tanstack/react-table and @tanstack/react-virtual to display a\n * virtualized table, i.e. a table that uses a virtualizer to only render the DOM nodes that contain data that is visible\n * within the viewport. For cases where the table rows do not need to be virtualized, use {@link StyledTanStackTable}.\n */\nexport default function StyledVirtualTanStackTable<T = unknown>(\n props: StyledVirtualTanStackTableProps<T>,\n) {\n const {\n table,\n styledTableContainerProps,\n fullWidth = true,\n rowVirtualizer,\n slotProps = {},\n onTableContainerScroll = noop,\n } = props\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n return (\n <RowVirtualizerContext.Provider value={rowVirtualizer}>\n <StyledTanStackTable<T, VirtualItem>\n table={table}\n rows={virtualRows}\n rowTransform={row => table.getRowModel().rows[row.index]}\n fullWidth={fullWidth}\n styledTableContainerProps={{\n noStripedRows: true,\n ...styledTableContainerProps,\n style: {\n overflow: 'auto', //our scrollable table container\n position: 'relative', //needed for sticky header\n ...styledTableContainerProps?.style,\n },\n sx: {\n 'thead > tr': {\n display: 'flex',\n width: '100%',\n },\n },\n onScroll: e => onTableContainerScroll(e.target),\n }}\n {...styledTableContainerProps}\n slots={{\n Tr: VirtualizedTr,\n }}\n slotProps={mergeSlotProps(slotProps, {\n Table: {\n style: {\n display: 'grid',\n },\n },\n Thead: {\n style: {\n display: 'grid',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n },\n },\n Th: {\n style: {\n display: 'flex',\n },\n },\n Tbody: {\n style: {\n display: 'grid',\n height: `${rowVirtualizer.getTotalSize()}px`, //tells scrollbar how big the table is\n position: 'relative', //needed for absolute positioning of rows\n },\n },\n })}\n />\n </RowVirtualizerContext.Provider>\n )\n}\n"],"mappings":";;;;;;AAmBA,IAAM,IAAwB,EAAM,cAElC,KAAA,EAAU;AAKZ,SAAgB,EACd,GACA;CACA,IAAM,EAAE,KAAK,GAAa,UAAU,GAAW,GAAG,MAAS,GACrD,IAAiB,EAAW,EAAsB;AACxD,QACE,kBAAC,MAAD;EACE,cAAY,EAAY;EACxB,MAAK,MAAQ,GAAgB,eAAe,EAAK;EACjD,GAAI;EACJ,OAAO;GACL,GAAG,EAAK;GACR,SAAS;GACT,UAAU;GACV,WAAW,cAAc,EAAY,MAAM;GAC3C,OAAO;GACP,YAAY;GACb;EACD,CAAA;;AASN,SAAwB,EACtB,GACA;CACA,IAAM,EACJ,UACA,8BACA,eAAY,IACZ,mBACA,eAAY,EAAE,EACd,4BAAyB,MACvB,GAEE,IAAc,EAAe,iBAAiB;AAEpD,QACE,kBAAC,EAAsB,UAAvB;EAAgC,OAAO;YACrC,kBAAC,GAAD;GACS;GACP,MAAM;GACN,eAAc,MAAO,EAAM,aAAa,CAAC,KAAK,EAAI;GACvC;GACX,2BAA2B;IACzB,eAAe;IACf,GAAG;IACH,OAAO;KACL,UAAU;KACV,UAAU;KACV,GAAG,GAA2B;KAC/B;IACD,IAAI,EACF,cAAc;KACZ,SAAS;KACT,OAAO;KACR,EACF;IACD,WAAU,MAAK,EAAuB,EAAE,OAAO;IAChD;GACD,GAAI;GACJ,OAAO,EACL,IAAI,GACL;GACD,WAAW,EAAe,GAAW;IACnC,OAAO,EACL,OAAO,EACL,SAAS,QACV,EACF;IACD,OAAO,EACL,OAAO;KACL,SAAS;KACT,UAAU;KACV,KAAK;KACL,QAAQ;KACT,EACF;IACD,IAAI,EACF,OAAO,EACL,SAAS,QACV,EACF;IACD,OAAO,EACL,OAAO;KACL,SAAS;KACT,QAAQ,GAAG,EAAe,cAAc,CAAC;KACzC,UAAU;KACX,EACF;IACF,CAAC;GACF,CAAA;EAC6B,CAAA"}
1
+ {"version":3,"file":"StyledVirtualTanStackTable.js","names":[],"sources":["../../../src/components/TanStackTable/StyledVirtualTanStackTable.tsx"],"sourcesContent":["import { mergeSlotProps } from '@/utils/slots/SlotUtils'\nimport { VirtualItem, Virtualizer } from '@tanstack/react-virtual'\nimport { noop } from 'lodash-es'\nimport React, { useContext } from 'react'\nimport StyledTanStackTable, {\n StyledTanStackTableProps,\n} from './StyledTanStackTable'\n\nimport { TrProps } from './types'\n\ntype StyledVirtualTanStackTableProps<T = unknown> = Omit<\n StyledTanStackTableProps<T, VirtualItem>,\n 'slots' | 'rows' | 'rowTransform'\n> & {\n rowVirtualizer: Virtualizer<any, any>\n onTableContainerScroll?: (target: EventTarget) => void\n}\n\n// Context to pass the row virtualizer to the Tr component\nconst RowVirtualizerContext = React.createContext<\n Virtualizer<any, any> | undefined\n>(undefined)\n\n/**\n * A table row component modified to be used with @tanstack/react-virtual.\n */\nexport function VirtualizedTr<TData = unknown>(\n props: TrProps<TData, VirtualItem>,\n) {\n const { row: virtualItem, tableRow: _tableRow, ...rest } = props\n const rowVirtualizer = useContext(RowVirtualizerContext)\n return (\n <tr\n data-index={virtualItem.index} // needed for dynamic row height measurement\n ref={node => rowVirtualizer?.measureElement(node)} //measure dynamic row height\n {...rest}\n style={{\n ...rest.style,\n display: 'flex',\n position: 'absolute',\n transform: `translateY(${virtualItem.start}px)`, //this should always be a `style` as it changes on scroll\n width: '100%',\n alignItems: 'center',\n }}\n />\n )\n}\n\n/**\n * Stylized table component that is compatible with @tanstack/react-table and @tanstack/react-virtual to display a\n * virtualized table, i.e. a table that uses a virtualizer to only render the DOM nodes that contain data that is visible\n * within the viewport. For cases where the table rows do not need to be virtualized, use {@link StyledTanStackTable}.\n */\nexport default function StyledVirtualTanStackTable<T = unknown>(\n props: StyledVirtualTanStackTableProps<T>,\n) {\n const {\n table,\n styledTableContainerProps,\n fullWidth = true,\n rowVirtualizer,\n slotProps = {},\n onTableContainerScroll = noop,\n } = props\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n return (\n <RowVirtualizerContext.Provider value={rowVirtualizer}>\n <StyledTanStackTable<T, VirtualItem>\n table={table}\n rows={virtualRows}\n rowTransform={row => table.getRowModel().rows[row.index]}\n fullWidth={fullWidth}\n styledTableContainerProps={{\n noStripedRows: true,\n ...styledTableContainerProps,\n style: {\n overflow: 'auto', //our scrollable table container\n position: 'relative', //needed for sticky header\n ...styledTableContainerProps?.style,\n },\n sx: {\n 'thead > tr': {\n display: 'flex',\n width: '100%',\n },\n },\n onScroll: e => onTableContainerScroll(e.target),\n }}\n {...styledTableContainerProps}\n slots={{\n Tr: VirtualizedTr,\n }}\n slotProps={mergeSlotProps(slotProps, {\n Table: {\n style: {\n display: 'grid',\n },\n },\n Thead: {\n style: {\n display: 'grid',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n },\n },\n Th: {\n style: {\n display: 'flex',\n },\n },\n Tbody: {\n style: {\n display: 'grid',\n height: `${rowVirtualizer.getTotalSize()}px`, //tells scrollbar how big the table is\n position: 'relative', //needed for absolute positioning of rows\n },\n },\n })}\n />\n </RowVirtualizerContext.Provider>\n )\n}\n"],"mappings":";;;;;;AAmBA,IAAM,IAAwB,EAAM,cAElC,KAAA,CAAS;AAKX,SAAgB,EACd,GACA;CACA,IAAM,EAAE,KAAK,GAAa,UAAU,GAAW,GAAG,MAAS,GACrD,IAAiB,EAAW,CAAqB;CACvD,OACE,kBAAC,MAAD;EACE,cAAY,EAAY;EACxB,MAAK,MAAQ,GAAgB,eAAe,CAAI;EAChD,GAAI;EACJ,OAAO;GACL,GAAG,EAAK;GACR,SAAS;GACT,UAAU;GACV,WAAW,cAAc,EAAY,MAAM;GAC3C,OAAO;GACP,YAAY;EACd;CACD,CAAA;AAEL;AAOA,SAAwB,EACtB,GACA;CACA,IAAM,EACJ,UACA,8BACA,eAAY,IACZ,mBACA,eAAY,CAAC,GACb,4BAAyB,MACvB,GAEE,IAAc,EAAe,gBAAgB;CAEnD,OACE,kBAAC,EAAsB,UAAvB;EAAgC,OAAO;YACrC,kBAAC,GAAD;GACS;GACP,MAAM;GACN,eAAc,MAAO,EAAM,YAAY,EAAE,KAAK,EAAI;GACvC;GACX,2BAA2B;IACzB,eAAe;IACf,GAAG;IACH,OAAO;KACL,UAAU;KACV,UAAU;KACV,GAAG,GAA2B;IAChC;IACA,IAAI,EACF,cAAc;KACZ,SAAS;KACT,OAAO;IACT,EACF;IACA,WAAU,MAAK,EAAuB,EAAE,MAAM;GAChD;GACA,GAAI;GACJ,OAAO,EACL,IAAI,EACN;GACA,WAAW,EAAe,GAAW;IACnC,OAAO,EACL,OAAO,EACL,SAAS,OACX,EACF;IACA,OAAO,EACL,OAAO;KACL,SAAS;KACT,UAAU;KACV,KAAK;KACL,QAAQ;IACV,EACF;IACA,IAAI,EACF,OAAO,EACL,SAAS,OACX,EACF;IACA,OAAO,EACL,OAAO;KACL,SAAS;KACT,QAAQ,GAAG,EAAe,aAAa,EAAE;KACzC,UAAU;IACZ,EACF;GACF,CAAC;EACF,CAAA;CAC6B,CAAA;AAEpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableBody.js","names":[],"sources":["../../../src/components/TanStackTable/TableBody.tsx"],"sourcesContent":["import { getSlotProps } from '@/utils/slots/SlotUtils'\nimport { styled } from '@mui/material'\nimport { Row, Table } from '@tanstack/react-table'\nimport { identity } from 'lodash-es'\nimport { memo } from 'react'\nimport { TableCellRenderer as DefaultTableCellRenderer } from './TableCellRenderer'\nimport {\n TableBodyPropsRowOverride,\n TableBodySlotProps,\n TableBodySlots,\n TrOwnerState,\n} from './types'\n\n// Simple wrapper around 'tr' to prevent forwarding invalid HTML attributes\nconst TableRow = styled('tr', {\n shouldForwardProp: prop => prop !== 'row' && prop !== 'tableRow',\n})({})\n\nexport type TableBodyProps<TData = unknown, TRowType = Row<TData>> = {\n /** The table instance */\n table: Table<TData>\n slots?: TableBodySlots<TData, TRowType>\n slotProps?: TableBodySlotProps<TData, TRowType>\n} & TableBodyPropsRowOverride<TData, TRowType>\n\n/**\n * A table body component for use with @tanstack/react-table. This component renders the rows of the table.\n * @param props\n * @constructor\n */\nexport function TableBody<TData = unknown, TRowType = Row<TData>>(\n props: TableBodyProps<TData, TRowType>,\n) {\n const { table, slots = {}, slotProps = {} } = props\n\n // By default, use TanStack Table Rows and the identity function as a transform.\n // This can be overridden e.g. to accomplish row virtualization.\n const {\n rows = table.getRowModel().rows as TRowType[],\n rowTransform = identity,\n } = props\n\n const {\n Tbody = 'tbody',\n Tr = TableRow,\n TableCellRenderer = DefaultTableCellRenderer<TData>,\n } = slots\n const { Tbody: tbodySlotProps = {}, Tr: _trSlotProps = {} } = slotProps\n\n return (\n <Tbody {...tbodySlotProps}>\n {rows.map((row, index) => {\n const tableRow: Row<TData> | undefined = rowTransform(row)\n\n const trOwnerState: TrOwnerState<TData, TRowType> = { row, tableRow }\n const trSlotProps = getSlotProps(_trSlotProps, trOwnerState)\n\n let mergedClassNames = trSlotProps.className ?? ''\n if (table.options.meta?.getRowClassNames) {\n mergedClassNames =\n `${mergedClassNames} ${table.options.meta.getRowClassNames(\n row,\n )}`.trim()\n }\n\n return (\n <Tr\n key={tableRow?.id ?? index}\n {...trSlotProps}\n row={row}\n tableRow={tableRow}\n className={mergedClassNames}\n >\n {tableRow?.getVisibleCells().map((props, index) => (\n <TableCellRenderer key={index} {...props} />\n ))}\n </Tr>\n )\n })}\n </Tbody>\n )\n}\n\n// special memoized wrapper for our table body that we will use during column resizing\n// see https://tanstack.com/table/v8/docs/guide/column-sizing#advanced-column-resizing-performance\nexport const MemoizedTableBody = memo(TableBody, (prev, next) => {\n return prev.table.options.data === next.table.options.data\n}) as typeof TableBody\n"],"mappings":";;;;;;;AAcA,IAAM,IAAW,EAAO,MAAM,EAC5B,oBAAmB,MAAQ,MAAS,SAAS,MAAS,YACvD,CAAC,CAAC,EAAE,CAAC;AAcN,SAAgB,EACd,GACA;CACA,IAAM,EAAE,UAAO,WAAQ,EAAE,EAAE,eAAY,EAAE,KAAK,GAIxC,EACJ,UAAO,EAAM,aAAa,CAAC,MAC3B,kBAAe,MACb,GAEE,EACJ,WAAQ,SACR,QAAK,GACL,mBAAA,IAAoB,MAClB,GACE,EAAE,OAAO,IAAiB,EAAE,EAAE,IAAI,IAAe,EAAE,KAAK;AAE9D,QACE,kBAAC,GAAD;EAAO,GAAI;YACR,EAAK,KAAK,GAAK,MAAU;GACxB,IAAM,IAAmC,EAAa,EAAI,EAGpD,IAAc,EAAa,GAAc;IADO;IAAK;IACZ,CAAa,EAExD,IAAmB,EAAY,aAAa;AAQhD,UAPI,EAAM,QAAQ,MAAM,qBACtB,IACE,GAAG,EAAiB,GAAG,EAAM,QAAQ,KAAK,iBACxC,EACD,GAAG,MAAM,GAIZ,kBAAC,GAAD;IAEE,GAAI;IACC;IACK;IACV,WAAW;cAEV,GAAU,iBAAiB,CAAC,KAAK,GAAO,MACvC,kBAAC,GAAD,EAA+B,GAAI,GAAS,EAApB,EAAoB,CAC5C;IACC,EATE,GAAU,MAAM,EASlB;IAEP;EACI,CAAA;;AAMZ,IAAa,IAAoB,EAAK,IAAY,GAAM,MAC/C,EAAK,MAAM,QAAQ,SAAS,EAAK,MAAM,QAAQ,KACtD"}
1
+ {"version":3,"file":"TableBody.js","names":[],"sources":["../../../src/components/TanStackTable/TableBody.tsx"],"sourcesContent":["import { getSlotProps } from '@/utils/slots/SlotUtils'\nimport { styled } from '@mui/material'\nimport { Row, Table } from '@tanstack/react-table'\nimport { identity } from 'lodash-es'\nimport { memo } from 'react'\nimport { TableCellRenderer as DefaultTableCellRenderer } from './TableCellRenderer'\nimport {\n TableBodyPropsRowOverride,\n TableBodySlotProps,\n TableBodySlots,\n TrOwnerState,\n} from './types'\n\n// Simple wrapper around 'tr' to prevent forwarding invalid HTML attributes\nconst TableRow = styled('tr', {\n shouldForwardProp: prop => prop !== 'row' && prop !== 'tableRow',\n})({})\n\nexport type TableBodyProps<TData = unknown, TRowType = Row<TData>> = {\n /** The table instance */\n table: Table<TData>\n slots?: TableBodySlots<TData, TRowType>\n slotProps?: TableBodySlotProps<TData, TRowType>\n} & TableBodyPropsRowOverride<TData, TRowType>\n\n/**\n * A table body component for use with @tanstack/react-table. This component renders the rows of the table.\n * @param props\n * @constructor\n */\nexport function TableBody<TData = unknown, TRowType = Row<TData>>(\n props: TableBodyProps<TData, TRowType>,\n) {\n const { table, slots = {}, slotProps = {} } = props\n\n // By default, use TanStack Table Rows and the identity function as a transform.\n // This can be overridden e.g. to accomplish row virtualization.\n const {\n rows = table.getRowModel().rows as TRowType[],\n rowTransform = identity,\n } = props\n\n const {\n Tbody = 'tbody',\n Tr = TableRow,\n TableCellRenderer = DefaultTableCellRenderer<TData>,\n } = slots\n const { Tbody: tbodySlotProps = {}, Tr: _trSlotProps = {} } = slotProps\n\n return (\n <Tbody {...tbodySlotProps}>\n {rows.map((row, index) => {\n const tableRow: Row<TData> | undefined = rowTransform(row)\n\n const trOwnerState: TrOwnerState<TData, TRowType> = { row, tableRow }\n const trSlotProps = getSlotProps(_trSlotProps, trOwnerState)\n\n let mergedClassNames = trSlotProps.className ?? ''\n if (table.options.meta?.getRowClassNames) {\n mergedClassNames =\n `${mergedClassNames} ${table.options.meta.getRowClassNames(\n row,\n )}`.trim()\n }\n\n return (\n <Tr\n key={tableRow?.id ?? index}\n {...trSlotProps}\n row={row}\n tableRow={tableRow}\n className={mergedClassNames}\n >\n {tableRow?.getVisibleCells().map((props, index) => (\n <TableCellRenderer key={index} {...props} />\n ))}\n </Tr>\n )\n })}\n </Tbody>\n )\n}\n\n// special memoized wrapper for our table body that we will use during column resizing\n// see https://tanstack.com/table/v8/docs/guide/column-sizing#advanced-column-resizing-performance\nexport const MemoizedTableBody = memo(TableBody, (prev, next) => {\n return prev.table.options.data === next.table.options.data\n}) as typeof TableBody\n"],"mappings":";;;;;;;AAcA,IAAM,IAAW,EAAO,MAAM,EAC5B,oBAAmB,MAAQ,MAAS,SAAS,MAAS,WACxD,CAAC,EAAE,CAAC,CAAC;AAcL,SAAgB,EACd,GACA;CACA,IAAM,EAAE,UAAO,WAAQ,CAAC,GAAG,eAAY,CAAC,MAAM,GAIxC,EACJ,UAAO,EAAM,YAAY,EAAE,MAC3B,kBAAe,MACb,GAEE,EACJ,WAAQ,SACR,QAAK,GACL,mBAAA,IAAoB,MAClB,GACE,EAAE,OAAO,IAAiB,CAAC,GAAG,IAAI,IAAe,CAAC,MAAM;CAE9D,OACE,kBAAC,GAAD;EAAO,GAAI;YACR,EAAK,KAAK,GAAK,MAAU;GACxB,IAAM,IAAmC,EAAa,CAAG,GAGnD,IAAc,EAAa,GAAc;IADO;IAAK;GACZ,CAAY,GAEvD,IAAmB,EAAY,aAAa;GAQhD,OAPI,EAAM,QAAQ,MAAM,qBACtB,IACE,GAAG,EAAiB,GAAG,EAAM,QAAQ,KAAK,iBACxC,CACF,IAAI,KAAK,IAIX,kBAAC,GAAD;IAEE,GAAI;IACC;IACK;IACV,WAAW;cAEV,GAAU,gBAAgB,EAAE,KAAK,GAAO,MACvC,kBAAC,GAAD,EAA+B,GAAI,EAAQ,GAAnB,CAAmB,CAC5C;GACC,GATG,GAAU,MAAM,CASnB;EAER,CAAC;CACI,CAAA;AAEX;AAIA,IAAa,IAAoB,EAAK,IAAY,GAAM,MAC/C,EAAK,MAAM,QAAQ,SAAS,EAAK,MAAM,QAAQ,IACvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableCellRenderer.js","names":[],"sources":["../../../src/components/TanStackTable/TableCellRenderer.tsx"],"sourcesContent":["import { Skeleton } from '@mui/material'\nimport { Cell, flexRender } from '@tanstack/react-table'\nimport ExpandableTableDataCell from '../SynapseTable/ExpandableTableDataCell'\nimport {\n getColumnSizeCssVariable,\n getCommonPinningStyles,\n} from './TanStackTableUtils'\n\nexport function TableCellRenderer<T = unknown>(cell: Cell<T, unknown>) {\n const getWrapInExpandableTd =\n cell.getContext().table.options.meta?.getWrapInExpandableTd\n const wrapInExpandableTd =\n getWrapInExpandableTd && getWrapInExpandableTd(cell)\n const TableDataCellElement = wrapInExpandableTd\n ? ExpandableTableDataCell\n : 'td'\n\n const renderPlaceholderData =\n cell.getContext().table.options.meta?.renderPlaceholderData\n\n return (\n <TableDataCellElement\n key={cell.id}\n style={{\n width: `calc(var(${getColumnSizeCssVariable(cell.column.id)}) * 1px)`,\n textAlign: cell.column.columnDef.meta?.textAlign,\n ...getCommonPinningStyles(cell.column),\n }}\n >\n {renderPlaceholderData ? (\n <p>\n <Skeleton width={'80%'} height={'20px'} />\n </p>\n ) : (\n flexRender(cell.column.columnDef.cell, cell.getContext())\n )}\n </TableDataCellElement>\n )\n}\n"],"mappings":";;;;;;AAQA,SAAgB,EAA+B,GAAwB;CACrE,IAAM,IACJ,EAAK,YAAY,CAAC,MAAM,QAAQ,MAAM,uBAGlC,IADJ,KAAyB,EAAsB,EAAK,GAElD,IACA,MAEE,IACJ,EAAK,YAAY,CAAC,MAAM,QAAQ,MAAM;AAExC,QACE,kBAAC,GAAD;EAEE,OAAO;GACL,OAAO,YAAY,EAAyB,EAAK,OAAO,GAAG,CAAC;GAC5D,WAAW,EAAK,OAAO,UAAU,MAAM;GACvC,GAAG,EAAuB,EAAK,OAAO;GACvC;YAEA,IACC,kBAAC,KAAD,EAAA,UACE,kBAAC,GAAD;GAAU,OAAO;GAAO,QAAQ;GAAU,CAAA,EACxC,CAAA,GAEJ,EAAW,EAAK,OAAO,UAAU,MAAM,EAAK,YAAY,CAAC;EAEtC,EAdhB,EAAK,GAcW"}
1
+ {"version":3,"file":"TableCellRenderer.js","names":[],"sources":["../../../src/components/TanStackTable/TableCellRenderer.tsx"],"sourcesContent":["import { Skeleton } from '@mui/material'\nimport { Cell, flexRender } from '@tanstack/react-table'\nimport ExpandableTableDataCell from '../SynapseTable/ExpandableTableDataCell'\nimport {\n getColumnSizeCssVariable,\n getCommonPinningStyles,\n} from './TanStackTableUtils'\n\nexport function TableCellRenderer<T = unknown>(cell: Cell<T, unknown>) {\n const getWrapInExpandableTd =\n cell.getContext().table.options.meta?.getWrapInExpandableTd\n const wrapInExpandableTd =\n getWrapInExpandableTd && getWrapInExpandableTd(cell)\n const TableDataCellElement = wrapInExpandableTd\n ? ExpandableTableDataCell\n : 'td'\n\n const renderPlaceholderData =\n cell.getContext().table.options.meta?.renderPlaceholderData\n\n return (\n <TableDataCellElement\n key={cell.id}\n style={{\n width: `calc(var(${getColumnSizeCssVariable(cell.column.id)}) * 1px)`,\n textAlign: cell.column.columnDef.meta?.textAlign,\n ...getCommonPinningStyles(cell.column),\n }}\n >\n {renderPlaceholderData ? (\n <p>\n <Skeleton width={'80%'} height={'20px'} />\n </p>\n ) : (\n flexRender(cell.column.columnDef.cell, cell.getContext())\n )}\n </TableDataCellElement>\n )\n}\n"],"mappings":";;;;;;AAQA,SAAgB,EAA+B,GAAwB;CACrE,IAAM,IACJ,EAAK,WAAW,EAAE,MAAM,QAAQ,MAAM,uBAGlC,IADJ,KAAyB,EAAsB,CAAI,IAEjD,IACA,MAEE,IACJ,EAAK,WAAW,EAAE,MAAM,QAAQ,MAAM;CAExC,OACE,kBAAC,GAAD;EAEE,OAAO;GACL,OAAO,YAAY,EAAyB,EAAK,OAAO,EAAE,EAAE;GAC5D,WAAW,EAAK,OAAO,UAAU,MAAM;GACvC,GAAG,EAAuB,EAAK,MAAM;EACvC;YAEC,IACC,kBAAC,KAAD,EAAA,UACE,kBAAC,GAAD;GAAU,OAAO;GAAO,QAAQ;EAAS,CAAA,EACxC,CAAA,IAEH,EAAW,EAAK,OAAO,UAAU,MAAM,EAAK,WAAW,CAAC;CAEtC,GAdf,EAAK,EAcU;AAE1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"TanStackTableUtils.js","names":[],"sources":["../../../src/components/TanStackTable/TanStackTableUtils.ts"],"sourcesContent":["import { Column } from '@tanstack/react-table'\nimport { CSSProperties } from 'react'\n\nexport function getColumnSizeCssVariable(columnId: string) {\n return `--col-${columnId}-size`\n}\n\nexport function getHeaderSizeCssVariable(headerId: string) {\n return `--header-${headerId}-size`\n}\n\n// Styles for column pinning, retrieved from TanStack docs examples with very minor modifications\n// See https://tanstack.com/table/v8/docs/framework/react/examples/column-pinning-sticky\nexport function getCommonPinningStyles(column: Column<any>): CSSProperties {\n const isPinned = column.getIsPinned()\n const isLastLeftPinnedColumn =\n isPinned === 'left' && column.getIsLastColumn('left')\n const isFirstRightPinnedColumn =\n isPinned === 'right' && column.getIsFirstColumn('right')\n\n return {\n background: isPinned ? 'inherit' : undefined,\n boxShadow: isLastLeftPinnedColumn\n ? '-4px 0 4px -4px gray inset'\n : isFirstRightPinnedColumn\n ? '4px 0 4px -4px gray inset'\n : undefined,\n left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n opacity: isPinned ? 0.95 : 1,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 1 : 0,\n }\n}\n"],"mappings":";AAGA,SAAgB,EAAyB,GAAkB;AACzD,QAAO,SAAS,EAAS;;AAG3B,SAAgB,EAAyB,GAAkB;AACzD,QAAO,YAAY,EAAS;;AAK9B,SAAgB,EAAuB,GAAoC;CACzE,IAAM,IAAW,EAAO,aAAa,EAC/B,IACJ,MAAa,UAAU,EAAO,gBAAgB,OAAO,EACjD,IACJ,MAAa,WAAW,EAAO,iBAAiB,QAAQ;AAE1D,QAAO;EACL,YAAY,IAAW,YAAY,KAAA;EACnC,WAAW,IACP,+BACA,IACE,8BACA,KAAA;EACN,MAAM,MAAa,SAAS,GAAG,EAAO,SAAS,OAAO,CAAC,MAAM,KAAA;EAC7D,OAAO,MAAa,UAAU,GAAG,EAAO,SAAS,QAAQ,CAAC,MAAM,KAAA;EAChE,SAAS,IAAW,MAAO;EAC3B,UAAU,IAAW,WAAW;EAChC,OAAO,EAAO,SAAS;EACvB,QAAQ;EACT"}
1
+ {"version":3,"file":"TanStackTableUtils.js","names":[],"sources":["../../../src/components/TanStackTable/TanStackTableUtils.ts"],"sourcesContent":["import { Column } from '@tanstack/react-table'\nimport { CSSProperties } from 'react'\n\nexport function getColumnSizeCssVariable(columnId: string) {\n return `--col-${columnId}-size`\n}\n\nexport function getHeaderSizeCssVariable(headerId: string) {\n return `--header-${headerId}-size`\n}\n\n// Styles for column pinning, retrieved from TanStack docs examples with very minor modifications\n// See https://tanstack.com/table/v8/docs/framework/react/examples/column-pinning-sticky\nexport function getCommonPinningStyles(column: Column<any>): CSSProperties {\n const isPinned = column.getIsPinned()\n const isLastLeftPinnedColumn =\n isPinned === 'left' && column.getIsLastColumn('left')\n const isFirstRightPinnedColumn =\n isPinned === 'right' && column.getIsFirstColumn('right')\n\n return {\n background: isPinned ? 'inherit' : undefined,\n boxShadow: isLastLeftPinnedColumn\n ? '-4px 0 4px -4px gray inset'\n : isFirstRightPinnedColumn\n ? '4px 0 4px -4px gray inset'\n : undefined,\n left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n opacity: isPinned ? 0.95 : 1,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 1 : 0,\n }\n}\n"],"mappings":";AAGA,SAAgB,EAAyB,GAAkB;CACzD,OAAO,SAAS,EAAS;AAC3B;AAEA,SAAgB,EAAyB,GAAkB;CACzD,OAAO,YAAY,EAAS;AAC9B;AAIA,SAAgB,EAAuB,GAAoC;CACzE,IAAM,IAAW,EAAO,YAAY,GAC9B,IACJ,MAAa,UAAU,EAAO,gBAAgB,MAAM,GAChD,IACJ,MAAa,WAAW,EAAO,iBAAiB,OAAO;CAEzD,OAAO;EACL,YAAY,IAAW,YAAY,KAAA;EACnC,WAAW,IACP,+BACA,IACE,8BACA,KAAA;EACN,MAAM,MAAa,SAAS,GAAG,EAAO,SAAS,MAAM,EAAE,MAAM,KAAA;EAC7D,OAAO,MAAa,UAAU,GAAG,EAAO,SAAS,OAAO,EAAE,MAAM,KAAA;EAChE,SAAS,IAAW,MAAO;EAC3B,UAAU,IAAW,WAAW;EAChC,OAAO,EAAO,QAAQ;EACtB,QAAQ;CACV;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"TeamBadge.js","names":[],"sources":["../../src/components/TeamBadge.tsx"],"sourcesContent":["import { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { Box, Link } from '@mui/material'\nimport { useUserOrTeam } from './UserOrTeamBadge/useUserOrTeam'\n\nexport const AUTHENTICATED_GROUP_DISPLAY_TEXT = 'All registered Synapse users'\nexport const PUBLIC_GROUP_DISPLAY_TEXT = 'Anyone on the web'\n\nexport type TeamBadgeProps = {\n teamId: string | number\n teamName: string\n disableHref?: boolean\n openLinkInNewTab?: boolean\n}\n\nexport default function TeamBadge(props: TeamBadgeProps) {\n const { teamId, openLinkInNewTab } = props\n let { teamName, disableHref } = props\n\n const { specialGroupType, IconComponent } = useUserOrTeam(String(teamId))\n\n if (specialGroupType === 'authenticatedUsers') {\n teamName = AUTHENTICATED_GROUP_DISPLAY_TEXT\n disableHref = true\n } else if (specialGroupType === 'publicGroup') {\n teamName = PUBLIC_GROUP_DISPLAY_TEXT\n disableHref = true\n }\n\n const Tag = disableHref ? 'span' : Link\n\n return (\n <Box\n component={'span'}\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n }}\n >\n <IconComponent />\n <Tag\n style={{ marginLeft: '5px' }}\n href={\n disableHref\n ? undefined\n : `${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Team:${teamId}`\n }\n target={openLinkInNewTab ? '_blank' : ''}\n >\n {teamName}\n </Tag>\n </Box>\n )\n}\n"],"mappings":";;;;;AAIA,IAAa,IAAmC,gCACnC,IAA4B;AASzC,SAAwB,EAAU,GAAuB;CACvD,IAAM,EAAE,WAAQ,wBAAqB,GACjC,EAAE,aAAU,mBAAgB,GAE1B,EAAE,qBAAkB,qBAAkB,EAAc,OAAO,EAAO,CAAC;AAYzE,QAVI,MAAqB,wBACvB,IAAW,GACX,IAAc,MACL,MAAqB,kBAC9B,IAAW,GACX,IAAc,KAMd,kBAAC,GAAD;EACE,WAAW;EACX,IAAI;GACF,SAAS;GACT,YAAY;GACb;YALH,CAOE,kBAAC,GAAD,EAAiB,CAAA,EACjB,kBAXQ,IAAc,SAAS,GAW/B;GACE,OAAO,EAAE,YAAY,OAAO;GAC5B,MACE,IACI,KAAA,IACA,GAAG,EAA2B,OAAO,OAAO;GAElD,QAAQ,IAAmB,WAAW;aAErC;GACG,CAAA,CACF"}
1
+ {"version":3,"file":"TeamBadge.js","names":[],"sources":["../../src/components/TeamBadge.tsx"],"sourcesContent":["import { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { Box, Link } from '@mui/material'\nimport { useUserOrTeam } from './UserOrTeamBadge/useUserOrTeam'\n\nexport const AUTHENTICATED_GROUP_DISPLAY_TEXT = 'All registered Synapse users'\nexport const PUBLIC_GROUP_DISPLAY_TEXT = 'Anyone on the web'\n\nexport type TeamBadgeProps = {\n teamId: string | number\n teamName: string\n disableHref?: boolean\n openLinkInNewTab?: boolean\n}\n\nexport default function TeamBadge(props: TeamBadgeProps) {\n const { teamId, openLinkInNewTab } = props\n let { teamName, disableHref } = props\n\n const { specialGroupType, IconComponent } = useUserOrTeam(String(teamId))\n\n if (specialGroupType === 'authenticatedUsers') {\n teamName = AUTHENTICATED_GROUP_DISPLAY_TEXT\n disableHref = true\n } else if (specialGroupType === 'publicGroup') {\n teamName = PUBLIC_GROUP_DISPLAY_TEXT\n disableHref = true\n }\n\n const Tag = disableHref ? 'span' : Link\n\n return (\n <Box\n component={'span'}\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n }}\n >\n <IconComponent />\n <Tag\n style={{ marginLeft: '5px' }}\n href={\n disableHref\n ? undefined\n : `${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Team:${teamId}`\n }\n target={openLinkInNewTab ? '_blank' : ''}\n >\n {teamName}\n </Tag>\n </Box>\n )\n}\n"],"mappings":";;;;;AAIA,IAAa,IAAmC,gCACnC,IAA4B;AASzC,SAAwB,EAAU,GAAuB;CACvD,IAAM,EAAE,WAAQ,wBAAqB,GACjC,EAAE,aAAU,mBAAgB,GAE1B,EAAE,qBAAkB,qBAAkB,EAAc,OAAO,CAAM,CAAC;CAYxE,OAVI,MAAqB,wBACvB,IAAW,GACX,IAAc,MACL,MAAqB,kBAC9B,IAAW,GACX,IAAc,KAMd,kBAAC,GAAD;EACE,WAAW;EACX,IAAI;GACF,SAAS;GACT,YAAY;EACd;YALF,CAOE,kBAAC,GAAD,CAAgB,CAAA,GAChB,kBAXQ,IAAc,SAAS,GAW/B;GACE,OAAO,EAAE,YAAY,MAAM;GAC3B,MACE,IACI,KAAA,IACA,GAAG,EAA2B,OAAO,OAAO;GAElD,QAAQ,IAAmB,WAAW;aAErC;EACE,CAAA,CACF;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"TeamBadgeOrError.js","names":[],"sources":["../../../src/components/TeamSubjectsSelector/TeamBadgeOrError.tsx"],"sourcesContent":["import { useGetTeam } from '@/synapse-queries'\nimport { ErrorTwoTone } from '@mui/icons-material'\nimport { Skeleton, Stack, Typography } from '@mui/material'\nimport TeamBadge from '../TeamBadge'\n\nexport type TeamBadgeOrErrorProps = {\n teamId: string\n}\n\nexport function TeamBadgeOrError(props: TeamBadgeOrErrorProps) {\n const { teamId } = props\n\n const { data: team, isLoading, error } = useGetTeam(teamId)\n\n if (error) {\n return (\n <Stack\n direction=\"row\"\n role=\"alert\"\n sx={{\n gap: '5px',\n alignItems: 'center',\n }}\n >\n <ErrorTwoTone color=\"error\" />\n <Typography variant=\"smallText1\" color=\"error\">\n {error?.reason || `Error: ${teamId}`}\n </Typography>\n </Stack>\n )\n } else if (isLoading || !team) {\n return <Skeleton width={125} height={30} />\n }\n return <TeamBadge teamId={team.id} teamName={team.name} />\n}\n"],"mappings":";;;;;;;AASA,SAAgB,EAAiB,GAA8B;CAC7D,IAAM,EAAE,cAAW,GAEb,EAAE,MAAM,GAAM,cAAW,aAAU,EAAW,EAAO;AAqB3D,QAnBI,IAEA,kBAAC,GAAD;EACE,WAAU;EACV,MAAK;EACL,IAAI;GACF,KAAK;GACL,YAAY;GACb;YANH,CAQE,kBAAC,GAAD,EAAc,OAAM,SAAU,CAAA,EAC9B,kBAAC,GAAD;GAAY,SAAQ;GAAa,OAAM;aACpC,GAAO,UAAU,UAAU;GACjB,CAAA,CACP;MAED,KAAa,CAAC,IAChB,kBAAC,GAAD;EAAU,OAAO;EAAK,QAAQ;EAAM,CAAA,GAEtC,kBAAC,GAAD;EAAW,QAAQ,EAAK;EAAI,UAAU,EAAK;EAAQ,CAAA"}
1
+ {"version":3,"file":"TeamBadgeOrError.js","names":[],"sources":["../../../src/components/TeamSubjectsSelector/TeamBadgeOrError.tsx"],"sourcesContent":["import { useGetTeam } from '@/synapse-queries'\nimport { ErrorTwoTone } from '@mui/icons-material'\nimport { Skeleton, Stack, Typography } from '@mui/material'\nimport TeamBadge from '../TeamBadge'\n\nexport type TeamBadgeOrErrorProps = {\n teamId: string\n}\n\nexport function TeamBadgeOrError(props: TeamBadgeOrErrorProps) {\n const { teamId } = props\n\n const { data: team, isLoading, error } = useGetTeam(teamId)\n\n if (error) {\n return (\n <Stack\n direction=\"row\"\n role=\"alert\"\n sx={{\n gap: '5px',\n alignItems: 'center',\n }}\n >\n <ErrorTwoTone color=\"error\" />\n <Typography variant=\"smallText1\" color=\"error\">\n {error?.reason || `Error: ${teamId}`}\n </Typography>\n </Stack>\n )\n } else if (isLoading || !team) {\n return <Skeleton width={125} height={30} />\n }\n return <TeamBadge teamId={team.id} teamName={team.name} />\n}\n"],"mappings":";;;;;;;AASA,SAAgB,EAAiB,GAA8B;CAC7D,IAAM,EAAE,cAAW,GAEb,EAAE,MAAM,GAAM,cAAW,aAAU,EAAW,CAAM;CAqB1D,OAnBI,IAEA,kBAAC,GAAD;EACE,WAAU;EACV,MAAK;EACL,IAAI;GACF,KAAK;GACL,YAAY;EACd;YANF,CAQE,kBAAC,GAAD,EAAc,OAAM,QAAS,CAAA,GAC7B,kBAAC,GAAD;GAAY,SAAQ;GAAa,OAAM;aACpC,GAAO,UAAU,UAAU;EAClB,CAAA,CACP;MAEA,KAAa,CAAC,IAChB,kBAAC,GAAD;EAAU,OAAO;EAAK,QAAQ;CAAK,CAAA,IAErC,kBAAC,GAAD;EAAW,QAAQ,EAAK;EAAI,UAAU,EAAK;CAAO,CAAA;AAC3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"TeamSubjectsSelector.js","names":[],"sources":["../../../src/components/TeamSubjectsSelector/TeamSubjectsSelector.tsx"],"sourcesContent":["import { AddCircleTwoTone, HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Button,\n IconButton,\n InputLabel,\n Stack,\n TextField,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n RestrictableObjectDescriptor,\n RestrictableObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { useMemo, useState } from 'react'\nimport IconSvg from '../IconSvg'\nimport { TeamBadgeOrError } from './TeamBadgeOrError'\n\nexport type TeamSubjectsSelectorProps = {\n // will be filtered to only team subjects\n subjects: RestrictableObjectDescriptor[]\n onUpdate: (subjects: RestrictableObjectDescriptor[]) => void\n onUpdateTeamIDsTextbox?: (value: string) => void // called when the team IDs text box is updated\n}\n\nexport const TEAM_ALREADY_SELECTED = (teamId: string) =>\n `Team ${teamId} has already been added to this AR.`\nexport const TEAM_PARSING_ERROR = (teamId: string) =>\n `Parsing errors encountered. Invalid Team ID: ${teamId}`\nexport const NO_TEAMS_SELECTED = 'No teams selected.'\nexport const REMOVE_TEXT = 'Remove from Access Requirement'\nexport const HELP_TEXT = 'Enter Team IDs (i.e. 123, 456)'\nconst teamIdsStringDefault = ''\n\nfunction TeamSubjectsSelector(props: TeamSubjectsSelectorProps) {\n const { subjects, onUpdate, onUpdateTeamIDsTextbox = noop } = props\n const [teamIdsString, setTeamIdsString] =\n useState<string>(teamIdsStringDefault)\n const [error, setError] = useState<string | null>(null)\n\n const teamSubjects = useMemo(() => {\n return subjects.filter(subject => {\n return subject.type === RestrictableObjectType.TEAM ? subject : null\n })\n }, [subjects])\n\n const onChangeTeamIdsTextbox = (value: string) => {\n setTeamIdsString(value)\n onUpdateTeamIDsTextbox(value)\n }\n\n const onRemove = (subjectId: string) => {\n const updatedSubjects = teamSubjects.filter(subject => {\n return subject.id !== subjectId\n })\n onUpdate(updatedSubjects)\n }\n\n const onAddTeams = (teamIdsString: string | null) => {\n const teamIds = teamIdsString?.split(',').map(item => item.trim())\n const dedupedTeamIds = [...new Set(teamIds)]\n if (dedupedTeamIds && dedupedTeamIds.length > 0) {\n const updatedTeamSubjects = [...teamSubjects]\n for (const teamId of dedupedTeamIds) {\n const validId = /^\\d+$/.test(teamId)\n const alreadyAdded = teamSubjects.some(subject => subject.id === teamId)\n if (!validId) {\n setError(TEAM_PARSING_ERROR(teamId))\n return\n } else if (alreadyAdded) {\n setError(TEAM_ALREADY_SELECTED(teamId))\n return\n } else {\n const newSubject: RestrictableObjectDescriptor = {\n id: teamId,\n type: RestrictableObjectType.TEAM,\n }\n updatedTeamSubjects.push(newSubject)\n }\n }\n onChangeTeamIdsTextbox(teamIdsStringDefault)\n onUpdate(updatedTeamSubjects)\n }\n setError(null)\n }\n\n return (\n <>\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: '0px 15px',\n pb: '10px',\n }}\n >\n {teamSubjects.length === 0 && (\n <Typography\n variant=\"body1Italic\"\n sx={{\n pb: 2,\n }}\n >\n {NO_TEAMS_SELECTED}\n </Typography>\n )}\n {teamSubjects.map(subject => {\n return (\n <Stack\n key={subject.id}\n direction=\"row\"\n data-testid=\"selected-team\"\n sx={{\n alignItems: 'center',\n pb: 1,\n }}\n >\n <TeamBadgeOrError teamId={subject.id} />\n <IconButton\n aria-label={REMOVE_TEXT}\n onClick={() => onRemove(subject.id)}\n sx={{\n '&:hover': {\n color: 'error.main',\n },\n }}\n >\n <IconSvg icon={'delete'} fontSize={'inherit'} wrap={false} />\n </IconButton>\n </Stack>\n )\n })}\n </Box>\n <InputLabel htmlFor=\"teamIDs\">Add Team IDs</InputLabel>\n <Stack\n direction=\"row\"\n sx={{\n gap: 1,\n alignItems: 'center',\n mb: 2,\n }}\n >\n <TextField\n id=\"teamIDs\"\n name=\"teamIDs\"\n placeholder={HELP_TEXT}\n value={teamIdsString}\n onChange={event => onChangeTeamIdsTextbox(event.target.value)}\n fullWidth\n />\n <Button\n startIcon={<AddCircleTwoTone />}\n variant=\"outlined\"\n sx={{ flexShrink: 0, height: '53px' }}\n onClick={() => onAddTeams(teamIdsString)}\n disabled={teamIdsString === ''}\n >\n Add Teams\n </Button>\n <Tooltip title={HELP_TEXT} placement=\"right\">\n <HelpOutlineTwoTone sx={{ color: 'grey.600' }} />\n </Tooltip>\n </Stack>\n {error && <Alert severity=\"warning\">{error}</Alert>}\n </>\n )\n}\n\nexport default TeamSubjectsSelector\n"],"mappings":"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"}
1
+ {"version":3,"file":"TeamSubjectsSelector.js","names":[],"sources":["../../../src/components/TeamSubjectsSelector/TeamSubjectsSelector.tsx"],"sourcesContent":["import { AddCircleTwoTone, HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Button,\n IconButton,\n InputLabel,\n Stack,\n TextField,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n RestrictableObjectDescriptor,\n RestrictableObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { useMemo, useState } from 'react'\nimport IconSvg from '../IconSvg'\nimport { TeamBadgeOrError } from './TeamBadgeOrError'\n\nexport type TeamSubjectsSelectorProps = {\n // will be filtered to only team subjects\n subjects: RestrictableObjectDescriptor[]\n onUpdate: (subjects: RestrictableObjectDescriptor[]) => void\n onUpdateTeamIDsTextbox?: (value: string) => void // called when the team IDs text box is updated\n}\n\nexport const TEAM_ALREADY_SELECTED = (teamId: string) =>\n `Team ${teamId} has already been added to this AR.`\nexport const TEAM_PARSING_ERROR = (teamId: string) =>\n `Parsing errors encountered. Invalid Team ID: ${teamId}`\nexport const NO_TEAMS_SELECTED = 'No teams selected.'\nexport const REMOVE_TEXT = 'Remove from Access Requirement'\nexport const HELP_TEXT = 'Enter Team IDs (i.e. 123, 456)'\nconst teamIdsStringDefault = ''\n\nfunction TeamSubjectsSelector(props: TeamSubjectsSelectorProps) {\n const { subjects, onUpdate, onUpdateTeamIDsTextbox = noop } = props\n const [teamIdsString, setTeamIdsString] =\n useState<string>(teamIdsStringDefault)\n const [error, setError] = useState<string | null>(null)\n\n const teamSubjects = useMemo(() => {\n return subjects.filter(subject => {\n return subject.type === RestrictableObjectType.TEAM ? subject : null\n })\n }, [subjects])\n\n const onChangeTeamIdsTextbox = (value: string) => {\n setTeamIdsString(value)\n onUpdateTeamIDsTextbox(value)\n }\n\n const onRemove = (subjectId: string) => {\n const updatedSubjects = teamSubjects.filter(subject => {\n return subject.id !== subjectId\n })\n onUpdate(updatedSubjects)\n }\n\n const onAddTeams = (teamIdsString: string | null) => {\n const teamIds = teamIdsString?.split(',').map(item => item.trim())\n const dedupedTeamIds = [...new Set(teamIds)]\n if (dedupedTeamIds && dedupedTeamIds.length > 0) {\n const updatedTeamSubjects = [...teamSubjects]\n for (const teamId of dedupedTeamIds) {\n const validId = /^\\d+$/.test(teamId)\n const alreadyAdded = teamSubjects.some(subject => subject.id === teamId)\n if (!validId) {\n setError(TEAM_PARSING_ERROR(teamId))\n return\n } else if (alreadyAdded) {\n setError(TEAM_ALREADY_SELECTED(teamId))\n return\n } else {\n const newSubject: RestrictableObjectDescriptor = {\n id: teamId,\n type: RestrictableObjectType.TEAM,\n }\n updatedTeamSubjects.push(newSubject)\n }\n }\n onChangeTeamIdsTextbox(teamIdsStringDefault)\n onUpdate(updatedTeamSubjects)\n }\n setError(null)\n }\n\n return (\n <>\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: '0px 15px',\n pb: '10px',\n }}\n >\n {teamSubjects.length === 0 && (\n <Typography\n variant=\"body1Italic\"\n sx={{\n pb: 2,\n }}\n >\n {NO_TEAMS_SELECTED}\n </Typography>\n )}\n {teamSubjects.map(subject => {\n return (\n <Stack\n key={subject.id}\n direction=\"row\"\n data-testid=\"selected-team\"\n sx={{\n alignItems: 'center',\n pb: 1,\n }}\n >\n <TeamBadgeOrError teamId={subject.id} />\n <IconButton\n aria-label={REMOVE_TEXT}\n onClick={() => onRemove(subject.id)}\n sx={{\n '&:hover': {\n color: 'error.main',\n },\n }}\n >\n <IconSvg icon={'delete'} fontSize={'inherit'} wrap={false} />\n </IconButton>\n </Stack>\n )\n })}\n </Box>\n <InputLabel htmlFor=\"teamIDs\">Add Team IDs</InputLabel>\n <Stack\n direction=\"row\"\n sx={{\n gap: 1,\n alignItems: 'center',\n mb: 2,\n }}\n >\n <TextField\n id=\"teamIDs\"\n name=\"teamIDs\"\n placeholder={HELP_TEXT}\n value={teamIdsString}\n onChange={event => onChangeTeamIdsTextbox(event.target.value)}\n fullWidth\n />\n <Button\n startIcon={<AddCircleTwoTone />}\n variant=\"outlined\"\n sx={{ flexShrink: 0, height: '53px' }}\n onClick={() => onAddTeams(teamIdsString)}\n disabled={teamIdsString === ''}\n >\n Add Teams\n </Button>\n <Tooltip title={HELP_TEXT} placement=\"right\">\n <HelpOutlineTwoTone sx={{ color: 'grey.600' }} />\n </Tooltip>\n </Stack>\n {error && <Alert severity=\"warning\">{error}</Alert>}\n </>\n )\n}\n\nexport default TeamSubjectsSelector\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateComponent.js","names":[],"sources":["../../src/components/TemplateComponent.tsx"],"sourcesContent":["import { useState } from 'react'\n\ntype Props = {\n userId: string\n}\n\nexport default function TemplateComponent({ userId }: Props) {\n const [count, setCount] = useState<number>(0)\n\n return (\n <div>\n <button\n style={{ backgroundColor: 'blue', color: 'white' }}\n onClick={() => setCount(count + 1)}\n >\n Click to increment count!\n </button>\n <p> Count = {count} </p>\n\n <p> Passed in userId = {userId} </p>\n </div>\n )\n}\n"],"mappings":";;;AAMA,SAAwB,EAAkB,EAAE,aAAiB;CAC3D,IAAM,CAAC,GAAO,KAAY,EAAiB,EAAE;AAE7C,QACE,kBAAC,OAAD,EAAA,UAAA;EACE,kBAAC,UAAD;GACE,OAAO;IAAE,iBAAiB;IAAQ,OAAO;IAAS;GAClD,eAAe,EAAS,IAAQ,EAAE;aACnC;GAEQ,CAAA;EACT,kBAAC,KAAD,EAAA,UAAA;GAAG;GAAU;GAAM;GAAK,EAAA,CAAA;EAExB,kBAAC,KAAD,EAAA,UAAA;GAAG;GAAqB;GAAO;GAAK,EAAA,CAAA;EAChC,EAAA,CAAA"}
1
+ {"version":3,"file":"TemplateComponent.js","names":[],"sources":["../../src/components/TemplateComponent.tsx"],"sourcesContent":["import { useState } from 'react'\n\ntype Props = {\n userId: string\n}\n\nexport default function TemplateComponent({ userId }: Props) {\n const [count, setCount] = useState<number>(0)\n\n return (\n <div>\n <button\n style={{ backgroundColor: 'blue', color: 'white' }}\n onClick={() => setCount(count + 1)}\n >\n Click to increment count!\n </button>\n <p> Count = {count} </p>\n\n <p> Passed in userId = {userId} </p>\n </div>\n )\n}\n"],"mappings":";;;AAMA,SAAwB,EAAkB,EAAE,aAAiB;CAC3D,IAAM,CAAC,GAAO,KAAY,EAAiB,CAAC;CAE5C,OACE,kBAAC,OAAD,EAAA,UAAA;EACE,kBAAC,UAAD;GACE,OAAO;IAAE,iBAAiB;IAAQ,OAAO;GAAQ;GACjD,eAAe,EAAS,IAAQ,CAAC;aAClC;EAEO,CAAA;EACR,kBAAC,KAAD,EAAA,UAAA;GAAG;GAAU;GAAM;EAAI,EAAA,CAAA;EAEvB,kBAAC,KAAD,EAAA,UAAA;GAAG;GAAqB;GAAO;EAAI,EAAA,CAAA;CAChC,EAAA,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"TemporaryBanner.js","names":[],"sources":["../../../src/components/TemporaryBanner/TemporaryBanner.tsx"],"sourcesContent":["import React from 'react'\nimport FullWidthAlert from '../FullWidthAlert'\nimport type { FullWidthAlertProps } from '../FullWidthAlert'\n\nexport type TemporaryBannerProps = {\n deadline: string\n content?: React.ReactNode\n} & Partial<FullWidthAlertProps>\n\nconst TemporaryBanner = ({\n deadline,\n content,\n ...props\n}: TemporaryBannerProps): React.ReactNode => {\n const trimmedDeadline = deadline.trim()\n const deadlineDate = /^\\d{4}-\\d{2}-\\d{2}$/.test(trimmedDeadline) // date-only pattern YYYY-MM-DD\n ? // Append a local end-of-day timestamp so \"YYYY-MM-DD\" deadlines last through 11:59 PM.\n new Date(`${trimmedDeadline}T23:59:59.999`)\n : new Date(trimmedDeadline)\n const currentDate = new Date()\n if (isNaN(deadlineDate.getTime())) {\n console.error('TemporaryBanner: Invalid deadline date:', deadline)\n return null\n }\n const isBeforeDeadline = currentDate <= deadlineDate\n\n if (!isBeforeDeadline) {\n return null\n }\n\n if (content) return <>{content}</>\n\n return <FullWidthAlert {...props} />\n}\nexport default TemporaryBanner\n"],"mappings":";;;;AASA,IAAM,KAAmB,EACvB,aACA,YACA,GAAG,QACwC;CAC3C,IAAM,IAAkB,EAAS,MAAM,EACjC,IAAe,sBAAsB,KAAK,EAAgB,mBAE5D,IAAI,KAAK,GAAG,EAAgB,eAAe,GAC3C,IAAI,KAAK,EAAgB,EACvB,oBAAc,IAAI,MAAM;AAa9B,QAZI,MAAM,EAAa,SAAS,CAAC,IAC/B,QAAQ,MAAM,2CAA2C,EAAS,EAC3D,QAEgB,KAAe,IAMpC,IAAgB,kBAAA,GAAA,EAAA,UAAG,GAAW,CAAA,GAE3B,kBAAC,GAAD,EAAgB,GAAI,GAAS,CAAA,GAL3B"}
1
+ {"version":3,"file":"TemporaryBanner.js","names":[],"sources":["../../../src/components/TemporaryBanner/TemporaryBanner.tsx"],"sourcesContent":["import React from 'react'\nimport FullWidthAlert from '../FullWidthAlert'\nimport type { FullWidthAlertProps } from '../FullWidthAlert'\n\nexport type TemporaryBannerProps = {\n deadline: string\n content?: React.ReactNode\n} & Partial<FullWidthAlertProps>\n\nconst TemporaryBanner = ({\n deadline,\n content,\n ...props\n}: TemporaryBannerProps): React.ReactNode => {\n const trimmedDeadline = deadline.trim()\n const deadlineDate = /^\\d{4}-\\d{2}-\\d{2}$/.test(trimmedDeadline) // date-only pattern YYYY-MM-DD\n ? // Append a local end-of-day timestamp so \"YYYY-MM-DD\" deadlines last through 11:59 PM.\n new Date(`${trimmedDeadline}T23:59:59.999`)\n : new Date(trimmedDeadline)\n const currentDate = new Date()\n if (isNaN(deadlineDate.getTime())) {\n console.error('TemporaryBanner: Invalid deadline date:', deadline)\n return null\n }\n const isBeforeDeadline = currentDate <= deadlineDate\n\n if (!isBeforeDeadline) {\n return null\n }\n\n if (content) return <>{content}</>\n\n return <FullWidthAlert {...props} />\n}\nexport default TemporaryBanner\n"],"mappings":";;;;AASA,IAAM,KAAmB,EACvB,aACA,YACA,GAAG,QACwC;CAC3C,IAAM,IAAkB,EAAS,KAAK,GAChC,IAAe,sBAAsB,KAAK,CAAe,oBAE3D,IAAI,KAAK,GAAG,EAAgB,cAAc,IAC1C,IAAI,KAAK,CAAe,GACtB,oBAAc,IAAI,KAAK;CAa7B,OAZI,MAAM,EAAa,QAAQ,CAAC,KAC9B,QAAQ,MAAM,2CAA2C,CAAQ,GAC1D,QAEgB,KAAe,IAMpC,IAAgB,kBAAA,GAAA,EAAA,UAAG,EAAU,CAAA,IAE1B,kBAAC,GAAD,EAAgB,GAAI,EAAQ,CAAA,IAL1B;AAMX"}
@@ -1 +1 @@
1
- {"version":3,"file":"TermsAndConditions.js","names":[],"sources":["../../../src/components/TermsAndConditions/TermsAndConditions.tsx"],"sourcesContent":["import { useGetFullTableQueryResults } from '@/synapse-queries'\nimport {\n BUNDLE_MASK_QUERY_RESULTS,\n URL_TERMS_CONDITIONS_AGREEMENT,\n} from '@/utils/SynapseConstants'\nimport { Alert, AlertTitle, Button, Link, Typography } from '@mui/material'\nimport { useEffect, useState } from 'react'\nimport TermsAndConditionsItem, {\n LoadingItem,\n tcItem,\n} from './TermsAndConditionsItem'\n\nexport type TermsAndConditionsProps = {\n onFormChange: (formComplete: boolean) => void\n termsAndConditionsTableID: string\n termsAndConditionsTableVersion: string\n hideLinkToFullTC?: boolean\n}\n\nfunction TermsAndConditions({\n termsAndConditionsTableID,\n termsAndConditionsTableVersion,\n onFormChange,\n hideLinkToFullTC = false,\n}: TermsAndConditionsProps) {\n const [tcList, setTcList] = useState<tcItem[]>([])\n // Fetch the table data\n const { data, isLoading, error, isError } = useGetFullTableQueryResults(\n {\n entityId: termsAndConditionsTableID,\n query: {\n sql: `SELECT * FROM ${termsAndConditionsTableID}.${termsAndConditionsTableVersion} ORDER BY order asc`,\n },\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n },\n { staleTime: Infinity },\n true, // force this query to be run as the anonymous user (without an access token)\n )\n\n const isTermsAndConditionsTableNotFound = isError && error.status == 404\n\n if (isTermsAndConditionsTableNotFound) {\n // \"Pledge\" Synapse table is unavailable on this stack. Allow agreement to the terms, but we will show a warning below\n onFormChange(true)\n }\n\n // update tcList when data changes (transform)\n useEffect(() => {\n if (data && data.queryResult && data.queryResult.queryResults) {\n const { rows, headers } = data.queryResult.queryResults\n const iconColIndex = headers.findIndex(col => col.name === 'icon')\n const labelColIndex = headers.findIndex(col => col.name === 'label')\n const descriptionColIndex = headers.findIndex(\n col => col.name === 'description',\n )\n const newTcList: tcItem[] = []\n rows.forEach(row => {\n const { values } = row\n const item: tcItem = {\n iconFileHandleId: values[iconColIndex] ?? '',\n label: values[labelColIndex] ?? '',\n description: values[descriptionColIndex] ?? '',\n }\n newTcList.push(item)\n })\n setTcList(newTcList)\n const checkboxCount = newTcList.length\n setCheckboxChecked(getInitialCheckboxState(checkboxCount))\n // disabled all checkbox except the first one\n setCheckboxEnabled(\n getInitialCheckboxState(checkboxCount).fill(true, 0, 1),\n )\n }\n }, [data])\n\n const sageTermsOfService =\n 'https://www.synapse.org/TrustCenter:TermsOfService'\n const trustCenter = 'https://sagebionetworks.org/trust-center'\n const getInitialCheckboxState = (checkboxCount: number) =>\n Array.from(Array(checkboxCount).fill(false))\n let mounted = true\n\n // State variables\n const [checkboxChecked, setCheckboxChecked] = useState<boolean[]>([])\n const [checkboxEnabled, setCheckboxEnabled] = useState<boolean[]>([])\n\n useEffect(() => {\n if (mounted) {\n checkFormCompleted()\n }\n return () => {\n mounted = false\n }\n }, [checkboxEnabled, checkboxChecked])\n\n // Placeholder function to check if all checkboxes are checked and agreement is signed\n const checkFormCompleted = () => {\n const allCheckboxChecked =\n checkboxChecked.length > 0 && !checkboxChecked.includes(false)\n onFormChange(allCheckboxChecked)\n }\n\n const updateCheckboxState = (id: number) => {\n const newState = !checkboxChecked[id]\n const checkboxCount = checkboxChecked.length\n if (newState) {\n // if the checkbox is checked (i.e. newState is true)\n setCheckboxChecked(\n getInitialCheckboxState(checkboxCount).fill(true, 0, id + 1),\n )\n if (id + 2 <= tcList.length) {\n setCheckboxEnabled(\n getInitialCheckboxState(checkboxCount).fill(true, 0, id + 2),\n )\n }\n } else {\n setCheckboxChecked(\n getInitialCheckboxState(checkboxCount).fill(true, 0, id),\n )\n setCheckboxEnabled(\n getInitialCheckboxState(checkboxCount).fill(true, 0, id + 1),\n )\n }\n }\n\n return (\n <section className=\"terms-conditions\">\n <h3 className=\"page-header\">Pledge</h3>\n <form>\n <label>\n I affirm my commitment to Sage&apos;s{' '}\n <Link target=\"_blank\" href={sageTermsOfService}>\n Terms of Service\n </Link>{' '}\n and policies for responsible research and data handling (\n <Link target=\"_blank\" href={trustCenter}>\n Trust Center\n </Link>\n ), including:\n </label>\n {isTermsAndConditionsTableNotFound && (\n <Alert severity=\"warning\">\n <AlertTitle>Source data unavailable</AlertTitle>\n <Typography variant=\"body1\">\n We are unable to display the source table content for the Synapse\n Pledge at this time. Please review the full{' '}\n <Link target=\"_blank\" href={sageTermsOfService}>\n {' '}\n Terms of Service{' '}\n </Link>{' '}\n carefully before proceeding. By clicking \"Agree And Continue,\" you\n confirm that you have read and understood the Terms and Conditions\n for use.\n </Typography>\n </Alert>\n )}\n <ul className=\"term-list\">\n {isLoading && <LoadingItem numLoadingItems={6} />}\n {tcList.length > 0 &&\n tcList.map((item, i) => {\n return (\n <TermsAndConditionsItem\n key={`tc-item-${i}`}\n item={item}\n id={i}\n checked={checkboxChecked[i]}\n enabled={checkboxEnabled[i]}\n termsAndConditionsTableID={termsAndConditionsTableID}\n onChange={updateCheckboxState}\n />\n )\n })}\n </ul>\n {!hideLinkToFullTC && (\n <div className=\"view-terms\">\n <Button\n variant={'contained'}\n href={URL_TERMS_CONDITIONS_AGREEMENT}\n target=\"_blank\"\n >\n View Complete Terms and Conditions for Use\n </Button>\n </div>\n )}\n </form>\n </section>\n )\n}\n\nexport default TermsAndConditions\n"],"mappings":"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"}
1
+ {"version":3,"file":"TermsAndConditions.js","names":[],"sources":["../../../src/components/TermsAndConditions/TermsAndConditions.tsx"],"sourcesContent":["import { useGetFullTableQueryResults } from '@/synapse-queries'\nimport {\n BUNDLE_MASK_QUERY_RESULTS,\n URL_TERMS_CONDITIONS_AGREEMENT,\n} from '@/utils/SynapseConstants'\nimport { Alert, AlertTitle, Button, Link, Typography } from '@mui/material'\nimport { useEffect, useState } from 'react'\nimport TermsAndConditionsItem, {\n LoadingItem,\n tcItem,\n} from './TermsAndConditionsItem'\n\nexport type TermsAndConditionsProps = {\n onFormChange: (formComplete: boolean) => void\n termsAndConditionsTableID: string\n termsAndConditionsTableVersion: string\n hideLinkToFullTC?: boolean\n}\n\nfunction TermsAndConditions({\n termsAndConditionsTableID,\n termsAndConditionsTableVersion,\n onFormChange,\n hideLinkToFullTC = false,\n}: TermsAndConditionsProps) {\n const [tcList, setTcList] = useState<tcItem[]>([])\n // Fetch the table data\n const { data, isLoading, error, isError } = useGetFullTableQueryResults(\n {\n entityId: termsAndConditionsTableID,\n query: {\n sql: `SELECT * FROM ${termsAndConditionsTableID}.${termsAndConditionsTableVersion} ORDER BY order asc`,\n },\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n },\n { staleTime: Infinity },\n true, // force this query to be run as the anonymous user (without an access token)\n )\n\n const isTermsAndConditionsTableNotFound = isError && error.status == 404\n\n if (isTermsAndConditionsTableNotFound) {\n // \"Pledge\" Synapse table is unavailable on this stack. Allow agreement to the terms, but we will show a warning below\n onFormChange(true)\n }\n\n // update tcList when data changes (transform)\n useEffect(() => {\n if (data && data.queryResult && data.queryResult.queryResults) {\n const { rows, headers } = data.queryResult.queryResults\n const iconColIndex = headers.findIndex(col => col.name === 'icon')\n const labelColIndex = headers.findIndex(col => col.name === 'label')\n const descriptionColIndex = headers.findIndex(\n col => col.name === 'description',\n )\n const newTcList: tcItem[] = []\n rows.forEach(row => {\n const { values } = row\n const item: tcItem = {\n iconFileHandleId: values[iconColIndex] ?? '',\n label: values[labelColIndex] ?? '',\n description: values[descriptionColIndex] ?? '',\n }\n newTcList.push(item)\n })\n setTcList(newTcList)\n const checkboxCount = newTcList.length\n setCheckboxChecked(getInitialCheckboxState(checkboxCount))\n // disabled all checkbox except the first one\n setCheckboxEnabled(\n getInitialCheckboxState(checkboxCount).fill(true, 0, 1),\n )\n }\n }, [data])\n\n const sageTermsOfService =\n 'https://www.synapse.org/TrustCenter:TermsOfService'\n const trustCenter = 'https://sagebionetworks.org/trust-center'\n const getInitialCheckboxState = (checkboxCount: number) =>\n Array.from(Array(checkboxCount).fill(false))\n let mounted = true\n\n // State variables\n const [checkboxChecked, setCheckboxChecked] = useState<boolean[]>([])\n const [checkboxEnabled, setCheckboxEnabled] = useState<boolean[]>([])\n\n useEffect(() => {\n if (mounted) {\n checkFormCompleted()\n }\n return () => {\n mounted = false\n }\n }, [checkboxEnabled, checkboxChecked])\n\n // Placeholder function to check if all checkboxes are checked and agreement is signed\n const checkFormCompleted = () => {\n const allCheckboxChecked =\n checkboxChecked.length > 0 && !checkboxChecked.includes(false)\n onFormChange(allCheckboxChecked)\n }\n\n const updateCheckboxState = (id: number) => {\n const newState = !checkboxChecked[id]\n const checkboxCount = checkboxChecked.length\n if (newState) {\n // if the checkbox is checked (i.e. newState is true)\n setCheckboxChecked(\n getInitialCheckboxState(checkboxCount).fill(true, 0, id + 1),\n )\n if (id + 2 <= tcList.length) {\n setCheckboxEnabled(\n getInitialCheckboxState(checkboxCount).fill(true, 0, id + 2),\n )\n }\n } else {\n setCheckboxChecked(\n getInitialCheckboxState(checkboxCount).fill(true, 0, id),\n )\n setCheckboxEnabled(\n getInitialCheckboxState(checkboxCount).fill(true, 0, id + 1),\n )\n }\n }\n\n return (\n <section className=\"terms-conditions\">\n <h3 className=\"page-header\">Pledge</h3>\n <form>\n <label>\n I affirm my commitment to Sage&apos;s{' '}\n <Link target=\"_blank\" href={sageTermsOfService}>\n Terms of Service\n </Link>{' '}\n and policies for responsible research and data handling (\n <Link target=\"_blank\" href={trustCenter}>\n Trust Center\n </Link>\n ), including:\n </label>\n {isTermsAndConditionsTableNotFound && (\n <Alert severity=\"warning\">\n <AlertTitle>Source data unavailable</AlertTitle>\n <Typography variant=\"body1\">\n We are unable to display the source table content for the Synapse\n Pledge at this time. Please review the full{' '}\n <Link target=\"_blank\" href={sageTermsOfService}>\n {' '}\n Terms of Service{' '}\n </Link>{' '}\n carefully before proceeding. By clicking \"Agree And Continue,\" you\n confirm that you have read and understood the Terms and Conditions\n for use.\n </Typography>\n </Alert>\n )}\n <ul className=\"term-list\">\n {isLoading && <LoadingItem numLoadingItems={6} />}\n {tcList.length > 0 &&\n tcList.map((item, i) => {\n return (\n <TermsAndConditionsItem\n key={`tc-item-${i}`}\n item={item}\n id={i}\n checked={checkboxChecked[i]}\n enabled={checkboxEnabled[i]}\n termsAndConditionsTableID={termsAndConditionsTableID}\n onChange={updateCheckboxState}\n />\n )\n })}\n </ul>\n {!hideLinkToFullTC && (\n <div className=\"view-terms\">\n <Button\n variant={'contained'}\n href={URL_TERMS_CONDITIONS_AGREEMENT}\n target=\"_blank\"\n >\n View Complete Terms and Conditions for Use\n </Button>\n </div>\n )}\n </form>\n </section>\n )\n}\n\nexport default TermsAndConditions\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TermsAndConditionsItem.js","names":[],"sources":["../../../src/components/TermsAndConditions/TermsAndConditionsItem.tsx"],"sourcesContent":["import { CheckIcon } from '@/assets/icons/terms/CheckIcon'\nimport { useGetPresignedUrlContentFromFHA } from '@/synapse-queries/file/useFiles'\nimport { Link, Skeleton } from '@mui/material'\nimport { FileHandleAssociateType } from '@sage-bionetworks/synapse-types'\nimport { times } from 'lodash-es'\nimport { MouseEvent, useEffect, useState } from 'react'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\nimport { SkeletonParagraph } from '../Skeleton'\n\nexport type tcItem = {\n iconFileHandleId: string\n label: string\n description: string\n}\n\nexport type TermsAndConditionsItemProps = {\n id: number\n enabled: boolean\n checked: boolean\n item: tcItem\n termsAndConditionsTableID: string\n onChange: (id: number) => void\n}\n\nfunction TermsAndConditionsItem(props: TermsAndConditionsItemProps) {\n const { id, item, enabled, checked, onChange, termsAndConditionsTableID } =\n props\n const { iconFileHandleId, label, description } = item\n const { data: iconFileContent } = useGetPresignedUrlContentFromFHA(\n {\n associateObjectId: termsAndConditionsTableID,\n associateObjectType: FileHandleAssociateType.TableEntity,\n fileHandleId: iconFileHandleId,\n },\n true, // force this query to be run as the anonymous user (without an access token)\n )\n\n const [showDesc, setShowDes] = useState<boolean>(false)\n const [isChecked, setIsChecked] = useState<boolean>(false)\n let mounted = true\n\n useEffect(() => {\n if (mounted) {\n setIsChecked(checked)\n }\n return () => {\n mounted = false\n }\n }, [enabled, checked])\n\n const handleShowDescLink = (e: MouseEvent) => {\n e.preventDefault()\n if (enabled) {\n setShowDes(!showDesc)\n }\n }\n\n const handleCheckboxClick = (e: MouseEvent) => {\n if (enabled) {\n onChange(id)\n }\n }\n\n return (\n <li className={enabled ? 'terms-enabled' : ''}>\n <span\n className=\"terms-icon\"\n dangerouslySetInnerHTML={{ __html: iconFileContent ?? '' }}\n />\n <span className=\"terms-desc\">\n <label id={`toc-item-${id}`}>\n <MarkdownSynapse markdown={label} />\n </label>\n {showDesc && description && (\n <div className=\"terms-desc-content\">\n <MarkdownSynapse markdown={description} />\n </div>\n )}\n {description && (\n <div>\n <Link\n className=\"terms-show-desc highlight-link\"\n href=\"\"\n onClick={handleShowDescLink}\n >\n {showDesc ? 'Show Less' : 'Show More'}\n </Link>\n </div>\n )}\n </span>\n <span className=\"terms-checkbox\">\n <span\n role=\"checkbox\"\n aria-labelledby={`toc-item-${id}`}\n className={isChecked ? 'terms-circle terms-checked' : 'terms-circle'}\n onClick={handleCheckboxClick}\n >\n <CheckIcon />\n </span>\n I agree\n </span>\n </li>\n )\n}\n\nexport function LoadingItem(props: { numLoadingItems: number }) {\n const { numLoadingItems } = props\n return (\n <>\n {times(numLoadingItems).map(index => {\n return (\n <li\n key={index}\n aria-busy=\"true\"\n aria-live=\"polite\"\n data-testid=\"loading-terms-and-conditions\"\n >\n <span className=\"terms-icon\">\n <Skeleton\n variant=\"rectangular\"\n height=\"30px\"\n width=\"30px\"\n sx={{ margin: 'auto' }}\n />\n </span>\n <span className=\"terms-desc\">\n <SkeletonParagraph numRows={5} />\n </span>\n <span className=\"terms-checkbox\">\n <Skeleton\n variant=\"circular\"\n height=\"40px\"\n width=\"40px\"\n sx={{ margin: 'auto' }}\n />\n </span>\n </li>\n )\n })}\n </>\n )\n}\n\nexport default TermsAndConditionsItem\n"],"mappings":";;;;;;;;;;;AAwBA,SAAS,EAAuB,GAAoC;CAClE,IAAM,EAAE,OAAI,SAAM,YAAS,YAAS,aAAU,iCAC5C,GACI,EAAE,qBAAkB,UAAO,mBAAgB,GAC3C,EAAE,MAAM,MAAoB,EAChC;EACE,mBAAmB;EACnB,qBAAqB,EAAwB;EAC7C,cAAc;EACf,EACD,GACD,EAEK,CAAC,GAAU,KAAc,EAAkB,GAAM,EACjD,CAAC,GAAW,KAAgB,EAAkB,GAAM,EACtD,IAAU;AAwBd,QAtBA,SACM,KACF,EAAa,EAAQ,QAEV;AACX,MAAU;KAEX,CAAC,GAAS,EAAQ,CAAC,EAgBpB,kBAAC,MAAD;EAAI,WAAW,IAAU,kBAAkB;YAA3C;GACE,kBAAC,QAAD;IACE,WAAU;IACV,yBAAyB,EAAE,QAAQ,KAAmB,IAAI;IAC1D,CAAA;GACF,kBAAC,QAAD;IAAM,WAAU;cAAhB;KACE,kBAAC,SAAD;MAAO,IAAI,YAAY;gBACrB,kBAAC,GAAD,EAAiB,UAAU,GAAS,CAAA;MAC9B,CAAA;KACP,KAAY,KACX,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD,EAAiB,UAAU,GAAe,CAAA;MACtC,CAAA;KAEP,KACC,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;MACE,WAAU;MACV,MAAK;MACL,UAjCgB,MAAkB;AAE5C,OADA,EAAE,gBAAgB,EACd,KACF,EAAW,CAAC,EAAS;;gBAgCZ,IAAW,cAAc;MACrB,CAAA,EACH,CAAA;KAEH;;GACP,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,QAAD;KACE,MAAK;KACL,mBAAiB,YAAY;KAC7B,WAAW,IAAY,+BAA+B;KACtD,UAtCqB,MAAkB;AAC7C,MAAI,KACF,EAAS,EAAG;;eAsCR,kBAAC,GAAD,EAAa,CAAA;KACR,CAAA,EAAA,UAEF;;GACJ;;;AAIT,SAAgB,EAAY,GAAoC;CAC9D,IAAM,EAAE,uBAAoB;AAC5B,QACE,kBAAA,GAAA,EAAA,UACG,EAAM,EAAgB,CAAC,KAAI,MAExB,kBAAC,MAAD;EAEE,aAAU;EACV,aAAU;EACV,eAAY;YAJd;GAME,kBAAC,QAAD;IAAM,WAAU;cACd,kBAAC,GAAD;KACE,SAAQ;KACR,QAAO;KACP,OAAM;KACN,IAAI,EAAE,QAAQ,QAAQ;KACtB,CAAA;IACG,CAAA;GACP,kBAAC,QAAD;IAAM,WAAU;cACd,kBAAC,GAAD,EAAmB,SAAS,GAAK,CAAA;IAC5B,CAAA;GACP,kBAAC,QAAD;IAAM,WAAU;cACd,kBAAC,GAAD;KACE,SAAQ;KACR,QAAO;KACP,OAAM;KACN,IAAI,EAAE,QAAQ,QAAQ;KACtB,CAAA;IACG,CAAA;GACJ;IAxBE,EAwBF,CAEP,EACD,CAAA"}
1
+ {"version":3,"file":"TermsAndConditionsItem.js","names":[],"sources":["../../../src/components/TermsAndConditions/TermsAndConditionsItem.tsx"],"sourcesContent":["import { CheckIcon } from '@/assets/icons/terms/CheckIcon'\nimport { useGetPresignedUrlContentFromFHA } from '@/synapse-queries/file/useFiles'\nimport { Link, Skeleton } from '@mui/material'\nimport { FileHandleAssociateType } from '@sage-bionetworks/synapse-types'\nimport { times } from 'lodash-es'\nimport { MouseEvent, useEffect, useState } from 'react'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\nimport { SkeletonParagraph } from '../Skeleton'\n\nexport type tcItem = {\n iconFileHandleId: string\n label: string\n description: string\n}\n\nexport type TermsAndConditionsItemProps = {\n id: number\n enabled: boolean\n checked: boolean\n item: tcItem\n termsAndConditionsTableID: string\n onChange: (id: number) => void\n}\n\nfunction TermsAndConditionsItem(props: TermsAndConditionsItemProps) {\n const { id, item, enabled, checked, onChange, termsAndConditionsTableID } =\n props\n const { iconFileHandleId, label, description } = item\n const { data: iconFileContent } = useGetPresignedUrlContentFromFHA(\n {\n associateObjectId: termsAndConditionsTableID,\n associateObjectType: FileHandleAssociateType.TableEntity,\n fileHandleId: iconFileHandleId,\n },\n true, // force this query to be run as the anonymous user (without an access token)\n )\n\n const [showDesc, setShowDes] = useState<boolean>(false)\n const [isChecked, setIsChecked] = useState<boolean>(false)\n let mounted = true\n\n useEffect(() => {\n if (mounted) {\n setIsChecked(checked)\n }\n return () => {\n mounted = false\n }\n }, [enabled, checked])\n\n const handleShowDescLink = (e: MouseEvent) => {\n e.preventDefault()\n if (enabled) {\n setShowDes(!showDesc)\n }\n }\n\n const handleCheckboxClick = (e: MouseEvent) => {\n if (enabled) {\n onChange(id)\n }\n }\n\n return (\n <li className={enabled ? 'terms-enabled' : ''}>\n <span\n className=\"terms-icon\"\n dangerouslySetInnerHTML={{ __html: iconFileContent ?? '' }}\n />\n <span className=\"terms-desc\">\n <label id={`toc-item-${id}`}>\n <MarkdownSynapse markdown={label} />\n </label>\n {showDesc && description && (\n <div className=\"terms-desc-content\">\n <MarkdownSynapse markdown={description} />\n </div>\n )}\n {description && (\n <div>\n <Link\n className=\"terms-show-desc highlight-link\"\n href=\"\"\n onClick={handleShowDescLink}\n >\n {showDesc ? 'Show Less' : 'Show More'}\n </Link>\n </div>\n )}\n </span>\n <span className=\"terms-checkbox\">\n <span\n role=\"checkbox\"\n aria-labelledby={`toc-item-${id}`}\n className={isChecked ? 'terms-circle terms-checked' : 'terms-circle'}\n onClick={handleCheckboxClick}\n >\n <CheckIcon />\n </span>\n I agree\n </span>\n </li>\n )\n}\n\nexport function LoadingItem(props: { numLoadingItems: number }) {\n const { numLoadingItems } = props\n return (\n <>\n {times(numLoadingItems).map(index => {\n return (\n <li\n key={index}\n aria-busy=\"true\"\n aria-live=\"polite\"\n data-testid=\"loading-terms-and-conditions\"\n >\n <span className=\"terms-icon\">\n <Skeleton\n variant=\"rectangular\"\n height=\"30px\"\n width=\"30px\"\n sx={{ margin: 'auto' }}\n />\n </span>\n <span className=\"terms-desc\">\n <SkeletonParagraph numRows={5} />\n </span>\n <span className=\"terms-checkbox\">\n <Skeleton\n variant=\"circular\"\n height=\"40px\"\n width=\"40px\"\n sx={{ margin: 'auto' }}\n />\n </span>\n </li>\n )\n })}\n </>\n )\n}\n\nexport default TermsAndConditionsItem\n"],"mappings":";;;;;;;;;;;AAwBA,SAAS,EAAuB,GAAoC;CAClE,IAAM,EAAE,OAAI,SAAM,YAAS,YAAS,aAAU,iCAC5C,GACI,EAAE,qBAAkB,UAAO,mBAAgB,GAC3C,EAAE,MAAM,MAAoB,EAChC;EACE,mBAAmB;EACnB,qBAAqB,EAAwB;EAC7C,cAAc;CAChB,GACA,EACF,GAEM,CAAC,GAAU,KAAc,EAAkB,EAAK,GAChD,CAAC,GAAW,KAAgB,EAAkB,EAAK,GACrD,IAAU;CAwBd,OAtBA,SACM,KACF,EAAa,CAAO,SAET;EACX,IAAU;CACZ,IACC,CAAC,GAAS,CAAO,CAAC,GAgBnB,kBAAC,MAAD;EAAI,WAAW,IAAU,kBAAkB;YAA3C;GACE,kBAAC,QAAD;IACE,WAAU;IACV,yBAAyB,EAAE,QAAQ,KAAmB,GAAG;GAC1D,CAAA;GACD,kBAAC,QAAD;IAAM,WAAU;cAAhB;KACE,kBAAC,SAAD;MAAO,IAAI,YAAY;gBACrB,kBAAC,GAAD,EAAiB,UAAU,EAAQ,CAAA;KAC9B,CAAA;KACN,KAAY,KACX,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD,EAAiB,UAAU,EAAc,CAAA;KACtC,CAAA;KAEN,KACC,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;MACE,WAAU;MACV,MAAK;MACL,UAjCgB,MAAkB;OAE5C,AADA,EAAE,eAAe,GACb,KACF,EAAW,CAAC,CAAQ;MAExB;gBA8Ba,IAAW,cAAc;KACtB,CAAA,EACH,CAAA;IAEH;;GACN,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACE,kBAAC,QAAD;KACE,MAAK;KACL,mBAAiB,YAAY;KAC7B,WAAW,IAAY,+BAA+B;KACtD,UAtCqB,MAAkB;MAC7C,AAAI,KACF,EAAS,CAAE;KAEf;eAoCQ,kBAAC,GAAD,CAAY,CAAA;IACR,CAAA,GAAC,SAEH;;EACJ;;AAER;AAEA,SAAgB,EAAY,GAAoC;CAC9D,IAAM,EAAE,uBAAoB;CAC5B,OACE,kBAAA,GAAA,EAAA,UACG,EAAM,CAAe,EAAE,KAAI,MAExB,kBAAC,MAAD;EAEE,aAAU;EACV,aAAU;EACV,eAAY;YAJd;GAME,kBAAC,QAAD;IAAM,WAAU;cACd,kBAAC,GAAD;KACE,SAAQ;KACR,QAAO;KACP,OAAM;KACN,IAAI,EAAE,QAAQ,OAAO;IACtB,CAAA;GACG,CAAA;GACN,kBAAC,QAAD;IAAM,WAAU;cACd,kBAAC,GAAD,EAAmB,SAAS,EAAI,CAAA;GAC5B,CAAA;GACN,kBAAC,QAAD;IAAM,WAAU;cACd,kBAAC,GAAD;KACE,SAAQ;KACR,QAAO;KACP,OAAM;KACN,IAAI,EAAE,QAAQ,OAAO;IACtB,CAAA;GACG,CAAA;EACJ;IAxBG,CAwBH,CAEP,EACD,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.js","names":[],"sources":["../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import {\n Box,\n inputBaseClasses,\n TextField as MuiTextField,\n TextFieldProps as MuiTextFieldProps,\n Typography,\n} from '@mui/material'\nimport styles from './TextField.module.scss'\nimport { ReactNode, useId } from 'react'\n\nexport type TextFieldProps = MuiTextFieldProps & {\n /**\n * Neutral supplementary text shown below the label and above the input (similar to an inline tooltip).\n * Always rendered in a neutral color regardless of form state.\n * For error or status messages, use `helperText` instead.\n */\n description?: ReactNode\n maxCharacterCount?: number\n}\n\n/**\n * A styled text field built using MUI components and designed to match the Sage Design System (SDS) input fields.\n *\n * - `label`: Bold label text above the input. Changes color on focus/error/disabled states.\n * - `description`: Neutral supplementary text shown below the label, above the input. Always neutral color.\n * - `helperText`: Status or error message shown below the input. Color-reactive to form state.\n * - `maxCharacterCount`: Renders a character count indicator below the input and sets the `maxLength` on the input.\n */\nexport default function TextField({\n description,\n maxCharacterCount,\n slotProps,\n id: idProp,\n label,\n fullWidth = true,\n className,\n sx,\n value,\n ...rest\n}: TextFieldProps) {\n const generatedId = useId()\n const id = idProp ?? generatedId\n\n const currentLength = typeof value === 'string' ? value.length : 0\n\n const compositeLabel =\n label != null || description != null ? (\n <>\n {label}\n {description != null && (\n <span className={styles.description}>{description}</span>\n )}\n </>\n ) : undefined\n\n return (\n <Box className={className} sx={sx}>\n <MuiTextField\n id={id}\n variant=\"standard\"\n label={compositeLabel}\n fullWidth={fullWidth}\n value={value}\n sx={{\n [`& .${inputBaseClasses.root}`]: {\n // The theme default applies spacing(3) for the floating-label pattern (absolute\n // positioned label). Our label is in document flow (position: relative), so it\n // already occupies vertical space — no top margin needed on the input.\n marginTop: 0,\n },\n }}\n slotProps={{\n ...slotProps,\n htmlInput: {\n maxLength: maxCharacterCount,\n ...slotProps?.htmlInput,\n },\n inputLabel: {\n className: styles.inputLabel,\n ...slotProps?.inputLabel,\n },\n input: {\n disableUnderline: true,\n ...slotProps?.input,\n },\n }}\n {...rest}\n />\n {maxCharacterCount !== undefined && (\n <Typography variant=\"body2\" className={styles.charCount}>\n {currentLength}/{maxCharacterCount}\n </Typography>\n )}\n </Box>\n )\n}\n"],"mappings":";;;;;AA4BA,SAAwB,EAAU,EAChC,gBACA,sBACA,cACA,IAAI,GACJ,UACA,eAAY,IACZ,cACA,OACA,UACA,GAAG,KACc;CACjB,IAAM,IAAc,GAAO,EACrB,IAAK,KAAU,GAEf,IAAgB,OAAO,KAAU,WAAW,EAAM,SAAS;AAYjE,QACE,kBAAC,GAAD;EAAgB;EAAe;YAA/B,CACE,kBAAC,GAAD;GACM;GACJ,SAAQ;GACR,OAdJ,KAAS,QAAQ,KAAe,OAC9B,kBAAA,GAAA,EAAA,UAAA,CACG,GACA,KAAe,QACd,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAc;IAAmB,CAAA,CAE1D,EAAA,CAAA,GACD,KAAA;GAQW;GACJ;GACP,IAAI,GACD,MAAM,EAAiB,SAAS,EAI/B,WAAW,GACZ,EACF;GACD,WAAW;IACT,GAAG;IACH,WAAW;KACT,WAAW;KACX,GAAG,GAAW;KACf;IACD,YAAY;KACV,WAAW,EAAO;KAClB,GAAG,GAAW;KACf;IACD,OAAO;KACL,kBAAkB;KAClB,GAAG,GAAW;KACf;IACF;GACD,GAAI;GACJ,CAAA,EACD,MAAsB,KAAA,KACrB,kBAAC,GAAD;GAAY,SAAQ;GAAQ,WAAW,EAAO;aAA9C;IACG;IAAc;IAAE;IACN;KAEX"}
1
+ {"version":3,"file":"TextField.js","names":[],"sources":["../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import {\n Box,\n inputBaseClasses,\n TextField as MuiTextField,\n TextFieldProps as MuiTextFieldProps,\n Typography,\n} from '@mui/material'\nimport styles from './TextField.module.scss'\nimport { ReactNode, useId } from 'react'\n\nexport type TextFieldProps = MuiTextFieldProps & {\n /**\n * Neutral supplementary text shown below the label and above the input (similar to an inline tooltip).\n * Always rendered in a neutral color regardless of form state.\n * For error or status messages, use `helperText` instead.\n */\n description?: ReactNode\n maxCharacterCount?: number\n}\n\n/**\n * A styled text field built using MUI components and designed to match the Sage Design System (SDS) input fields.\n *\n * - `label`: Bold label text above the input. Changes color on focus/error/disabled states.\n * - `description`: Neutral supplementary text shown below the label, above the input. Always neutral color.\n * - `helperText`: Status or error message shown below the input. Color-reactive to form state.\n * - `maxCharacterCount`: Renders a character count indicator below the input and sets the `maxLength` on the input.\n */\nexport default function TextField({\n description,\n maxCharacterCount,\n slotProps,\n id: idProp,\n label,\n fullWidth = true,\n className,\n sx,\n value,\n ...rest\n}: TextFieldProps) {\n const generatedId = useId()\n const id = idProp ?? generatedId\n\n const currentLength = typeof value === 'string' ? value.length : 0\n\n const compositeLabel =\n label != null || description != null ? (\n <>\n {label}\n {description != null && (\n <span className={styles.description}>{description}</span>\n )}\n </>\n ) : undefined\n\n return (\n <Box className={className} sx={sx}>\n <MuiTextField\n id={id}\n variant=\"standard\"\n label={compositeLabel}\n fullWidth={fullWidth}\n value={value}\n sx={{\n [`& .${inputBaseClasses.root}`]: {\n // The theme default applies spacing(3) for the floating-label pattern (absolute\n // positioned label). Our label is in document flow (position: relative), so it\n // already occupies vertical space — no top margin needed on the input.\n marginTop: 0,\n },\n }}\n slotProps={{\n ...slotProps,\n htmlInput: {\n maxLength: maxCharacterCount,\n ...slotProps?.htmlInput,\n },\n inputLabel: {\n className: styles.inputLabel,\n ...slotProps?.inputLabel,\n },\n input: {\n disableUnderline: true,\n ...slotProps?.input,\n },\n }}\n {...rest}\n />\n {maxCharacterCount !== undefined && (\n <Typography variant=\"body2\" className={styles.charCount}>\n {currentLength}/{maxCharacterCount}\n </Typography>\n )}\n </Box>\n )\n}\n"],"mappings":";;;;;AA4BA,SAAwB,EAAU,EAChC,gBACA,sBACA,cACA,IAAI,GACJ,UACA,eAAY,IACZ,cACA,OACA,UACA,GAAG,KACc;CACjB,IAAM,IAAc,EAAM,GACpB,IAAK,KAAU,GAEf,IAAgB,OAAO,KAAU,WAAW,EAAM,SAAS;CAYjE,OACE,kBAAC,GAAD;EAAgB;EAAe;YAA/B,CACE,kBAAC,GAAD;GACM;GACJ,SAAQ;GACR,OAdJ,KAAS,QAAQ,KAAe,OAC9B,kBAAA,GAAA,EAAA,UAAA,CACG,GACA,KAAe,QACd,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAc;GAAkB,CAAA,CAE1D,EAAA,CAAA,IACA,KAAA;GAQW;GACJ;GACP,IAAI,GACD,MAAM,EAAiB,SAAS,EAI/B,WAAW,EACb,EACF;GACA,WAAW;IACT,GAAG;IACH,WAAW;KACT,WAAW;KACX,GAAG,GAAW;IAChB;IACA,YAAY;KACV,WAAW,EAAO;KAClB,GAAG,GAAW;IAChB;IACA,OAAO;KACL,kBAAkB;KAClB,GAAG,GAAW;IAChB;GACF;GACA,GAAI;EACL,CAAA,GACA,MAAsB,KAAA,KACrB,kBAAC,GAAD;GAAY,SAAQ;GAAQ,WAAW,EAAO;aAA9C;IACG;IAAc;IAAE;GACP;IAEX;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextFieldWithWordLimit.js","names":[],"sources":["../../../src/components/TextField/TextFieldWithWordLimit.tsx"],"sourcesContent":["import {\n Box,\n FormControl,\n Input,\n InputLabel,\n InputProps,\n Typography,\n} from '@mui/material'\nimport FormHelperText from '@mui/material/FormHelperText'\nimport { ChangeEvent, ReactNode, useId, useState } from 'react'\n\n// TODO: In MUI v6, use TextFieldProps and only add `minWords` and `maxWords`.\nexport type TextFieldWithWordLimitProps = InputProps & {\n label?: ReactNode\n helperText?: ReactNode\n minWords?: number\n maxWords?: number\n}\n\nexport function getWordCount(s: string) {\n return (\n s\n .trim()\n .split(/\\W+/)\n // remove empty string(s)\n .filter(s => !!s).length\n )\n}\n\nfunction DisplayedWordCount(props: {\n maxWords?: number\n minWords?: number\n wordCount: number\n}) {\n const { wordCount, maxWords, minWords } = props\n\n let color = 'grey.700'\n if (\n wordCount > 0 &&\n ((minWords != null && wordCount < minWords) ||\n (maxWords != null && wordCount > maxWords))\n ) {\n color = 'error.main'\n } else if (wordCount > 0) {\n color = 'success.main'\n }\n\n let wordCountText = `${wordCount.toLocaleString()}`\n if (maxWords) {\n wordCountText += ` of ${maxWords.toLocaleString()}`\n }\n wordCountText += ' words'\n if (minWords) {\n wordCountText += ` (min. ${minWords.toLocaleString()})`\n }\n\n return (\n <Typography component={'div'} variant={'smallText1'} sx={{ color: color }}>\n {wordCountText}\n </Typography>\n )\n}\n\n/**\n * Wrapper around MUI input components that displays the word count of the input. The appearance of the word count changes\n * based on the validity of the current input.\n * @param props\n * @constructor\n */\nexport default function TextFieldWithWordLimit(\n props: TextFieldWithWordLimitProps,\n) {\n const { minWords, maxWords, label, helperText, ...inputProps } = props\n const { value, onChange } = inputProps\n\n const generatedId = useId()\n const id = props.id ?? generatedId\n\n const helperTextId = id + '-helperText'\n\n const [trackedWordCount, setTrackedWordCount] = useState(0)\n\n const wordCount =\n typeof value === 'string' ? getWordCount(value) : trackedWordCount\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value\n setTrackedWordCount(getWordCount(newValue))\n onChange?.(event)\n }\n\n const inputLabelWithWordCount = (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n width: '100%',\n }}\n >\n <InputLabel sx={{ position: 'static' }} htmlFor={id}>\n {label}\n </InputLabel>\n <DisplayedWordCount\n wordCount={wordCount}\n minWords={minWords}\n maxWords={maxWords}\n />\n </Box>\n )\n\n // TODO: In MUI v6, use MUI TextField and override slots.inputLabel with inputLabelWithWordCount.\n return (\n <FormControl required={props.required} fullWidth={props.fullWidth}>\n {inputLabelWithWordCount}\n <Input\n {...inputProps}\n aria-describedby={helperTextId}\n id={id}\n onChange={handleChange}\n />\n <FormHelperText id={helperTextId}>{props.helperText}</FormHelperText>\n </FormControl>\n )\n}\n"],"mappings":";;;;;AAmBA,SAAgB,EAAa,GAAW;AACtC,QACE,EACG,MAAM,CACN,MAAM,MAAM,CAEZ,QAAO,MAAK,CAAC,CAAC,EAAE,CAAC;;AAIxB,SAAS,EAAmB,GAIzB;CACD,IAAM,EAAE,cAAW,aAAU,gBAAa,GAEtC,IAAQ;AACZ,CACE,IAAY,MACV,KAAY,QAAQ,IAAY,KAC/B,KAAY,QAAQ,IAAY,KAEnC,IAAQ,eACC,IAAY,MACrB,IAAQ;CAGV,IAAI,IAAgB,GAAG,EAAU,gBAAgB;AASjD,QARI,MACF,KAAiB,OAAO,EAAS,gBAAgB,KAEnD,KAAiB,UACb,MACF,KAAiB,UAAU,EAAS,gBAAgB,CAAC,KAIrD,kBAAC,GAAD;EAAY,WAAW;EAAO,SAAS;EAAc,IAAI,EAAS,UAAO;YACtE;EACU,CAAA;;AAUjB,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,aAAU,aAAU,UAAO,eAAY,GAAG,MAAe,GAC3D,EAAE,UAAO,gBAAa,GAEtB,IAAc,GAAO,EACrB,IAAK,EAAM,MAAM,GAEjB,IAAe,IAAK,eAEpB,CAAC,GAAkB,KAAuB,EAAS,EAAE,EAErD,IACJ,OAAO,KAAU,WAAW,EAAa,EAAM,GAAG,GAE9C,KAAgB,MAAyC;EAC7D,IAAM,IAAW,EAAM,OAAO;AAE9B,EADA,EAAoB,EAAa,EAAS,CAAC,EAC3C,IAAW,EAAM;IAGb,IACJ,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,gBAAgB;GAChB,YAAY;GACZ,OAAO;GACR;YANH,CAQE,kBAAC,GAAD;GAAY,IAAI,EAAE,UAAU,UAAU;GAAE,SAAS;aAC9C;GACU,CAAA,EACb,kBAAC,GAAD;GACa;GACD;GACA;GACV,CAAA,CACE;;AAIR,QACE,kBAAC,GAAD;EAAa,UAAU,EAAM;EAAU,WAAW,EAAM;YAAxD;GACG;GACD,kBAAC,GAAD;IACE,GAAI;IACJ,oBAAkB;IACd;IACJ,UAAU;IACV,CAAA;GACF,kBAAC,GAAD;IAAgB,IAAI;cAAe,EAAM;IAA4B,CAAA;GACzD"}
1
+ {"version":3,"file":"TextFieldWithWordLimit.js","names":[],"sources":["../../../src/components/TextField/TextFieldWithWordLimit.tsx"],"sourcesContent":["import {\n Box,\n FormControl,\n Input,\n InputLabel,\n InputProps,\n Typography,\n} from '@mui/material'\nimport FormHelperText from '@mui/material/FormHelperText'\nimport { ChangeEvent, ReactNode, useId, useState } from 'react'\n\n// TODO: In MUI v6, use TextFieldProps and only add `minWords` and `maxWords`.\nexport type TextFieldWithWordLimitProps = InputProps & {\n label?: ReactNode\n helperText?: ReactNode\n minWords?: number\n maxWords?: number\n}\n\nexport function getWordCount(s: string) {\n return (\n s\n .trim()\n .split(/\\W+/)\n // remove empty string(s)\n .filter(s => !!s).length\n )\n}\n\nfunction DisplayedWordCount(props: {\n maxWords?: number\n minWords?: number\n wordCount: number\n}) {\n const { wordCount, maxWords, minWords } = props\n\n let color = 'grey.700'\n if (\n wordCount > 0 &&\n ((minWords != null && wordCount < minWords) ||\n (maxWords != null && wordCount > maxWords))\n ) {\n color = 'error.main'\n } else if (wordCount > 0) {\n color = 'success.main'\n }\n\n let wordCountText = `${wordCount.toLocaleString()}`\n if (maxWords) {\n wordCountText += ` of ${maxWords.toLocaleString()}`\n }\n wordCountText += ' words'\n if (minWords) {\n wordCountText += ` (min. ${minWords.toLocaleString()})`\n }\n\n return (\n <Typography component={'div'} variant={'smallText1'} sx={{ color: color }}>\n {wordCountText}\n </Typography>\n )\n}\n\n/**\n * Wrapper around MUI input components that displays the word count of the input. The appearance of the word count changes\n * based on the validity of the current input.\n * @param props\n * @constructor\n */\nexport default function TextFieldWithWordLimit(\n props: TextFieldWithWordLimitProps,\n) {\n const { minWords, maxWords, label, helperText, ...inputProps } = props\n const { value, onChange } = inputProps\n\n const generatedId = useId()\n const id = props.id ?? generatedId\n\n const helperTextId = id + '-helperText'\n\n const [trackedWordCount, setTrackedWordCount] = useState(0)\n\n const wordCount =\n typeof value === 'string' ? getWordCount(value) : trackedWordCount\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value\n setTrackedWordCount(getWordCount(newValue))\n onChange?.(event)\n }\n\n const inputLabelWithWordCount = (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n width: '100%',\n }}\n >\n <InputLabel sx={{ position: 'static' }} htmlFor={id}>\n {label}\n </InputLabel>\n <DisplayedWordCount\n wordCount={wordCount}\n minWords={minWords}\n maxWords={maxWords}\n />\n </Box>\n )\n\n // TODO: In MUI v6, use MUI TextField and override slots.inputLabel with inputLabelWithWordCount.\n return (\n <FormControl required={props.required} fullWidth={props.fullWidth}>\n {inputLabelWithWordCount}\n <Input\n {...inputProps}\n aria-describedby={helperTextId}\n id={id}\n onChange={handleChange}\n />\n <FormHelperText id={helperTextId}>{props.helperText}</FormHelperText>\n </FormControl>\n )\n}\n"],"mappings":";;;;;AAmBA,SAAgB,EAAa,GAAW;CACtC,OACE,EACG,KAAK,EACL,MAAM,KAAK,EAEX,QAAO,MAAK,CAAC,CAAC,CAAC,EAAE;AAExB;AAEA,SAAS,EAAmB,GAIzB;CACD,IAAM,EAAE,cAAW,aAAU,gBAAa,GAEtC,IAAQ;CACZ,AACE,IAAY,MACV,KAAY,QAAQ,IAAY,KAC/B,KAAY,QAAQ,IAAY,KAEnC,IAAQ,eACC,IAAY,MACrB,IAAQ;CAGV,IAAI,IAAgB,GAAG,EAAU,eAAe;CAShD,OARI,MACF,KAAiB,OAAO,EAAS,eAAe,MAElD,KAAiB,UACb,MACF,KAAiB,UAAU,EAAS,eAAe,EAAE,KAIrD,kBAAC,GAAD;EAAY,WAAW;EAAO,SAAS;EAAc,IAAI,EAAS,SAAM;YACrE;CACS,CAAA;AAEhB;AAQA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,aAAU,aAAU,UAAO,eAAY,GAAG,MAAe,GAC3D,EAAE,UAAO,gBAAa,GAEtB,IAAc,EAAM,GACpB,IAAK,EAAM,MAAM,GAEjB,IAAe,IAAK,eAEpB,CAAC,GAAkB,KAAuB,EAAS,CAAC,GAEpD,IACJ,OAAO,KAAU,WAAW,EAAa,CAAK,IAAI,GAE9C,KAAgB,MAAyC;EAC7D,IAAM,IAAW,EAAM,OAAO;EAE9B,AADA,EAAoB,EAAa,CAAQ,CAAC,GAC1C,IAAW,CAAK;CAClB,GAEM,IACJ,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,gBAAgB;GAChB,YAAY;GACZ,OAAO;EACT;YANF,CAQE,kBAAC,GAAD;GAAY,IAAI,EAAE,UAAU,SAAS;GAAG,SAAS;aAC9C;EACS,CAAA,GACZ,kBAAC,GAAD;GACa;GACD;GACA;EACX,CAAA,CACE;;CAIP,OACE,kBAAC,GAAD;EAAa,UAAU,EAAM;EAAU,WAAW,EAAM;YAAxD;GACG;GACD,kBAAC,GAAD;IACE,GAAI;IACJ,oBAAkB;IACd;IACJ,UAAU;GACX,CAAA;GACD,kBAAC,GAAD;IAAgB,IAAI;cAAe,EAAM;GAA2B,CAAA;EACzD;;AAEjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextToComponentCollapse.js","names":[],"sources":["../../src/components/TextToComponentCollapse.tsx"],"sourcesContent":["import { SxProps, Typography, TypographyOwnProps } from '@mui/material'\nimport { PropsWithChildren } from 'react'\nimport ComponentCollapse from './ComponentCollapse'\n\nexport type TextToComponentCollapseProps = PropsWithChildren<{\n text: string\n defaultVisible?: boolean // default to false (collapsed)\n textVariant?: TypographyOwnProps['variant']\n textSx?: SxProps\n textContainerSx?: SxProps\n collapseBoxSx?: SxProps\n iconSx?: SxProps\n}>\n\n/**\n * Wrap any child components in a collapse, using a Typography as the trigger\n */\nexport default function TextToComponentCollapse({\n text,\n defaultVisible,\n textVariant = 'smallLink',\n textSx,\n textContainerSx,\n collapseBoxSx,\n iconSx,\n children,\n}: TextToComponentCollapseProps) {\n return (\n <ComponentCollapse\n component={\n <Typography variant={textVariant} sx={textSx}>\n {text}\n </Typography>\n }\n componentContainerSx={textContainerSx}\n defaultVisible={defaultVisible}\n collapseBoxSx={collapseBoxSx}\n iconSx={iconSx}\n >\n {children}\n </ComponentCollapse>\n )\n}\n"],"mappings":";;;;AAiBA,SAAwB,EAAwB,EAC9C,SACA,mBACA,iBAAc,aACd,WACA,oBACA,kBACA,WACA,eAC+B;AAC/B,QACE,kBAAC,GAAD;EACE,WACE,kBAAC,GAAD;GAAY,SAAS;GAAa,IAAI;aACnC;GACU,CAAA;EAEf,sBAAsB;EACN;EACD;EACP;EAEP;EACiB,CAAA"}
1
+ {"version":3,"file":"TextToComponentCollapse.js","names":[],"sources":["../../src/components/TextToComponentCollapse.tsx"],"sourcesContent":["import { SxProps, Typography, TypographyOwnProps } from '@mui/material'\nimport { PropsWithChildren } from 'react'\nimport ComponentCollapse from './ComponentCollapse'\n\nexport type TextToComponentCollapseProps = PropsWithChildren<{\n text: string\n defaultVisible?: boolean // default to false (collapsed)\n textVariant?: TypographyOwnProps['variant']\n textSx?: SxProps\n textContainerSx?: SxProps\n collapseBoxSx?: SxProps\n iconSx?: SxProps\n}>\n\n/**\n * Wrap any child components in a collapse, using a Typography as the trigger\n */\nexport default function TextToComponentCollapse({\n text,\n defaultVisible,\n textVariant = 'smallLink',\n textSx,\n textContainerSx,\n collapseBoxSx,\n iconSx,\n children,\n}: TextToComponentCollapseProps) {\n return (\n <ComponentCollapse\n component={\n <Typography variant={textVariant} sx={textSx}>\n {text}\n </Typography>\n }\n componentContainerSx={textContainerSx}\n defaultVisible={defaultVisible}\n collapseBoxSx={collapseBoxSx}\n iconSx={iconSx}\n >\n {children}\n </ComponentCollapse>\n )\n}\n"],"mappings":";;;;AAiBA,SAAwB,EAAwB,EAC9C,SACA,mBACA,iBAAc,aACd,WACA,oBACA,kBACA,WACA,eAC+B;CAC/B,OACE,kBAAC,GAAD;EACE,WACE,kBAAC,GAAD;GAAY,SAAS;GAAa,IAAI;aACnC;EACS,CAAA;EAEd,sBAAsB;EACN;EACD;EACP;EAEP;CACgB,CAAA;AAEvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeGallery.js","names":[],"sources":["../../../src/components/ThemeGallery/ThemeGallery.tsx"],"sourcesContent":["const COLOR_VARS = [\n /* Primary Palette */\n '--synapse-primary-action-color',\n '--synapse-primary-focus-border',\n '--synapse-primary-focus-shadow',\n '--synapse-primary-active',\n '--synapse-primary-100',\n '--synapse-primary-200',\n '--synapse-primary-300',\n '--synapse-primary-400',\n '--synapse-primary-500',\n '--synapse-primary-600',\n '--synapse-primary-700',\n '--synapse-primary-800',\n '--synapse-primary-900',\n\n /* Secondary Palette */\n '--synapse-secondary-action-color',\n '--synapse-secondary-200-hover',\n '--synapse-secondary-100',\n '--synapse-secondary-200',\n '--synapse-secondary-300',\n '--synapse-secondary-400',\n '--synapse-secondary-500',\n '--synapse-secondary-600',\n '--synapse-secondary-700',\n '--synapse-secondary-800',\n '--synapse-secondary-900',\n\n /* Tertiary Palette */\n '--synapse-tertiary-action-color',\n '--synapse-tertiary-100',\n '--synapse-tertiary-200',\n '--synapse-tertiary-300',\n '--synapse-tertiary-400',\n '--synapse-tertiary-500',\n '--synapse-tertiary-600',\n '--synapse-tertiary-700',\n '--synapse-tertiary-800',\n '--synapse-tertiary-900',\n\n /* Alpha Variants */\n '--synapse-primary-action-color-alpha-4',\n '--synapse-primary-action-color-alpha-10',\n '--synapse-primary-alpha-05',\n '--synapse-primary-alpha-08',\n '--synapse-secondary-action-color-alpha-10',\n '--synapse-secondary-action-color-alpha-20',\n '--synapse-secondary-action-color-alpha-50',\n\n /* Status Colors */\n '--synapse-info',\n '--synapse-success',\n '--synapse-warning',\n '--synapse-error',\n '--synapse-green-affirmative',\n '--synapse-yellow-warning',\n '--synapse-red-delete',\n '--synapse-red-required',\n\n /* Grays */\n '--synapse-white',\n '--synapse-black',\n '--synapse-gray-100',\n '--synapse-gray-200',\n '--synapse-gray-300',\n '--synapse-gray-400',\n '--synapse-gray-500',\n '--synapse-gray-600',\n '--synapse-gray-700',\n '--synapse-gray-800',\n '--synapse-gray-900',\n '--synapse-gray-1000',\n '--synapse-dark-gray',\n '--synapse-gray-dark',\n '--synapse-gray-light',\n\n /* UI Specific */\n '--synapse-link-underline-color',\n '--synapse-text-color-dark',\n '--synapse-text-color-disabled',\n '--synapse-active-tab-text',\n '--synapse-inactive-tab-text',\n '--synapse-dropdown-disabled-text',\n]\n\nexport const ThemeGallery = () => {\n return (\n <div\n style={{\n padding: '20px',\n }}\n >\n <h3>Theme Gallery</h3>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(200px, 1fr))',\n gap: '20px',\n marginTop: '20px',\n }}\n >\n {COLOR_VARS.map(v => (\n <div\n key={v}\n style={{\n border: '1px solid #ddd',\n padding: '10px',\n borderRadius: '8px',\n }}\n >\n <div\n style={{\n backgroundColor: `var(${v})`,\n height: '50px',\n borderRadius: '4px',\n border: '1px solid #eee',\n }}\n />\n <code\n style={{ fontSize: '12px', display: 'block', marginTop: '8px' }}\n >\n {v}\n </code>\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],"mappings":";;AAAA,IAAM,IAAa,+sDAoFlB,EAEY,UAET,kBAAC,OAAD;CACE,OAAO,EACL,SAAS,QACV;WAHH,CAKE,kBAAC,MAAD,EAAA,UAAI,iBAAkB,CAAA,EACtB,kBAAC,OAAD;EACE,OAAO;GACL,SAAS;GACT,qBAAqB;GACrB,KAAK;GACL,WAAW;GACZ;YAEA,EAAW,KAAI,MACd,kBAAC,OAAD;GAEE,OAAO;IACL,QAAQ;IACR,SAAS;IACT,cAAc;IACf;aANH,CAQE,kBAAC,OAAD,EACE,OAAO;IACL,iBAAiB,OAAO,EAAE;IAC1B,QAAQ;IACR,cAAc;IACd,QAAQ;IACT,EACD,CAAA,EACF,kBAAC,QAAD;IACE,OAAO;KAAE,UAAU;KAAQ,SAAS;KAAS,WAAW;KAAO;cAE9D;IACI,CAAA,CACH;KApBC,EAoBD,CACN;EACE,CAAA,CACF"}
1
+ {"version":3,"file":"ThemeGallery.js","names":[],"sources":["../../../src/components/ThemeGallery/ThemeGallery.tsx"],"sourcesContent":["const COLOR_VARS = [\n /* Primary Palette */\n '--synapse-primary-action-color',\n '--synapse-primary-focus-border',\n '--synapse-primary-focus-shadow',\n '--synapse-primary-active',\n '--synapse-primary-100',\n '--synapse-primary-200',\n '--synapse-primary-300',\n '--synapse-primary-400',\n '--synapse-primary-500',\n '--synapse-primary-600',\n '--synapse-primary-700',\n '--synapse-primary-800',\n '--synapse-primary-900',\n\n /* Secondary Palette */\n '--synapse-secondary-action-color',\n '--synapse-secondary-200-hover',\n '--synapse-secondary-100',\n '--synapse-secondary-200',\n '--synapse-secondary-300',\n '--synapse-secondary-400',\n '--synapse-secondary-500',\n '--synapse-secondary-600',\n '--synapse-secondary-700',\n '--synapse-secondary-800',\n '--synapse-secondary-900',\n\n /* Tertiary Palette */\n '--synapse-tertiary-action-color',\n '--synapse-tertiary-100',\n '--synapse-tertiary-200',\n '--synapse-tertiary-300',\n '--synapse-tertiary-400',\n '--synapse-tertiary-500',\n '--synapse-tertiary-600',\n '--synapse-tertiary-700',\n '--synapse-tertiary-800',\n '--synapse-tertiary-900',\n\n /* Alpha Variants */\n '--synapse-primary-action-color-alpha-4',\n '--synapse-primary-action-color-alpha-10',\n '--synapse-primary-alpha-05',\n '--synapse-primary-alpha-08',\n '--synapse-secondary-action-color-alpha-10',\n '--synapse-secondary-action-color-alpha-20',\n '--synapse-secondary-action-color-alpha-50',\n\n /* Status Colors */\n '--synapse-info',\n '--synapse-success',\n '--synapse-warning',\n '--synapse-error',\n '--synapse-green-affirmative',\n '--synapse-yellow-warning',\n '--synapse-red-delete',\n '--synapse-red-required',\n\n /* Grays */\n '--synapse-white',\n '--synapse-black',\n '--synapse-gray-100',\n '--synapse-gray-200',\n '--synapse-gray-300',\n '--synapse-gray-400',\n '--synapse-gray-500',\n '--synapse-gray-600',\n '--synapse-gray-700',\n '--synapse-gray-800',\n '--synapse-gray-900',\n '--synapse-gray-1000',\n '--synapse-dark-gray',\n '--synapse-gray-dark',\n '--synapse-gray-light',\n\n /* UI Specific */\n '--synapse-link-underline-color',\n '--synapse-text-color-dark',\n '--synapse-text-color-disabled',\n '--synapse-active-tab-text',\n '--synapse-inactive-tab-text',\n '--synapse-dropdown-disabled-text',\n]\n\nexport const ThemeGallery = () => {\n return (\n <div\n style={{\n padding: '20px',\n }}\n >\n <h3>Theme Gallery</h3>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(200px, 1fr))',\n gap: '20px',\n marginTop: '20px',\n }}\n >\n {COLOR_VARS.map(v => (\n <div\n key={v}\n style={{\n border: '1px solid #ddd',\n padding: '10px',\n borderRadius: '8px',\n }}\n >\n <div\n style={{\n backgroundColor: `var(${v})`,\n height: '50px',\n borderRadius: '4px',\n border: '1px solid #eee',\n }}\n />\n <code\n style={{ fontSize: '12px', display: 'block', marginTop: '8px' }}\n >\n {v}\n </code>\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],"mappings":";;AAAA,IAAM,IAAa,8sDAoFnB,GAEa,UAET,kBAAC,OAAD;CACE,OAAO,EACL,SAAS,OACX;WAHF,CAKE,kBAAC,MAAD,EAAA,UAAI,gBAAiB,CAAA,GACrB,kBAAC,OAAD;EACE,OAAO;GACL,SAAS;GACT,qBAAqB;GACrB,KAAK;GACL,WAAW;EACb;YAEC,EAAW,KAAI,MACd,kBAAC,OAAD;GAEE,OAAO;IACL,QAAQ;IACR,SAAS;IACT,cAAc;GAChB;aANF,CAQE,kBAAC,OAAD,EACE,OAAO;IACL,iBAAiB,OAAO,EAAE;IAC1B,QAAQ;IACR,cAAc;IACd,QAAQ;GACV,EACD,CAAA,GACD,kBAAC,QAAD;IACE,OAAO;KAAE,UAAU;KAAQ,SAAS;KAAS,WAAW;IAAM;cAE7D;GACG,CAAA,CACH;KApBE,CAoBF,CACN;CACE,CAAA,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimelineLegendItem.js","names":[],"sources":["../../../src/components/TimelinePlot/TimelineLegendItem.tsx"],"sourcesContent":["import React from 'react'\nimport { Box } from '@mui/system'\nimport { Typography } from '@mui/material'\n\ntype TimelineLegendItemProps = {\n color: string\n phaseName: string | null\n}\nconst TimelineLegendItem = ({\n color,\n phaseName,\n}: TimelineLegendItemProps): React.ReactNode => {\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: '7px' }}>\n <Box\n sx={{\n backgroundColor: color,\n width: '20px',\n height: '20px',\n }}\n />\n <Typography variant=\"body1\">{phaseName?.toUpperCase()}</Typography>\n </Box>\n )\n}\n\nexport default TimelineLegendItem\n"],"mappings":";;;;;AAQA,IAAM,KAAsB,EAC1B,UACA,mBAGE,kBAAC,GAAD;CAAK,IAAI;EAAE,SAAS;EAAQ,YAAY;EAAU,KAAK;EAAO;WAA9D,CACE,kBAAC,GAAD,EACE,IAAI;EACF,iBAAiB;EACjB,OAAO;EACP,QAAQ;EACT,EACD,CAAA,EACF,kBAAC,GAAD;EAAY,SAAQ;YAAS,GAAW,aAAa;EAAc,CAAA,CAC/D"}
1
+ {"version":3,"file":"TimelineLegendItem.js","names":[],"sources":["../../../src/components/TimelinePlot/TimelineLegendItem.tsx"],"sourcesContent":["import React from 'react'\nimport { Box } from '@mui/system'\nimport { Typography } from '@mui/material'\n\ntype TimelineLegendItemProps = {\n color: string\n phaseName: string | null\n}\nconst TimelineLegendItem = ({\n color,\n phaseName,\n}: TimelineLegendItemProps): React.ReactNode => {\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: '7px' }}>\n <Box\n sx={{\n backgroundColor: color,\n width: '20px',\n height: '20px',\n }}\n />\n <Typography variant=\"body1\">{phaseName?.toUpperCase()}</Typography>\n </Box>\n )\n}\n\nexport default TimelineLegendItem\n"],"mappings":";;;;;AAQA,IAAM,KAAsB,EAC1B,UACA,mBAGE,kBAAC,GAAD;CAAK,IAAI;EAAE,SAAS;EAAQ,YAAY;EAAU,KAAK;CAAM;WAA7D,CACE,kBAAC,GAAD,EACE,IAAI;EACF,iBAAiB;EACjB,OAAO;EACP,QAAQ;CACV,EACD,CAAA,GACD,kBAAC,GAAD;EAAY,SAAQ;YAAS,GAAW,YAAY;CAAc,CAAA,CAC/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimelinePhase.js","names":[],"sources":["../../../src/components/TimelinePlot/TimelinePhase.tsx"],"sourcesContent":["import React from 'react'\nimport { OBSERVATION_CARD } from '@/utils/SynapseConstants'\nimport { Dialog, DialogContent } from '@mui/material'\nimport {\n ColumnSingleValueFilterOperator,\n Row,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs, { ManipulateType } from 'dayjs'\nimport Plotly, { Layout, PlotData } from 'plotly.js-basic-dist'\nimport { useMemo, useRef, useState } from 'react'\nimport CardContainerLogic from '../CardContainerLogic'\nimport Plot from '../Plot/Plot'\nimport { ObservationCardSchema } from '../row_renderers/ObservationCard'\n\ntype TimepointData = {\n timepoints: dayjs.Dayjs[]\n hoverOverIndex: number\n}\n\nconst getTimepointData = (\n start: dayjs.Dayjs,\n rowData: Row[],\n schema: ObservationCardSchema,\n hoverEventRowId?: number, //if supplied, will return the index of this row\n): TimepointData => {\n let hoverOverIndex = -1\n const timepoints = rowData.map((row, index) => {\n const time = parseFloat(row.values[schema.observationTime]!)\n const timeUnit = row.values[schema.observationTimeUnits]\n if (row.rowId == hoverEventRowId) {\n hoverOverIndex = index\n }\n return start.add(time, timeUnit as ManipulateType)\n })\n return {\n timepoints,\n hoverOverIndex,\n }\n}\n\nexport const getMaxDate = (timepoints: dayjs.Dayjs[]) => {\n if (timepoints.length == 0) {\n return dayjs().add(1, 'days')\n }\n return timepoints.reduce(\n (maxDateItem: dayjs.Dayjs, currentDateItem: dayjs.Dayjs) => {\n if (!maxDateItem || currentDateItem.isAfter(maxDateItem)) {\n return currentDateItem\n }\n return maxDateItem\n },\n )\n}\n\nconst getTimelineData = (timepointData: TimepointData, rowData: Row[]) => {\n // If this phase has no data, return an empty data line\n if (\n timepointData.timepoints == undefined ||\n timepointData.timepoints.length == 0\n ) {\n return [\n {\n x: [dayjs().format()],\n y: [0.5],\n mode: 'lines',\n line: {\n color: 'blue',\n width: 2,\n },\n customdata: [],\n hoverinfo: 'none',\n },\n ]\n }\n\n // first combine all of the Rows that share the same timepoint\n const combinedData: Record<string, Row[]> = timepointData.timepoints.reduce(\n (result, currentTimepoint, index) => {\n const resultRecord = result as Record<string, Row[]>\n if (!resultRecord[currentTimepoint.format()]) {\n resultRecord[currentTimepoint.format()] = []\n }\n resultRecord[currentTimepoint.format()].push(rowData[index])\n return result\n },\n {},\n )\n\n const data = timepointData.timepoints.map((timepoint, index) => {\n const utcFormattedTimepoint = timepoint.format()\n const isHoveredOver = index == timepointData.hoverOverIndex\n const rows = combinedData[utcFormattedTimepoint]\n const rowIds = rows.map(row => {\n return row.rowId\n })\n return {\n x: [utcFormattedTimepoint, utcFormattedTimepoint, utcFormattedTimepoint],\n y: [0, 0.5, 1],\n mode: 'lines',\n line: {\n color: isHoveredOver ? 'black' : 'gray',\n width: isHoveredOver ? 2 : 1,\n },\n // Add event into in the customdata\n customdata: [rowIds, rowIds, rowIds],\n // but tell Plotly that we do not want it to show a hover tooltip (we're going to handle this)\n hoverinfo: 'none',\n }\n })\n return data\n}\n\nconst getLayout = (\n start: dayjs.Dayjs,\n end: dayjs.Dayjs,\n color: string,\n timelineData: Plotly.Data[],\n rowData: Row[],\n schema: ObservationCardSchema,\n): Partial<Layout> => {\n const xTickVals = timelineData.map(value => {\n // return the utcFormattedTimepoint\n return (value as PlotData).x[0]\n })\n const xTickText = timelineData.map(value => {\n const rowIds = (value as PlotData).customdata[0] as number[] | undefined\n if (rowIds && rowIds.length > 0) {\n const count = rowIds.length\n const rows = rowData?.filter(row => {\n return rowIds[0] == row.rowId\n })\n if (rows && rows.length > 0) {\n const row = rows[0]\n const time = parseFloat(row.values[schema.observationTime]!)\n const timeUnits = row.values[\n schema.observationTimeUnits\n ] as ManipulateType\n const countString = count > 1 ? `(${count})` : ''\n return `${time} ${timeUnits} ${countString}`\n }\n }\n return ''\n })\n\n return {\n hovermode: 'closest',\n dragmode: false, //disallow interaction\n showlegend: false,\n xaxis: {\n showgrid: false,\n showticklabels: true,\n showline: false,\n zeroline: false,\n tickvals: xTickVals,\n ticktext: xTickText,\n tickangle: -45,\n },\n\n yaxis: {\n range: [0, 1.25],\n showgrid: false,\n zeroline: false,\n showline: false,\n showticklabels: false,\n },\n // Each phase has a shape\n shapes: [\n {\n type: 'rect',\n x0: start.subtract(end.diff(start) / 10).format(), // add 10% to the left side of the graph\n x1: end.add(end.diff(start) / 3).format(), // add 33% to right side of the graph\n y0: 0.25,\n y1: 0.75,\n fillcolor: color,\n opacity: 0.8,\n line: {\n width: 0,\n },\n },\n ],\n margin: {\n l: 0,\n r: 0,\n t: 60,\n b: 60,\n },\n // autosize: false,\n }\n}\n\ntype TimelinePhaseProps = {\n name: string\n color: string\n rowData: Row[]\n schema: ObservationCardSchema\n widthPx: number\n sql: string\n}\n\nconst TimelinePhase = ({\n color,\n rowData,\n schema,\n widthPx,\n sql,\n}: TimelinePhaseProps): React.ReactNode => {\n const [clickEvent, setClickEvent] = useState<Plotly.PlotMouseEvent>()\n const [hoverEvent, setHoverEvent] = useState<Plotly.PlotHoverEvent>()\n const [plotKey, setPlotKey] = useState(1)\n const start = dayjs()\n // hide the hover UI if we detect that the user moves the mouse outside of this component boundary\n const componentRef = useRef<HTMLDivElement>(null)\n const rowIds = clickEvent?.points[0].customdata as unknown as (\n | number\n | undefined\n )[]\n const selectedRows = rowData?.filter(row => {\n return rowIds?.includes(row.rowId)\n })\n\n const hoverEventRowIds = hoverEvent?.points[0].customdata as unknown as (\n | number\n | undefined\n )[]\n\n const timepointData = useMemo(() => {\n return getTimepointData(\n start,\n rowData,\n schema,\n hoverEventRowIds?.length > 0 ? hoverEventRowIds[0] : undefined,\n )\n }, [hoverEventRowIds, rowData, schema, start])\n\n const end = getMaxDate(timepointData.timepoints)\n\n const timelineData = useMemo(() => {\n return getTimelineData(timepointData, rowData)\n }, [timepointData, rowData])\n\n const selectedRowIds = selectedRows.map(row => row.rowId!)\n\n return (\n <div ref={componentRef} style={{ width: widthPx }}>\n <Plot\n key={`Plot-${color}-${plotKey}`}\n style={{ width: widthPx, height: '220px' }}\n data={timelineData}\n layout={getLayout(start, end, color, timelineData, rowData, schema)}\n config={{ displayModeBar: false }}\n useResizeHandler={true}\n onClick={eventData => {\n setClickEvent(eventData)\n setHoverEvent(undefined)\n }}\n // PORTALS-2861: To avoid the plot handling the double-click, change the key so the Plotly graph (gd) associated\n // to the click event is invalid.\n onDoubleClick={() => {\n setPlotKey(plotKey + 1)\n }}\n onHover={eventData => {\n setHoverEvent(eventData)\n }}\n onUnhover={() => {\n setHoverEvent(undefined)\n }}\n />\n <Dialog\n onClose={() => setClickEvent(undefined)}\n open={selectedRows && selectedRows.length > 0}\n >\n <DialogContent>\n <CardContainerLogic\n topLevelEnumeratedFacetToFilter={{ columnName: 'observationType' }}\n sql={sql}\n searchParams={{ ['ROW_ID']: selectedRowIds.map(String).join(',') }}\n sqlOperator={ColumnSingleValueFilterOperator.IN}\n lockedColumn={{ columnName: 'ROW_ID' }}\n cardConfiguration={{ type: OBSERVATION_CARD }}\n initialLimit={3}\n />\n </DialogContent>\n </Dialog>\n </div>\n )\n}\n\nexport default TimelinePhase\n"],"mappings":"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"}
1
+ {"version":3,"file":"TimelinePhase.js","names":[],"sources":["../../../src/components/TimelinePlot/TimelinePhase.tsx"],"sourcesContent":["import React from 'react'\nimport { OBSERVATION_CARD } from '@/utils/SynapseConstants'\nimport { Dialog, DialogContent } from '@mui/material'\nimport {\n ColumnSingleValueFilterOperator,\n Row,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs, { ManipulateType } from 'dayjs'\nimport Plotly, { Layout, PlotData } from 'plotly.js-basic-dist'\nimport { useMemo, useRef, useState } from 'react'\nimport CardContainerLogic from '../CardContainerLogic'\nimport Plot from '../Plot/Plot'\nimport { ObservationCardSchema } from '../row_renderers/ObservationCard'\n\ntype TimepointData = {\n timepoints: dayjs.Dayjs[]\n hoverOverIndex: number\n}\n\nconst getTimepointData = (\n start: dayjs.Dayjs,\n rowData: Row[],\n schema: ObservationCardSchema,\n hoverEventRowId?: number, //if supplied, will return the index of this row\n): TimepointData => {\n let hoverOverIndex = -1\n const timepoints = rowData.map((row, index) => {\n const time = parseFloat(row.values[schema.observationTime]!)\n const timeUnit = row.values[schema.observationTimeUnits]\n if (row.rowId == hoverEventRowId) {\n hoverOverIndex = index\n }\n return start.add(time, timeUnit as ManipulateType)\n })\n return {\n timepoints,\n hoverOverIndex,\n }\n}\n\nexport const getMaxDate = (timepoints: dayjs.Dayjs[]) => {\n if (timepoints.length == 0) {\n return dayjs().add(1, 'days')\n }\n return timepoints.reduce(\n (maxDateItem: dayjs.Dayjs, currentDateItem: dayjs.Dayjs) => {\n if (!maxDateItem || currentDateItem.isAfter(maxDateItem)) {\n return currentDateItem\n }\n return maxDateItem\n },\n )\n}\n\nconst getTimelineData = (timepointData: TimepointData, rowData: Row[]) => {\n // If this phase has no data, return an empty data line\n if (\n timepointData.timepoints == undefined ||\n timepointData.timepoints.length == 0\n ) {\n return [\n {\n x: [dayjs().format()],\n y: [0.5],\n mode: 'lines',\n line: {\n color: 'blue',\n width: 2,\n },\n customdata: [],\n hoverinfo: 'none',\n },\n ]\n }\n\n // first combine all of the Rows that share the same timepoint\n const combinedData: Record<string, Row[]> = timepointData.timepoints.reduce(\n (result, currentTimepoint, index) => {\n const resultRecord = result as Record<string, Row[]>\n if (!resultRecord[currentTimepoint.format()]) {\n resultRecord[currentTimepoint.format()] = []\n }\n resultRecord[currentTimepoint.format()].push(rowData[index])\n return result\n },\n {},\n )\n\n const data = timepointData.timepoints.map((timepoint, index) => {\n const utcFormattedTimepoint = timepoint.format()\n const isHoveredOver = index == timepointData.hoverOverIndex\n const rows = combinedData[utcFormattedTimepoint]\n const rowIds = rows.map(row => {\n return row.rowId\n })\n return {\n x: [utcFormattedTimepoint, utcFormattedTimepoint, utcFormattedTimepoint],\n y: [0, 0.5, 1],\n mode: 'lines',\n line: {\n color: isHoveredOver ? 'black' : 'gray',\n width: isHoveredOver ? 2 : 1,\n },\n // Add event into in the customdata\n customdata: [rowIds, rowIds, rowIds],\n // but tell Plotly that we do not want it to show a hover tooltip (we're going to handle this)\n hoverinfo: 'none',\n }\n })\n return data\n}\n\nconst getLayout = (\n start: dayjs.Dayjs,\n end: dayjs.Dayjs,\n color: string,\n timelineData: Plotly.Data[],\n rowData: Row[],\n schema: ObservationCardSchema,\n): Partial<Layout> => {\n const xTickVals = timelineData.map(value => {\n // return the utcFormattedTimepoint\n return (value as PlotData).x[0]\n })\n const xTickText = timelineData.map(value => {\n const rowIds = (value as PlotData).customdata[0] as number[] | undefined\n if (rowIds && rowIds.length > 0) {\n const count = rowIds.length\n const rows = rowData?.filter(row => {\n return rowIds[0] == row.rowId\n })\n if (rows && rows.length > 0) {\n const row = rows[0]\n const time = parseFloat(row.values[schema.observationTime]!)\n const timeUnits = row.values[\n schema.observationTimeUnits\n ] as ManipulateType\n const countString = count > 1 ? `(${count})` : ''\n return `${time} ${timeUnits} ${countString}`\n }\n }\n return ''\n })\n\n return {\n hovermode: 'closest',\n dragmode: false, //disallow interaction\n showlegend: false,\n xaxis: {\n showgrid: false,\n showticklabels: true,\n showline: false,\n zeroline: false,\n tickvals: xTickVals,\n ticktext: xTickText,\n tickangle: -45,\n },\n\n yaxis: {\n range: [0, 1.25],\n showgrid: false,\n zeroline: false,\n showline: false,\n showticklabels: false,\n },\n // Each phase has a shape\n shapes: [\n {\n type: 'rect',\n x0: start.subtract(end.diff(start) / 10).format(), // add 10% to the left side of the graph\n x1: end.add(end.diff(start) / 3).format(), // add 33% to right side of the graph\n y0: 0.25,\n y1: 0.75,\n fillcolor: color,\n opacity: 0.8,\n line: {\n width: 0,\n },\n },\n ],\n margin: {\n l: 0,\n r: 0,\n t: 60,\n b: 60,\n },\n // autosize: false,\n }\n}\n\ntype TimelinePhaseProps = {\n name: string\n color: string\n rowData: Row[]\n schema: ObservationCardSchema\n widthPx: number\n sql: string\n}\n\nconst TimelinePhase = ({\n color,\n rowData,\n schema,\n widthPx,\n sql,\n}: TimelinePhaseProps): React.ReactNode => {\n const [clickEvent, setClickEvent] = useState<Plotly.PlotMouseEvent>()\n const [hoverEvent, setHoverEvent] = useState<Plotly.PlotHoverEvent>()\n const [plotKey, setPlotKey] = useState(1)\n const start = dayjs()\n // hide the hover UI if we detect that the user moves the mouse outside of this component boundary\n const componentRef = useRef<HTMLDivElement>(null)\n const rowIds = clickEvent?.points[0].customdata as unknown as (\n | number\n | undefined\n )[]\n const selectedRows = rowData?.filter(row => {\n return rowIds?.includes(row.rowId)\n })\n\n const hoverEventRowIds = hoverEvent?.points[0].customdata as unknown as (\n | number\n | undefined\n )[]\n\n const timepointData = useMemo(() => {\n return getTimepointData(\n start,\n rowData,\n schema,\n hoverEventRowIds?.length > 0 ? hoverEventRowIds[0] : undefined,\n )\n }, [hoverEventRowIds, rowData, schema, start])\n\n const end = getMaxDate(timepointData.timepoints)\n\n const timelineData = useMemo(() => {\n return getTimelineData(timepointData, rowData)\n }, [timepointData, rowData])\n\n const selectedRowIds = selectedRows.map(row => row.rowId!)\n\n return (\n <div ref={componentRef} style={{ width: widthPx }}>\n <Plot\n key={`Plot-${color}-${plotKey}`}\n style={{ width: widthPx, height: '220px' }}\n data={timelineData}\n layout={getLayout(start, end, color, timelineData, rowData, schema)}\n config={{ displayModeBar: false }}\n useResizeHandler={true}\n onClick={eventData => {\n setClickEvent(eventData)\n setHoverEvent(undefined)\n }}\n // PORTALS-2861: To avoid the plot handling the double-click, change the key so the Plotly graph (gd) associated\n // to the click event is invalid.\n onDoubleClick={() => {\n setPlotKey(plotKey + 1)\n }}\n onHover={eventData => {\n setHoverEvent(eventData)\n }}\n onUnhover={() => {\n setHoverEvent(undefined)\n }}\n />\n <Dialog\n onClose={() => setClickEvent(undefined)}\n open={selectedRows && selectedRows.length > 0}\n >\n <DialogContent>\n <CardContainerLogic\n topLevelEnumeratedFacetToFilter={{ columnName: 'observationType' }}\n sql={sql}\n searchParams={{ ['ROW_ID']: selectedRowIds.map(String).join(',') }}\n sqlOperator={ColumnSingleValueFilterOperator.IN}\n lockedColumn={{ columnName: 'ROW_ID' }}\n cardConfiguration={{ type: OBSERVATION_CARD }}\n initialLimit={3}\n />\n </DialogContent>\n </Dialog>\n </div>\n )\n}\n\nexport default TimelinePhase\n"],"mappings":"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"}