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":"TableColumnSchemaEditorUtils.js","names":[],"sources":["../../../src/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.ts"],"sourcesContent":["import {\n convertToEntityType,\n isDataset,\n isDatasetCollection,\n isEntityView,\n isSubmissionView,\n} from '@/utils/functions/EntityTypeUtils'\nimport { ViewEntityType } from '@sage-bionetworks/synapse-client'\nimport {\n ColumnModel,\n ColumnType,\n ColumnTypeEnum,\n Entity,\n ENTITY_VIEW_TYPE_MASK_DATASET,\n ENTITY_VIEW_TYPE_MASK_FILE,\n FacetType,\n ViewScope,\n} from '@sage-bionetworks/synapse-types'\nimport { JSONSchema7Definition } from 'json-schema'\nimport { SetOptional } from 'type-fest'\nimport {\n ColumnModelFormData,\n JsonSubColumnModelFormData,\n} from './Validators/ColumnModelValidator'\n\n/**\n * These column types can only be used in Tables. They can not be used in views.\n * See SWC-6333 - for views, only allow column types that are mapped to annotation types.\n */\nconst unsupportedTypesForViews = [ColumnTypeEnum.JSON]\n\n/**\n * Get the allowed column types for a column model based on the table type.\n * @param isView - whether the base table is a view\n * @param isJsonSubColumnFacet - whether the proposed column is a JSON subcolumn facet\n */\nexport function getAllowedColumnTypes(\n isView: boolean,\n isJsonSubColumnFacet: boolean,\n): ColumnTypeEnum[] {\n return Object.values(ColumnTypeEnum)\n .filter(columnType =>\n isView ? !unsupportedTypesForViews.includes(columnType) : true,\n )\n .filter(columnType => {\n if (isJsonSubColumnFacet) {\n switch (columnType) {\n // JSON Subcolumns cannot be JSON or LIST types\n case ColumnTypeEnum.JSON:\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.INTEGER_LIST:\n case ColumnTypeEnum.BOOLEAN_LIST:\n case ColumnTypeEnum.DATE_LIST:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.ENTITYID_LIST:\n return false\n default:\n return true\n }\n }\n return true\n })\n}\n\nexport function getFacetTypeFriendlyName(facetType: FacetType) {\n switch (facetType) {\n case 'enumeration':\n return 'Values'\n case 'range':\n return 'Range'\n default:\n return facetType\n }\n}\nexport function getColumnTypeFriendlyName(type: ColumnType | ColumnTypeEnum) {\n switch (type) {\n case ColumnTypeEnum.STRING:\n return 'String'\n case ColumnTypeEnum.DOUBLE:\n return 'Double'\n case ColumnTypeEnum.BOOLEAN:\n return 'Boolean'\n case ColumnTypeEnum.INTEGER:\n return 'Integer'\n case ColumnTypeEnum.DATE:\n return 'Date'\n case ColumnTypeEnum.FILEHANDLEID:\n return 'File'\n case ColumnTypeEnum.ENTITYID:\n return 'Entity'\n case ColumnTypeEnum.LINK:\n return 'Link'\n case ColumnTypeEnum.MEDIUMTEXT:\n return 'MediumText'\n case ColumnTypeEnum.LARGETEXT:\n return 'LargeText'\n case ColumnTypeEnum.USERID:\n return 'User'\n case ColumnTypeEnum.STRING_LIST:\n return 'String List'\n case ColumnTypeEnum.INTEGER_LIST:\n return 'Integer List'\n case ColumnTypeEnum.BOOLEAN_LIST:\n return 'Boolean List'\n case ColumnTypeEnum.DATE_LIST:\n return 'Date List'\n case ColumnTypeEnum.USERID_LIST:\n return 'User ID List'\n case ColumnTypeEnum.ENTITYID_LIST:\n return 'Entity ID List'\n case ColumnTypeEnum.EVALUATIONID:\n return 'Evaluation'\n case ColumnTypeEnum.SUBMISSIONID:\n return 'Submission'\n case ColumnTypeEnum.JSON:\n return 'JSON'\n default:\n return type\n }\n}\n\n/**\n * Can the given type have a size?\n *\n * @param type\n * @return\n */\nexport function canHaveSize(type: ColumnType | ColumnTypeEnum): boolean {\n switch (type) {\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.LINK:\n return true\n default:\n // all others are false\n return false\n }\n}\n\nexport function canHaveMaxListLength(\n type: ColumnType | ColumnTypeEnum,\n): boolean {\n switch (type) {\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.BOOLEAN_LIST:\n case ColumnTypeEnum.DATE_LIST:\n case ColumnTypeEnum.INTEGER_LIST:\n case ColumnTypeEnum.ENTITYID_LIST:\n return true\n default:\n // all others are false\n return false\n }\n}\n\n/**\n * Configure the facet selection based on the column type\n *\n * @param type a ColumnType for which to get the facet selection\n * @param isJsonSubColumnFacet is this a facet for a json subcolumn?\n * @return the allowed facetTypes, or null if faceting is not allowed\n */\nexport function configureFacetsForType(\n type: ColumnType | ColumnTypeEnum,\n isJsonSubColumnFacet: boolean,\n): (FacetType | undefined)[] | null {\n let allowedFacetTypes: (FacetType | undefined)[] | null\n switch (type) {\n case ColumnTypeEnum.INTEGER:\n case ColumnTypeEnum.INTEGER_LIST:\n allowedFacetTypes = ['enumeration', 'range']\n break\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.BOOLEAN:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.BOOLEAN_LIST:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.EVALUATIONID:\n allowedFacetTypes = ['enumeration']\n break\n case ColumnTypeEnum.DOUBLE:\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n allowedFacetTypes = ['range']\n break\n default:\n allowedFacetTypes = null\n }\n\n if (allowedFacetTypes && !isJsonSubColumnFacet) {\n // jsonSubColumn facets MUST have a facet definition, but regular column models do not need one\n // So allow `undefined` for regular columnModels.\n allowedFacetTypes = [undefined, ...allowedFacetTypes]\n }\n return allowedFacetTypes\n}\n\nexport function canHaveDefault(\n type: ColumnType | ColumnTypeEnum,\n isView: boolean,\n isJsonSubColumnFacet: boolean,\n) {\n // SWC-6333: default types are not allowed in views\n if (isView) {\n return false\n } else if (isJsonSubColumnFacet) {\n return false\n } else {\n switch (type) {\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.MEDIUMTEXT:\n case ColumnTypeEnum.LARGETEXT:\n case ColumnTypeEnum.JSON:\n case ColumnTypeEnum.SUBMISSIONID:\n case ColumnTypeEnum.EVALUATIONID:\n return false\n default:\n return true\n }\n }\n}\n\nexport const DEFAULT_STRING_SIZE = 50\nexport const MAX_STRING_SIZE = 1000\nexport const MAX_LIST_LENGTH = 100\n\n/**\n * Get the default max size for a given type.\n *\n * @param type\n * @return\n */\nexport function getMaxSizeForType(type: ColumnType | ColumnTypeEnum): number {\n switch (type) {\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.LINK:\n return MAX_STRING_SIZE\n default:\n throw new Error(`Type is not known to have a max size: ${type}`)\n }\n}\n\nexport function canHaveRestrictedValues(\n type: ColumnType | ColumnTypeEnum,\n isJsonSubColumnFacet: boolean,\n): boolean {\n if (isJsonSubColumnFacet) {\n return false\n }\n switch (type) {\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.INTEGER:\n case ColumnTypeEnum.ENTITYID:\n return true\n default:\n // all other are false\n return false\n }\n}\n\nfunction transformEnumValues(\n enumValues: string[],\n columnType: ColumnType | ColumnTypeEnum,\n): (string | number)[] {\n // SWC-6622 - Special case: if these are INTEGER, convert to numbers before inserting data into form components\n // The editor validates that these are integers, so inserting the strings returned by the API causes an\n // unexpected validation error\n if (columnType === ColumnTypeEnum.INTEGER) {\n return enumValues.map(value => parseInt(value))\n }\n return enumValues\n}\n\n/**\n * Transform ColumnModels returned by Synapse into the form data for the TableColumnSchemaForm.\n * Default column models, if available, are used to determine which columns should not be editable in the form.\n * @param columnModels\n * @param defaultColumns\n */\nexport function transformColumnModelsToFormData(\n columnModels: SetOptional<ColumnModel, 'id'>[],\n defaultColumns: ColumnModel[] = [],\n): ColumnModelFormData[] {\n return columnModels.map((cm): ColumnModelFormData => {\n return {\n ...cm,\n columnType: cm.columnType as ColumnTypeEnum,\n maximumSize:\n cm.maximumSize == null ? undefined : cm.maximumSize.toString(),\n maximumListLength:\n cm.maximumListLength == null\n ? undefined\n : cm.maximumListLength.toString(),\n isSelected: false,\n // If the name matches a known default column model, then we consider it to be a default column model itself\n isOriginallyDefaultColumn: defaultColumns.some(\n dcm => dcm.name === cm.name,\n ),\n jsonSubColumns: cm.jsonSubColumns\n ? cm.jsonSubColumns.map(\n (jsc): JsonSubColumnModelFormData => ({\n ...jsc,\n columnType: jsc.columnType as ColumnTypeEnum,\n isSelected: false,\n }),\n )\n : undefined,\n // If this is defaultValue for a LIST column, the value is a serialized string\n defaultValue:\n cm.defaultValue && cm.columnType.endsWith('_LIST')\n ? JSON.parse(cm.defaultValue)\n : cm.defaultValue,\n enumValues:\n cm.enumValues != null\n ? transformEnumValues(cm.enumValues, cm.columnType)\n : undefined,\n }\n })\n}\n\nexport function getViewScopeForEntity(entity: Entity): ViewScope | undefined {\n if (isEntityView(entity)) {\n return {\n scope: entity.scopeIds,\n viewTypeMask: entity.viewTypeMask,\n viewEntityType: convertToEntityType(\n entity.concreteType,\n ) as ViewEntityType,\n }\n } else if (isDataset(entity) || isDatasetCollection(entity)) {\n const mask = isDataset(entity)\n ? ENTITY_VIEW_TYPE_MASK_FILE\n : ENTITY_VIEW_TYPE_MASK_DATASET\n return {\n scope: (entity.items ?? []).map(\n item => `${item.entityId}.${item.versionNumber}`,\n ),\n viewTypeMask: mask,\n viewEntityType: convertToEntityType(\n entity.concreteType,\n ) as ViewEntityType,\n }\n } else if (isSubmissionView(entity)) {\n return {\n scope: entity.scopeIds,\n viewTypeMask: undefined,\n viewEntityType: convertToEntityType(\n entity.concreteType,\n ) as ViewEntityType,\n }\n }\n return undefined\n}\n\nexport function getJsonSchemaItemDefinitionForColumnType(\n columnType: ColumnTypeEnum,\n): JSONSchema7Definition {\n switch (columnType) {\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n return { type: 'string', minLength: 1 }\n case ColumnTypeEnum.DOUBLE:\n return { type: 'number' }\n case ColumnTypeEnum.BOOLEAN:\n case ColumnTypeEnum.BOOLEAN_LIST:\n return { type: 'boolean' }\n case ColumnTypeEnum.INTEGER:\n case ColumnTypeEnum.INTEGER_LIST:\n return { type: 'integer' }\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n return { type: 'string', format: 'datetime' }\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.LINK:\n case ColumnTypeEnum.MEDIUMTEXT:\n case ColumnTypeEnum.LARGETEXT:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.SUBMISSIONID:\n case ColumnTypeEnum.JSON:\n case ColumnTypeEnum.EVALUATIONID:\n default:\n return { type: 'string', minLength: 1 }\n }\n}\n\nconst columnModelMatchesFormData = (\n model: ColumnModel,\n target: ColumnModelFormData,\n): boolean => {\n return model.name === target.name && model.columnType === target.columnType\n}\n\nexport const findMatchingColumnModel = (\n columnModels: ColumnModel[],\n target: ColumnModelFormData,\n): ColumnModel | undefined => {\n let closestMatch: ColumnModel | undefined\n\n for (const model of columnModels) {\n if (columnModelMatchesFormData(model, target)) {\n closestMatch = model\n break\n }\n }\n\n return closestMatch\n}\n\nexport function getFormDataValueAsNumber(\n formDataValue: string | number | undefined,\n): number | null {\n const maxSize =\n formDataValue !== null ? parseFloat(String(formDataValue)) : null\n const isInteger = Number.isInteger(maxSize)\n return isInteger ? maxSize : null\n}\n\nexport const isFormDataValueSmallerThanRecommendedValue = (\n formDataValue: string | number | undefined,\n recommendedValue: number | undefined,\n): boolean => {\n const currentValue = getFormDataValueAsNumber(formDataValue)\n return recommendedValue != null && currentValue != null && currentValue > 0\n ? currentValue < recommendedValue\n : false\n}\n\nexport function doesColumnModelSatisfyAnnotationMinimums(\n columnModel: ColumnModelFormData,\n annotationColumnModel?: ColumnModel,\n): boolean {\n if (!annotationColumnModel) {\n return true\n }\n\n if (\n isFormDataValueSmallerThanRecommendedValue(\n columnModel.maximumSize,\n annotationColumnModel.maximumSize,\n ) ||\n isFormDataValueSmallerThanRecommendedValue(\n columnModel.maximumListLength,\n annotationColumnModel.maximumListLength,\n )\n ) {\n return false\n }\n\n return true\n}\n\nexport function getNumberOfColumnModelsWithValuesBelowMinimumRecommendedSizes(\n columnModels: ColumnModelFormData[],\n annotationColumnModels: ColumnModel[],\n): number {\n return columnModels.filter(cm => {\n const matchingAnnotationColumnModel = findMatchingColumnModel(\n annotationColumnModels,\n cm,\n )\n\n return !doesColumnModelSatisfyAnnotationMinimums(\n cm,\n matchingAnnotationColumnModel,\n )\n }).length\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableColumnSchemaEditorUtils.js","names":[],"sources":["../../../src/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.ts"],"sourcesContent":["import {\n convertToEntityType,\n isDataset,\n isDatasetCollection,\n isEntityView,\n isSubmissionView,\n} from '@/utils/functions/EntityTypeUtils'\nimport { ViewEntityType } from '@sage-bionetworks/synapse-client'\nimport {\n ColumnModel,\n ColumnType,\n ColumnTypeEnum,\n Entity,\n ENTITY_VIEW_TYPE_MASK_DATASET,\n ENTITY_VIEW_TYPE_MASK_FILE,\n FacetType,\n ViewScope,\n} from '@sage-bionetworks/synapse-types'\nimport { JSONSchema7Definition } from 'json-schema'\nimport { SetOptional } from 'type-fest'\nimport {\n ColumnModelFormData,\n JsonSubColumnModelFormData,\n} from './Validators/ColumnModelValidator'\n\n/**\n * These column types can only be used in Tables. They can not be used in views.\n * See SWC-6333 - for views, only allow column types that are mapped to annotation types.\n */\nconst unsupportedTypesForViews = [ColumnTypeEnum.JSON]\n\n/**\n * Get the allowed column types for a column model based on the table type.\n * @param isView - whether the base table is a view\n * @param isJsonSubColumnFacet - whether the proposed column is a JSON subcolumn facet\n */\nexport function getAllowedColumnTypes(\n isView: boolean,\n isJsonSubColumnFacet: boolean,\n): ColumnTypeEnum[] {\n return Object.values(ColumnTypeEnum)\n .filter(columnType =>\n isView ? !unsupportedTypesForViews.includes(columnType) : true,\n )\n .filter(columnType => {\n if (isJsonSubColumnFacet) {\n switch (columnType) {\n // JSON Subcolumns cannot be JSON or LIST types\n case ColumnTypeEnum.JSON:\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.INTEGER_LIST:\n case ColumnTypeEnum.BOOLEAN_LIST:\n case ColumnTypeEnum.DATE_LIST:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.ENTITYID_LIST:\n return false\n default:\n return true\n }\n }\n return true\n })\n}\n\nexport function getFacetTypeFriendlyName(facetType: FacetType) {\n switch (facetType) {\n case 'enumeration':\n return 'Values'\n case 'range':\n return 'Range'\n default:\n return facetType\n }\n}\nexport function getColumnTypeFriendlyName(type: ColumnType | ColumnTypeEnum) {\n switch (type) {\n case ColumnTypeEnum.STRING:\n return 'String'\n case ColumnTypeEnum.DOUBLE:\n return 'Double'\n case ColumnTypeEnum.BOOLEAN:\n return 'Boolean'\n case ColumnTypeEnum.INTEGER:\n return 'Integer'\n case ColumnTypeEnum.DATE:\n return 'Date'\n case ColumnTypeEnum.FILEHANDLEID:\n return 'File'\n case ColumnTypeEnum.ENTITYID:\n return 'Entity'\n case ColumnTypeEnum.LINK:\n return 'Link'\n case ColumnTypeEnum.MEDIUMTEXT:\n return 'MediumText'\n case ColumnTypeEnum.LARGETEXT:\n return 'LargeText'\n case ColumnTypeEnum.USERID:\n return 'User'\n case ColumnTypeEnum.STRING_LIST:\n return 'String List'\n case ColumnTypeEnum.INTEGER_LIST:\n return 'Integer List'\n case ColumnTypeEnum.BOOLEAN_LIST:\n return 'Boolean List'\n case ColumnTypeEnum.DATE_LIST:\n return 'Date List'\n case ColumnTypeEnum.USERID_LIST:\n return 'User ID List'\n case ColumnTypeEnum.ENTITYID_LIST:\n return 'Entity ID List'\n case ColumnTypeEnum.EVALUATIONID:\n return 'Evaluation'\n case ColumnTypeEnum.SUBMISSIONID:\n return 'Submission'\n case ColumnTypeEnum.JSON:\n return 'JSON'\n default:\n return type\n }\n}\n\n/**\n * Can the given type have a size?\n *\n * @param type\n * @return\n */\nexport function canHaveSize(type: ColumnType | ColumnTypeEnum): boolean {\n switch (type) {\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.LINK:\n return true\n default:\n // all others are false\n return false\n }\n}\n\nexport function canHaveMaxListLength(\n type: ColumnType | ColumnTypeEnum,\n): boolean {\n switch (type) {\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.BOOLEAN_LIST:\n case ColumnTypeEnum.DATE_LIST:\n case ColumnTypeEnum.INTEGER_LIST:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.USERID_LIST:\n return true\n default:\n // all others are false\n return false\n }\n}\n\n/**\n * Configure the facet selection based on the column type\n *\n * @param type a ColumnType for which to get the facet selection\n * @param isJsonSubColumnFacet is this a facet for a json subcolumn?\n * @return the allowed facetTypes, or null if faceting is not allowed\n */\nexport function configureFacetsForType(\n type: ColumnType | ColumnTypeEnum,\n isJsonSubColumnFacet: boolean,\n): (FacetType | undefined)[] | null {\n let allowedFacetTypes: (FacetType | undefined)[] | null\n switch (type) {\n case ColumnTypeEnum.INTEGER:\n case ColumnTypeEnum.INTEGER_LIST:\n allowedFacetTypes = ['enumeration', 'range']\n break\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.BOOLEAN:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.BOOLEAN_LIST:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.EVALUATIONID:\n allowedFacetTypes = ['enumeration']\n break\n case ColumnTypeEnum.DOUBLE:\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n allowedFacetTypes = ['range']\n break\n default:\n allowedFacetTypes = null\n }\n\n if (allowedFacetTypes && !isJsonSubColumnFacet) {\n // jsonSubColumn facets MUST have a facet definition, but regular column models do not need one\n // So allow `undefined` for regular columnModels.\n allowedFacetTypes = [undefined, ...allowedFacetTypes]\n }\n return allowedFacetTypes\n}\n\n/**\n * Column types that are not allowed to have a default value.\n * @see the `defaultValue` property description on the ColumnModel schema in the Synapse OpenAPI specification.\n */\nexport const DISALLOWED_DEFAULT_VALUE_COLUMN_TYPES: ColumnTypeEnum[] = [\n ColumnTypeEnum.ENTITYID,\n ColumnTypeEnum.ENTITYID_LIST,\n ColumnTypeEnum.EVALUATIONID,\n ColumnTypeEnum.FILEHANDLEID,\n ColumnTypeEnum.LARGETEXT,\n ColumnTypeEnum.MEDIUMTEXT,\n ColumnTypeEnum.SUBMISSIONID,\n ColumnTypeEnum.USERID,\n ColumnTypeEnum.USERID_LIST,\n]\n\nexport function canHaveDefault(\n type: ColumnType | ColumnTypeEnum,\n isView: boolean,\n isJsonSubColumnFacet: boolean,\n) {\n // SWC-6333: default types are not allowed in views\n if (isView) {\n return false\n } else if (isJsonSubColumnFacet) {\n return false\n } else {\n return !DISALLOWED_DEFAULT_VALUE_COLUMN_TYPES.includes(\n type as ColumnTypeEnum,\n )\n }\n}\n\nexport const DEFAULT_STRING_SIZE = 50\nexport const MAX_STRING_SIZE = 1000\nexport const DEFAULT_LIST_LENGTH = 100\n\n/** The maximum number of characters allowed in a column name. */\nexport const MAX_COLUMN_NAME_LENGTH = 256\n\n/** The maximum number of enumeration values allowed for a single column. */\nexport const MAX_ENUM_VALUES = 100\n\n/**\n * The maximum total character budget for a list column. The server enforces that\n * `maximumListLength * <per-element character size>` does not exceed this value.\n */\nexport const LIST_LENGTH_CHARACTER_BUDGET = 100_000\n\n/**\n * The fixed per-element character size (in the list-length budget) for list column types\n * whose element size is not configurable. STRING_LIST is excluded because its per-element\n * size is the configurable `maximumSize`.\n */\nconst FIXED_LIST_ELEMENT_CHARACTER_SIZE: Partial<\n Record<ColumnTypeEnum, number>\n> = {\n [ColumnTypeEnum.INTEGER_LIST]: 20,\n [ColumnTypeEnum.DATE_LIST]: 20,\n [ColumnTypeEnum.USERID_LIST]: 20,\n [ColumnTypeEnum.BOOLEAN_LIST]: 5,\n [ColumnTypeEnum.ENTITYID_LIST]: 44,\n}\n\n/**\n * Get the default max size for a given type.\n *\n * @param type\n * @return\n */\nexport function getMaxSizeForType(type: ColumnType | ColumnTypeEnum): number {\n switch (type) {\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n case ColumnTypeEnum.LINK:\n return MAX_STRING_SIZE\n default:\n throw new Error(`Type is not known to have a max size: ${type}`)\n }\n}\n\n/**\n * Get the maximum allowed `maximumListLength` for a list column type.\n *\n * The server enforces a total character budget of {@link LIST_LENGTH_CHARACTER_BUDGET}.\n * For STRING_LIST the per-element size is the configurable `maximumSize` (defaulting to\n * {@link DEFAULT_STRING_SIZE}); for all other list types the per-element size is fixed.\n *\n * @param type the list column type\n * @param maximumSize the configured element size, used only for STRING_LIST\n * @return the maximum allowed list length\n */\nexport function getMaxListLengthForType(\n type: ColumnType | ColumnTypeEnum,\n maximumSize?: number,\n): number {\n if (type === ColumnTypeEnum.STRING_LIST) {\n const elementSize = maximumSize ?? DEFAULT_STRING_SIZE\n return Math.floor(LIST_LENGTH_CHARACTER_BUDGET / elementSize)\n }\n const elementSize = FIXED_LIST_ELEMENT_CHARACTER_SIZE[type as ColumnTypeEnum]\n if (elementSize == null) {\n throw new Error(`Type is not known to have a max list length: ${type}`)\n }\n return Math.floor(LIST_LENGTH_CHARACTER_BUDGET / elementSize)\n}\n\nexport function canHaveRestrictedValues(\n type: ColumnType | ColumnTypeEnum,\n isJsonSubColumnFacet: boolean,\n): boolean {\n if (isJsonSubColumnFacet) {\n return false\n }\n switch (type) {\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.INTEGER:\n case ColumnTypeEnum.ENTITYID:\n return true\n default:\n // all other are false\n return false\n }\n}\n\nfunction transformEnumValues(\n enumValues: string[],\n columnType: ColumnType | ColumnTypeEnum,\n): (string | number)[] {\n // SWC-6622 - Special case: if these are INTEGER, convert to numbers before inserting data into form components\n // The editor validates that these are integers, so inserting the strings returned by the API causes an\n // unexpected validation error\n if (columnType === ColumnTypeEnum.INTEGER) {\n return enumValues.map(value => parseInt(value))\n }\n return enumValues\n}\n\n/**\n * Transform ColumnModels returned by Synapse into the form data for the TableColumnSchemaForm.\n * Default column models, if available, are used to determine which columns should not be editable in the form.\n * @param columnModels\n * @param defaultColumns\n */\nexport function transformColumnModelsToFormData(\n columnModels: SetOptional<ColumnModel, 'id'>[],\n defaultColumns: ColumnModel[] = [],\n): ColumnModelFormData[] {\n return columnModels.map((cm): ColumnModelFormData => {\n return {\n ...cm,\n columnType: cm.columnType as ColumnTypeEnum,\n maximumSize:\n cm.maximumSize == null ? undefined : cm.maximumSize.toString(),\n maximumListLength:\n cm.maximumListLength == null\n ? undefined\n : cm.maximumListLength.toString(),\n isSelected: false,\n // If the name matches a known default column model, then we consider it to be a default column model itself\n isOriginallyDefaultColumn: defaultColumns.some(\n dcm => dcm.name === cm.name,\n ),\n jsonSubColumns: cm.jsonSubColumns\n ? cm.jsonSubColumns.map(\n (jsc): JsonSubColumnModelFormData => ({\n ...jsc,\n columnType: jsc.columnType as ColumnTypeEnum,\n isSelected: false,\n }),\n )\n : undefined,\n // If this is defaultValue for a LIST column, the value is a serialized string\n defaultValue:\n cm.defaultValue && cm.columnType.endsWith('_LIST')\n ? JSON.parse(cm.defaultValue)\n : cm.defaultValue,\n enumValues:\n cm.enumValues != null\n ? transformEnumValues(cm.enumValues, cm.columnType)\n : undefined,\n }\n })\n}\n\nexport function getViewScopeForEntity(entity: Entity): ViewScope | undefined {\n if (isEntityView(entity)) {\n return {\n scope: entity.scopeIds,\n viewTypeMask: entity.viewTypeMask,\n viewEntityType: convertToEntityType(\n entity.concreteType,\n ) as ViewEntityType,\n }\n } else if (isDataset(entity) || isDatasetCollection(entity)) {\n const mask = isDataset(entity)\n ? ENTITY_VIEW_TYPE_MASK_FILE\n : ENTITY_VIEW_TYPE_MASK_DATASET\n return {\n scope: (entity.items ?? []).map(\n item => `${item.entityId}.${item.versionNumber}`,\n ),\n viewTypeMask: mask,\n viewEntityType: convertToEntityType(\n entity.concreteType,\n ) as ViewEntityType,\n }\n } else if (isSubmissionView(entity)) {\n return {\n scope: entity.scopeIds,\n viewTypeMask: undefined,\n viewEntityType: convertToEntityType(\n entity.concreteType,\n ) as ViewEntityType,\n }\n }\n return undefined\n}\n\nexport function getJsonSchemaItemDefinitionForColumnType(\n columnType: ColumnTypeEnum,\n): JSONSchema7Definition {\n switch (columnType) {\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n return { type: 'string', minLength: 1 }\n case ColumnTypeEnum.DOUBLE:\n return { type: 'number' }\n case ColumnTypeEnum.BOOLEAN:\n case ColumnTypeEnum.BOOLEAN_LIST:\n return { type: 'boolean' }\n case ColumnTypeEnum.INTEGER:\n case ColumnTypeEnum.INTEGER_LIST:\n return { type: 'integer' }\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n return { type: 'string', format: 'datetime' }\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.LINK:\n case ColumnTypeEnum.MEDIUMTEXT:\n case ColumnTypeEnum.LARGETEXT:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.SUBMISSIONID:\n case ColumnTypeEnum.JSON:\n case ColumnTypeEnum.EVALUATIONID:\n default:\n return { type: 'string', minLength: 1 }\n }\n}\n\nconst columnModelMatchesFormData = (\n model: ColumnModel,\n target: ColumnModelFormData,\n): boolean => {\n return model.name === target.name && model.columnType === target.columnType\n}\n\nexport const findMatchingColumnModel = (\n columnModels: ColumnModel[],\n target: ColumnModelFormData,\n): ColumnModel | undefined => {\n let closestMatch: ColumnModel | undefined\n\n for (const model of columnModels) {\n if (columnModelMatchesFormData(model, target)) {\n closestMatch = model\n break\n }\n }\n\n return closestMatch\n}\n\nexport function getFormDataValueAsNumber(\n formDataValue: string | number | undefined,\n): number | null {\n const maxSize =\n formDataValue !== null ? parseFloat(String(formDataValue)) : null\n const isInteger = Number.isInteger(maxSize)\n return isInteger ? maxSize : null\n}\n\nexport const isFormDataValueSmallerThanRecommendedValue = (\n formDataValue: string | number | undefined,\n recommendedValue: number | undefined,\n): boolean => {\n const currentValue = getFormDataValueAsNumber(formDataValue)\n return recommendedValue != null && currentValue != null && currentValue > 0\n ? currentValue < recommendedValue\n : false\n}\n\nexport function doesColumnModelSatisfyAnnotationMinimums(\n columnModel: ColumnModelFormData,\n annotationColumnModel?: ColumnModel,\n): boolean {\n if (!annotationColumnModel) {\n return true\n }\n\n if (\n isFormDataValueSmallerThanRecommendedValue(\n columnModel.maximumSize,\n annotationColumnModel.maximumSize,\n ) ||\n isFormDataValueSmallerThanRecommendedValue(\n columnModel.maximumListLength,\n annotationColumnModel.maximumListLength,\n )\n ) {\n return false\n }\n\n return true\n}\n\nexport function getNumberOfColumnModelsWithValuesBelowMinimumRecommendedSizes(\n columnModels: ColumnModelFormData[],\n annotationColumnModels: ColumnModel[],\n): number {\n return columnModels.filter(cm => {\n const matchingAnnotationColumnModel = findMatchingColumnModel(\n annotationColumnModels,\n cm,\n )\n\n return !doesColumnModelSatisfyAnnotationMinimums(\n cm,\n matchingAnnotationColumnModel,\n )\n }).length\n}\n"],"mappings":"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"}
@@ -15,8 +15,8 @@ import { groupBy as b, isEqual as x, noop as S, omit as C, times as te } from "l
15
15
  import { Box as w, Button as T, styled as E } from "@mui/material";
16
16
  import { Fragment as D, jsx as O, jsxs as k } from "react/jsx-runtime";
17
17
  import { ColumnTypeEnum as A, VIEW_CONCRETE_TYPE_VALUES as ne } from "@sage-bionetworks/synapse-types";
18
- import { Provider as j, atom as re, useAtomValue as M, useSetAtom as N } from "jotai";
19
- import { AddCircleTwoTone as P } from "@mui/icons-material";
18
+ import { AddCircleTwoTone as j } from "@mui/icons-material";
19
+ import { Provider as M, atom as re, useAtomValue as N, useSetAtom as P } from "jotai";
20
20
  import F from "pluralize";
21
21
  import { selectAtom as I, useAtomCallback as L } from "jotai/utils";
22
22
  //#region src/components/TableColumnSchemaEditor/TableColumnSchemaForm.tsx
@@ -36,7 +36,7 @@ var R = "18px 18px 1.75fr 1.75fr 0.75fr 1fr 1.25fr 1.25fr 1fr 1.25fr", z = /* @_
36
36
  borderBottomLeftRadius: "5px"
37
37
  }) }), V = E(w, { label: "ColumnHeader" })({ fontWeight: 700 }), H = "Add All Annotations";
38
38
  function U(i, s) {
39
- let { initialData: d, entityType: h, viewScope: x, onSubmit: E = S, isSubmitting: D = !1, originalColumnModels: A } = i, j = M(v(() => re((e) => e(u).length), [])), I = N(u), [z, B] = y(null), H = L(g((e) => e(u), [])), U = t(h), W = ne.includes(U), G = W, K = W, { data: q, isLoading: J } = o(x?.viewEntityType, x?.viewTypeMask, {
39
+ let { initialData: d, entityType: h, viewScope: x, onSubmit: E = S, isSubmitting: D = !1, originalColumnModels: A } = i, M = N(v(() => re((e) => e(u).length), [])), I = P(u), [z, B] = y(null), H = L(g((e) => e(u), [])), U = t(h), W = ne.includes(U), G = W, K = W, { data: q, isLoading: J } = o(x?.viewEntityType, x?.viewTypeMask, {
40
40
  enabled: K,
41
41
  staleTime: Infinity
42
42
  }), Y = a({
@@ -83,7 +83,7 @@ function U(i, s) {
83
83
  q && $(q);
84
84
  }, [q, $]), oe = g(() => {
85
85
  X && $(X);
86
- }, [X, $]), se = v(() => z ? b(z.errors, (e) => e.path[0]) : {}, [z]);
86
+ }, [X, $]), se = v(() => z ? b(z.issues, (e) => e.path[0]) : {}, [z]);
87
87
  return /* @__PURE__ */ k(w, {
88
88
  component: "form",
89
89
  sx: { py: 2.5 },
@@ -117,7 +117,7 @@ function U(i, s) {
117
117
  backgroundColor: "grey.300",
118
118
  height: "2px"
119
119
  } }),
120
- te(j, (e) => /* @__PURE__ */ O(ie, {
120
+ te(M, (e) => /* @__PURE__ */ O(ie, {
121
121
  entityType: h,
122
122
  columnModelIndex: e,
123
123
  disabled: D,
@@ -138,13 +138,13 @@ function U(i, s) {
138
138
  onClick: () => {
139
139
  I({ type: "appendColumn" });
140
140
  },
141
- startIcon: /* @__PURE__ */ O(P, {}),
141
+ startIcon: /* @__PURE__ */ O(j, {}),
142
142
  disabled: D,
143
143
  children: "Add Column"
144
144
  }),
145
145
  K && /* @__PURE__ */ k(T, {
146
146
  variant: "outlined",
147
- startIcon: O(J ? r : P, {}),
147
+ startIcon: O(J ? r : j, {}),
148
148
  onClick: () => {
149
149
  ae();
150
150
  },
@@ -157,7 +157,7 @@ function U(i, s) {
157
157
  }),
158
158
  G && /* @__PURE__ */ O(T, {
159
159
  variant: "outlined",
160
- startIcon: O(Z ? r : P, {}),
160
+ startIcon: O(Z ? r : j, {}),
161
161
  disabled: Z || D,
162
162
  onClick: () => {
163
163
  oe();
@@ -176,7 +176,7 @@ function U(i, s) {
176
176
  });
177
177
  }
178
178
  function ie(e) {
179
- let { columnModelIndex: t, entityType: n, disabled: r, columnModelValidationErrors: a = null, annotationColumnModels: o, originalColumnModels: c } = e, l = N(u), f = M(v(() => I(u, (e) => e[t], x), [t])), p = c ? s(c, f) : void 0, m = o ? s(o, f) : void 0, h = v(() => a ? b(a.filter((e) => e.path[0] === t && e.path[1] == "jsonSubColumns"), (e) => e.path[2]) : {}, [t, a]);
179
+ let { columnModelIndex: t, entityType: n, disabled: r, columnModelValidationErrors: a = null, annotationColumnModels: o, originalColumnModels: c } = e, l = P(u), f = N(v(() => I(u, (e) => e[t], x), [t])), p = c ? s(c, f) : void 0, m = o ? s(o, f) : void 0, h = v(() => a ? b(a.filter((e) => e.path[0] === t && e.path[1] == "jsonSubColumns"), (e) => e.path[2]) : {}, [t, a]);
180
180
  if (!f) return /* @__PURE__ */ O(D, {});
181
181
  let g = f.isOriginallyDefaultColumn;
182
182
  return /* @__PURE__ */ k(D, { children: [
@@ -216,7 +216,7 @@ function ie(e) {
216
216
  ] });
217
217
  }
218
218
  var W = h(U), G = h(function(e, t) {
219
- return /* @__PURE__ */ O(j, { children: /* @__PURE__ */ O(W, {
219
+ return /* @__PURE__ */ O(M, { children: /* @__PURE__ */ O(W, {
220
220
  ...e,
221
221
  ref: t
222
222
  }) });
@@ -1 +1 @@
1
- {"version":3,"file":"TableColumnSchemaForm.js","names":[],"sources":["../../../src/components/TableColumnSchemaEditor/TableColumnSchemaForm.tsx"],"sourcesContent":["import AddToList from '@/assets/icons/AddToList'\nimport {\n useGetAnnotationColumnModels,\n useGetDefaultColumnModels,\n} from '@/synapse-queries/table/useColumnModel'\nimport {\n convertToConcreteEntityType,\n entityTypeToFriendlyName,\n} from '@/utils/functions/EntityTypeUtils'\nimport { AddCircleTwoTone } from '@mui/icons-material'\nimport { Box, Button, styled } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport {\n ColumnModel,\n ColumnTypeEnum,\n VIEW_CONCRETE_TYPE_VALUES,\n ViewScope,\n} from '@sage-bionetworks/synapse-types'\nimport { atom, Provider, useAtomValue, useSetAtom } from 'jotai'\nimport { selectAtom, useAtomCallback } from 'jotai/utils'\nimport { groupBy, isEqual, noop, omit, times } from 'lodash-es'\nimport pluralize from 'pluralize'\nimport {\n ForwardedRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport { SetOptional } from 'type-fest'\nimport { ZodError, ZodIssue } from 'zod'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport { displayToast } from '../ToastMessage'\nimport ColumnModelForm from './ColumnModelForm'\nimport ImportTableColumnsButton from './ImportTableColumnsButton'\nimport {\n findMatchingColumnModel,\n getAllowedColumnTypes,\n transformColumnModelsToFormData,\n} from './TableColumnSchemaEditorUtils'\nimport { TableColumnSchemaFormActions } from './TableColumnSchemaFormActions'\nimport { tableColumnSchemaFormDataAtom } from './TableColumnSchemaFormReducer'\nimport { validateColumnModelFormData } from './Validators/ColumnModelValidator'\n\nconst COLUMN_SCHEMA_FORM_GRID_TEMPLATE_COLUMNS =\n '18px 18px 1.75fr 1.75fr 0.75fr 1fr 1.25fr 1.25fr 1fr 1.25fr'\nconst GRID_CONTAINER_Y_MARGIN_PX = 6\nexport const HIERARCHY_VERTICAL_LINE_COMPONENT = (\n <Box\n sx={{\n width: '1px',\n height: `calc(100% + 2 * ${GRID_CONTAINER_Y_MARGIN_PX}px)`,\n backgroundColor: 'grey.400',\n marginLeft: '8px',\n }}\n />\n)\nexport const HIERARCHY_END_COMPONENT = (\n <Box\n sx={theme => ({\n width: '50%',\n height: '60%',\n borderLeft: `1px solid ${theme.palette.grey[400]}`,\n borderBottom: `1px solid ${theme.palette.grey[400]}`,\n marginLeft: '8px',\n marginBottom: 'auto',\n marginRight: '0',\n borderBottomLeftRadius: '5px',\n })}\n />\n)\n\nexport type SubmitHandle = {\n // Allow the parent component to trigger a submit of the form, so this may be embedded in an arbitrary modal.\n submit: () => void\n // Imperative handle to get the data out of the form for SWC compatibility\n getEditedColumnModels: () => SetOptional<ColumnModel, 'id'>[]\n // Used to check if all form data is valid. Returns the current validity state\n validate: () => boolean\n}\n\ntype TableColumnSchemaFormProps = {\n /* The type of the Table, which determines various schema restrictions and form functionality */\n entityType: EntityType\n /* If this is an entity view, the ViewScope can be used to determine the default column models and fetch annotation column models */\n viewScope?: ViewScope\n initialData?: SetOptional<ColumnModel, 'id'>[]\n onSubmit?: (newColumnModels: SetOptional<ColumnModel, 'id'>[]) => void\n isSubmitting?: boolean\n /** The original/current column models that are applied to the table, if they exist. */\n originalColumnModels?: ColumnModel[]\n}\n\nconst ColumnHeader = styled(Box, {\n label: 'ColumnHeader',\n})({\n fontWeight: 700,\n})\n\nexport const ADD_ALL_ANNOTATIONS_BUTTON_TEXT = 'Add All Annotations'\n\nfunction TableColumnSchemaFormInternal(\n props: TableColumnSchemaFormProps,\n ref: ForwardedRef<SubmitHandle>,\n) {\n const {\n initialData,\n entityType,\n viewScope,\n onSubmit = noop,\n isSubmitting = false,\n originalColumnModels,\n } = props\n\n const numColumnModels = useAtomValue(\n useMemo(() => atom(get => get(tableColumnSchemaFormDataAtom).length), []),\n )\n\n const dispatch = useSetAtom(tableColumnSchemaFormDataAtom)\n const [validationErrors, setValidationErrors] = useState<ZodError | null>(\n null,\n )\n\n // useAtomCallback will let us imperatively read the form data, instead of tracking it in state and triggering a full re-render of the form when any data changes\n const readFormData = useAtomCallback(\n useCallback(get => {\n return get(tableColumnSchemaFormDataAtom)\n }, []),\n )\n const concreteTableType = convertToConcreteEntityType(entityType)\n const isView = VIEW_CONCRETE_TYPE_VALUES.includes(\n concreteTableType as (typeof VIEW_CONCRETE_TYPE_VALUES)[number],\n )\n const hasAnnotationColumnModels = isView,\n hasDefaultColumnModels = isView\n\n const { data: defaultColumnModels, isLoading: isLoadingDefaultColumns } =\n useGetDefaultColumnModels(\n viewScope?.viewEntityType!,\n viewScope?.viewTypeMask,\n {\n enabled: hasDefaultColumnModels,\n staleTime: Infinity, // The default column models will never change\n },\n )\n\n const annotationColumnModelsQuery = useGetAnnotationColumnModels(\n {\n viewScope: viewScope!,\n includeDerivedAnnotations: true,\n concreteType:\n 'org.sagebionetworks.repo.model.table.ViewColumnModelRequest',\n },\n {\n enabled: hasAnnotationColumnModels,\n },\n )\n\n const {\n data: annotationColumnModels,\n isLoading: isLoadingAnnotationColumns,\n } = annotationColumnModelsQuery\n\n /**\n * Set the initialData in the form state atom on mount, if it exists and we have no data.\n */\n useEffect(() => {\n if (initialData && !isLoadingDefaultColumns) {\n dispatch({\n type: 'setValue',\n value: transformColumnModelsToFormData(\n initialData,\n defaultColumnModels ?? [],\n ),\n })\n }\n // Don't re-run if initial data changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLoadingDefaultColumns])\n\n const validateInternal = useCallback(() => {\n const result = validateColumnModelFormData(readFormData())\n if (result.success) {\n setValidationErrors(null)\n } else {\n setValidationErrors(result.error)\n }\n return result\n }, [readFormData])\n\n useImperativeHandle(ref, () => {\n return {\n submit() {\n const result = validateInternal()\n if (result.success) {\n onSubmit(result.data)\n }\n },\n getEditedColumnModels() {\n const result = validateInternal()\n if (!result.success) {\n throw new Error('Column models were not valid')\n }\n return result.data\n },\n validate() {\n const result = validateInternal()\n return result.success\n },\n }\n }, [onSubmit, validateInternal])\n\n // Generic function to add a set of columns to the schema (e.g. default columns, annotation columns)\n const addColumnSet = useCallback(\n (newColumns: SetOptional<ColumnModel, 'id'>[]) => {\n const currentFormData = readFormData()\n let columnsToAdd = newColumns.filter(\n (cm: SetOptional<ColumnModel, 'id'>) => {\n // Don't add columns that cannot be added (for example, Views cannot have JSON columns)\n if (\n !getAllowedColumnTypes(isView, false).includes(\n cm.columnType as ColumnTypeEnum,\n )\n ) {\n return false\n }\n // Only add columns that are not already present\n // Use the name column to match because the ID may vary, e.g. if the facetType was changed\n return !currentFormData.find(fd => fd.name === cm.name)\n },\n )\n // Remove the ID column so TableColumnSchemaUtils.createTableUpdateTransactionRequest recognizes these as new columns\n // createTableUpdateTransactionRequest uses the existing column ID to track column updates in the table, so any new columns should have no ID\n // The user can also modify these columns before submitting them, so the ID may not be accurate when we end up submitting them\n columnsToAdd = columnsToAdd.map(cm => omit(cm, ['id']))\n if (columnsToAdd.length > 0) {\n dispatch({\n type: 'setValue',\n value: [\n ...currentFormData,\n ...transformColumnModelsToFormData(\n columnsToAdd,\n defaultColumnModels,\n ),\n ],\n })\n displayToast(\n `${columnsToAdd.length} ${pluralize(\n 'column',\n columnsToAdd.length,\n )} added to schema.`,\n 'success',\n )\n } else {\n displayToast(\n 'No columns added. All columns to add are present in the column schema.',\n 'info',\n )\n }\n },\n [defaultColumnModels, dispatch, isView, readFormData],\n )\n\n const addDefaultColumns = useCallback(() => {\n if (defaultColumnModels) {\n addColumnSet(defaultColumnModels)\n }\n }, [defaultColumnModels, addColumnSet])\n\n const addAnnotationColumns = useCallback(() => {\n if (annotationColumnModels) {\n addColumnSet(annotationColumnModels)\n }\n }, [annotationColumnModels, addColumnSet])\n\n // Put the errors into a map of columnModelIndex -> errors\n const errorsByColumnModel = useMemo(() => {\n if (validationErrors) {\n return groupBy(validationErrors.errors, e => e.path[0])\n }\n return {}\n }, [validationErrors])\n\n return (\n <Box\n component={'form'}\n sx={{\n py: 2.5,\n }}\n >\n <TableColumnSchemaFormActions\n disabled={isSubmitting}\n annotationColumnModelsQuery={annotationColumnModelsQuery}\n />\n <Box\n sx={{\n display: 'grid',\n gap: '8px',\n gridTemplateColumns: COLUMN_SCHEMA_FORM_GRID_TEMPLATE_COLUMNS,\n py: 2.5,\n }}\n >\n <ColumnHeader>{/* Checkbox */}</ColumnHeader>\n <ColumnHeader sx={{ gridColumn: '2 / span 2' }}>\n Column Name\n </ColumnHeader>\n <ColumnHeader>Column Type</ColumnHeader>\n <ColumnHeader>Size</ColumnHeader>\n <ColumnHeader>Max List Length</ColumnHeader>\n <ColumnHeader>Default Value</ColumnHeader>\n <ColumnHeader>Restrict Values</ColumnHeader>\n <ColumnHeader>Facet</ColumnHeader>\n <ColumnHeader>Sort Facet Values</ColumnHeader>\n <Box\n sx={{\n gridColumn: '1 / span 11',\n backgroundColor: 'grey.300',\n height: '2px',\n }}\n />\n {times(numColumnModels, index => {\n return (\n <TableColumnSchemaFormRow\n entityType={entityType}\n columnModelIndex={index}\n disabled={isSubmitting}\n key={index}\n columnModelValidationErrors={errorsByColumnModel[index]}\n annotationColumnModels={annotationColumnModels}\n originalColumnModels={originalColumnModels}\n />\n )\n })}\n </Box>\n <Box\n sx={{\n display: 'flex',\n gap: 1,\n }}\n >\n <Button\n variant={'outlined'}\n onClick={() => {\n dispatch({ type: 'appendColumn' })\n }}\n startIcon={<AddCircleTwoTone />}\n disabled={isSubmitting}\n >\n Add Column\n </Button>\n\n {hasDefaultColumnModels && (\n <Button\n variant={'outlined'}\n startIcon={\n isLoadingDefaultColumns ? (\n <SynapseSpinner />\n ) : (\n <AddCircleTwoTone />\n )\n }\n onClick={() => {\n addDefaultColumns()\n }}\n disabled={isLoadingDefaultColumns || isSubmitting}\n >\n Add Default {entityTypeToFriendlyName(entityType)} Columns\n </Button>\n )}\n\n {hasAnnotationColumnModels && (\n <Button\n variant={'outlined'}\n startIcon={\n isLoadingAnnotationColumns ? (\n <SynapseSpinner />\n ) : (\n <AddCircleTwoTone />\n )\n }\n disabled={isLoadingAnnotationColumns || isSubmitting}\n onClick={() => {\n addAnnotationColumns()\n }}\n >\n {ADD_ALL_ANNOTATIONS_BUTTON_TEXT}\n </Button>\n )}\n <ImportTableColumnsButton\n onAddColumns={cms => {\n addColumnSet(cms)\n }}\n disabled={isSubmitting}\n />\n </Box>\n </Box>\n )\n}\n\ntype TableColumnSchemaFormRowProps = {\n entityType: EntityType\n columnModelIndex: number\n disabled: boolean\n columnModelValidationErrors: ZodIssue[] | null\n annotationColumnModels?: ColumnModel[]\n originalColumnModels?: ColumnModel[]\n}\n\nfunction TableColumnSchemaFormRow(props: TableColumnSchemaFormRowProps) {\n const {\n columnModelIndex,\n entityType,\n disabled,\n columnModelValidationErrors = null,\n annotationColumnModels,\n originalColumnModels,\n } = props\n const dispatch = useSetAtom(tableColumnSchemaFormDataAtom)\n const columnModel = useAtomValue(\n useMemo(\n () =>\n selectAtom(\n tableColumnSchemaFormDataAtom,\n formData => formData[columnModelIndex],\n isEqual,\n ),\n [columnModelIndex],\n ),\n )\n\n // Find the original column model that matches the current column model by name and type, so we can tell the user what fields have changed\n const originalColumnModel = originalColumnModels\n ? findMatchingColumnModel(originalColumnModels, columnModel)\n : undefined\n\n // Find the closest match between passed column model and current column model with name and type\n const defaultAnnotationModel = annotationColumnModels\n ? findMatchingColumnModel(annotationColumnModels, columnModel)\n : undefined\n\n // Organize the JSON Subcolumn errors into a map of subcolumn index to errors\n const errorsForSubcolumns = useMemo(() => {\n if (columnModelValidationErrors) {\n const errorsForAllSubcolumns = columnModelValidationErrors.filter(e => {\n return e.path[0] === columnModelIndex && e.path[1] == 'jsonSubColumns'\n })\n return groupBy(errorsForAllSubcolumns, e => e.path[2])\n }\n return {}\n }, [columnModelIndex, columnModelValidationErrors])\n\n if (!columnModel) {\n return <></>\n }\n const isDefaultColumn = columnModel.isOriginallyDefaultColumn\n\n return (\n <>\n <ColumnModelForm\n entityType={entityType}\n columnModelIndex={columnModelIndex}\n isDefaultColumn={isDefaultColumn}\n disabled={disabled}\n validationErrors={columnModelValidationErrors}\n defaultAnnotationModel={defaultAnnotationModel}\n originalColumnModel={originalColumnModel}\n />\n {columnModel.columnType === ColumnTypeEnum.JSON &&\n columnModel.jsonSubColumns &&\n columnModel.jsonSubColumns.map((subColumnFacet, index) => (\n <ColumnModelForm\n key={index}\n entityType={entityType}\n columnModelIndex={columnModelIndex}\n jsonSubColumnIndex={index}\n isDefaultColumn={isDefaultColumn}\n disabled={disabled}\n validationErrors={errorsForSubcolumns[index]}\n />\n ))}\n {columnModel.columnType === ColumnTypeEnum.JSON && (\n <>\n <Box\n sx={{\n gridColumn: '1 / span 2',\n }}\n >\n {HIERARCHY_END_COMPONENT}\n </Box>\n <Box\n sx={{\n gridColumn: '3 / span 5',\n }}\n >\n <Button\n startIcon={<AddToList />}\n variant={'text'}\n disabled={disabled}\n onClick={() =>\n dispatch({ type: 'appendJsonSubColumn', columnModelIndex })\n }\n >\n Add sub-column\n </Button>\n </Box>\n </>\n )}\n </>\n )\n}\n\nconst TableColumnSchemaFormInternalWithForwardRef = forwardRef<\n SubmitHandle,\n TableColumnSchemaFormProps\n>(TableColumnSchemaFormInternal)\n\nconst TableColumnSchemaFormWrapped = forwardRef<\n SubmitHandle,\n TableColumnSchemaFormProps\n>(function TableColumnSchemaForm(props: TableColumnSchemaFormProps, ref) {\n // Wrap the form in a Jotai provider so that the internal atoms are scoped to just this component instance\n // Use forwardRef to ensure that the ref can be passed along\n return (\n <Provider>\n <TableColumnSchemaFormInternalWithForwardRef {...props} ref={ref} />\n </Provider>\n )\n})\n\nexport default TableColumnSchemaFormWrapped\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableColumnSchemaForm.js","names":[],"sources":["../../../src/components/TableColumnSchemaEditor/TableColumnSchemaForm.tsx"],"sourcesContent":["import AddToList from '@/assets/icons/AddToList'\nimport {\n useGetAnnotationColumnModels,\n useGetDefaultColumnModels,\n} from '@/synapse-queries/table/useColumnModel'\nimport {\n convertToConcreteEntityType,\n entityTypeToFriendlyName,\n} from '@/utils/functions/EntityTypeUtils'\nimport { AddCircleTwoTone } from '@mui/icons-material'\nimport { Box, Button, styled } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport {\n ColumnModel,\n ColumnTypeEnum,\n VIEW_CONCRETE_TYPE_VALUES,\n ViewScope,\n} from '@sage-bionetworks/synapse-types'\nimport { atom, Provider, useAtomValue, useSetAtom } from 'jotai'\nimport { selectAtom, useAtomCallback } from 'jotai/utils'\nimport { groupBy, isEqual, noop, omit, times } from 'lodash-es'\nimport pluralize from 'pluralize'\nimport {\n ForwardedRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport { SetOptional } from 'type-fest'\nimport { ZodError, ZodIssue } from 'zod'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport { displayToast } from '../ToastMessage'\nimport ColumnModelForm from './ColumnModelForm'\nimport ImportTableColumnsButton from './ImportTableColumnsButton'\nimport {\n findMatchingColumnModel,\n getAllowedColumnTypes,\n transformColumnModelsToFormData,\n} from './TableColumnSchemaEditorUtils'\nimport { TableColumnSchemaFormActions } from './TableColumnSchemaFormActions'\nimport { tableColumnSchemaFormDataAtom } from './TableColumnSchemaFormReducer'\nimport { validateColumnModelFormData } from './Validators/ColumnModelValidator'\n\nconst COLUMN_SCHEMA_FORM_GRID_TEMPLATE_COLUMNS =\n '18px 18px 1.75fr 1.75fr 0.75fr 1fr 1.25fr 1.25fr 1fr 1.25fr'\nconst GRID_CONTAINER_Y_MARGIN_PX = 6\nexport const HIERARCHY_VERTICAL_LINE_COMPONENT = (\n <Box\n sx={{\n width: '1px',\n height: `calc(100% + 2 * ${GRID_CONTAINER_Y_MARGIN_PX}px)`,\n backgroundColor: 'grey.400',\n marginLeft: '8px',\n }}\n />\n)\nexport const HIERARCHY_END_COMPONENT = (\n <Box\n sx={theme => ({\n width: '50%',\n height: '60%',\n borderLeft: `1px solid ${theme.palette.grey[400]}`,\n borderBottom: `1px solid ${theme.palette.grey[400]}`,\n marginLeft: '8px',\n marginBottom: 'auto',\n marginRight: '0',\n borderBottomLeftRadius: '5px',\n })}\n />\n)\n\nexport type SubmitHandle = {\n // Allow the parent component to trigger a submit of the form, so this may be embedded in an arbitrary modal.\n submit: () => void\n // Imperative handle to get the data out of the form for SWC compatibility\n getEditedColumnModels: () => SetOptional<ColumnModel, 'id'>[]\n // Used to check if all form data is valid. Returns the current validity state\n validate: () => boolean\n}\n\ntype TableColumnSchemaFormProps = {\n /* The type of the Table, which determines various schema restrictions and form functionality */\n entityType: EntityType\n /* If this is an entity view, the ViewScope can be used to determine the default column models and fetch annotation column models */\n viewScope?: ViewScope\n initialData?: SetOptional<ColumnModel, 'id'>[]\n onSubmit?: (newColumnModels: SetOptional<ColumnModel, 'id'>[]) => void\n isSubmitting?: boolean\n /** The original/current column models that are applied to the table, if they exist. */\n originalColumnModels?: ColumnModel[]\n}\n\nconst ColumnHeader = styled(Box, {\n label: 'ColumnHeader',\n})({\n fontWeight: 700,\n})\n\nexport const ADD_ALL_ANNOTATIONS_BUTTON_TEXT = 'Add All Annotations'\n\nfunction TableColumnSchemaFormInternal(\n props: TableColumnSchemaFormProps,\n ref: ForwardedRef<SubmitHandle>,\n) {\n const {\n initialData,\n entityType,\n viewScope,\n onSubmit = noop,\n isSubmitting = false,\n originalColumnModels,\n } = props\n\n const numColumnModels = useAtomValue(\n useMemo(() => atom(get => get(tableColumnSchemaFormDataAtom).length), []),\n )\n\n const dispatch = useSetAtom(tableColumnSchemaFormDataAtom)\n const [validationErrors, setValidationErrors] = useState<ZodError | null>(\n null,\n )\n\n // useAtomCallback will let us imperatively read the form data, instead of tracking it in state and triggering a full re-render of the form when any data changes\n const readFormData = useAtomCallback(\n useCallback(get => {\n return get(tableColumnSchemaFormDataAtom)\n }, []),\n )\n const concreteTableType = convertToConcreteEntityType(entityType)\n const isView = VIEW_CONCRETE_TYPE_VALUES.includes(\n concreteTableType as (typeof VIEW_CONCRETE_TYPE_VALUES)[number],\n )\n const hasAnnotationColumnModels = isView,\n hasDefaultColumnModels = isView\n\n const { data: defaultColumnModels, isLoading: isLoadingDefaultColumns } =\n useGetDefaultColumnModels(\n viewScope?.viewEntityType!,\n viewScope?.viewTypeMask,\n {\n enabled: hasDefaultColumnModels,\n staleTime: Infinity, // The default column models will never change\n },\n )\n\n const annotationColumnModelsQuery = useGetAnnotationColumnModels(\n {\n viewScope: viewScope!,\n includeDerivedAnnotations: true,\n concreteType:\n 'org.sagebionetworks.repo.model.table.ViewColumnModelRequest',\n },\n {\n enabled: hasAnnotationColumnModels,\n },\n )\n\n const {\n data: annotationColumnModels,\n isLoading: isLoadingAnnotationColumns,\n } = annotationColumnModelsQuery\n\n /**\n * Set the initialData in the form state atom on mount, if it exists and we have no data.\n */\n useEffect(() => {\n if (initialData && !isLoadingDefaultColumns) {\n dispatch({\n type: 'setValue',\n value: transformColumnModelsToFormData(\n initialData,\n defaultColumnModels ?? [],\n ),\n })\n }\n // Don't re-run if initial data changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLoadingDefaultColumns])\n\n const validateInternal = useCallback(() => {\n const result = validateColumnModelFormData(readFormData())\n if (result.success) {\n setValidationErrors(null)\n } else {\n setValidationErrors(result.error)\n }\n return result\n }, [readFormData])\n\n useImperativeHandle(ref, () => {\n return {\n submit() {\n const result = validateInternal()\n if (result.success) {\n onSubmit(result.data)\n }\n },\n getEditedColumnModels() {\n const result = validateInternal()\n if (!result.success) {\n throw new Error('Column models were not valid')\n }\n return result.data\n },\n validate() {\n const result = validateInternal()\n return result.success\n },\n }\n }, [onSubmit, validateInternal])\n\n // Generic function to add a set of columns to the schema (e.g. default columns, annotation columns)\n const addColumnSet = useCallback(\n (newColumns: SetOptional<ColumnModel, 'id'>[]) => {\n const currentFormData = readFormData()\n let columnsToAdd = newColumns.filter(\n (cm: SetOptional<ColumnModel, 'id'>) => {\n // Don't add columns that cannot be added (for example, Views cannot have JSON columns)\n if (\n !getAllowedColumnTypes(isView, false).includes(\n cm.columnType as ColumnTypeEnum,\n )\n ) {\n return false\n }\n // Only add columns that are not already present\n // Use the name column to match because the ID may vary, e.g. if the facetType was changed\n return !currentFormData.find(fd => fd.name === cm.name)\n },\n )\n // Remove the ID column so TableColumnSchemaUtils.createTableUpdateTransactionRequest recognizes these as new columns\n // createTableUpdateTransactionRequest uses the existing column ID to track column updates in the table, so any new columns should have no ID\n // The user can also modify these columns before submitting them, so the ID may not be accurate when we end up submitting them\n columnsToAdd = columnsToAdd.map(cm => omit(cm, ['id']))\n if (columnsToAdd.length > 0) {\n dispatch({\n type: 'setValue',\n value: [\n ...currentFormData,\n ...transformColumnModelsToFormData(\n columnsToAdd,\n defaultColumnModels,\n ),\n ],\n })\n displayToast(\n `${columnsToAdd.length} ${pluralize(\n 'column',\n columnsToAdd.length,\n )} added to schema.`,\n 'success',\n )\n } else {\n displayToast(\n 'No columns added. All columns to add are present in the column schema.',\n 'info',\n )\n }\n },\n [defaultColumnModels, dispatch, isView, readFormData],\n )\n\n const addDefaultColumns = useCallback(() => {\n if (defaultColumnModels) {\n addColumnSet(defaultColumnModels)\n }\n }, [defaultColumnModels, addColumnSet])\n\n const addAnnotationColumns = useCallback(() => {\n if (annotationColumnModels) {\n addColumnSet(annotationColumnModels)\n }\n }, [annotationColumnModels, addColumnSet])\n\n // Put the errors into a map of columnModelIndex -> errors\n const errorsByColumnModel = useMemo(() => {\n if (validationErrors) {\n return groupBy(validationErrors.issues, e => e.path[0])\n }\n return {}\n }, [validationErrors])\n\n return (\n <Box\n component={'form'}\n sx={{\n py: 2.5,\n }}\n >\n <TableColumnSchemaFormActions\n disabled={isSubmitting}\n annotationColumnModelsQuery={annotationColumnModelsQuery}\n />\n <Box\n sx={{\n display: 'grid',\n gap: '8px',\n gridTemplateColumns: COLUMN_SCHEMA_FORM_GRID_TEMPLATE_COLUMNS,\n py: 2.5,\n }}\n >\n <ColumnHeader>{/* Checkbox */}</ColumnHeader>\n <ColumnHeader sx={{ gridColumn: '2 / span 2' }}>\n Column Name\n </ColumnHeader>\n <ColumnHeader>Column Type</ColumnHeader>\n <ColumnHeader>Size</ColumnHeader>\n <ColumnHeader>Max List Length</ColumnHeader>\n <ColumnHeader>Default Value</ColumnHeader>\n <ColumnHeader>Restrict Values</ColumnHeader>\n <ColumnHeader>Facet</ColumnHeader>\n <ColumnHeader>Sort Facet Values</ColumnHeader>\n <Box\n sx={{\n gridColumn: '1 / span 11',\n backgroundColor: 'grey.300',\n height: '2px',\n }}\n />\n {times(numColumnModels, index => {\n return (\n <TableColumnSchemaFormRow\n entityType={entityType}\n columnModelIndex={index}\n disabled={isSubmitting}\n key={index}\n columnModelValidationErrors={errorsByColumnModel[index]}\n annotationColumnModels={annotationColumnModels}\n originalColumnModels={originalColumnModels}\n />\n )\n })}\n </Box>\n <Box\n sx={{\n display: 'flex',\n gap: 1,\n }}\n >\n <Button\n variant={'outlined'}\n onClick={() => {\n dispatch({ type: 'appendColumn' })\n }}\n startIcon={<AddCircleTwoTone />}\n disabled={isSubmitting}\n >\n Add Column\n </Button>\n\n {hasDefaultColumnModels && (\n <Button\n variant={'outlined'}\n startIcon={\n isLoadingDefaultColumns ? (\n <SynapseSpinner />\n ) : (\n <AddCircleTwoTone />\n )\n }\n onClick={() => {\n addDefaultColumns()\n }}\n disabled={isLoadingDefaultColumns || isSubmitting}\n >\n Add Default {entityTypeToFriendlyName(entityType)} Columns\n </Button>\n )}\n\n {hasAnnotationColumnModels && (\n <Button\n variant={'outlined'}\n startIcon={\n isLoadingAnnotationColumns ? (\n <SynapseSpinner />\n ) : (\n <AddCircleTwoTone />\n )\n }\n disabled={isLoadingAnnotationColumns || isSubmitting}\n onClick={() => {\n addAnnotationColumns()\n }}\n >\n {ADD_ALL_ANNOTATIONS_BUTTON_TEXT}\n </Button>\n )}\n <ImportTableColumnsButton\n onAddColumns={cms => {\n addColumnSet(cms)\n }}\n disabled={isSubmitting}\n />\n </Box>\n </Box>\n )\n}\n\ntype TableColumnSchemaFormRowProps = {\n entityType: EntityType\n columnModelIndex: number\n disabled: boolean\n columnModelValidationErrors: ZodIssue[] | null\n annotationColumnModels?: ColumnModel[]\n originalColumnModels?: ColumnModel[]\n}\n\nfunction TableColumnSchemaFormRow(props: TableColumnSchemaFormRowProps) {\n const {\n columnModelIndex,\n entityType,\n disabled,\n columnModelValidationErrors = null,\n annotationColumnModels,\n originalColumnModels,\n } = props\n const dispatch = useSetAtom(tableColumnSchemaFormDataAtom)\n const columnModel = useAtomValue(\n useMemo(\n () =>\n selectAtom(\n tableColumnSchemaFormDataAtom,\n formData => formData[columnModelIndex],\n isEqual,\n ),\n [columnModelIndex],\n ),\n )\n\n // Find the original column model that matches the current column model by name and type, so we can tell the user what fields have changed\n const originalColumnModel = originalColumnModels\n ? findMatchingColumnModel(originalColumnModels, columnModel)\n : undefined\n\n // Find the closest match between passed column model and current column model with name and type\n const defaultAnnotationModel = annotationColumnModels\n ? findMatchingColumnModel(annotationColumnModels, columnModel)\n : undefined\n\n // Organize the JSON Subcolumn errors into a map of subcolumn index to errors\n const errorsForSubcolumns = useMemo(() => {\n if (columnModelValidationErrors) {\n const errorsForAllSubcolumns = columnModelValidationErrors.filter(e => {\n return e.path[0] === columnModelIndex && e.path[1] == 'jsonSubColumns'\n })\n return groupBy(errorsForAllSubcolumns, e => e.path[2])\n }\n return {}\n }, [columnModelIndex, columnModelValidationErrors])\n\n if (!columnModel) {\n return <></>\n }\n const isDefaultColumn = columnModel.isOriginallyDefaultColumn\n\n return (\n <>\n <ColumnModelForm\n entityType={entityType}\n columnModelIndex={columnModelIndex}\n isDefaultColumn={isDefaultColumn}\n disabled={disabled}\n validationErrors={columnModelValidationErrors}\n defaultAnnotationModel={defaultAnnotationModel}\n originalColumnModel={originalColumnModel}\n />\n {columnModel.columnType === ColumnTypeEnum.JSON &&\n columnModel.jsonSubColumns &&\n columnModel.jsonSubColumns.map((subColumnFacet, index) => (\n <ColumnModelForm\n key={index}\n entityType={entityType}\n columnModelIndex={columnModelIndex}\n jsonSubColumnIndex={index}\n isDefaultColumn={isDefaultColumn}\n disabled={disabled}\n validationErrors={errorsForSubcolumns[index]}\n />\n ))}\n {columnModel.columnType === ColumnTypeEnum.JSON && (\n <>\n <Box\n sx={{\n gridColumn: '1 / span 2',\n }}\n >\n {HIERARCHY_END_COMPONENT}\n </Box>\n <Box\n sx={{\n gridColumn: '3 / span 5',\n }}\n >\n <Button\n startIcon={<AddToList />}\n variant={'text'}\n disabled={disabled}\n onClick={() =>\n dispatch({ type: 'appendJsonSubColumn', columnModelIndex })\n }\n >\n Add sub-column\n </Button>\n </Box>\n </>\n )}\n </>\n )\n}\n\nconst TableColumnSchemaFormInternalWithForwardRef = forwardRef<\n SubmitHandle,\n TableColumnSchemaFormProps\n>(TableColumnSchemaFormInternal)\n\nconst TableColumnSchemaFormWrapped = forwardRef<\n SubmitHandle,\n TableColumnSchemaFormProps\n>(function TableColumnSchemaForm(props: TableColumnSchemaFormProps, ref) {\n // Wrap the form in a Jotai provider so that the internal atoms are scoped to just this component instance\n // Use forwardRef to ensure that the ref can be passed along\n return (\n <Provider>\n <TableColumnSchemaFormInternalWithForwardRef {...props} ref={ref} />\n </Provider>\n )\n})\n\nexport default TableColumnSchemaFormWrapped\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8CA,IAAM,IACJ,+DAEW,IACX,kBAAC,GAAD,EACE,IAAI;CACF,OAAO;CACP,QAAQ;CACR,iBAAiB;CACjB,YAAY;AACd,EACD,CAAA,GAEU,IACX,kBAAC,GAAD,EACE,KAAI,OAAU;CACZ,OAAO;CACP,QAAQ;CACR,YAAY,aAAa,EAAM,QAAQ,KAAK;CAC5C,cAAc,aAAa,EAAM,QAAQ,KAAK;CAC9C,YAAY;CACZ,cAAc;CACd,aAAa;CACb,wBAAwB;AAC1B,GACD,CAAA,GAwBG,IAAe,EAAO,GAAK,EAC/B,OAAO,eACT,CAAC,EAAE,EACD,YAAY,IACd,CAAC,GAEY,IAAkC;AAE/C,SAAS,EACP,GACA,GACA;CACA,IAAM,EACJ,gBACA,eACA,cACA,cAAW,GACX,kBAAe,IACf,4BACE,GAEE,IAAkB,EACtB,QAAc,IAAK,MAAO,EAAI,CAA6B,EAAE,MAAM,GAAG,CAAC,CAAC,CAC1E,GAEM,IAAW,EAAW,CAA6B,GACnD,CAAC,GAAkB,KAAuB,EAC9C,IACF,GAGM,IAAe,EACnB,GAAY,MACH,EAAI,CAA6B,GACvC,CAAC,CAAC,CACP,GACM,IAAoB,EAA4B,CAAU,GAC1D,IAAS,GAA0B,SACvC,CACF,GACM,IAA4B,GAChC,IAAyB,GAErB,EAAE,MAAM,GAAqB,WAAW,MAC5C,EACE,GAAW,gBACX,GAAW,cACX;EACE,SAAS;EACT,WAAW;CACb,CACF,GAEI,IAA8B,EAClC;EACa;EACX,2BAA2B;EAC3B,cACE;CACJ,GACA,EACE,SAAS,EACX,CACF,GAEM,EACJ,MAAM,GACN,WAAW,MACT;CAKJ,SAAgB;EACd,AAAI,KAAe,CAAC,KAClB,EAAS;GACP,MAAM;GACN,OAAO,EACL,GACA,KAAuB,CAAC,CAC1B;EACF,CAAC;CAIL,GAAG,CAAC,CAAuB,CAAC;CAE5B,IAAM,IAAmB,QAAkB;EACzC,IAAM,IAAS,EAA4B,EAAa,CAAC;EAMzD,OALI,EAAO,UACT,EAAoB,IAAI,IAExB,EAAoB,EAAO,KAAK,GAE3B;CACT,GAAG,CAAC,CAAY,CAAC;CAEjB,EAAoB,UACX;EACL,SAAS;GACP,IAAM,IAAS,EAAiB;GAChC,AAAI,EAAO,WACT,EAAS,EAAO,IAAI;EAExB;EACA,wBAAwB;GACtB,IAAM,IAAS,EAAiB;GAChC,IAAI,CAAC,EAAO,SACV,MAAU,MAAM,8BAA8B;GAEhD,OAAO,EAAO;EAChB;EACA,WAAW;GAET,OADe,EACR,EAAO;EAChB;CACF,IACC,CAAC,GAAU,CAAgB,CAAC;CAG/B,IAAM,IAAe,GAClB,MAAiD;EAChD,IAAM,IAAkB,EAAa,GACjC,IAAe,EAAW,QAC3B,MAGI,EAAsB,GAAQ,EAAK,EAAE,SACpC,EAAG,UACL,IAMK,CAAC,EAAgB,MAAK,MAAM,EAAG,SAAS,EAAG,IAAI,IAJ7C,EAMb;EAKA,AADA,IAAe,EAAa,KAAI,MAAM,EAAK,GAAI,CAAC,IAAI,CAAC,CAAC,GAClD,EAAa,SAAS,KACxB,EAAS;GACP,MAAM;GACN,OAAO,CACL,GAAG,GACH,GAAG,EACD,GACA,CACF,CACF;EACF,CAAC,GACD,EACE,GAAG,EAAa,OAAO,GAAG,EACxB,UACA,EAAa,MACf,EAAE,oBACF,SACF,KAEA,EACE,0EACA,MACF;CAEJ,GACA;EAAC;EAAqB;EAAU;EAAQ;CAAY,CACtD,GAEM,KAAoB,QAAkB;EAC1C,AAAI,KACF,EAAa,CAAmB;CAEpC,GAAG,CAAC,GAAqB,CAAY,CAAC,GAEhC,KAAuB,QAAkB;EAC7C,AAAI,KACF,EAAa,CAAsB;CAEvC,GAAG,CAAC,GAAwB,CAAY,CAAC,GAGnC,KAAsB,QACtB,IACK,EAAQ,EAAiB,SAAQ,MAAK,EAAE,KAAK,EAAE,IAEjD,CAAC,GACP,CAAC,CAAgB,CAAC;CAErB,OACE,kBAAC,GAAD;EACE,WAAW;EACX,IAAI,EACF,IAAI,IACN;YAJF;GAME,kBAAC,GAAD;IACE,UAAU;IACmB;GAC9B,CAAA;GACD,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,KAAK;KACL,qBAAqB;KACrB,IAAI;IACN;cANF;KAQE,kBAAC,GAAD,CAA4C,CAAA;KAC5C,kBAAC,GAAD;MAAc,IAAI,EAAE,YAAY,aAAa;gBAAG;KAElC,CAAA;KACd,kBAAC,GAAD,EAAA,UAAc,cAAyB,CAAA;KACvC,kBAAC,GAAD,EAAA,UAAc,OAAkB,CAAA;KAChC,kBAAC,GAAD,EAAA,UAAc,kBAA6B,CAAA;KAC3C,kBAAC,GAAD,EAAA,UAAc,gBAA2B,CAAA;KACzC,kBAAC,GAAD,EAAA,UAAc,kBAA6B,CAAA;KAC3C,kBAAC,GAAD,EAAA,UAAc,QAAmB,CAAA;KACjC,kBAAC,GAAD,EAAA,UAAc,oBAA+B,CAAA;KAC7C,kBAAC,GAAD,EACE,IAAI;MACF,YAAY;MACZ,iBAAiB;MACjB,QAAQ;KACV,EACD,CAAA;KACA,GAAM,IAAiB,MAEpB,kBAAC,IAAD;MACc;MACZ,kBAAkB;MAClB,UAAU;MAEV,6BAA6B,GAAoB;MACzB;MACF;KACvB,GAJM,CAIN,CAEJ;IACE;;GACL,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,KAAK;IACP;cAJF;KAME,kBAAC,GAAD;MACE,SAAS;MACT,eAAe;OACb,EAAS,EAAE,MAAM,eAAe,CAAC;MACnC;MACA,WAAW,kBAAC,GAAD,CAAmB,CAAA;MAC9B,UAAU;gBACX;KAEO,CAAA;KAEP,KACC,kBAAC,GAAD;MACE,SAAS;MACT,WAEI,EADF,IACG,IAEA,GAFD,CAAiB,CAEE;MAGvB,eAAe;OACb,GAAkB;MACpB;MACA,UAAU,KAA2B;gBAZvC;OAaC;OACc,EAAyB,CAAU;OAAE;MAC5C;;KAGT,KACC,kBAAC,GAAD;MACE,SAAS;MACT,WAEI,EADF,IACG,IAEA,GAFD,CAAiB,CAEE;MAGvB,UAAU,KAA8B;MACxC,eAAe;OACb,GAAqB;MACvB;;KAGM,CAAA;KAEV,kBAAC,GAAD;MACE,eAAc,MAAO;OACnB,EAAa,CAAG;MAClB;MACA,UAAU;KACX,CAAA;IACE;;EACF;;AAET;AAWA,SAAS,GAAyB,GAAsC;CACtE,IAAM,EACJ,qBACA,eACA,aACA,iCAA8B,MAC9B,2BACA,4BACE,GACE,IAAW,EAAW,CAA6B,GACnD,IAAc,EAClB,QAEI,EACE,IACA,MAAY,EAAS,IACrB,CACF,GACF,CAAC,CAAgB,CACnB,CACF,GAGM,IAAsB,IACxB,EAAwB,GAAsB,CAAW,IACzD,KAAA,GAGE,IAAyB,IAC3B,EAAwB,GAAwB,CAAW,IAC3D,KAAA,GAGE,IAAsB,QACtB,IAIK,EAHwB,EAA4B,QAAO,MACzD,EAAE,KAAK,OAAO,KAAoB,EAAE,KAAK,MAAM,gBAEzC,IAAwB,MAAK,EAAE,KAAK,EAAE,IAEhD,CAAC,GACP,CAAC,GAAkB,CAA2B,CAAC;CAElD,IAAI,CAAC,GACH,OAAO,kBAAA,GAAA,CAAI,CAAA;CAEb,IAAM,IAAkB,EAAY;CAEpC,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACc;GACM;GACD;GACP;GACV,kBAAkB;GACM;GACH;EACtB,CAAA;EACA,EAAY,eAAe,EAAe,QACzC,EAAY,kBACZ,EAAY,eAAe,KAAK,GAAgB,MAC9C,kBAAC,GAAD;GAEc;GACM;GAClB,oBAAoB;GACH;GACP;GACV,kBAAkB,EAAoB;EACvC,GAPM,CAON,CACF;EACF,EAAY,eAAe,EAAe,QACzC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GACE,IAAI,EACF,YAAY,aACd;aAEC;EACE,CAAA,GACL,kBAAC,GAAD;GACE,IAAI,EACF,YAAY,aACd;aAEA,kBAAC,GAAD;IACE,WAAW,kBAAC,GAAD,CAAY,CAAA;IACvB,SAAS;IACC;IACV,eACE,EAAS;KAAE,MAAM;KAAuB;IAAiB,CAAC;cAE7D;GAEO,CAAA;EACL,CAAA,CACL,EAAA,CAAA;CAEJ,EAAA,CAAA;AAEN;AAEA,IAAM,IAA8C,EAGlD,CAA6B,GAEzB,IAA+B,EAGnC,SAA+B,GAAmC,GAAK;CAGvE,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EAA6C,GAAI;EAAY;CAAM,CAAA,EAC3D,CAAA;AAEd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableColumnSchemaFormActions.js","names":[],"sources":["../../../src/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.tsx"],"sourcesContent":["import { useGetAnnotationColumnModels } from '@/synapse-queries/table/useColumnModel'\nimport { Healing, North, South } from '@mui/icons-material'\nimport {\n Box,\n Button,\n ButtonGroup,\n Checkbox,\n Link,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport { useAtomValue, useSetAtom } from 'jotai/index'\nimport pluralize from 'pluralize'\nimport { useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog'\nimport IconSvg from '../IconSvg'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport { getNumberOfColumnModelsWithValuesBelowMinimumRecommendedSizes } from './TableColumnSchemaEditorUtils'\nimport {\n getIsAllSelected,\n getNumberOfSelectedItems,\n tableColumnSchemaFormDataAtom,\n} from './TableColumnSchemaFormReducer'\n\nexport const USE_RECOMMENDED_SIZES_BUTTON_TEXT = 'Use Recommended Sizes'\n\nconst RECOMMENDED_SIZES_CONFIRMATION_MODAL_CONTENT = (\n <>\n <Typography variant={'body1'}>\n Proceeding will adjust columns with size values that are shorter than\n longest data in your annotations.\n </Typography>\n <Typography variant={'body1'}>\n Changed size values will appear in blue. Hover to see the previous value.\n </Typography>\n <Typography variant={'body1'}>\n Changes are saved only after clicking “Save” in the Schema editor. Click\n “Cancel” to discard unsaved changes.\n </Typography>\n </>\n)\ntype TableColumnSchemaFormActionsProps = {\n disabled?: boolean\n annotationColumnModelsQuery: ReturnType<typeof useGetAnnotationColumnModels>\n}\n\nexport function TableColumnSchemaFormActions(\n props: TableColumnSchemaFormActionsProps,\n) {\n const { disabled = false, annotationColumnModelsQuery } = props\n const dispatch = useSetAtom(tableColumnSchemaFormDataAtom)\n\n const columnModels = useAtomValue(tableColumnSchemaFormDataAtom)\n const allSelected = getIsAllSelected(columnModels)\n const numSelected = getNumberOfSelectedItems(columnModels)\n\n const [\n showUseRecommendedSizesConfirmationDialog,\n setShowUseRecommendedSizesConfirmationDialog,\n ] = useState(false)\n\n const showUseRecommendedSizesButton =\n annotationColumnModelsQuery.isLoading || annotationColumnModelsQuery.data\n const numberOfColumnsBelowRecommendedSizes = annotationColumnModelsQuery.data\n ? getNumberOfColumnModelsWithValuesBelowMinimumRecommendedSizes(\n columnModels,\n annotationColumnModelsQuery.data,\n )\n : 0\n\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1,\n }}\n >\n <Button\n aria-label={'Select All'}\n variant={'outlined'}\n color={'neutral'}\n onClick={() => {\n dispatch({ type: 'toggleSelectAll' })\n }}\n sx={{ alignSelf: 'stretch' }}\n disabled={disabled || columnModels.length == 0}\n >\n <Checkbox\n sx={{ mr: 1 }}\n checked={allSelected}\n indeterminate={numSelected > 0 && !allSelected}\n disabled={disabled || columnModels.length == 0}\n />\n <Typography\n variant=\"smallText1\"\n sx={{\n color: 'text.secondary',\n }}\n >\n {numSelected} selected\n </Typography>\n </Button>\n <ButtonGroup sx={{ alignSelf: 'stretch' }}>\n <Button\n aria-label={'Move Down'}\n variant={'outlined'}\n color={'neutral'}\n onClick={() => {\n dispatch({ type: 'moveDown' })\n }}\n disabled={disabled || numSelected == 0}\n >\n <South fontSize={'small'} />\n </Button>\n <Button\n aria-label={'Move Up'}\n variant={'outlined'}\n color={'neutral'}\n onClick={() => {\n dispatch({ type: 'moveUp' })\n }}\n disabled={disabled || numSelected == 0}\n >\n <North fontSize={'small'} />\n </Button>\n </ButtonGroup>\n <Button\n aria-label={'Delete'}\n variant={'outlined'}\n color={'neutral'}\n onClick={() => {\n dispatch({ type: 'delete' })\n }}\n sx={{ alignSelf: 'stretch' }}\n disabled={disabled || numSelected == 0}\n >\n <IconSvg fontSize={'small'} icon={'delete'} wrap={false} />\n </Button>\n <Box\n sx={{\n flexGrow: 1,\n }}\n >\n {/* spacer */}\n </Box>\n <Link\n sx={{ display: 'block', py: '10px', mr: '10px', textAlign: 'right' }}\n href=\"https://help.synapse.org/docs/Organizing-Data-With-Tables.2011038095.html\"\n target=\"_blank\"\n >\n About schemas and column types\n </Link>\n {showUseRecommendedSizesButton && (\n <>\n <ConfirmationDialog\n open={showUseRecommendedSizesConfirmationDialog}\n onConfirm={() => {\n dispatch({\n type: 'updateColumnSizesToRecommendedValues',\n annotationColumnModels: annotationColumnModelsQuery.data!,\n })\n setShowUseRecommendedSizesConfirmationDialog(false)\n }}\n onCancel={() => {\n setShowUseRecommendedSizesConfirmationDialog(false)\n }}\n title={`This will change ${numberOfColumnsBelowRecommendedSizes.toLocaleString()} ${pluralize(\n 'column',\n numberOfColumnsBelowRecommendedSizes,\n )} in this schema`}\n content={RECOMMENDED_SIZES_CONFIRMATION_MODAL_CONTENT}\n confirmButtonProps={{\n children: USE_RECOMMENDED_SIZES_BUTTON_TEXT,\n }}\n />\n <Tooltip\n title={\n numberOfColumnsBelowRecommendedSizes > 0\n ? ''\n : 'All schema values meet the minimum recommended sizes.'\n }\n >\n <Box>\n <Button\n sx={{ height: '100%' }}\n variant={'outlined'}\n startIcon={\n annotationColumnModelsQuery.isLoading ? (\n <SynapseSpinner />\n ) : (\n <Healing />\n )\n }\n onClick={() => {\n setShowUseRecommendedSizesConfirmationDialog(true)\n }}\n disabled={\n annotationColumnModelsQuery.isLoading ||\n numberOfColumnsBelowRecommendedSizes == 0\n }\n >\n Use Recommended Sizes\n </Button>\n </Box>\n </Tooltip>\n </>\n )}\n </Box>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableColumnSchemaFormActions.js","names":[],"sources":["../../../src/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.tsx"],"sourcesContent":["import { useGetAnnotationColumnModels } from '@/synapse-queries/table/useColumnModel'\nimport { Healing, North, South } from '@mui/icons-material'\nimport {\n Box,\n Button,\n ButtonGroup,\n Checkbox,\n Link,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport { useAtomValue, useSetAtom } from 'jotai/index'\nimport pluralize from 'pluralize'\nimport { useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog'\nimport IconSvg from '../IconSvg'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport { getNumberOfColumnModelsWithValuesBelowMinimumRecommendedSizes } from './TableColumnSchemaEditorUtils'\nimport {\n getIsAllSelected,\n getNumberOfSelectedItems,\n tableColumnSchemaFormDataAtom,\n} from './TableColumnSchemaFormReducer'\n\nexport const USE_RECOMMENDED_SIZES_BUTTON_TEXT = 'Use Recommended Sizes'\n\nconst RECOMMENDED_SIZES_CONFIRMATION_MODAL_CONTENT = (\n <>\n <Typography variant={'body1'}>\n Proceeding will adjust columns with size values that are shorter than\n longest data in your annotations.\n </Typography>\n <Typography variant={'body1'}>\n Changed size values will appear in blue. Hover to see the previous value.\n </Typography>\n <Typography variant={'body1'}>\n Changes are saved only after clicking “Save” in the Schema editor. Click\n “Cancel” to discard unsaved changes.\n </Typography>\n </>\n)\ntype TableColumnSchemaFormActionsProps = {\n disabled?: boolean\n annotationColumnModelsQuery: ReturnType<typeof useGetAnnotationColumnModels>\n}\n\nexport function TableColumnSchemaFormActions(\n props: TableColumnSchemaFormActionsProps,\n) {\n const { disabled = false, annotationColumnModelsQuery } = props\n const dispatch = useSetAtom(tableColumnSchemaFormDataAtom)\n\n const columnModels = useAtomValue(tableColumnSchemaFormDataAtom)\n const allSelected = getIsAllSelected(columnModels)\n const numSelected = getNumberOfSelectedItems(columnModels)\n\n const [\n showUseRecommendedSizesConfirmationDialog,\n setShowUseRecommendedSizesConfirmationDialog,\n ] = useState(false)\n\n const showUseRecommendedSizesButton =\n annotationColumnModelsQuery.isLoading || annotationColumnModelsQuery.data\n const numberOfColumnsBelowRecommendedSizes = annotationColumnModelsQuery.data\n ? getNumberOfColumnModelsWithValuesBelowMinimumRecommendedSizes(\n columnModels,\n annotationColumnModelsQuery.data,\n )\n : 0\n\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1,\n }}\n >\n <Button\n aria-label={'Select All'}\n variant={'outlined'}\n color={'neutral'}\n onClick={() => {\n dispatch({ type: 'toggleSelectAll' })\n }}\n sx={{ alignSelf: 'stretch' }}\n disabled={disabled || columnModels.length == 0}\n >\n <Checkbox\n sx={{ mr: 1 }}\n checked={allSelected}\n indeterminate={numSelected > 0 && !allSelected}\n disabled={disabled || columnModels.length == 0}\n />\n <Typography\n variant=\"smallText1\"\n sx={{\n color: 'text.secondary',\n }}\n >\n {numSelected} selected\n </Typography>\n </Button>\n <ButtonGroup sx={{ alignSelf: 'stretch' }}>\n <Button\n aria-label={'Move Down'}\n variant={'outlined'}\n color={'neutral'}\n onClick={() => {\n dispatch({ type: 'moveDown' })\n }}\n disabled={disabled || numSelected == 0}\n >\n <South fontSize={'small'} />\n </Button>\n <Button\n aria-label={'Move Up'}\n variant={'outlined'}\n color={'neutral'}\n onClick={() => {\n dispatch({ type: 'moveUp' })\n }}\n disabled={disabled || numSelected == 0}\n >\n <North fontSize={'small'} />\n </Button>\n </ButtonGroup>\n <Button\n aria-label={'Delete'}\n variant={'outlined'}\n color={'neutral'}\n onClick={() => {\n dispatch({ type: 'delete' })\n }}\n sx={{ alignSelf: 'stretch' }}\n disabled={disabled || numSelected == 0}\n >\n <IconSvg fontSize={'small'} icon={'delete'} wrap={false} />\n </Button>\n <Box\n sx={{\n flexGrow: 1,\n }}\n >\n {/* spacer */}\n </Box>\n <Link\n sx={{ display: 'block', py: '10px', mr: '10px', textAlign: 'right' }}\n href=\"https://help.synapse.org/docs/Organizing-Data-With-Tables.2011038095.html\"\n target=\"_blank\"\n >\n About schemas and column types\n </Link>\n {showUseRecommendedSizesButton && (\n <>\n <ConfirmationDialog\n open={showUseRecommendedSizesConfirmationDialog}\n onConfirm={() => {\n dispatch({\n type: 'updateColumnSizesToRecommendedValues',\n annotationColumnModels: annotationColumnModelsQuery.data!,\n })\n setShowUseRecommendedSizesConfirmationDialog(false)\n }}\n onCancel={() => {\n setShowUseRecommendedSizesConfirmationDialog(false)\n }}\n title={`This will change ${numberOfColumnsBelowRecommendedSizes.toLocaleString()} ${pluralize(\n 'column',\n numberOfColumnsBelowRecommendedSizes,\n )} in this schema`}\n content={RECOMMENDED_SIZES_CONFIRMATION_MODAL_CONTENT}\n confirmButtonProps={{\n children: USE_RECOMMENDED_SIZES_BUTTON_TEXT,\n }}\n />\n <Tooltip\n title={\n numberOfColumnsBelowRecommendedSizes > 0\n ? ''\n : 'All schema values meet the minimum recommended sizes.'\n }\n >\n <Box>\n <Button\n sx={{ height: '100%' }}\n variant={'outlined'}\n startIcon={\n annotationColumnModelsQuery.isLoading ? (\n <SynapseSpinner />\n ) : (\n <Healing />\n )\n }\n onClick={() => {\n setShowUseRecommendedSizesConfirmationDialog(true)\n }}\n disabled={\n annotationColumnModelsQuery.isLoading ||\n numberOfColumnsBelowRecommendedSizes == 0\n }\n >\n Use Recommended Sizes\n </Button>\n </Box>\n </Tooltip>\n </>\n )}\n </Box>\n )\n}\n"],"mappings":"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"}
@@ -53,46 +53,46 @@ export declare function reducer(prevState: ColumnModelFormData[], action: TableC
53
53
  columnType: ColumnTypeEnum;
54
54
  isSelected: boolean;
55
55
  isOriginallyDefaultColumn: boolean;
56
- defaultValue?: string | any[] | undefined;
57
56
  id?: string | undefined;
57
+ defaultValue?: string | any[] | undefined;
58
58
  maximumSize?: string | number | undefined;
59
59
  maximumListLength?: string | number | undefined;
60
60
  enumValues?: (string | number)[] | undefined;
61
61
  facetType?: "range" | "enumeration" | undefined;
62
+ facetSortConfig?: {
63
+ property?: "FREQUENCY" | "VALUE" | undefined;
64
+ direction?: "ASC" | "DESC" | undefined;
65
+ } | undefined;
62
66
  jsonSubColumns?: {
63
67
  name: string;
64
68
  columnType: ColumnTypeEnum;
65
- facetType: "range" | "enumeration";
66
69
  jsonPath: string;
70
+ facetType: "range" | "enumeration";
67
71
  isSelected: boolean;
68
72
  }[] | undefined;
69
- facetSortConfig?: {
70
- direction?: "ASC" | "DESC" | undefined;
71
- property?: "FREQUENCY" | "VALUE" | undefined;
72
- } | undefined;
73
73
  }[];
74
74
  export declare const tableColumnSchemaFormDataAtom: import("jotai").WritableAtom<{
75
75
  name: string;
76
76
  columnType: ColumnTypeEnum;
77
77
  isSelected: boolean;
78
78
  isOriginallyDefaultColumn: boolean;
79
- defaultValue?: string | any[] | undefined;
80
79
  id?: string | undefined;
80
+ defaultValue?: string | any[] | undefined;
81
81
  maximumSize?: string | number | undefined;
82
82
  maximumListLength?: string | number | undefined;
83
83
  enumValues?: (string | number)[] | undefined;
84
84
  facetType?: "range" | "enumeration" | undefined;
85
+ facetSortConfig?: {
86
+ property?: "FREQUENCY" | "VALUE" | undefined;
87
+ direction?: "ASC" | "DESC" | undefined;
88
+ } | undefined;
85
89
  jsonSubColumns?: {
86
90
  name: string;
87
91
  columnType: ColumnTypeEnum;
88
- facetType: "range" | "enumeration";
89
92
  jsonPath: string;
93
+ facetType: "range" | "enumeration";
90
94
  isSelected: boolean;
91
95
  }[] | undefined;
92
- facetSortConfig?: {
93
- direction?: "ASC" | "DESC" | undefined;
94
- property?: "FREQUENCY" | "VALUE" | undefined;
95
- } | undefined;
96
96
  }[], [TableColumnSchemaFormReducerAction], void>;
97
97
  export {};
98
98
  //# sourceMappingURL=TableColumnSchemaFormReducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableColumnSchemaFormReducer.js","names":[],"sources":["../../../src/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.ts"],"sourcesContent":["import { ColumnModel, ColumnTypeEnum } from '@sage-bionetworks/synapse-types'\nimport { atomWithReducer } from 'jotai/utils'\nimport { cloneDeep } from 'lodash-es'\nimport {\n canHaveMaxListLength,\n canHaveSize,\n configureFacetsForType,\n DEFAULT_STRING_SIZE,\n findMatchingColumnModel,\n isFormDataValueSmallerThanRecommendedValue,\n} from './TableColumnSchemaEditorUtils'\nimport {\n ColumnModelFormData,\n JsonSubColumnModelFormData,\n} from './Validators/ColumnModelValidator'\n\nexport function getIsAllSelected(formData: ColumnModelFormData[]) {\n return (\n formData.length > 0 &&\n formData.every(\n cm =>\n // Is selected\n cm.isSelected &&\n // And all subcolumns are selected (true if there are no subcolumns)\n (cm.jsonSubColumns ?? []).every(\n (jsc: JsonSubColumnModelFormData) => jsc.isSelected,\n ),\n )\n )\n}\n\nexport function getNumberOfSelectedItems(formData: ColumnModelFormData[]) {\n return formData.reduce((acc, curr) => {\n if (curr.isSelected) {\n acc += 1\n }\n if (curr.jsonSubColumns) {\n curr.jsonSubColumns.forEach((jsc: JsonSubColumnModelFormData) => {\n if (jsc.isSelected) {\n acc += 1\n }\n })\n }\n return acc\n }, 0)\n}\n\nexport function getDefaultColumnModelFormData(): ColumnModelFormData {\n return {\n name: '',\n columnType: ColumnTypeEnum.STRING,\n maximumSize: DEFAULT_STRING_SIZE,\n isOriginallyDefaultColumn: false,\n isSelected: false,\n }\n}\n\nexport function getDefaultJsonSubColumnFormData(): JsonSubColumnModelFormData {\n return {\n name: '',\n jsonPath: '',\n columnType: ColumnTypeEnum.STRING,\n facetType: 'enumeration',\n isSelected: false,\n }\n}\n\n/**\n * In the provided array, move items up where the predicate evaluates to true\n * @param arr the array to reorder\n * @param predicate a function that returns true if the item should be moved up\n * @returns - a new array with the reordered items\n */\nfunction moveSelectedItemsUp<T = unknown>(\n arr: T[],\n predicate: (item: T) => boolean,\n) {\n const newArr = [...arr]\n newArr.forEach((item, index) => {\n // For each item that should move up, swap it with the previous item\n if (\n // Cannot move index 0 up\n index > 0 &&\n // Only move if the predicate matches\n predicate(item) &&\n // If the previous item should also move, skip the swap\n !predicate(newArr[index - 1])\n ) {\n // swap the items\n const temp = newArr[index - 1]\n newArr[index - 1] = newArr[index]\n newArr[index] = temp\n }\n })\n return newArr\n}\n\n/**\n * In the provided array, move items down where the predicate evaluates to true\n * @param arr the array to reorder\n * @param predicate a function that returns true if the item should be moved down\n * @returns - a new array with the reordered items\n */\nfunction moveSelectedItemsDown<T = unknown>(\n arr: T[],\n predicate: (item: T) => boolean,\n) {\n const newArr = [...arr]\n // Start from the end and work backwards, otherwise items could be moved more than once\n for (let i = newArr.length - 1; i >= 0; i--) {\n const item = newArr[i]\n if (\n // Cannot move the last item down\n i < newArr.length - 1 &&\n // Only move if the predicate matches\n predicate(item) &&\n // If the next item should also be moved, don't swap\n !predicate(newArr[i + 1])\n ) {\n // swap the items\n const temp = newArr[i]\n newArr[i] = newArr[i + 1]\n newArr[i + 1] = temp\n }\n }\n return newArr\n}\n\ntype TableColumnSchemaFormReducerAction =\n | {\n type: 'setValue'\n value: ColumnModelFormData[]\n }\n | {\n type: 'toggleSelect'\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n }\n | { type: 'toggleSelectAll' }\n | {\n type: 'appendColumn'\n }\n | {\n type: 'appendJsonSubColumn'\n columnModelIndex: number\n }\n | {\n type: 'setColumnModelValue'\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n value: ColumnModelFormData | JsonSubColumnModelFormData\n }\n | {\n type: 'changeColumnModelType'\n newColumnType: ColumnTypeEnum\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n }\n | {\n type: 'move'\n from: {\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n }\n to: { columnModelIndex: number; jsonSubColumnModelIndex?: number }\n }\n | {\n type: 'moveUp'\n }\n | {\n type: 'moveDown'\n }\n | {\n type: 'delete'\n }\n | {\n type: 'updateColumnSizesToRecommendedValues'\n annotationColumnModels: ColumnModel[]\n }\n\nfunction updateColumnSizesToRecommendedValues(\n action: {\n type: 'updateColumnSizesToRecommendedValues'\n annotationColumnModels: ColumnModel[]\n },\n prevState: ColumnModelFormData[],\n): ColumnModelFormData[] {\n const { annotationColumnModels } = action\n return prevState.map(cm => {\n // Note: no need to check JSON subcolumns, because Views cannot have JSON data!\n\n // Find the closest match between passed column model and current column model with name and type\n const defaultAnnotationModel = annotationColumnModels\n ? findMatchingColumnModel(annotationColumnModels, cm)\n : undefined\n\n if (defaultAnnotationModel == null) {\n // No matching annotation column, so do not change it\n return cm\n }\n\n if (\n isFormDataValueSmallerThanRecommendedValue(\n cm.maximumSize,\n defaultAnnotationModel.maximumSize,\n )\n ) {\n cm = { ...cm, maximumSize: defaultAnnotationModel.maximumSize }\n }\n\n if (\n isFormDataValueSmallerThanRecommendedValue(\n cm.maximumListLength,\n defaultAnnotationModel.maximumListLength,\n )\n ) {\n cm = {\n ...cm,\n maximumListLength: defaultAnnotationModel.maximumListLength,\n }\n }\n return cm\n })\n}\n\nfunction changeColumnModelType(\n action: {\n type: 'changeColumnModelType'\n newColumnType: ColumnTypeEnum\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n },\n prevState: ColumnModelFormData[],\n) {\n const { columnModelIndex, jsonSubColumnModelIndex, newColumnType } = action\n let newColumnModelValue: ColumnModelFormData | JsonSubColumnModelFormData\n\n // Create a copy of the selected column model\n if (prevState && prevState[columnModelIndex]) {\n if (\n prevState[columnModelIndex].jsonSubColumns &&\n jsonSubColumnModelIndex !== undefined\n ) {\n newColumnModelValue = cloneDeep(\n prevState[columnModelIndex].jsonSubColumns[jsonSubColumnModelIndex],\n )\n } else {\n newColumnModelValue = cloneDeep(prevState[columnModelIndex])\n }\n } else {\n throw new Error(\n 'Cannot change column model type for a column that does not exist',\n )\n }\n\n // Update the column model. Remove fields that no longer make sense for the new column type\n newColumnModelValue.columnType = newColumnType\n if (!canHaveSize(newColumnType) && 'maximumSize' in newColumnModelValue) {\n delete newColumnModelValue.maximumSize\n }\n if (\n !canHaveMaxListLength(newColumnType) &&\n 'maximumListLength' in newColumnModelValue\n ) {\n delete newColumnModelValue.maximumListLength\n }\n\n // Remove default and restricted values unconditionally since they may not adhere to the new column type\n if ('enumValues' in newColumnModelValue) {\n delete newColumnModelValue.enumValues\n }\n if ('defaultValue' in newColumnModelValue) {\n delete newColumnModelValue.defaultValue\n }\n\n const allowedFacetTypes = configureFacetsForType(\n newColumnType,\n !!jsonSubColumnModelIndex,\n )\n if (\n 'facetType' in newColumnModelValue &&\n (allowedFacetTypes === null ||\n !allowedFacetTypes.includes(newColumnModelValue.facetType))\n ) {\n delete newColumnModelValue.facetType\n }\n\n if (\n 'jsonSubColumns' in newColumnModelValue &&\n newColumnType !== ColumnTypeEnum.JSON\n ) {\n delete newColumnModelValue.jsonSubColumns\n }\n\n // Replace the value\n if (prevState && prevState[columnModelIndex]) {\n if (\n prevState[columnModelIndex].jsonSubColumns &&\n jsonSubColumnModelIndex !== undefined\n ) {\n prevState[columnModelIndex].jsonSubColumns[jsonSubColumnModelIndex] =\n newColumnModelValue as JsonSubColumnModelFormData\n } else {\n prevState[columnModelIndex] = newColumnModelValue as ColumnModelFormData\n }\n }\n}\n\nfunction toggleSelectAll(prevState: ColumnModelFormData[]) {\n const allSelected = getIsAllSelected(prevState)\n if (allSelected) {\n return prevState.map(cm => ({\n ...cm,\n jsonSubColumns: cm.jsonSubColumns?.map(jsc => ({\n ...jsc,\n isSelected: false,\n })),\n isSelected: false,\n }))\n } else {\n return prevState.map(cm => ({\n ...cm,\n jsonSubColumns: cm.jsonSubColumns?.map(jsc => ({\n ...jsc,\n isSelected: true,\n })),\n isSelected: true,\n }))\n }\n}\n\nfunction setColumnModelValue(\n action: {\n type: 'setColumnModelValue'\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n value: ColumnModelFormData | JsonSubColumnModelFormData\n },\n prevState: ColumnModelFormData[],\n) {\n const { columnModelIndex, jsonSubColumnModelIndex, value } = action\n if (prevState && prevState[columnModelIndex]) {\n if (\n prevState[columnModelIndex].jsonSubColumns &&\n jsonSubColumnModelIndex !== undefined\n ) {\n prevState[columnModelIndex].jsonSubColumns[jsonSubColumnModelIndex] =\n value as JsonSubColumnModelFormData\n } else {\n prevState[columnModelIndex] = value as ColumnModelFormData\n }\n }\n}\n\nfunction toggleSelect(\n action: {\n type: 'toggleSelect'\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n },\n prevState: ColumnModelFormData[],\n) {\n const { columnModelIndex, jsonSubColumnModelIndex } = action\n if (prevState && prevState[columnModelIndex]) {\n if (\n prevState[columnModelIndex].jsonSubColumns &&\n jsonSubColumnModelIndex !== undefined\n ) {\n const cm =\n prevState[columnModelIndex].jsonSubColumns[jsonSubColumnModelIndex]\n prevState[columnModelIndex].jsonSubColumns[jsonSubColumnModelIndex] = {\n ...cm,\n isSelected: !cm.isSelected,\n }\n } else {\n const cm = prevState[columnModelIndex]\n prevState[columnModelIndex] = { ...cm, isSelected: !cm.isSelected }\n }\n }\n}\n\nfunction deleteColumnModel(prevState: ColumnModelFormData[]) {\n return prevState\n .filter(cm => !cm.isSelected)\n .map(cm => {\n if (cm.jsonSubColumns) {\n cm = {\n ...cm,\n jsonSubColumns: cm.jsonSubColumns.filter(\n (jsc: JsonSubColumnModelFormData) => !jsc.isSelected,\n ),\n }\n }\n return cm\n })\n}\n\n/**\n * Returns a new, shallowly-cloned array that moves the object from the `fromIndex` to the `toIndex`.\n * Derived from https://stackoverflow.com/a/6470794/9723359\n *\n * Returns the same array if the `fromIndex` and `toIndex` are the same.\n * @param arrayToReorder\n * @param fromIndex\n * @param toIndex\n */\nfunction moveElementInArray<T = unknown>(\n arrayToReorder: Array<T>,\n fromIndex: number,\n toIndex: number,\n): Array<T> {\n if (fromIndex == toIndex) {\n return arrayToReorder\n }\n const newArray = [...arrayToReorder]\n const elementToMove = newArray[fromIndex]\n newArray.splice(fromIndex, 1)\n newArray.splice(toIndex, 0, elementToMove)\n return newArray\n}\n\n/**\n * Moves a column model or jsonSubColumn from the `from` index to the `to` index\n * @param action\n * @param prevState\n */\nfunction moveColumnModel(\n action: {\n type: 'move'\n from: { columnModelIndex: number; jsonSubColumnModelIndex?: number }\n to: { columnModelIndex: number; jsonSubColumnModelIndex?: number }\n },\n prevState: ColumnModelFormData[],\n): ColumnModelFormData[] {\n const { from, to } = action\n const arrayToReorder =\n from.jsonSubColumnModelIndex !== undefined\n ? prevState[from.columnModelIndex].jsonSubColumns!\n : prevState\n\n const fromIndex =\n from.jsonSubColumnModelIndex !== undefined\n ? from.jsonSubColumnModelIndex\n : from.columnModelIndex\n\n const toIndex =\n to.jsonSubColumnModelIndex !== undefined\n ? to.jsonSubColumnModelIndex\n : to.columnModelIndex\n\n // Move the element\n const newArray = moveElementInArray<unknown>(\n arrayToReorder,\n fromIndex,\n toIndex,\n ) as ColumnModelFormData[] | JsonSubColumnModelFormData[]\n\n if (from.jsonSubColumnModelIndex !== undefined) {\n // If we moved a jsonSubColumn, update state to use the new, reordered array\n prevState[from.columnModelIndex].jsonSubColumns =\n newArray as JsonSubColumnModelFormData[]\n return prevState\n } else {\n // Otherwise, return the new, reordered array of column models\n return newArray as ColumnModelFormData[]\n }\n}\n\nexport function reducer(\n prevState: ColumnModelFormData[],\n action: TableColumnSchemaFormReducerAction,\n) {\n switch (action.type) {\n case 'setValue':\n prevState = action.value\n break\n case 'toggleSelectAll': {\n prevState = toggleSelectAll(prevState)\n break\n }\n case 'setColumnModelValue': {\n setColumnModelValue(action, prevState)\n break\n }\n case 'changeColumnModelType': {\n changeColumnModelType(action, prevState)\n break\n }\n\n case 'appendColumn':\n prevState.push(getDefaultColumnModelFormData())\n break\n case 'appendJsonSubColumn': {\n const { columnModelIndex } = action\n prevState[columnModelIndex] = {\n ...prevState[columnModelIndex],\n jsonSubColumns: [\n ...(prevState[columnModelIndex].jsonSubColumns ?? []),\n getDefaultJsonSubColumnFormData(),\n ],\n }\n break\n }\n case 'toggleSelect': {\n toggleSelect(action, prevState)\n break\n }\n case 'delete':\n prevState = deleteColumnModel(prevState)\n break\n case 'move': {\n prevState = moveColumnModel(action, prevState)\n break\n }\n case 'moveUp':\n prevState = moveSelectedItemsUp(prevState, cm => cm.isSelected)\n prevState.forEach(cm => {\n if (cm.jsonSubColumns) {\n cm.jsonSubColumns = moveSelectedItemsUp(\n cm.jsonSubColumns,\n jsc => jsc.isSelected,\n )\n }\n })\n break\n case 'moveDown':\n prevState = moveSelectedItemsDown(prevState, cm => cm.isSelected)\n prevState.forEach(cm => {\n if (cm.jsonSubColumns) {\n cm.jsonSubColumns = moveSelectedItemsDown(\n cm.jsonSubColumns,\n jsc => jsc.isSelected,\n )\n }\n })\n break\n case 'updateColumnSizesToRecommendedValues':\n prevState = updateColumnSizesToRecommendedValues(action, prevState)\n break\n default:\n throw new Error(`Unexpected action`, action)\n }\n return [...prevState]\n}\n\nexport const tableColumnSchemaFormDataAtom = atomWithReducer<\n ColumnModelFormData[],\n TableColumnSchemaFormReducerAction\n>([], reducer)\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableColumnSchemaFormReducer.js","names":[],"sources":["../../../src/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.ts"],"sourcesContent":["import { ColumnModel, ColumnTypeEnum } from '@sage-bionetworks/synapse-types'\nimport { atomWithReducer } from 'jotai/utils'\nimport { cloneDeep } from 'lodash-es'\nimport {\n canHaveMaxListLength,\n canHaveSize,\n configureFacetsForType,\n DEFAULT_STRING_SIZE,\n findMatchingColumnModel,\n isFormDataValueSmallerThanRecommendedValue,\n} from './TableColumnSchemaEditorUtils'\nimport {\n ColumnModelFormData,\n JsonSubColumnModelFormData,\n} from './Validators/ColumnModelValidator'\n\nexport function getIsAllSelected(formData: ColumnModelFormData[]) {\n return (\n formData.length > 0 &&\n formData.every(\n cm =>\n // Is selected\n cm.isSelected &&\n // And all subcolumns are selected (true if there are no subcolumns)\n (cm.jsonSubColumns ?? []).every(\n (jsc: JsonSubColumnModelFormData) => jsc.isSelected,\n ),\n )\n )\n}\n\nexport function getNumberOfSelectedItems(formData: ColumnModelFormData[]) {\n return formData.reduce((acc, curr) => {\n if (curr.isSelected) {\n acc += 1\n }\n if (curr.jsonSubColumns) {\n curr.jsonSubColumns.forEach((jsc: JsonSubColumnModelFormData) => {\n if (jsc.isSelected) {\n acc += 1\n }\n })\n }\n return acc\n }, 0)\n}\n\nexport function getDefaultColumnModelFormData(): ColumnModelFormData {\n return {\n name: '',\n columnType: ColumnTypeEnum.STRING,\n maximumSize: DEFAULT_STRING_SIZE,\n isOriginallyDefaultColumn: false,\n isSelected: false,\n }\n}\n\nexport function getDefaultJsonSubColumnFormData(): JsonSubColumnModelFormData {\n return {\n name: '',\n jsonPath: '',\n columnType: ColumnTypeEnum.STRING,\n facetType: 'enumeration',\n isSelected: false,\n }\n}\n\n/**\n * In the provided array, move items up where the predicate evaluates to true\n * @param arr the array to reorder\n * @param predicate a function that returns true if the item should be moved up\n * @returns - a new array with the reordered items\n */\nfunction moveSelectedItemsUp<T = unknown>(\n arr: T[],\n predicate: (item: T) => boolean,\n) {\n const newArr = [...arr]\n newArr.forEach((item, index) => {\n // For each item that should move up, swap it with the previous item\n if (\n // Cannot move index 0 up\n index > 0 &&\n // Only move if the predicate matches\n predicate(item) &&\n // If the previous item should also move, skip the swap\n !predicate(newArr[index - 1])\n ) {\n // swap the items\n const temp = newArr[index - 1]\n newArr[index - 1] = newArr[index]\n newArr[index] = temp\n }\n })\n return newArr\n}\n\n/**\n * In the provided array, move items down where the predicate evaluates to true\n * @param arr the array to reorder\n * @param predicate a function that returns true if the item should be moved down\n * @returns - a new array with the reordered items\n */\nfunction moveSelectedItemsDown<T = unknown>(\n arr: T[],\n predicate: (item: T) => boolean,\n) {\n const newArr = [...arr]\n // Start from the end and work backwards, otherwise items could be moved more than once\n for (let i = newArr.length - 1; i >= 0; i--) {\n const item = newArr[i]\n if (\n // Cannot move the last item down\n i < newArr.length - 1 &&\n // Only move if the predicate matches\n predicate(item) &&\n // If the next item should also be moved, don't swap\n !predicate(newArr[i + 1])\n ) {\n // swap the items\n const temp = newArr[i]\n newArr[i] = newArr[i + 1]\n newArr[i + 1] = temp\n }\n }\n return newArr\n}\n\ntype TableColumnSchemaFormReducerAction =\n | {\n type: 'setValue'\n value: ColumnModelFormData[]\n }\n | {\n type: 'toggleSelect'\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n }\n | { type: 'toggleSelectAll' }\n | {\n type: 'appendColumn'\n }\n | {\n type: 'appendJsonSubColumn'\n columnModelIndex: number\n }\n | {\n type: 'setColumnModelValue'\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n value: ColumnModelFormData | JsonSubColumnModelFormData\n }\n | {\n type: 'changeColumnModelType'\n newColumnType: ColumnTypeEnum\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n }\n | {\n type: 'move'\n from: {\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n }\n to: { columnModelIndex: number; jsonSubColumnModelIndex?: number }\n }\n | {\n type: 'moveUp'\n }\n | {\n type: 'moveDown'\n }\n | {\n type: 'delete'\n }\n | {\n type: 'updateColumnSizesToRecommendedValues'\n annotationColumnModels: ColumnModel[]\n }\n\nfunction updateColumnSizesToRecommendedValues(\n action: {\n type: 'updateColumnSizesToRecommendedValues'\n annotationColumnModels: ColumnModel[]\n },\n prevState: ColumnModelFormData[],\n): ColumnModelFormData[] {\n const { annotationColumnModels } = action\n return prevState.map(cm => {\n // Note: no need to check JSON subcolumns, because Views cannot have JSON data!\n\n // Find the closest match between passed column model and current column model with name and type\n const defaultAnnotationModel = annotationColumnModels\n ? findMatchingColumnModel(annotationColumnModels, cm)\n : undefined\n\n if (defaultAnnotationModel == null) {\n // No matching annotation column, so do not change it\n return cm\n }\n\n if (\n isFormDataValueSmallerThanRecommendedValue(\n cm.maximumSize,\n defaultAnnotationModel.maximumSize,\n )\n ) {\n cm = { ...cm, maximumSize: defaultAnnotationModel.maximumSize }\n }\n\n if (\n isFormDataValueSmallerThanRecommendedValue(\n cm.maximumListLength,\n defaultAnnotationModel.maximumListLength,\n )\n ) {\n cm = {\n ...cm,\n maximumListLength: defaultAnnotationModel.maximumListLength,\n }\n }\n return cm\n })\n}\n\nfunction changeColumnModelType(\n action: {\n type: 'changeColumnModelType'\n newColumnType: ColumnTypeEnum\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n },\n prevState: ColumnModelFormData[],\n) {\n const { columnModelIndex, jsonSubColumnModelIndex, newColumnType } = action\n let newColumnModelValue: ColumnModelFormData | JsonSubColumnModelFormData\n\n // Create a copy of the selected column model\n if (prevState && prevState[columnModelIndex]) {\n if (\n prevState[columnModelIndex].jsonSubColumns &&\n jsonSubColumnModelIndex !== undefined\n ) {\n newColumnModelValue = cloneDeep(\n prevState[columnModelIndex].jsonSubColumns[jsonSubColumnModelIndex],\n )\n } else {\n newColumnModelValue = cloneDeep(prevState[columnModelIndex])\n }\n } else {\n throw new Error(\n 'Cannot change column model type for a column that does not exist',\n )\n }\n\n // Update the column model. Remove fields that no longer make sense for the new column type\n newColumnModelValue.columnType = newColumnType\n if (!canHaveSize(newColumnType) && 'maximumSize' in newColumnModelValue) {\n delete newColumnModelValue.maximumSize\n }\n if (\n !canHaveMaxListLength(newColumnType) &&\n 'maximumListLength' in newColumnModelValue\n ) {\n delete newColumnModelValue.maximumListLength\n }\n\n // Remove default and restricted values unconditionally since they may not adhere to the new column type\n if ('enumValues' in newColumnModelValue) {\n delete newColumnModelValue.enumValues\n }\n if ('defaultValue' in newColumnModelValue) {\n delete newColumnModelValue.defaultValue\n }\n\n const allowedFacetTypes = configureFacetsForType(\n newColumnType,\n !!jsonSubColumnModelIndex,\n )\n if (\n 'facetType' in newColumnModelValue &&\n (allowedFacetTypes === null ||\n !allowedFacetTypes.includes(newColumnModelValue.facetType))\n ) {\n delete newColumnModelValue.facetType\n }\n\n if (\n 'jsonSubColumns' in newColumnModelValue &&\n newColumnType !== ColumnTypeEnum.JSON\n ) {\n delete newColumnModelValue.jsonSubColumns\n }\n\n // Replace the value\n if (prevState && prevState[columnModelIndex]) {\n if (\n prevState[columnModelIndex].jsonSubColumns &&\n jsonSubColumnModelIndex !== undefined\n ) {\n prevState[columnModelIndex].jsonSubColumns[jsonSubColumnModelIndex] =\n newColumnModelValue as JsonSubColumnModelFormData\n } else {\n prevState[columnModelIndex] = newColumnModelValue as ColumnModelFormData\n }\n }\n}\n\nfunction toggleSelectAll(prevState: ColumnModelFormData[]) {\n const allSelected = getIsAllSelected(prevState)\n if (allSelected) {\n return prevState.map(cm => ({\n ...cm,\n jsonSubColumns: cm.jsonSubColumns?.map(jsc => ({\n ...jsc,\n isSelected: false,\n })),\n isSelected: false,\n }))\n } else {\n return prevState.map(cm => ({\n ...cm,\n jsonSubColumns: cm.jsonSubColumns?.map(jsc => ({\n ...jsc,\n isSelected: true,\n })),\n isSelected: true,\n }))\n }\n}\n\nfunction setColumnModelValue(\n action: {\n type: 'setColumnModelValue'\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n value: ColumnModelFormData | JsonSubColumnModelFormData\n },\n prevState: ColumnModelFormData[],\n) {\n const { columnModelIndex, jsonSubColumnModelIndex, value } = action\n if (prevState && prevState[columnModelIndex]) {\n if (\n prevState[columnModelIndex].jsonSubColumns &&\n jsonSubColumnModelIndex !== undefined\n ) {\n prevState[columnModelIndex].jsonSubColumns[jsonSubColumnModelIndex] =\n value as JsonSubColumnModelFormData\n } else {\n prevState[columnModelIndex] = value as ColumnModelFormData\n }\n }\n}\n\nfunction toggleSelect(\n action: {\n type: 'toggleSelect'\n columnModelIndex: number\n jsonSubColumnModelIndex?: number\n },\n prevState: ColumnModelFormData[],\n) {\n const { columnModelIndex, jsonSubColumnModelIndex } = action\n if (prevState && prevState[columnModelIndex]) {\n if (\n prevState[columnModelIndex].jsonSubColumns &&\n jsonSubColumnModelIndex !== undefined\n ) {\n const cm =\n prevState[columnModelIndex].jsonSubColumns[jsonSubColumnModelIndex]\n prevState[columnModelIndex].jsonSubColumns[jsonSubColumnModelIndex] = {\n ...cm,\n isSelected: !cm.isSelected,\n }\n } else {\n const cm = prevState[columnModelIndex]\n prevState[columnModelIndex] = { ...cm, isSelected: !cm.isSelected }\n }\n }\n}\n\nfunction deleteColumnModel(prevState: ColumnModelFormData[]) {\n return prevState\n .filter(cm => !cm.isSelected)\n .map(cm => {\n if (cm.jsonSubColumns) {\n cm = {\n ...cm,\n jsonSubColumns: cm.jsonSubColumns.filter(\n (jsc: JsonSubColumnModelFormData) => !jsc.isSelected,\n ),\n }\n }\n return cm\n })\n}\n\n/**\n * Returns a new, shallowly-cloned array that moves the object from the `fromIndex` to the `toIndex`.\n * Derived from https://stackoverflow.com/a/6470794/9723359\n *\n * Returns the same array if the `fromIndex` and `toIndex` are the same.\n * @param arrayToReorder\n * @param fromIndex\n * @param toIndex\n */\nfunction moveElementInArray<T = unknown>(\n arrayToReorder: Array<T>,\n fromIndex: number,\n toIndex: number,\n): Array<T> {\n if (fromIndex == toIndex) {\n return arrayToReorder\n }\n const newArray = [...arrayToReorder]\n const elementToMove = newArray[fromIndex]\n newArray.splice(fromIndex, 1)\n newArray.splice(toIndex, 0, elementToMove)\n return newArray\n}\n\n/**\n * Moves a column model or jsonSubColumn from the `from` index to the `to` index\n * @param action\n * @param prevState\n */\nfunction moveColumnModel(\n action: {\n type: 'move'\n from: { columnModelIndex: number; jsonSubColumnModelIndex?: number }\n to: { columnModelIndex: number; jsonSubColumnModelIndex?: number }\n },\n prevState: ColumnModelFormData[],\n): ColumnModelFormData[] {\n const { from, to } = action\n const arrayToReorder =\n from.jsonSubColumnModelIndex !== undefined\n ? prevState[from.columnModelIndex].jsonSubColumns!\n : prevState\n\n const fromIndex =\n from.jsonSubColumnModelIndex !== undefined\n ? from.jsonSubColumnModelIndex\n : from.columnModelIndex\n\n const toIndex =\n to.jsonSubColumnModelIndex !== undefined\n ? to.jsonSubColumnModelIndex\n : to.columnModelIndex\n\n // Move the element\n const newArray = moveElementInArray<unknown>(\n arrayToReorder,\n fromIndex,\n toIndex,\n ) as ColumnModelFormData[] | JsonSubColumnModelFormData[]\n\n if (from.jsonSubColumnModelIndex !== undefined) {\n // If we moved a jsonSubColumn, update state to use the new, reordered array\n prevState[from.columnModelIndex].jsonSubColumns =\n newArray as JsonSubColumnModelFormData[]\n return prevState\n } else {\n // Otherwise, return the new, reordered array of column models\n return newArray as ColumnModelFormData[]\n }\n}\n\nexport function reducer(\n prevState: ColumnModelFormData[],\n action: TableColumnSchemaFormReducerAction,\n) {\n switch (action.type) {\n case 'setValue':\n prevState = action.value\n break\n case 'toggleSelectAll': {\n prevState = toggleSelectAll(prevState)\n break\n }\n case 'setColumnModelValue': {\n setColumnModelValue(action, prevState)\n break\n }\n case 'changeColumnModelType': {\n changeColumnModelType(action, prevState)\n break\n }\n\n case 'appendColumn':\n prevState.push(getDefaultColumnModelFormData())\n break\n case 'appendJsonSubColumn': {\n const { columnModelIndex } = action\n prevState[columnModelIndex] = {\n ...prevState[columnModelIndex],\n jsonSubColumns: [\n ...(prevState[columnModelIndex].jsonSubColumns ?? []),\n getDefaultJsonSubColumnFormData(),\n ],\n }\n break\n }\n case 'toggleSelect': {\n toggleSelect(action, prevState)\n break\n }\n case 'delete':\n prevState = deleteColumnModel(prevState)\n break\n case 'move': {\n prevState = moveColumnModel(action, prevState)\n break\n }\n case 'moveUp':\n prevState = moveSelectedItemsUp(prevState, cm => cm.isSelected)\n prevState.forEach(cm => {\n if (cm.jsonSubColumns) {\n cm.jsonSubColumns = moveSelectedItemsUp(\n cm.jsonSubColumns,\n jsc => jsc.isSelected,\n )\n }\n })\n break\n case 'moveDown':\n prevState = moveSelectedItemsDown(prevState, cm => cm.isSelected)\n prevState.forEach(cm => {\n if (cm.jsonSubColumns) {\n cm.jsonSubColumns = moveSelectedItemsDown(\n cm.jsonSubColumns,\n jsc => jsc.isSelected,\n )\n }\n })\n break\n case 'updateColumnSizesToRecommendedValues':\n prevState = updateColumnSizesToRecommendedValues(action, prevState)\n break\n default:\n throw new Error(`Unexpected action`, action)\n }\n return [...prevState]\n}\n\nexport const tableColumnSchemaFormDataAtom = atomWithReducer<\n ColumnModelFormData[],\n TableColumnSchemaFormReducerAction\n>([], reducer)\n"],"mappings":"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"}
@@ -2,5 +2,8 @@ import { z } from 'zod';
2
2
  /**
3
3
  * Validates and converts a value to a valid Synapse BOOLEAN value
4
4
  */
5
- export declare const booleanSchema: z.ZodUnion<[z.ZodEffects<z.ZodEnum<["true", "false"]>, boolean, "false" | "true">, z.ZodBoolean]>;
5
+ export declare const booleanSchema: z.ZodUnion<readonly [z.ZodPipe<z.ZodEnum<{
6
+ false: "false";
7
+ true: "true";
8
+ }>, z.ZodTransform<boolean, "false" | "true">>, z.ZodBoolean]>;
6
9
  //# sourceMappingURL=BooleanSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/BooleanSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;GAEG;AACH,eAAO,MAAM,aAAa,mGAA0C,CAAA"}
1
+ {"version":3,"file":"BooleanSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/BooleanSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;GAEG;AACH,eAAO,MAAM,aAAa;;;8DAA0C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanSchema.js","names":[],"sources":["../../../../src/components/TableColumnSchemaEditor/Validators/BooleanSchema.ts"],"sourcesContent":["import { z } from 'zod'\n\nconst stringToBoolean = z.enum(['true', 'false']).transform(v => v === 'true')\n\n/**\n * Validates and converts a value to a valid Synapse BOOLEAN value\n */\nexport const booleanSchema = z.union([stringToBoolean, z.boolean()])\n"],"mappings":";;AAEA,IAAM,IAAkB,EAAE,KAAK,CAAC,QAAQ,QAAQ,CAAC,CAAC,WAAU,MAAK,MAAM,OAAO,EAKjE,IAAgB,EAAE,MAAM,CAAC,GAAiB,EAAE,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"BooleanSchema.js","names":[],"sources":["../../../../src/components/TableColumnSchemaEditor/Validators/BooleanSchema.ts"],"sourcesContent":["import { z } from 'zod'\n\nconst stringToBoolean = z.enum(['true', 'false']).transform(v => v === 'true')\n\n/**\n * Validates and converts a value to a valid Synapse BOOLEAN value\n */\nexport const booleanSchema = z.union([stringToBoolean, z.boolean()])\n"],"mappings":";;AAEA,IAAM,IAAkB,EAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,WAAU,MAAK,MAAM,MAAM,GAKhE,IAAgB,EAAE,MAAM,CAAC,GAAiB,EAAE,QAAQ,CAAC,CAAC"}