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":"ProgrammaticInstructionsModal.js","names":[],"sources":["../../../src/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.tsx"],"sourcesContent":["import React from 'react'\nimport { Box, Link, Tab, Tabs, Typography } from '@mui/material'\nimport { ReactElement, SyntheticEvent, useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\n\nexport enum ProgrammaticOptionsTabs {\n COMMAND_LINE = 'Command Line',\n R = 'R',\n PYTHON = 'Python',\n}\n\nexport type ProgrammaticInstructionsModalProps = {\n show: boolean\n title: string\n onClose: () => void\n pythonNotes?: ReactElement\n pythonCode?: string\n rNotes?: ReactElement\n rCode?: string\n cliNotes?: ReactElement\n cliCode?: string\n helpMarkdown?: string\n helpUrl?: string\n}\n\n/**\n * Modal used to show programmatic instructions\n * @param props\n * @returns\n */\n\nexport const ProgrammaticInstructionsModal = ({\n show,\n title,\n onClose,\n pythonNotes,\n pythonCode,\n rNotes,\n rCode,\n cliNotes,\n cliCode,\n helpMarkdown,\n helpUrl,\n}: ProgrammaticInstructionsModalProps): React.ReactNode => {\n let defaultTab\n if (cliCode) {\n defaultTab = ProgrammaticOptionsTabs.COMMAND_LINE\n } else if (pythonCode) {\n defaultTab = ProgrammaticOptionsTabs.PYTHON\n } else {\n defaultTab = ProgrammaticOptionsTabs.R\n }\n const [currentTab, setCurrentTab] =\n useState<ProgrammaticOptionsTabs>(defaultTab)\n\n const installationInstructions = (\n <Typography variant=\"body1\">\n Installation instructions are available at our{' '}\n <Link\n href={\n 'https://help.synapse.org/docs/Installing-Synapse-API-Clients.1985249668.html'\n }\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Synapse API Documentation Site\n </Link>\n .\n </Typography>\n )\n\n const dialogContent = (\n <>\n <Box\n sx={{\n borderBottom: 1,\n borderColor: 'divider',\n marginBottom: 4,\n }}\n >\n <Tabs\n value={currentTab}\n onChange={(\n event: SyntheticEvent,\n newValue: ProgrammaticOptionsTabs,\n ) => {\n event.stopPropagation()\n setCurrentTab(newValue)\n }}\n textColor=\"secondary\"\n indicatorColor=\"secondary\"\n >\n {cliCode && (\n <Tab\n value={ProgrammaticOptionsTabs.COMMAND_LINE}\n label={ProgrammaticOptionsTabs.COMMAND_LINE}\n />\n )}\n {rCode && (\n <Tab\n value={ProgrammaticOptionsTabs.R}\n label={ProgrammaticOptionsTabs.R}\n />\n )}\n {pythonCode && (\n <Tab\n value={ProgrammaticOptionsTabs.PYTHON}\n label={ProgrammaticOptionsTabs.PYTHON}\n />\n )}\n </Tabs>\n </Box>\n <Box sx={{ '& > p': { marginBottom: 3 } }}>\n {currentTab === ProgrammaticOptionsTabs.COMMAND_LINE && (\n <>\n <Typography variant=\"body1\">{cliNotes}</Typography>\n {installationInstructions}\n <pre>{cliCode}</pre>\n </>\n )}\n {currentTab === ProgrammaticOptionsTabs.R && (\n <>\n <Typography variant=\"body1\">{rNotes}</Typography>\n {installationInstructions}\n <pre>{rCode}</pre>\n </>\n )}\n {currentTab === ProgrammaticOptionsTabs.PYTHON && (\n <>\n <Typography variant=\"body1\">{pythonNotes}</Typography>\n {installationInstructions}\n <pre>{pythonCode}</pre>\n </>\n )}\n </Box>\n </>\n )\n\n const titleHelpPopoverProps = helpMarkdown\n ? {\n markdownText: helpMarkdown,\n helpUrl: helpUrl,\n }\n : undefined\n\n return (\n <ConfirmationDialog\n open={show}\n title={title}\n onCancel={onClose}\n onConfirm={onClose}\n maxWidth=\"md\"\n titleHelpPopoverProps={titleHelpPopoverProps}\n content={dialogContent}\n hasCancelButton={false}\n />\n )\n}\n\nexport default ProgrammaticInstructionsModal\n"],"mappings":";;;;;AAKA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,eAAe,gBACf,EAAA,IAAI,KACJ,EAAA,SAAS;KACV,EAsBY,KAAiC,EAC5C,SACA,UACA,YACA,gBACA,eACA,WACA,UACA,aACA,YACA,iBACA,iBACyD;CACzD,IAAI;AACJ,CAKE,IALE,IACW,EAAwB,eAC5B,IACI,EAAwB,SAExB,EAAwB;CAEvC,IAAM,CAAC,GAAY,KACjB,EAAkC,EAAW,EAEzC,IACJ,kBAAC,GAAD;EAAY,SAAQ;YAApB;GAA4B;GACqB;GAC/C,kBAAC,GAAD;IACE,MACE;IAEF,QAAO;IACP,KAAI;cACL;IAEM,CAAA;;GAEI;KAGT,IACJ,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,IAAI;GACF,cAAc;GACd,aAAa;GACb,cAAc;GACf;YAED,kBAAC,GAAD;GACE,OAAO;GACP,WACE,GACA,MACG;AAEH,IADA,EAAM,iBAAiB,EACvB,EAAc,EAAS;;GAEzB,WAAU;GACV,gBAAe;aAVjB;IAYG,KACC,kBAAC,GAAD;KACE,OAAO,EAAwB;KAC/B,OAAO,EAAwB;KAC/B,CAAA;IAEH,KACC,kBAAC,GAAD;KACE,OAAO,EAAwB;KAC/B,OAAO,EAAwB;KAC/B,CAAA;IAEH,KACC,kBAAC,GAAD;KACE,OAAO,EAAwB;KAC/B,OAAO,EAAwB;KAC/B,CAAA;IAEC;;EACH,CAAA,EACN,kBAAC,GAAD;EAAK,IAAI,EAAE,SAAS,EAAE,cAAc,GAAG,EAAE;YAAzC;GACG,MAAe,EAAwB,gBACtC,kBAAA,GAAA,EAAA,UAAA;IACE,kBAAC,GAAD;KAAY,SAAQ;eAAS;KAAsB,CAAA;IAClD;IACD,kBAAC,OAAD,EAAA,UAAM,GAAc,CAAA;IACnB,EAAA,CAAA;GAEJ,MAAe,EAAwB,KACtC,kBAAA,GAAA,EAAA,UAAA;IACE,kBAAC,GAAD;KAAY,SAAQ;eAAS;KAAoB,CAAA;IAChD;IACD,kBAAC,OAAD,EAAA,UAAM,GAAY,CAAA;IACjB,EAAA,CAAA;GAEJ,MAAe,EAAwB,UACtC,kBAAA,GAAA,EAAA,UAAA;IACE,kBAAC,GAAD;KAAY,SAAQ;eAAS;KAAyB,CAAA;IACrD;IACD,kBAAC,OAAD,EAAA,UAAM,GAAiB,CAAA;IACtB,EAAA,CAAA;GAED;IACL,EAAA,CAAA;AAUL,QACE,kBAAC,GAAD;EACE,MAAM;EACC;EACP,UAAU;EACV,WAAW;EACX,UAAS;EACc,uBAdG,IAC1B;GACE,cAAc;GACL;GACV,GACD,KAAA;EAUA,SAAS;EACT,iBAAiB;EACjB,CAAA"}
1
+ {"version":3,"file":"ProgrammaticInstructionsModal.js","names":[],"sources":["../../../src/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.tsx"],"sourcesContent":["import React from 'react'\nimport { Box, Link, Tab, Tabs, Typography } from '@mui/material'\nimport { ReactElement, SyntheticEvent, useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\n\nexport enum ProgrammaticOptionsTabs {\n COMMAND_LINE = 'Command Line',\n R = 'R',\n PYTHON = 'Python',\n}\n\nexport type ProgrammaticInstructionsModalProps = {\n show: boolean\n title: string\n onClose: () => void\n pythonNotes?: ReactElement\n pythonCode?: string\n rNotes?: ReactElement\n rCode?: string\n cliNotes?: ReactElement\n cliCode?: string\n helpMarkdown?: string\n helpUrl?: string\n}\n\n/**\n * Modal used to show programmatic instructions\n * @param props\n * @returns\n */\n\nexport const ProgrammaticInstructionsModal = ({\n show,\n title,\n onClose,\n pythonNotes,\n pythonCode,\n rNotes,\n rCode,\n cliNotes,\n cliCode,\n helpMarkdown,\n helpUrl,\n}: ProgrammaticInstructionsModalProps): React.ReactNode => {\n let defaultTab\n if (cliCode) {\n defaultTab = ProgrammaticOptionsTabs.COMMAND_LINE\n } else if (pythonCode) {\n defaultTab = ProgrammaticOptionsTabs.PYTHON\n } else {\n defaultTab = ProgrammaticOptionsTabs.R\n }\n const [currentTab, setCurrentTab] =\n useState<ProgrammaticOptionsTabs>(defaultTab)\n\n const installationInstructions = (\n <Typography variant=\"body1\">\n Installation instructions are available at our{' '}\n <Link\n href={\n 'https://help.synapse.org/docs/Installing-Synapse-API-Clients.1985249668.html'\n }\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Synapse API Documentation Site\n </Link>\n .\n </Typography>\n )\n\n const dialogContent = (\n <>\n <Box\n sx={{\n borderBottom: 1,\n borderColor: 'divider',\n marginBottom: 4,\n }}\n >\n <Tabs\n value={currentTab}\n onChange={(\n event: SyntheticEvent,\n newValue: ProgrammaticOptionsTabs,\n ) => {\n event.stopPropagation()\n setCurrentTab(newValue)\n }}\n textColor=\"secondary\"\n indicatorColor=\"secondary\"\n >\n {cliCode && (\n <Tab\n value={ProgrammaticOptionsTabs.COMMAND_LINE}\n label={ProgrammaticOptionsTabs.COMMAND_LINE}\n />\n )}\n {rCode && (\n <Tab\n value={ProgrammaticOptionsTabs.R}\n label={ProgrammaticOptionsTabs.R}\n />\n )}\n {pythonCode && (\n <Tab\n value={ProgrammaticOptionsTabs.PYTHON}\n label={ProgrammaticOptionsTabs.PYTHON}\n />\n )}\n </Tabs>\n </Box>\n <Box sx={{ '& > p': { marginBottom: 3 } }}>\n {currentTab === ProgrammaticOptionsTabs.COMMAND_LINE && (\n <>\n <Typography variant=\"body1\">{cliNotes}</Typography>\n {installationInstructions}\n <pre>{cliCode}</pre>\n </>\n )}\n {currentTab === ProgrammaticOptionsTabs.R && (\n <>\n <Typography variant=\"body1\">{rNotes}</Typography>\n {installationInstructions}\n <pre>{rCode}</pre>\n </>\n )}\n {currentTab === ProgrammaticOptionsTabs.PYTHON && (\n <>\n <Typography variant=\"body1\">{pythonNotes}</Typography>\n {installationInstructions}\n <pre>{pythonCode}</pre>\n </>\n )}\n </Box>\n </>\n )\n\n const titleHelpPopoverProps = helpMarkdown\n ? {\n markdownText: helpMarkdown,\n helpUrl: helpUrl,\n }\n : undefined\n\n return (\n <ConfirmationDialog\n open={show}\n title={title}\n onCancel={onClose}\n onConfirm={onClose}\n maxWidth=\"md\"\n titleHelpPopoverProps={titleHelpPopoverProps}\n content={dialogContent}\n hasCancelButton={false}\n />\n )\n}\n\nexport default ProgrammaticInstructionsModal\n"],"mappings":";;;;;AAKA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,eAAA,gBACA,EAAA,IAAA,KACA,EAAA,SAAA;AACF,EAAA,CAAA,CAAA,GAsBa,KAAiC,EAC5C,SACA,UACA,YACA,gBACA,eACA,WACA,UACA,aACA,YACA,iBACA,iBACyD;CACzD,IAAI;CACJ,AAKE,IALE,IACF,iBACS,IACT,WAEA;CAEF,IAAM,CAAC,GAAY,KACjB,EAAkC,CAAU,GAExC,IACJ,kBAAC,GAAD;EAAY,SAAQ;YAApB;GAA4B;GACqB;GAC/C,kBAAC,GAAD;IACE,MACE;IAEF,QAAO;IACP,KAAI;cACL;GAEK,CAAA;GAAC;EAEG;;CA6Ed,OACE,kBAAC,GAAD;EACE,MAAM;EACC;EACP,UAAU;EACV,WAAW;EACX,UAAS;EACc,uBAdG,IAC1B;GACE,cAAc;GACL;EACX,IACA,KAAA;EAUA,SAjFF,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GACE,IAAI;IACF,cAAc;IACd,aAAa;IACb,cAAc;GAChB;aAEA,kBAAC,GAAD;IACE,OAAO;IACP,WACE,GACA,MACG;KAEH,AADA,EAAM,gBAAgB,GACtB,EAAc,CAAQ;IACxB;IACA,WAAU;IACV,gBAAe;cAVjB;KAYG,KACC,kBAAC,GAAD;MACE,OAAA;MACA,OAAA;KACD,CAAA;KAEF,KACC,kBAAC,GAAD;MACE,OAAA;MACA,OAAA;KACD,CAAA;KAEF,KACC,kBAAC,GAAD;MACE,OAAA;MACA,OAAA;KACD,CAAA;IAEC;;EACH,CAAA,GACL,kBAAC,GAAD;GAAK,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE;aAAxC;IACG,MAAA,kBACC,kBAAA,GAAA,EAAA,UAAA;KACE,kBAAC,GAAD;MAAY,SAAQ;gBAAS;KAAqB,CAAA;KACjD;KACD,kBAAC,OAAD,EAAA,UAAM,EAAa,CAAA;IACnB,EAAA,CAAA;IAEH,MAAA,OACC,kBAAA,GAAA,EAAA,UAAA;KACE,kBAAC,GAAD;MAAY,SAAQ;gBAAS;KAAmB,CAAA;KAC/C;KACD,kBAAC,OAAD,EAAA,UAAM,EAAW,CAAA;IACjB,EAAA,CAAA;IAEH,MAAA,YACC,kBAAA,GAAA,EAAA,UAAA;KACE,kBAAC,GAAD;MAAY,SAAQ;gBAAS;KAAwB,CAAA;KACpD;KACD,kBAAC,OAAD,EAAA,UAAM,EAAgB,CAAA;IACtB,EAAA,CAAA;GAED;IACL,EAAA,CAkBS;EACT,iBAAiB;CAClB,CAAA;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProgrammaticTableDownload.js","names":[],"sources":["../../../src/components/ProgrammaticTableDownload/ProgrammaticTableDownload.tsx"],"sourcesContent":["import { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { Link } from '@mui/material'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useEffect, useMemo, useState } from 'react'\nimport {\n PYTHON_CLIENT_IMPORT_AND_LOGIN,\n R_CLIENT_IMPORT_AND_LOGIN,\n} from '../DownloadCart/DirectProgrammaticDownload'\nimport { ProgrammaticInstructionsModal } from '../ProgrammaticInstructionsModal/ProgrammaticInstructionsModal'\n\nexport type ProgrammaticTableDownloadProps = {\n queryBundleRequest: QueryBundleRequest\n onHide: () => void\n}\n\nexport function ProgrammaticTableDownload({\n queryBundleRequest,\n onHide,\n}: ProgrammaticTableDownloadProps) {\n const [generatedSql, setGeneratedSql] = useState('...')\n\n const {\n data: asyncJobStatus,\n isLoading: queryIsLoading,\n isPlaceholderData: newQueryIsFetching,\n } = useGetQueryResultBundleWithAsyncStatus(\n {\n ...queryBundleRequest,\n partMask: SynapseConstants.BUNDLE_MASK_COMBINED_SQL,\n },\n {\n placeholderData: previousData => previousData,\n throwOnError: true,\n },\n )\n\n const combinedSql = asyncJobStatus?.responseBody?.combinedSql\n const isLoadingNewBundle = queryIsLoading || newQueryIsFetching\n\n useEffect(() => {\n if (combinedSql && !isLoadingNewBundle) {\n // SWC-5686: The ID column is required by the client, and this column may not have been selected!\n // Change the SQL to \"SELECT * ...\"\n const indexOfFrom = combinedSql.toUpperCase().indexOf('FROM SYN')\n const selectStarTransformedSql = `SELECT * ${combinedSql.substring(\n indexOfFrom,\n )}`\n setGeneratedSql(selectStarTransformedSql)\n }\n }, [combinedSql, isLoadingNewBundle])\n\n // Replace quotation marks with escaped quotations. For CLI, also escape backticks.\n const commandLineSql = useMemo(\n () => generatedSql.replace(/([\"`])/g, '\\\\$1'),\n [generatedSql],\n )\n\n const clientSql = useMemo(\n () => generatedSql.replace(/\"/g, '\\\\\"'),\n [generatedSql],\n )\n\n return (\n <ProgrammaticInstructionsModal\n show={true}\n onClose={onHide}\n title=\"Download Programmatically\"\n cliNotes={\n <>\n This command line code will download Synapse files AND file\n annotations to your working directory.\n </>\n }\n cliCode={`synapse get -q \"${commandLineSql}\"`}\n rNotes={\n <>\n This R code will download file annotations only. Use{' '}\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://help.synapse.org/docs/Get-Started-with-Downloading-Data.2004254837.html#GetStartedwithDownloadingData-DownloadingFiles\"\n >\n synGet{'()'}\n </Link>{' '}\n to loop over the list of Synapse IDs from the file annotations to\n download files.\n </>\n }\n rCode={`${R_CLIENT_IMPORT_AND_LOGIN}\nquery ${'<-'} synTableQuery(\"${clientSql}\")${'\\n'}read.table(query$filepath, sep = \",\")`}\n pythonNotes={\n <>\n This Python code will download file annotations only. Use{' '}\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://help.synapse.org/docs/Get-Started-with-Downloading-Data.2004254837.html#GetStartedwithDownloadingData-DownloadingFiles\"\n >\n syn.get\n </Link>{' '}\n to loop over the list of Synapse IDs from the file annotations to\n download files.\n </>\n }\n pythonCode={`${PYTHON_CLIENT_IMPORT_AND_LOGIN}\nquery = syn.tableQuery(\"${clientSql}\")${'\\n'}query.asDataFrame()`}\n />\n )\n}\n\nexport default ProgrammaticTableDownload\n"],"mappings":";;;;;;;;;;AAgBA,SAAgB,EAA0B,EACxC,uBACA,aACiC;CACjC,IAAM,CAAC,GAAc,KAAmB,EAAS,MAAM,EAEjD,EACJ,MAAM,GACN,WAAW,GACX,mBAAmB,MACjB,EACF;EACE,GAAG;EACH,UAAU;EACX,EACD;EACE,kBAAiB,MAAgB;EACjC,cAAc;EACf,CACF,EAEK,IAAc,GAAgB,cAAc,aAC5C,IAAqB,KAAkB;AAE7C,SAAgB;AACd,MAAI,KAAe,CAAC,GAAoB;GAGtC,IAAM,IAAc,EAAY,aAAa,CAAC,QAAQ,WAAW;AAIjE,KAAgB,YAH6B,EAAY,UACvD,EACD,GACwC;;IAE1C,CAAC,GAAa,EAAmB,CAAC;CAGrC,IAAM,IAAiB,QACf,EAAa,QAAQ,WAAW,OAAO,EAC7C,CAAC,EAAa,CACf,EAEK,IAAY,QACV,EAAa,QAAQ,MAAM,OAAM,EACvC,CAAC,EAAa,CACf;AAED,QACE,kBAAC,GAAD;EACE,MAAM;EACN,SAAS;EACT,OAAM;EACN,UACE,kBAAA,GAAA,EAAA,UAAE,sGAGC,CAAA;EAEL,SAAS,mBAAmB,EAAe;EAC3C,QACE,kBAAA,GAAA,EAAA,UAAA;GAAE;GACqD;GACrD,kBAAC,GAAD;IACE,QAAO;IACP,KAAI;IACJ,MAAK;cAHP,CAIC,UACQ,KACF;;GAAC;GAAI;GAGX,EAAA,CAAA;EAEL,OAAO,GAAG,EAA0B;0BACX,EAAU;;EACnC,aACE,kBAAA,GAAA,EAAA,UAAA;GAAE;GAC0D;GAC1D,kBAAC,GAAD;IACE,QAAO;IACP,KAAI;IACJ,MAAK;cACN;IAEM,CAAA;GAAC;GAAI;GAGX,EAAA,CAAA;EAEL,YAAY,GAAG,EAA+B;0BAC1B,EAAU;;EAC9B,CAAA"}
1
+ {"version":3,"file":"ProgrammaticTableDownload.js","names":[],"sources":["../../../src/components/ProgrammaticTableDownload/ProgrammaticTableDownload.tsx"],"sourcesContent":["import { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { Link } from '@mui/material'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useEffect, useMemo, useState } from 'react'\nimport {\n PYTHON_CLIENT_IMPORT_AND_LOGIN,\n R_CLIENT_IMPORT_AND_LOGIN,\n} from '../DownloadCart/DirectProgrammaticDownload'\nimport { ProgrammaticInstructionsModal } from '../ProgrammaticInstructionsModal/ProgrammaticInstructionsModal'\n\nexport type ProgrammaticTableDownloadProps = {\n queryBundleRequest: QueryBundleRequest\n onHide: () => void\n}\n\nexport function ProgrammaticTableDownload({\n queryBundleRequest,\n onHide,\n}: ProgrammaticTableDownloadProps) {\n const [generatedSql, setGeneratedSql] = useState('...')\n\n const {\n data: asyncJobStatus,\n isLoading: queryIsLoading,\n isPlaceholderData: newQueryIsFetching,\n } = useGetQueryResultBundleWithAsyncStatus(\n {\n ...queryBundleRequest,\n partMask: SynapseConstants.BUNDLE_MASK_COMBINED_SQL,\n },\n {\n placeholderData: previousData => previousData,\n throwOnError: true,\n },\n )\n\n const combinedSql = asyncJobStatus?.responseBody?.combinedSql\n const isLoadingNewBundle = queryIsLoading || newQueryIsFetching\n\n useEffect(() => {\n if (combinedSql && !isLoadingNewBundle) {\n // SWC-5686: The ID column is required by the client, and this column may not have been selected!\n // Change the SQL to \"SELECT * ...\"\n const indexOfFrom = combinedSql.toUpperCase().indexOf('FROM SYN')\n const selectStarTransformedSql = `SELECT * ${combinedSql.substring(\n indexOfFrom,\n )}`\n setGeneratedSql(selectStarTransformedSql)\n }\n }, [combinedSql, isLoadingNewBundle])\n\n // Replace quotation marks with escaped quotations. For CLI, also escape backticks.\n const commandLineSql = useMemo(\n () => generatedSql.replace(/([\"`])/g, '\\\\$1'),\n [generatedSql],\n )\n\n const clientSql = useMemo(\n () => generatedSql.replace(/\"/g, '\\\\\"'),\n [generatedSql],\n )\n\n return (\n <ProgrammaticInstructionsModal\n show={true}\n onClose={onHide}\n title=\"Download Programmatically\"\n cliNotes={\n <>\n This command line code will download Synapse files AND file\n annotations to your working directory.\n </>\n }\n cliCode={`synapse get -q \"${commandLineSql}\"`}\n rNotes={\n <>\n This R code will download file annotations only. Use{' '}\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://help.synapse.org/docs/Get-Started-with-Downloading-Data.2004254837.html#GetStartedwithDownloadingData-DownloadingFiles\"\n >\n synGet{'()'}\n </Link>{' '}\n to loop over the list of Synapse IDs from the file annotations to\n download files.\n </>\n }\n rCode={`${R_CLIENT_IMPORT_AND_LOGIN}\nquery ${'<-'} synTableQuery(\"${clientSql}\")${'\\n'}read.table(query$filepath, sep = \",\")`}\n pythonNotes={\n <>\n This Python code will download file annotations only. Use{' '}\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://help.synapse.org/docs/Get-Started-with-Downloading-Data.2004254837.html#GetStartedwithDownloadingData-DownloadingFiles\"\n >\n syn.get\n </Link>{' '}\n to loop over the list of Synapse IDs from the file annotations to\n download files.\n </>\n }\n pythonCode={`${PYTHON_CLIENT_IMPORT_AND_LOGIN}\nquery = syn.tableQuery(\"${clientSql}\")${'\\n'}query.asDataFrame()`}\n />\n )\n}\n\nexport default ProgrammaticTableDownload\n"],"mappings":";;;;;;;;;;AAgBA,SAAgB,EAA0B,EACxC,uBACA,aACiC;CACjC,IAAM,CAAC,GAAc,KAAmB,EAAS,KAAK,GAEhD,EACJ,MAAM,GACN,WAAW,GACX,mBAAmB,MACjB,EACF;EACE,GAAG;EACH,UAAU;CACZ,GACA;EACE,kBAAiB,MAAgB;EACjC,cAAc;CAChB,CACF,GAEM,IAAc,GAAgB,cAAc,aAC5C,IAAqB,KAAkB;CAE7C,QAAgB;EACd,IAAI,KAAe,CAAC,GAAoB;GAGtC,IAAM,IAAc,EAAY,YAAY,EAAE,QAAQ,UAAU;GAIhE,EAAgB,YAH6B,EAAY,UACvD,CACF,GACwC;EAC1C;CACF,GAAG,CAAC,GAAa,CAAkB,CAAC;CAGpC,IAAM,IAAiB,QACf,EAAa,QAAQ,WAAW,MAAM,GAC5C,CAAC,CAAY,CACf,GAEM,IAAY,QACV,EAAa,QAAQ,MAAM,MAAK,GACtC,CAAC,CAAY,CACf;CAEA,OACE,kBAAC,GAAD;EACE,MAAM;EACN,SAAS;EACT,OAAM;EACN,UACE,kBAAA,GAAA,EAAA,UAAE,qGAGA,CAAA;EAEJ,SAAS,mBAAmB,EAAe;EAC3C,QACE,kBAAA,GAAA,EAAA,UAAA;GAAE;GACqD;GACrD,kBAAC,GAAD;IACE,QAAO;IACP,KAAI;IACJ,MAAK;cAHP,CAIC,UACQ,IACH;;GAAE;GAAI;EAGZ,EAAA,CAAA;EAEJ,OAAO,GAAG,EAA0B;0BACX,EAAU;;EACnC,aACE,kBAAA,GAAA,EAAA,UAAA;GAAE;GAC0D;GAC1D,kBAAC,GAAD;IACE,QAAO;IACP,KAAI;IACJ,MAAK;cACN;GAEK,CAAA;GAAE;GAAI;EAGZ,EAAA,CAAA;EAEJ,YAAY,GAAG,EAA+B;0BAC1B,EAAU;;CAC/B,CAAA;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"Programs.Desktop.js","names":[],"sources":["../../../src/components/Programs/Programs.Desktop.tsx"],"sourcesContent":["import LargeButton from '@/components/styled/LargeButton'\nimport { ImageFileHandle } from '../widgets/ImageFileHandle'\nimport { ProgramsDataProps } from './Programs'\n\nexport default function ProgramsDesktop({\n link,\n summary,\n title,\n color,\n fileHandleAssociation,\n exploreLink,\n}: ProgramsDataProps) {\n return (\n <div className=\"Programs__Card\">\n <div\n className=\"Programs__Card__header\"\n style={{ backgroundColor: color.replace(')', ',.05)') }}\n >\n <div className=\"Programs__Card__header__icon\">\n {fileHandleAssociation && (\n <ImageFileHandle fileHandleAssociation={fileHandleAssociation} />\n )}\n </div>\n <div className=\"Programs__Card__header__info\">\n <span className=\"Programs__Card__header__info__title\"> {title} </span>\n {link && (\n <p className=\"Programs__Card__header__info__link\">\n <a\n className=\"highlight-link\"\n href={link}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Visit website\n </a>\n </p>\n )}\n </div>\n </div>\n <div className=\"Programs__Card__summary\">\n <p> {summary} </p>\n <LargeButton\n color=\"secondary\"\n variant=\"contained\"\n href={exploreLink}\n sx={{ width: '120px', marginLeft: 0 }}\n >\n Explore\n </LargeButton>\n </div>\n </div>\n )\n}\n"],"mappings":";;;;AAIA,SAAwB,EAAgB,EACtC,SACA,YACA,UACA,UACA,0BACA,kBACoB;AACpB,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAE,iBAAiB,EAAM,QAAQ,KAAK,QAAQ,EAAE;aAFzD,CAIE,kBAAC,OAAD;IAAK,WAAU;cACZ,KACC,kBAAC,GAAD,EAAwC,0BAAyB,CAAA;IAE/D,CAAA,EACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,QAAD;KAAM,WAAU;eAAhB;MAAsD;MAAE;MAAM;MAAQ;QACrE,KACC,kBAAC,KAAD;KAAG,WAAU;eACX,kBAAC,KAAD;MACE,WAAU;MACV,MAAM;MACN,QAAO;MACP,KAAI;gBACL;MAEG,CAAA;KACF,CAAA,CAEF;MACF;MACN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,KAAD,EAAA,UAAA;IAAG;IAAE;IAAQ;IAAK,EAAA,CAAA,EAClB,kBAAC,GAAD;IACE,OAAM;IACN,SAAQ;IACR,MAAM;IACN,IAAI;KAAE,OAAO;KAAS,YAAY;KAAG;cACtC;IAEa,CAAA,CACV;KACF"}
1
+ {"version":3,"file":"Programs.Desktop.js","names":[],"sources":["../../../src/components/Programs/Programs.Desktop.tsx"],"sourcesContent":["import LargeButton from '@/components/styled/LargeButton'\nimport { ImageFileHandle } from '../widgets/ImageFileHandle'\nimport { ProgramsDataProps } from './Programs'\n\nexport default function ProgramsDesktop({\n link,\n summary,\n title,\n color,\n fileHandleAssociation,\n exploreLink,\n}: ProgramsDataProps) {\n return (\n <div className=\"Programs__Card\">\n <div\n className=\"Programs__Card__header\"\n style={{ backgroundColor: color.replace(')', ',.05)') }}\n >\n <div className=\"Programs__Card__header__icon\">\n {fileHandleAssociation && (\n <ImageFileHandle fileHandleAssociation={fileHandleAssociation} />\n )}\n </div>\n <div className=\"Programs__Card__header__info\">\n <span className=\"Programs__Card__header__info__title\"> {title} </span>\n {link && (\n <p className=\"Programs__Card__header__info__link\">\n <a\n className=\"highlight-link\"\n href={link}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Visit website\n </a>\n </p>\n )}\n </div>\n </div>\n <div className=\"Programs__Card__summary\">\n <p> {summary} </p>\n <LargeButton\n color=\"secondary\"\n variant=\"contained\"\n href={exploreLink}\n sx={{ width: '120px', marginLeft: 0 }}\n >\n Explore\n </LargeButton>\n </div>\n </div>\n )\n}\n"],"mappings":";;;;AAIA,SAAwB,EAAgB,EACtC,SACA,YACA,UACA,UACA,0BACA,kBACoB;CACpB,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAE,iBAAiB,EAAM,QAAQ,KAAK,OAAO,EAAE;aAFxD,CAIE,kBAAC,OAAD;IAAK,WAAU;cACZ,KACC,kBAAC,GAAD,EAAwC,yBAAwB,CAAA;GAE/D,CAAA,GACL,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,QAAD;KAAM,WAAU;eAAhB;MAAsD;MAAE;MAAM;KAAO;QACpE,KACC,kBAAC,KAAD;KAAG,WAAU;eACX,kBAAC,KAAD;MACE,WAAU;MACV,MAAM;MACN,QAAO;MACP,KAAI;gBACL;KAEE,CAAA;IACF,CAAA,CAEF;KACF;MACL,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,KAAD,EAAA,UAAA;IAAG;IAAE;IAAQ;GAAI,EAAA,CAAA,GACjB,kBAAC,GAAD;IACE,OAAM;IACN,SAAQ;IACR,MAAM;IACN,IAAI;KAAE,OAAO;KAAS,YAAY;IAAE;cACrC;GAEY,CAAA,CACV;IACF;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"Programs.Mobile.js","names":[],"sources":["../../../src/components/Programs/Programs.Mobile.tsx"],"sourcesContent":["import LargeButton from '@/components/styled/LargeButton'\nimport ExpandableContent from '../home_page/ExpandableContent'\nimport { ImageFileHandle } from '../widgets/ImageFileHandle'\nimport { ProgramsDataProps } from './Programs'\n\nexport default function ProgramsMobile({\n link,\n summary,\n title,\n color,\n fileHandleAssociation,\n exploreLink,\n}: ProgramsDataProps) {\n const titleElement = (\n <div className=\"Programs__Mobile__Header\">\n <span className=\"Programs__Card__header__icon\">\n {fileHandleAssociation && (\n <ImageFileHandle fileHandleAssociation={fileHandleAssociation} />\n )}\n </span>\n <span className=\"Programs__Mobile__Header__Title\"> {title} </span>\n </div>\n )\n const content = (\n <div className=\"Programs__Mobile__Content\">\n {link && (\n <p className=\"Programs__Card__header__info__link\">\n <a\n className=\"highlight-link\"\n href={link}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Visit website\n </a>\n </p>\n )}\n <p>{summary}</p>\n <LargeButton\n color=\"secondary\"\n variant=\"contained\"\n href={exploreLink}\n sx={{ marginLeft: 0 }}\n >\n Explore\n </LargeButton>\n </div>\n )\n return <ExpandableContent title={titleElement} content={content} />\n}\n"],"mappings":";;;;;AAKA,SAAwB,EAAe,EACrC,SACA,YACA,UACA,UACA,0BACA,kBACoB;AAoCpB,QAAO,kBAAC,GAAD;EAAmB,OAlCxB,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cACb,KACC,kBAAC,GAAD,EAAwC,0BAAyB,CAAA;IAE9D,CAAA,EACP,kBAAC,QAAD;IAAM,WAAU;cAAhB;KAAkD;KAAE;KAAM;KAAQ;MAC9D;IA2ByB;EAAuB,SAxBtD,kBAAC,OAAD;GAAK,WAAU;aAAf;IACG,KACC,kBAAC,KAAD;KAAG,WAAU;eACX,kBAAC,KAAD;MACE,WAAU;MACV,MAAM;MACN,QAAO;MACP,KAAI;gBACL;MAEG,CAAA;KACF,CAAA;IAEN,kBAAC,KAAD,EAAA,UAAI,GAAY,CAAA;IAChB,kBAAC,GAAD;KACE,OAAM;KACN,SAAQ;KACR,MAAM;KACN,IAAI,EAAE,YAAY,GAAG;eACtB;KAEa,CAAA;IACV;IAEgD;EAAW,CAAA"}
1
+ {"version":3,"file":"Programs.Mobile.js","names":[],"sources":["../../../src/components/Programs/Programs.Mobile.tsx"],"sourcesContent":["import LargeButton from '@/components/styled/LargeButton'\nimport ExpandableContent from '../home_page/ExpandableContent'\nimport { ImageFileHandle } from '../widgets/ImageFileHandle'\nimport { ProgramsDataProps } from './Programs'\n\nexport default function ProgramsMobile({\n link,\n summary,\n title,\n color,\n fileHandleAssociation,\n exploreLink,\n}: ProgramsDataProps) {\n const titleElement = (\n <div className=\"Programs__Mobile__Header\">\n <span className=\"Programs__Card__header__icon\">\n {fileHandleAssociation && (\n <ImageFileHandle fileHandleAssociation={fileHandleAssociation} />\n )}\n </span>\n <span className=\"Programs__Mobile__Header__Title\"> {title} </span>\n </div>\n )\n const content = (\n <div className=\"Programs__Mobile__Content\">\n {link && (\n <p className=\"Programs__Card__header__info__link\">\n <a\n className=\"highlight-link\"\n href={link}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Visit website\n </a>\n </p>\n )}\n <p>{summary}</p>\n <LargeButton\n color=\"secondary\"\n variant=\"contained\"\n href={exploreLink}\n sx={{ marginLeft: 0 }}\n >\n Explore\n </LargeButton>\n </div>\n )\n return <ExpandableContent title={titleElement} content={content} />\n}\n"],"mappings":";;;;;AAKA,SAAwB,EAAe,EACrC,SACA,YACA,UACA,UACA,0BACA,kBACoB;CAoCpB,OAAO,kBAAC,GAAD;EAAmB,OAlCxB,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cACb,KACC,kBAAC,GAAD,EAAwC,yBAAwB,CAAA;GAE9D,CAAA,GACN,kBAAC,QAAD;IAAM,WAAU;cAAhB;KAAkD;KAAE;KAAM;IAAO;KAC9D;GA2B0B;EAAuB,SAxBtD,kBAAC,OAAD;GAAK,WAAU;aAAf;IACG,KACC,kBAAC,KAAD;KAAG,WAAU;eACX,kBAAC,KAAD;MACE,WAAU;MACV,MAAM;MACN,QAAO;MACP,KAAI;gBACL;KAEE,CAAA;IACF,CAAA;IAEL,kBAAC,KAAD,EAAA,UAAI,EAAW,CAAA;IACf,kBAAC,GAAD;KACE,OAAM;KACN,SAAQ;KACR,MAAM;KACN,IAAI,EAAE,YAAY,EAAE;eACrB;IAEY,CAAA;GACV;GAEiD;CAAU,CAAA;AACpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"Programs.js","names":[],"sources":["../../../src/components/Programs/Programs.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries/entity/useEntity'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport useShowDesktop from '@/utils/hooks/useShowDesktop'\nimport {\n FileHandleAssociation,\n QueryBundleRequest,\n} from '@sage-bionetworks/synapse-types'\nimport { CardLink } from '../CardContainer/CardLink'\nimport { getColorPalette } from '../ColorGradient/ColorGradient'\nimport {\n getFileHandleAssociation,\n getLinkParams,\n} from '../GenericCard/CardUtils'\nimport ProgramsDesktop from './Programs.Desktop'\nimport ProgramsMobile from './Programs.Mobile'\n\nexport type ProgramsProps = {\n entityId: string\n rgbIndex: number\n titleColumnName: string\n linkColumnName: string\n summaryColumnName: string\n imageFileHandleColumnName: string\n linkConfig: CardLink\n}\n\nexport type ProgramsDataProps = {\n title: string\n summary: string\n link: string\n exploreLink: string\n color: string\n fileHandleAssociation?: FileHandleAssociation\n}\n\nexport function Programs(props: ProgramsProps) {\n const {\n entityId,\n titleColumnName,\n linkColumnName,\n summaryColumnName,\n imageFileHandleColumnName,\n linkConfig,\n rgbIndex,\n } = props\n const showDesktop = useShowDesktop()\n const entity = useGetEntity(entityId)\n const color: string = getColorPalette(rgbIndex ?? 0, 2).colorPalette[0]\n const queryBundleRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n query: {\n sql: `select * from ${entityId}`,\n },\n }\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const titleColumnIndex = getFieldIndex(titleColumnName, queryResultBundle)\n const summaryColumnIndex = getFieldIndex(summaryColumnName, queryResultBundle)\n const linkColumnIndex = getFieldIndex(linkColumnName, queryResultBundle)\n const iconColumnIndex = getFieldIndex(\n imageFileHandleColumnName,\n queryResultBundle,\n )\n return (\n <div className={`Programs${showDesktop ? '__Desktop' : ''}`}>\n {queryResultBundle?.queryResult!.queryResults.rows.map(el => {\n const values = el.values as string[]\n if (values.some(value => value === null)) {\n // We cast values above assuming there are no null values, emit a warning just in case.\n console.warn('Row has null value(s) when no nulls expected')\n }\n\n const title = values[titleColumnIndex]\n const summary = values[summaryColumnIndex]\n const link = values[linkColumnIndex] ?? ''\n const iconFileHandleIdValue = values[iconColumnIndex]\n\n const schema: Record<string, number> = {}\n queryResultBundle?.queryResult!.queryResults.headers.forEach(\n (header, colIndex) => {\n schema[header.name] = colIndex\n },\n )\n const { href } = getLinkParams(link, linkConfig, values, schema)\n\n const fileHandleAssociation = getFileHandleAssociation(\n entity.data,\n iconFileHandleIdValue,\n `syn${el.rowId}`,\n )\n const ProgramsDataProps: ProgramsDataProps = {\n title,\n summary,\n link,\n color,\n exploreLink: href,\n fileHandleAssociation,\n }\n return showDesktop ? (\n <ProgramsDesktop {...ProgramsDataProps} />\n ) : (\n <ProgramsMobile {...ProgramsDataProps} />\n )\n })}\n </div>\n )\n}\n\nexport default Programs\n"],"mappings":";;;;;;;;;;;;AAqCA,SAAgB,EAAS,GAAsB;CAC7C,IAAM,EACJ,aACA,oBACA,mBACA,sBACA,8BACA,eACA,gBACE,GACE,IAAc,GAAgB,EAC9B,IAAS,EAAa,EAAS,EAC/B,IAAgB,EAAgB,KAAY,GAAG,EAAE,CAAC,aAAa,IAW/D,EAAE,MAAM,MACZ,EAAwB;EAVxB,cAAc;EACd;EACA,UACE;EAEF,OAAO,EACL,KAAK,iBAAiB,KACvB;EAGuB,CAAmB,EAEvC,IAAmB,EAAc,GAAiB,EAAkB,EACpE,IAAqB,EAAc,GAAmB,EAAkB,EACxE,IAAkB,EAAc,GAAgB,EAAkB,EAClE,IAAkB,EACtB,GACA,EACD;AACD,QACE,kBAAC,OAAD;EAAK,WAAW,WAAW,IAAc,cAAc;YACpD,GAAmB,YAAa,aAAa,KAAK,KAAI,MAAM;GAC3D,IAAM,IAAS,EAAG;AAClB,GAAI,EAAO,MAAK,MAAS,MAAU,KAAK,IAEtC,QAAQ,KAAK,+CAA+C;GAG9D,IAAM,IAAQ,EAAO,IACf,IAAU,EAAO,IACjB,IAAO,EAAO,MAAoB,IAClC,IAAwB,EAAO,IAE/B,IAAiC,EAAE;AACzC,MAAmB,YAAa,aAAa,QAAQ,SAClD,GAAQ,MAAa;AACpB,MAAO,EAAO,QAAQ;KAEzB;GACD,IAAM,EAAE,YAAS,EAAc,GAAM,GAAY,GAAQ,EAAO,EAO1D,IAAuC;IAC3C;IACA;IACA;IACA;IACA,aAAa;IACb,uBAX4B,EAC5B,EAAO,MACP,GACA,MAAM,EAAG,QAQT;IACD;AACD,UACE,EADK,IACJ,IAEA,GAFD,EAAiB,GAAI,GAAqB,CAED;IAE3C;EACE,CAAA"}
1
+ {"version":3,"file":"Programs.js","names":[],"sources":["../../../src/components/Programs/Programs.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries/entity/useEntity'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport useShowDesktop from '@/utils/hooks/useShowDesktop'\nimport {\n FileHandleAssociation,\n QueryBundleRequest,\n} from '@sage-bionetworks/synapse-types'\nimport { CardLink } from '../CardContainer/CardLink'\nimport { getColorPalette } from '../ColorGradient/ColorGradient'\nimport {\n getFileHandleAssociation,\n getLinkParams,\n} from '../GenericCard/CardUtils'\nimport ProgramsDesktop from './Programs.Desktop'\nimport ProgramsMobile from './Programs.Mobile'\n\nexport type ProgramsProps = {\n entityId: string\n rgbIndex: number\n titleColumnName: string\n linkColumnName: string\n summaryColumnName: string\n imageFileHandleColumnName: string\n linkConfig: CardLink\n}\n\nexport type ProgramsDataProps = {\n title: string\n summary: string\n link: string\n exploreLink: string\n color: string\n fileHandleAssociation?: FileHandleAssociation\n}\n\nexport function Programs(props: ProgramsProps) {\n const {\n entityId,\n titleColumnName,\n linkColumnName,\n summaryColumnName,\n imageFileHandleColumnName,\n linkConfig,\n rgbIndex,\n } = props\n const showDesktop = useShowDesktop()\n const entity = useGetEntity(entityId)\n const color: string = getColorPalette(rgbIndex ?? 0, 2).colorPalette[0]\n const queryBundleRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n query: {\n sql: `select * from ${entityId}`,\n },\n }\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const titleColumnIndex = getFieldIndex(titleColumnName, queryResultBundle)\n const summaryColumnIndex = getFieldIndex(summaryColumnName, queryResultBundle)\n const linkColumnIndex = getFieldIndex(linkColumnName, queryResultBundle)\n const iconColumnIndex = getFieldIndex(\n imageFileHandleColumnName,\n queryResultBundle,\n )\n return (\n <div className={`Programs${showDesktop ? '__Desktop' : ''}`}>\n {queryResultBundle?.queryResult!.queryResults.rows.map(el => {\n const values = el.values as string[]\n if (values.some(value => value === null)) {\n // We cast values above assuming there are no null values, emit a warning just in case.\n console.warn('Row has null value(s) when no nulls expected')\n }\n\n const title = values[titleColumnIndex]\n const summary = values[summaryColumnIndex]\n const link = values[linkColumnIndex] ?? ''\n const iconFileHandleIdValue = values[iconColumnIndex]\n\n const schema: Record<string, number> = {}\n queryResultBundle?.queryResult!.queryResults.headers.forEach(\n (header, colIndex) => {\n schema[header.name] = colIndex\n },\n )\n const { href } = getLinkParams(link, linkConfig, values, schema)\n\n const fileHandleAssociation = getFileHandleAssociation(\n entity.data,\n iconFileHandleIdValue,\n `syn${el.rowId}`,\n )\n const ProgramsDataProps: ProgramsDataProps = {\n title,\n summary,\n link,\n color,\n exploreLink: href,\n fileHandleAssociation,\n }\n return showDesktop ? (\n <ProgramsDesktop {...ProgramsDataProps} />\n ) : (\n <ProgramsMobile {...ProgramsDataProps} />\n )\n })}\n </div>\n )\n}\n\nexport default Programs\n"],"mappings":";;;;;;;;;;;;AAqCA,SAAgB,EAAS,GAAsB;CAC7C,IAAM,EACJ,aACA,oBACA,mBACA,sBACA,8BACA,eACA,gBACE,GACE,IAAc,EAAe,GAC7B,IAAS,EAAa,CAAQ,GAC9B,IAAgB,EAAgB,KAAY,GAAG,CAAC,EAAE,aAAa,IAW/D,EAAE,MAAM,MACZ,EAAwB;EAVxB,cAAc;EACd;EACA,UACE;EAEF,OAAO,EACL,KAAK,iBAAiB,IACxB;CAGwB,CAAkB,GAEtC,IAAmB,EAAc,GAAiB,CAAiB,GACnE,IAAqB,EAAc,GAAmB,CAAiB,GACvE,IAAkB,EAAc,GAAgB,CAAiB,GACjE,IAAkB,EACtB,GACA,CACF;CACA,OACE,kBAAC,OAAD;EAAK,WAAW,WAAW,IAAc,cAAc;YACpD,GAAmB,YAAa,aAAa,KAAK,KAAI,MAAM;GAC3D,IAAM,IAAS,EAAG;GAClB,AAAI,EAAO,MAAK,MAAS,MAAU,IAAI,KAErC,QAAQ,KAAK,8CAA8C;GAG7D,IAAM,IAAQ,EAAO,IACf,IAAU,EAAO,IACjB,IAAO,EAAO,MAAoB,IAClC,IAAwB,EAAO,IAE/B,IAAiC,CAAC;GACxC,GAAmB,YAAa,aAAa,QAAQ,SAClD,GAAQ,MAAa;IACpB,EAAO,EAAO,QAAQ;GACxB,CACF;GACA,IAAM,EAAE,YAAS,EAAc,GAAM,GAAY,GAAQ,CAAM,GAOzD,IAAuC;IAC3C;IACA;IACA;IACA;IACA,aAAa;IACb,uBAX4B,EAC5B,EAAO,MACP,GACA,MAAM,EAAG,OAQT;GACF;GACA,OACE,EADK,IACJ,IAEA,GAFD,EAAiB,GAAI,EAAoB,CAED;EAE5C,CAAC;CACE,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectDataAvailability.js","names":[],"sources":["../../../src/components/ProjectStorage/ProjectDataAvailability.tsx"],"sourcesContent":["import { SYNAPSE_STORAGE_LOCATION_ID } from '@/synapse-client'\nimport { useProjectStorageUsage } from '@/synapse-queries'\nimport { spreadSx } from '@/theme/spreadSx'\nimport { useSynapseContext } from '@/utils'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport { SAGE_OFFERINGS_HELP_URL } from '@/utils/SynapseConstants'\nimport { Box, SxProps, Tooltip, Typography } from '@mui/material'\nimport React from 'react'\nimport HelpPopover from '../HelpPopover'\n\nexport type ProjectDataAvailabilityProps = {\n projectId?: string\n sx?: SxProps\n}\nconst usageBarWidth = 142 //px\n\nexport function ProjectDataAvailability({\n projectId,\n sx,\n}: ProjectDataAvailabilityProps): React.ReactNode {\n const { isAuthenticated } = useSynapseContext()\n const { data } = useProjectStorageUsage(projectId!, {\n enabled: !!projectId && isAuthenticated,\n })\n const projectDataUsageArray = data?.locations.filter(\n v => v.storageLocationId == SYNAPSE_STORAGE_LOCATION_ID,\n )\n const synapseStorageUsage =\n projectDataUsageArray?.length == 1 ? projectDataUsageArray[0] : undefined\n if (!synapseStorageUsage) {\n return <></>\n }\n const { sumFileBytes = 0, maxAllowedFileBytes = 0 } = synapseStorageUsage\n if (maxAllowedFileBytes == 0) {\n return <></>\n }\n const usageBarFilledPx = Math.min(\n Math.round((sumFileBytes / maxAllowedFileBytes) * usageBarWidth),\n usageBarWidth,\n )\n const friendlySumFileBytes = calculateFriendlyFileSize(sumFileBytes, 1)\n const friendlyMaxAllowedFileBytes = calculateFriendlyFileSize(\n maxAllowedFileBytes,\n 1,\n ).replace(/\\.0\\s/, ' ') // SWC-7183: remove '.0 ' from the string if it exists\n return (\n <Box\n sx={spreadSx(\n {\n display: 'flex',\n flexDirection: 'column',\n width: '210px',\n fontFamily: 'DM Sans',\n color: 'white',\n px: '10px',\n },\n sx,\n )}\n >\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: '5px',\n }}\n >\n <Typography\n sx={{\n // match current styles in Project metadata\n fontWeight: 700,\n fontSize: '16px',\n }}\n >\n Data Availability{' '}\n </Typography>{' '}\n <HelpPopover\n containerSx={{\n fontSize: '12px',\n }}\n markdownText=\"Hosting Plan Options:\n- Basic Plan: Free, for sharing small datasets (<100GB) with self-service setup. No direct support.\n- Self-Managed Plan: Ideal for data longevity, FAIR principles, and NIH compliance. Includes consultation services and data access management tools.\n- Data Coordination Plan: For large, multi-institutional projects, with personalized consulting, data curation, and a custom data portal.\"\n helpUrl={SAGE_OFFERINGS_HELP_URL}\n />\n </Box>\n {synapseStorageUsage.maxAllowedFileBytes && (\n <Tooltip\n title={`Using ${friendlySumFileBytes} out of ${friendlyMaxAllowedFileBytes}`}\n >\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: '5px',\n alignItems: 'center',\n }}\n >\n <Typography\n variant=\"body1\"\n sx={{\n fontSize: '12px',\n }}\n >\n 0\n </Typography>\n {/* Progress Bar */}\n <Box\n sx={{\n width: `${usageBarWidth}px`,\n height: '4px',\n backgroundColor: 'white',\n borderRadius: '50px',\n }}\n >\n <Box\n sx={{\n width: `${usageBarFilledPx}px`,\n height: '4px',\n backgroundColor: '#EDC766',\n borderRadius: '50px',\n }}\n ></Box>\n </Box>\n <Typography\n variant=\"body1\"\n sx={{\n fontSize: '12px',\n whiteSpace: 'nowrap',\n }}\n >\n {friendlyMaxAllowedFileBytes}\n </Typography>\n </Box>\n </Tooltip>\n )}\n </Box>\n )\n}\n\nexport default ProjectDataAvailability\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAM,IAAgB;AAEtB,SAAgB,EAAwB,EACtC,cACA,SACgD;CAChD,IAAM,EAAE,uBAAoB,GAAmB,EACzC,EAAE,YAAS,EAAuB,GAAY,EAClD,SAAS,CAAC,CAAC,KAAa,GACzB,CAAC,EACI,IAAwB,GAAM,UAAU,QAC5C,MAAK,EAAE,qBAAA,EACR,EACK,IACJ,GAAuB,UAAU,IAAI,EAAsB,KAAK,KAAA;AAClE,KAAI,CAAC,EACH,QAAO,kBAAA,GAAA,EAAK,CAAA;CAEd,IAAM,EAAE,kBAAe,GAAG,yBAAsB,MAAM;AACtD,KAAI,KAAuB,EACzB,QAAO,kBAAA,GAAA,EAAK,CAAA;CAEd,IAAM,IAAmB,KAAK,IAC5B,KAAK,MAAO,IAAe,IAAuB,EAAc,EAChE,EACD,EACK,IAAuB,EAA0B,GAAc,EAAE,EACjE,IAA8B,EAClC,GACA,EACD,CAAC,QAAQ,SAAS,IAAI;AACvB,QACE,kBAAC,GAAD;EACE,IAAI,EACF;GACE,SAAS;GACT,eAAe;GACf,OAAO;GACP,YAAY;GACZ,OAAO;GACP,IAAI;GACL,EACD,EACD;YAXH,CAaE,kBAAC,GAAD;GACE,IAAI;IACF,SAAS;IACT,eAAe;IACf,KAAK;IACN;aALH;IAOE,kBAAC,GAAD;KACE,IAAI;MAEF,YAAY;MACZ,UAAU;MACX;eALH,CAMC,qBACmB,IACP;;IAAC;IACd,kBAAC,GAAD;KACE,aAAa,EACX,UAAU,QACX;KACD,cAAa;KAIb,SAAS;KACT,CAAA;IACE;MACL,EAAoB,uBACnB,kBAAC,GAAD;GACE,OAAO,SAAS,EAAqB,UAAU;aAE/C,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,eAAe;KACf,KAAK;KACL,YAAY;KACb;cANH;KAQE,kBAAC,GAAD;MACE,SAAQ;MACR,IAAI,EACF,UAAU,QACX;gBACF;MAEY,CAAA;KAEb,kBAAC,GAAD;MACE,IAAI;OACF,OAAO,GAAG,EAAc;OACxB,QAAQ;OACR,iBAAiB;OACjB,cAAc;OACf;gBAED,kBAAC,GAAD,EACE,IAAI;OACF,OAAO,GAAG,EAAiB;OAC3B,QAAQ;OACR,iBAAiB;OACjB,cAAc;OACf,EACI,CAAA;MACH,CAAA;KACN,kBAAC,GAAD;MACE,SAAQ;MACR,IAAI;OACF,UAAU;OACV,YAAY;OACb;gBAEA;MACU,CAAA;KACT;;GACE,CAAA,CAER"}
1
+ {"version":3,"file":"ProjectDataAvailability.js","names":[],"sources":["../../../src/components/ProjectStorage/ProjectDataAvailability.tsx"],"sourcesContent":["import { SYNAPSE_STORAGE_LOCATION_ID } from '@/synapse-client'\nimport { useProjectStorageUsage } from '@/synapse-queries'\nimport { spreadSx } from '@/theme/spreadSx'\nimport { useSynapseContext } from '@/utils'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport { SAGE_OFFERINGS_HELP_URL } from '@/utils/SynapseConstants'\nimport { Box, SxProps, Tooltip, Typography } from '@mui/material'\nimport React from 'react'\nimport HelpPopover from '../HelpPopover'\n\nexport type ProjectDataAvailabilityProps = {\n projectId?: string\n sx?: SxProps\n}\nconst usageBarWidth = 142 //px\n\nexport function ProjectDataAvailability({\n projectId,\n sx,\n}: ProjectDataAvailabilityProps): React.ReactNode {\n const { isAuthenticated } = useSynapseContext()\n const { data } = useProjectStorageUsage(projectId!, {\n enabled: !!projectId && isAuthenticated,\n })\n const projectDataUsageArray = data?.locations.filter(\n v => v.storageLocationId == SYNAPSE_STORAGE_LOCATION_ID,\n )\n const synapseStorageUsage =\n projectDataUsageArray?.length == 1 ? projectDataUsageArray[0] : undefined\n if (!synapseStorageUsage) {\n return <></>\n }\n const { sumFileBytes = 0, maxAllowedFileBytes = 0 } = synapseStorageUsage\n if (maxAllowedFileBytes == 0) {\n return <></>\n }\n const usageBarFilledPx = Math.min(\n Math.round((sumFileBytes / maxAllowedFileBytes) * usageBarWidth),\n usageBarWidth,\n )\n const friendlySumFileBytes = calculateFriendlyFileSize(sumFileBytes, 1)\n const friendlyMaxAllowedFileBytes = calculateFriendlyFileSize(\n maxAllowedFileBytes,\n 1,\n ).replace(/\\.0\\s/, ' ') // SWC-7183: remove '.0 ' from the string if it exists\n return (\n <Box\n sx={spreadSx(\n {\n display: 'flex',\n flexDirection: 'column',\n width: '210px',\n fontFamily: 'DM Sans',\n color: 'white',\n px: '10px',\n },\n sx,\n )}\n >\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: '5px',\n }}\n >\n <Typography\n sx={{\n // match current styles in Project metadata\n fontWeight: 700,\n fontSize: '16px',\n }}\n >\n Data Availability{' '}\n </Typography>{' '}\n <HelpPopover\n containerSx={{\n fontSize: '12px',\n }}\n markdownText=\"Hosting Plan Options:\n- Basic Plan: Free, for sharing small datasets (<100GB) with self-service setup. No direct support.\n- Self-Managed Plan: Ideal for data longevity, FAIR principles, and NIH compliance. Includes consultation services and data access management tools.\n- Data Coordination Plan: For large, multi-institutional projects, with personalized consulting, data curation, and a custom data portal.\"\n helpUrl={SAGE_OFFERINGS_HELP_URL}\n />\n </Box>\n {synapseStorageUsage.maxAllowedFileBytes && (\n <Tooltip\n title={`Using ${friendlySumFileBytes} out of ${friendlyMaxAllowedFileBytes}`}\n >\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: '5px',\n alignItems: 'center',\n }}\n >\n <Typography\n variant=\"body1\"\n sx={{\n fontSize: '12px',\n }}\n >\n 0\n </Typography>\n {/* Progress Bar */}\n <Box\n sx={{\n width: `${usageBarWidth}px`,\n height: '4px',\n backgroundColor: 'white',\n borderRadius: '50px',\n }}\n >\n <Box\n sx={{\n width: `${usageBarFilledPx}px`,\n height: '4px',\n backgroundColor: '#EDC766',\n borderRadius: '50px',\n }}\n ></Box>\n </Box>\n <Typography\n variant=\"body1\"\n sx={{\n fontSize: '12px',\n whiteSpace: 'nowrap',\n }}\n >\n {friendlyMaxAllowedFileBytes}\n </Typography>\n </Box>\n </Tooltip>\n )}\n </Box>\n )\n}\n\nexport default ProjectDataAvailability\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAM,IAAgB;AAEtB,SAAgB,EAAwB,EACtC,cACA,SACgD;CAChD,IAAM,EAAE,uBAAoB,EAAkB,GACxC,EAAE,YAAS,EAAuB,GAAY,EAClD,SAAS,CAAC,CAAC,KAAa,EAC1B,CAAC,GACK,IAAwB,GAAM,UAAU,QAC5C,MAAK,EAAE,qBAAA,CACT,GACM,IACJ,GAAuB,UAAU,IAAI,EAAsB,KAAK,KAAA;CAClE,IAAI,CAAC,GACH,OAAO,kBAAA,GAAA,CAAI,CAAA;CAEb,IAAM,EAAE,kBAAe,GAAG,yBAAsB,MAAM;CACtD,IAAI,KAAuB,GACzB,OAAO,kBAAA,GAAA,CAAI,CAAA;CAEb,IAAM,IAAmB,KAAK,IAC5B,KAAK,MAAO,IAAe,IAAuB,CAAa,GAC/D,CACF,GACM,IAAuB,EAA0B,GAAc,CAAC,GAChE,IAA8B,EAClC,GACA,CACF,EAAE,QAAQ,SAAS,GAAG;CACtB,OACE,kBAAC,GAAD;EACE,IAAI,EACF;GACE,SAAS;GACT,eAAe;GACf,OAAO;GACP,YAAY;GACZ,OAAO;GACP,IAAI;EACN,GACA,CACF;YAXF,CAaE,kBAAC,GAAD;GACE,IAAI;IACF,SAAS;IACT,eAAe;IACf,KAAK;GACP;aALF;IAOE,kBAAC,GAAD;KACE,IAAI;MAEF,YAAY;MACZ,UAAU;KACZ;eALF,CAMC,qBACmB,GACR;;IAAE;IACd,kBAAC,GAAD;KACE,aAAa,EACX,UAAU,OACZ;KACA,cAAa;KAIb,SAAS;IACV,CAAA;GACE;MACJ,EAAoB,uBACnB,kBAAC,GAAD;GACE,OAAO,SAAS,EAAqB,UAAU;aAE/C,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,eAAe;KACf,KAAK;KACL,YAAY;IACd;cANF;KAQE,kBAAC,GAAD;MACE,SAAQ;MACR,IAAI,EACF,UAAU,OACZ;gBACD;KAEW,CAAA;KAEZ,kBAAC,GAAD;MACE,IAAI;OACF,OAAO,GAAG,EAAc;OACxB,QAAQ;OACR,iBAAiB;OACjB,cAAc;MAChB;gBAEA,kBAAC,GAAD,EACE,IAAI;OACF,OAAO,GAAG,EAAiB;OAC3B,QAAQ;OACR,iBAAiB;OACjB,cAAc;MAChB,EACI,CAAA;KACH,CAAA;KACL,kBAAC,GAAD;MACE,SAAQ;MACR,IAAI;OACF,UAAU;OACV,YAAY;MACd;gBAEC;KACS,CAAA;IACT;;EACE,CAAA,CAER;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ActivityNodeLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { Tooltip, Typography } from '@mui/material'\nimport { Activity } from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { useMemo } from 'react'\nimport { UserBadge } from '../UserCard/UserBadge'\n\nexport const ActivityNodeLabel = (data: Activity): React.ReactNode => {\n const friendlyModifiedOn = formatDate(dayjs(data.modifiedOn))\n const { name, description } = data\n return useMemo(\n () => (\n <>\n {name && (\n <Tooltip title={name} placement=\"top\" enterNextDelay={200}>\n <span>\n <Typography variant=\"smallText1\" className=\"name\">\n {name}\n </Typography>\n </span>\n </Tooltip>\n )}\n {description && (\n <Tooltip title={description} placement=\"top\" enterNextDelay={200}>\n <span>\n <Typography variant=\"smallText1\" className=\"description\">\n {description}\n </Typography>\n </span>\n </Tooltip>\n )}\n <UserBadge userId={data.modifiedBy} />\n <div>{friendlyModifiedOn}</div>\n </>\n ),\n [name, description, data.modifiedBy, friendlyModifiedOn],\n )\n}\n"],"mappings":";;;;;;;AAQA,IAAa,KAAqB,MAAoC;CACpE,IAAM,IAAqB,EAAW,EAAM,EAAK,WAAW,CAAC,EACvD,EAAE,SAAM,mBAAgB;AAC9B,QAAO,QAEH,kBAAA,GAAA,EAAA,UAAA;EACG,KACC,kBAAC,GAAD;GAAS,OAAO;GAAM,WAAU;GAAM,gBAAgB;aACpD,kBAAC,QAAD,EAAA,UACE,kBAAC,GAAD;IAAY,SAAQ;IAAa,WAAU;cACxC;IACU,CAAA,EACR,CAAA;GACC,CAAA;EAEX,KACC,kBAAC,GAAD;GAAS,OAAO;GAAa,WAAU;GAAM,gBAAgB;aAC3D,kBAAC,QAAD,EAAA,UACE,kBAAC,GAAD;IAAY,SAAQ;IAAa,WAAU;cACxC;IACU,CAAA,EACR,CAAA;GACC,CAAA;EAEZ,kBAAC,GAAD,EAAW,QAAQ,EAAK,YAAc,CAAA;EACtC,kBAAC,OAAD,EAAA,UAAM,GAAyB,CAAA;EAC9B,EAAA,CAAA,EAEL;EAAC;EAAM;EAAa,EAAK;EAAY;EAAmB,CACzD"}
1
+ {"version":3,"file":"ActivityNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ActivityNodeLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { Tooltip, Typography } from '@mui/material'\nimport { Activity } from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { useMemo } from 'react'\nimport { UserBadge } from '../UserCard/UserBadge'\n\nexport const ActivityNodeLabel = (data: Activity): React.ReactNode => {\n const friendlyModifiedOn = formatDate(dayjs(data.modifiedOn))\n const { name, description } = data\n return useMemo(\n () => (\n <>\n {name && (\n <Tooltip title={name} placement=\"top\" enterNextDelay={200}>\n <span>\n <Typography variant=\"smallText1\" className=\"name\">\n {name}\n </Typography>\n </span>\n </Tooltip>\n )}\n {description && (\n <Tooltip title={description} placement=\"top\" enterNextDelay={200}>\n <span>\n <Typography variant=\"smallText1\" className=\"description\">\n {description}\n </Typography>\n </span>\n </Tooltip>\n )}\n <UserBadge userId={data.modifiedBy} />\n <div>{friendlyModifiedOn}</div>\n </>\n ),\n [name, description, data.modifiedBy, friendlyModifiedOn],\n )\n}\n"],"mappings":";;;;;;;AAQA,IAAa,KAAqB,MAAoC;CACpE,IAAM,IAAqB,EAAW,EAAM,EAAK,UAAU,CAAC,GACtD,EAAE,SAAM,mBAAgB;CAC9B,OAAO,QAEH,kBAAA,GAAA,EAAA,UAAA;EACG,KACC,kBAAC,GAAD;GAAS,OAAO;GAAM,WAAU;GAAM,gBAAgB;aACpD,kBAAC,QAAD,EAAA,UACE,kBAAC,GAAD;IAAY,SAAQ;IAAa,WAAU;cACxC;GACS,CAAA,EACR,CAAA;EACC,CAAA;EAEV,KACC,kBAAC,GAAD;GAAS,OAAO;GAAa,WAAU;GAAM,gBAAgB;aAC3D,kBAAC,QAAD,EAAA,UACE,kBAAC,GAAD;IAAY,SAAQ;IAAa,WAAU;cACxC;GACS,CAAA,EACR,CAAA;EACC,CAAA;EAEX,kBAAC,GAAD,EAAW,QAAQ,EAAK,WAAa,CAAA;EACrC,kBAAC,OAAD,EAAA,UAAM,EAAwB,CAAA;CAC9B,EAAA,CAAA,GAEJ;EAAC;EAAM;EAAa,EAAK;EAAY;CAAkB,CACzD;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/EntityNodeLabel.tsx"],"sourcesContent":["import {\n convertToEntityType,\n isVersionableEntityType,\n} from '@/utils/functions/EntityTypeUtils'\nimport React from 'react'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { Link, Tooltip } from '@mui/material'\nimport { EntityHeader } from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport { ProvenanceEntityIcon } from './ProvenanceEntityIcon'\n\nexport const EntityNodeLabel = (data: EntityHeader): React.ReactNode => {\n const targetVersionNumberString = data.versionNumber\n ? `.${data.versionNumber}`\n : ''\n const entityVersionString = `${data.id}${targetVersionNumberString}`\n return useMemo(\n () => (\n <>\n <div>\n <ProvenanceEntityIcon entityHeader={data} />\n </div>\n <>\n <div>\n <Tooltip title={data.name} placement=\"top\" enterNextDelay={300}>\n <Link\n href={`${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Synapse:${entityVersionString}`}\n >\n {data.name}\n </Link>\n </Tooltip>\n </div>\n {isVersionableEntityType(convertToEntityType(data.type)) && (\n <div>\n <div>v.{data.versionNumber}</div>\n {!data.isLatestVersion && <div>(old version)</div>}\n </div>\n )}\n </>\n </>\n ),\n [data, entityVersionString],\n )\n}\n"],"mappings":";;;;;;;AAWA,IAAa,KAAmB,MAAwC;CACtE,IAAM,IAA4B,EAAK,gBACnC,IAAI,EAAK,kBACT,IACE,IAAsB,GAAG,EAAK,KAAK;AACzC,QAAO,QAEH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD,EAAsB,cAAc,GAAQ,CAAA,EACxC,CAAA,EACN,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;EAAS,OAAO,EAAK;EAAM,WAAU;EAAM,gBAAgB;YACzD,kBAAC,GAAD;GACE,MAAM,GAAG,EAA2B,OAAO,UAAU;aAEpD,EAAK;GACD,CAAA;EACC,CAAA,EACN,CAAA,EACL,EAAwB,EAAoB,EAAK,KAAK,CAAC,IACtD,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,OAAD,EAAA,UAAA,CAAK,MAAG,EAAK,cAAoB,EAAA,CAAA,EAChC,CAAC,EAAK,mBAAmB,kBAAC,OAAD,EAAA,UAAK,iBAAmB,CAAA,CAC9C,EAAA,CAAA,CAEP,EAAA,CAAA,CACF,EAAA,CAAA,EAEL,CAAC,GAAM,EAAoB,CAC5B"}
1
+ {"version":3,"file":"EntityNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/EntityNodeLabel.tsx"],"sourcesContent":["import {\n convertToEntityType,\n isVersionableEntityType,\n} from '@/utils/functions/EntityTypeUtils'\nimport React from 'react'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { Link, Tooltip } from '@mui/material'\nimport { EntityHeader } from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport { ProvenanceEntityIcon } from './ProvenanceEntityIcon'\n\nexport const EntityNodeLabel = (data: EntityHeader): React.ReactNode => {\n const targetVersionNumberString = data.versionNumber\n ? `.${data.versionNumber}`\n : ''\n const entityVersionString = `${data.id}${targetVersionNumberString}`\n return useMemo(\n () => (\n <>\n <div>\n <ProvenanceEntityIcon entityHeader={data} />\n </div>\n <>\n <div>\n <Tooltip title={data.name} placement=\"top\" enterNextDelay={300}>\n <Link\n href={`${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Synapse:${entityVersionString}`}\n >\n {data.name}\n </Link>\n </Tooltip>\n </div>\n {isVersionableEntityType(convertToEntityType(data.type)) && (\n <div>\n <div>v.{data.versionNumber}</div>\n {!data.isLatestVersion && <div>(old version)</div>}\n </div>\n )}\n </>\n </>\n ),\n [data, entityVersionString],\n )\n}\n"],"mappings":";;;;;;;AAWA,IAAa,KAAmB,MAAwC;CACtE,IAAM,IAA4B,EAAK,gBACnC,IAAI,EAAK,kBACT,IACE,IAAsB,GAAG,EAAK,KAAK;CACzC,OAAO,QAEH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD,EAAsB,cAAc,EAAO,CAAA,EACxC,CAAA,GACL,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;EAAS,OAAO,EAAK;EAAM,WAAU;EAAM,gBAAgB;YACzD,kBAAC,GAAD;GACE,MAAM,GAAG,EAA2B,OAAO,UAAU;aAEpD,EAAK;EACF,CAAA;CACC,CAAA,EACN,CAAA,GACJ,EAAwB,EAAoB,EAAK,IAAI,CAAC,KACrD,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,OAAD,EAAA,UAAA,CAAK,MAAG,EAAK,aAAmB,EAAA,CAAA,GAC/B,CAAC,EAAK,mBAAmB,kBAAC,OAAD,EAAA,UAAK,gBAAkB,CAAA,CAC9C,EAAA,CAAA,CAEP,EAAA,CAAA,CACF,EAAA,CAAA,GAEJ,CAAC,GAAM,CAAmB,CAC5B;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPlaceholderNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/EntityPlaceholderNodeLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { useMemo } from 'react'\nimport { Reference } from '@sage-bionetworks/synapse-types'\nimport IconSvg from '../IconSvg/IconSvg'\n\n/**\n * This node type is used if the user cannot access the entity for some reason\n */\nexport const EntityPlaceholderNodeLabel = (\n data: Reference,\n): React.ReactNode => {\n const targetVersionNumberString = data.targetVersionNumber\n ? `.${data.targetVersionNumber}`\n : ''\n const entityVersionString = `${data.targetId}${targetVersionNumberString}`\n return useMemo(\n () => (\n <>\n <div>\n <IconSvg icon=\"fileOutlined\" />\n </div>\n <span>{entityVersionString}</span>\n </>\n ),\n [entityVersionString],\n )\n}\n"],"mappings":";;;;AAQA,IAAa,KACX,MACoB;CACpB,IAAM,IAA4B,EAAK,sBACnC,IAAI,EAAK,wBACT,IACE,IAAsB,GAAG,EAAK,WAAW;AAC/C,QAAO,QAEH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD,EAAS,MAAK,gBAAiB,CAAA,EAC3B,CAAA,EACN,kBAAC,QAAD,EAAA,UAAO,GAA2B,CAAA,CACjC,EAAA,CAAA,EAEL,CAAC,EAAoB,CACtB"}
1
+ {"version":3,"file":"EntityPlaceholderNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/EntityPlaceholderNodeLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { useMemo } from 'react'\nimport { Reference } from '@sage-bionetworks/synapse-types'\nimport IconSvg from '../IconSvg/IconSvg'\n\n/**\n * This node type is used if the user cannot access the entity for some reason\n */\nexport const EntityPlaceholderNodeLabel = (\n data: Reference,\n): React.ReactNode => {\n const targetVersionNumberString = data.targetVersionNumber\n ? `.${data.targetVersionNumber}`\n : ''\n const entityVersionString = `${data.targetId}${targetVersionNumberString}`\n return useMemo(\n () => (\n <>\n <div>\n <IconSvg icon=\"fileOutlined\" />\n </div>\n <span>{entityVersionString}</span>\n </>\n ),\n [entityVersionString],\n )\n}\n"],"mappings":";;;;AAQA,IAAa,KACX,MACoB;CACpB,IAAM,IAA4B,EAAK,sBACnC,IAAI,EAAK,wBACT,IACE,IAAsB,GAAG,EAAK,WAAW;CAC/C,OAAO,QAEH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD,EAAS,MAAK,eAAgB,CAAA,EAC3B,CAAA,GACL,kBAAC,QAAD,EAAA,UAAO,EAA0B,CAAA,CACjC,EAAA,CAAA,GAEJ,CAAC,CAAmB,CACtB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExpandGraphNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ExpandGraphNodeLabel.tsx"],"sourcesContent":["import React from 'react'\nimport pluralize from 'pluralize'\nimport { useMemo } from 'react'\nimport { EntityHeader } from '@sage-bionetworks/synapse-types'\n\nexport type ExpandGraphNodeDataProps = {\n entityHeader: EntityHeader\n itemCount: number\n}\nexport const ExpandGraphNodeLabel = (\n props: ExpandGraphNodeDataProps,\n): React.ReactNode => {\n const { itemCount } = props\n return useMemo(\n () => (\n <>\n <a>\n Show {itemCount} {pluralize('item', itemCount)}&hellip;\n </a>\n </>\n ),\n [itemCount],\n )\n}\n"],"mappings":";;;;AASA,IAAa,KACX,MACoB;CACpB,IAAM,EAAE,iBAAc;AACtB,QAAO,QAEH,kBAAA,GAAA,EAAA,UACE,kBAAC,KAAD,EAAA,UAAA;EAAG;EACK;EAAU;EAAE,EAAU,QAAQ,EAAU;EAAC;EAC7C,EAAA,CAAA,EACH,CAAA,EAEL,CAAC,EAAU,CACZ"}
1
+ {"version":3,"file":"ExpandGraphNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ExpandGraphNodeLabel.tsx"],"sourcesContent":["import React from 'react'\nimport pluralize from 'pluralize'\nimport { useMemo } from 'react'\nimport { EntityHeader } from '@sage-bionetworks/synapse-types'\n\nexport type ExpandGraphNodeDataProps = {\n entityHeader: EntityHeader\n itemCount: number\n}\nexport const ExpandGraphNodeLabel = (\n props: ExpandGraphNodeDataProps,\n): React.ReactNode => {\n const { itemCount } = props\n return useMemo(\n () => (\n <>\n <a>\n Show {itemCount} {pluralize('item', itemCount)}&hellip;\n </a>\n </>\n ),\n [itemCount],\n )\n}\n"],"mappings":";;;;AASA,IAAa,KACX,MACoB;CACpB,IAAM,EAAE,iBAAc;CACtB,OAAO,QAEH,kBAAA,GAAA,EAAA,UACE,kBAAC,KAAD,EAAA,UAAA;EAAG;EACK;EAAU;EAAE,EAAU,QAAQ,CAAS;EAAE;CAC9C,EAAA,CAAA,EACH,CAAA,GAEJ,CAAC,CAAS,CACZ;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalGraphNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ExternalGraphNodeLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { useMemo } from 'react'\nimport { UsedURL } from '@sage-bionetworks/synapse-types'\nimport { Tooltip } from '@mui/material'\nimport { ProvenanceExternalIcon } from './ProvenanceExternalIcon'\n\nexport const ExternalGraphNodeLabel = (data: UsedURL): React.ReactNode => {\n return useMemo(\n () => (\n <>\n <div>\n <ProvenanceExternalIcon url={data.url} />\n </div>\n <Tooltip title={data.name} placement=\"top\" enterNextDelay={300}>\n <a href={data.url} rel=\"noopener noreferrer\">\n {data.name}\n </a>\n </Tooltip>\n </>\n ),\n [data.name, data.url],\n )\n}\n"],"mappings":";;;;;AAMA,IAAa,KAA0B,MAC9B,QAEH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD,EAAwB,KAAK,EAAK,KAAO,CAAA,EACrC,CAAA,EACN,kBAAC,GAAD;CAAS,OAAO,EAAK;CAAM,WAAU;CAAM,gBAAgB;WACzD,kBAAC,KAAD;EAAG,MAAM,EAAK;EAAK,KAAI;YACpB,EAAK;EACJ,CAAA;CACI,CAAA,CACT,EAAA,CAAA,EAEL,CAAC,EAAK,MAAM,EAAK,IAAI,CACtB"}
1
+ {"version":3,"file":"ExternalGraphNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ExternalGraphNodeLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { useMemo } from 'react'\nimport { UsedURL } from '@sage-bionetworks/synapse-types'\nimport { Tooltip } from '@mui/material'\nimport { ProvenanceExternalIcon } from './ProvenanceExternalIcon'\n\nexport const ExternalGraphNodeLabel = (data: UsedURL): React.ReactNode => {\n return useMemo(\n () => (\n <>\n <div>\n <ProvenanceExternalIcon url={data.url} />\n </div>\n <Tooltip title={data.name} placement=\"top\" enterNextDelay={300}>\n <a href={data.url} rel=\"noopener noreferrer\">\n {data.name}\n </a>\n </Tooltip>\n </>\n ),\n [data.name, data.url],\n )\n}\n"],"mappings":";;;;;AAMA,IAAa,KAA0B,MAC9B,QAEH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD,EAAwB,KAAK,EAAK,IAAM,CAAA,EACrC,CAAA,GACL,kBAAC,GAAD;CAAS,OAAO,EAAK;CAAM,WAAU;CAAM,gBAAgB;WACzD,kBAAC,KAAD;EAAG,MAAM,EAAK;EAAK,KAAI;YACpB,EAAK;CACL,CAAA;AACI,CAAA,CACT,EAAA,CAAA,GAEJ,CAAC,EAAK,MAAM,EAAK,GAAG,CACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProvenanceEntityIcon.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceEntityIcon.tsx"],"sourcesContent":["import React from 'react'\nimport { convertToEntityType } from '@/utils/functions/EntityTypeUtils'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { EntityHeader } from '@sage-bionetworks/synapse-types'\nimport { EntityTypeIcon } from '../EntityIcon'\nimport IconSvg from '../IconSvg/IconSvg'\n\nexport type ProvenanceEntityIconProps = {\n entityHeader?: EntityHeader\n}\n\nconst codeFileExtensionSet = new Set([\n '.awk',\n '.bat',\n '.btm',\n '.c',\n '.cmd',\n '.cpp',\n '.cxx',\n '.def',\n '.dlg',\n '.dpc',\n '.dpj',\n '.dtd',\n '.h',\n '.hdl',\n '.hpp',\n '.hrc',\n '.html',\n '.hxx',\n '.inc',\n '.ini',\n '.inl',\n '.ins',\n '.ipy',\n '.java',\n '.js',\n '.jsp',\n '.l',\n '.lgt',\n '.ll',\n '.par',\n '.pl',\n '.py',\n '.r',\n '.rc',\n '.rdb',\n '.res',\n '.s',\n '.sbl',\n '.scp',\n '.sh',\n '.sql',\n '.src',\n '.srs',\n '.xml',\n '.xrb',\n '.y',\n '.yaml',\n '.yxx',\n '.cwl',\n '.wdl',\n '.json',\n])\n\nexport const ProvenanceEntityIcon = (\n props: ProvenanceEntityIconProps,\n): React.ReactNode => {\n const { entityHeader } = props\n if (entityHeader) {\n const entityType: EntityType = convertToEntityType(entityHeader?.type)\n if (entityType == EntityType.file) {\n // this is a file, may want to use a special icon in this case\n const lastPeriodIndex = entityHeader.name.lastIndexOf('.')\n if (lastPeriodIndex > -1) {\n const extension = entityHeader.name.slice(lastPeriodIndex)\n if (codeFileExtensionSet.has(extension.toLowerCase())) {\n return <IconSvg icon=\"code\" />\n }\n }\n } else {\n return <EntityTypeIcon type={entityType} includeTooltip={false} />\n }\n }\n\n // return the default (File icon)\n return <EntityTypeIcon type={EntityType.file} includeTooltip={false} />\n}\n"],"mappings":";;;;;;;AAWA,IAAM,IAAuB,IAAI,IAAI,6QAoDpC,CAAC,EAEW,KACX,MACoB;CACpB,IAAM,EAAE,oBAAiB;AACzB,KAAI,GAAc;EAChB,IAAM,IAAyB,EAAoB,GAAc,KAAK;AACtE,MAAI,KAAc,EAAW,MAAM;GAEjC,IAAM,IAAkB,EAAa,KAAK,YAAY,IAAI;AAC1D,OAAI,IAAkB,IAAI;IACxB,IAAM,IAAY,EAAa,KAAK,MAAM,EAAgB;AAC1D,QAAI,EAAqB,IAAI,EAAU,aAAa,CAAC,CACnD,QAAO,kBAAC,GAAD,EAAS,MAAK,QAAS,CAAA;;QAIlC,QAAO,kBAAC,GAAD;GAAgB,MAAM;GAAY,gBAAgB;GAAS,CAAA;;AAKtE,QAAO,kBAAC,GAAD;EAAgB,MAAM,EAAW;EAAM,gBAAgB;EAAS,CAAA"}
1
+ {"version":3,"file":"ProvenanceEntityIcon.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceEntityIcon.tsx"],"sourcesContent":["import React from 'react'\nimport { convertToEntityType } from '@/utils/functions/EntityTypeUtils'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { EntityHeader } from '@sage-bionetworks/synapse-types'\nimport { EntityTypeIcon } from '../EntityIcon'\nimport IconSvg from '../IconSvg/IconSvg'\n\nexport type ProvenanceEntityIconProps = {\n entityHeader?: EntityHeader\n}\n\nconst codeFileExtensionSet = new Set([\n '.awk',\n '.bat',\n '.btm',\n '.c',\n '.cmd',\n '.cpp',\n '.cxx',\n '.def',\n '.dlg',\n '.dpc',\n '.dpj',\n '.dtd',\n '.h',\n '.hdl',\n '.hpp',\n '.hrc',\n '.html',\n '.hxx',\n '.inc',\n '.ini',\n '.inl',\n '.ins',\n '.ipy',\n '.java',\n '.js',\n '.jsp',\n '.l',\n '.lgt',\n '.ll',\n '.par',\n '.pl',\n '.py',\n '.r',\n '.rc',\n '.rdb',\n '.res',\n '.s',\n '.sbl',\n '.scp',\n '.sh',\n '.sql',\n '.src',\n '.srs',\n '.xml',\n '.xrb',\n '.y',\n '.yaml',\n '.yxx',\n '.cwl',\n '.wdl',\n '.json',\n])\n\nexport const ProvenanceEntityIcon = (\n props: ProvenanceEntityIconProps,\n): React.ReactNode => {\n const { entityHeader } = props\n if (entityHeader) {\n const entityType: EntityType = convertToEntityType(entityHeader?.type)\n if (entityType == EntityType.file) {\n // this is a file, may want to use a special icon in this case\n const lastPeriodIndex = entityHeader.name.lastIndexOf('.')\n if (lastPeriodIndex > -1) {\n const extension = entityHeader.name.slice(lastPeriodIndex)\n if (codeFileExtensionSet.has(extension.toLowerCase())) {\n return <IconSvg icon=\"code\" />\n }\n }\n } else {\n return <EntityTypeIcon type={entityType} includeTooltip={false} />\n }\n }\n\n // return the default (File icon)\n return <EntityTypeIcon type={EntityType.file} includeTooltip={false} />\n}\n"],"mappings":";;;;;;;AAWA,IAAM,IAAuB,IAAI,IAAI,4QAoDrC,CAAC,GAEY,KACX,MACoB;CACpB,IAAM,EAAE,oBAAiB;CACzB,IAAI,GAAc;EAChB,IAAM,IAAyB,EAAoB,GAAc,IAAI;EACrE,IAAI,KAAc,EAAW,MAAM;GAEjC,IAAM,IAAkB,EAAa,KAAK,YAAY,GAAG;GACzD,IAAI,IAAkB,IAAI;IACxB,IAAM,IAAY,EAAa,KAAK,MAAM,CAAe;IACzD,IAAI,EAAqB,IAAI,EAAU,YAAY,CAAC,GAClD,OAAO,kBAAC,GAAD,EAAS,MAAK,OAAQ,CAAA;GAEjC;EACF,OACE,OAAO,kBAAC,GAAD;GAAgB,MAAM;GAAY,gBAAgB;EAAQ,CAAA;CAErE;CAGA,OAAO,kBAAC,GAAD;EAAgB,MAAM,EAAW;EAAM,gBAAgB;CAAQ,CAAA;AACxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProvenanceExternalIcon.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceExternalIcon.tsx"],"sourcesContent":["import React from 'react'\nimport IconSvg, { IconName } from '../IconSvg/IconSvg'\n\nexport type ProvenanceExternalIconProps = {\n url: string\n}\nconst githubRegex = /^(.+?\\.)?github\\.com$/\nconst githubusercontentRegex = /^(.+?\\.)?githubusercontent\\.com$/\n\nexport const ProvenanceExternalIcon = (\n props: ProvenanceExternalIconProps,\n): React.ReactNode => {\n const { url } = props\n let icon: IconName = 'link'\n const parsedUrl = new URL(url)\n const { hostname } = parsedUrl\n\n if (hostname.match(githubRegex) || hostname.match(githubusercontentRegex)) {\n icon = 'github'\n }\n // else if (url.includes(\"genomespace.org\")) {\n // icon = 'genomespace'\n // }\n\n // return the default (File icon)\n return <IconSvg icon={icon} />\n}\n"],"mappings":";;;;AAMA,IAAM,IAAc,yBACd,IAAyB,oCAElB,KACX,MACoB;CACpB,IAAM,EAAE,WAAQ,GACZ,IAAiB,QAEf,EAAE,gBAAa,IADC,IAAI,EACL;AAUrB,SARI,EAAS,MAAM,EAAY,IAAI,EAAS,MAAM,EAAuB,MACvE,IAAO,WAOF,kBAAC,GAAD,EAAe,SAAQ,CAAA"}
1
+ {"version":3,"file":"ProvenanceExternalIcon.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceExternalIcon.tsx"],"sourcesContent":["import React from 'react'\nimport IconSvg, { IconName } from '../IconSvg/IconSvg'\n\nexport type ProvenanceExternalIconProps = {\n url: string\n}\nconst githubRegex = /^(.+?\\.)?github\\.com$/\nconst githubusercontentRegex = /^(.+?\\.)?githubusercontent\\.com$/\n\nexport const ProvenanceExternalIcon = (\n props: ProvenanceExternalIconProps,\n): React.ReactNode => {\n const { url } = props\n let icon: IconName = 'link'\n const parsedUrl = new URL(url)\n const { hostname } = parsedUrl\n\n if (hostname.match(githubRegex) || hostname.match(githubusercontentRegex)) {\n icon = 'github'\n }\n // else if (url.includes(\"genomespace.org\")) {\n // icon = 'genomespace'\n // }\n\n // return the default (File icon)\n return <IconSvg icon={icon} />\n}\n"],"mappings":";;;;AAMA,IAAM,IAAc,yBACd,IAAyB,oCAElB,KACX,MACoB;CACpB,IAAM,EAAE,WAAQ,GACZ,IAAiB,QAEf,EAAE,gBAAa,IADC,IAAI,CACL;CAUrB,QARI,EAAS,MAAM,CAAW,KAAK,EAAS,MAAM,CAAsB,OACtE,IAAO,WAOF,kBAAC,GAAD,EAAe,QAAO,CAAA;AAC/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProvenanceGraph.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceGraph.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGetEntityHeaders } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { CircularProgress } from '@mui/material'\nimport {\n Activity,\n EntityHeader,\n ReferenceList,\n Used,\n USED_ENTITY_CONCRETE_TYPE_VALUE,\n UsedEntity,\n UsedURL,\n} from '@sage-bionetworks/synapse-types'\nimport { MouseEvent, useCallback, useEffect, useState, WheelEvent } from 'react'\nimport { useErrorHandler } from 'react-error-boundary'\nimport ReactFlow, {\n Controls,\n Edge,\n getConnectedEdges,\n Node,\n ReactFlowProvider,\n useEdgesState,\n useNodesState,\n useReactFlow,\n} from 'reactflow'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport { ExpandGraphNodeDataProps } from './ExpandGraphNodeLabel'\nimport {\n addActivityNode,\n addEntityNode,\n addEntityPlaceholderNode,\n addExpandNode,\n addExternalNode,\n addUndefinedNode,\n findEntityNode,\n isRootEntity,\n} from './ProvenanceGraphUtils'\nimport {\n getLayoutedElements,\n isArrayEqual,\n NodeType,\n ProvenanceNodeData,\n} from './ProvenanceUtils'\nimport 'reactflow/dist/style.css'\n\nexport type ProvenanceProps = {\n // what entity nodes should we start with?\n entityRefs: ReferenceList\n containerHeight?: string\n initialNodes?: Node[]\n initialEdges?: Edge[]\n onNodesChangedListener?: (nodes: Node[]) => void\n onEdgesChangedListener?: (edges: Edge[]) => void\n}\n\nconst MAX_ACTIVITY_EXPAND_NODES = 400\nconst DEFAULT_ZOOM = 0.85\n\n/**\n * Renders a Provenance Graph for a set of entities.\n * New Nodes are added to tempNodes, and new Edges are added to tempEdges.\n * On change, these are fed into the dagre js graph library to figure out the node positions,\n * and the output stored in 'nodes' and 'edges'. The 'nodes' and 'edges' arrays are used by the\n * ReactFlow component.\n */\nconst ProvenanceReactFlow = (props: ProvenanceProps): React.ReactNode => {\n const {\n entityRefs: rootEntityRefs,\n containerHeight = '200px',\n initialNodes = [],\n initialEdges = [],\n onNodesChangedListener,\n onEdgesChangedListener,\n } = props\n const { accessToken } = useSynapseContext()\n const [tempNodes, setTempNodes] = useState<Node[]>(initialNodes)\n const [tempEdges, setTempEdges] = useState<Edge[]>(initialEdges)\n const [nodes, setNodes] = useNodesState([])\n const [edges, setEdges] = useEdgesState([])\n const [clickedNode, setClickedNode] = useState<Node>()\n const handleError = useErrorHandler()\n\n const { data: rootEntityHeadersPage, isSuccess } = useGetEntityHeaders(\n rootEntityRefs,\n { throwOnError: true },\n )\n if (\n isSuccess &&\n rootEntityHeadersPage &&\n rootEntityHeadersPage.totalNumberOfResults == 0\n ) {\n const synapseIds = rootEntityRefs.map(ref => ref.targetId).join(',')\n handleError(\n `Unable to load provenance for the given Synapse IDs: ${synapseIds}`,\n )\n }\n const rootEntityHeaders = rootEntityHeadersPage?.results\n const [initializedPosition, setInitializedPosition] = useState<boolean>(false)\n\n // Get the react flow instance so we attempt to properly center the view.\n const reactFlowInstance = useReactFlow()\n\n const onClickNode = useCallback((_event: MouseEvent, node: Node) => {\n setClickedNode(node)\n }, [])\n\n /**\n * Called when we have a new entity to add to the graph. This will result in adding\n * a new Entity Node to the nodesCopy, a link from the usedInActivity to the new Entity Node,\n * AND it will look for an Activity associated with the new entity. If an Activity is found,\n * it will add an Expand Node for the user to click (to expand to see this Activity!).\n * If this is a root node (starting entity node), then we automatically add the Activity Node\n * and process it.\n */\n const addEntity = useCallback(\n async (params: {\n entityHeader: EntityHeader\n usedInActivity?: Activity\n nodesCopy: Node[]\n edgesCopy: Edge[]\n }) => {\n const { entityHeader, nodesCopy, edgesCopy, usedInActivity } = params\n addEntityNode({\n entityHeader,\n activity: usedInActivity,\n nodesCopy,\n edgesCopy,\n })\n //look for Activity\n try {\n const activity = await SynapseClient.getActivityForEntity(\n entityHeader.id,\n entityHeader.versionNumber,\n accessToken,\n )\n // if this is not a root node (or there are too many items to show), add an expand node\n if (\n !isRootEntity({ entityHeader, rootEntityHeaders }) ||\n (activity.used && activity.used.length >= MAX_ACTIVITY_EXPAND_NODES)\n ) {\n addExpandNode({\n entityHeader,\n itemCount: activity.used?.length,\n nodesCopy,\n edgesCopy,\n })\n }\n } catch (e) {\n // Activity is not accessible\n console.error(e)\n if (\n isRootEntity({\n entityHeader,\n rootEntityHeaders,\n })\n ) {\n // add provenance undefined node\n addUndefinedNode({\n entityHeader,\n nodesCopy,\n edgesCopy,\n })\n }\n }\n },\n [accessToken, rootEntityHeaders],\n )\n\n /**\n * This effect attempts to center the graph on one of the root nodes.\n * Only initializes after after a root node has been added to the graph.\n */\n useEffect(() => {\n if (!initializedPosition && nodes.length > 0) {\n setTimeout(() => {\n if (rootEntityHeaders) {\n const rootEntityNode = findEntityNode(rootEntityHeaders[0], nodes)\n if (rootEntityNode) {\n const currentZoom = reactFlowInstance.getZoom()\n const zoom = currentZoom > DEFAULT_ZOOM ? DEFAULT_ZOOM : currentZoom\n reactFlowInstance?.setCenter(\n rootEntityNode.position.x + 150,\n rootEntityNode.position.y - 30,\n { zoom, duration: 0 },\n )\n }\n setInitializedPosition(true)\n }\n })\n }\n }, [initializedPosition, nodes, reactFlowInstance, rootEntityHeaders])\n\n /**\n * This is called when the user clicks on an Expand Node. It will add the associated Activity\n * and all \"used\" items (entities and urls) to the graph by adding items to the nodesCopy and edgesCopy arrays.\n */\n const onExpandEntity = useCallback(\n async (params: {\n entityHeader: EntityHeader\n nodesCopy: Node[]\n edgesCopy: Edge[]\n }) => {\n const { entityHeader, nodesCopy, edgesCopy } = params\n try {\n const activity = await SynapseClient.getActivityForEntity(\n entityHeader.id,\n entityHeader.versionNumber,\n accessToken,\n )\n addActivityNode({\n activity,\n entityHeader,\n nodesCopy,\n edgesCopy,\n })\n // go through Activity.used array to add these nodes/edges\n if (activity.used && activity.used.length < MAX_ACTIVITY_EXPAND_NODES) {\n const usedEntityReferences: ReferenceList = []\n activity.used.forEach((usedItem: Used) => {\n if (usedItem.concreteType == USED_ENTITY_CONCRETE_TYPE_VALUE) {\n usedEntityReferences.push((usedItem as UsedEntity).reference)\n } else {\n // UsedURL\n const usedURL = usedItem as UsedURL\n addExternalNode({ usedURL, activity, nodesCopy, edgesCopy })\n }\n })\n const usedEntityHeadersPage = await SynapseClient.getEntityHeaders(\n usedEntityReferences,\n accessToken,\n )\n const { results: usedEntityHeaderPageResults } = usedEntityHeadersPage\n // find refs that were not returned by the entity header call\n const refsMissingEntityHeaders = usedEntityReferences.filter(ref => {\n return (\n usedEntityHeaderPageResults.find(header => {\n return header.id == ref.targetId\n }) == undefined\n )\n })\n refsMissingEntityHeaders.forEach(ref => {\n addEntityPlaceholderNode({ ref, activity, nodesCopy, edgesCopy })\n })\n const addEntityPromises: Promise<void>[] = []\n usedEntityHeaderPageResults.forEach(header => {\n addEntityPromises.push(\n addEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n usedInActivity: activity,\n }),\n )\n })\n await Promise.allSettled(addEntityPromises)\n }\n } catch (e) {\n // Activity is not accessible\n console.error(e)\n }\n },\n [accessToken, addEntity],\n )\n\n /**\n * This effect code executes when no nodes have been added.\n * It will add the root nodes, and attempt to expand the root nodes.\n */\n useEffect(() => {\n if (rootEntityHeaders && tempNodes.length == 0) {\n const nodesCopy = [...tempNodes]\n const edgesCopy = [...tempEdges]\n const addAndExpandPromises: Promise<void>[] = []\n rootEntityHeaders.forEach(header => {\n const addEntityPromise = addEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n })\n addAndExpandPromises.push(addEntityPromise)\n\n const expandEntityPromise = onExpandEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n })\n addAndExpandPromises.push(expandEntityPromise)\n })\n Promise.allSettled(addAndExpandPromises).finally(() => {\n setTempNodes(nodesCopy)\n setTempEdges(edgesCopy)\n })\n }\n }, [\n addEntity,\n handleError,\n onExpandEntity,\n rootEntityHeaders,\n rootEntityRefs,\n tempEdges,\n tempNodes,\n ])\n\n /**\n * This effect code executes when a node is clicked.\n * We check to see if it is an expand node. If it is, then we remove the expand node (and associated edge)\n * and ask for the Activity and associated \"used\" nodes (entities and URLs)\n */\n useEffect(() => {\n const nodeData: ProvenanceNodeData = clickedNode?.data as ProvenanceNodeData\n if (clickedNode && nodeData?.type == NodeType.EXPAND) {\n const expandNodeDataProps = nodeData.props as ExpandGraphNodeDataProps\n if (expandNodeDataProps.itemCount > MAX_ACTIVITY_EXPAND_NODES) {\n displayToast(\n 'Web visualization does not support expanding this many items at this time.',\n 'danger',\n )\n return\n } else {\n // graph will be used outside of synapse, so show a non-branded spinner\n nodeData.label = <CircularProgress size={30} />\n // remove clicked node\n const nodesWithoutExpandNode = tempNodes.filter(\n node => node.id != clickedNode.id,\n )\n const edgeToRemove = getConnectedEdges([clickedNode], tempEdges)[0]\n const edgesWithoutExpandEdge = tempEdges.filter(\n edge => edge != edgeToRemove,\n )\n onExpandEntity({\n entityHeader: expandNodeDataProps.entityHeader,\n nodesCopy: nodesWithoutExpandNode,\n edgesCopy: edgesWithoutExpandEdge,\n }).finally(() => {\n setTempNodes(nodesWithoutExpandNode)\n setTempEdges(edgesWithoutExpandEdge)\n })\n }\n setClickedNode(undefined)\n }\n }, [clickedNode, tempNodes, tempEdges, onExpandEntity])\n\n /**\n * This effect code is run when the graph nodes or edges change.\n * It feeds the nodes and edges into our layout library to figure out where they should be positioned.\n * The result is saved in the state variable \"nodes\" and \"edges\".\n */\n useEffect(() => {\n const { nodes: layoutedNodes, edges: layoutedEdges } = getLayoutedElements(\n tempNodes,\n tempEdges,\n 'TB',\n )\n // hack: ProvenanceUtils.getProvenanceNode() returns a new object every time, so check to see if\n // there were any real changes\n if (!isArrayEqual(layoutedNodes, nodes)) {\n setNodes(layoutedNodes)\n if (onNodesChangedListener) {\n onNodesChangedListener(layoutedNodes)\n }\n }\n if (!isArrayEqual(layoutedEdges, edges)) {\n setEdges(layoutedEdges)\n if (onEdgesChangedListener) {\n onEdgesChangedListener(layoutedEdges)\n }\n }\n }, [\n tempNodes,\n tempEdges,\n nodes,\n edges,\n setNodes,\n setEdges,\n initializedPosition,\n reactFlowInstance,\n rootEntityRefs,\n onNodesChangedListener,\n onEdgesChangedListener,\n ])\n\n const onPaneScrollFunction: (event?: WheelEvent) => void = useCallback(\n event => {\n // Cannot simply check the truthy value of event.deltaX (or Y) because the value might be 0 (or -0), which is falsy\n if (\n event &&\n typeof event.deltaX !== 'undefined' &&\n typeof event.deltaY !== 'undefined'\n ) {\n window.scrollTo(\n window.scrollX + event.deltaX,\n window.scrollY + event.deltaY,\n )\n }\n },\n [],\n )\n return (\n <div\n className=\"ProvenanceWidget\"\n role=\"graphics-doc\" //https://www.w3.org/wiki/SVG_Accessibility/ARIA_roles_for_charts#Document_Roles\n style={{ width: '100%', height: containerHeight }}\n >\n <ReactFlow\n defaultViewport={{ x: 0, y: 0, zoom: DEFAULT_ZOOM }}\n nodes={nodes}\n edges={edges}\n onNodeClick={onClickNode}\n // onNodesChange={onNodesChange} // SWC-6804: When the nodes/edges are updated (expanded) the graph is already re-rendered.\n // onEdgesChange={onEdgesChange} // Specifying these callbacks causes an infinite re-rendering loop.\n attributionPosition=\"bottom-right\"\n onConnect={undefined}\n zoomOnScroll={false}\n onPaneScroll={onPaneScrollFunction}\n >\n <Controls />\n </ReactFlow>\n </div>\n )\n}\n\nconst ProvenanceGraph = (props: ProvenanceProps): React.ReactNode => {\n return (\n <SynapseErrorBoundary>\n <ReactFlowProvider>\n <ProvenanceReactFlow {...props} />\n </ReactFlowProvider>\n </SynapseErrorBoundary>\n )\n}\n\nexport default ProvenanceGraph\n"],"mappings":"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"}
1
+ {"version":3,"file":"ProvenanceGraph.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceGraph.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGetEntityHeaders } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { CircularProgress } from '@mui/material'\nimport {\n Activity,\n EntityHeader,\n ReferenceList,\n Used,\n USED_ENTITY_CONCRETE_TYPE_VALUE,\n UsedEntity,\n UsedURL,\n} from '@sage-bionetworks/synapse-types'\nimport { MouseEvent, useCallback, useEffect, useState, WheelEvent } from 'react'\nimport { useErrorHandler } from 'react-error-boundary'\nimport ReactFlow, {\n Controls,\n Edge,\n getConnectedEdges,\n Node,\n ReactFlowProvider,\n useEdgesState,\n useNodesState,\n useReactFlow,\n} from 'reactflow'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport { ExpandGraphNodeDataProps } from './ExpandGraphNodeLabel'\nimport {\n addActivityNode,\n addEntityNode,\n addEntityPlaceholderNode,\n addExpandNode,\n addExternalNode,\n addUndefinedNode,\n findEntityNode,\n isRootEntity,\n} from './ProvenanceGraphUtils'\nimport {\n getLayoutedElements,\n isArrayEqual,\n NodeType,\n ProvenanceNodeData,\n} from './ProvenanceUtils'\nimport 'reactflow/dist/style.css'\n\nexport type ProvenanceProps = {\n // what entity nodes should we start with?\n entityRefs: ReferenceList\n containerHeight?: string\n initialNodes?: Node[]\n initialEdges?: Edge[]\n onNodesChangedListener?: (nodes: Node[]) => void\n onEdgesChangedListener?: (edges: Edge[]) => void\n}\n\nconst MAX_ACTIVITY_EXPAND_NODES = 400\nconst DEFAULT_ZOOM = 0.85\n\n/**\n * Renders a Provenance Graph for a set of entities.\n * New Nodes are added to tempNodes, and new Edges are added to tempEdges.\n * On change, these are fed into the dagre js graph library to figure out the node positions,\n * and the output stored in 'nodes' and 'edges'. The 'nodes' and 'edges' arrays are used by the\n * ReactFlow component.\n */\nconst ProvenanceReactFlow = (props: ProvenanceProps): React.ReactNode => {\n const {\n entityRefs: rootEntityRefs,\n containerHeight = '200px',\n initialNodes = [],\n initialEdges = [],\n onNodesChangedListener,\n onEdgesChangedListener,\n } = props\n const { accessToken } = useSynapseContext()\n const [tempNodes, setTempNodes] = useState<Node[]>(initialNodes)\n const [tempEdges, setTempEdges] = useState<Edge[]>(initialEdges)\n const [nodes, setNodes] = useNodesState([])\n const [edges, setEdges] = useEdgesState([])\n const [clickedNode, setClickedNode] = useState<Node>()\n const handleError = useErrorHandler()\n\n const { data: rootEntityHeadersPage, isSuccess } = useGetEntityHeaders(\n rootEntityRefs,\n { throwOnError: true },\n )\n if (\n isSuccess &&\n rootEntityHeadersPage &&\n rootEntityHeadersPage.totalNumberOfResults == 0\n ) {\n const synapseIds = rootEntityRefs.map(ref => ref.targetId).join(',')\n handleError(\n `Unable to load provenance for the given Synapse IDs: ${synapseIds}`,\n )\n }\n const rootEntityHeaders = rootEntityHeadersPage?.results\n const [initializedPosition, setInitializedPosition] = useState<boolean>(false)\n\n // Get the react flow instance so we attempt to properly center the view.\n const reactFlowInstance = useReactFlow()\n\n const onClickNode = useCallback((_event: MouseEvent, node: Node) => {\n setClickedNode(node)\n }, [])\n\n /**\n * Called when we have a new entity to add to the graph. This will result in adding\n * a new Entity Node to the nodesCopy, a link from the usedInActivity to the new Entity Node,\n * AND it will look for an Activity associated with the new entity. If an Activity is found,\n * it will add an Expand Node for the user to click (to expand to see this Activity!).\n * If this is a root node (starting entity node), then we automatically add the Activity Node\n * and process it.\n */\n const addEntity = useCallback(\n async (params: {\n entityHeader: EntityHeader\n usedInActivity?: Activity\n nodesCopy: Node[]\n edgesCopy: Edge[]\n }) => {\n const { entityHeader, nodesCopy, edgesCopy, usedInActivity } = params\n addEntityNode({\n entityHeader,\n activity: usedInActivity,\n nodesCopy,\n edgesCopy,\n })\n //look for Activity\n try {\n const activity = await SynapseClient.getActivityForEntity(\n entityHeader.id,\n entityHeader.versionNumber,\n accessToken,\n )\n // if this is not a root node (or there are too many items to show), add an expand node\n if (\n !isRootEntity({ entityHeader, rootEntityHeaders }) ||\n (activity.used && activity.used.length >= MAX_ACTIVITY_EXPAND_NODES)\n ) {\n addExpandNode({\n entityHeader,\n itemCount: activity.used?.length,\n nodesCopy,\n edgesCopy,\n })\n }\n } catch (e) {\n // Activity is not accessible\n console.error(e)\n if (\n isRootEntity({\n entityHeader,\n rootEntityHeaders,\n })\n ) {\n // add provenance undefined node\n addUndefinedNode({\n entityHeader,\n nodesCopy,\n edgesCopy,\n })\n }\n }\n },\n [accessToken, rootEntityHeaders],\n )\n\n /**\n * This effect attempts to center the graph on one of the root nodes.\n * Only initializes after after a root node has been added to the graph.\n */\n useEffect(() => {\n if (!initializedPosition && nodes.length > 0) {\n setTimeout(() => {\n if (rootEntityHeaders) {\n const rootEntityNode = findEntityNode(rootEntityHeaders[0], nodes)\n if (rootEntityNode) {\n const currentZoom = reactFlowInstance.getZoom()\n const zoom = currentZoom > DEFAULT_ZOOM ? DEFAULT_ZOOM : currentZoom\n reactFlowInstance?.setCenter(\n rootEntityNode.position.x + 150,\n rootEntityNode.position.y - 30,\n { zoom, duration: 0 },\n )\n }\n setInitializedPosition(true)\n }\n })\n }\n }, [initializedPosition, nodes, reactFlowInstance, rootEntityHeaders])\n\n /**\n * This is called when the user clicks on an Expand Node. It will add the associated Activity\n * and all \"used\" items (entities and urls) to the graph by adding items to the nodesCopy and edgesCopy arrays.\n */\n const onExpandEntity = useCallback(\n async (params: {\n entityHeader: EntityHeader\n nodesCopy: Node[]\n edgesCopy: Edge[]\n }) => {\n const { entityHeader, nodesCopy, edgesCopy } = params\n try {\n const activity = await SynapseClient.getActivityForEntity(\n entityHeader.id,\n entityHeader.versionNumber,\n accessToken,\n )\n addActivityNode({\n activity,\n entityHeader,\n nodesCopy,\n edgesCopy,\n })\n // go through Activity.used array to add these nodes/edges\n if (activity.used && activity.used.length < MAX_ACTIVITY_EXPAND_NODES) {\n const usedEntityReferences: ReferenceList = []\n activity.used.forEach((usedItem: Used) => {\n if (usedItem.concreteType == USED_ENTITY_CONCRETE_TYPE_VALUE) {\n usedEntityReferences.push((usedItem as UsedEntity).reference)\n } else {\n // UsedURL\n const usedURL = usedItem as UsedURL\n addExternalNode({ usedURL, activity, nodesCopy, edgesCopy })\n }\n })\n const usedEntityHeadersPage = await SynapseClient.getEntityHeaders(\n usedEntityReferences,\n accessToken,\n )\n const { results: usedEntityHeaderPageResults } = usedEntityHeadersPage\n // find refs that were not returned by the entity header call\n const refsMissingEntityHeaders = usedEntityReferences.filter(ref => {\n return (\n usedEntityHeaderPageResults.find(header => {\n return header.id == ref.targetId\n }) == undefined\n )\n })\n refsMissingEntityHeaders.forEach(ref => {\n addEntityPlaceholderNode({ ref, activity, nodesCopy, edgesCopy })\n })\n const addEntityPromises: Promise<void>[] = []\n usedEntityHeaderPageResults.forEach(header => {\n addEntityPromises.push(\n addEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n usedInActivity: activity,\n }),\n )\n })\n await Promise.allSettled(addEntityPromises)\n }\n } catch (e) {\n // Activity is not accessible\n console.error(e)\n }\n },\n [accessToken, addEntity],\n )\n\n /**\n * This effect code executes when no nodes have been added.\n * It will add the root nodes, and attempt to expand the root nodes.\n */\n useEffect(() => {\n if (rootEntityHeaders && tempNodes.length == 0) {\n const nodesCopy = [...tempNodes]\n const edgesCopy = [...tempEdges]\n const addAndExpandPromises: Promise<void>[] = []\n rootEntityHeaders.forEach(header => {\n const addEntityPromise = addEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n })\n addAndExpandPromises.push(addEntityPromise)\n\n const expandEntityPromise = onExpandEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n })\n addAndExpandPromises.push(expandEntityPromise)\n })\n Promise.allSettled(addAndExpandPromises).finally(() => {\n setTempNodes(nodesCopy)\n setTempEdges(edgesCopy)\n })\n }\n }, [\n addEntity,\n handleError,\n onExpandEntity,\n rootEntityHeaders,\n rootEntityRefs,\n tempEdges,\n tempNodes,\n ])\n\n /**\n * This effect code executes when a node is clicked.\n * We check to see if it is an expand node. If it is, then we remove the expand node (and associated edge)\n * and ask for the Activity and associated \"used\" nodes (entities and URLs)\n */\n useEffect(() => {\n const nodeData: ProvenanceNodeData = clickedNode?.data as ProvenanceNodeData\n if (clickedNode && nodeData?.type == NodeType.EXPAND) {\n const expandNodeDataProps = nodeData.props as ExpandGraphNodeDataProps\n if (expandNodeDataProps.itemCount > MAX_ACTIVITY_EXPAND_NODES) {\n displayToast(\n 'Web visualization does not support expanding this many items at this time.',\n 'danger',\n )\n return\n } else {\n // graph will be used outside of synapse, so show a non-branded spinner\n nodeData.label = <CircularProgress size={30} />\n // remove clicked node\n const nodesWithoutExpandNode = tempNodes.filter(\n node => node.id != clickedNode.id,\n )\n const edgeToRemove = getConnectedEdges([clickedNode], tempEdges)[0]\n const edgesWithoutExpandEdge = tempEdges.filter(\n edge => edge != edgeToRemove,\n )\n onExpandEntity({\n entityHeader: expandNodeDataProps.entityHeader,\n nodesCopy: nodesWithoutExpandNode,\n edgesCopy: edgesWithoutExpandEdge,\n }).finally(() => {\n setTempNodes(nodesWithoutExpandNode)\n setTempEdges(edgesWithoutExpandEdge)\n })\n }\n setClickedNode(undefined)\n }\n }, [clickedNode, tempNodes, tempEdges, onExpandEntity])\n\n /**\n * This effect code is run when the graph nodes or edges change.\n * It feeds the nodes and edges into our layout library to figure out where they should be positioned.\n * The result is saved in the state variable \"nodes\" and \"edges\".\n */\n useEffect(() => {\n const { nodes: layoutedNodes, edges: layoutedEdges } = getLayoutedElements(\n tempNodes,\n tempEdges,\n 'TB',\n )\n // hack: ProvenanceUtils.getProvenanceNode() returns a new object every time, so check to see if\n // there were any real changes\n if (!isArrayEqual(layoutedNodes, nodes)) {\n setNodes(layoutedNodes)\n if (onNodesChangedListener) {\n onNodesChangedListener(layoutedNodes)\n }\n }\n if (!isArrayEqual(layoutedEdges, edges)) {\n setEdges(layoutedEdges)\n if (onEdgesChangedListener) {\n onEdgesChangedListener(layoutedEdges)\n }\n }\n }, [\n tempNodes,\n tempEdges,\n nodes,\n edges,\n setNodes,\n setEdges,\n initializedPosition,\n reactFlowInstance,\n rootEntityRefs,\n onNodesChangedListener,\n onEdgesChangedListener,\n ])\n\n const onPaneScrollFunction: (event?: WheelEvent) => void = useCallback(\n event => {\n // Cannot simply check the truthy value of event.deltaX (or Y) because the value might be 0 (or -0), which is falsy\n if (\n event &&\n typeof event.deltaX !== 'undefined' &&\n typeof event.deltaY !== 'undefined'\n ) {\n window.scrollTo(\n window.scrollX + event.deltaX,\n window.scrollY + event.deltaY,\n )\n }\n },\n [],\n )\n return (\n <div\n className=\"ProvenanceWidget\"\n role=\"graphics-doc\" //https://www.w3.org/wiki/SVG_Accessibility/ARIA_roles_for_charts#Document_Roles\n style={{ width: '100%', height: containerHeight }}\n >\n <ReactFlow\n defaultViewport={{ x: 0, y: 0, zoom: DEFAULT_ZOOM }}\n nodes={nodes}\n edges={edges}\n onNodeClick={onClickNode}\n // onNodesChange={onNodesChange} // SWC-6804: When the nodes/edges are updated (expanded) the graph is already re-rendered.\n // onEdgesChange={onEdgesChange} // Specifying these callbacks causes an infinite re-rendering loop.\n attributionPosition=\"bottom-right\"\n onConnect={undefined}\n zoomOnScroll={false}\n onPaneScroll={onPaneScrollFunction}\n >\n <Controls />\n </ReactFlow>\n </div>\n )\n}\n\nconst ProvenanceGraph = (props: ProvenanceProps): React.ReactNode => {\n return (\n <SynapseErrorBoundary>\n <ReactFlowProvider>\n <ProvenanceReactFlow {...props} />\n </ReactFlowProvider>\n </SynapseErrorBoundary>\n )\n}\n\nexport default ProvenanceGraph\n"],"mappings":";;;;;;;;;;;;;;;;AAwDA,IAAM,IAA4B,KAC5B,IAAe,KASf,KAAuB,MAA4C;CACvE,IAAM,EACJ,YAAY,GACZ,qBAAkB,SAClB,kBAAe,CAAC,GAChB,kBAAe,CAAC,GAChB,2BACA,8BACE,GACE,EAAE,mBAAgB,EAAkB,GACpC,CAAC,GAAW,KAAgB,EAAiB,CAAY,GACzD,CAAC,GAAW,KAAgB,EAAiB,CAAY,GACzD,CAAC,GAAO,KAAY,EAAc,CAAC,CAAC,GACpC,CAAC,GAAO,KAAY,EAAc,CAAC,CAAC,GACpC,CAAC,GAAa,KAAkB,EAAe,GAC/C,IAAc,EAAgB,GAE9B,EAAE,MAAM,GAAuB,iBAAc,EACjD,GACA,EAAE,cAAc,GAAK,CACvB;CACA,AACE,KACA,KACA,EAAsB,wBAAwB,KAG9C,EACE,wDAFiB,EAAe,KAAI,MAAO,EAAI,QAAQ,EAAE,KAAK,GAEN,GAC1D;CAEF,IAAM,IAAoB,GAAuB,SAC3C,CAAC,GAAqB,KAA0B,EAAkB,EAAK,GAGvE,IAAoB,EAAa,GAEjC,KAAc,GAAa,GAAoB,MAAe;EAClE,EAAe,CAAI;CACrB,GAAG,CAAC,CAAC,GAUC,IAAY,EAChB,OAAO,MAKD;EACJ,IAAM,EAAE,iBAAc,cAAW,cAAW,sBAAmB;EAC/D,GAAc;GACZ;GACA,UAAU;GACV;GACA;EACF,CAAC;EAED,IAAI;GACF,IAAM,IAAW,MAAM,EAAc,qBACnC,EAAa,IACb,EAAa,eACb,CACF;GAEA,CACE,CAAC,EAAa;IAAE;IAAc;GAAkB,CAAC,KAChD,EAAS,QAAQ,EAAS,KAAK,UAAU,MAE1C,EAAc;IACZ;IACA,WAAW,EAAS,MAAM;IAC1B;IACA;GACF,CAAC;EAEL,SAAS,GAAG;GAGV,AADA,QAAQ,MAAM,CAAC,GAEb,EAAa;IACX;IACA;GACF,CAAC,KAGD,EAAiB;IACf;IACA;IACA;GACF,CAAC;EAEL;CACF,GACA,CAAC,GAAa,CAAiB,CACjC;CAMA,QAAgB;EACd,AAAI,CAAC,KAAuB,EAAM,SAAS,KACzC,iBAAiB;GACf,IAAI,GAAmB;IACrB,IAAM,IAAiB,EAAe,EAAkB,IAAI,CAAK;IACjE,IAAI,GAAgB;KAClB,IAAM,IAAc,EAAkB,QAAQ,GACxC,IAAO,IAAc,IAAe,IAAe;KACzD,GAAmB,UACjB,EAAe,SAAS,IAAI,KAC5B,EAAe,SAAS,IAAI,IAC5B;MAAE;MAAM,UAAU;KAAE,CACtB;IACF;IACA,EAAuB,EAAI;GAC7B;EACF,CAAC;CAEL,GAAG;EAAC;EAAqB;EAAO;EAAmB;CAAiB,CAAC;CAMrE,IAAM,IAAiB,EACrB,OAAO,MAID;EACJ,IAAM,EAAE,iBAAc,cAAW,iBAAc;EAC/C,IAAI;GACF,IAAM,IAAW,MAAM,EAAc,qBACnC,EAAa,IACb,EAAa,eACb,CACF;GAQA,IAPA,GAAgB;IACd;IACA;IACA;IACA;GACF,CAAC,GAEG,EAAS,QAAQ,EAAS,KAAK,SAAS,GAA2B;IACrE,IAAM,IAAsC,CAAC;IAC7C,EAAS,KAAK,SAAS,MAAmB;KACxC,AAAI,EAAS,gBAAgB,IAC3B,EAAqB,KAAM,EAAwB,SAAS,IAI5D,EAAgB;MAAE,SAAA;MAAS;MAAU;MAAW;KAAU,CAAC;IAE/D,CAAC;IAKD,IAAM,EAAE,SAAS,MAAgC,MAJb,EAAc,iBAChD,GACA,CACF;IAUA,EAPsD,QAAO,MAEzD,EAA4B,MAAK,MACxB,EAAO,MAAM,EAAI,QACzB,KAAK,IAGV,EAAyB,SAAQ,MAAO;KACtC,EAAyB;MAAE;MAAK;MAAU;MAAW;KAAU,CAAC;IAClE,CAAC;IACD,IAAM,IAAqC,CAAC;IAW5C,AAVA,EAA4B,SAAQ,MAAU;KAC5C,EAAkB,KAChB,EAAU;MACR,cAAc;MACd;MACA;MACA,gBAAgB;KAClB,CAAC,CACH;IACF,CAAC,GACD,MAAM,QAAQ,WAAW,CAAiB;GAC5C;EACF,SAAS,GAAG;GAEV,QAAQ,MAAM,CAAC;EACjB;CACF,GACA,CAAC,GAAa,CAAS,CACzB;CAqFA,AA/EA,QAAgB;EACd,IAAI,KAAqB,EAAU,UAAU,GAAG;GAC9C,IAAM,IAAY,CAAC,GAAG,CAAS,GACzB,IAAY,CAAC,GAAG,CAAS,GACzB,IAAwC,CAAC;GAgB/C,AAfA,EAAkB,SAAQ,MAAU;IAClC,IAAM,IAAmB,EAAU;KACjC,cAAc;KACd;KACA;IACF,CAAC;IACD,EAAqB,KAAK,CAAgB;IAE1C,IAAM,IAAsB,EAAe;KACzC,cAAc;KACd;KACA;IACF,CAAC;IACD,EAAqB,KAAK,CAAmB;GAC/C,CAAC,GACD,QAAQ,WAAW,CAAoB,EAAE,cAAc;IAErD,AADA,EAAa,CAAS,GACtB,EAAa,CAAS;GACxB,CAAC;EACH;CACF,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,GAOD,QAAgB;EACd,IAAM,IAA+B,GAAa;EAClD,IAAI,KAAe,GAAU,QAAQ,EAAS,QAAQ;GACpD,IAAM,IAAsB,EAAS;GACrC,IAAI,EAAoB,YAAY,GAA2B;IAC7D,EACE,8EACA,QACF;IACA;GACF,OAAO;IAEL,EAAS,QAAQ,kBAAC,IAAD,EAAkB,MAAM,GAAK,CAAA;IAE9C,IAAM,IAAyB,EAAU,QACvC,MAAQ,EAAK,MAAM,EAAY,EACjC,GACM,IAAe,EAAkB,CAAC,CAAW,GAAG,CAAS,EAAE,IAC3D,IAAyB,EAAU,QACvC,MAAQ,KAAQ,CAClB;IACA,EAAe;KACb,cAAc,EAAoB;KAClC,WAAW;KACX,WAAW;IACb,CAAC,EAAE,cAAc;KAEf,AADA,EAAa,CAAsB,GACnC,EAAa,CAAsB;IACrC,CAAC;GACH;GACA,EAAe,KAAA,CAAS;EAC1B;CACF,GAAG;EAAC;EAAa;EAAW;EAAW;CAAc,CAAC,GAOtD,QAAgB;EACd,IAAM,EAAE,OAAO,GAAe,OAAO,MAAkB,EACrD,GACA,GACA,IACF;EASA,AANK,EAAa,GAAe,CAAK,MACpC,EAAS,CAAa,GAClB,KACF,EAAuB,CAAa,IAGnC,EAAa,GAAe,CAAK,MACpC,EAAS,CAAa,GAClB,KACF,EAAuB,CAAa;CAG1C,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,IAAM,KAAqD,GACzD,MAAS;EAEP,AACE,KACO,EAAM,WAAW,UACjB,EAAM,WAAW,UAExB,OAAO,SACL,OAAO,UAAU,EAAM,QACvB,OAAO,UAAU,EAAM,MACzB;CAEJ,GACA,CAAC,CACH;CACA,OACE,kBAAC,OAAD;EACE,WAAU;EACV,MAAK;EACL,OAAO;GAAE,OAAO;GAAQ,QAAQ;EAAgB;YAEhD,kBAAC,GAAD;GACE,iBAAiB;IAAE,GAAG;IAAG,GAAG;IAAG,MAAM;GAAa;GAC3C;GACA;GACP,aAAa;GAGb,qBAAoB;GACpB,WAAW,KAAA;GACX,cAAc;GACd,cAAc;aAEd,kBAAC,GAAD,CAAW,CAAA;EACF,CAAA;CACR,CAAA;AAET,GAEM,KAAmB,MAErB,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAqB,GAAI,EAAQ,CAAA,EAChB,CAAA,EACC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProvenanceGraphUtils.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceGraphUtils.ts"],"sourcesContent":["import { Edge, Node } from 'reactflow'\nimport { EntityHeader, Reference } from '@sage-bionetworks/synapse-types'\nimport { Activity, UsedURL } from '@sage-bionetworks/synapse-types'\nimport {\n getNodeId,\n getProvenanceEdge,\n getProvenanceNode,\n NodeType,\n ProvenanceNodeProps,\n} from './ProvenanceUtils'\n\n/**\n * Is one of the root Entities given by the user\n */\nexport const isRootEntity = (params: {\n entityHeader: EntityHeader\n rootEntityHeaders?: EntityHeader[]\n}) => {\n const { entityHeader, rootEntityHeaders } = params\n const foundNode = rootEntityHeaders?.find(header => {\n return (\n entityHeader.id == header.id &&\n entityHeader.versionNumber == header.versionNumber\n )\n })\n return foundNode !== undefined\n}\n\n/**\n * Given the node properties, will return true if this node is already in the nodesCopy array.\n */\nexport const isNodeNotFound = (\n nodeProps: ProvenanceNodeProps,\n nodesCopy: Node[],\n) => {\n const foundNode = nodesCopy.find(node => {\n return node.id === getNodeId(nodeProps)\n })\n return foundNode === undefined\n}\n\nexport const findEntityNode = (\n entityHeader: EntityHeader,\n nodesCopy: Node[],\n) => {\n const nodeProps = {\n type: NodeType.ENTITY,\n data: entityHeader,\n }\n return nodesCopy.find(node => {\n return node.id === getNodeId(nodeProps)\n })\n}\n\n/**\n * Given the node properties, will return true if this edge is already in the edgesCopy array.\n */\nexport const isEdgeNotFound = (\n nodeProps1: ProvenanceNodeProps,\n nodeProps2: ProvenanceNodeProps,\n edgesCopy: Edge[],\n) => {\n const foundEdge = edgesCopy.find(edge => {\n return (\n edge.source === getNodeId(nodeProps1) &&\n edge.target === getNodeId(nodeProps2)\n )\n })\n return foundEdge === undefined\n}\n\n/**\n * Given node properties of the new node and existing node, this function creates and adds a new node to\n * nodesCopy, and creates an edge from the new node to the existing node. Note, this will only create\n * a new node or edge if these items are not found in the input nodesCopy array and edgesCopy array.\n */\nexport const addNodeAndEdge = (params: {\n newNodeProps: ProvenanceNodeProps\n existingNodeProps: ProvenanceNodeProps\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { newNodeProps, existingNodeProps, nodesCopy, edgesCopy } = params\n if (isNodeNotFound(newNodeProps, nodesCopy)) {\n nodesCopy.push(getProvenanceNode(newNodeProps))\n }\n if (isEdgeNotFound(newNodeProps, existingNodeProps, edgesCopy)) {\n edgesCopy.push(getProvenanceEdge(newNodeProps, existingNodeProps))\n }\n}\n\nexport const addActivityNode = (params: {\n activity: Activity\n entityHeader: EntityHeader\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { activity, entityHeader, nodesCopy, edgesCopy } = params\n const activityNodeProps = {\n type: NodeType.ACTIVITY,\n data: activity,\n }\n const entityNodeProps = {\n type: NodeType.ENTITY,\n data: entityHeader,\n }\n addNodeAndEdge({\n newNodeProps: activityNodeProps,\n existingNodeProps: entityNodeProps,\n nodesCopy,\n edgesCopy,\n })\n}\n\nexport const addExpandNode = (params: {\n entityHeader: EntityHeader\n itemCount: number | undefined\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { entityHeader, itemCount = 0, nodesCopy, edgesCopy } = params\n const expandNodeProps = {\n type: NodeType.EXPAND,\n data: {\n itemCount,\n entityHeader,\n },\n }\n const entityNodeProps = {\n type: NodeType.ENTITY,\n data: entityHeader,\n }\n addNodeAndEdge({\n newNodeProps: expandNodeProps,\n existingNodeProps: entityNodeProps,\n nodesCopy,\n edgesCopy,\n })\n}\n\nexport const addEntityPlaceholderNode = (params: {\n ref: Reference\n activity: Activity\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { ref, activity, nodesCopy, edgesCopy } = params\n const entityPlaceholderNodeProps = {\n type: NodeType.ENTITY_PLACEHOLDER,\n data: ref,\n }\n const activityNodeProps = {\n type: NodeType.ACTIVITY,\n data: activity,\n }\n addNodeAndEdge({\n newNodeProps: entityPlaceholderNodeProps,\n existingNodeProps: activityNodeProps,\n nodesCopy,\n edgesCopy,\n })\n}\n\nexport const addUndefinedNode = (params: {\n entityHeader: EntityHeader\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { entityHeader, nodesCopy, edgesCopy } = params\n const undefinedNodeProps = {\n type: NodeType.UNDEFINED,\n data: entityHeader,\n }\n const entityNodeProps = {\n type: NodeType.ENTITY,\n data: entityHeader,\n }\n addNodeAndEdge({\n newNodeProps: undefinedNodeProps,\n existingNodeProps: entityNodeProps,\n nodesCopy,\n edgesCopy,\n })\n}\n\nexport const addExternalNode = (params: {\n usedURL: UsedURL\n activity: Activity\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { usedURL, activity, nodesCopy, edgesCopy } = params\n const activityNodeProps = {\n type: NodeType.ACTIVITY,\n data: activity,\n }\n const externalNodeProps = {\n type: NodeType.EXTERNAL,\n data: usedURL,\n }\n addNodeAndEdge({\n newNodeProps: externalNodeProps,\n existingNodeProps: activityNodeProps,\n nodesCopy,\n edgesCopy,\n })\n}\n\nexport const addEntityNode = (params: {\n entityHeader: EntityHeader\n activity: Activity | undefined\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { entityHeader, activity, nodesCopy, edgesCopy } = params\n const entityNodeProps = {\n type: NodeType.ENTITY,\n data: entityHeader,\n }\n if (isNodeNotFound(entityNodeProps, nodesCopy)) {\n // add the new entity node\n nodesCopy.push(getProvenanceNode(entityNodeProps))\n if (activity) {\n const activityNodeProps = {\n type: NodeType.ACTIVITY,\n data: activity,\n }\n edgesCopy.push(getProvenanceEdge(entityNodeProps, activityNodeProps))\n }\n }\n}\n"],"mappings":";;AAcA,IAAa,KAAgB,MAGvB;CACJ,IAAM,EAAE,iBAAc,yBAAsB;AAO5C,QANkB,GAAmB,MAAK,MAEtC,EAAa,MAAM,EAAO,MAC1B,EAAa,iBAAiB,EAAO,cAEvC,KACmB,KAAA;GAMV,KACX,GACA,MAEkB,EAAU,MAAK,MACxB,EAAK,OAAO,EAAU,EAAU,CAElC,KAAc,KAAA,GAGV,KACX,GACA,MACG;CACH,IAAM,IAAY;EAChB,MAAM,EAAS;EACf,MAAM;EACP;AACD,QAAO,EAAU,MAAK,MACb,EAAK,OAAO,EAAU,EAAU,CACvC;GAMS,KACX,GACA,GACA,MAEkB,EAAU,MAAK,MAE7B,EAAK,WAAW,EAAU,EAAW,IACrC,EAAK,WAAW,EAAU,EAAW,CAGlC,KAAc,KAAA,GAQV,KAAkB,MAKzB;CACJ,IAAM,EAAE,iBAAc,sBAAmB,cAAW,iBAAc;AAIlE,CAHI,EAAe,GAAc,EAAU,IACzC,EAAU,KAAK,EAAkB,EAAa,CAAC,EAE7C,EAAe,GAAc,GAAmB,EAAU,IAC5D,EAAU,KAAK,EAAkB,GAAc,EAAkB,CAAC;GAIzD,KAAmB,MAK1B;CACJ,IAAM,EAAE,aAAU,iBAAc,cAAW,iBAAc;AASzD,GAAe;EACb,cAAc;GARd,MAAM,EAAS;GACf,MAAM;GAOQ;EACd,mBAAmB;GALnB,MAAM,EAAS;GACf,MAAM;GAIa;EACnB;EACA;EACD,CAAC;GAGS,KAAiB,MAKxB;CACJ,IAAM,EAAE,iBAAc,eAAY,GAAG,cAAW,iBAAc;AAY9D,GAAe;EACb,cAAc;GAXd,MAAM,EAAS;GACf,MAAM;IACJ;IACA;IACD;GAOa;EACd,mBAAmB;GALnB,MAAM,EAAS;GACf,MAAM;GAIa;EACnB;EACA;EACD,CAAC;GAGS,KAA4B,MAKnC;CACJ,IAAM,EAAE,QAAK,aAAU,cAAW,iBAAc;AAShD,GAAe;EACb,cAAc;GARd,MAAM,EAAS;GACf,MAAM;GAOQ;EACd,mBAAmB;GALnB,MAAM,EAAS;GACf,MAAM;GAIa;EACnB;EACA;EACD,CAAC;GAGS,KAAoB,MAI3B;CACJ,IAAM,EAAE,iBAAc,cAAW,iBAAc;AAS/C,GAAe;EACb,cAAc;GARd,MAAM,EAAS;GACf,MAAM;GAOQ;EACd,mBAAmB;GALnB,MAAM,EAAS;GACf,MAAM;GAIa;EACnB;EACA;EACD,CAAC;GAGS,KAAmB,MAK1B;CACJ,IAAM,EAAE,YAAS,aAAU,cAAW,iBAAc,GAC9C,IAAoB;EACxB,MAAM,EAAS;EACf,MAAM;EACP;AAKD,GAAe;EACb,cAAc;GAJd,MAAM,EAAS;GACf,MAAM;GAGQ;EACd,mBAAmB;EACnB;EACA;EACD,CAAC;GAGS,KAAiB,MAKxB;CACJ,IAAM,EAAE,iBAAc,aAAU,cAAW,iBAAc,GACnD,IAAkB;EACtB,MAAM,EAAS;EACf,MAAM;EACP;AACD,KAAI,EAAe,GAAiB,EAAU,KAE5C,EAAU,KAAK,EAAkB,EAAgB,CAAC,EAC9C,IAAU;EACZ,IAAM,IAAoB;GACxB,MAAM,EAAS;GACf,MAAM;GACP;AACD,IAAU,KAAK,EAAkB,GAAiB,EAAkB,CAAC"}
1
+ {"version":3,"file":"ProvenanceGraphUtils.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceGraphUtils.ts"],"sourcesContent":["import { Edge, Node } from 'reactflow'\nimport { EntityHeader, Reference } from '@sage-bionetworks/synapse-types'\nimport { Activity, UsedURL } from '@sage-bionetworks/synapse-types'\nimport {\n getNodeId,\n getProvenanceEdge,\n getProvenanceNode,\n NodeType,\n ProvenanceNodeProps,\n} from './ProvenanceUtils'\n\n/**\n * Is one of the root Entities given by the user\n */\nexport const isRootEntity = (params: {\n entityHeader: EntityHeader\n rootEntityHeaders?: EntityHeader[]\n}) => {\n const { entityHeader, rootEntityHeaders } = params\n const foundNode = rootEntityHeaders?.find(header => {\n return (\n entityHeader.id == header.id &&\n entityHeader.versionNumber == header.versionNumber\n )\n })\n return foundNode !== undefined\n}\n\n/**\n * Given the node properties, will return true if this node is already in the nodesCopy array.\n */\nexport const isNodeNotFound = (\n nodeProps: ProvenanceNodeProps,\n nodesCopy: Node[],\n) => {\n const foundNode = nodesCopy.find(node => {\n return node.id === getNodeId(nodeProps)\n })\n return foundNode === undefined\n}\n\nexport const findEntityNode = (\n entityHeader: EntityHeader,\n nodesCopy: Node[],\n) => {\n const nodeProps = {\n type: NodeType.ENTITY,\n data: entityHeader,\n }\n return nodesCopy.find(node => {\n return node.id === getNodeId(nodeProps)\n })\n}\n\n/**\n * Given the node properties, will return true if this edge is already in the edgesCopy array.\n */\nexport const isEdgeNotFound = (\n nodeProps1: ProvenanceNodeProps,\n nodeProps2: ProvenanceNodeProps,\n edgesCopy: Edge[],\n) => {\n const foundEdge = edgesCopy.find(edge => {\n return (\n edge.source === getNodeId(nodeProps1) &&\n edge.target === getNodeId(nodeProps2)\n )\n })\n return foundEdge === undefined\n}\n\n/**\n * Given node properties of the new node and existing node, this function creates and adds a new node to\n * nodesCopy, and creates an edge from the new node to the existing node. Note, this will only create\n * a new node or edge if these items are not found in the input nodesCopy array and edgesCopy array.\n */\nexport const addNodeAndEdge = (params: {\n newNodeProps: ProvenanceNodeProps\n existingNodeProps: ProvenanceNodeProps\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { newNodeProps, existingNodeProps, nodesCopy, edgesCopy } = params\n if (isNodeNotFound(newNodeProps, nodesCopy)) {\n nodesCopy.push(getProvenanceNode(newNodeProps))\n }\n if (isEdgeNotFound(newNodeProps, existingNodeProps, edgesCopy)) {\n edgesCopy.push(getProvenanceEdge(newNodeProps, existingNodeProps))\n }\n}\n\nexport const addActivityNode = (params: {\n activity: Activity\n entityHeader: EntityHeader\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { activity, entityHeader, nodesCopy, edgesCopy } = params\n const activityNodeProps = {\n type: NodeType.ACTIVITY,\n data: activity,\n }\n const entityNodeProps = {\n type: NodeType.ENTITY,\n data: entityHeader,\n }\n addNodeAndEdge({\n newNodeProps: activityNodeProps,\n existingNodeProps: entityNodeProps,\n nodesCopy,\n edgesCopy,\n })\n}\n\nexport const addExpandNode = (params: {\n entityHeader: EntityHeader\n itemCount: number | undefined\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { entityHeader, itemCount = 0, nodesCopy, edgesCopy } = params\n const expandNodeProps = {\n type: NodeType.EXPAND,\n data: {\n itemCount,\n entityHeader,\n },\n }\n const entityNodeProps = {\n type: NodeType.ENTITY,\n data: entityHeader,\n }\n addNodeAndEdge({\n newNodeProps: expandNodeProps,\n existingNodeProps: entityNodeProps,\n nodesCopy,\n edgesCopy,\n })\n}\n\nexport const addEntityPlaceholderNode = (params: {\n ref: Reference\n activity: Activity\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { ref, activity, nodesCopy, edgesCopy } = params\n const entityPlaceholderNodeProps = {\n type: NodeType.ENTITY_PLACEHOLDER,\n data: ref,\n }\n const activityNodeProps = {\n type: NodeType.ACTIVITY,\n data: activity,\n }\n addNodeAndEdge({\n newNodeProps: entityPlaceholderNodeProps,\n existingNodeProps: activityNodeProps,\n nodesCopy,\n edgesCopy,\n })\n}\n\nexport const addUndefinedNode = (params: {\n entityHeader: EntityHeader\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { entityHeader, nodesCopy, edgesCopy } = params\n const undefinedNodeProps = {\n type: NodeType.UNDEFINED,\n data: entityHeader,\n }\n const entityNodeProps = {\n type: NodeType.ENTITY,\n data: entityHeader,\n }\n addNodeAndEdge({\n newNodeProps: undefinedNodeProps,\n existingNodeProps: entityNodeProps,\n nodesCopy,\n edgesCopy,\n })\n}\n\nexport const addExternalNode = (params: {\n usedURL: UsedURL\n activity: Activity\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { usedURL, activity, nodesCopy, edgesCopy } = params\n const activityNodeProps = {\n type: NodeType.ACTIVITY,\n data: activity,\n }\n const externalNodeProps = {\n type: NodeType.EXTERNAL,\n data: usedURL,\n }\n addNodeAndEdge({\n newNodeProps: externalNodeProps,\n existingNodeProps: activityNodeProps,\n nodesCopy,\n edgesCopy,\n })\n}\n\nexport const addEntityNode = (params: {\n entityHeader: EntityHeader\n activity: Activity | undefined\n nodesCopy: Node[]\n edgesCopy: Edge[]\n}) => {\n const { entityHeader, activity, nodesCopy, edgesCopy } = params\n const entityNodeProps = {\n type: NodeType.ENTITY,\n data: entityHeader,\n }\n if (isNodeNotFound(entityNodeProps, nodesCopy)) {\n // add the new entity node\n nodesCopy.push(getProvenanceNode(entityNodeProps))\n if (activity) {\n const activityNodeProps = {\n type: NodeType.ACTIVITY,\n data: activity,\n }\n edgesCopy.push(getProvenanceEdge(entityNodeProps, activityNodeProps))\n }\n }\n}\n"],"mappings":";;AAcA,IAAa,KAAgB,MAGvB;CACJ,IAAM,EAAE,iBAAc,yBAAsB;CAO5C,OANkB,GAAmB,MAAK,MAEtC,EAAa,MAAM,EAAO,MAC1B,EAAa,iBAAiB,EAAO,aAExC,MACoB,KAAA;AACvB,GAKa,KACX,GACA,MAEkB,EAAU,MAAK,MACxB,EAAK,OAAO,EAAU,CAAS,CAEjC,MAAc,KAAA,GAGV,KACX,GACA,MACG;CACH,IAAM,IAAY;EAChB,MAAM,EAAS;EACf,MAAM;CACR;CACA,OAAO,EAAU,MAAK,MACb,EAAK,OAAO,EAAU,CAAS,CACvC;AACH,GAKa,KACX,GACA,GACA,MAEkB,EAAU,MAAK,MAE7B,EAAK,WAAW,EAAU,CAAU,KACpC,EAAK,WAAW,EAAU,CAAU,CAGjC,MAAc,KAAA,GAQV,KAAkB,MAKzB;CACJ,IAAM,EAAE,iBAAc,sBAAmB,cAAW,iBAAc;CAIlE,AAHI,EAAe,GAAc,CAAS,KACxC,EAAU,KAAK,EAAkB,CAAY,CAAC,GAE5C,EAAe,GAAc,GAAmB,CAAS,KAC3D,EAAU,KAAK,EAAkB,GAAc,CAAiB,CAAC;AAErE,GAEa,KAAmB,MAK1B;CACJ,IAAM,EAAE,aAAU,iBAAc,cAAW,iBAAc;CASzD,EAAe;EACb,cAAc;GARd,MAAM,EAAS;GACf,MAAM;EAOQ;EACd,mBAAmB;GALnB,MAAM,EAAS;GACf,MAAM;EAIa;EACnB;EACA;CACF,CAAC;AACH,GAEa,KAAiB,MAKxB;CACJ,IAAM,EAAE,iBAAc,eAAY,GAAG,cAAW,iBAAc;CAY9D,EAAe;EACb,cAAc;GAXd,MAAM,EAAS;GACf,MAAM;IACJ;IACA;GACF;EAOc;EACd,mBAAmB;GALnB,MAAM,EAAS;GACf,MAAM;EAIa;EACnB;EACA;CACF,CAAC;AACH,GAEa,KAA4B,MAKnC;CACJ,IAAM,EAAE,QAAK,aAAU,cAAW,iBAAc;CAShD,EAAe;EACb,cAAc;GARd,MAAM,EAAS;GACf,MAAM;EAOQ;EACd,mBAAmB;GALnB,MAAM,EAAS;GACf,MAAM;EAIa;EACnB;EACA;CACF,CAAC;AACH,GAEa,KAAoB,MAI3B;CACJ,IAAM,EAAE,iBAAc,cAAW,iBAAc;CAS/C,EAAe;EACb,cAAc;GARd,MAAM,EAAS;GACf,MAAM;EAOQ;EACd,mBAAmB;GALnB,MAAM,EAAS;GACf,MAAM;EAIa;EACnB;EACA;CACF,CAAC;AACH,GAEa,KAAmB,MAK1B;CACJ,IAAM,EAAE,YAAS,aAAU,cAAW,iBAAc,GAC9C,IAAoB;EACxB,MAAM,EAAS;EACf,MAAM;CACR;CAKA,EAAe;EACb,cAAc;GAJd,MAAM,EAAS;GACf,MAAM;EAGQ;EACd,mBAAmB;EACnB;EACA;CACF,CAAC;AACH,GAEa,KAAiB,MAKxB;CACJ,IAAM,EAAE,iBAAc,aAAU,cAAW,iBAAc,GACnD,IAAkB;EACtB,MAAM,EAAS;EACf,MAAM;CACR;CACA,IAAI,EAAe,GAAiB,CAAS,MAE3C,EAAU,KAAK,EAAkB,CAAe,CAAC,GAC7C,IAAU;EACZ,IAAM,IAAoB;GACxB,MAAM,EAAS;GACf,MAAM;EACR;EACA,EAAU,KAAK,EAAkB,GAAiB,CAAiB,CAAC;CACtE;AAEJ"}
@@ -14,22 +14,22 @@ var m = /* @__PURE__ */ function(e) {
14
14
  }({}), h = (o) => {
15
15
  let { type: s, data: u } = o, d;
16
16
  switch (s) {
17
- case m.ENTITY:
17
+ case "EntityNode":
18
18
  d = /* @__PURE__ */ c(t, { ...u });
19
19
  break;
20
- case m.ENTITY_PLACEHOLDER:
20
+ case "EntityPlaceholderNode":
21
21
  d = /* @__PURE__ */ c(a, { ...u });
22
22
  break;
23
- case m.EXTERNAL:
23
+ case "ExternalNode":
24
24
  d = /* @__PURE__ */ c(r, { ...u });
25
25
  break;
26
- case m.ACTIVITY:
26
+ case "ActivityNode":
27
27
  d = /* @__PURE__ */ c(e, { ...u });
28
28
  break;
29
- case m.EXPAND:
29
+ case "ExpandNode":
30
30
  d = /* @__PURE__ */ c(n, { ...u });
31
31
  break;
32
- case m.UNDEFINED:
32
+ case "UndefinedNode":
33
33
  d = /* @__PURE__ */ c(i, {});
34
34
  break;
35
35
  default:
@@ -65,16 +65,16 @@ var m = /* @__PURE__ */ function(e) {
65
65
  }, _ = (e) => {
66
66
  let { type: t, data: n } = e;
67
67
  switch (t) {
68
- case m.ENTITY: return `${n.id}.${n.versionNumber ?? "latest"}`;
69
- case m.ENTITY_PLACEHOLDER: return `${n.targetId}.${n.targetVersionNumber ?? "latest"}`;
70
- case m.EXTERNAL: return `${n.url}`;
71
- case m.ACTIVITY: return `${n.id}`;
72
- case m.EXPAND: return `expand.node.${n.entityHeader.id}.${n.entityHeader.versionNumber ?? "latest"}`;
73
- case m.UNDEFINED: return `undefined.dummy.node.${n.id}.${n.versionNumber ?? "latest"}`;
68
+ case "EntityNode": return `${n.id}.${n.versionNumber ?? "latest"}`;
69
+ case "EntityPlaceholderNode": return `${n.targetId}.${n.targetVersionNumber ?? "latest"}`;
70
+ case "ExternalNode": return `${n.url}`;
71
+ case "ActivityNode": return `${n.id}`;
72
+ case "ExpandNode": return `expand.node.${n.entityHeader.id}.${n.entityHeader.versionNumber ?? "latest"}`;
73
+ case "UndefinedNode": return `undefined.dummy.node.${n.id}.${n.versionNumber ?? "latest"}`;
74
74
  }
75
75
  }, v = new p.graphlib.Graph();
76
76
  v.setDefaultEdgeLabel(() => ({}));
77
- var y = (e) => e.data.type == m.EXPAND ? 30 : 100, b = (e) => e.data.type == m.EXPAND ? 30 : 172, x = (e, t, n) => {
77
+ var y = (e) => e.data.type == "ExpandNode" ? 30 : 100, b = (e) => e.data.type == "ExpandNode" ? 30 : 172, x = (e, t, n) => {
78
78
  let r = n === "LR";
79
79
  return v.setGraph({ rankdir: n }), e.forEach((e) => {
80
80
  v.setNode(e.id, {
@@ -1 +1 @@
1
- {"version":3,"file":"ProvenanceUtils.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceUtils.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { Node, Position, ConnectionLineType, Edge, MarkerType } from 'reactflow'\nimport { ActivityNodeLabel } from './ActivityNodeLabel'\nimport { EntityNodeLabel } from './EntityNodeLabel'\nimport {\n ExpandGraphNodeDataProps,\n ExpandGraphNodeLabel,\n} from './ExpandGraphNodeLabel'\nimport { ExternalGraphNodeLabel } from './ExternalGraphNodeLabel'\nimport dagre from 'dagre'\nimport { differenceWith, isEqual } from 'lodash-es'\nimport { UndefinedNodeLabel } from './UndefinedNodeLabel'\nimport { EntityHeader, Reference } from '@sage-bionetworks/synapse-types'\nimport { Activity, UsedURL } from '@sage-bionetworks/synapse-types'\nimport { EntityPlaceholderNodeLabel } from './EntityPlaceholderNodeLabel'\n\nexport enum NodeType {\n ENTITY = 'EntityNode',\n ENTITY_PLACEHOLDER = 'EntityPlaceholderNode',\n EXTERNAL = 'ExternalNode',\n ACTIVITY = 'ActivityNode',\n EXPAND = 'ExpandNode',\n UNDEFINED = 'UndefinedNode',\n}\n\ntype ProvenanceNodeLabelProps =\n | UsedURL\n | Activity\n | ExpandGraphNodeDataProps\n | EntityHeader\n | Reference\n\nexport type ProvenanceNodeProps = {\n type: NodeType\n data: ProvenanceNodeLabelProps\n}\n\nexport type ProvenanceNodeData = {\n label: ReactNode\n props: ProvenanceNodeLabelProps\n type: NodeType\n}\n\nexport const getProvenanceNode = (props: ProvenanceNodeProps): Node => {\n const { type, data } = props\n let nodeLabel: ReactNode\n switch (type) {\n case NodeType.ENTITY:\n nodeLabel = <EntityNodeLabel {...(data as EntityHeader)} />\n break\n case NodeType.ENTITY_PLACEHOLDER:\n nodeLabel = <EntityPlaceholderNodeLabel {...(data as Reference)} />\n break\n case NodeType.EXTERNAL:\n nodeLabel = <ExternalGraphNodeLabel {...(data as UsedURL)} />\n break\n case NodeType.ACTIVITY:\n nodeLabel = <ActivityNodeLabel {...(data as Activity)} />\n break\n case NodeType.EXPAND:\n nodeLabel = (\n <ExpandGraphNodeLabel {...(data as ExpandGraphNodeDataProps)} />\n )\n break\n case NodeType.UNDEFINED:\n nodeLabel = <UndefinedNodeLabel />\n break\n default:\n nodeLabel = <p>Unrecognized node type: {type}</p>\n break\n }\n const nodeData: ProvenanceNodeData = {\n label: nodeLabel,\n props: data,\n type: type,\n }\n return {\n id: getNodeId(props),\n position: { x: 100, y: 100 }, // hard coded, let graph layout library figure this out\n data: nodeData,\n connectable: false,\n draggable: false,\n // selectable: false, // like to make unselectable, but node contents become non-interactive\n className: `${type}`,\n }\n}\n\nexport const getProvenanceEdge = (\n node1Props: ProvenanceNodeProps,\n node2Props: ProvenanceNodeProps,\n): Edge => {\n const node1Id = getNodeId(node1Props)\n const node2Id = getNodeId(node2Props)\n return {\n id: `${node1Id}-${node2Id}`,\n source: node1Id,\n target: node2Id,\n animated: true,\n type: ConnectionLineType.SimpleBezier,\n markerEnd: {\n type: MarkerType.ArrowClosed,\n },\n }\n}\n\nexport const getNodeId = (props: ProvenanceNodeProps) => {\n const { type, data } = props\n switch (type) {\n case NodeType.ENTITY:\n return `${(data as EntityHeader).id}.${\n (data as EntityHeader).versionNumber ?? 'latest'\n }`\n case NodeType.ENTITY_PLACEHOLDER:\n return `${(data as Reference).targetId}.${\n (data as Reference).targetVersionNumber ?? 'latest'\n }`\n case NodeType.EXTERNAL:\n return `${(data as UsedURL).url}`\n case NodeType.ACTIVITY:\n return `${(data as Activity).id}`\n case NodeType.EXPAND:\n return `expand.node.${\n (data as ExpandGraphNodeDataProps).entityHeader.id\n }.${\n (data as ExpandGraphNodeDataProps).entityHeader.versionNumber ??\n 'latest'\n }`\n case NodeType.UNDEFINED:\n return `undefined.dummy.node.${(data as EntityHeader).id}.${\n (data as EntityHeader).versionNumber ?? 'latest'\n }`\n }\n}\n\n// layout\nconst dagreGraph = new dagre.graphlib.Graph()\ndagreGraph.setDefaultEdgeLabel(() => ({}))\n\nconst getNodeHeight = (node: Node) => {\n const nodeData: ProvenanceNodeData = node.data as ProvenanceNodeData\n return nodeData.type == NodeType.EXPAND ? 30 : 100\n}\nconst getNodeWidth = (node: Node) => {\n const nodeData: ProvenanceNodeData = node.data as ProvenanceNodeData\n return nodeData.type == NodeType.EXPAND ? 30 : 172\n}\n\nexport const getLayoutedElements = (\n nodes: Node[],\n edges: Edge[],\n direction: string,\n) => {\n const isHorizontal = direction === 'LR'\n dagreGraph.setGraph({ rankdir: direction })\n\n nodes.forEach(node => {\n dagreGraph.setNode(node.id, {\n width: getNodeWidth(node),\n height: getNodeHeight(node),\n })\n })\n\n edges.forEach(edge => {\n dagreGraph.setEdge(edge.source, edge.target)\n })\n\n dagre.layout(dagreGraph)\n\n nodes.forEach(node => {\n const nodeWithPosition = dagreGraph.node(node.id)\n node.targetPosition = isHorizontal ? Position.Left : Position.Top\n node.sourcePosition = isHorizontal ? Position.Right : Position.Bottom\n\n // We are shifting the dagre node position (anchor=center center) to the top left\n // so it matches the React Flow node anchor point (top left).\n node.position = {\n x: nodeWithPosition.x - getNodeWidth(node) / 2,\n y: nodeWithPosition.y - getNodeHeight(node) / 2,\n }\n\n return node\n })\n\n return { nodes, edges }\n}\n\nexport const isArrayEqual = (x: any[], y: any[]) => {\n return differenceWith(x, y, isEqual).length == 0\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ProvenanceUtils.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceUtils.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { Node, Position, ConnectionLineType, Edge, MarkerType } from 'reactflow'\nimport { ActivityNodeLabel } from './ActivityNodeLabel'\nimport { EntityNodeLabel } from './EntityNodeLabel'\nimport {\n ExpandGraphNodeDataProps,\n ExpandGraphNodeLabel,\n} from './ExpandGraphNodeLabel'\nimport { ExternalGraphNodeLabel } from './ExternalGraphNodeLabel'\nimport dagre from 'dagre'\nimport { differenceWith, isEqual } from 'lodash-es'\nimport { UndefinedNodeLabel } from './UndefinedNodeLabel'\nimport { EntityHeader, Reference } from '@sage-bionetworks/synapse-types'\nimport { Activity, UsedURL } from '@sage-bionetworks/synapse-types'\nimport { EntityPlaceholderNodeLabel } from './EntityPlaceholderNodeLabel'\n\nexport enum NodeType {\n ENTITY = 'EntityNode',\n ENTITY_PLACEHOLDER = 'EntityPlaceholderNode',\n EXTERNAL = 'ExternalNode',\n ACTIVITY = 'ActivityNode',\n EXPAND = 'ExpandNode',\n UNDEFINED = 'UndefinedNode',\n}\n\ntype ProvenanceNodeLabelProps =\n | UsedURL\n | Activity\n | ExpandGraphNodeDataProps\n | EntityHeader\n | Reference\n\nexport type ProvenanceNodeProps = {\n type: NodeType\n data: ProvenanceNodeLabelProps\n}\n\nexport type ProvenanceNodeData = {\n label: ReactNode\n props: ProvenanceNodeLabelProps\n type: NodeType\n}\n\nexport const getProvenanceNode = (props: ProvenanceNodeProps): Node => {\n const { type, data } = props\n let nodeLabel: ReactNode\n switch (type) {\n case NodeType.ENTITY:\n nodeLabel = <EntityNodeLabel {...(data as EntityHeader)} />\n break\n case NodeType.ENTITY_PLACEHOLDER:\n nodeLabel = <EntityPlaceholderNodeLabel {...(data as Reference)} />\n break\n case NodeType.EXTERNAL:\n nodeLabel = <ExternalGraphNodeLabel {...(data as UsedURL)} />\n break\n case NodeType.ACTIVITY:\n nodeLabel = <ActivityNodeLabel {...(data as Activity)} />\n break\n case NodeType.EXPAND:\n nodeLabel = (\n <ExpandGraphNodeLabel {...(data as ExpandGraphNodeDataProps)} />\n )\n break\n case NodeType.UNDEFINED:\n nodeLabel = <UndefinedNodeLabel />\n break\n default:\n nodeLabel = <p>Unrecognized node type: {type}</p>\n break\n }\n const nodeData: ProvenanceNodeData = {\n label: nodeLabel,\n props: data,\n type: type,\n }\n return {\n id: getNodeId(props),\n position: { x: 100, y: 100 }, // hard coded, let graph layout library figure this out\n data: nodeData,\n connectable: false,\n draggable: false,\n // selectable: false, // like to make unselectable, but node contents become non-interactive\n className: `${type}`,\n }\n}\n\nexport const getProvenanceEdge = (\n node1Props: ProvenanceNodeProps,\n node2Props: ProvenanceNodeProps,\n): Edge => {\n const node1Id = getNodeId(node1Props)\n const node2Id = getNodeId(node2Props)\n return {\n id: `${node1Id}-${node2Id}`,\n source: node1Id,\n target: node2Id,\n animated: true,\n type: ConnectionLineType.SimpleBezier,\n markerEnd: {\n type: MarkerType.ArrowClosed,\n },\n }\n}\n\nexport const getNodeId = (props: ProvenanceNodeProps) => {\n const { type, data } = props\n switch (type) {\n case NodeType.ENTITY:\n return `${(data as EntityHeader).id}.${\n (data as EntityHeader).versionNumber ?? 'latest'\n }`\n case NodeType.ENTITY_PLACEHOLDER:\n return `${(data as Reference).targetId}.${\n (data as Reference).targetVersionNumber ?? 'latest'\n }`\n case NodeType.EXTERNAL:\n return `${(data as UsedURL).url}`\n case NodeType.ACTIVITY:\n return `${(data as Activity).id}`\n case NodeType.EXPAND:\n return `expand.node.${\n (data as ExpandGraphNodeDataProps).entityHeader.id\n }.${\n (data as ExpandGraphNodeDataProps).entityHeader.versionNumber ??\n 'latest'\n }`\n case NodeType.UNDEFINED:\n return `undefined.dummy.node.${(data as EntityHeader).id}.${\n (data as EntityHeader).versionNumber ?? 'latest'\n }`\n }\n}\n\n// layout\nconst dagreGraph = new dagre.graphlib.Graph()\ndagreGraph.setDefaultEdgeLabel(() => ({}))\n\nconst getNodeHeight = (node: Node) => {\n const nodeData: ProvenanceNodeData = node.data as ProvenanceNodeData\n return nodeData.type == NodeType.EXPAND ? 30 : 100\n}\nconst getNodeWidth = (node: Node) => {\n const nodeData: ProvenanceNodeData = node.data as ProvenanceNodeData\n return nodeData.type == NodeType.EXPAND ? 30 : 172\n}\n\nexport const getLayoutedElements = (\n nodes: Node[],\n edges: Edge[],\n direction: string,\n) => {\n const isHorizontal = direction === 'LR'\n dagreGraph.setGraph({ rankdir: direction })\n\n nodes.forEach(node => {\n dagreGraph.setNode(node.id, {\n width: getNodeWidth(node),\n height: getNodeHeight(node),\n })\n })\n\n edges.forEach(edge => {\n dagreGraph.setEdge(edge.source, edge.target)\n })\n\n dagre.layout(dagreGraph)\n\n nodes.forEach(node => {\n const nodeWithPosition = dagreGraph.node(node.id)\n node.targetPosition = isHorizontal ? Position.Left : Position.Top\n node.sourcePosition = isHorizontal ? Position.Right : Position.Bottom\n\n // We are shifting the dagre node position (anchor=center center) to the top left\n // so it matches the React Flow node anchor point (top left).\n node.position = {\n x: nodeWithPosition.x - getNodeWidth(node) / 2,\n y: nodeWithPosition.y - getNodeHeight(node) / 2,\n }\n\n return node\n })\n\n return { nodes, edges }\n}\n\nexport const isArrayEqual = (x: any[], y: any[]) => {\n return differenceWith(x, y, isEqual).length == 0\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UndefinedNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/UndefinedNodeLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { Typography } from '@mui/material'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\n\nexport const UndefinedNodeLabel = (): React.ReactNode => {\n return (\n <>\n <Typography variant=\"smallText1\" className=\"description\">\n Undefined\n </Typography>\n\n <HelpPopover\n placement=\"top\"\n markdownText=\"Provenance tracks the relationship \n between data, code and analytical results.\"\n helpUrl=\"https://help.synapse.org/docs/Provenance.1972470373.html\"\n />\n </>\n )\n}\n"],"mappings":";;;;;AAIA,IAAa,UAET,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;CAAY,SAAQ;CAAa,WAAU;WAAc;CAE5C,CAAA,EAEb,kBAAC,GAAD;CACE,WAAU;CACV,cAAa;CAEb,SAAQ;CACR,CAAA,CACD,EAAA,CAAA"}
1
+ {"version":3,"file":"UndefinedNodeLabel.js","names":[],"sources":["../../../src/components/ProvenanceGraph/UndefinedNodeLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { Typography } from '@mui/material'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\n\nexport const UndefinedNodeLabel = (): React.ReactNode => {\n return (\n <>\n <Typography variant=\"smallText1\" className=\"description\">\n Undefined\n </Typography>\n\n <HelpPopover\n placement=\"top\"\n markdownText=\"Provenance tracks the relationship \n between data, code and analytical results.\"\n helpUrl=\"https://help.synapse.org/docs/Provenance.1972470373.html\"\n />\n </>\n )\n}\n"],"mappings":";;;;;AAIA,IAAa,UAET,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;CAAY,SAAQ;CAAa,WAAU;WAAc;AAE7C,CAAA,GAEZ,kBAAC,GAAD;CACE,WAAU;CACV,cAAa;CAEb,SAAQ;AACT,CAAA,CACD,EAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"QueryContext.js","names":[],"sources":["../../../src/components/QueryContext/QueryContext.tsx"],"sourcesContent":["import React from 'react'\nimport { LockedColumn } from '@/utils'\nimport { ImmutableTableQueryResult } from '@/utils/hooks/useImmutableTableQuery/useImmutableTableQuery'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { createContext, PropsWithChildren, useContext } from 'react'\nimport { ReadonlyDeep } from 'type-fest'\nimport { TableQueryUseQueryOptions } from '../QueryWrapper/TableQueryUseQueryOptions'\n\nexport type QueryContextType = {\n isInfinite: boolean\n /** The entity ID parsed from the SQL query */\n entityId?: string\n /** The optional version number of the table parsed from the SQL query */\n versionNumber: number | undefined\n currentQueryRequest: ReadonlyDeep<QueryBundleRequest>\n nextQueryRequest: ReadonlyDeep<QueryBundleRequest>\n /** Returns a deep clone of the current query bundle request */\n getCurrentQueryRequest: () => QueryBundleRequest\n /** Returns a deep clone of the initial query bundle request */\n getInitQueryRequest: () => QueryBundleRequest\n /** Updates the current query with the passed request */\n executeQueryRequest: ImmutableTableQueryResult['setQuery']\n /** Resets the query to its initial state, clearing all filters added by the user */\n resetQuery: ImmutableTableQueryResult['resetQuery']\n resetDebounceTimer: ImmutableTableQueryResult['resetDebounceTimer']\n addValueToSelectedFacet: ImmutableTableQueryResult['addValueToSelectedFacet']\n setRangeFacetValue: ImmutableTableQueryResult['setRangeFacetValue']\n removeSelectedFacet: ImmutableTableQueryResult['removeSelectedFacet']\n removeValueFromSelectedFacet: ImmutableTableQueryResult['removeValueFromSelectedFacet']\n /** Removes a matching QueryFilter from the query */\n removeQueryFilter: ImmutableTableQueryResult['removeQueryFilter']\n /** Removes a value from a QueryFilter. If no more values remain in the filter, the filter is also removed */\n removeValueFromQueryFilter: ImmutableTableQueryResult['removeValueFromQueryFilter']\n /** Whether facets are available to be filtered upon based on the current data */\n hasFacetedSelectColumn: boolean\n /** Returns true iff the current request has resettable filters applied via facet filters or additionalFilters. Excludes filters applied to a locked column */\n hasResettableFilters: boolean\n // Either open benefactor entity page in a new window or open the sharing settings dialog (in Synapse.org)\n onViewSharingSettingsClicked?: (benefactorId: string) => void\n /** Combines two faceted columns into a single inclusive range selector */\n combineRangeFacetConfig?: ReadonlyDeep<CombineRangeFacetConfig>\n\n /** react-query UseQueryOptions to fetch the current page of table data */\n rowDataQueryOptions: TableQueryUseQueryOptions['rowDataQueryOptions']\n /** react-query UseInfiniteQueryOptions to fetch infinite rows of table data */\n rowDataInfiniteQueryOptions: TableQueryUseQueryOptions['rowDataInfiniteQueryOptions']\n /** react-query UseQueryOptions to fetch the current query metadata (e.g. column models, facet statistics, total number of rows) */\n queryMetadataQueryOptions: TableQueryUseQueryOptions['queryMetadataQueryOptions']\n\n /** Navigates to a particular page. The first page has value 1. Note that this has no effect if `isInfinite` is true */\n goToPage: (pageNum: number) => void\n /** The current page number, where page 1 is the first page. Note that this has no effect if `isInfinite` is true. */\n currentPage: number\n /** Updates the page size */\n setPageSize: (pageSize: number) => void\n /** The current page size. */\n pageSize: number\n\n /**\n * A column name may be \"locked\" so that it is both (1) not shown to the user that the filter is active, and (2) not modifiable by the user.\n * For example, we may show only the data matching a particular facet value on a Details Page without implying that the shown data is part of a larger table.\n * The presence of a locked filter will result in a client-side modification of the active query and result bundle data.\n */\n lockedColumn: LockedColumn | undefined\n\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row entity ID\n */\n fileIdColumnName: string | undefined\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row (entity) version\n */\n fileVersionColumnName: string | undefined\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row (entity) name\n */\n fileNameColumnName: string | undefined\n\n /**\n * Optional factory to get react-query options for a given page number without calling the standard\n * table query API. When provided (e.g. by SearchQueryWrapper), usePrefetchTableRows will use this\n * instead of getTableQueryUseQueryOptions so that the correct API is called for prefetching.\n */\n getRowDataQueryOptionsForPage?: (\n pageNumber: number,\n ) => TableQueryUseQueryOptions['rowDataQueryOptions']\n}\n\n/**\n * This must be exported to use the context in class components.\n */\nexport const QueryContext = createContext<QueryContextType | undefined>(\n undefined,\n)\n\nexport type QueryContextProviderProps = PropsWithChildren<{\n queryContext: QueryContextType\n}>\n\n/**\n * Provides data related to a Synapse table query, and functions for iterating through pages of the data.\n */\nexport const QueryContextProvider = ({\n children,\n queryContext,\n}: QueryContextProviderProps): React.ReactNode => {\n return (\n <QueryContext.Provider value={queryContext}>\n {children}\n </QueryContext.Provider>\n )\n}\n\n/**\n * Returns the QueryContext, including QueryResultBundle\n *\n * @template TIncludedFields - If you know which specific optional fields will be included in the QueryResultBundle,\n * you can specify them in the generic TIncludedFields\n * @template ExcludeOtherFields - If set to true, will remove optional fields besides those specified in TIncludedFields,\n * default false\n */\nexport function useQueryContext(): QueryContextType {\n const context = useContext(QueryContext)\n if (context === undefined) {\n throw new Error('useQueryContext must be used within a QueryWrapper')\n }\n return context\n}\n\nexport type CombineRangeFacetConfig = {\n minFacetColumn: string\n maxFacetColumn: string\n label: string\n}\n\nexport const QueryContextConsumer = QueryContext.Consumer\n"],"mappings":";;;AA2FA,IAAa,IAAe,EAC1B,KAAA,EACD,EASY,KAAwB,EACnC,aACA,sBAGE,kBAAC,EAAa,UAAd;CAAuB,OAAO;CAC3B;CACqB,CAAA;AAY5B,SAAgB,IAAoC;CAClD,IAAM,IAAU,EAAW,EAAa;AACxC,KAAI,MAAY,KAAA,EACd,OAAU,MAAM,qDAAqD;AAEvE,QAAO;;AAST,IAAa,IAAuB,EAAa"}
1
+ {"version":3,"file":"QueryContext.js","names":[],"sources":["../../../src/components/QueryContext/QueryContext.tsx"],"sourcesContent":["import React from 'react'\nimport { LockedColumn } from '@/utils'\nimport { ImmutableTableQueryResult } from '@/utils/hooks/useImmutableTableQuery/useImmutableTableQuery'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { createContext, PropsWithChildren, useContext } from 'react'\nimport { ReadonlyDeep } from 'type-fest'\nimport { TableQueryUseQueryOptions } from '../QueryWrapper/TableQueryUseQueryOptions'\n\nexport type QueryContextType = {\n isInfinite: boolean\n /** The entity ID parsed from the SQL query */\n entityId?: string\n /** The optional version number of the table parsed from the SQL query */\n versionNumber: number | undefined\n currentQueryRequest: ReadonlyDeep<QueryBundleRequest>\n nextQueryRequest: ReadonlyDeep<QueryBundleRequest>\n /** Returns a deep clone of the current query bundle request */\n getCurrentQueryRequest: () => QueryBundleRequest\n /** Returns a deep clone of the initial query bundle request */\n getInitQueryRequest: () => QueryBundleRequest\n /** Updates the current query with the passed request */\n executeQueryRequest: ImmutableTableQueryResult['setQuery']\n /** Resets the query to its initial state, clearing all filters added by the user */\n resetQuery: ImmutableTableQueryResult['resetQuery']\n resetDebounceTimer: ImmutableTableQueryResult['resetDebounceTimer']\n addValueToSelectedFacet: ImmutableTableQueryResult['addValueToSelectedFacet']\n setRangeFacetValue: ImmutableTableQueryResult['setRangeFacetValue']\n removeSelectedFacet: ImmutableTableQueryResult['removeSelectedFacet']\n removeValueFromSelectedFacet: ImmutableTableQueryResult['removeValueFromSelectedFacet']\n /** Removes a matching QueryFilter from the query */\n removeQueryFilter: ImmutableTableQueryResult['removeQueryFilter']\n /** Removes a value from a QueryFilter. If no more values remain in the filter, the filter is also removed */\n removeValueFromQueryFilter: ImmutableTableQueryResult['removeValueFromQueryFilter']\n /** Whether facets are available to be filtered upon based on the current data */\n hasFacetedSelectColumn: boolean\n /** Returns true iff the current request has resettable filters applied via facet filters or additionalFilters. Excludes filters applied to a locked column */\n hasResettableFilters: boolean\n // Either open benefactor entity page in a new window or open the sharing settings dialog (in Synapse.org)\n onViewSharingSettingsClicked?: (benefactorId: string) => void\n /** Combines two faceted columns into a single inclusive range selector */\n combineRangeFacetConfig?: ReadonlyDeep<CombineRangeFacetConfig>\n\n /** react-query UseQueryOptions to fetch the current page of table data */\n rowDataQueryOptions: TableQueryUseQueryOptions['rowDataQueryOptions']\n /** react-query UseInfiniteQueryOptions to fetch infinite rows of table data */\n rowDataInfiniteQueryOptions: TableQueryUseQueryOptions['rowDataInfiniteQueryOptions']\n /** react-query UseQueryOptions to fetch the current query metadata (e.g. column models, facet statistics, total number of rows) */\n queryMetadataQueryOptions: TableQueryUseQueryOptions['queryMetadataQueryOptions']\n\n /** Navigates to a particular page. The first page has value 1. Note that this has no effect if `isInfinite` is true */\n goToPage: (pageNum: number) => void\n /** The current page number, where page 1 is the first page. Note that this has no effect if `isInfinite` is true. */\n currentPage: number\n /** Updates the page size */\n setPageSize: (pageSize: number) => void\n /** The current page size. */\n pageSize: number\n\n /**\n * A column name may be \"locked\" so that it is both (1) not shown to the user that the filter is active, and (2) not modifiable by the user.\n * For example, we may show only the data matching a particular facet value on a Details Page without implying that the shown data is part of a larger table.\n * The presence of a locked filter will result in a client-side modification of the active query and result bundle data.\n */\n lockedColumn: LockedColumn | undefined\n\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row entity ID\n */\n fileIdColumnName: string | undefined\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row (entity) version\n */\n fileVersionColumnName: string | undefined\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row (entity) name\n */\n fileNameColumnName: string | undefined\n\n /**\n * Optional factory to get react-query options for a given page number without calling the standard\n * table query API. When provided (e.g. by SearchQueryWrapper), usePrefetchTableRows will use this\n * instead of getTableQueryUseQueryOptions so that the correct API is called for prefetching.\n */\n getRowDataQueryOptionsForPage?: (\n pageNumber: number,\n ) => TableQueryUseQueryOptions['rowDataQueryOptions']\n}\n\n/**\n * This must be exported to use the context in class components.\n */\nexport const QueryContext = createContext<QueryContextType | undefined>(\n undefined,\n)\n\nexport type QueryContextProviderProps = PropsWithChildren<{\n queryContext: QueryContextType\n}>\n\n/**\n * Provides data related to a Synapse table query, and functions for iterating through pages of the data.\n */\nexport const QueryContextProvider = ({\n children,\n queryContext,\n}: QueryContextProviderProps): React.ReactNode => {\n return (\n <QueryContext.Provider value={queryContext}>\n {children}\n </QueryContext.Provider>\n )\n}\n\n/**\n * Returns the QueryContext, including QueryResultBundle\n *\n * @template TIncludedFields - If you know which specific optional fields will be included in the QueryResultBundle,\n * you can specify them in the generic TIncludedFields\n * @template ExcludeOtherFields - If set to true, will remove optional fields besides those specified in TIncludedFields,\n * default false\n */\nexport function useQueryContext(): QueryContextType {\n const context = useContext(QueryContext)\n if (context === undefined) {\n throw new Error('useQueryContext must be used within a QueryWrapper')\n }\n return context\n}\n\nexport type CombineRangeFacetConfig = {\n minFacetColumn: string\n maxFacetColumn: string\n label: string\n}\n\nexport const QueryContextConsumer = QueryContext.Consumer\n"],"mappings":";;;AA2FA,IAAa,IAAe,EAC1B,KAAA,CACF,GASa,KAAwB,EACnC,aACA,sBAGE,kBAAC,EAAa,UAAd;CAAuB,OAAO;CAC3B;AACoB,CAAA;AAY3B,SAAgB,IAAoC;CAClD,IAAM,IAAU,EAAW,CAAY;CACvC,IAAI,MAAY,KAAA,GACd,MAAU,MAAM,oDAAoD;CAEtE,OAAO;AACT;AAQA,IAAa,IAAuB,EAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"QueryCount.js","names":[],"sources":["../../../src/components/QueryCount/QueryCount.tsx"],"sourcesContent":["import useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions/SqlFunctions'\nimport { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport React from 'react'\n\nexport type QueryCountProps = {\n query: Query\n parens?: boolean\n}\n\n/**\n * Shows the total count of results for a table query.\n */\nexport function QueryCount(props: QueryCountProps): React.ReactNode {\n const { query, parens } = props\n const entityId = parseEntityIdFromSqlStatement(query.sql)\n\n const request: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n query: query,\n entityId,\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_COUNT,\n }\n\n const { data: queryResult } = useGetQueryResultBundle(request)\n\n const localCount = queryResult?.queryCount?.toLocaleString()\n /* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString#Using_toLocaleString */\n return <>{localCount && (parens ? `(${localCount})` : localCount)}</>\n}\nexport default QueryCount\n"],"mappings":";;;;;;;AAcA,SAAgB,EAAW,GAAyC;CAClE,IAAM,EAAE,UAAO,cAAW,GAUpB,EAAE,MAAM,MAAgB,EAAwB;EANpD,cAAc;EACP;EACP,UALe,EAA8B,EAAM,IAKnD;EACA,UAAU;EAG0C,CAAQ,EAExD,IAAa,GAAa,YAAY,gBAAgB;AAE5D,QAAO,kBAAA,GAAA,EAAA,UAAG,MAAe,IAAS,IAAI,EAAW,KAAK,IAAe,CAAA"}
1
+ {"version":3,"file":"QueryCount.js","names":[],"sources":["../../../src/components/QueryCount/QueryCount.tsx"],"sourcesContent":["import useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions/SqlFunctions'\nimport { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport React from 'react'\n\nexport type QueryCountProps = {\n query: Query\n parens?: boolean\n}\n\n/**\n * Shows the total count of results for a table query.\n */\nexport function QueryCount(props: QueryCountProps): React.ReactNode {\n const { query, parens } = props\n const entityId = parseEntityIdFromSqlStatement(query.sql)\n\n const request: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n query: query,\n entityId,\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_COUNT,\n }\n\n const { data: queryResult } = useGetQueryResultBundle(request)\n\n const localCount = queryResult?.queryCount?.toLocaleString()\n /* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString#Using_toLocaleString */\n return <>{localCount && (parens ? `(${localCount})` : localCount)}</>\n}\nexport default QueryCount\n"],"mappings":";;;;;;;AAcA,SAAgB,EAAW,GAAyC;CAClE,IAAM,EAAE,UAAO,cAAW,GAUpB,EAAE,MAAM,MAAgB,EAAwB;EANpD,cAAc;EACP;EACP,UALe,EAA8B,EAAM,GAKnD;EACA,UAAU;CAG0C,CAAO,GAEvD,IAAa,GAAa,YAAY,eAAe;CAE3D,OAAO,kBAAA,GAAA,EAAA,UAAG,MAAe,IAAS,IAAI,EAAW,KAAK,GAAc,CAAA;AACtE"}