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":"RowDataTable.js","names":[],"sources":["../../../src/components/RowDataTable/RowDataTable.tsx"],"sourcesContent":["import React from 'react'\nimport { StyledTableContainer } from '@/components/styled/StyledTableContainer'\nimport { SelectColumn } from '@sage-bionetworks/synapse-types'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport { SynapseCardLabel } from '../GenericCard'\n\nexport type RowDataTableProps = {\n /** Array of string values corresponding to the data for a row */\n rowData: Array<string | null>\n /** The headers for the columns in the table */\n headers: SelectColumn[]\n /** Optional list of column names whose data should be displayed in the table. If not provided, all columns with data will be shown. */\n displayedColumns?: string[]\n /** Optional configuration for linking columns */\n columnLinks?: LabelLinkConfig\n /** Optional display value overrides for column names */\n columnAliases?: Record<string, string>\n}\n\n/**\n * Displays a table of column names and Synapse Table row data represented as key/value pairs\n */\nconst RowDataTable = (props: RowDataTableProps): React.ReactNode => {\n const { columnAliases, columnLinks, headers, rowData, displayedColumns } =\n props\n\n const columns = displayedColumns\n ? headers\n .filter(header => displayedColumns.includes(header.name))\n .map(header => header.name)\n : headers.map(header => header.name)\n\n const labelValueArray: [string, string][] = []\n\n for (let i = 0; i < columns.length; i += 1) {\n const columnName = columns[i]\n const columnIndex = headers.findIndex(header => header.name === columnName)\n const value = columnIndex !== -1 ? rowData[columnIndex] : undefined\n\n // value can be 'null' if column type is of type STRING or '[null]' if column type is of STRING_LIST\n const column = headers[columnIndex]\n const isNullValue = value === 'null'\n const isListType = column.columnType.endsWith('_LIST')\n\n const isEmptyListOrListOfNull = value === '[]' || value === '[null]'\n if (\n typeof value === 'string' &&\n !(isNullValue || (isListType && isEmptyListOrListOfNull))\n ) {\n labelValueArray.push([columnName, value])\n }\n }\n\n return (\n <StyledTableContainer sx={{ width: '100%' }}>\n <table style={{ width: '100%' }}>\n <tbody>\n {labelValueArray?.map(([columnName, value]) => (\n <tr key={columnName}>\n <td style={{ width: '256px' }}>\n <span\n style={{\n fontSize: '14px',\n lineHeight: '20px',\n color: '#333',\n }}\n >\n {columnAliases?.[columnName] ?? columnName}\n </span>\n </td>\n <td>\n <SynapseCardLabel\n value={value}\n columnName={columnName}\n labelLink={columnLinks?.find(\n link => link.matchColumnName === columnName,\n )}\n selectColumns={headers}\n columnModels={undefined}\n isHeader={false}\n rowData={rowData}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </StyledTableContainer>\n )\n}\n\nexport default RowDataTable\n"],"mappings":";;;;;;AAsBA,IAAM,KAAgB,MAA8C;CAClE,IAAM,EAAE,kBAAe,gBAAa,YAAS,YAAS,wBACpD,GAEI,IAAU,IACZ,EACG,QAAO,MAAU,EAAiB,SAAS,EAAO,KAAK,CAAC,CACxD,KAAI,MAAU,EAAO,KAAK,GAC7B,EAAQ,KAAI,MAAU,EAAO,KAAK,EAEhC,IAAsC,EAAE;AAE9C,MAAK,IAAI,IAAI,GAAG,IAAI,EAAQ,QAAQ,KAAK,GAAG;EAC1C,IAAM,IAAa,EAAQ,IACrB,IAAc,EAAQ,WAAU,MAAU,EAAO,SAAS,EAAW,EACrE,IAAQ,MAAgB,KAA4B,KAAA,IAAvB,EAAQ,IAGrC,IAAS,EAAQ,IACjB,IAAc,MAAU,QACxB,IAAa,EAAO,WAAW,SAAS,QAAQ;AAGtD,EACE,OAAO,KAAU,YACjB,EAAE,KAAgB,MAHY,MAAU,QAAQ,MAAU,cAK1D,EAAgB,KAAK,CAAC,GAAY,EAAM,CAAC;;AAI7C,QACE,kBAAC,GAAD;EAAsB,IAAI,EAAE,OAAO,QAAQ;YACzC,kBAAC,SAAD;GAAO,OAAO,EAAE,OAAO,QAAQ;aAC7B,kBAAC,SAAD,EAAA,UACG,GAAiB,KAAK,CAAC,GAAY,OAClC,kBAAC,MAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,OAAO,EAAE,OAAO,SAAS;cAC3B,kBAAC,QAAD;KACE,OAAO;MACL,UAAU;MACV,YAAY;MACZ,OAAO;MACR;eAEA,IAAgB,MAAe;KAC3B,CAAA;IACJ,CAAA,EACL,kBAAC,MAAD,EAAA,UACE,kBAAC,GAAD;IACS;IACK;IACZ,WAAW,GAAa,MACtB,MAAQ,EAAK,oBAAoB,EAClC;IACD,eAAe;IACf,cAAc,KAAA;IACd,UAAU;IACD;IACT,CAAA,EACC,CAAA,CACF,EAAA,EAzBI,EAyBJ,CACL,EACI,CAAA;GACF,CAAA;EACa,CAAA"}
1
+ {"version":3,"file":"RowDataTable.js","names":[],"sources":["../../../src/components/RowDataTable/RowDataTable.tsx"],"sourcesContent":["import React from 'react'\nimport { StyledTableContainer } from '@/components/styled/StyledTableContainer'\nimport { SelectColumn } from '@sage-bionetworks/synapse-types'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport { SynapseCardLabel } from '../GenericCard'\n\nexport type RowDataTableProps = {\n /** Array of string values corresponding to the data for a row */\n rowData: Array<string | null>\n /** The headers for the columns in the table */\n headers: SelectColumn[]\n /** Optional list of column names whose data should be displayed in the table. If not provided, all columns with data will be shown. */\n displayedColumns?: string[]\n /** Optional configuration for linking columns */\n columnLinks?: LabelLinkConfig\n /** Optional display value overrides for column names */\n columnAliases?: Record<string, string>\n}\n\n/**\n * Displays a table of column names and Synapse Table row data represented as key/value pairs\n */\nconst RowDataTable = (props: RowDataTableProps): React.ReactNode => {\n const { columnAliases, columnLinks, headers, rowData, displayedColumns } =\n props\n\n const columns = displayedColumns\n ? headers\n .filter(header => displayedColumns.includes(header.name))\n .map(header => header.name)\n : headers.map(header => header.name)\n\n const labelValueArray: [string, string][] = []\n\n for (let i = 0; i < columns.length; i += 1) {\n const columnName = columns[i]\n const columnIndex = headers.findIndex(header => header.name === columnName)\n const value = columnIndex !== -1 ? rowData[columnIndex] : undefined\n\n // value can be 'null' if column type is of type STRING or '[null]' if column type is of STRING_LIST\n const column = headers[columnIndex]\n const isNullValue = value === 'null'\n const isListType = column.columnType.endsWith('_LIST')\n\n const isEmptyListOrListOfNull = value === '[]' || value === '[null]'\n if (\n typeof value === 'string' &&\n !(isNullValue || (isListType && isEmptyListOrListOfNull))\n ) {\n labelValueArray.push([columnName, value])\n }\n }\n\n return (\n <StyledTableContainer sx={{ width: '100%' }}>\n <table style={{ width: '100%' }}>\n <tbody>\n {labelValueArray?.map(([columnName, value]) => (\n <tr key={columnName}>\n <td style={{ width: '256px' }}>\n <span\n style={{\n fontSize: '14px',\n lineHeight: '20px',\n color: '#333',\n }}\n >\n {columnAliases?.[columnName] ?? columnName}\n </span>\n </td>\n <td>\n <SynapseCardLabel\n value={value}\n columnName={columnName}\n labelLink={columnLinks?.find(\n link => link.matchColumnName === columnName,\n )}\n selectColumns={headers}\n columnModels={undefined}\n isHeader={false}\n rowData={rowData}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </StyledTableContainer>\n )\n}\n\nexport default RowDataTable\n"],"mappings":";;;;;;AAsBA,IAAM,KAAgB,MAA8C;CAClE,IAAM,EAAE,kBAAe,gBAAa,YAAS,YAAS,wBACpD,GAEI,IAAU,IACZ,EACG,QAAO,MAAU,EAAiB,SAAS,EAAO,IAAI,CAAC,EACvD,KAAI,MAAU,EAAO,IAAI,IAC5B,EAAQ,KAAI,MAAU,EAAO,IAAI,GAE/B,IAAsC,CAAC;CAE7C,KAAK,IAAI,IAAI,GAAG,IAAI,EAAQ,QAAQ,KAAK,GAAG;EAC1C,IAAM,IAAa,EAAQ,IACrB,IAAc,EAAQ,WAAU,MAAU,EAAO,SAAS,CAAU,GACpE,IAAQ,MAAgB,KAA4B,KAAA,IAAvB,EAAQ,IAGrC,IAAS,EAAQ,IACjB,IAAc,MAAU,QACxB,IAAa,EAAO,WAAW,SAAS,OAAO;EAGrD,AACE,OAAO,KAAU,YACjB,EAAE,KAAgB,MAHY,MAAU,QAAQ,MAAU,cAK1D,EAAgB,KAAK,CAAC,GAAY,CAAK,CAAC;CAE5C;CAEA,OACE,kBAAC,GAAD;EAAsB,IAAI,EAAE,OAAO,OAAO;YACxC,kBAAC,SAAD;GAAO,OAAO,EAAE,OAAO,OAAO;aAC5B,kBAAC,SAAD,EAAA,UACG,GAAiB,KAAK,CAAC,GAAY,OAClC,kBAAC,MAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,OAAO,EAAE,OAAO,QAAQ;cAC1B,kBAAC,QAAD;KACE,OAAO;MACL,UAAU;MACV,YAAY;MACZ,OAAO;KACT;eAEC,IAAgB,MAAe;IAC5B,CAAA;GACJ,CAAA,GACJ,kBAAC,MAAD,EAAA,UACE,kBAAC,GAAD;IACS;IACK;IACZ,WAAW,GAAa,MACtB,MAAQ,EAAK,oBAAoB,CACnC;IACA,eAAe;IACf,cAAc,KAAA;IACd,UAAU;IACD;GACV,CAAA,EACC,CAAA,CACF,EAAA,GAzBK,CAyBL,CACL,EACI,CAAA;EACF,CAAA;CACa,CAAA;AAE1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"RowDataTableWithQuery.js","names":[],"sources":["../../../src/components/RowDataTable/RowDataTableWithQuery.tsx"],"sourcesContent":["import React from 'react'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions'\nimport {\n BUNDLE_MASK_QUERY_RESULTS,\n BUNDLE_MASK_QUERY_SELECT_COLUMNS,\n} from '@/utils/SynapseConstants'\nimport { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport { SkeletonTable } from '../Skeleton'\nimport RowDataTable from './RowDataTable'\n\nexport type RowDataTableWithQueryProps = {\n /** The query used to retrieve data */\n query: Query\n /** Optional list of column names whose data should be displayed in the table. If not provided, all columns with data will be shown. */\n displayedColumns?: string[]\n /** Optional display value overrides for column names */\n columnAliases?: Record<string, string>\n /** Optional configuration for linking columns */\n columnLinks?: LabelLinkConfig\n}\n\n/**\n * For the first row returned by the query, displays a table of column names and Synapse Table row data represented as key/value pairs\n */\nconst RowDataTableWithQuery = (\n props: RowDataTableWithQueryProps,\n): React.ReactNode => {\n const { columnAliases, columnLinks, query, displayedColumns } = props\n const entityId = parseEntityIdFromSqlStatement(query.sql)\n\n const queryBundleRequest: QueryBundleRequest = {\n partMask: BUNDLE_MASK_QUERY_SELECT_COLUMNS | BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n query,\n }\n\n const { data: queryResultBundle, isLoading } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const rowData =\n queryResultBundle?.queryResult!.queryResults.rows[0].values ?? []\n const headers = queryResultBundle?.queryResult!.queryResults.headers ?? []\n\n if (isLoading) return <SkeletonTable numRows={6} numCols={1} />\n\n return (\n <RowDataTable\n columnAliases={columnAliases}\n columnLinks={columnLinks}\n rowData={rowData}\n headers={headers}\n displayedColumns={displayedColumns}\n />\n )\n}\n\nexport default RowDataTableWithQuery\n"],"mappings":";;;;;;;;;;AA0BA,IAAM,KACJ,MACoB;CACpB,IAAM,EAAE,kBAAe,gBAAa,UAAO,wBAAqB,GAU1D,EAAE,MAAM,GAAmB,iBAC/B,EAAwB;EAPxB,UAAA;EACA,cAAc;EACd,UALe,EAA8B,EAAM,IAKnD;EACA;EAIwB,CAAmB,EAEvC,IACJ,GAAmB,YAAa,aAAa,KAAK,GAAG,UAAU,EAAE,EAC7D,IAAU,GAAmB,YAAa,aAAa,WAAW,EAAE;AAI1E,QAFI,IAAkB,kBAAC,GAAD;EAAe,SAAS;EAAG,SAAS;EAAK,CAAA,GAG7D,kBAAC,GAAD;EACiB;EACF;EACJ;EACA;EACS;EAClB,CAAA"}
1
+ {"version":3,"file":"RowDataTableWithQuery.js","names":[],"sources":["../../../src/components/RowDataTable/RowDataTableWithQuery.tsx"],"sourcesContent":["import React from 'react'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions'\nimport {\n BUNDLE_MASK_QUERY_RESULTS,\n BUNDLE_MASK_QUERY_SELECT_COLUMNS,\n} from '@/utils/SynapseConstants'\nimport { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport { SkeletonTable } from '../Skeleton'\nimport RowDataTable from './RowDataTable'\n\nexport type RowDataTableWithQueryProps = {\n /** The query used to retrieve data */\n query: Query\n /** Optional list of column names whose data should be displayed in the table. If not provided, all columns with data will be shown. */\n displayedColumns?: string[]\n /** Optional display value overrides for column names */\n columnAliases?: Record<string, string>\n /** Optional configuration for linking columns */\n columnLinks?: LabelLinkConfig\n}\n\n/**\n * For the first row returned by the query, displays a table of column names and Synapse Table row data represented as key/value pairs\n */\nconst RowDataTableWithQuery = (\n props: RowDataTableWithQueryProps,\n): React.ReactNode => {\n const { columnAliases, columnLinks, query, displayedColumns } = props\n const entityId = parseEntityIdFromSqlStatement(query.sql)\n\n const queryBundleRequest: QueryBundleRequest = {\n partMask: BUNDLE_MASK_QUERY_SELECT_COLUMNS | BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n query,\n }\n\n const { data: queryResultBundle, isLoading } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const rowData =\n queryResultBundle?.queryResult!.queryResults.rows[0].values ?? []\n const headers = queryResultBundle?.queryResult!.queryResults.headers ?? []\n\n if (isLoading) return <SkeletonTable numRows={6} numCols={1} />\n\n return (\n <RowDataTable\n columnAliases={columnAliases}\n columnLinks={columnLinks}\n rowData={rowData}\n headers={headers}\n displayedColumns={displayedColumns}\n />\n )\n}\n\nexport default RowDataTableWithQuery\n"],"mappings":";;;;;;;;;;AA0BA,IAAM,KACJ,MACoB;CACpB,IAAM,EAAE,kBAAe,gBAAa,UAAO,wBAAqB,GAU1D,EAAE,MAAM,GAAmB,iBAC/B,EAAwB;EAPxB,UAAA;EACA,cAAc;EACd,UALe,EAA8B,EAAM,GAKnD;EACA;CAIwB,CAAkB,GAEtC,IACJ,GAAmB,YAAa,aAAa,KAAK,GAAG,UAAU,CAAC,GAC5D,IAAU,GAAmB,YAAa,aAAa,WAAW,CAAC;CAIzE,OAFI,IAAkB,kBAAC,GAAD;EAAe,SAAS;EAAG,SAAS;CAAI,CAAA,IAG5D,kBAAC,GAAD;EACiB;EACF;EACJ;EACA;EACS;CACnB,CAAA;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"RssFeedCards.js","names":[],"sources":["../../../src/components/RssFeedCards/RssFeedCards.tsx"],"sourcesContent":["import NoData from '@/assets/icons/NoData'\nimport { ReactComponent as SubscribePlus } from '@/assets/icons/subscribe_plus.svg'\nimport LargeButton from '@/components/styled/LargeButton'\nimport dayjs from 'dayjs'\nimport { Component } from 'react'\nimport MailchimpSubscribe from 'react-mailchimp-subscribe'\nimport Parser from 'rss-parser'\n\nconst rssParser = new Parser()\ntype RssState = {\n rssFeed: any\n isLoadingError: boolean\n isShowingSubscribeUI: boolean\n allItemsUrl?: string\n}\n\nexport type RssFilter = {\n type?: 'tag' | 'category'\n value: string\n}\n\nexport type RssFeedCardsProps = {\n url: string\n filter?: RssFilter // optional tag or category to use as a filter\n itemsToShow: number\n allowCategories?: string[]\n mailChimpListName?: string\n mailChimpUrl?: string\n viewAllNewsButtonText?: string\n}\nexport class RssFeedCards extends Component<RssFeedCardsProps, RssState> {\n // only update the state if this component is mounted\n _isMounted = false\n\n constructor(props: RssFeedCardsProps) {\n super(props)\n this.state = {\n rssFeed: {},\n isLoadingError: false,\n isShowingSubscribeUI: false,\n }\n }\n\n componentDidMount() {\n this._isMounted = true\n const { url, filter } = this.props\n const filterValue = filter?.value\n const filterType = filter?.type\n const tagPath = filterValue\n ? `/${filterType ?? 'tag'}/${filterValue.replace(' ', '-')}`\n : ''\n const allItems = `${url}${tagPath}`\n const feedUrl = `${allItems}/?feed=rss2`\n fetch(feedUrl)\n .then(response => response.text())\n .then(responseData => rssParser.parseString(responseData))\n .then(rss => {\n if (this._isMounted) {\n this.setState({ rssFeed: rss, allItemsUrl: allItems })\n }\n })\n .catch(err => {\n if (this._isMounted) {\n this.setState({ isLoadingError: true })\n }\n })\n }\n\n componentWillUnmount() {\n this._isMounted = false\n }\n\n public onClickSubscribe = () => {\n this.setState({ isShowingSubscribeUI: true })\n }\n\n render() {\n const { viewAllNewsButtonText } = this.props\n\n if (this.state.rssFeed.items?.length === 0) {\n return (\n <div className=\"text-center SRCBorderedPanel SRCBorderedPanel--padded2x\">\n {NoData}\n <div style={{ marginTop: '20px', fontStyle: 'italic' }}>\n There are no items currently available\n </div>\n </div>\n )\n }\n return (\n <>\n {this.props.mailChimpUrl && (\n <div className=\"FeedSubscribe\">\n {!this.state.isShowingSubscribeUI && (\n <a\n className=\"FeedSubscribeToNewsLink SRC-no-border-bottom-imp\"\n onClick={this.onClickSubscribe}\n >\n <SubscribePlus title=\"Subscribe to News\" />\n Subscribe to News\n </a>\n )}\n {this.state.isShowingSubscribeUI && (\n <div className=\"MailchimpSubscribeContainer\">\n <SubscribePlus title=\"Subscribe to News\" />\n <p>\n Subscribe to receive the {this.props.mailChimpListName} by\n e-mail, which provides information and updates related to the\n Portal. You can opt out at any time by using the unsubscribe\n link within the e-mail. We will not share your information\n with any third parties or use it for any other purposes.\n </p>\n <div className=\"SRC-marginBottomTop\">\n <MailchimpSubscribe url={this.props.mailChimpUrl} />\n </div>\n </div>\n )}\n </div>\n )}\n <div className=\"Feed\">\n <div className=\"FeedItems\">\n {this.state.rssFeed.items &&\n this.state.rssFeed.items.map((item: any, index: any) => {\n // The other is to hide the large number of items in a particular feed (usually a max of 10 are returned). See state.isShowingMoreItems\n if (index >= this.props.itemsToShow) {\n return\n }\n\n return (\n <div key={item.guid} className={`FeedItem`}>\n <div>\n {this.props.allowCategories &&\n this.props.allowCategories.length > 0 && (\n <div className=\"FeedItemCategories\">\n {item['categories'].map((categoryName: string) => {\n // are we allowed to show this category/tag?\n const categoryNameLowerCase =\n categoryName.toLowerCase()\n const allowCategories = this.props.allowCategories\n if (\n allowCategories?.findIndex(\n item =>\n categoryNameLowerCase ===\n item.toLowerCase(),\n ) === -1\n )\n return <></>\n // else\n return (\n <a\n href={`${\n this.state.rssFeed.link\n }/tag/${categoryName.replace(' ', '-')}`}\n className=\"SRC-no-border-bottom-imp\"\n key={`${item.guid}_${categoryName}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <div className=\"FeedItemCategory\">\n {categoryName}\n </div>\n </a>\n )\n })}\n </div>\n )}\n <p className=\"FeedItemDate\">\n {dayjs(item['isoDate']).format('MMMM YYYY')}\n </p>\n <p className=\"FeedItemTitle\">{item['title']}</p>\n <div className=\"FeedItemDescription\">\n {item['contentSnippet'].replace(/\\[...\\]|\\[…\\]/gm, '…')}\n </div>\n <a\n className=\"FeedItemLink\"\n href={item['link']}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Continue reading\n </a>\n </div>\n </div>\n )\n })}\n </div>\n {this.state.rssFeed.items &&\n this.state.rssFeed.items.length > this.props.itemsToShow &&\n this.state.allItemsUrl && (\n <div className=\"FeedViewAllNewsButtonContainer\">\n <LargeButton\n color=\"secondary\"\n variant=\"contained\"\n onClick={() =>\n window.open(this.state.allItemsUrl, '_blank', 'noopener')\n }\n // @ts-expect-error - target prop exists, but TS doesn't recognize on styled component\n target=\"_blank\"\n >\n {viewAllNewsButtonText ?? 'View All News'}\n </LargeButton>\n </div>\n )}\n {this.state.isLoadingError && (\n <div>Unable to load feed: {this.props.url}</div>\n )}\n </div>\n </>\n )\n }\n}\n\nexport default RssFeedCards\n"],"mappings":"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"}
1
+ {"version":3,"file":"RssFeedCards.js","names":[],"sources":["../../../src/components/RssFeedCards/RssFeedCards.tsx"],"sourcesContent":["import NoData from '@/assets/icons/NoData'\nimport { ReactComponent as SubscribePlus } from '@/assets/icons/subscribe_plus.svg'\nimport LargeButton from '@/components/styled/LargeButton'\nimport dayjs from 'dayjs'\nimport { Component } from 'react'\nimport MailchimpSubscribe from 'react-mailchimp-subscribe'\nimport Parser from 'rss-parser'\n\nconst rssParser = new Parser()\ntype RssState = {\n rssFeed: any\n isLoadingError: boolean\n isShowingSubscribeUI: boolean\n allItemsUrl?: string\n}\n\nexport type RssFilter = {\n type?: 'tag' | 'category'\n value: string\n}\n\nexport type RssFeedCardsProps = {\n url: string\n filter?: RssFilter // optional tag or category to use as a filter\n itemsToShow: number\n allowCategories?: string[]\n mailChimpListName?: string\n mailChimpUrl?: string\n viewAllNewsButtonText?: string\n}\nexport class RssFeedCards extends Component<RssFeedCardsProps, RssState> {\n // only update the state if this component is mounted\n _isMounted = false\n\n constructor(props: RssFeedCardsProps) {\n super(props)\n this.state = {\n rssFeed: {},\n isLoadingError: false,\n isShowingSubscribeUI: false,\n }\n }\n\n componentDidMount() {\n this._isMounted = true\n const { url, filter } = this.props\n const filterValue = filter?.value\n const filterType = filter?.type\n const tagPath = filterValue\n ? `/${filterType ?? 'tag'}/${filterValue.replace(' ', '-')}`\n : ''\n const allItems = `${url}${tagPath}`\n const feedUrl = `${allItems}/?feed=rss2`\n fetch(feedUrl)\n .then(response => response.text())\n .then(responseData => rssParser.parseString(responseData))\n .then(rss => {\n if (this._isMounted) {\n this.setState({ rssFeed: rss, allItemsUrl: allItems })\n }\n })\n .catch(err => {\n if (this._isMounted) {\n this.setState({ isLoadingError: true })\n }\n })\n }\n\n componentWillUnmount() {\n this._isMounted = false\n }\n\n public onClickSubscribe = () => {\n this.setState({ isShowingSubscribeUI: true })\n }\n\n render() {\n const { viewAllNewsButtonText } = this.props\n\n if (this.state.rssFeed.items?.length === 0) {\n return (\n <div className=\"text-center SRCBorderedPanel SRCBorderedPanel--padded2x\">\n {NoData}\n <div style={{ marginTop: '20px', fontStyle: 'italic' }}>\n There are no items currently available\n </div>\n </div>\n )\n }\n return (\n <>\n {this.props.mailChimpUrl && (\n <div className=\"FeedSubscribe\">\n {!this.state.isShowingSubscribeUI && (\n <a\n className=\"FeedSubscribeToNewsLink SRC-no-border-bottom-imp\"\n onClick={this.onClickSubscribe}\n >\n <SubscribePlus title=\"Subscribe to News\" />\n Subscribe to News\n </a>\n )}\n {this.state.isShowingSubscribeUI && (\n <div className=\"MailchimpSubscribeContainer\">\n <SubscribePlus title=\"Subscribe to News\" />\n <p>\n Subscribe to receive the {this.props.mailChimpListName} by\n e-mail, which provides information and updates related to the\n Portal. You can opt out at any time by using the unsubscribe\n link within the e-mail. We will not share your information\n with any third parties or use it for any other purposes.\n </p>\n <div className=\"SRC-marginBottomTop\">\n <MailchimpSubscribe url={this.props.mailChimpUrl} />\n </div>\n </div>\n )}\n </div>\n )}\n <div className=\"Feed\">\n <div className=\"FeedItems\">\n {this.state.rssFeed.items &&\n this.state.rssFeed.items.map((item: any, index: any) => {\n // The other is to hide the large number of items in a particular feed (usually a max of 10 are returned). See state.isShowingMoreItems\n if (index >= this.props.itemsToShow) {\n return\n }\n\n return (\n <div key={item.guid} className={`FeedItem`}>\n <div>\n {this.props.allowCategories &&\n this.props.allowCategories.length > 0 && (\n <div className=\"FeedItemCategories\">\n {item['categories'].map((categoryName: string) => {\n // are we allowed to show this category/tag?\n const categoryNameLowerCase =\n categoryName.toLowerCase()\n const allowCategories = this.props.allowCategories\n if (\n allowCategories?.findIndex(\n item =>\n categoryNameLowerCase ===\n item.toLowerCase(),\n ) === -1\n )\n return <></>\n // else\n return (\n <a\n href={`${\n this.state.rssFeed.link\n }/tag/${categoryName.replace(' ', '-')}`}\n className=\"SRC-no-border-bottom-imp\"\n key={`${item.guid}_${categoryName}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <div className=\"FeedItemCategory\">\n {categoryName}\n </div>\n </a>\n )\n })}\n </div>\n )}\n <p className=\"FeedItemDate\">\n {dayjs(item['isoDate']).format('MMMM YYYY')}\n </p>\n <p className=\"FeedItemTitle\">{item['title']}</p>\n <div className=\"FeedItemDescription\">\n {item['contentSnippet'].replace(/\\[...\\]|\\[…\\]/gm, '…')}\n </div>\n <a\n className=\"FeedItemLink\"\n href={item['link']}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Continue reading\n </a>\n </div>\n </div>\n )\n })}\n </div>\n {this.state.rssFeed.items &&\n this.state.rssFeed.items.length > this.props.itemsToShow &&\n this.state.allItemsUrl && (\n <div className=\"FeedViewAllNewsButtonContainer\">\n <LargeButton\n color=\"secondary\"\n variant=\"contained\"\n onClick={() =>\n window.open(this.state.allItemsUrl, '_blank', 'noopener')\n }\n // @ts-expect-error - target prop exists, but TS doesn't recognize on styled component\n target=\"_blank\"\n >\n {viewAllNewsButtonText ?? 'View All News'}\n </LargeButton>\n </div>\n )}\n {this.state.isLoadingError && (\n <div>Unable to load feed: {this.props.url}</div>\n )}\n </div>\n </>\n )\n }\n}\n\nexport default RssFeedCards\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SageResourcesPopover.js","names":[],"sources":["../../../src/components/SageResourcesPopover/SageResourcesPopover.tsx"],"sourcesContent":["import { useSourceAppConfigs } from '@/utils/hooks'\nimport { Box, Button, Grid, Popover, Typography, useTheme } from '@mui/material'\nimport {\n ColumnSingleValueQueryFilter,\n ColumnSingleValueFilterOperator,\n} from '@sage-bionetworks/synapse-types'\n\nexport type SageResourcesPopoverProps = {\n sourceAppConfigTableID?: string\n anchorEl: HTMLElement | null\n onClose: () => void\n resourceName?: string\n description?: string\n filterByType?: 'SynapsePortal' | 'SageSolution'\n allResourcesUrl?: string\n}\n\nexport function SageResourcesPopover({\n sourceAppConfigTableID = 'syn45291362',\n anchorEl,\n onClose,\n resourceName = 'Portals',\n description = 'Sage Bionetworks builds and supports community portals as tailored platforms for data sharing and collaboration across diverse research areas.',\n filterByType,\n allResourcesUrl,\n}: SageResourcesPopoverProps) {\n const theme = useTheme()\n const open = Boolean(anchorEl)\n const hostname = typeof window !== 'undefined' ? window.location.hostname : ''\n\n const additionalFilters: ColumnSingleValueQueryFilter[] = [\n {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: 'isPublicized',\n operator: ColumnSingleValueFilterOperator.EQUAL,\n values: ['true'],\n },\n ]\n if (filterByType) {\n additionalFilters.push({\n isDefiningCondition: false,\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: 'portalType',\n operator: ColumnSingleValueFilterOperator.EQUAL,\n values: [filterByType],\n })\n }\n const sourceAppConfigs = useSourceAppConfigs(\n sourceAppConfigTableID,\n additionalFilters,\n )\n\n return (\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n sx={{ width: '90%', height: '90%' }}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n transformOrigin={{ vertical: 'top', horizontal: 'center' }}\n >\n <Grid container spacing={2} sx={{ p: '24px' }}>\n <Grid size={{ xs: 12, lg: 3 }}>\n <Box sx={{ p: theme.spacing(4), pr: '5px' }}>\n <Typography\n variant=\"headline1\"\n sx={{ fontSize: '30px', pb: '30px', fontWeight: 600 }}\n >\n {resourceName}\n </Typography>\n <Typography variant=\"body1\" sx={{ pb: '10px', fontWeight: 500 }}>\n {description}\n </Typography>\n {allResourcesUrl && (\n <Button\n type=\"button\"\n color=\"primary\"\n variant=\"contained\"\n sx={{\n p: '10px 50px',\n mt: '30px',\n height: '100%',\n '&:hover': { color: 'white' },\n }}\n href={allResourcesUrl}\n >\n See all {resourceName}\n </Button>\n )}\n </Box>\n </Grid>\n\n <Grid size={{ xs: 12, lg: 9 }}>\n <Grid container>\n {sourceAppConfigs\n ?.filter(config => {\n if (config.appURL.toLowerCase().startsWith('http')) {\n const url = new URL(config.appURL)\n return url.hostname !== hostname\n }\n return true\n })\n .map(config => (\n <Grid\n key={config.appId}\n size={{ xs: 12, sm: 6, lg: 4 }}\n className=\"sourceAppItem\"\n sx={{\n p: '30px',\n border: '1px solid #F1F3F5',\n '&:hover': {\n backgroundColor: '#d7dee433',\n cursor: 'pointer',\n },\n }}\n >\n <div\n onClick={() => {\n window.open(config.appURL, '_blank')\n onClose()\n }}\n >\n <Box\n sx={{\n pb: '10px',\n img: {\n maxHeight: '50px',\n height: '50px',\n maxWidth: '100%',\n },\n }}\n >\n {config.logo}\n </Box>\n <Typography variant=\"body1\" sx={{ fontWeight: 500 }}>\n {config.shortDescription}\n </Typography>\n </div>\n </Grid>\n ))}\n </Grid>\n </Grid>\n </Grid>\n </Popover>\n )\n}\n"],"mappings":";;;;;;AAiBA,SAAgB,EAAqB,EACnC,4BAAyB,eACzB,aACA,YACA,kBAAe,WACf,iBAAc,kJACd,iBACA,sBAC4B;CAC5B,IAAM,IAAQ,GAAU,EAClB,IAAO,EAAQ,GACf,IAAW,OAAO,SAAW,MAAc,OAAO,SAAS,WAAW,IAEtE,IAAoD,CACxD;EACE,cACE;EACF,YAAY;EACZ,UAAU,EAAgC;EAC1C,QAAQ,CAAC,OAAO;EACjB,CACF;AACD,CAAI,KACF,EAAkB,KAAK;EACrB,qBAAqB;EACrB,cACE;EACF,YAAY;EACZ,UAAU,EAAgC;EAC1C,QAAQ,CAAC,EAAa;EACvB,CAAC;CAEJ,IAAM,IAAmB,EACvB,GACA,EACD;AAED,QACE,kBAAC,GAAD;EACQ;EACI;EACD;EACT,IAAI;GAAE,OAAO;GAAO,QAAQ;GAAO;EACnC,cAAc;GAAE,UAAU;GAAU,YAAY;GAAU;EAC1D,iBAAiB;GAAE,UAAU;GAAO,YAAY;GAAU;YAE1D,kBAAC,GAAD;GAAM,WAAA;GAAU,SAAS;GAAG,IAAI,EAAE,GAAG,QAAQ;aAA7C,CACE,kBAAC,GAAD;IAAM,MAAM;KAAE,IAAI;KAAI,IAAI;KAAG;cAC3B,kBAAC,GAAD;KAAK,IAAI;MAAE,GAAG,EAAM,QAAQ,EAAE;MAAE,IAAI;MAAO;eAA3C;MACE,kBAAC,GAAD;OACE,SAAQ;OACR,IAAI;QAAE,UAAU;QAAQ,IAAI;QAAQ,YAAY;QAAK;iBAEpD;OACU,CAAA;MACb,kBAAC,GAAD;OAAY,SAAQ;OAAQ,IAAI;QAAE,IAAI;QAAQ,YAAY;QAAK;iBAC5D;OACU,CAAA;MACZ,KACC,kBAAC,GAAD;OACE,MAAK;OACL,OAAM;OACN,SAAQ;OACR,IAAI;QACF,GAAG;QACH,IAAI;QACJ,QAAQ;QACR,WAAW,EAAE,OAAO,SAAS;QAC9B;OACD,MAAM;iBAVR,CAWC,YACU,EACF;;MAEP;;IACD,CAAA,EAEP,kBAAC,GAAD;IAAM,MAAM;KAAE,IAAI;KAAI,IAAI;KAAG;cAC3B,kBAAC,GAAD;KAAM,WAAA;eACH,GACG,QAAO,MACH,EAAO,OAAO,aAAa,CAAC,WAAW,OAAO,GAEzC,IADS,IAAI,EAAO,OACpB,CAAI,aAAa,IAEnB,GACP,CACD,KAAI,MACH,kBAAC,GAAD;MAEE,MAAM;OAAE,IAAI;OAAI,IAAI;OAAG,IAAI;OAAG;MAC9B,WAAU;MACV,IAAI;OACF,GAAG;OACH,QAAQ;OACR,WAAW;QACT,iBAAiB;QACjB,QAAQ;QACT;OACF;gBAED,kBAAC,OAAD;OACE,eAAe;AAEb,QADA,OAAO,KAAK,EAAO,QAAQ,SAAS,EACpC,GAAS;;iBAHb,CAME,kBAAC,GAAD;QACE,IAAI;SACF,IAAI;SACJ,KAAK;UACH,WAAW;UACX,QAAQ;UACR,UAAU;UACX;SACF;kBAEA,EAAO;QACJ,CAAA,EACN,kBAAC,GAAD;QAAY,SAAQ;QAAQ,IAAI,EAAE,YAAY,KAAK;kBAChD,EAAO;QACG,CAAA,CACT;;MACD,EAlCA,EAAO,MAkCP,CACP;KACC,CAAA;IACF,CAAA,CACF;;EACC,CAAA"}
1
+ {"version":3,"file":"SageResourcesPopover.js","names":[],"sources":["../../../src/components/SageResourcesPopover/SageResourcesPopover.tsx"],"sourcesContent":["import { useSourceAppConfigs } from '@/utils/hooks'\nimport { Box, Button, Grid, Popover, Typography, useTheme } from '@mui/material'\nimport {\n ColumnSingleValueQueryFilter,\n ColumnSingleValueFilterOperator,\n} from '@sage-bionetworks/synapse-types'\n\nexport type SageResourcesPopoverProps = {\n sourceAppConfigTableID?: string\n anchorEl: HTMLElement | null\n onClose: () => void\n resourceName?: string\n description?: string\n filterByType?: 'SynapsePortal' | 'SageSolution'\n allResourcesUrl?: string\n}\n\nexport function SageResourcesPopover({\n sourceAppConfigTableID = 'syn45291362',\n anchorEl,\n onClose,\n resourceName = 'Portals',\n description = 'Sage Bionetworks builds and supports community portals as tailored platforms for data sharing and collaboration across diverse research areas.',\n filterByType,\n allResourcesUrl,\n}: SageResourcesPopoverProps) {\n const theme = useTheme()\n const open = Boolean(anchorEl)\n const hostname = typeof window !== 'undefined' ? window.location.hostname : ''\n\n const additionalFilters: ColumnSingleValueQueryFilter[] = [\n {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: 'isPublicized',\n operator: ColumnSingleValueFilterOperator.EQUAL,\n values: ['true'],\n },\n ]\n if (filterByType) {\n additionalFilters.push({\n isDefiningCondition: false,\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: 'portalType',\n operator: ColumnSingleValueFilterOperator.EQUAL,\n values: [filterByType],\n })\n }\n const sourceAppConfigs = useSourceAppConfigs(\n sourceAppConfigTableID,\n additionalFilters,\n )\n\n return (\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n sx={{ width: '90%', height: '90%' }}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n transformOrigin={{ vertical: 'top', horizontal: 'center' }}\n >\n <Grid container spacing={2} sx={{ p: '24px' }}>\n <Grid size={{ xs: 12, lg: 3 }}>\n <Box sx={{ p: theme.spacing(4), pr: '5px' }}>\n <Typography\n variant=\"headline1\"\n sx={{ fontSize: '30px', pb: '30px', fontWeight: 600 }}\n >\n {resourceName}\n </Typography>\n <Typography variant=\"body1\" sx={{ pb: '10px', fontWeight: 500 }}>\n {description}\n </Typography>\n {allResourcesUrl && (\n <Button\n type=\"button\"\n color=\"primary\"\n variant=\"contained\"\n sx={{\n p: '10px 50px',\n mt: '30px',\n height: '100%',\n '&:hover': { color: 'white' },\n }}\n href={allResourcesUrl}\n >\n See all {resourceName}\n </Button>\n )}\n </Box>\n </Grid>\n\n <Grid size={{ xs: 12, lg: 9 }}>\n <Grid container>\n {sourceAppConfigs\n ?.filter(config => {\n if (config.appURL.toLowerCase().startsWith('http')) {\n const url = new URL(config.appURL)\n return url.hostname !== hostname\n }\n return true\n })\n .map(config => (\n <Grid\n key={config.appId}\n size={{ xs: 12, sm: 6, lg: 4 }}\n className=\"sourceAppItem\"\n sx={{\n p: '30px',\n border: '1px solid #F1F3F5',\n '&:hover': {\n backgroundColor: '#d7dee433',\n cursor: 'pointer',\n },\n }}\n >\n <div\n onClick={() => {\n window.open(config.appURL, '_blank')\n onClose()\n }}\n >\n <Box\n sx={{\n pb: '10px',\n img: {\n maxHeight: '50px',\n height: '50px',\n maxWidth: '100%',\n },\n }}\n >\n {config.logo}\n </Box>\n <Typography variant=\"body1\" sx={{ fontWeight: 500 }}>\n {config.shortDescription}\n </Typography>\n </div>\n </Grid>\n ))}\n </Grid>\n </Grid>\n </Grid>\n </Popover>\n )\n}\n"],"mappings":";;;;;;AAiBA,SAAgB,EAAqB,EACnC,4BAAyB,eACzB,aACA,YACA,kBAAe,WACf,iBAAc,kJACd,iBACA,sBAC4B;CAC5B,IAAM,IAAQ,EAAS,GACjB,IAAO,EAAQ,GACf,IAAW,OAAO,SAAW,MAAc,OAAO,SAAS,WAAW,IAEtE,IAAoD,CACxD;EACE,cACE;EACF,YAAY;EACZ,UAAU,EAAgC;EAC1C,QAAQ,CAAC,MAAM;CACjB,CACF;CACA,AAAI,KACF,EAAkB,KAAK;EACrB,qBAAqB;EACrB,cACE;EACF,YAAY;EACZ,UAAU,EAAgC;EAC1C,QAAQ,CAAC,CAAY;CACvB,CAAC;CAEH,IAAM,IAAmB,EACvB,GACA,CACF;CAEA,OACE,kBAAC,GAAD;EACQ;EACI;EACD;EACT,IAAI;GAAE,OAAO;GAAO,QAAQ;EAAM;EAClC,cAAc;GAAE,UAAU;GAAU,YAAY;EAAS;EACzD,iBAAiB;GAAE,UAAU;GAAO,YAAY;EAAS;YAEzD,kBAAC,GAAD;GAAM,WAAA;GAAU,SAAS;GAAG,IAAI,EAAE,GAAG,OAAO;aAA5C,CACE,kBAAC,GAAD;IAAM,MAAM;KAAE,IAAI;KAAI,IAAI;IAAE;cAC1B,kBAAC,GAAD;KAAK,IAAI;MAAE,GAAG,EAAM,QAAQ,CAAC;MAAG,IAAI;KAAM;eAA1C;MACE,kBAAC,GAAD;OACE,SAAQ;OACR,IAAI;QAAE,UAAU;QAAQ,IAAI;QAAQ,YAAY;OAAI;iBAEnD;MACS,CAAA;MACZ,kBAAC,GAAD;OAAY,SAAQ;OAAQ,IAAI;QAAE,IAAI;QAAQ,YAAY;OAAI;iBAC3D;MACS,CAAA;MACX,KACC,kBAAC,GAAD;OACE,MAAK;OACL,OAAM;OACN,SAAQ;OACR,IAAI;QACF,GAAG;QACH,IAAI;QACJ,QAAQ;QACR,WAAW,EAAE,OAAO,QAAQ;OAC9B;OACA,MAAM;iBAVR,CAWC,YACU,CACH;;KAEP;;GACD,CAAA,GAEN,kBAAC,GAAD;IAAM,MAAM;KAAE,IAAI;KAAI,IAAI;IAAE;cAC1B,kBAAC,GAAD;KAAM,WAAA;eACH,GACG,QAAO,MACH,EAAO,OAAO,YAAY,EAAE,WAAW,MAAM,IAExC,IADS,IAAI,EAAO,MACpB,EAAI,aAAa,IAEnB,EACR,EACA,KAAI,MACH,kBAAC,GAAD;MAEE,MAAM;OAAE,IAAI;OAAI,IAAI;OAAG,IAAI;MAAE;MAC7B,WAAU;MACV,IAAI;OACF,GAAG;OACH,QAAQ;OACR,WAAW;QACT,iBAAiB;QACjB,QAAQ;OACV;MACF;gBAEA,kBAAC,OAAD;OACE,eAAe;QAEb,AADA,OAAO,KAAK,EAAO,QAAQ,QAAQ,GACnC,EAAQ;OACV;iBAJF,CAME,kBAAC,GAAD;QACE,IAAI;SACF,IAAI;SACJ,KAAK;UACH,WAAW;UACX,QAAQ;UACR,UAAU;SACZ;QACF;kBAEC,EAAO;OACL,CAAA,GACL,kBAAC,GAAD;QAAY,SAAQ;QAAQ,IAAI,EAAE,YAAY,IAAI;kBAC/C,EAAO;OACE,CAAA,CACT;;KACD,GAlCC,EAAO,KAkCR,CACP;IACC,CAAA;GACF,CAAA,CACF;;CACC,CAAA;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"AnnotationEditorUtils.js","names":[],"sources":["../../../src/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.ts"],"sourcesContent":["import { AdditionalPropertiesSchemaField } from '@/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField'\nimport {\n englishStringTranslator,\n RJSFValidationError,\n TranslatableString,\n} from '@rjsf/utils'\nimport { JSONSchema7 } from 'json-schema'\nimport { JSONPath } from 'jsonpath-plus'\nimport { flatMap, groupBy, isEmpty, isObject } from 'lodash-es'\n\n/**\n * Generates a JSON schema for the form UI based on the provided validation schema and entity schema base properties.\n *\n * To meet the requirements of the desired form to display, we cannot simply show the validation schema. This is because\n * validation schemas may use conditional logic based on default entity properties (e.g. concreteType) to show/hide fields.\n * This method combines the validation schema with the entity schema base properties to create a new schema that will yield\n * the expected form with desired logic.\n * @param validationSchema\n * @param entitySchema\n */\nexport function getJsonSchemaForForm(\n validationSchema: JSONSchema7 = {},\n entitySchema: JSONSchema7 = {},\n): JSONSchema7 {\n const entitySchemaProperties =\n getPossibleTopLevelPropertiesInObjectSchema(entitySchema)\n\n return {\n $schema: 'http://json-schema.org/draft-07/schema#',\n // Spread the validation schema to ensure all other references are included\n // Top level properties like \"$defs\" get lost if we simply put the entire schema in `allOf`\n ...validationSchema,\n // JSON Schemas for Synapse types use \"definitions\", so it should be manually merged.\n definitions: {\n ...entitySchema.definitions,\n ...validationSchema.definitions,\n },\n allOf: [\n ...(validationSchema.allOf || []),\n // Add in the entity properties\n {\n type: 'object',\n properties: entitySchemaProperties,\n },\n ],\n // Always allow adding additional annotations (though it may violate the validationSchema)\n additionalProperties: true,\n }\n}\n\n/**\n * Generates the UiSchema for the annotations editor.\n * @param entitySchemaBaseProperties\n */\nexport function getUiSchemaForForm(\n entitySchemaBaseProperties: JSONSchema7['properties'] = {},\n) {\n // Each 'base' entity field (id, name, concreteType, etc.) should be hidden\n const uiSchemaWithHiddenEntityProperties = Object.keys(\n entitySchemaBaseProperties,\n ).reduce((prev, curr) => ({ ...prev, [curr]: { 'ui:widget': 'hidden' } }), {})\n\n return {\n ...uiSchemaWithHiddenEntityProperties,\n 'ui:globalOptions': {\n copyable: false, // copy button clutters the UI, is not very useful since schemas are flat objects\n duplicateKeySuffixSeparator: '_', // the default duplicateKeySuffixSeparator creates invalid annotation keys\n },\n additionalProperties: {\n 'ui:field': AdditionalPropertiesSchemaField,\n },\n }\n}\n/**\n * Strips null values from arrays in the provided form data. If the array is empty after\n * removing null values, the key is removed from the form data.\n *\n * This allows users to submit forms with empty array fields (SWC-5762)\n */\nexport function dropNullishArrayValues(\n formData: Record<string, unknown>,\n): Record<string, unknown> {\n const newFormData: Record<string, unknown> = {}\n Object.keys(formData).forEach(key => {\n let value = formData[key]\n if (Array.isArray(value)) {\n value = value.filter((item: any) => item != null)\n if (!isEmpty(value)) {\n newFormData[key] = value\n }\n } else {\n newFormData[key] = value\n }\n })\n return newFormData\n}\n\nexport function dropNullValues(\n formData: Record<string, unknown> = {},\n): Record<string, unknown> {\n return Object.keys(formData).reduce(\n (acc: Record<string, unknown>, key: string) => {\n if (formData[key] !== null) {\n acc[key] = formData[key]\n }\n return acc\n },\n {},\n )\n}\n\n/**\n * Inspects the property of the AjvError and modifies it to be comparable to simple key strings, like entity property keys.\n * @param error\n * @returns\n */\nexport function getFriendlyPropertyName(error: RJSFValidationError): string {\n if (error.property?.startsWith('[')) {\n // Additional properties are surrounded by brackets and quotations, so let's remove them\n return error.property.substring(2, error.property.length - 2)\n } else if (error.property?.startsWith('.')) {\n return error.property.substring(1)\n } else {\n return error.property || ''\n }\n}\n\nexport function transformErrors(\n errors: RJSFValidationError[],\n): RJSFValidationError[] {\n // Transform the errors in the following ways:\n // - Simplify the set of errors when failing to select an enumeration defined with an anyOf (SWC-5724)\n // - Show a custom error message when using a property that collides with an internal entity property (SWC-5678)\n\n // Fixing anyOf errors\n // Group the errors by the property that the error applies to\n const grouped = groupBy(errors, error => error.property)\n Object.keys(grouped).map(property => {\n const errorGroup = grouped[property]\n\n // First, see if it is an anyOf error\n const hasAnyOfError = errorGroup.some(\n e => e.message === 'should match some schema in anyOf',\n )\n\n // We determine if it's an anyOf *enum* error if all error messages in the property match one of these three messages:\n const isEnumError =\n hasAnyOfError &&\n errorGroup.every(error => {\n if (error.message === 'should be string') {\n return true\n } else if (error.message === 'should be equal to constant') {\n return true\n } else if (error.message === 'should match some schema in anyOf') {\n return true\n } else {\n return false\n }\n })\n\n // If it's an anyOf enum error, we just modify the first message and drop the rest\n if (isEnumError && errorGroup.length > 0) {\n errorGroup[0].message = 'should be equal to one of the allowed values'\n grouped[property] = [errorGroup[0]]\n }\n })\n\n // Ungroup the errors after potentially modifying them\n errors = flatMap(grouped)\n\n // Return the transformed errors.\n return errors\n}\n\n/**\n * Custom annotations in Synapse are always arrays. This function converts initial data to be an array type.\n * If the initial data is an array, return the data itself.\n * Otherwise, wrap the data in an array.\n */\nexport function convertToArray<T>(value: T): Array<unknown> {\n if (Array.isArray(value)) {\n return value\n } else {\n return [value]\n }\n}\n\n/**\n * Returns true if the default behavior of the form should be to live validate\n * @param existingAnnotations\n * @param validationSchema\n */\nexport function shouldLiveValidate(\n existingAnnotations: Record<string, unknown> | undefined,\n validationSchema: JSONSchema7 | undefined,\n): boolean {\n const hasExistingAnnotations =\n existingAnnotations && Object.keys(existingAnnotations).length > 0\n return Boolean(hasExistingAnnotations && validationSchema)\n}\n\n/**\n * Returns all possible properties in the schema, including those in nested schemas/definitions. Note that this function\n * only works for 'flat objects', i.e. the schema must\n * - define an object AND\n * - the properties of the object cannot be objects\n * which is compatible with how Synapse Annotations are defined.\n * @param resolvedSchema\n */\nexport function getPossibleTopLevelPropertiesInObjectSchema(\n resolvedSchema: JSONSchema7,\n): JSONSchema7['properties'] {\n const allProperties = {}\n const foundPropertiesObjects = JSONPath({\n path: '$..properties',\n json: resolvedSchema,\n })\n for (const propertiesObject of foundPropertiesObjects) {\n Object.assign(allProperties, propertiesObject)\n }\n // Use the schema.properties to override any properties defined in definitions\n if (isObject(resolvedSchema.properties)) {\n Object.assign(allProperties, resolvedSchema.properties)\n }\n return allProperties\n}\n\n/**\n * Get the Synapse entity schema ID for a particular concrete type.\n * @param concreteType\n */\nexport function getSchemaIdForConcreteType(\n concreteType: string,\n): string | null {\n if (!concreteType || !concreteType.startsWith('org.sagebionetworks')) {\n return null\n }\n // e.g. 'org.sagebionetworks.repo.model.FileEntity' -> 'org.sagebionetworks-repo.model.FileEntity'\n return (\n 'org.sagebionetworks-' +\n concreteType.substring('org.sagebionetworks'.length + 1)\n )\n}\n\n/**\n * Custom string translator for react-jsonschema-form.\n * Overrides the translation for \"NewStringDefault\" by returning an empty string.\n * For all other keys, falls back to the default English string translator.\n *\n * @param stringToTranslate\n * @param params - Optional parameters used to format the translated string.\n * @returns - The translated string.\n */\nexport function customTranslateString(\n stringToTranslate: TranslatableString,\n params?: string[],\n): string {\n switch (stringToTranslate) {\n case TranslatableString.NewStringDefault:\n return ''\n default:\n return englishStringTranslator(stringToTranslate, params)\n }\n}\n"],"mappings":";;;;;AAoBA,SAAgB,EACd,IAAgC,EAAE,EAClC,IAA4B,EAAE,EACjB;CACb,IAAM,IACJ,EAA4C,EAAa;AAE3D,QAAO;EACL,SAAS;EAGT,GAAG;EAEH,aAAa;GACX,GAAG,EAAa;GAChB,GAAG,EAAiB;GACrB;EACD,OAAO,CACL,GAAI,EAAiB,SAAS,EAAE,EAEhC;GACE,MAAM;GACN,YAAY;GACb,CACF;EAED,sBAAsB;EACvB;;AAOH,SAAgB,EACd,IAAwD,EAAE,EAC1D;AAMA,QAAO;EACL,GALyC,OAAO,KAChD,EACD,CAAC,QAAQ,GAAM,OAAU;GAAE,GAAG;IAAO,IAAO,EAAE,aAAa,UAAU;GAAE,GAAG,EAAE,CAGxE;EACH,oBAAoB;GAClB,UAAU;GACV,6BAA6B;GAC9B;EACD,sBAAsB,EACpB,YAAY,GACb;EACF;;AAQH,SAAgB,EACd,GACyB;CACzB,IAAM,IAAuC,EAAE;AAY/C,QAXA,OAAO,KAAK,EAAS,CAAC,SAAQ,MAAO;EACnC,IAAI,IAAQ,EAAS;AACrB,EAAI,MAAM,QAAQ,EAAM,IACtB,IAAQ,EAAM,QAAQ,MAAc,KAAQ,KAAK,EAC5C,EAAQ,EAAM,KACjB,EAAY,KAAO,MAGrB,EAAY,KAAO;GAErB,EACK;;AAGT,SAAgB,EACd,IAAoC,EAAE,EACb;AACzB,QAAO,OAAO,KAAK,EAAS,CAAC,QAC1B,GAA8B,OACzB,EAAS,OAAS,SACpB,EAAI,KAAO,EAAS,KAEf,IAET,EAAE,CACH;;AAQH,SAAgB,EAAwB,GAAoC;AAOxE,QANE,EAAM,UAAU,WAAW,IAAI,GAE1B,EAAM,SAAS,UAAU,GAAG,EAAM,SAAS,SAAS,EAAE,GACpD,EAAM,UAAU,WAAW,IAAI,GACjC,EAAM,SAAS,UAAU,EAAE,GAE3B,EAAM,YAAY;;AAI7B,SAAgB,EACd,GACuB;CAOvB,IAAM,IAAU,EAAQ,IAAQ,MAAS,EAAM,SAAS;AAmCxD,QAlCA,OAAO,KAAK,EAAQ,CAAC,KAAI,MAAY;EACnC,IAAM,IAAa,EAAQ;AAuB3B,EApBsB,EAAW,MAC/B,MAAK,EAAE,YAAY,oCAKnB,IACA,EAAW,OAAM,MACX,EAAM,YAAY,sBAEX,EAAM,YAAY,gCADpB,KAGE,EAAM,YAAY,oCAK7B,IAGe,EAAW,SAAS,MACrC,EAAW,GAAG,UAAU,gDACxB,EAAQ,KAAY,CAAC,EAAW,GAAG;GAErC,EAGF,IAAS,EAAQ,EAAQ,EAGlB;;AAQT,SAAgB,EAAkB,GAA0B;AAIxD,QAHE,MAAM,QAAQ,EAAM,GACf,IAEA,CAAC,EAAM;;AASlB,SAAgB,EACd,GACA,GACS;AAGT,QAAO,GADL,KAAuB,OAAO,KAAK,EAAoB,CAAC,SAAS,KAC1B;;AAW3C,SAAgB,EACd,GAC2B;CAC3B,IAAM,IAAgB,EAAE,EAClB,IAAyB,EAAS;EACtC,MAAM;EACN,MAAM;EACP,CAAC;AACF,MAAK,IAAM,KAAoB,EAC7B,QAAO,OAAO,GAAe,EAAiB;AAMhD,QAHI,EAAS,EAAe,WAAW,IACrC,OAAO,OAAO,GAAe,EAAe,WAAW,EAElD;;AAOT,SAAgB,EACd,GACe;AAKf,QAJI,CAAC,KAAgB,CAAC,EAAa,WAAW,sBAAsB,GAC3D,OAIP,yBACA,EAAa,UAAU,GAAiC;;AAa5D,SAAgB,EACd,GACA,GACQ;AACR,SAAQ,GAAR;EACE,KAAK,EAAmB,iBACtB,QAAO;EACT,QACE,QAAO,EAAwB,GAAmB,EAAO"}
1
+ {"version":3,"file":"AnnotationEditorUtils.js","names":[],"sources":["../../../src/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.ts"],"sourcesContent":["import { AdditionalPropertiesSchemaField } from '@/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField'\nimport {\n englishStringTranslator,\n RJSFValidationError,\n TranslatableString,\n} from '@rjsf/utils'\nimport { JSONSchema7 } from 'json-schema'\nimport { JSONPath } from 'jsonpath-plus'\nimport { flatMap, groupBy, isEmpty, isObject } from 'lodash-es'\n\n/**\n * Generates a JSON schema for the form UI based on the provided validation schema and entity schema base properties.\n *\n * To meet the requirements of the desired form to display, we cannot simply show the validation schema. This is because\n * validation schemas may use conditional logic based on default entity properties (e.g. concreteType) to show/hide fields.\n * This method combines the validation schema with the entity schema base properties to create a new schema that will yield\n * the expected form with desired logic.\n * @param validationSchema\n * @param entitySchema\n */\nexport function getJsonSchemaForForm(\n validationSchema: JSONSchema7 = {},\n entitySchema: JSONSchema7 = {},\n): JSONSchema7 {\n const entitySchemaProperties =\n getPossibleTopLevelPropertiesInObjectSchema(entitySchema)\n\n return {\n $schema: 'http://json-schema.org/draft-07/schema#',\n // Spread the validation schema to ensure all other references are included\n // Top level properties like \"$defs\" get lost if we simply put the entire schema in `allOf`\n ...validationSchema,\n // JSON Schemas for Synapse types use \"definitions\", so it should be manually merged.\n definitions: {\n ...entitySchema.definitions,\n ...validationSchema.definitions,\n },\n allOf: [\n ...(validationSchema.allOf || []),\n // Add in the entity properties\n {\n type: 'object',\n properties: entitySchemaProperties,\n },\n ],\n // Always allow adding additional annotations (though it may violate the validationSchema)\n additionalProperties: true,\n }\n}\n\n/**\n * Generates the UiSchema for the annotations editor.\n * @param entitySchemaBaseProperties\n */\nexport function getUiSchemaForForm(\n entitySchemaBaseProperties: JSONSchema7['properties'] = {},\n) {\n // Each 'base' entity field (id, name, concreteType, etc.) should be hidden\n const uiSchemaWithHiddenEntityProperties = Object.keys(\n entitySchemaBaseProperties,\n ).reduce((prev, curr) => ({ ...prev, [curr]: { 'ui:widget': 'hidden' } }), {})\n\n return {\n ...uiSchemaWithHiddenEntityProperties,\n 'ui:globalOptions': {\n copyable: false, // copy button clutters the UI, is not very useful since schemas are flat objects\n duplicateKeySuffixSeparator: '_', // the default duplicateKeySuffixSeparator creates invalid annotation keys\n },\n additionalProperties: {\n 'ui:field': AdditionalPropertiesSchemaField,\n },\n }\n}\n/**\n * Strips null values from arrays in the provided form data. If the array is empty after\n * removing null values, the key is removed from the form data.\n *\n * This allows users to submit forms with empty array fields (SWC-5762)\n */\nexport function dropNullishArrayValues(\n formData: Record<string, unknown>,\n): Record<string, unknown> {\n const newFormData: Record<string, unknown> = {}\n Object.keys(formData).forEach(key => {\n let value = formData[key]\n if (Array.isArray(value)) {\n value = value.filter((item: any) => item != null)\n if (!isEmpty(value)) {\n newFormData[key] = value\n }\n } else {\n newFormData[key] = value\n }\n })\n return newFormData\n}\n\nexport function dropNullValues(\n formData: Record<string, unknown> = {},\n): Record<string, unknown> {\n return Object.keys(formData).reduce(\n (acc: Record<string, unknown>, key: string) => {\n if (formData[key] !== null) {\n acc[key] = formData[key]\n }\n return acc\n },\n {},\n )\n}\n\n/**\n * Inspects the property of the AjvError and modifies it to be comparable to simple key strings, like entity property keys.\n * @param error\n * @returns\n */\nexport function getFriendlyPropertyName(error: RJSFValidationError): string {\n if (error.property?.startsWith('[')) {\n // Additional properties are surrounded by brackets and quotations, so let's remove them\n return error.property.substring(2, error.property.length - 2)\n } else if (error.property?.startsWith('.')) {\n return error.property.substring(1)\n } else {\n return error.property || ''\n }\n}\n\nexport function transformErrors(\n errors: RJSFValidationError[],\n): RJSFValidationError[] {\n // Transform the errors in the following ways:\n // - Simplify the set of errors when failing to select an enumeration defined with an anyOf (SWC-5724)\n // - Show a custom error message when using a property that collides with an internal entity property (SWC-5678)\n\n // Fixing anyOf errors\n // Group the errors by the property that the error applies to\n const grouped = groupBy(errors, error => error.property)\n Object.keys(grouped).map(property => {\n const errorGroup = grouped[property]\n\n // First, see if it is an anyOf error\n const hasAnyOfError = errorGroup.some(\n e => e.message === 'should match some schema in anyOf',\n )\n\n // We determine if it's an anyOf *enum* error if all error messages in the property match one of these three messages:\n const isEnumError =\n hasAnyOfError &&\n errorGroup.every(error => {\n if (error.message === 'should be string') {\n return true\n } else if (error.message === 'should be equal to constant') {\n return true\n } else if (error.message === 'should match some schema in anyOf') {\n return true\n } else {\n return false\n }\n })\n\n // If it's an anyOf enum error, we just modify the first message and drop the rest\n if (isEnumError && errorGroup.length > 0) {\n errorGroup[0].message = 'should be equal to one of the allowed values'\n grouped[property] = [errorGroup[0]]\n }\n })\n\n // Ungroup the errors after potentially modifying them\n errors = flatMap(grouped)\n\n // Return the transformed errors.\n return errors\n}\n\n/**\n * Custom annotations in Synapse are always arrays. This function converts initial data to be an array type.\n * If the initial data is an array, return the data itself.\n * Otherwise, wrap the data in an array.\n */\nexport function convertToArray<T>(value: T): Array<unknown> {\n if (Array.isArray(value)) {\n return value\n } else {\n return [value]\n }\n}\n\n/**\n * Returns true if the default behavior of the form should be to live validate\n * @param existingAnnotations\n * @param validationSchema\n */\nexport function shouldLiveValidate(\n existingAnnotations: Record<string, unknown> | undefined,\n validationSchema: JSONSchema7 | undefined,\n): boolean {\n const hasExistingAnnotations =\n existingAnnotations && Object.keys(existingAnnotations).length > 0\n return Boolean(hasExistingAnnotations && validationSchema)\n}\n\n/**\n * Returns all possible properties in the schema, including those in nested schemas/definitions. Note that this function\n * only works for 'flat objects', i.e. the schema must\n * - define an object AND\n * - the properties of the object cannot be objects\n * which is compatible with how Synapse Annotations are defined.\n * @param resolvedSchema\n */\nexport function getPossibleTopLevelPropertiesInObjectSchema(\n resolvedSchema: JSONSchema7,\n): JSONSchema7['properties'] {\n const allProperties = {}\n const foundPropertiesObjects = JSONPath({\n path: '$..properties',\n json: resolvedSchema,\n })\n for (const propertiesObject of foundPropertiesObjects) {\n Object.assign(allProperties, propertiesObject)\n }\n // Use the schema.properties to override any properties defined in definitions\n if (isObject(resolvedSchema.properties)) {\n Object.assign(allProperties, resolvedSchema.properties)\n }\n return allProperties\n}\n\n/**\n * Get the Synapse entity schema ID for a particular concrete type.\n * @param concreteType\n */\nexport function getSchemaIdForConcreteType(\n concreteType: string,\n): string | null {\n if (!concreteType || !concreteType.startsWith('org.sagebionetworks')) {\n return null\n }\n // e.g. 'org.sagebionetworks.repo.model.FileEntity' -> 'org.sagebionetworks-repo.model.FileEntity'\n return (\n 'org.sagebionetworks-' +\n concreteType.substring('org.sagebionetworks'.length + 1)\n )\n}\n\n/**\n * Custom string translator for react-jsonschema-form.\n * Overrides the translation for \"NewStringDefault\" by returning an empty string.\n * For all other keys, falls back to the default English string translator.\n *\n * @param stringToTranslate\n * @param params - Optional parameters used to format the translated string.\n * @returns - The translated string.\n */\nexport function customTranslateString(\n stringToTranslate: TranslatableString,\n params?: string[],\n): string {\n switch (stringToTranslate) {\n case TranslatableString.NewStringDefault:\n return ''\n default:\n return englishStringTranslator(stringToTranslate, params)\n }\n}\n"],"mappings":";;;;;AAoBA,SAAgB,EACd,IAAgC,CAAC,GACjC,IAA4B,CAAC,GAChB;CACb,IAAM,IACJ,EAA4C,CAAY;CAE1D,OAAO;EACL,SAAS;EAGT,GAAG;EAEH,aAAa;GACX,GAAG,EAAa;GAChB,GAAG,EAAiB;EACtB;EACA,OAAO,CACL,GAAI,EAAiB,SAAS,CAAC,GAE/B;GACE,MAAM;GACN,YAAY;EACd,CACF;EAEA,sBAAsB;CACxB;AACF;AAMA,SAAgB,EACd,IAAwD,CAAC,GACzD;CAMA,OAAO;EACL,GALyC,OAAO,KAChD,CACF,EAAE,QAAQ,GAAM,OAAU;GAAE,GAAG;IAAO,IAAO,EAAE,aAAa,SAAS;EAAE,IAAI,CAAC,CAGvE;EACH,oBAAoB;GAClB,UAAU;GACV,6BAA6B;EAC/B;EACA,sBAAsB,EACpB,YAAY,EACd;CACF;AACF;AAOA,SAAgB,EACd,GACyB;CACzB,IAAM,IAAuC,CAAC;CAY9C,OAXA,OAAO,KAAK,CAAQ,EAAE,SAAQ,MAAO;EACnC,IAAI,IAAQ,EAAS;EACrB,AAAI,MAAM,QAAQ,CAAK,KACrB,IAAQ,EAAM,QAAQ,MAAc,KAAQ,IAAI,GAC3C,EAAQ,CAAK,MAChB,EAAY,KAAO,MAGrB,EAAY,KAAO;CAEvB,CAAC,GACM;AACT;AAEA,SAAgB,EACd,IAAoC,CAAC,GACZ;CACzB,OAAO,OAAO,KAAK,CAAQ,EAAE,QAC1B,GAA8B,OACzB,EAAS,OAAS,SACpB,EAAI,KAAO,EAAS,KAEf,IAET,CAAC,CACH;AACF;AAOA,SAAgB,EAAwB,GAAoC;CAOxE,OANE,EAAM,UAAU,WAAW,GAAG,IAEzB,EAAM,SAAS,UAAU,GAAG,EAAM,SAAS,SAAS,CAAC,IACnD,EAAM,UAAU,WAAW,GAAG,IAChC,EAAM,SAAS,UAAU,CAAC,IAE1B,EAAM,YAAY;AAE7B;AAEA,SAAgB,EACd,GACuB;CAOvB,IAAM,IAAU,EAAQ,IAAQ,MAAS,EAAM,QAAQ;CAmCvD,OAlCA,OAAO,KAAK,CAAO,EAAE,KAAI,MAAY;EACnC,IAAM,IAAa,EAAQ;EAuB3B,AApBsB,EAAW,MAC/B,MAAK,EAAE,YAAY,mCAKnB,KACA,EAAW,OAAM,MACX,EAAM,YAAY,sBAEX,EAAM,YAAY,gCADpB,KAGE,EAAM,YAAY,mCAK9B,KAGgB,EAAW,SAAS,MACrC,EAAW,GAAG,UAAU,gDACxB,EAAQ,KAAY,CAAC,EAAW,EAAE;CAEtC,CAAC,GAGD,IAAS,EAAQ,CAAO,GAGjB;AACT;AAOA,SAAgB,EAAkB,GAA0B;CAIxD,OAHE,MAAM,QAAQ,CAAK,IACd,IAEA,CAAC,CAAK;AAEjB;AAOA,SAAgB,EACd,GACA,GACS;CAGT,OAAO,GADL,KAAuB,OAAO,KAAK,CAAmB,EAAE,SAAS,KAC1B;AAC3C;AAUA,SAAgB,EACd,GAC2B;CAC3B,IAAM,IAAgB,CAAC,GACjB,IAAyB,EAAS;EACtC,MAAM;EACN,MAAM;CACR,CAAC;CACD,KAAK,IAAM,KAAoB,GAC7B,OAAO,OAAO,GAAe,CAAgB;CAM/C,OAHI,EAAS,EAAe,UAAU,KACpC,OAAO,OAAO,GAAe,EAAe,UAAU,GAEjD;AACT;AAMA,SAAgB,EACd,GACe;CAKf,OAJI,CAAC,KAAgB,CAAC,EAAa,WAAW,qBAAqB,IAC1D,OAIP,yBACA,EAAa,UAAU,EAAgC;AAE3D;AAWA,SAAgB,EACd,GACA,GACQ;CACR,QAAQ,GAAR;EACE,KAAK,EAAmB,kBACtB,OAAO;EACT,SACE,OAAO,EAAwB,GAAmB,CAAM;CAC5D;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaDrivenAnnotationEditor.js","names":[],"sources":["../../../src/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.tsx"],"sourcesContent":["import AddToList from '@/assets/icons/AddToList'\nimport {\n useGetJson,\n useGetSchema,\n useGetSchemaBinding,\n useUpdateViaJson,\n} from '@/synapse-queries'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport { Alert, Box, Divider, Link, Typography } from '@mui/material'\nimport RJSF from '@rjsf/core'\nimport { RJSFValidationError } from '@rjsf/utils'\nimport validator from '@rjsf/validator-ajv8'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { EntityJson } from '@sage-bionetworks/synapse-types'\nimport { JSONSchema7 } from 'json-schema'\nimport { omitBy } from 'lodash-es'\nimport isEmpty from 'lodash-es/isEmpty'\nimport noop from 'lodash-es/noop'\nimport { RefObject, useEffect, useMemo, useRef, useState } from 'react'\nimport {\n ConfirmationButtons,\n ConfirmationDialog,\n} from '../ConfirmationDialog/ConfirmationDialog'\nimport { JsonSchemaForm } from '../JsonSchemaForm/JsonSchemaForm'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport {\n dropNullishArrayValues,\n dropNullValues,\n getPossibleTopLevelPropertiesInObjectSchema,\n getFriendlyPropertyName,\n getJsonSchemaForForm,\n getSchemaIdForConcreteType,\n transformErrors,\n getUiSchemaForForm,\n shouldLiveValidate,\n customTranslateString,\n} from './AnnotationEditorUtils'\nimport SynapseAnnotationsRJSFObjectField from './field/SynapseAnnotationsRJSFObjectField'\nimport { ObjectFieldTemplate } from './template/ObjectFieldTemplate'\nimport SynapseAnnotationsWrapIfAdditionalTemplate from './template/SynapseAnnotationsWrapIfAdditionalTemplate'\nimport TextWidget from './widget/TextWidget'\n\nexport type SchemaDrivenAnnotationEditorProps = {\n /** The entity whose annotations should be edited with the form */\n entityId?: string\n /** If no entity ID is supplied, the schema to use for the form */\n schemaId?: string\n /** May be used to directly provide a JSON Schema to use for the form */\n validationSchema?: JSONSchema7\n /** Optionally supply a ref to the form to handle submission externally with `formRef.current.submit()`. */\n formRef?: RefObject<RJSF | null>\n /** Provide live input validation. This can cause performance degradation. By default, liveValidate will be true if an entity with a schema and existing annotations is being edited */\n liveValidate?: boolean\n /** Invoked after a successful form submission */\n onSuccess?: () => void\n /** If defined and formRef is not supplied, shows a 'Cancel' button and runs this effect on click */\n onCancel?: () => void\n /** Passes new form data upon each change to the form */\n onChange?: (annotations: Record<string, unknown>) => void\n /** If true, the editor will not render its own submit UI. */\n hideActions?: boolean\n}\n\n/**\n * Cleans the formData to remove values that are invalid for Synapse Annotations\n * @param formData\n * @param dropNullishValuesInArrays\n */\nfunction cleanFormData(\n formData: Record<string, unknown> | undefined,\n dropNullishValuesInArrays: boolean,\n) {\n let cleanedFormData = dropNullValues(formData)\n if (dropNullishValuesInArrays) {\n cleanedFormData = dropNullishArrayValues(cleanedFormData)\n }\n return cleanedFormData\n}\n\n/**\n * Renders a form for editing an entity's annotations. The component also supports supplying just a schema ID,\n * but work to support annotation flows without an entity (i.e. before creating entities) is not yet complete.\n */\nexport function SchemaDrivenAnnotationEditor(\n props: SchemaDrivenAnnotationEditorProps,\n) {\n const {\n entityId,\n schemaId,\n validationSchema: validationSchemaFromProps,\n liveValidate: liveValidateFromProps,\n onSuccess = () => {\n /* no-op */\n },\n onCancel,\n formRef: formRefFromParent,\n onChange = noop,\n hideActions = false,\n } = props\n const localRef = useRef<RJSF>(null)\n const ref = formRefFromParent ?? localRef\n\n // Client-side validation errors\n const [validationError, setValidationError] = useState<\n RJSFValidationError[] | undefined\n >(undefined)\n\n // Errors from the backend response\n const [submissionError, setSubmissionError] = useState<\n SynapseClientError | undefined\n >(undefined)\n const [showSubmissionError, setShowSubmissionError] = useState(false)\n\n const [showConfirmation, setShowConfirmation] = useState(false)\n\n const { data } = useGetJson(\n entityId!,\n undefined,\n // Derived annotations will be precomputed and displayed as placeholders in the form\n false,\n {\n // Metadata is being edited, so don't refetch\n staleTime: Infinity,\n enabled: !!entityId,\n throwOnError: true,\n },\n )\n\n const entityJson = data?.entityMetadata\n const annotations = data?.annotations\n\n // Annotation fields fetched and modified via the form\n const [formData, setFormData] = useState<Record<string, unknown> | undefined>(\n undefined,\n )\n\n // Set initial form data when the entity or its annotations change\n useEffect(() => {\n if (data?.entity) {\n const formData = data.entity\n const hasAnnotations = annotations && Object.keys(annotations).length > 0\n\n const newFormData = !hasAnnotations\n ? { ...formData, newKey: [''] }\n : formData\n\n setFormData(newFormData)\n }\n }, [data?.entity, annotations])\n\n const { data: schema, isLoading: isLoadingBinding } = useGetSchemaBinding(\n entityId!,\n {\n enabled: !!entityId,\n refetchOnWindowFocus: false,\n throwOnError: true,\n },\n )\n\n // The full schema which is bound to the entity\n const { data: fetchedValidationSchema, isLoading: isLoadingSchema } =\n useGetSchema(schemaId ?? schema?.jsonSchemaVersionInfo.$id ?? '', {\n enabled: !!schemaId || !!schema,\n throwOnError: true,\n })\n const validationSchema = validationSchemaFromProps || fetchedValidationSchema\n\n const concreteTypeSchemaId = getSchemaIdForConcreteType(\n entityJson?.concreteType ?? '',\n )\n // The schema for the entity type (e.g. FileEntity, TableEntity, etc.)\n const { data: schemaForEntityType, isLoading: isLoadingEntityTypeSchema } =\n useGetSchema(concreteTypeSchemaId ?? '', {\n enabled: !!concreteTypeSchemaId,\n throwOnError: true,\n })\n\n const entitySchemaBaseProperties: JSONSchema7['properties'] = useMemo(\n () =>\n getPossibleTopLevelPropertiesInObjectSchema(schemaForEntityType ?? {}),\n [schemaForEntityType],\n )\n\n const formSchema = useMemo(\n () => getJsonSchemaForForm(validationSchema, schemaForEntityType),\n [validationSchema, schemaForEntityType],\n )\n\n const uiSchema = useMemo(\n () => getUiSchemaForForm(entitySchemaBaseProperties),\n [entitySchemaBaseProperties],\n )\n\n const isLoading =\n isLoadingBinding || isLoadingSchema || isLoadingEntityTypeSchema\n\n const { mutate, isPending: updateIsPending } = useUpdateViaJson({\n onSuccess: () => {\n onSuccess()\n },\n onError: error => {\n setSubmissionError(error)\n setShowSubmissionError(true)\n },\n })\n\n function submitChangedEntity() {\n mutate({\n ...cleanFormData(formData, true),\n ...entityJson,\n } as EntityJson)\n }\n\n const liveValidate =\n liveValidateFromProps ?? shouldLiveValidate(annotations, validationSchema)\n\n const formDataHasNoAnnotations =\n entityJson &&\n isEmpty(\n omitBy(formData, (_value, key) =>\n Object.keys(entityJson).find(k => k === key),\n ),\n )\n\n const showHasNoAnnotationsAlert = schema === null && formDataHasNoAnnotations\n\n return (\n <div className=\"JsonSchemaFormContainer\">\n {isLoading ? (\n <div className=\"LoadingPlaceholder\">\n <SynapseSpinner size={30} />\n </div>\n ) : (\n <>\n {entityJson && schema && (\n <Alert severity=\"info\" sx={{ mb: 2 }}>\n <b>{entityJson.name}</b> requires scientific annotations specified\n by <b>{schema.jsonSchemaVersionInfo.$id}</b>\n {'. '}\n <b>\n <Link\n href={`${getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n )}/repo/v1/schema/type/registered/${\n schema.jsonSchemaVersionInfo.$id\n }`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n View required schema (JSON)\n </Link>\n </b>\n </Alert>\n )}\n {showHasNoAnnotationsAlert && (\n <Alert severity=\"info\">\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n }}\n >\n <Typography variant={'smallText1'}>\n <b>{entityJson.name}</b> has no annotations. Click the{' '}\n </Typography>\n <AddToList />\n <Typography variant={'smallText1'}>\n button to annotate.\n </Typography>\n </Box>\n </Alert>\n )}\n <JsonSchemaForm\n validator={validator}\n liveValidate={liveValidate}\n noHtml5Validate={true}\n formRef={ref}\n disabled={updateIsPending}\n translateString={customTranslateString}\n formContext={{\n showDerivedAnnotationPlaceholder: true,\n descriptionVariant: 'expand',\n descriptionFormat: 'table',\n allowFreeSoloEnum: true,\n }}\n experimental_defaultFormStateBehavior={{\n emptyObjectFields: 'skipDefaults',\n }}\n fields={{\n ObjectField: SynapseAnnotationsRJSFObjectField,\n }}\n templates={{\n ObjectFieldTemplate: ObjectFieldTemplate,\n WrapIfAdditionalTemplate:\n SynapseAnnotationsWrapIfAdditionalTemplate,\n }}\n widgets={{\n TextWidget: TextWidget,\n }}\n schema={formSchema}\n uiSchema={uiSchema}\n transformErrors={transformErrors}\n formData={formData}\n onChange={({ formData }) => {\n onChange(formData)\n setFormData(formData)\n setValidationError(undefined)\n }}\n onBlur={() => {\n setFormData(\n // Clean the formData onBlur to remove null values that we will need to strip before submission\n // This will ensure that the user gets accurate validation information since the data will match what the backend will receive\n cleanFormData(\n formData,\n // Don't remove null values in arrays--the fields will disappear, which the user probably does not want\n false,\n ),\n )\n }}\n onSubmit={({ formData, errors }, event) => {\n event.preventDefault()\n if (errors && errors.length > 0) {\n setValidationError(errors)\n }\n setShowSubmissionError(false)\n setFormData(formData)\n submitChangedEntity()\n }}\n onError={(errors: RJSFValidationError[]) => {\n // invoked when submit is clicked and there are client-side validation errors\n setValidationError(errors)\n if ((validationError || liveValidate) && entityId) {\n setShowConfirmation(true)\n }\n }}\n >\n {submissionError && showSubmissionError && (\n <Alert severity=\"error\" sx={{ my: 2 }}>\n Annotations could not be updated: {submissionError.reason}\n </Alert>\n )}\n {!hideActions && (\n <>\n <Divider sx={{ my: 2 }} />\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n gridRowStart: 5,\n }}\n >\n <ConfirmationButtons\n hasCancelButton={onCancel !== undefined}\n onCancel={() => {\n if (onCancel) {\n onCancel()\n }\n }}\n onConfirm={() => {\n ref.current!.formElement.current.requestSubmit()\n }}\n confirmButtonProps={{\n children: entityId ? 'Save' : 'Validate',\n }}\n />\n </Box>\n </>\n )}\n </JsonSchemaForm>\n {showConfirmation && (\n <ConfirmationDialog\n open={true}\n onConfirm={() => {\n submitChangedEntity()\n setShowConfirmation(false)\n }}\n onCancel={() => {\n setShowConfirmation(false)\n }}\n title=\"Update Annotations\"\n content={\n <>\n <div>\n The following errors exist with the annotations you entered:\n </div>\n <div>\n <ul>\n {(validationError ?? []).map(\n (e: RJSFValidationError, index: number) => (\n <li key={index}>\n <b>{`${getFriendlyPropertyName(e)}: `}</b>{' '}\n {`${e.message}`}\n </li>\n ),\n )}\n </ul>\n </div>\n <div>\n Are you sure you want to save the invalid annotations?\n </div>\n </>\n }\n confirmButtonProps={{\n children: 'Save',\n }}\n />\n )}\n </>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaDrivenAnnotationEditor.js","names":[],"sources":["../../../src/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.tsx"],"sourcesContent":["import AddToList from '@/assets/icons/AddToList'\nimport {\n useGetJson,\n useGetSchema,\n useGetSchemaBinding,\n useUpdateViaJson,\n} from '@/synapse-queries'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport { Alert, Box, Divider, Link, Typography } from '@mui/material'\nimport RJSF from '@rjsf/core'\nimport { RJSFValidationError } from '@rjsf/utils'\nimport validator from '@rjsf/validator-ajv8'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { EntityJson } from '@sage-bionetworks/synapse-types'\nimport { JSONSchema7 } from 'json-schema'\nimport { omitBy } from 'lodash-es'\nimport isEmpty from 'lodash-es/isEmpty'\nimport noop from 'lodash-es/noop'\nimport { RefObject, useEffect, useMemo, useRef, useState } from 'react'\nimport {\n ConfirmationButtons,\n ConfirmationDialog,\n} from '../ConfirmationDialog/ConfirmationDialog'\nimport { JsonSchemaForm } from '../JsonSchemaForm/JsonSchemaForm'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport {\n dropNullishArrayValues,\n dropNullValues,\n getPossibleTopLevelPropertiesInObjectSchema,\n getFriendlyPropertyName,\n getJsonSchemaForForm,\n getSchemaIdForConcreteType,\n transformErrors,\n getUiSchemaForForm,\n shouldLiveValidate,\n customTranslateString,\n} from './AnnotationEditorUtils'\nimport SynapseAnnotationsRJSFObjectField from './field/SynapseAnnotationsRJSFObjectField'\nimport { ObjectFieldTemplate } from './template/ObjectFieldTemplate'\nimport SynapseAnnotationsWrapIfAdditionalTemplate from './template/SynapseAnnotationsWrapIfAdditionalTemplate'\nimport TextWidget from './widget/TextWidget'\n\nexport type SchemaDrivenAnnotationEditorProps = {\n /** The entity whose annotations should be edited with the form */\n entityId?: string\n /** If no entity ID is supplied, the schema to use for the form */\n schemaId?: string\n /** May be used to directly provide a JSON Schema to use for the form */\n validationSchema?: JSONSchema7\n /** Optionally supply a ref to the form to handle submission externally with `formRef.current.submit()`. */\n formRef?: RefObject<RJSF | null>\n /** Provide live input validation. This can cause performance degradation. By default, liveValidate will be true if an entity with a schema and existing annotations is being edited */\n liveValidate?: boolean\n /** Invoked after a successful form submission */\n onSuccess?: () => void\n /** If defined and formRef is not supplied, shows a 'Cancel' button and runs this effect on click */\n onCancel?: () => void\n /** Passes new form data upon each change to the form */\n onChange?: (annotations: Record<string, unknown>) => void\n /** If true, the editor will not render its own submit UI. */\n hideActions?: boolean\n}\n\n/**\n * Cleans the formData to remove values that are invalid for Synapse Annotations\n * @param formData\n * @param dropNullishValuesInArrays\n */\nfunction cleanFormData(\n formData: Record<string, unknown> | undefined,\n dropNullishValuesInArrays: boolean,\n) {\n let cleanedFormData = dropNullValues(formData)\n if (dropNullishValuesInArrays) {\n cleanedFormData = dropNullishArrayValues(cleanedFormData)\n }\n return cleanedFormData\n}\n\n/**\n * Renders a form for editing an entity's annotations. The component also supports supplying just a schema ID,\n * but work to support annotation flows without an entity (i.e. before creating entities) is not yet complete.\n */\nexport function SchemaDrivenAnnotationEditor(\n props: SchemaDrivenAnnotationEditorProps,\n) {\n const {\n entityId,\n schemaId,\n validationSchema: validationSchemaFromProps,\n liveValidate: liveValidateFromProps,\n onSuccess = () => {\n /* no-op */\n },\n onCancel,\n formRef: formRefFromParent,\n onChange = noop,\n hideActions = false,\n } = props\n const localRef = useRef<RJSF>(null)\n const ref = formRefFromParent ?? localRef\n\n // Client-side validation errors\n const [validationError, setValidationError] = useState<\n RJSFValidationError[] | undefined\n >(undefined)\n\n // Errors from the backend response\n const [submissionError, setSubmissionError] = useState<\n SynapseClientError | undefined\n >(undefined)\n const [showSubmissionError, setShowSubmissionError] = useState(false)\n\n const [showConfirmation, setShowConfirmation] = useState(false)\n\n const { data } = useGetJson(\n entityId!,\n undefined,\n // Derived annotations will be precomputed and displayed as placeholders in the form\n false,\n {\n // Metadata is being edited, so don't refetch\n staleTime: Infinity,\n enabled: !!entityId,\n throwOnError: true,\n },\n )\n\n const entityJson = data?.entityMetadata\n const annotations = data?.annotations\n\n // Annotation fields fetched and modified via the form\n const [formData, setFormData] = useState<Record<string, unknown> | undefined>(\n undefined,\n )\n\n // Set initial form data when the entity or its annotations change\n useEffect(() => {\n if (data?.entity) {\n const formData = data.entity\n const hasAnnotations = annotations && Object.keys(annotations).length > 0\n\n const newFormData = !hasAnnotations\n ? { ...formData, newKey: [''] }\n : formData\n\n setFormData(newFormData)\n }\n }, [data?.entity, annotations])\n\n const { data: schema, isLoading: isLoadingBinding } = useGetSchemaBinding(\n entityId!,\n {\n enabled: !!entityId,\n refetchOnWindowFocus: false,\n throwOnError: true,\n },\n )\n\n // The full schema which is bound to the entity\n const { data: fetchedValidationSchema, isLoading: isLoadingSchema } =\n useGetSchema(schemaId ?? schema?.jsonSchemaVersionInfo.$id ?? '', {\n enabled: !!schemaId || !!schema,\n throwOnError: true,\n })\n const validationSchema = validationSchemaFromProps || fetchedValidationSchema\n\n const concreteTypeSchemaId = getSchemaIdForConcreteType(\n entityJson?.concreteType ?? '',\n )\n // The schema for the entity type (e.g. FileEntity, TableEntity, etc.)\n const { data: schemaForEntityType, isLoading: isLoadingEntityTypeSchema } =\n useGetSchema(concreteTypeSchemaId ?? '', {\n enabled: !!concreteTypeSchemaId,\n throwOnError: true,\n })\n\n const entitySchemaBaseProperties: JSONSchema7['properties'] = useMemo(\n () =>\n getPossibleTopLevelPropertiesInObjectSchema(schemaForEntityType ?? {}),\n [schemaForEntityType],\n )\n\n const formSchema = useMemo(\n () => getJsonSchemaForForm(validationSchema, schemaForEntityType),\n [validationSchema, schemaForEntityType],\n )\n\n const uiSchema = useMemo(\n () => getUiSchemaForForm(entitySchemaBaseProperties),\n [entitySchemaBaseProperties],\n )\n\n const isLoading =\n isLoadingBinding || isLoadingSchema || isLoadingEntityTypeSchema\n\n const { mutate, isPending: updateIsPending } = useUpdateViaJson({\n onSuccess: () => {\n onSuccess()\n },\n onError: error => {\n setSubmissionError(error)\n setShowSubmissionError(true)\n },\n })\n\n function submitChangedEntity() {\n mutate({\n ...cleanFormData(formData, true),\n ...entityJson,\n } as EntityJson)\n }\n\n const liveValidate =\n liveValidateFromProps ?? shouldLiveValidate(annotations, validationSchema)\n\n const formDataHasNoAnnotations =\n entityJson &&\n isEmpty(\n omitBy(formData, (_value, key) =>\n Object.keys(entityJson).find(k => k === key),\n ),\n )\n\n const showHasNoAnnotationsAlert = schema === null && formDataHasNoAnnotations\n\n return (\n <div className=\"JsonSchemaFormContainer\">\n {isLoading ? (\n <div className=\"LoadingPlaceholder\">\n <SynapseSpinner size={30} />\n </div>\n ) : (\n <>\n {entityJson && schema && (\n <Alert severity=\"info\" sx={{ mb: 2 }}>\n <b>{entityJson.name}</b> requires scientific annotations specified\n by <b>{schema.jsonSchemaVersionInfo.$id}</b>\n {'. '}\n <b>\n <Link\n href={`${getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n )}/repo/v1/schema/type/registered/${\n schema.jsonSchemaVersionInfo.$id\n }`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n View required schema (JSON)\n </Link>\n </b>\n </Alert>\n )}\n {showHasNoAnnotationsAlert && (\n <Alert severity=\"info\">\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n }}\n >\n <Typography variant={'smallText1'}>\n <b>{entityJson.name}</b> has no annotations. Click the{' '}\n </Typography>\n <AddToList />\n <Typography variant={'smallText1'}>\n button to annotate.\n </Typography>\n </Box>\n </Alert>\n )}\n <JsonSchemaForm\n validator={validator}\n liveValidate={liveValidate}\n noHtml5Validate={true}\n formRef={ref}\n disabled={updateIsPending}\n translateString={customTranslateString}\n formContext={{\n showDerivedAnnotationPlaceholder: true,\n descriptionVariant: 'expand',\n descriptionFormat: 'table',\n allowFreeSoloEnum: true,\n }}\n experimental_defaultFormStateBehavior={{\n emptyObjectFields: 'skipDefaults',\n }}\n fields={{\n ObjectField: SynapseAnnotationsRJSFObjectField,\n }}\n templates={{\n ObjectFieldTemplate: ObjectFieldTemplate,\n WrapIfAdditionalTemplate:\n SynapseAnnotationsWrapIfAdditionalTemplate,\n }}\n widgets={{\n TextWidget: TextWidget,\n }}\n schema={formSchema}\n uiSchema={uiSchema}\n transformErrors={transformErrors}\n formData={formData}\n onChange={({ formData }) => {\n onChange(formData)\n setFormData(formData)\n setValidationError(undefined)\n }}\n onBlur={() => {\n setFormData(\n // Clean the formData onBlur to remove null values that we will need to strip before submission\n // This will ensure that the user gets accurate validation information since the data will match what the backend will receive\n cleanFormData(\n formData,\n // Don't remove null values in arrays--the fields will disappear, which the user probably does not want\n false,\n ),\n )\n }}\n onSubmit={({ formData, errors }, event) => {\n event.preventDefault()\n if (errors && errors.length > 0) {\n setValidationError(errors)\n }\n setShowSubmissionError(false)\n setFormData(formData)\n submitChangedEntity()\n }}\n onError={(errors: RJSFValidationError[]) => {\n // invoked when submit is clicked and there are client-side validation errors\n setValidationError(errors)\n if ((validationError || liveValidate) && entityId) {\n setShowConfirmation(true)\n }\n }}\n >\n {submissionError && showSubmissionError && (\n <Alert severity=\"error\" sx={{ my: 2 }}>\n Annotations could not be updated: {submissionError.reason}\n </Alert>\n )}\n {!hideActions && (\n <>\n <Divider sx={{ my: 2 }} />\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n gridRowStart: 5,\n }}\n >\n <ConfirmationButtons\n hasCancelButton={onCancel !== undefined}\n onCancel={() => {\n if (onCancel) {\n onCancel()\n }\n }}\n onConfirm={() => {\n ref.current!.formElement.current.requestSubmit()\n }}\n confirmButtonProps={{\n children: entityId ? 'Save' : 'Validate',\n }}\n />\n </Box>\n </>\n )}\n </JsonSchemaForm>\n {showConfirmation && (\n <ConfirmationDialog\n open={true}\n onConfirm={() => {\n submitChangedEntity()\n setShowConfirmation(false)\n }}\n onCancel={() => {\n setShowConfirmation(false)\n }}\n title=\"Update Annotations\"\n content={\n <>\n <div>\n The following errors exist with the annotations you entered:\n </div>\n <div>\n <ul>\n {(validationError ?? []).map(\n (e: RJSFValidationError, index: number) => (\n <li key={index}>\n <b>{`${getFriendlyPropertyName(e)}: `}</b>{' '}\n {`${e.message}`}\n </li>\n ),\n )}\n </ul>\n </div>\n <div>\n Are you sure you want to save the invalid annotations?\n </div>\n </>\n }\n confirmButtonProps={{\n children: 'Save',\n }}\n />\n )}\n </>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AdditionalPropertiesSchemaField.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.tsx"],"sourcesContent":["import {\n FieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils'\nimport { isEqual } from 'lodash-es'\nimport { useEffect, useState } from 'react'\nimport FullWidthAlert from '../../FullWidthAlert/FullWidthAlert'\nimport { convertToArray } from '../AnnotationEditorUtils'\nimport { GridLegacy as Grid, InputLabel } from '@mui/material'\nimport { AdditionalPropertyContextProvider } from '../template/AdditionalPropertyContext'\n\n// Matches ####-##-##T##:##:##.###Z, e.g. 1970-01-01T12:00:000Z\nconst ISO_TIMESTAMP_REGEX = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z/\n\n// Types that correspond to the different input fields that the annotation editor supports\nconst propertyTypeArray = [\n 'String',\n 'Integer',\n 'Float',\n 'Boolean',\n 'Datetime',\n] as const\n\nexport type PropertyType = (typeof propertyTypeArray)[number]\n\nexport function guessPropertyType(list: Array<unknown>): PropertyType {\n if (list.length === 0) {\n // The field was just added, so default to string\n return 'String'\n } else if (\n list.every(\n item => typeof item === 'number' || item === 'NaN', // \"NaN\" is technically a float value\n )\n ) {\n if (list.every(item => Number.isInteger(item))) {\n return 'Integer'\n } else {\n return 'Float'\n }\n } else if (list.every(item => typeof item === 'boolean')) {\n return 'Boolean'\n } else if (\n list.every(item => typeof item === 'string') &&\n list.every((item: string) => !!ISO_TIMESTAMP_REGEX.exec(item))\n ) {\n return 'Datetime'\n }\n // otherwise, default type is 'string'\n return 'String'\n}\n\nexport function transformDataFromPropertyType(\n list: Array<any>,\n propertyType: PropertyType,\n) {\n switch (propertyType) {\n case 'Integer':\n return list.map(item =>\n Number.isNaN(Number(item)) ? 0 : Math.floor(Number(item)),\n )\n\n case 'Float':\n return list.map(item => {\n const asFloat = parseFloat(item as string)\n if (Number.isNaN(asFloat)) {\n return 'NaN'\n } else if (Number.isInteger(asFloat)) {\n return asFloat.toFixed(1)\n } else {\n return asFloat\n }\n })\n case 'Datetime':\n return list.map(item => {\n if (typeof item === 'string' && ISO_TIMESTAMP_REGEX.exec(item)) {\n return item\n } else {\n return new Date().toISOString()\n }\n })\n case 'Boolean':\n return list.map(item => !!item)\n case 'String':\n default:\n return list.map(item => String(item))\n }\n}\n\n/**\n * Maps a Synapse Annotation PropertyType to a JSON Schema that captures the type and format.\n * @param propertyType\n */\nexport function getSchemaForPropertyType(propertyType: PropertyType) {\n switch (propertyType) {\n case 'Datetime':\n return { type: 'string', format: 'datetime' }\n case 'Boolean':\n return { type: 'boolean' }\n case 'Float':\n return { type: 'number' }\n case 'Integer':\n return { type: 'integer' }\n case 'String':\n default:\n return { type: 'string' }\n }\n}\n\n/**\n * react-jsonschema-form SchemaField override for \"additionalProperties\" only. In Synapse these are \"custom annotations\".\n * Modifies the data to provide full compatibility with Synapse annotations features.\n *\n * This component provides these enhancements to the SchemaField:\n * - Supports selecting a type, and changing the input widget appropriately\n * - Identifying the type on mount\n * - Treat all field values as arrays\n * - When the last array value is removed, remove the entire key from the form.\n * @param props\n * @returns\n */\nexport function AdditionalPropertiesSchemaField<\n T extends Array<unknown> = Array<unknown>,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(\n props: FieldProps<T, S, F> & {\n onDropPropertyClick: (key: string) => (event: any) => void\n },\n) {\n const {\n formData,\n onChange,\n registry,\n schema,\n name,\n onDropPropertyClick,\n idSchema,\n } = props\n const id = idSchema.$id\n const { ArrayField } = registry.fields\n const { SelectWidget } = registry.widgets\n\n // The type determines which widget we show.\n const [propertyType, setPropertyType] = useState(\n guessPropertyType(convertToArray(formData)),\n )\n\n // If the property type is updated, store it in a new variable where we'll show a warning if data may be lost on coersion\n const [nextPropertyType, setNextPropertyType] = useState(propertyType)\n\n /**\n * This effect is invoked whenever the user attempts to change the datatype of a custom annotation.\n */\n useEffect(() => {\n function onNextPropertyTypeUpdate() {\n if (Array.isArray(formData)) {\n const dataIsEmpty =\n formData.length === 0 ||\n formData.every(item => item == null || item == '')\n const coercedList = transformDataFromPropertyType(\n formData,\n nextPropertyType,\n )\n // if the data is empty or identical after conversion, then just update the property type\n if (dataIsEmpty || nextPropertyType !== propertyType) {\n if (isEqual(formData, coercedList)) {\n setPropertyType(nextPropertyType)\n }\n }\n }\n }\n\n onNextPropertyTypeUpdate()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [nextPropertyType])\n\n /**\n * This effect is invoked whenever the propertyType changes.\n */\n useEffect(() => {\n function coerceDataAndUpdateWidget() {\n if (Array.isArray(formData)) {\n if (formData.every(item => item == null)) {\n onDropPropertyClick(name)(new CustomEvent('dropEmptyProperty'))\n } else {\n const coercedList = transformDataFromPropertyType(\n formData,\n nextPropertyType,\n ) as unknown as T\n\n // Data conversion is non-destructive or has been confirmed by the user\n setPropertyType(nextPropertyType)\n // Coerce the data to match the new type\n onChange(coercedList)\n }\n }\n }\n\n coerceDataAndUpdateWidget()\n // Don't add other properties to dependency array because we don't want to automatically coerce input\n // i.e. Only coerce data when the type changes, which should only be on mount or when the user explicitly chooses a new type.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propertyType])\n\n const itemsSchema = getSchemaForPropertyType(propertyType)\n\n useEffect(() => {\n // If the additional property has not yet been coerced to an array, trigger an update to coerce and render nothing.\n // We must do this because RJSF does not currently batch these kinds of updates\n // See https://github.com/rjsf-team/react-jsonschema-form/issues/3367\n if (!Array.isArray(formData)) {\n onChange(convertToArray(formData) as unknown as T)\n }\n }, [formData, onChange])\n\n if (!Array.isArray(formData)) {\n return <></>\n }\n\n return (\n <AdditionalPropertyContextProvider\n value={{\n dropProperty: e => {\n onDropPropertyClick(name)(e)\n },\n }}\n >\n <Grid item xs={2}>\n <InputLabel htmlFor={`${id}-type`}>Type</InputLabel>\n <SelectWidget\n name={'Type'}\n id={`${id}-type`}\n schema={{} as S}\n options={{\n enumOptions: propertyTypeArray.map(type => ({\n label: type,\n value: type,\n })),\n }}\n value={propertyType}\n onChange={value => {\n setNextPropertyType(value as PropertyType)\n }}\n disabled={props.disabled}\n readOnly={props.readonly}\n required={true}\n isClearable={false}\n onBlur={() => {}}\n onFocus={() => {}}\n registry={registry}\n label={'Type'}\n />\n </Grid>\n <Grid item xs={7}>\n <ArrayField\n {...props}\n uiSchema={{\n ...props.uiSchema,\n 'ui:title': 'Value(s)',\n items: {\n ...props.uiSchema?.items,\n 'ui:placeholder': 'New Value',\n },\n }}\n schema={{\n ...schema,\n items: {\n ...itemsSchema,\n },\n }}\n />\n </Grid>\n {propertyType !== nextPropertyType && (\n <FullWidthAlert\n variant=\"warning\"\n title=\"Data may be lost when converting types\"\n description={`Are you sure you want to convert ${name} from ${propertyType} to ${nextPropertyType}? Current values may be lost on conversion.`}\n primaryButtonConfig={{\n text: 'Convert',\n onClick: () => {\n setPropertyType(nextPropertyType)\n },\n }}\n secondaryButtonConfig={{\n text: 'Cancel',\n onClick: () => {\n setNextPropertyType(propertyType)\n },\n }}\n isGlobal={false}\n />\n )}\n </AdditionalPropertyContextProvider>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AdditionalPropertiesSchemaField.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.tsx"],"sourcesContent":["import {\n FieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils'\nimport { isEqual } from 'lodash-es'\nimport { useEffect, useState } from 'react'\nimport FullWidthAlert from '../../FullWidthAlert/FullWidthAlert'\nimport { convertToArray } from '../AnnotationEditorUtils'\nimport { GridLegacy as Grid, InputLabel } from '@mui/material'\nimport { AdditionalPropertyContextProvider } from '../template/AdditionalPropertyContext'\n\n// Matches ####-##-##T##:##:##.###Z, e.g. 1970-01-01T12:00:000Z\nconst ISO_TIMESTAMP_REGEX = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z/\n\n// Types that correspond to the different input fields that the annotation editor supports\nconst propertyTypeArray = [\n 'String',\n 'Integer',\n 'Float',\n 'Boolean',\n 'Datetime',\n] as const\n\nexport type PropertyType = (typeof propertyTypeArray)[number]\n\nexport function guessPropertyType(list: Array<unknown>): PropertyType {\n if (list.length === 0) {\n // The field was just added, so default to string\n return 'String'\n } else if (\n list.every(\n item => typeof item === 'number' || item === 'NaN', // \"NaN\" is technically a float value\n )\n ) {\n if (list.every(item => Number.isInteger(item))) {\n return 'Integer'\n } else {\n return 'Float'\n }\n } else if (list.every(item => typeof item === 'boolean')) {\n return 'Boolean'\n } else if (\n list.every(item => typeof item === 'string') &&\n list.every((item: string) => !!ISO_TIMESTAMP_REGEX.exec(item))\n ) {\n return 'Datetime'\n }\n // otherwise, default type is 'string'\n return 'String'\n}\n\nexport function transformDataFromPropertyType(\n list: Array<any>,\n propertyType: PropertyType,\n) {\n switch (propertyType) {\n case 'Integer':\n return list.map(item =>\n Number.isNaN(Number(item)) ? 0 : Math.floor(Number(item)),\n )\n\n case 'Float':\n return list.map(item => {\n const asFloat = parseFloat(item as string)\n if (Number.isNaN(asFloat)) {\n return 'NaN'\n } else if (Number.isInteger(asFloat)) {\n return asFloat.toFixed(1)\n } else {\n return asFloat\n }\n })\n case 'Datetime':\n return list.map(item => {\n if (typeof item === 'string' && ISO_TIMESTAMP_REGEX.exec(item)) {\n return item\n } else {\n return new Date().toISOString()\n }\n })\n case 'Boolean':\n return list.map(item => !!item)\n case 'String':\n default:\n return list.map(item => String(item))\n }\n}\n\n/**\n * Maps a Synapse Annotation PropertyType to a JSON Schema that captures the type and format.\n * @param propertyType\n */\nexport function getSchemaForPropertyType(propertyType: PropertyType) {\n switch (propertyType) {\n case 'Datetime':\n return { type: 'string', format: 'datetime' }\n case 'Boolean':\n return { type: 'boolean' }\n case 'Float':\n return { type: 'number' }\n case 'Integer':\n return { type: 'integer' }\n case 'String':\n default:\n return { type: 'string' }\n }\n}\n\n/**\n * react-jsonschema-form SchemaField override for \"additionalProperties\" only. In Synapse these are \"custom annotations\".\n * Modifies the data to provide full compatibility with Synapse annotations features.\n *\n * This component provides these enhancements to the SchemaField:\n * - Supports selecting a type, and changing the input widget appropriately\n * - Identifying the type on mount\n * - Treat all field values as arrays\n * - When the last array value is removed, remove the entire key from the form.\n * @param props\n * @returns\n */\nexport function AdditionalPropertiesSchemaField<\n T extends Array<unknown> = Array<unknown>,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(\n props: FieldProps<T, S, F> & {\n onDropPropertyClick: (key: string) => (event: any) => void\n },\n) {\n const {\n formData,\n onChange,\n registry,\n schema,\n name,\n onDropPropertyClick,\n idSchema,\n } = props\n const id = idSchema.$id\n const { ArrayField } = registry.fields\n const { SelectWidget } = registry.widgets\n\n // The type determines which widget we show.\n const [propertyType, setPropertyType] = useState(\n guessPropertyType(convertToArray(formData)),\n )\n\n // If the property type is updated, store it in a new variable where we'll show a warning if data may be lost on coersion\n const [nextPropertyType, setNextPropertyType] = useState(propertyType)\n\n /**\n * This effect is invoked whenever the user attempts to change the datatype of a custom annotation.\n */\n useEffect(() => {\n function onNextPropertyTypeUpdate() {\n if (Array.isArray(formData)) {\n const dataIsEmpty =\n formData.length === 0 ||\n formData.every(item => item == null || item == '')\n const coercedList = transformDataFromPropertyType(\n formData,\n nextPropertyType,\n )\n // if the data is empty or identical after conversion, then just update the property type\n if (dataIsEmpty || nextPropertyType !== propertyType) {\n if (isEqual(formData, coercedList)) {\n setPropertyType(nextPropertyType)\n }\n }\n }\n }\n\n onNextPropertyTypeUpdate()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [nextPropertyType])\n\n /**\n * This effect is invoked whenever the propertyType changes.\n */\n useEffect(() => {\n function coerceDataAndUpdateWidget() {\n if (Array.isArray(formData)) {\n if (formData.every(item => item == null)) {\n onDropPropertyClick(name)(new CustomEvent('dropEmptyProperty'))\n } else {\n const coercedList = transformDataFromPropertyType(\n formData,\n nextPropertyType,\n ) as unknown as T\n\n // Data conversion is non-destructive or has been confirmed by the user\n setPropertyType(nextPropertyType)\n // Coerce the data to match the new type\n onChange(coercedList)\n }\n }\n }\n\n coerceDataAndUpdateWidget()\n // Don't add other properties to dependency array because we don't want to automatically coerce input\n // i.e. Only coerce data when the type changes, which should only be on mount or when the user explicitly chooses a new type.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propertyType])\n\n const itemsSchema = getSchemaForPropertyType(propertyType)\n\n useEffect(() => {\n // If the additional property has not yet been coerced to an array, trigger an update to coerce and render nothing.\n // We must do this because RJSF does not currently batch these kinds of updates\n // See https://github.com/rjsf-team/react-jsonschema-form/issues/3367\n if (!Array.isArray(formData)) {\n onChange(convertToArray(formData) as unknown as T)\n }\n }, [formData, onChange])\n\n if (!Array.isArray(formData)) {\n return <></>\n }\n\n return (\n <AdditionalPropertyContextProvider\n value={{\n dropProperty: e => {\n onDropPropertyClick(name)(e)\n },\n }}\n >\n <Grid item xs={2}>\n <InputLabel htmlFor={`${id}-type`}>Type</InputLabel>\n <SelectWidget\n name={'Type'}\n id={`${id}-type`}\n schema={{} as S}\n options={{\n enumOptions: propertyTypeArray.map(type => ({\n label: type,\n value: type,\n })),\n }}\n value={propertyType}\n onChange={value => {\n setNextPropertyType(value as PropertyType)\n }}\n disabled={props.disabled}\n readOnly={props.readonly}\n required={true}\n isClearable={false}\n onBlur={() => {}}\n onFocus={() => {}}\n registry={registry}\n label={'Type'}\n />\n </Grid>\n <Grid item xs={7}>\n <ArrayField\n {...props}\n uiSchema={{\n ...props.uiSchema,\n 'ui:title': 'Value(s)',\n items: {\n ...props.uiSchema?.items,\n 'ui:placeholder': 'New Value',\n },\n }}\n schema={{\n ...schema,\n items: {\n ...itemsSchema,\n },\n }}\n />\n </Grid>\n {propertyType !== nextPropertyType && (\n <FullWidthAlert\n variant=\"warning\"\n title=\"Data may be lost when converting types\"\n description={`Are you sure you want to convert ${name} from ${propertyType} to ${nextPropertyType}? Current values may be lost on conversion.`}\n primaryButtonConfig={{\n text: 'Convert',\n onClick: () => {\n setPropertyType(nextPropertyType)\n },\n }}\n secondaryButtonConfig={{\n text: 'Cancel',\n onClick: () => {\n setNextPropertyType(propertyType)\n },\n }}\n isGlobal={false}\n />\n )}\n </AdditionalPropertyContextProvider>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseAnnotationsRJSFObjectField.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.tsx"],"sourcesContent":["import { getDefaultRegistry } from '@rjsf/core'\nimport {\n ADDITIONAL_PROPERTY_FLAG,\n deepEquals,\n FieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils'\nimport { JSONSchema7Definition } from 'json-schema'\nimport { useEffect } from 'react'\nimport {\n convertToArray,\n getPossibleTopLevelPropertiesInObjectSchema,\n} from '../AnnotationEditorUtils'\n\n/**\n * Extends the @rjsf/core `ObjectField` and just adds a custom hook for Synapse annotation business logic\n */\nexport function SynapseAnnotationsRJSFObjectField<\n T extends Record<string, any> | null | undefined = Record<string, any>,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldProps<T, S, F>) {\n const { schema, formData, onChange } = props\n const {\n fields: { ObjectField },\n } = getDefaultRegistry<T, S, F>()\n /**\n * For an object, this will\n * - convert additionalProperties formData to arrays\n * - convert schema-defined formData from an array to a non-array if the schema type is not an array\n * @param props\n */\n useEffect(() => {\n const newFormData: Record<string, any> = { ...formData }\n const allProperties = getPossibleTopLevelPropertiesInObjectSchema(schema)\n if (allProperties) {\n Object.entries(allProperties).forEach(([key, propertySchema]) => {\n // Since the annotations object is flat, we can safely use the property name as the key (no nested properties)\n const data = newFormData[key]\n if (\n (\n propertySchema as JSONSchema7Definition &\n Record<typeof ADDITIONAL_PROPERTY_FLAG, any>\n )[ADDITIONAL_PROPERTY_FLAG]\n ) {\n /**\n * All additional properties should be converted to arrays.\n *\n * We need to convert it right away because the order of items is not stable, and seems to depend on if the item is an array or not\n */\n if (!Array.isArray(data)) {\n newFormData[key] = convertToArray(data)\n }\n } else {\n /**\n * If the schema does not call for an array, but the formData is an array, then this will coerce it to a string.\n *\n * This can occur when a formData value is an additionalProperty, which we always treat as an array, then the key\n * is added to the schema (e.g. conditionally).\n */\n if (\n typeof propertySchema === 'object' &&\n 'type' in propertySchema &&\n propertySchema.type !== 'array' &&\n Array.isArray(data)\n ) {\n newFormData[key] = data.map(v => `${v}`).join(', ')\n }\n }\n })\n if (!deepEquals(formData, newFormData)) {\n onChange(newFormData as T)\n }\n }\n }, [schema, formData, onChange])\n\n return <ObjectField {...props} />\n}\n\nexport default SynapseAnnotationsRJSFObjectField\n"],"mappings":";;;;;;AAmBA,SAAgB,EAId,GAA4B;CAC5B,IAAM,EAAE,WAAQ,aAAU,gBAAa,GACjC,EACJ,QAAQ,EAAE,qBACR,GAA6B;AAmDjC,QA5CA,QAAgB;EACd,IAAM,IAAmC,EAAE,GAAG,GAAU,EAClD,IAAgB,EAA4C,EAAO;AACzE,EAAI,MACF,OAAO,QAAQ,EAAc,CAAC,SAAS,CAAC,GAAK,OAAoB;GAE/D,IAAM,IAAO,EAAY;AACzB,GAEI,EAEA,KAOG,MAAM,QAAQ,EAAK,KACtB,EAAY,KAAO,EAAe,EAAK,IAUvC,OAAO,KAAmB,YAC1B,UAAU,KACV,EAAe,SAAS,WACxB,MAAM,QAAQ,EAAK,KAEnB,EAAY,KAAO,EAAK,KAAI,MAAK,GAAG,IAAI,CAAC,KAAK,KAAK;IAGvD,EACG,EAAW,GAAU,EAAY,IACpC,EAAS,EAAiB;IAG7B;EAAC;EAAQ;EAAU;EAAS,CAAC,EAEzB,kBAAC,GAAD,EAAa,GAAI,GAAS,CAAA"}
1
+ {"version":3,"file":"SynapseAnnotationsRJSFObjectField.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.tsx"],"sourcesContent":["import { getDefaultRegistry } from '@rjsf/core'\nimport {\n ADDITIONAL_PROPERTY_FLAG,\n deepEquals,\n FieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils'\nimport { JSONSchema7Definition } from 'json-schema'\nimport { useEffect } from 'react'\nimport {\n convertToArray,\n getPossibleTopLevelPropertiesInObjectSchema,\n} from '../AnnotationEditorUtils'\n\n/**\n * Extends the @rjsf/core `ObjectField` and just adds a custom hook for Synapse annotation business logic\n */\nexport function SynapseAnnotationsRJSFObjectField<\n T extends Record<string, any> | null | undefined = Record<string, any>,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldProps<T, S, F>) {\n const { schema, formData, onChange } = props\n const {\n fields: { ObjectField },\n } = getDefaultRegistry<T, S, F>()\n /**\n * For an object, this will\n * - convert additionalProperties formData to arrays\n * - convert schema-defined formData from an array to a non-array if the schema type is not an array\n * @param props\n */\n useEffect(() => {\n const newFormData: Record<string, any> = { ...formData }\n const allProperties = getPossibleTopLevelPropertiesInObjectSchema(schema)\n if (allProperties) {\n Object.entries(allProperties).forEach(([key, propertySchema]) => {\n // Since the annotations object is flat, we can safely use the property name as the key (no nested properties)\n const data = newFormData[key]\n if (\n (\n propertySchema as JSONSchema7Definition &\n Record<typeof ADDITIONAL_PROPERTY_FLAG, any>\n )[ADDITIONAL_PROPERTY_FLAG]\n ) {\n /**\n * All additional properties should be converted to arrays.\n *\n * We need to convert it right away because the order of items is not stable, and seems to depend on if the item is an array or not\n */\n if (!Array.isArray(data)) {\n newFormData[key] = convertToArray(data)\n }\n } else {\n /**\n * If the schema does not call for an array, but the formData is an array, then this will coerce it to a string.\n *\n * This can occur when a formData value is an additionalProperty, which we always treat as an array, then the key\n * is added to the schema (e.g. conditionally).\n */\n if (\n typeof propertySchema === 'object' &&\n 'type' in propertySchema &&\n propertySchema.type !== 'array' &&\n Array.isArray(data)\n ) {\n newFormData[key] = data.map(v => `${v}`).join(', ')\n }\n }\n })\n if (!deepEquals(formData, newFormData)) {\n onChange(newFormData as T)\n }\n }\n }, [schema, formData, onChange])\n\n return <ObjectField {...props} />\n}\n\nexport default SynapseAnnotationsRJSFObjectField\n"],"mappings":";;;;;;AAmBA,SAAgB,EAId,GAA4B;CAC5B,IAAM,EAAE,WAAQ,aAAU,gBAAa,GACjC,EACJ,QAAQ,EAAE,qBACR,EAA4B;CAmDhC,OA5CA,QAAgB;EACd,IAAM,IAAmC,EAAE,GAAG,EAAS,GACjD,IAAgB,EAA4C,CAAM;EACxE,AAAI,MACF,OAAO,QAAQ,CAAa,EAAE,SAAS,CAAC,GAAK,OAAoB;GAE/D,IAAM,IAAO,EAAY;GACzB,AAEI,EAEA,KAOG,MAAM,QAAQ,CAAI,MACrB,EAAY,KAAO,EAAe,CAAI,KAUtC,OAAO,KAAmB,YAC1B,UAAU,KACV,EAAe,SAAS,WACxB,MAAM,QAAQ,CAAI,MAElB,EAAY,KAAO,EAAK,KAAI,MAAK,GAAG,GAAG,EAAE,KAAK,IAAI;EAGxD,CAAC,GACI,EAAW,GAAU,CAAW,KACnC,EAAS,CAAgB;CAG/B,GAAG;EAAC;EAAQ;EAAU;CAAQ,CAAC,GAExB,kBAAC,GAAD,EAAa,GAAI,EAAQ,CAAA;AAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AdditionalPropertyContext.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.tsx"],"sourcesContent":["import { createContext, PropsWithChildren, useContext } from 'react'\n\nexport type AdditionalPropertyContextType = {\n dropProperty: (event?: any) => void\n}\n\n/**\n * The `AdditionalPropertyContext` is a custom context object used to pass the `dropProperty` handler to the items within\n * a particular additional property.\n *\n * In RJSF, dropping an entire additional property is handled at the `object` level. In the Synapse Annotations UI,\n * we treat all additional properties (a.k.a. custom annotations) as arrays, and render the delete control at the `array`\n * level. RJSF does not normally provide the drop property handler at the `array` level, so we capture it and pass it\n * along using this context.\n */\nexport const AdditionalPropertyContext = createContext<\n AdditionalPropertyContextType | undefined\n>(undefined)\n\nexport type AdditionalPropertyContextProviderProps = PropsWithChildren<{\n value: AdditionalPropertyContextType\n}>\n\nexport function AdditionalPropertyContextProvider(\n props: AdditionalPropertyContextProviderProps,\n) {\n return (\n <AdditionalPropertyContext.Provider value={props.value}>\n {props.children}\n </AdditionalPropertyContext.Provider>\n )\n}\n\nexport const AdditionalPropertyContextConsumer =\n AdditionalPropertyContext.Consumer\n\nexport function useAdditionalPropertyContext():\n | AdditionalPropertyContextType\n | undefined {\n return useContext(AdditionalPropertyContext)\n}\n"],"mappings":";;;AAeA,IAAa,IAA4B,EAEvC,KAAA,EAAU;AAMZ,SAAgB,EACd,GACA;AACA,QACE,kBAAC,EAA0B,UAA3B;EAAoC,OAAO,EAAM;YAC9C,EAAM;EAC4B,CAAA;;AAIzC,IAAa,IACX,EAA0B;AAE5B,SAAgB,IAEF;AACZ,QAAO,EAAW,EAA0B"}
1
+ {"version":3,"file":"AdditionalPropertyContext.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.tsx"],"sourcesContent":["import { createContext, PropsWithChildren, useContext } from 'react'\n\nexport type AdditionalPropertyContextType = {\n dropProperty: (event?: any) => void\n}\n\n/**\n * The `AdditionalPropertyContext` is a custom context object used to pass the `dropProperty` handler to the items within\n * a particular additional property.\n *\n * In RJSF, dropping an entire additional property is handled at the `object` level. In the Synapse Annotations UI,\n * we treat all additional properties (a.k.a. custom annotations) as arrays, and render the delete control at the `array`\n * level. RJSF does not normally provide the drop property handler at the `array` level, so we capture it and pass it\n * along using this context.\n */\nexport const AdditionalPropertyContext = createContext<\n AdditionalPropertyContextType | undefined\n>(undefined)\n\nexport type AdditionalPropertyContextProviderProps = PropsWithChildren<{\n value: AdditionalPropertyContextType\n}>\n\nexport function AdditionalPropertyContextProvider(\n props: AdditionalPropertyContextProviderProps,\n) {\n return (\n <AdditionalPropertyContext.Provider value={props.value}>\n {props.children}\n </AdditionalPropertyContext.Provider>\n )\n}\n\nexport const AdditionalPropertyContextConsumer =\n AdditionalPropertyContext.Consumer\n\nexport function useAdditionalPropertyContext():\n | AdditionalPropertyContextType\n | undefined {\n return useContext(AdditionalPropertyContext)\n}\n"],"mappings":";;;AAeA,IAAa,IAA4B,EAEvC,KAAA,CAAS;AAMX,SAAgB,EACd,GACA;CACA,OACE,kBAAC,EAA0B,UAA3B;EAAoC,OAAO,EAAM;YAC9C,EAAM;CAC2B,CAAA;AAExC;AAEA,IAAa,IACX,EAA0B;AAE5B,SAAgB,IAEF;CACZ,OAAO,EAAW,CAAyB;AAC7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectFieldTemplate.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.tsx"],"sourcesContent":["import AddToList from '@/assets/icons/AddToList'\nimport { Button, Tooltip } from '@mui/material'\nimport {\n ADDITIONAL_PROPERTY_FLAG,\n canExpand,\n FormContextType,\n getTemplate,\n getUiOptions,\n ObjectFieldTemplatePropertyType,\n ObjectFieldTemplateProps,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils'\nimport { JSONSchema7Definition } from 'json-schema'\nimport { useRef } from 'react'\nimport { useDeepCompareEffectNoCheck } from 'use-deep-compare-effect'\nimport { displayToast } from '../../ToastMessage'\n\n/**\n * Derived from the base ObjectFieldTemplate with annotations-editor-specific changes\n * - Custom button for adding additional properties\n * - Tracks properties to show a toast message if a property is converted to an additionalProperty because it was\n * dropped from the schema (e.g. in a conditional schema)\n *\n * See https://github.com/rjsf-team/react-jsonschema-form/blob/main/packages/mui/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx\n * @param props\n * @returns\n */\nexport function ObjectFieldTemplate<\n T extends Record<string, any> | null | undefined = Record<string, any>,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ObjectFieldTemplateProps<T, S, F>) {\n const {\n description,\n disabled,\n formData,\n idSchema,\n onAddClick,\n properties,\n readonly,\n registry,\n required,\n schema,\n title,\n uiSchema,\n } = props\n\n const options = getUiOptions<T, S, F>(uiSchema)\n const TitleFieldTemplate = getTemplate<'TitleFieldTemplate', T, S, F>(\n 'TitleFieldTemplate',\n registry,\n options,\n )\n const DescriptionFieldTemplate = getTemplate<\n 'DescriptionFieldTemplate',\n T,\n S,\n F\n >('DescriptionFieldTemplate', registry, options)\n\n /*\n Tracks the property keys that were last known to exist in the object.\n */\n const previousSchemaDefinedProperties = useRef<Set<string>>(new Set())\n\n /**\n * We track how the schema changes as the user enters data, causing conditional subschemas to be evaluated.\n *\n * If a property exists in the previous version of the schema and has user data, and then is dropped from the schema due to a data update, then\n * we need to prompt the user whether they want to undo the change, or continue and keep/remove those fields\n *\n * In this component, we can identify when one or more fields with user data are dropped (the field gains the additional property flag in the schema prop).\n * We then use a function provided by the context to report which fields were lost.\n */\n useDeepCompareEffectNoCheck(() => {\n if ('properties' in schema && schema.properties) {\n const propertyKeys = Object.keys(schema.properties)\n // Schema-defined properties are those properties in the schema without the additional property flag.\n const schemaDefinedProperties = new Set<string>(\n propertyKeys.filter(key => {\n const propertyObject = schema.properties![\n key\n ] as JSONSchema7Definition &\n Record<typeof ADDITIONAL_PROPERTY_FLAG, any>\n return !propertyObject[ADDITIONAL_PROPERTY_FLAG]\n }),\n )\n\n if (previousSchemaDefinedProperties.current != null) {\n // Compare the schema defined properties with the previous version to see if any were lost.\n const lostProperties = Array.from(\n previousSchemaDefinedProperties.current,\n ).filter(schemaDefinedProperty => {\n return (\n // Property is no longer in schema\n !schemaDefinedProperties.has(schemaDefinedProperty) &&\n // Form data exists\n !!formData &&\n // Property still exists in form data and is not null\n // if the data is null, then we don't need to worry about it; user data wasn't lost\n formData[schemaDefinedProperty] != null &&\n // Property matches `additionalProperties` requirements: is an array and contains non-null values\n Array.isArray(formData[schemaDefinedProperty]) &&\n (formData[schemaDefinedProperty] as Array<never>).filter(\n item => item != null,\n ).length > 0\n )\n })\n if (lostProperties.length > 0) {\n // Report the converted fields in a toast message\n displayToast(\n `The following annotations are no longer specified by the schema and have been converted to custom fields: ${lostProperties.join(\n ', ',\n )}.`,\n 'warning',\n {\n title: 'Fields No Longer Specified By Schema',\n },\n )\n }\n }\n // Update the last known properties to match the current properties\n previousSchemaDefinedProperties.current = schemaDefinedProperties\n }\n }, [schema.properties])\n\n return (\n <fieldset id={idSchema.$id}>\n {(options.title || title) && (\n <TitleFieldTemplate\n id={`${idSchema.$id}__title`}\n schema={schema}\n title={options.title || title}\n required={required}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {(options.description || description) && (\n <DescriptionFieldTemplate\n id={`${idSchema.$id}__description`}\n description={options.description || description!}\n registry={registry}\n schema={schema}\n />\n )}\n {properties.map((prop: ObjectFieldTemplatePropertyType) => prop.content)}\n\n {canExpand(schema, uiSchema, formData) && (\n <Tooltip title=\"Add a new custom field\" placement=\"top\">\n <Button\n sx={{ my: 2 }}\n variant=\"contained\"\n className=\"rjsf-object-property-expand\"\n onClick={onAddClick(schema)}\n disabled={disabled || readonly}\n aria-label={'Add Custom Field'}\n >\n <AddToList />\n </Button>\n </Tooltip>\n )}\n </fieldset>\n )\n}\n"],"mappings":";;;;;;;;;AA4BA,SAAgB,EAId,GAA0C;CAC1C,IAAM,EACJ,gBACA,aACA,aACA,aACA,eACA,eACA,aACA,aACA,aACA,WACA,UACA,gBACE,GAEE,IAAU,EAAsB,EAAS,EACzC,IAAqB,EACzB,sBACA,GACA,EACD,EACK,IAA2B,EAK/B,4BAA4B,GAAU,EAAQ,EAK1C,IAAkC,kBAAoB,IAAI,KAAK,CAAC;AA+DtE,QApDA,QAAkC;AAChC,MAAI,gBAAgB,KAAU,EAAO,YAAY;GAC/C,IAAM,IAAe,OAAO,KAAK,EAAO,WAAW,EAE7C,IAA0B,IAAI,IAClC,EAAa,QAAO,MAKX,CAJgB,EAAO,WAC5B,GAGqB,GACvB,CACH;AAED,OAAI,EAAgC,WAAW,MAAM;IAEnD,IAAM,IAAiB,MAAM,KAC3B,EAAgC,QACjC,CAAC,QAAO,MAGL,CAAC,EAAwB,IAAI,EAAsB,IAEnD,CAAC,CAAC,KAGF,EAAS,MAA0B,QAEnC,MAAM,QAAQ,EAAS,GAAuB,IAC7C,EAAS,GAAwC,QAChD,MAAQ,KAAQ,KACjB,CAAC,SAAS,EAEb;AACF,IAAI,EAAe,SAAS,KAE1B,EACE,6GAA6G,EAAe,KAC1H,KACD,CAAC,IACF,WACA,EACE,OAAO,wCACR,CACF;;AAIL,KAAgC,UAAU;;IAE3C,CAAC,EAAO,WAAW,CAAC,EAGrB,kBAAC,YAAD;EAAU,IAAI,EAAS;YAAvB;IACI,EAAQ,SAAS,MACjB,kBAAC,GAAD;IACE,IAAI,GAAG,EAAS,IAAI;IACZ;IACR,OAAO,EAAQ,SAAS;IACd;IACA;IACA;IACV,CAAA;IAEF,EAAQ,eAAe,MACvB,kBAAC,GAAD;IACE,IAAI,GAAG,EAAS,IAAI;IACpB,aAAa,EAAQ,eAAe;IAC1B;IACF;IACR,CAAA;GAEH,EAAW,KAAK,MAA0C,EAAK,QAAQ;GAEvE,EAAU,GAAQ,GAAU,EAAS,IACpC,kBAAC,GAAD;IAAS,OAAM;IAAyB,WAAU;cAChD,kBAAC,GAAD;KACE,IAAI,EAAE,IAAI,GAAG;KACb,SAAQ;KACR,WAAU;KACV,SAAS,EAAW,EAAO;KAC3B,UAAU,KAAY;KACtB,cAAY;eAEZ,kBAAC,GAAD,EAAa,CAAA;KACN,CAAA;IACD,CAAA;GAEH"}
1
+ {"version":3,"file":"ObjectFieldTemplate.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.tsx"],"sourcesContent":["import AddToList from '@/assets/icons/AddToList'\nimport { Button, Tooltip } from '@mui/material'\nimport {\n ADDITIONAL_PROPERTY_FLAG,\n canExpand,\n FormContextType,\n getTemplate,\n getUiOptions,\n ObjectFieldTemplatePropertyType,\n ObjectFieldTemplateProps,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils'\nimport { JSONSchema7Definition } from 'json-schema'\nimport { useRef } from 'react'\nimport { useDeepCompareEffectNoCheck } from 'use-deep-compare-effect'\nimport { displayToast } from '../../ToastMessage'\n\n/**\n * Derived from the base ObjectFieldTemplate with annotations-editor-specific changes\n * - Custom button for adding additional properties\n * - Tracks properties to show a toast message if a property is converted to an additionalProperty because it was\n * dropped from the schema (e.g. in a conditional schema)\n *\n * See https://github.com/rjsf-team/react-jsonschema-form/blob/main/packages/mui/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx\n * @param props\n * @returns\n */\nexport function ObjectFieldTemplate<\n T extends Record<string, any> | null | undefined = Record<string, any>,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ObjectFieldTemplateProps<T, S, F>) {\n const {\n description,\n disabled,\n formData,\n idSchema,\n onAddClick,\n properties,\n readonly,\n registry,\n required,\n schema,\n title,\n uiSchema,\n } = props\n\n const options = getUiOptions<T, S, F>(uiSchema)\n const TitleFieldTemplate = getTemplate<'TitleFieldTemplate', T, S, F>(\n 'TitleFieldTemplate',\n registry,\n options,\n )\n const DescriptionFieldTemplate = getTemplate<\n 'DescriptionFieldTemplate',\n T,\n S,\n F\n >('DescriptionFieldTemplate', registry, options)\n\n /*\n Tracks the property keys that were last known to exist in the object.\n */\n const previousSchemaDefinedProperties = useRef<Set<string>>(new Set())\n\n /**\n * We track how the schema changes as the user enters data, causing conditional subschemas to be evaluated.\n *\n * If a property exists in the previous version of the schema and has user data, and then is dropped from the schema due to a data update, then\n * we need to prompt the user whether they want to undo the change, or continue and keep/remove those fields\n *\n * In this component, we can identify when one or more fields with user data are dropped (the field gains the additional property flag in the schema prop).\n * We then use a function provided by the context to report which fields were lost.\n */\n useDeepCompareEffectNoCheck(() => {\n if ('properties' in schema && schema.properties) {\n const propertyKeys = Object.keys(schema.properties)\n // Schema-defined properties are those properties in the schema without the additional property flag.\n const schemaDefinedProperties = new Set<string>(\n propertyKeys.filter(key => {\n const propertyObject = schema.properties![\n key\n ] as JSONSchema7Definition &\n Record<typeof ADDITIONAL_PROPERTY_FLAG, any>\n return !propertyObject[ADDITIONAL_PROPERTY_FLAG]\n }),\n )\n\n if (previousSchemaDefinedProperties.current != null) {\n // Compare the schema defined properties with the previous version to see if any were lost.\n const lostProperties = Array.from(\n previousSchemaDefinedProperties.current,\n ).filter(schemaDefinedProperty => {\n return (\n // Property is no longer in schema\n !schemaDefinedProperties.has(schemaDefinedProperty) &&\n // Form data exists\n !!formData &&\n // Property still exists in form data and is not null\n // if the data is null, then we don't need to worry about it; user data wasn't lost\n formData[schemaDefinedProperty] != null &&\n // Property matches `additionalProperties` requirements: is an array and contains non-null values\n Array.isArray(formData[schemaDefinedProperty]) &&\n (formData[schemaDefinedProperty] as Array<never>).filter(\n item => item != null,\n ).length > 0\n )\n })\n if (lostProperties.length > 0) {\n // Report the converted fields in a toast message\n displayToast(\n `The following annotations are no longer specified by the schema and have been converted to custom fields: ${lostProperties.join(\n ', ',\n )}.`,\n 'warning',\n {\n title: 'Fields No Longer Specified By Schema',\n },\n )\n }\n }\n // Update the last known properties to match the current properties\n previousSchemaDefinedProperties.current = schemaDefinedProperties\n }\n }, [schema.properties])\n\n return (\n <fieldset id={idSchema.$id}>\n {(options.title || title) && (\n <TitleFieldTemplate\n id={`${idSchema.$id}__title`}\n schema={schema}\n title={options.title || title}\n required={required}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {(options.description || description) && (\n <DescriptionFieldTemplate\n id={`${idSchema.$id}__description`}\n description={options.description || description!}\n registry={registry}\n schema={schema}\n />\n )}\n {properties.map((prop: ObjectFieldTemplatePropertyType) => prop.content)}\n\n {canExpand(schema, uiSchema, formData) && (\n <Tooltip title=\"Add a new custom field\" placement=\"top\">\n <Button\n sx={{ my: 2 }}\n variant=\"contained\"\n className=\"rjsf-object-property-expand\"\n onClick={onAddClick(schema)}\n disabled={disabled || readonly}\n aria-label={'Add Custom Field'}\n >\n <AddToList />\n </Button>\n </Tooltip>\n )}\n </fieldset>\n )\n}\n"],"mappings":";;;;;;;;;AA4BA,SAAgB,EAId,GAA0C;CAC1C,IAAM,EACJ,gBACA,aACA,aACA,aACA,eACA,eACA,aACA,aACA,aACA,WACA,UACA,gBACE,GAEE,IAAU,EAAsB,CAAQ,GACxC,IAAqB,EACzB,sBACA,GACA,CACF,GACM,IAA2B,EAK/B,4BAA4B,GAAU,CAAO,GAKzC,IAAkC,kBAAoB,IAAI,IAAI,CAAC;CA+DrE,OApDA,QAAkC;EAChC,IAAI,gBAAgB,KAAU,EAAO,YAAY;GAC/C,IAAM,IAAe,OAAO,KAAK,EAAO,UAAU,GAE5C,IAA0B,IAAI,IAClC,EAAa,QAAO,MAKX,CAJgB,EAAO,WAC5B,GAGqB,EACxB,CACH;GAEA,IAAI,EAAgC,WAAW,MAAM;IAEnD,IAAM,IAAiB,MAAM,KAC3B,EAAgC,OAClC,EAAE,QAAO,MAGL,CAAC,EAAwB,IAAI,CAAqB,KAElD,CAAC,CAAC,KAGF,EAAS,MAA0B,QAEnC,MAAM,QAAQ,EAAS,EAAsB,KAC5C,EAAS,GAAwC,QAChD,MAAQ,KAAQ,IAClB,EAAE,SAAS,CAEd;IACD,AAAI,EAAe,SAAS,KAE1B,EACE,6GAA6G,EAAe,KAC1H,IACF,EAAE,IACF,WACA,EACE,OAAO,uCACT,CACF;GAEJ;GAEA,EAAgC,UAAU;EAC5C;CACF,GAAG,CAAC,EAAO,UAAU,CAAC,GAGpB,kBAAC,YAAD;EAAU,IAAI,EAAS;YAAvB;IACI,EAAQ,SAAS,MACjB,kBAAC,GAAD;IACE,IAAI,GAAG,EAAS,IAAI;IACZ;IACR,OAAO,EAAQ,SAAS;IACd;IACA;IACA;GACX,CAAA;IAED,EAAQ,eAAe,MACvB,kBAAC,GAAD;IACE,IAAI,GAAG,EAAS,IAAI;IACpB,aAAa,EAAQ,eAAe;IAC1B;IACF;GACT,CAAA;GAEF,EAAW,KAAK,MAA0C,EAAK,OAAO;GAEtE,EAAU,GAAQ,GAAU,CAAQ,KACnC,kBAAC,GAAD;IAAS,OAAM;IAAyB,WAAU;cAChD,kBAAC,GAAD;KACE,IAAI,EAAE,IAAI,EAAE;KACZ,SAAQ;KACR,WAAU;KACV,SAAS,EAAW,CAAM;KAC1B,UAAU,KAAY;KACtB,cAAY;eAEZ,kBAAC,GAAD,CAAY,CAAA;IACN,CAAA;GACD,CAAA;EAEH;;AAEd"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseAnnotationsWrapIfAdditionalTemplate.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.tsx"],"sourcesContent":["import {\n ADDITIONAL_PROPERTY_FLAG,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n WrapIfAdditionalTemplateProps,\n} from '@rjsf/utils'\nimport { FocusEventHandler } from 'react'\nimport { GridLegacy as Grid, TextField } from '@mui/material'\n\n/** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are\n * part of an `additionalProperties` part of a schema.\n *\n * @param props - The `WrapIfAdditionalProps` for this component\n */\nexport default function SynapseAnnotationsWrapIfAdditionalTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WrapIfAdditionalTemplateProps<T, S, F>) {\n const {\n id,\n classNames,\n disabled,\n label,\n onKeyChange,\n readonly,\n required,\n schema,\n children,\n registry,\n } = props\n const { translateString } = registry\n const keyLabel = translateString(TranslatableString.KeyLabel, [''])\n const additional = ADDITIONAL_PROPERTY_FLAG in schema\n\n if (!additional) {\n return <div className={classNames}>{children}</div>\n }\n\n const handleBlur: FocusEventHandler<\n HTMLInputElement | HTMLTextAreaElement\n > = ({ target }) => {\n if (target) onKeyChange(target.value)\n }\n\n return (\n <div className={classNames}>\n <Grid\n container\n columnSpacing={2}\n rowSpacing={0}\n sx={{\n my: 1,\n }}\n >\n <Grid item xs={3}>\n <TextField\n fullWidth={true}\n required={required}\n label={keyLabel}\n defaultValue={label}\n disabled={disabled || readonly}\n id={`${id}-key`}\n name={`${id}-key`}\n onBlur={!readonly ? handleBlur : undefined}\n type=\"text\"\n />\n </Grid>\n {children}\n {/* All additional properties are treated as arrays, so we don't show a remove button here. */}\n {/* To drop the property, drop the last array item. */}\n </Grid>\n </div>\n )\n}\n"],"mappings":";;;;AAgBA,SAAwB,EAItB,GAA+C;CAC/C,IAAM,EACJ,OACA,eACA,aACA,UACA,gBACA,aACA,aACA,WACA,aACA,gBACE,GACE,EAAE,uBAAoB,GACtB,IAAW,EAAgB,EAAmB,UAAU,CAAC,GAAG,CAAC;AAanE,QAZmB,KAA4B,IAa7C,kBAAC,OAAD;EAAK,WAAW;YACd,kBAAC,GAAD;GACE,WAAA;GACA,eAAe;GACf,YAAY;GACZ,IAAI,EACF,IAAI,GACL;aANH,CAQE,kBAAC,GAAD;IAAM,MAAA;IAAK,IAAI;cACb,kBAAC,GAAD;KACE,WAAW;KACD;KACV,OAAO;KACP,cAAc;KACd,UAAU,KAAY;KACtB,IAAI,GAAG,EAAG;KACV,MAAM,GAAG,EAAG;KACZ,QAAS,IAAwB,KAAA,KAvBtC,EAAE,gBAAa;AAClB,MAAI,KAAQ,EAAY,EAAO,MAAM;;KAuB7B,MAAK;KACL,CAAA;IACG,CAAA,EACN,EAGI;;EACH,CAAA,GApCC,kBAAC,OAAD;EAAK,WAAW;EAAa;EAAe,CAAA"}
1
+ {"version":3,"file":"SynapseAnnotationsWrapIfAdditionalTemplate.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.tsx"],"sourcesContent":["import {\n ADDITIONAL_PROPERTY_FLAG,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n WrapIfAdditionalTemplateProps,\n} from '@rjsf/utils'\nimport { FocusEventHandler } from 'react'\nimport { GridLegacy as Grid, TextField } from '@mui/material'\n\n/** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are\n * part of an `additionalProperties` part of a schema.\n *\n * @param props - The `WrapIfAdditionalProps` for this component\n */\nexport default function SynapseAnnotationsWrapIfAdditionalTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WrapIfAdditionalTemplateProps<T, S, F>) {\n const {\n id,\n classNames,\n disabled,\n label,\n onKeyChange,\n readonly,\n required,\n schema,\n children,\n registry,\n } = props\n const { translateString } = registry\n const keyLabel = translateString(TranslatableString.KeyLabel, [''])\n const additional = ADDITIONAL_PROPERTY_FLAG in schema\n\n if (!additional) {\n return <div className={classNames}>{children}</div>\n }\n\n const handleBlur: FocusEventHandler<\n HTMLInputElement | HTMLTextAreaElement\n > = ({ target }) => {\n if (target) onKeyChange(target.value)\n }\n\n return (\n <div className={classNames}>\n <Grid\n container\n columnSpacing={2}\n rowSpacing={0}\n sx={{\n my: 1,\n }}\n >\n <Grid item xs={3}>\n <TextField\n fullWidth={true}\n required={required}\n label={keyLabel}\n defaultValue={label}\n disabled={disabled || readonly}\n id={`${id}-key`}\n name={`${id}-key`}\n onBlur={!readonly ? handleBlur : undefined}\n type=\"text\"\n />\n </Grid>\n {children}\n {/* All additional properties are treated as arrays, so we don't show a remove button here. */}\n {/* To drop the property, drop the last array item. */}\n </Grid>\n </div>\n )\n}\n"],"mappings":";;;;AAgBA,SAAwB,EAItB,GAA+C;CAC/C,IAAM,EACJ,OACA,eACA,aACA,UACA,gBACA,aACA,aACA,WACA,aACA,gBACE,GACE,EAAE,uBAAoB,GACtB,IAAW,EAAgB,EAAmB,UAAU,CAAC,EAAE,CAAC;CAalE,OAZmB,KAA4B,IAa7C,kBAAC,OAAD;EAAK,WAAW;YACd,kBAAC,GAAD;GACE,WAAA;GACA,eAAe;GACf,YAAY;GACZ,IAAI,EACF,IAAI,EACN;aANF,CAQE,kBAAC,GAAD;IAAM,MAAA;IAAK,IAAI;cACb,kBAAC,GAAD;KACE,WAAW;KACD;KACV,OAAO;KACP,cAAc;KACd,UAAU,KAAY;KACtB,IAAI,GAAG,EAAG;KACV,MAAM,GAAG,EAAG;KACZ,QAAS,IAAwB,KAAA,KAvBtC,EAAE,gBAAa;MAClB,AAAI,KAAQ,EAAY,EAAO,KAAK;KACtC;KAsBU,MAAK;IACN,CAAA;GACG,CAAA,GACL,CAGG;;CACH,CAAA,IApCE,kBAAC,OAAD;EAAK,WAAW;EAAa;CAAc,CAAA;AAsCtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextWidget.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/widget/TextWidget.tsx"],"sourcesContent":["import { Widget, WidgetProps } from '@rjsf/utils'\n\n/**\n * This TextWidget is almost identical to the rjsf TextWidget, except we handle numbers like strings to prevent issues if\n * the actual annotation data is not a string.\n */\nexport const TextWidget: Widget = (props: WidgetProps) => {\n const { BaseInputTemplate } = props.registry.templates\n\n // options.inputType will override the input type determined via schema\n let inputType: string | undefined = undefined\n if (props.schema.type === 'number' || props.schema.type === 'integer') {\n inputType = 'text'\n }\n\n return (\n <BaseInputTemplate\n {...props}\n options={{ ...props.options, inputType: inputType }}\n />\n )\n}\n\nexport default TextWidget\n"],"mappings":";;AAMA,IAAa,KAAsB,MAAuB;CACxD,IAAM,EAAE,yBAAsB,EAAM,SAAS,WAGzC;AAKJ,SAJI,EAAM,OAAO,SAAS,YAAY,EAAM,OAAO,SAAS,eAC1D,IAAY,SAIZ,kBAAC,GAAD;EACE,GAAI;EACJ,SAAS;GAAE,GAAG,EAAM;GAAoB;GAAW;EACnD,CAAA"}
1
+ {"version":3,"file":"TextWidget.js","names":[],"sources":["../../../../src/components/SchemaDrivenAnnotationEditor/widget/TextWidget.tsx"],"sourcesContent":["import { Widget, WidgetProps } from '@rjsf/utils'\n\n/**\n * This TextWidget is almost identical to the rjsf TextWidget, except we handle numbers like strings to prevent issues if\n * the actual annotation data is not a string.\n */\nexport const TextWidget: Widget = (props: WidgetProps) => {\n const { BaseInputTemplate } = props.registry.templates\n\n // options.inputType will override the input type determined via schema\n let inputType: string | undefined = undefined\n if (props.schema.type === 'number' || props.schema.type === 'integer') {\n inputType = 'text'\n }\n\n return (\n <BaseInputTemplate\n {...props}\n options={{ ...props.options, inputType: inputType }}\n />\n )\n}\n\nexport default TextWidget\n"],"mappings":";;AAMA,IAAa,KAAsB,MAAuB;CACxD,IAAM,EAAE,yBAAsB,EAAM,SAAS,WAGzC;CAKJ,QAJI,EAAM,OAAO,SAAS,YAAY,EAAM,OAAO,SAAS,eAC1D,IAAY,SAIZ,kBAAC,GAAD;EACE,GAAI;EACJ,SAAS;GAAE,GAAG,EAAM;GAAoB;EAAU;CACnD,CAAA;AAEL"}
@@ -1,4 +1,4 @@
1
- import { AsynchronousJobStatus, ColumnModel, QueryBundleRequest, QueryResultBundle, RowSet } from '@sage-bionetworks/synapse-types';
1
+ import { AsynchronousJobStatus, ColumnModel, FacetColumnRangeRequest, FacetColumnValuesRequest, QueryBundleRequest, QueryResultBundle, RowSet } from '@sage-bionetworks/synapse-types';
2
2
  import type { SearchIndexQuery, SearchQueryResults, SynapseClientError } from '@sage-bionetworks/synapse-client';
3
3
  import { InfiniteData, QueryKey, UseInfiniteQueryOptions, UseSuspenseQueryOptions } from '@tanstack/react-query';
4
4
  import { KeyFactory } from '@/synapse-queries/KeyFactory';
@@ -13,17 +13,19 @@ export type SearchTableQueryUseQueryOptions = {
13
13
  rowDataInfiniteQueryOptions: UseInfiniteQueryOptions<AsynchronousJobStatus<SearchIndexQuery, QueryResultBundle>, SynapseClientError, InfiniteData<AsynchronousJobStatus<SearchIndexQuery, QueryResultBundle>>, QueryKey, string | number | undefined>;
14
14
  queryMetadataQueryOptions: UseSuspenseQueryOptions<AsynchronousJobStatus<SearchIndexQuery, QueryResultBundle>, SynapseClientError, Omit<QueryResultBundle, 'queryResult'>>;
15
15
  };
16
+ export declare function getNextPageParamForSearchQueryResults(lastPage: AsynchronousJobStatus<SearchIndexQuery, QueryResultBundle>, allPages: AsynchronousJobStatus<SearchIndexQuery, QueryResultBundle>[]): number | string | undefined;
16
17
  /**
17
18
  * Converts a QueryBundleRequest (used internally for state management) into a SearchIndexQuery
18
19
  * that can be sent to the SearchQueryServicesApi.
19
20
  *
20
21
  * Mapping:
21
- * - columnModels (facetType defined) → facetRequests (columns to aggregate as facets, with optional sort config)
22
- * - query.selectedFacets (enumeration) → termsFilters (IN-clause filters)
23
- * - query.selectedFacets (range) → rangeFilters (range filters)
24
- * - query.sort → sort (SortItem { column, direction } → SearchSortField { columnName, direction })
25
- * - query.limit → limit
26
- * - query.offset → offset
22
+ * - columnModels (facetType 'enumeration') → aggregations (OpenSearch terms aggregations)
23
+ * - query.selectedFacets (enumeration) → query.bool.filter terms clauses
24
+ * - query.selectedFacets (range) → query.bool.filter range clauses
25
+ * - query.additionalFilters (TextMatchesQueryFilter) → multi_match query clause
26
+ * - query.sort → sort (SortItem { column, direction } → [{ column: 'asc'|'desc' }])
27
+ * - query.limit → size
28
+ * - query.offset → from
27
29
  * - partMask → dropped (SearchIndexQuery has no bitmask concept)
28
30
  */
29
31
  export declare function toSearchIndexQuery(queryBundleRequest: QueryBundleRequest, searchIndexId: string, columnModels?: ColumnModel[]): SearchIndexQuery;
@@ -34,18 +36,17 @@ export declare function toSearchIndexQuery(queryBundleRequest: QueryBundleReques
34
36
  * Mapping:
35
37
  * - totalHits → queryCount
36
38
  * - hits → queryResult.queryResults (rows derived from hit.rowId/rowVersion/fields)
37
- * - facets → facets (same FacetColumnResult type)
39
+ * - aggregationResults → facets (parsed from opaque OpenSearch aggregation JSON)
38
40
  */
39
- export declare function searchQueryResultsToQueryResultBundle(results: SearchQueryResults | undefined, query: SearchIndexQuery, columnModels?: ColumnModel[]): QueryResultBundle;
41
+ export declare function searchQueryResultsToQueryResultBundle(results: SearchQueryResults | undefined, query: SearchIndexQuery, columnModels?: ColumnModel[], selectedFacets?: (FacetColumnValuesRequest | FacetColumnRangeRequest)[]): QueryResultBundle;
40
42
  export declare function getSearchQueryUseQueryOptions(queryBundleRequest: QueryBundleRequest, keyFactory: KeyFactory, accessToken: string | undefined, searchIndexId: string, columnModels?: ColumnModel[]): SearchTableQueryUseQueryOptions;
41
43
  /**
42
44
  * Returns a stable callback that fetches autocomplete suggestions for a search input
43
45
  * using the synchronous `POST /search/autocomplete` endpoint.
44
46
  *
45
47
  * The query is built from the current `searchIndexId` and `autocompleteFieldName`:
46
- * - `searchQuery.queryText` is set to the user-entered search text
47
- * - `searchQuery.queryFields` is set to `[autocompleteFieldName]` so the server
48
- * only returns values for that single field
48
+ * - `searchQuery.query` is a `match_bool_prefix` clause scoped to `autocompleteFieldName`
49
+ * - `searchQuery._source` is set to `[autocompleteFieldName]` so only that field is returned
49
50
  *
50
51
  * When `autocompleteFieldName` is undefined, the returned callback immediately returns `[]`.
51
52
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SearchQueryUseQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/components/SearchQueryWrapper/SearchQueryUseQueryOptions.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,WAAW,EAMX,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EAIP,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAGV,gBAAgB,EAEhB,kBAAkB,EAGlB,kBAAkB,EACnB,MAAM,kCAAkC,CAAA;AAKzC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAA;AAI9B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,mBAAmB,EAAE,uBAAuB,CAC1C,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAC1D,kBAAkB,EAClB,MAAM,GAAG,SAAS,CACnB,CAAA;IACD,2BAA2B,EAAE,uBAAuB,CAClD,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAC1D,kBAAkB,EAClB,YAAY,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,EACxE,QAAQ,EACR,MAAM,GAAG,MAAM,GAAG,SAAS,CAC5B,CAAA;IACD,yBAAyB,EAAE,uBAAuB,CAChD,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAC1D,kBAAkB,EAClB,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CACvC,CAAA;CACF,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,WAAW,EAAE,GAC3B,gBAAgB,CAuGlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,KAAK,EAAE,gBAAgB,EACvB,YAAY,CAAC,EAAE,WAAW,EAAE,GAC3B,iBAAiB,CAqHnB;AAED,wBAAgB,6BAA6B,CAC3C,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,WAAW,EAAE,GAC3B,+BAA+B,CA+IjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,MAAM,EACrB,qBAAqB,EAAE,MAAM,GAAG,SAAS,GACxC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAmC3C;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,+BAA+B,CAmBjC"}
1
+ {"version":3,"file":"SearchQueryUseQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/components/SearchQueryWrapper/SearchQueryUseQueryOptions.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,WAAW,EAEX,uBAAuB,EAIvB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EAIP,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAGV,gBAAgB,EAChB,kBAAkB,EAElB,kBAAkB,EAEnB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAA;AAI9B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AA6BzD;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,mBAAmB,EAAE,uBAAuB,CAC1C,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAC1D,kBAAkB,EAClB,MAAM,GAAG,SAAS,CACnB,CAAA;IACD,2BAA2B,EAAE,uBAAuB,CAClD,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAC1D,kBAAkB,EAClB,YAAY,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,EACxE,QAAQ,EACR,MAAM,GAAG,MAAM,GAAG,SAAS,CAC5B,CAAA;IACD,yBAAyB,EAAE,uBAAuB,CAChD,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAC1D,kBAAkB,EAClB,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CACvC,CAAA;CACF,CAAA;AAED,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EACpE,QAAQ,EAAE,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,GACrE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyB7B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,WAAW,EAAE,GAC3B,gBAAgB,CAmHlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,KAAK,EAAE,gBAAgB,EACvB,YAAY,CAAC,EAAE,WAAW,EAAE,EAC5B,cAAc,CAAC,EAAE,CAAC,wBAAwB,GAAG,uBAAuB,CAAC,EAAE,GACtE,iBAAiB,CA6InB;AAED,wBAAgB,6BAA6B,CAC3C,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,WAAW,EAAE,GAC3B,+BAA+B,CAwIjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,MAAM,EACrB,qBAAqB,EAAE,MAAM,GAAG,SAAS,GACxC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAoC3C;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,+BAA+B,CAmBjC"}