synapse-react-client 4.0.9 → 4.0.11

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 (613) hide show
  1. package/dist/SWC.index.d.ts +1 -0
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +2 -1
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
  6. package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
  7. package/dist/assets/icons/CloudWarning.d.ts +5 -0
  8. package/dist/assets/icons/CloudWarning.d.ts.map +1 -0
  9. package/dist/assets/icons/CloudWarning.js +47 -0
  10. package/dist/assets/icons/CloudWarning.js.map +1 -0
  11. package/dist/assets/icons/TasksIcon.d.ts.map +1 -1
  12. package/dist/assets/icons/TasksIcon.js +6 -10
  13. package/dist/assets/icons/TasksIcon.js.map +1 -1
  14. package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.d.ts.map +1 -1
  15. package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js +69 -63
  16. package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
  17. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  18. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  19. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
  20. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  21. package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
  22. package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
  23. package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
  24. package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
  25. package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
  26. package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
  27. package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
  28. package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
  29. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  30. package/dist/components/Authentication/AuthenticationMethodSelection.d.ts.map +1 -1
  31. package/dist/components/Authentication/AuthenticationMethodSelection.js +38 -37
  32. package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
  33. package/dist/components/Authentication/Constants.d.ts +1 -0
  34. package/dist/components/Authentication/Constants.d.ts.map +1 -1
  35. package/dist/components/Authentication/Constants.js +2 -2
  36. package/dist/components/Authentication/Constants.js.map +1 -1
  37. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  38. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  39. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  40. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  41. package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
  42. package/dist/components/Authentication/StandaloneLoginForm.js +1 -1
  43. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  44. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  45. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +2 -1
  46. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  47. package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
  48. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  49. package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
  50. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  51. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  52. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
  53. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  54. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
  55. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  56. package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
  57. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.d.ts.map +1 -1
  58. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js +143 -140
  59. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  60. package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
  61. package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
  62. package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
  63. package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
  64. package/dist/components/ChangePassword/useChangePasswordFormState.js +1 -1
  65. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  66. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  67. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  68. package/dist/components/ComponentCollapse.js.map +1 -1
  69. package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
  70. package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
  71. package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
  72. package/dist/components/DataGrid/DataGrid.d.ts +0 -1
  73. package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
  74. package/dist/components/DataGrid/DataGrid.js +72 -72
  75. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  76. package/dist/components/DataGrid/DataGridWebSocket.d.ts +4 -0
  77. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  78. package/dist/components/DataGrid/DataGridWebSocket.js +9 -8
  79. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  80. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  81. package/dist/components/DataGrid/SynapseGrid.js +326 -268
  82. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  83. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts +2 -0
  84. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
  85. package/dist/components/DataGrid/columns/AutocompleteColumn.js +124 -67
  86. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  87. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts +2 -1
  88. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts.map +1 -1
  89. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js +126 -122
  90. package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
  91. package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts +58 -0
  92. package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts.map +1 -0
  93. package/dist/components/DataGrid/columns/useGridAutocompleteState.js +52 -0
  94. package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -0
  95. package/dist/components/DataGrid/components/ValidationAlert.d.ts +5 -2
  96. package/dist/components/DataGrid/components/ValidationAlert.d.ts.map +1 -1
  97. package/dist/components/DataGrid/components/ValidationAlert.js +429 -24
  98. package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
  99. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
  100. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
  101. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  102. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  103. package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
  104. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +7 -0
  105. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  106. package/dist/components/DataGrid/useDataGridWebsocket.js +16 -2
  107. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  108. package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
  109. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  110. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  111. package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
  112. package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
  113. package/dist/components/DataGrid/utils/applyModelChange.d.ts +1 -1
  114. package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
  115. package/dist/components/DataGrid/utils/applyModelChange.js +27 -24
  116. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  117. package/dist/components/DataGrid/utils/columnFactory.d.ts +8 -0
  118. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  119. package/dist/components/DataGrid/utils/columnFactory.js +47 -44
  120. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  121. package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
  122. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  123. package/dist/components/DataGrid/utils/getCellClassName.d.ts.map +1 -1
  124. package/dist/components/DataGrid/utils/getCellClassName.js +8 -8
  125. package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
  126. package/dist/components/DataGrid/utils/getEmptyValue.d.ts +2 -0
  127. package/dist/components/DataGrid/utils/getEmptyValue.d.ts.map +1 -0
  128. package/dist/components/DataGrid/utils/getEmptyValue.js +8 -0
  129. package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -0
  130. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  131. package/dist/components/DataGrid/utils/modelColsToGrid.d.ts.map +1 -1
  132. package/dist/components/DataGrid/utils/modelColsToGrid.js +2 -1
  133. package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
  134. package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
  135. package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
  136. package/dist/components/DataGrid/utils/schemaAwarePasteValue.d.ts +32 -0
  137. package/dist/components/DataGrid/utils/schemaAwarePasteValue.d.ts.map +1 -0
  138. package/dist/components/DataGrid/utils/schemaAwarePasteValue.js +22 -0
  139. package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -0
  140. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  141. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  142. package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
  143. package/dist/components/DirectDownloadButton.js.map +1 -1
  144. package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
  145. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.css +1 -0
  146. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.d.ts.map +1 -1
  147. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +199 -132
  148. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  149. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js +22 -0
  150. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js.map +1 -0
  151. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.scss +170 -0
  152. package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
  153. package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
  154. package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
  155. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  156. package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
  157. package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
  158. package/dist/components/EntityAclEditor/EntityAclEditor.d.ts.map +1 -1
  159. package/dist/components/EntityAclEditor/EntityAclEditor.js +103 -103
  160. package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
  161. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
  162. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  163. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  164. package/dist/components/EntityDownloadButton/EntityDownloadButton.d.ts.map +1 -1
  165. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -0
  166. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  167. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.d.ts.map +1 -1
  168. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js +36 -30
  169. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  170. package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
  171. package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
  172. package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
  173. package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
  174. package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
  175. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  176. package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
  177. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  178. package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
  179. package/dist/components/EntityForm/EntityForm.js.map +1 -1
  180. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  181. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  182. package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
  183. package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
  184. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  185. package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
  186. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  187. package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
  188. package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
  189. package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
  190. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.d.ts.map +1 -1
  191. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js +15 -14
  192. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
  193. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  194. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  195. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  196. package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
  197. package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
  198. package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
  199. package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
  200. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  201. package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
  202. package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
  203. package/dist/components/Forum/DiscussionReply.d.ts +1 -0
  204. package/dist/components/Forum/DiscussionReply.d.ts.map +1 -1
  205. package/dist/components/Forum/DiscussionReply.js +19 -19
  206. package/dist/components/Forum/DiscussionReply.js.map +1 -1
  207. package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
  208. package/dist/components/Forum/DiscussionThread.d.ts +1 -0
  209. package/dist/components/Forum/DiscussionThread.d.ts.map +1 -1
  210. package/dist/components/Forum/DiscussionThread.js +73 -72
  211. package/dist/components/Forum/DiscussionThread.js.map +1 -1
  212. package/dist/components/Forum/ForumTable.js.map +1 -1
  213. package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
  214. package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
  215. package/dist/components/GenericCard/BioregistryRules.d.ts.map +1 -1
  216. package/dist/components/GenericCard/BioregistryRules.js +7 -3
  217. package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
  218. package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
  219. package/dist/components/GenericCard/GenericCard.js +12 -7
  220. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  221. package/dist/components/GenericCard/Linkify.js.map +1 -1
  222. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  223. package/dist/components/GenericCard/TableRowGenericCard.js +105 -105
  224. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  225. package/dist/components/Goals/Goals.Mobile.js.map +1 -1
  226. package/dist/components/Goals/Goals.js.map +1 -1
  227. package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
  228. package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
  229. package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
  230. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  231. package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
  232. package/dist/components/HasAccess/AccessIcon.js.map +1 -1
  233. package/dist/components/HasAccess/useHasAccess.js.map +1 -1
  234. package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
  235. package/dist/components/HeaderCard.d.ts +6 -1
  236. package/dist/components/HeaderCard.d.ts.map +1 -1
  237. package/dist/components/HeaderCard.js +107 -76
  238. package/dist/components/HeaderCard.js.map +1 -1
  239. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  240. package/dist/components/IconList.js.map +1 -1
  241. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  242. package/dist/components/IconSvg/IconSvg.js +2 -1
  243. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  244. package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
  245. package/dist/components/ImageFromSynapseTable.js.map +1 -1
  246. package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
  247. package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
  248. package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
  249. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  250. package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
  251. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  252. package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
  253. package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
  254. package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
  255. package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
  256. package/dist/components/Markdown/UserMentionModal.js.map +1 -1
  257. package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
  258. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  259. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  260. package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.d.ts.map +1 -1
  261. package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js +45 -39
  262. package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
  263. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  264. package/dist/components/PageProgress/PageProgress.js.map +1 -1
  265. package/dist/components/Plot/DotPlot.js.map +1 -1
  266. package/dist/components/Plot/Plot.js.map +1 -1
  267. package/dist/components/Plot/SynapsePlot.js.map +1 -1
  268. package/dist/components/Plot/ThemesPlot.js.map +1 -1
  269. package/dist/components/Plot/UpsetPlot.js.map +1 -1
  270. package/dist/components/PortalAclEditor/PortalAclEditor.d.ts.map +1 -1
  271. package/dist/components/PortalAclEditor/PortalAclEditor.js +43 -41
  272. package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
  273. package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
  274. package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
  275. package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
  276. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  277. package/dist/components/Programs/Programs.Mobile.js.map +1 -1
  278. package/dist/components/Programs/Programs.js.map +1 -1
  279. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  280. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  281. package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
  282. package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
  283. package/dist/components/QueryCount/QueryCount.js.map +1 -1
  284. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  285. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  286. package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
  287. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  288. package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
  289. package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
  290. package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
  291. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  292. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  293. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  294. package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
  295. package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
  296. package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
  297. package/dist/components/Resources/Resources.Mobile.js.map +1 -1
  298. package/dist/components/Resources/Resources.js.map +1 -1
  299. package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
  300. package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
  301. package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
  302. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  303. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  304. package/dist/components/SmartLink/SmartButton.js.map +1 -1
  305. package/dist/components/SmartLink/SmartLink.js.map +1 -1
  306. package/dist/components/SourceAppImage.js.map +1 -1
  307. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
  308. package/dist/components/StatisticsPlot.js.map +1 -1
  309. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  310. package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
  311. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
  312. package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
  313. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  314. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  315. package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
  316. package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
  317. package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
  318. package/dist/components/SynapseForm/SynapseForm.js +4 -2
  319. package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
  320. package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
  321. package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
  322. package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
  323. package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
  324. package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
  325. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
  326. package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
  327. package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
  328. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts +8 -7
  329. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
  330. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +173 -164
  331. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  332. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  333. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
  334. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
  335. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
  336. package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
  337. package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
  338. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  339. package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
  340. package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
  341. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  342. package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
  343. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  344. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  345. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  346. package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
  347. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  348. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts +1 -1
  349. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
  350. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  351. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  352. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
  353. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
  354. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  355. package/dist/components/TanStackTable/ColumnHeader.d.ts +1 -0
  356. package/dist/components/TanStackTable/ColumnHeader.d.ts.map +1 -1
  357. package/dist/components/TanStackTable/ColumnHeader.js +8 -8
  358. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  359. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  360. package/dist/components/TanStackTable/TableBody.js.map +1 -1
  361. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  362. package/dist/components/TextField/TextField.js.map +1 -1
  363. package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
  364. package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
  365. package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
  366. package/dist/components/UserCard/Avatar.js.map +1 -1
  367. package/dist/components/UserCardList/UserCardList.js.map +1 -1
  368. package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
  369. package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
  370. package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
  371. package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
  372. package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
  373. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  374. package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
  375. package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
  376. package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
  377. package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
  378. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.d.ts.map +1 -1
  379. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +157 -148
  380. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
  381. package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
  382. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
  383. package/dist/components/doi/CreateOrUpdateDoiModal.d.ts.map +1 -1
  384. package/dist/components/doi/CreateOrUpdateDoiModal.js +20 -19
  385. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  386. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  387. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  388. package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
  389. package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
  390. package/dist/components/error/ErrorPage.js.map +1 -1
  391. package/dist/components/favorites/FavoritesPage.js.map +1 -1
  392. package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
  393. package/dist/components/layout/SWCHeader.d.ts +9 -0
  394. package/dist/components/layout/SWCHeader.d.ts.map +1 -0
  395. package/dist/components/layout/SWCHeader.js +19 -0
  396. package/dist/components/layout/SWCHeader.js.map +1 -0
  397. package/dist/components/layout/SWCPageLayout.d.ts +9 -0
  398. package/dist/components/layout/SWCPageLayout.d.ts.map +1 -0
  399. package/dist/components/layout/SWCPageLayout.js +14 -0
  400. package/dist/components/layout/SWCPageLayout.js.map +1 -0
  401. package/dist/components/menu/ComplexMenu.js.map +1 -1
  402. package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
  403. package/dist/components/styled/StyledPopover.js.map +1 -1
  404. package/dist/components/table/CsvPreview/CsvPreview.js +2 -1
  405. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  406. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  407. package/dist/components/trash/TrashCanList.js.map +1 -1
  408. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  409. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  410. package/dist/components/widgets/SynapseVideo.js.map +1 -1
  411. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  412. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  413. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
  414. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  415. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
  416. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  417. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  418. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  419. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  420. package/dist/features/curator/GridPage/components/GridPageTitle.d.ts.map +1 -1
  421. package/dist/features/curator/GridPage/components/GridPageTitle.js +23 -30
  422. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  423. package/dist/features/curator/dashboard/CuratorDashboard.d.ts +2 -0
  424. package/dist/features/curator/dashboard/CuratorDashboard.d.ts.map +1 -0
  425. package/dist/features/curator/dashboard/CuratorDashboard.js +45 -0
  426. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -0
  427. package/dist/features/curator/dashboard/components/CurationTaskCard.css +1 -0
  428. package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts +9 -0
  429. package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts.map +1 -0
  430. package/dist/features/curator/dashboard/components/CurationTaskCard.js +106 -0
  431. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -0
  432. package/dist/features/curator/dashboard/components/CurationTaskCard.module.js +12 -0
  433. package/dist/features/curator/dashboard/components/CurationTaskCard.module.js.map +1 -0
  434. package/dist/features/curator/dashboard/components/CurationTaskCard.module.scss +52 -0
  435. package/dist/features/curator/dashboard/components/NextStepButton.css +1 -0
  436. package/dist/features/curator/dashboard/components/NextStepButton.d.ts +14 -0
  437. package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -0
  438. package/dist/features/curator/dashboard/components/NextStepButton.js +35 -0
  439. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -0
  440. package/dist/features/curator/dashboard/components/NextStepButton.module.js +11 -0
  441. package/dist/features/curator/dashboard/components/NextStepButton.module.js.map +1 -0
  442. package/dist/features/curator/dashboard/components/NextStepButton.module.scss +57 -0
  443. package/dist/features/curator/dashboard/components/UserOrTeamChip.css +1 -1
  444. package/dist/features/curator/dashboard/components/UserOrTeamChip.module.js +1 -1
  445. package/dist/features/curator/dashboard/components/UserOrTeamChip.module.js.map +1 -1
  446. package/dist/features/curator/dashboard/components/UserOrTeamChip.module.scss +5 -5
  447. package/dist/features/curator/dashboard/components/shared.css +1 -0
  448. package/dist/features/curator/dashboard/components/shared.module.js +5 -0
  449. package/dist/features/curator/dashboard/components/shared.module.js.map +1 -0
  450. package/dist/features/curator/dashboard/components/shared.module.scss +8 -0
  451. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +0 -2
  452. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  453. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +16 -34
  454. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  455. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -1
  456. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +1 -1
  457. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  458. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
  459. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  460. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  461. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
  462. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  463. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts +10 -0
  464. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -0
  465. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +37 -0
  466. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -0
  467. package/dist/features/entity/metadata-task/utils/constants.d.ts +5 -0
  468. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -0
  469. package/dist/features/entity/metadata-task/utils/constants.js +6 -0
  470. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -0
  471. package/dist/mocks/challenge/mockChallenge.js.map +1 -1
  472. package/dist/mocks/entity/mockDataset.js.map +1 -1
  473. package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
  474. package/dist/mocks/entity/mockFileEntity.js.map +1 -1
  475. package/dist/mocks/entity/mockFileView.js.map +1 -1
  476. package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
  477. package/dist/mocks/entity/mockProject.js.map +1 -1
  478. package/dist/mocks/entity/mockProjectView.js.map +1 -1
  479. package/dist/mocks/entity/mockRootEntity.js.map +1 -1
  480. package/dist/mocks/entity/mockTableEntity.js.map +1 -1
  481. package/dist/mocks/mockWiki.js.map +1 -1
  482. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  483. package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
  484. package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
  485. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  486. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  487. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  488. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  489. package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
  490. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  491. package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
  492. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  493. package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
  494. package/dist/mocks/provenance/mockActivity.js.map +1 -1
  495. package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
  496. package/dist/ror-client/index.js.map +1 -1
  497. package/dist/style/components/_cards.scss +4 -0
  498. package/dist/style/components/_data-grid-extra.css +1 -1
  499. package/dist/style/components/_data-grid-extra.scss +2 -0
  500. package/dist/style/main.css +1 -1
  501. package/dist/synapse-client/HttpClient.js.map +1 -1
  502. package/dist/synapse-client/SynapseClient.js.map +1 -1
  503. package/dist/synapse-queries/KeyFactory.d.ts +1 -0
  504. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  505. package/dist/synapse-queries/KeyFactory.js +3 -0
  506. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  507. package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
  508. package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
  509. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -1
  510. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  511. package/dist/synapse-queries/curation/task/useCurationTask.js +1 -1
  512. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  513. package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
  514. package/dist/synapse-queries/doi/useDOI.js.map +1 -1
  515. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  516. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  517. package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
  518. package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
  519. package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
  520. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  521. package/dist/synapse-queries/entity/useSchema.js.map +1 -1
  522. package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
  523. package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
  524. package/dist/synapse-queries/file/useFiles.js.map +1 -1
  525. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  526. package/dist/synapse-queries/forum/useThread.d.ts +1 -0
  527. package/dist/synapse-queries/forum/useThread.d.ts.map +1 -1
  528. package/dist/synapse-queries/forum/useThread.js +19 -12
  529. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  530. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts +2 -0
  531. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts.map +1 -1
  532. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  533. package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
  534. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  535. package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
  536. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  537. package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
  538. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  539. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  540. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  541. package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
  542. package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
  543. package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
  544. package/dist/theme/ThemeProvider.js.map +1 -1
  545. package/dist/tsconfig.build.tsbuildinfo +1 -1
  546. package/dist/utils/APIConstants.d.ts +1 -0
  547. package/dist/utils/APIConstants.d.ts.map +1 -1
  548. package/dist/utils/APIConstants.js +2 -2
  549. package/dist/utils/APIConstants.js.map +1 -1
  550. package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
  551. package/dist/utils/AppUtils/session/ApplicationSessionManager.js +7 -4
  552. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  553. package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
  554. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  555. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  556. package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
  557. package/dist/utils/context/SynapseContext.js.map +1 -1
  558. package/dist/utils/functions/AccessControlListUtils.d.ts +4 -0
  559. package/dist/utils/functions/AccessControlListUtils.d.ts.map +1 -1
  560. package/dist/utils/functions/AccessControlListUtils.js +12 -1
  561. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  562. package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
  563. package/dist/utils/functions/EntityTypeUtils.js +15 -4
  564. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  565. package/dist/utils/functions/GridApiUtils.js.map +1 -1
  566. package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
  567. package/dist/utils/functions/RealmUtils.d.ts +4 -0
  568. package/dist/utils/functions/RealmUtils.d.ts.map +1 -1
  569. package/dist/utils/functions/RealmUtils.js +9 -3
  570. package/dist/utils/functions/RealmUtils.js.map +1 -1
  571. package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
  572. package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
  573. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  574. package/dist/utils/functions/StringUtils.js.map +1 -1
  575. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  576. package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
  577. package/dist/utils/functions/getEndpoint.js.map +1 -1
  578. package/dist/utils/functions/getUserData.js.map +1 -1
  579. package/dist/utils/functions/queryUtils.js.map +1 -1
  580. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  581. package/dist/utils/hooks/useConfirmItems.js.map +1 -1
  582. package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
  583. package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
  584. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  585. package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
  586. package/dist/utils/hooks/useGetGoalData.js.map +1 -1
  587. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  588. package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
  589. package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
  590. package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
  591. package/dist/utils/hooks/useIsBot.js.map +1 -1
  592. package/dist/utils/hooks/useListState.js.map +1 -1
  593. package/dist/utils/hooks/useLogin.d.ts.map +1 -1
  594. package/dist/utils/hooks/useLogin.js +53 -52
  595. package/dist/utils/hooks/useLogin.js.map +1 -1
  596. package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
  597. package/dist/utils/hooks/useOverlay.js.map +1 -1
  598. package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
  599. package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
  600. package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
  601. package/dist/utils/hooks/useSet.js.map +1 -1
  602. package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
  603. package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
  604. package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
  605. package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
  606. package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
  607. package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
  608. package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
  609. package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
  610. package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
  611. package/dist/utils/html/TargetEnum.js.map +1 -1
  612. package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
  613. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"ForumThreadEditor.js","names":[],"sources":["../../../src/components/Forum/ForumThreadEditor.tsx"],"sourcesContent":["import { usePostReply, usePutReply } from '@/synapse-queries/forum/useReply'\nimport {\n useCreateThread,\n useUpdateThreadMessage,\n useUpdateThreadTitle,\n} from '@/synapse-queries/forum/useThread'\nimport { Box, TextField } from '@mui/material'\nimport { CreateDiscussionThread } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport {\n ConfirmationButtons,\n ConfirmationDialog,\n} from '../ConfirmationDialog/ConfirmationDialog'\nimport { MarkdownEditor } from '../Markdown/MarkdownEditor'\n\nexport type ForumThreadEditorProps = {\n initialTitle?: string\n initialText?: string\n id: string\n onClose: () => void\n isReply: boolean\n} & (\n | { isDialog: false; openDialog?: never }\n | { isDialog: true; openDialog: boolean }\n)\n\nexport function ForumThreadEditor(props: ForumThreadEditorProps) {\n const {\n initialText,\n initialTitle,\n id,\n onClose,\n isReply,\n isDialog,\n openDialog,\n } = props\n\n const [title, setTitle] = useState<string>(initialTitle ?? '')\n const [text, setText] = useState<string>(initialText ?? '')\n const { mutate: updateTitle, isPending: titleUpdateIsPending } =\n useUpdateThreadTitle({\n onSuccess: () => onClose(),\n })\n const { mutate: updateMessage, isPending: messageUpdateIsPending } =\n useUpdateThreadMessage({\n onSuccess: () => onClose(),\n })\n const { mutate: createThread, isPending: createThreadIsPending } =\n useCreateThread({\n onSuccess: () => onClose(),\n })\n const { mutate: createReply, isPending: createReplyIsPending } = usePostReply(\n {\n onSuccess: () => onClose(),\n },\n )\n const { mutate: updateReply, isPending: updateReplyIsPending } = usePutReply({\n onSuccess: () => onClose(),\n })\n\n const updateIsPending =\n messageUpdateIsPending ||\n createReplyIsPending ||\n createThreadIsPending ||\n titleUpdateIsPending ||\n updateReplyIsPending\n\n const isExistingThread = !isReply && initialTitle\n\n const onSave = (text: string, title: string) => {\n if (isReply) {\n if (initialText) {\n // updating reply\n updateReply({\n replyId: id,\n messageMarkdown: text,\n })\n } else {\n // posting reply\n createReply({\n threadId: id,\n messageMarkdown: text,\n })\n }\n } else {\n if (isExistingThread) {\n // updating thread\n updateTitle({\n title: title,\n threadId: id,\n })\n updateMessage({\n messageMarkdown: text,\n threadId: id,\n })\n } else {\n // posting thread\n const request: CreateDiscussionThread = {\n forumId: id,\n title: title,\n messageMarkdown: text,\n }\n createThread(request)\n }\n }\n }\n\n const editorContent = (\n <div>\n {!isReply && (\n <TextField\n fullWidth\n sx={{ my: 1 }}\n placeholder=\"Title\"\n value={title}\n onChange={e => setTitle(e.target.value)}\n />\n )}\n <MarkdownEditor\n placeholder={'Write a reply...'}\n text={text}\n setText={setText}\n />\n </div>\n )\n\n const confirmButtonText = updateIsPending ? 'Saving' : 'Post'\n\n return (\n <>\n {isDialog ? (\n <ConfirmationDialog\n maxWidth=\"md\"\n open={openDialog}\n onCancel={onClose}\n title={\n isReply\n ? 'Edit Reply'\n : isExistingThread\n ? 'Edit Thread'\n : 'New Thread'\n }\n content={editorContent}\n onConfirm={() => onSave(text, title)}\n confirmButtonProps={{ children: confirmButtonText }}\n />\n ) : (\n <>\n {editorContent}\n <Box\n sx={{ display: 'flex', justifyContent: 'flex-end', gap: 1, my: 1 }}\n >\n <ConfirmationButtons\n onCancel={onClose}\n onConfirm={() => onSave(text, title)}\n confirmButtonProps={{ children: confirmButtonText }}\n />\n </Box>\n </>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;;;AA0BA,SAAgB,EAAkB,GAA+B;CAC/D,IAAM,EACJ,gBACA,iBACA,OACA,YACA,YACA,aACA,kBACE,GAEE,CAAC,GAAO,KAAY,EAAiB,KAAgB,GAAG,EACxD,CAAC,GAAM,KAAW,EAAiB,KAAe,GAAG,EACrD,EAAE,QAAQ,GAAa,WAAW,MACtC,EAAqB,EACnB,iBAAiB,GAAS,EAC3B,CAAC,EACE,EAAE,QAAQ,GAAe,WAAW,MACxC,EAAuB,EACrB,iBAAiB,GAAS,EAC3B,CAAC,EACE,EAAE,QAAQ,GAAc,WAAW,MACvC,EAAgB,EACd,iBAAiB,GAAS,EAC3B,CAAC,EACE,EAAE,QAAQ,GAAa,WAAW,MAAyB,EAC/D,EACE,iBAAiB,GAAS,EAC3B,CACF,EACK,EAAE,QAAQ,GAAa,WAAW,MAAyB,EAAY,EAC3E,iBAAiB,GAAS,EAC3B,CAAC,EAEI,IACJ,KACA,KACA,KACA,KACA,GAEI,IAAmB,CAAC,KAAW,GAE/B,KAAU,GAAc,MAAkB;AAC9C,EAAI,IACE,IAEF,EAAY;GACV,SAAS;GACT,iBAAiB;GAClB,CAAC,GAGF,EAAY;GACV,UAAU;GACV,iBAAiB;GAClB,CAAC,GAGA,KAEF,EAAY;GACH;GACP,UAAU;GACX,CAAC,EACF,EAAc;GACZ,iBAAiB;GACjB,UAAU;GACX,CAAC,IAQF,EALwC;GACtC,SAAS;GACF;GACP,iBAAiB;GAClB,CACoB;IAKrB,IACJ,kBAAC,OAAD,EAAA,UAAA,CACG,CAAC,KACA,kBAAC,GAAD;EACE,WAAA;EACA,IAAI,EAAE,IAAI,GAAG;EACb,aAAY;EACZ,OAAO;EACP,WAAU,MAAK,EAAS,EAAE,OAAO,MAAM;EACvC,CAAA,EAEJ,kBAAC,GAAD;EACE,aAAa;EACP;EACG;EACT,CAAA,CACE,EAAA,CAAA,EAGF,IAAoB,IAAkB,WAAW;AAEvD,QACE,kBAAA,GAAA,EAAA,UACG,IACC,kBAAC,GAAD;EACE,UAAS;EACT,MAAM;EACN,UAAU;EACV,OACE,IACI,eACA,IACA,gBACA;EAEN,SAAS;EACT,iBAAiB,EAAO,GAAM,EAAM;EACpC,oBAAoB,EAAE,UAAU,GAAmB;EACnD,CAAA,GAEF,kBAAA,GAAA,EAAA,UAAA,CACG,GACD,kBAAC,GAAD;EACE,IAAI;GAAE,SAAS;GAAQ,gBAAgB;GAAY,KAAK;GAAG,IAAI;GAAG;YAElE,kBAAC,GAAD;GACE,UAAU;GACV,iBAAiB,EAAO,GAAM,EAAM;GACpC,oBAAoB,EAAE,UAAU,GAAmB;GACnD,CAAA;EACE,CAAA,CACL,EAAA,CAAA,EAEJ,CAAA"}
1
+ {"version":3,"file":"ForumThreadEditor.js","names":[],"sources":["../../../src/components/Forum/ForumThreadEditor.tsx"],"sourcesContent":["import { usePostReply, usePutReply } from '@/synapse-queries/forum/useReply'\nimport {\n useCreateThread,\n useUpdateThreadMessage,\n useUpdateThreadTitle,\n} from '@/synapse-queries/forum/useThread'\nimport { Box, TextField } from '@mui/material'\nimport { CreateDiscussionThread } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport {\n ConfirmationButtons,\n ConfirmationDialog,\n} from '../ConfirmationDialog/ConfirmationDialog'\nimport { MarkdownEditor } from '../Markdown/MarkdownEditor'\n\nexport type ForumThreadEditorProps = {\n initialTitle?: string\n initialText?: string\n id: string\n onClose: () => void\n isReply: boolean\n} & (\n | { isDialog: false; openDialog?: never }\n | { isDialog: true; openDialog: boolean }\n)\n\nexport function ForumThreadEditor(props: ForumThreadEditorProps) {\n const {\n initialText,\n initialTitle,\n id,\n onClose,\n isReply,\n isDialog,\n openDialog,\n } = props\n\n const [title, setTitle] = useState<string>(initialTitle ?? '')\n const [text, setText] = useState<string>(initialText ?? '')\n const { mutate: updateTitle, isPending: titleUpdateIsPending } =\n useUpdateThreadTitle({\n onSuccess: () => onClose(),\n })\n const { mutate: updateMessage, isPending: messageUpdateIsPending } =\n useUpdateThreadMessage({\n onSuccess: () => onClose(),\n })\n const { mutate: createThread, isPending: createThreadIsPending } =\n useCreateThread({\n onSuccess: () => onClose(),\n })\n const { mutate: createReply, isPending: createReplyIsPending } = usePostReply(\n {\n onSuccess: () => onClose(),\n },\n )\n const { mutate: updateReply, isPending: updateReplyIsPending } = usePutReply({\n onSuccess: () => onClose(),\n })\n\n const updateIsPending =\n messageUpdateIsPending ||\n createReplyIsPending ||\n createThreadIsPending ||\n titleUpdateIsPending ||\n updateReplyIsPending\n\n const isExistingThread = !isReply && initialTitle\n\n const onSave = (text: string, title: string) => {\n if (isReply) {\n if (initialText) {\n // updating reply\n updateReply({\n replyId: id,\n messageMarkdown: text,\n })\n } else {\n // posting reply\n createReply({\n threadId: id,\n messageMarkdown: text,\n })\n }\n } else {\n if (isExistingThread) {\n // updating thread\n updateTitle({\n title: title,\n threadId: id,\n })\n updateMessage({\n messageMarkdown: text,\n threadId: id,\n })\n } else {\n // posting thread\n const request: CreateDiscussionThread = {\n forumId: id,\n title: title,\n messageMarkdown: text,\n }\n createThread(request)\n }\n }\n }\n\n const editorContent = (\n <div>\n {!isReply && (\n <TextField\n fullWidth\n sx={{ my: 1 }}\n placeholder=\"Title\"\n value={title}\n onChange={e => setTitle(e.target.value)}\n />\n )}\n <MarkdownEditor\n placeholder={'Write a reply...'}\n text={text}\n setText={setText}\n />\n </div>\n )\n\n const confirmButtonText = updateIsPending ? 'Saving' : 'Post'\n\n return (\n <>\n {isDialog ? (\n <ConfirmationDialog\n maxWidth=\"md\"\n open={openDialog}\n onCancel={onClose}\n title={\n isReply\n ? 'Edit Reply'\n : isExistingThread\n ? 'Edit Thread'\n : 'New Thread'\n }\n content={editorContent}\n onConfirm={() => onSave(text, title)}\n confirmButtonProps={{ children: confirmButtonText }}\n />\n ) : (\n <>\n {editorContent}\n <Box\n sx={{ display: 'flex', justifyContent: 'flex-end', gap: 1, my: 1 }}\n >\n <ConfirmationButtons\n onCancel={onClose}\n onConfirm={() => onSave(text, title)}\n confirmButtonProps={{ children: confirmButtonText }}\n />\n </Box>\n </>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;;;AA0BA,SAAgB,EAAkB,GAA+B;CAC/D,IAAM,EACJ,gBACA,iBACA,OACA,YACA,YACA,aACA,kBACE,GAEE,CAAC,GAAO,KAAY,EAAiB,KAAgB,GAAG,EACxD,CAAC,GAAM,KAAW,EAAiB,KAAe,GAAG,EACrD,EAAE,QAAQ,GAAa,WAAW,MACtC,EAAqB,EACnB,iBAAiB,GAAS,EAC3B,CAAC,EACE,EAAE,QAAQ,GAAe,WAAW,MACxC,EAAuB,EACrB,iBAAiB,GAAS,EAC3B,CAAC,EACE,EAAE,QAAQ,GAAc,WAAW,MACvC,EAAgB,EACd,iBAAiB,GAAS,EAC3B,CAAC,EACE,EAAE,QAAQ,GAAa,WAAW,MAAyB,EAC/D,EACE,iBAAiB,GAAS,EAC3B,CACF,EACK,EAAE,QAAQ,GAAa,WAAW,MAAyB,EAAY,EAC3E,iBAAiB,GAAS,EAC3B,CAAC,EAEI,IACJ,KACA,KACA,KACA,KACA,GAEI,IAAmB,CAAC,KAAW,GAE/B,KAAU,GAAc,MAAkB;AAC9C,EAAI,IACE,IAEF,EAAY;GACV,SAAS;GACT,iBAAiB;GAClB,CAAC,GAGF,EAAY;GACV,UAAU;GACV,iBAAiB;GAClB,CAAC,GAGA,KAEF,EAAY;GACH;GACP,UAAU;GACX,CAAC,EACF,EAAc;GACZ,iBAAiB;GACjB,UAAU;GACX,CAAC,IAQF,EAAa;GAJX,SAAS;GACF;GACP,iBAAiB;GAEN,CAAQ;IAKrB,IACJ,kBAAC,OAAD,EAAA,UAAA,CACG,CAAC,KACA,kBAAC,GAAD;EACE,WAAA;EACA,IAAI,EAAE,IAAI,GAAG;EACb,aAAY;EACZ,OAAO;EACP,WAAU,MAAK,EAAS,EAAE,OAAO,MAAM;EACvC,CAAA,EAEJ,kBAAC,GAAD;EACE,aAAa;EACP;EACG;EACT,CAAA,CACE,EAAA,CAAA,EAGF,IAAoB,IAAkB,WAAW;AAEvD,QACE,kBAAA,GAAA,EAAA,UACG,IACC,kBAAC,GAAD;EACE,UAAS;EACT,MAAM;EACN,UAAU;EACV,OACE,IACI,eACA,IACA,gBACA;EAEN,SAAS;EACT,iBAAiB,EAAO,GAAM,EAAM;EACpC,oBAAoB,EAAE,UAAU,GAAmB;EACnD,CAAA,GAEF,kBAAA,GAAA,EAAA,UAAA,CACG,GACD,kBAAC,GAAD;EACE,IAAI;GAAE,SAAS;GAAQ,gBAAgB;GAAY,KAAK;GAAG,IAAI;GAAG;YAElE,kBAAC,GAAD;GACE,UAAU;GACV,iBAAiB,EAAO,GAAM,EAAM;GACpC,oBAAoB,EAAE,UAAU,GAAmB;GACnD,CAAA;EACE,CAAA,CACL,EAAA,CAAA,EAEJ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"FullTextSearchUtils.js","names":[],"sources":["../../../src/components/FullTextSearch/FullTextSearchUtils.ts"],"sourcesContent":["import { SYNAPSE_ENTITY_ID_REGEX } from '@/utils/functions/RegularExpressions'\nimport {\n ColumnModel,\n ColumnSingleValueFilterOperator,\n ColumnSingleValueQueryFilter,\n QueryBundleRequest,\n TextMatchesQueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport { getFileColumnModelId } from '../SynapseTable/SynapseTableUtils'\nimport { FTSConfig } from '../SynapseTable/SearchV2'\nimport { getWordCount } from '../TextField/TextFieldWithWordLimit'\n\n/**\n * Expects a search expression of the form: \"searchText\" @3\n * In this example, this function will return the following string via a regex: searchText\n */\nexport function getSearchTextFromBooleanModeSearchExpression(\n searchExpression: string,\n) {\n /**\n * ^\"(.+?)\": Matches the opening double quote and lazily captures any characters until the next quote.\n * \\s*@\\d+$: Matches optional whitespace, the @ symbol, and one or more digits at the end.\n */\n const match = searchExpression.match(/^\"(.+?)\"\\s*@\\d+$/)\n if (match) {\n return match[1]\n } else {\n return ''\n }\n}\n\n// Convert the user-provided searchText into a search expression given the current FTS configuration.\n// If configured to search using BOOLEAN mode, search expression will wrap the search text in double quotes and include the distance.\nexport function getTextMatchesQueryFilter(\n searchText: string,\n ftsConfig: FTSConfig = {\n textMatchesMode: 'NATURAL_LANGUAGE',\n },\n) {\n const { textMatchesMode, distance = 0 } = ftsConfig\n let searchExpression = searchText\n if (textMatchesMode == 'BOOLEAN') {\n //split by non-word character and ignore empty strings\n const searchTextWordLength = getWordCount(searchText)\n const distanceToUse = Math.max(distance, searchTextWordLength)\n searchExpression = `\"${searchText.replaceAll('\"', '')}\" @${distanceToUse}`\n }\n const textMatchesQueryFilter: TextMatchesQueryFilter = {\n concreteType: 'org.sagebionetworks.repo.model.table.TextMatchesQueryFilter',\n searchExpression,\n searchMode: ftsConfig.textMatchesMode,\n }\n return textMatchesQueryFilter\n}\n\nexport function updateQueryUsingSearchTerm(\n queryBundleRequest: QueryBundleRequest,\n columnModels: ColumnModel[] | undefined,\n searchText: string,\n ftsConfig?: FTSConfig,\n): QueryBundleRequest {\n const { additionalFilters = [] } = queryBundleRequest.query\n const synIdColumnModelId = getFileColumnModelId(columnModels)\n const isSynapseID = searchText.match(SYNAPSE_ENTITY_ID_REGEX)\n if (isSynapseID && synIdColumnModelId) {\n const idColumnModel = columnModels?.filter(\n el => el.id === synIdColumnModelId,\n )\n const singleValueQueryFilter: ColumnSingleValueQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: idColumnModel![0].name,\n operator: ColumnSingleValueFilterOperator.IN,\n values: [searchText],\n }\n // Replace the active filter on the column, if one exists\n const matchingFilter = additionalFilters.find(\n filter =>\n filter.concreteType == singleValueQueryFilter.concreteType &&\n filter.columnName == singleValueQueryFilter.columnName,\n ) as ColumnSingleValueQueryFilter\n if (matchingFilter) {\n if (!matchingFilter.values.includes(searchText)) {\n matchingFilter.values.push(searchText)\n }\n return queryBundleRequest\n }\n additionalFilters.push(singleValueQueryFilter)\n } else {\n const textMatchesQueryFilter = getTextMatchesQueryFilter(\n searchText,\n ftsConfig,\n )\n // PORTALS-2093: does this additional filter already exist?\n const found = additionalFilters.find(\n filter =>\n filter.concreteType == textMatchesQueryFilter.concreteType &&\n filter.searchExpression == textMatchesQueryFilter.searchExpression,\n )\n if (found) {\n return queryBundleRequest\n }\n additionalFilters.push(textMatchesQueryFilter)\n }\n queryBundleRequest.query.additionalFilters = additionalFilters\n return queryBundleRequest\n}\n"],"mappings":";;;;;AAgBA,SAAgB,EACd,GACA;CAKA,IAAM,IAAQ,EAAiB,MAAM,mBAAmB;AAItD,QAHE,IACK,EAAM,KAEN;;AAMX,SAAgB,EACd,GACA,IAAuB,EACrB,iBAAiB,oBAClB,EACD;CACA,IAAM,EAAE,oBAAiB,cAAW,MAAM,GACtC,IAAmB;AACvB,KAAI,KAAmB,WAAW;EAEhC,IAAM,IAAuB,EAAa,EAAW,EAC/C,IAAgB,KAAK,IAAI,GAAU,EAAqB;AAC9D,MAAmB,IAAI,EAAW,WAAW,MAAK,GAAG,CAAC,KAAK;;AAO7D,QALuD;EACrD,cAAc;EACd;EACA,YAAY,EAAU;EACvB;;AAIH,SAAgB,EACd,GACA,GACA,GACA,GACoB;CACpB,IAAM,EAAE,uBAAoB,EAAE,KAAK,EAAmB,OAChD,IAAqB,EAAqB,EAAa;AAE7D,KADoB,EAAW,MAAM,EAAwB,IAC1C,GAAoB;EAIrC,IAAM,IAAuD;GAC3D,cACE;GACF,aANoB,GAAc,QAClC,MAAM,EAAG,OAAO,EACjB,EAI4B,GAAG;GAC9B,UAAU,EAAgC;GAC1C,QAAQ,CAAC,EAAW;GACrB,EAEK,IAAiB,EAAkB,MACvC,MACE,EAAO,gBAAgB,EAAuB,gBAC9C,EAAO,cAAc,EAAuB,WAC/C;AACD,MAAI,EAIF,QAHK,EAAe,OAAO,SAAS,EAAW,IAC7C,EAAe,OAAO,KAAK,EAAW,EAEjC;AAET,IAAkB,KAAK,EAAuB;QACzC;EACL,IAAM,IAAyB,EAC7B,GACA,EACD;AAOD,MALc,EAAkB,MAC9B,MACE,EAAO,gBAAgB,EAAuB,gBAC9C,EAAO,oBAAoB,EAAuB,iBACrD,CAEC,QAAO;AAET,IAAkB,KAAK,EAAuB;;AAGhD,QADA,EAAmB,MAAM,oBAAoB,GACtC"}
1
+ {"version":3,"file":"FullTextSearchUtils.js","names":[],"sources":["../../../src/components/FullTextSearch/FullTextSearchUtils.ts"],"sourcesContent":["import { SYNAPSE_ENTITY_ID_REGEX } from '@/utils/functions/RegularExpressions'\nimport {\n ColumnModel,\n ColumnSingleValueFilterOperator,\n ColumnSingleValueQueryFilter,\n QueryBundleRequest,\n TextMatchesQueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport { getFileColumnModelId } from '../SynapseTable/SynapseTableUtils'\nimport { FTSConfig } from '../SynapseTable/SearchV2'\nimport { getWordCount } from '../TextField/TextFieldWithWordLimit'\n\n/**\n * Expects a search expression of the form: \"searchText\" @3\n * In this example, this function will return the following string via a regex: searchText\n */\nexport function getSearchTextFromBooleanModeSearchExpression(\n searchExpression: string,\n) {\n /**\n * ^\"(.+?)\": Matches the opening double quote and lazily captures any characters until the next quote.\n * \\s*@\\d+$: Matches optional whitespace, the @ symbol, and one or more digits at the end.\n */\n const match = searchExpression.match(/^\"(.+?)\"\\s*@\\d+$/)\n if (match) {\n return match[1]\n } else {\n return ''\n }\n}\n\n// Convert the user-provided searchText into a search expression given the current FTS configuration.\n// If configured to search using BOOLEAN mode, search expression will wrap the search text in double quotes and include the distance.\nexport function getTextMatchesQueryFilter(\n searchText: string,\n ftsConfig: FTSConfig = {\n textMatchesMode: 'NATURAL_LANGUAGE',\n },\n) {\n const { textMatchesMode, distance = 0 } = ftsConfig\n let searchExpression = searchText\n if (textMatchesMode == 'BOOLEAN') {\n //split by non-word character and ignore empty strings\n const searchTextWordLength = getWordCount(searchText)\n const distanceToUse = Math.max(distance, searchTextWordLength)\n searchExpression = `\"${searchText.replaceAll('\"', '')}\" @${distanceToUse}`\n }\n const textMatchesQueryFilter: TextMatchesQueryFilter = {\n concreteType: 'org.sagebionetworks.repo.model.table.TextMatchesQueryFilter',\n searchExpression,\n searchMode: ftsConfig.textMatchesMode,\n }\n return textMatchesQueryFilter\n}\n\nexport function updateQueryUsingSearchTerm(\n queryBundleRequest: QueryBundleRequest,\n columnModels: ColumnModel[] | undefined,\n searchText: string,\n ftsConfig?: FTSConfig,\n): QueryBundleRequest {\n const { additionalFilters = [] } = queryBundleRequest.query\n const synIdColumnModelId = getFileColumnModelId(columnModels)\n const isSynapseID = searchText.match(SYNAPSE_ENTITY_ID_REGEX)\n if (isSynapseID && synIdColumnModelId) {\n const idColumnModel = columnModels?.filter(\n el => el.id === synIdColumnModelId,\n )\n const singleValueQueryFilter: ColumnSingleValueQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: idColumnModel![0].name,\n operator: ColumnSingleValueFilterOperator.IN,\n values: [searchText],\n }\n // Replace the active filter on the column, if one exists\n const matchingFilter = additionalFilters.find(\n filter =>\n filter.concreteType == singleValueQueryFilter.concreteType &&\n filter.columnName == singleValueQueryFilter.columnName,\n ) as ColumnSingleValueQueryFilter\n if (matchingFilter) {\n if (!matchingFilter.values.includes(searchText)) {\n matchingFilter.values.push(searchText)\n }\n return queryBundleRequest\n }\n additionalFilters.push(singleValueQueryFilter)\n } else {\n const textMatchesQueryFilter = getTextMatchesQueryFilter(\n searchText,\n ftsConfig,\n )\n // PORTALS-2093: does this additional filter already exist?\n const found = additionalFilters.find(\n filter =>\n filter.concreteType == textMatchesQueryFilter.concreteType &&\n filter.searchExpression == textMatchesQueryFilter.searchExpression,\n )\n if (found) {\n return queryBundleRequest\n }\n additionalFilters.push(textMatchesQueryFilter)\n }\n queryBundleRequest.query.additionalFilters = additionalFilters\n return queryBundleRequest\n}\n"],"mappings":";;;;;AAgBA,SAAgB,EACd,GACA;CAKA,IAAM,IAAQ,EAAiB,MAAM,mBAAmB;AAItD,QAHE,IACK,EAAM,KAEN;;AAMX,SAAgB,EACd,GACA,IAAuB,EACrB,iBAAiB,oBAClB,EACD;CACA,IAAM,EAAE,oBAAiB,cAAW,MAAM,GACtC,IAAmB;AACvB,KAAI,KAAmB,WAAW;EAEhC,IAAM,IAAuB,EAAa,EAAW,EAC/C,IAAgB,KAAK,IAAI,GAAU,EAAqB;AAC9D,MAAmB,IAAI,EAAW,WAAW,MAAK,GAAG,CAAC,KAAK;;AAO7D,QAAO;EAJL,cAAc;EACd;EACA,YAAY,EAAU;EAEjB;;AAGT,SAAgB,EACd,GACA,GACA,GACA,GACoB;CACpB,IAAM,EAAE,uBAAoB,EAAE,KAAK,EAAmB,OAChD,IAAqB,EAAqB,EAAa;AAE7D,KADoB,EAAW,MAAM,EACjC,IAAe,GAAoB;EAIrC,IAAM,IAAuD;GAC3D,cACE;GACF,aANoB,GAAc,QAClC,MAAM,EAAG,OAAO,EACjB,EAI4B,GAAG;GAC9B,UAAU,EAAgC;GAC1C,QAAQ,CAAC,EAAW;GACrB,EAEK,IAAiB,EAAkB,MACvC,MACE,EAAO,gBAAgB,EAAuB,gBAC9C,EAAO,cAAc,EAAuB,WAC/C;AACD,MAAI,EAIF,QAHK,EAAe,OAAO,SAAS,EAAW,IAC7C,EAAe,OAAO,KAAK,EAAW,EAEjC;AAET,IAAkB,KAAK,EAAuB;QACzC;EACL,IAAM,IAAyB,EAC7B,GACA,EACD;AAOD,MALc,EAAkB,MAC9B,MACE,EAAO,gBAAgB,EAAuB,gBAC9C,EAAO,oBAAoB,EAAuB,iBAElD,CACF,QAAO;AAET,IAAkB,KAAK,EAAuB;;AAGhD,QADA,EAAmB,MAAM,oBAAoB,GACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BioregistryRules.d.ts","sourceRoot":"","sources":["../../../src/components/GenericCard/BioregistryRules.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB;;qBAFL,MAAM;GA+yB7B,CAAA"}
1
+ {"version":3,"file":"BioregistryRules.d.ts","sourceRoot":"","sources":["../../../src/components/GenericCard/BioregistryRules.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB;;qBAFL,MAAM;GAi0B7B,CAAA"}
@@ -481,11 +481,11 @@ var e = (e) => `https://bioregistry.io/${e}`, t = [
481
481
  onMatch: e
482
482
  },
483
483
  {
484
- regex: /(mesh:(?:C|D|M)\d{6,9})/,
484
+ regex: /(mesh:(?:C|D|Q)\d+)/,
485
485
  onMatch: e
486
486
  },
487
487
  {
488
- regex: /(metabolights:MTBLS\d+)/,
488
+ regex: /(metabolights:MTBL[CS]\d+)/,
489
489
  onMatch: e
490
490
  },
491
491
  {
@@ -752,6 +752,10 @@ var e = (e) => `https://bioregistry.io/${e}`, t = [
752
752
  regex: /(tcdb:\d+(?:\.[A-Z])?(?:\.\d+)?(?:\.\d+)?(?:\.\d+)?)/,
753
753
  onMatch: e
754
754
  },
755
+ {
756
+ regex: /(tcia.collection:[A-Za-z0-9][A-Za-z0-9_\-\.]*[A-Za-z0-9])/,
757
+ onMatch: e
758
+ },
755
759
  {
756
760
  regex: /(uberon:\d+)/,
757
761
  onMatch: e
@@ -765,7 +769,7 @@ var e = (e) => `https://bioregistry.io/${e}`, t = [
765
769
  onMatch: e
766
770
  },
767
771
  {
768
- regex: /(uniprot:(?:(?:[A-N,R-Z][0-9](?:[A-Z][A-Z, 0-9][A-Z, 0-9][0-9]){1,2})|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(?:\.\d+)?))/,
772
+ regex: /(uniprot:(?:(?:[A-N,R-Z][0-9](?:[A-Z][A-Z, 0-9][A-Z, 0-9][0-9]){1,2})|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(?:\.\d+)?(?:-\d+)?(?:#PRO_\d+)?))/,
769
773
  onMatch: e
770
774
  },
771
775
  {
@@ -1 +1 @@
1
- {"version":3,"file":"BioregistryRules.js","names":[],"sources":["../../../src/components/GenericCard/BioregistryRules.ts"],"sourcesContent":["/* eslint-disable no-useless-escape */\n// This file is auto-generated. Do not edit manually.\n// Generated from bioregistry.io API based on collection.yaml\n\nconst onMatch = (value: string) => `https://bioregistry.io/${value}`;\n\nexport const bioregistryRules = [\n {\n regex: /(ado:\\d{7})/,\n onMatch,\n },\n {\n regex: /(agrkb:[1-9][0-9]{14})/,\n onMatch,\n },\n {\n regex: /(anzctr:ACTRN\\d+)/,\n onMatch,\n },\n {\n regex: /(arrayexpress:[AEP]-\\w{4}-\\d+)/,\n onMatch,\n },\n {\n regex: /(arxiv:(?:\\w+(?:\\-\\w+)?(?:\\.\\w+)?\\/?)?\\d{4,7}(?:\\.\\d+(?:v\\d+)?)?)/,\n onMatch,\n },\n {\n regex: /(atc:[A-Z](?:\\d+(?:[A-Z]{1,2}(?:\\d+)?)?)?)/,\n onMatch,\n },\n {\n regex: /(atcc:(?:[a-zA-Z]+-)?\\d+(?:\\.\\d)?)/,\n onMatch,\n },\n {\n regex: /(bacdive:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(bfo:\\d{7})/,\n onMatch,\n },\n {\n regex: /(bgee.gene:[A-Za-z0-9]+)/,\n onMatch,\n },\n {\n regex: /(biocyc:[A-Z-0-9]+(?:\\:)?[A-Za-z0-9+_.%-:]+)/,\n onMatch,\n },\n {\n regex: /(biogrid:\\d+)/,\n onMatch,\n },\n {\n regex: /(bioportal:(?:(?:\\d+)|(?:\\w+)))/,\n onMatch,\n },\n {\n regex: /(bioproject:PRJ[DEN][A-Z]\\d+)/,\n onMatch,\n },\n {\n regex: /(biorxiv:(?:\\d{4}\\.\\d{2}\\.\\d{2}\\.)?\\d{6,8}(?:v\\d{1,3})?)/,\n onMatch,\n },\n {\n regex: /(biosample:SAM[NED](?:\\w)?\\d+)/,\n onMatch,\n },\n {\n regex: /(biostudies:S-[A-Z]{4}[\\-\\_A-Z\\d]+)/,\n onMatch,\n },\n {\n regex: /(bmrb:(?:bmr|bmse|bmst)?[0-9]{1,6})/,\n onMatch,\n },\n {\n regex: /(brenda:(?:(?:\\d+\\.-\\.-\\.-)|(?:\\d+\\.\\d+\\.-\\.-)|(?:\\d+\\.\\d+\\.\\d+\\.-)|(?:\\d+\\.\\d+\\.\\d+\\.\\d+)))/,\n onMatch,\n },\n {\n regex: /(brenda.ligand:\\d+)/,\n onMatch,\n },\n {\n regex: /(brenda.ligandgroup:\\d+)/,\n onMatch,\n },\n {\n regex: /(bto:\\d{7})/,\n onMatch,\n },\n {\n regex: /(cath:[1-6]\\.[0-9]+\\.[0-9]+\\.[0-9]+)/,\n onMatch,\n },\n {\n regex: /(cbioportal:[a-z0-9\\_]+)/,\n onMatch,\n },\n {\n regex: /(cdd:(?:cd)?\\d{5})/,\n onMatch,\n },\n {\n regex: /(cellimage:\\d+)/,\n onMatch,\n },\n {\n regex: /(cellxgene.collection:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/,\n onMatch,\n },\n {\n regex: /(chebi:\\d+)/,\n onMatch,\n },\n {\n regex: /(chembl:CHEMBL\\d+)/,\n onMatch,\n },\n {\n regex: /(chembl.compound:CHEMBL\\d+)/,\n onMatch,\n },\n {\n regex: /(chemspider:\\d+)/,\n onMatch,\n },\n {\n regex: /(civic.aid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.did:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.eid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.gid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.sid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.tid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.vid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(clinicaltrials:NCT\\d{8})/,\n onMatch,\n },\n {\n regex: /(clinvar:\\d+)/,\n onMatch,\n },\n {\n regex: /(clinvar.record:RCV\\d+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(complexportal:CPX-[0-9]+)/,\n onMatch,\n },\n {\n regex: /(cosmic:[A-Z0-9][A-Z0-9-]*)/,\n onMatch,\n },\n {\n regex: /(cosmic.cell:\\d+)/,\n onMatch,\n },\n {\n regex: /(cpt:\\d+)/,\n onMatch,\n },\n {\n regex: /(ctd.chemical:[CD]\\d+)/,\n onMatch,\n },\n {\n regex: /(ctri:CTRI\\/\\d{4}\\/\\d{2,3}\\/\\d+)/,\n onMatch,\n },\n {\n regex: /(cvx:\\d+)/,\n onMatch,\n },\n {\n regex: /(dbgap:phs[0-9]{6}(?:.v\\d+.p\\d+)?)/,\n onMatch,\n },\n {\n regex: /(dbsnp:rs\\d+)/,\n onMatch,\n },\n {\n regex: /(decipher:\\d+)/,\n onMatch,\n },\n {\n regex: /(depmap:ACH-\\d+)/,\n onMatch,\n },\n {\n regex: /(dhba:\\d+)/,\n onMatch,\n },\n {\n regex: /(disprot:DP\\d{5})/,\n onMatch,\n },\n {\n regex: /(dmba:\\d+)/,\n onMatch,\n },\n {\n regex: /(doi:10.\\d{2,9}\\/.*)/,\n onMatch,\n },\n {\n regex: /(doid:\\d+)/,\n onMatch,\n },\n {\n regex: /(drks:DRKS\\d+)/,\n onMatch,\n },\n {\n regex: /(drugbank:DB\\d{5})/,\n onMatch,\n },\n {\n regex: /(drugcentral:\\d+)/,\n onMatch,\n },\n {\n regex: /(duo:\\d{7})/,\n onMatch,\n },\n {\n regex: /(ec:\\d{1,2}(?:(?:(?:\\.\\d{1,3}){1,3})|(?:\\.\\d+){2}\\.[nB]\\d{1,3}|\\.-\\.-\\.-|\\.\\d{1,3}\\.-\\.-|\\.\\d{1,3}\\.\\d{1,3}\\.-)?)/,\n onMatch,\n },\n {\n regex: /(ecacc:\\d+)/,\n onMatch,\n },\n {\n regex: /(edam:(?:data|topic|operation|format)\\_\\d{4})/,\n onMatch,\n },\n {\n regex: /(ega.dataset:EGAD\\d{11})/,\n onMatch,\n },\n {\n regex: /(ega.study:EGAS\\d{11})/,\n onMatch,\n },\n {\n regex: /(emdb:EMD-\\d{4,5})/,\n onMatch,\n },\n {\n regex: /(empiar:\\d+)/,\n onMatch,\n },\n {\n regex: /(ena.embl:[A-Z]+[0-9]+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(ensembl:(?:(?:ENS[FPTG]\\d{11}(?:\\.\\d+)?)|(?:FB\\w{2}\\d{7})|(?:Y[A-Z]{2}\\d{3}[a-zA-Z](?:\\-[A-Z])?)|(?:[A-Z_a-z0-9]+(?:\\.)?(?:t)?(?:\\d+)?(?:[a-z])?)))/,\n onMatch,\n },\n {\n regex: /(ensembl.metazoa:\\w+(?:\\.)?\\d+)/,\n onMatch,\n },\n {\n regex: /(ensembl.plant:\\w+(?:\\.\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(euclinicaltrials:\\d{4}\\-\\d{6}\\-\\d{2})/,\n onMatch,\n },\n {\n regex: /(eupath:\\d{7})/,\n onMatch,\n },\n {\n regex: /(exac.variant:\\d{1,2}\\-\\d+\\-[GATC]\\-[GATC])/,\n onMatch,\n },\n {\n regex: /(fairsharing:(?:bsg-[dscp]?\\d{6})|(?:FAIRsharing\\.\\w+))/,\n onMatch,\n },\n {\n regex: /(flybase:FB\\w{2}\\d{7})/,\n onMatch,\n },\n {\n regex: /(fma:\\d+)/,\n onMatch,\n },\n {\n regex: /(funderregistry:\\d+)/,\n onMatch,\n },\n {\n regex: /(gard:\\d+)/,\n onMatch,\n },\n {\n regex: /(gbif:\\d+)/,\n onMatch,\n },\n {\n regex: /(gdc:[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})/,\n onMatch,\n },\n {\n regex: /(genecards:[A-Za-z-0-9_]+(?:\\@)?)/,\n onMatch,\n },\n {\n regex: /(geo:G(?:PL|SM|SE|DS)\\d+)/,\n onMatch,\n },\n {\n regex: /(go:\\d{7})/,\n onMatch,\n },\n {\n regex: /(gramene.gene:GR\\:\\d+)/,\n onMatch,\n },\n {\n regex: /(gramene.growthstage:\\d{7})/,\n onMatch,\n },\n {\n regex: /(gramene.protein:\\d+)/,\n onMatch,\n },\n {\n regex: /(gtdb:[cdfgops]__\\w+\\S+)/,\n onMatch,\n },\n {\n regex: /(hba:\\d+)/,\n onMatch,\n },\n {\n regex: /(hc.trial:\\d+)/,\n onMatch,\n },\n {\n regex: /(hgnc:\\d{1,5})/,\n onMatch,\n },\n {\n regex: /(hl7.v2codesystem:\\d+)/,\n onMatch,\n },\n {\n regex: /(hmdb:HMDB\\d+)/,\n onMatch,\n },\n {\n regex: /(icd10:(?:(?:[XVI]+)|(?:[A-Z][0-9]+(?:(?:-[A-Z][0-9]+)|(?:\\.[0-9]))?)))/,\n onMatch,\n },\n {\n regex: /(icd9:(?:(?:\\d{1,3}-\\d{1,3})|(?:(?:\\d\\d\\d|V\\d\\d|E[8-9]\\d\\d)(?:\\.\\d{1,2})?)))/,\n onMatch,\n },\n {\n regex: /(icdc:\\d{6})/,\n onMatch,\n },\n {\n regex: /(icf:\\d+)/,\n onMatch,\n },\n {\n regex: /(idr:[0-9]{4})/,\n onMatch,\n },\n {\n regex: /(imgt.hla:[A-Z0-9*:]+)/,\n onMatch,\n },\n {\n regex: /(inchi:InChI\\=1S?\\/[A-Za-z0-9\\.]+(?:\\+[0-9]+)?(?:\\/[cnpqbtmsih][A-Za-z0-9\\-\\+\\(?:\\)\\,\\/\\?\\;\\.]+)*)/,\n onMatch,\n },\n {\n regex: /(inchikey:[A-Z]{14}\\-[A-Z]{10}(?:\\-[A-Z])?)/,\n onMatch,\n },\n {\n regex: /(insdc:(?:[A-Z]\\d{5}|[A-Z]{2}\\d{6}|[A-Z]{4,6}\\d{8,10}|[A-J][A-Z]{2}\\d{5})(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(insdc.sra:[SED]R[APRSXZ]\\d+)/,\n onMatch,\n },\n {\n regex: /(intact:EBI\\-[0-9]+)/,\n onMatch,\n },\n {\n regex: /(interpro:IPR\\d{6})/,\n onMatch,\n },\n {\n regex: /(iso.3166:\\d+)/,\n onMatch,\n },\n {\n regex: /(isrctn:ISRCTN\\d+)/,\n onMatch,\n },\n {\n regex: /(itis:\\d+)/,\n onMatch,\n },\n {\n regex: /(jaxmice:\\d{6})/,\n onMatch,\n },\n {\n regex: /(kegg:(?:(?:[CHDEGTMKR]\\d+)|(?:\\w+:[\\w\\d\\.-]*)|(?:\\w{2,4}\\d{5})|(?:[a-z]{3,5})))/,\n onMatch,\n },\n {\n regex: /(kegg.compound:C\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.disease:H\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.drug:D\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.glycan:G\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.pathway:\\w{2,4}\\d{5})/,\n onMatch,\n },\n {\n regex: /(kegg.reaction:R\\d+)/,\n onMatch,\n },\n {\n regex: /(loinc:(?:\\d|\\w)+-\\d)/,\n onMatch,\n },\n {\n regex: /(massive:MSV\\d+)/,\n onMatch,\n },\n {\n regex: /(mba:\\d+)/,\n onMatch,\n },\n {\n regex: /(mesh:(?:C|D|M)\\d{6,9})/,\n onMatch,\n },\n {\n regex: /(metabolights:MTBLS\\d+)/,\n onMatch,\n },\n {\n regex: /(metacyc.compound:[A-Za-z0-9+_.%-:]+)/,\n onMatch,\n },\n {\n regex: /(mgi:\\d+)/,\n onMatch,\n },\n {\n regex: /(mir:\\d{8})/,\n onMatch,\n },\n {\n regex: /(mirbase:MI\\d{7})/,\n onMatch,\n },\n {\n regex: /(mondo:\\d{7})/,\n onMatch,\n },\n {\n regex: /(ncbigene:\\d+)/,\n onMatch,\n },\n {\n regex: /(ncbiprotein:\\w+_?\\d+(?:.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(ncbitaxon:(?:(?:\\d+)|(?:[a-zA-Z_]+)))/,\n onMatch,\n },\n {\n regex: /(ncit:[CRPA]\\d+)/,\n onMatch,\n },\n {\n regex: /(ndc:\\d+\\-\\d+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(ndfrt:N[0-9]{10})/,\n onMatch,\n },\n {\n regex: /(nextprot:NX_\\w+)/,\n onMatch,\n },\n {\n regex: /(nihreporter.project:\\d+)/,\n onMatch,\n },\n {\n regex: /(nord:\\d+)/,\n onMatch,\n },\n {\n regex: /(omim:\\d+)/,\n onMatch,\n },\n {\n regex: /(omop:\\d+)/,\n onMatch,\n },\n {\n regex: /(orcid:\\d{4}-\\d{4}-\\d{4}-\\d{3}(?:\\d|X))/,\n onMatch,\n },\n {\n regex: /(orphanet:C?\\d+)/,\n onMatch,\n },\n {\n regex: /(orphanet.ordo:C?\\d+)/,\n onMatch,\n },\n {\n regex: /(osf:[a-z0-9]{5})/,\n onMatch,\n },\n {\n regex: /(panther.family:PTHR\\d{5}(?:\\:SF\\d{1,3})?)/,\n onMatch,\n },\n {\n regex: /(panther.pathway:P\\d{5})/,\n onMatch,\n },\n {\n regex: /(panther.pthcmp:(?:G|P|U|C|S)\\d{5})/,\n onMatch,\n },\n {\n regex: /(pba:\\d+)/,\n onMatch,\n },\n {\n regex: /(pdb:[0-9][A-Za-z0-9]{3})/,\n onMatch,\n },\n {\n regex: /(pdb-ccd:\\w{1,3})/,\n onMatch,\n },\n {\n regex: /(pdb.ligand:[A-Za-z0-9]+)/,\n onMatch,\n },\n {\n regex: /(pdc.study:PDC\\d+)/,\n onMatch,\n },\n {\n regex: /(peco:\\d{7})/,\n onMatch,\n },\n {\n regex: /(peptideatlas.dataset:PASS\\d{5})/,\n onMatch,\n },\n {\n regex: /(pfam:PF\\d{5})/,\n onMatch,\n },\n {\n regex: /(pfam.clan:CL\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.disease:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.drug:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.gene:PA\\w+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.pathways:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pmc:PMC\\d+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(pombase:S\\w+(?:\\.)?\\w+(?:\\.)?)/,\n onMatch,\n },\n {\n regex: /(pride.project:P(?:X|R|A)D\\d{6})/,\n onMatch,\n },\n {\n regex: /(pubchem.compound:\\d+)/,\n onMatch,\n },\n {\n regex: /(pubmed:\\d+)/,\n onMatch,\n },\n {\n regex: /(px:(?:R)?PXD\\d{6})/,\n onMatch,\n },\n {\n regex: /(radlex:RID\\d+)/,\n onMatch,\n },\n {\n regex: /(reactome:R-[A-Z]{3}-\\d+(?:-\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(rebec:RBR-\\w+)/,\n onMatch,\n },\n {\n regex: /(refseq:(?:(?:(?:AC|AP|NC|NG|NM|NP|NR|NT|NW|WP|XM|XP|XR|YP|ZP)_\\d+)|(?:NZ_[A-Z]{2,4}\\d+))(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(rfam:RF\\d{5})/,\n onMatch,\n },\n {\n regex: /(rfc:\\d+)/,\n onMatch,\n },\n {\n regex: /(rgd:\\d{4,})/,\n onMatch,\n },\n {\n regex: /(rhea:\\d{5})/,\n onMatch,\n },\n {\n regex: /(rnacentral:URS[0-9A-F]{10}(?:\\_\\d+)?)/,\n onMatch,\n },\n {\n regex: /(ror:0[a-hj-km-np-tv-z|0-9]{6}[0-9]{2})/,\n onMatch,\n },\n {\n regex: /(rrid:[a-zA-Z]+.+)/,\n onMatch,\n },\n {\n regex: /(rrrc:\\d+)/,\n onMatch,\n },\n {\n regex: /(rxnorm:[0-9]{1,7})/,\n onMatch,\n },\n {\n regex: /(scop:\\d+)/,\n onMatch,\n },\n {\n regex: /(sgd:(?:(?:S\\d+$)|(?:Y[A-Z]{2}\\d{3}[a-zA-Z](?:\\-[A-Z])?)))/,\n onMatch,\n },\n {\n regex: /(signor:SIGNOR\\-[A-Z]+\\d+)/,\n onMatch,\n },\n {\n regex: /(snomedct:(?:\\w+)?\\d+)/,\n onMatch,\n },\n {\n regex: /(so:\\d{7})/,\n onMatch,\n },\n {\n regex: /(ssbd.dataset:\\d+)/,\n onMatch,\n },\n {\n regex: /(ssbd.project:\\d+)/,\n onMatch,\n },\n {\n regex: /(stitch:\\w{14})/,\n onMatch,\n },\n {\n regex: /(string:(?:(?:[A-N,R-Z][0-9][A-Z][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[0-9][A-Za-z0-9]{3})))/,\n onMatch,\n },\n {\n regex: /(tao:\\d{7})/,\n onMatch,\n },\n {\n regex: /(tcdb:\\d+(?:\\.[A-Z])?(?:\\.\\d+)?(?:\\.\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(uberon:\\d+)/,\n onMatch,\n },\n {\n regex: /(unii:[A-Z0-9]+)/,\n onMatch,\n },\n {\n regex: /(uniparc:UPI[A-F0-9]{10})/,\n onMatch,\n },\n {\n regex: /(uniprot:(?:(?:[A-N,R-Z][0-9](?:[A-Z][A-Z, 0-9][A-Z, 0-9][0-9]){1,2})|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(?:\\.\\d+)?))/,\n onMatch,\n },\n {\n regex: /(uniprot.isoform:(?:[A-N,R-Z][0-9][A-Z][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(?:\\-\\d+))/,\n onMatch,\n },\n {\n regex: /(uniprot.proteome:UP\\d{9})/,\n onMatch,\n },\n {\n regex: /(uniref:UniRef(?:100|90|50)_(?:[OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9](?:[A-Z][A-Z0-9]{2}[0-9]){1,2}|UPI[A-F0-9]{10}))/,\n onMatch,\n },\n {\n regex: /(wikidata:(?:Q|P|E|L)\\d+)/,\n onMatch,\n },\n {\n regex: /(wikigenes:\\d+)/,\n onMatch,\n },\n {\n regex: /(wikipathways:WP\\d{1,5}(?:\\_r\\d+)?)/,\n onMatch,\n },\n {\n regex: /(wormbase:(?:CE[0-9]{5}|WB[A-Z][a-z]+\\d+))/,\n onMatch,\n },\n {\n regex: /(xenbase:XB\\-\\w+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(zenodo.record:\\d+)/,\n onMatch,\n },\n {\n regex: /(zfin:ZDB\\-\\w+\\-\\d+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(zinc:(?:ZINC)?\\d+)/,\n onMatch,\n },\n]\n"],"mappings":";AAIA,IAAM,KAAW,MAAkB,0BAA0B,KAEhD,IAAmB;CAC9B;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACF"}
1
+ {"version":3,"file":"BioregistryRules.js","names":[],"sources":["../../../src/components/GenericCard/BioregistryRules.ts"],"sourcesContent":["/* eslint-disable no-useless-escape */\n// This file is auto-generated. Do not edit manually.\n// Generated from bioregistry.io API based on collection.yaml\n\nconst onMatch = (value: string) => `https://bioregistry.io/${value}`\n\nexport const bioregistryRules = [\n {\n regex: /(ado:\\d{7})/,\n onMatch,\n },\n {\n regex: /(agrkb:[1-9][0-9]{14})/,\n onMatch,\n },\n {\n regex: /(anzctr:ACTRN\\d+)/,\n onMatch,\n },\n {\n regex: /(arrayexpress:[AEP]-\\w{4}-\\d+)/,\n onMatch,\n },\n {\n regex: /(arxiv:(?:\\w+(?:\\-\\w+)?(?:\\.\\w+)?\\/?)?\\d{4,7}(?:\\.\\d+(?:v\\d+)?)?)/,\n onMatch,\n },\n {\n regex: /(atc:[A-Z](?:\\d+(?:[A-Z]{1,2}(?:\\d+)?)?)?)/,\n onMatch,\n },\n {\n regex: /(atcc:(?:[a-zA-Z]+-)?\\d+(?:\\.\\d)?)/,\n onMatch,\n },\n {\n regex: /(bacdive:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(bfo:\\d{7})/,\n onMatch,\n },\n {\n regex: /(bgee.gene:[A-Za-z0-9]+)/,\n onMatch,\n },\n {\n regex: /(biocyc:[A-Z-0-9]+(?:\\:)?[A-Za-z0-9+_.%-:]+)/,\n onMatch,\n },\n {\n regex: /(biogrid:\\d+)/,\n onMatch,\n },\n {\n regex: /(bioportal:(?:(?:\\d+)|(?:\\w+)))/,\n onMatch,\n },\n {\n regex: /(bioproject:PRJ[DEN][A-Z]\\d+)/,\n onMatch,\n },\n {\n regex: /(biorxiv:(?:\\d{4}\\.\\d{2}\\.\\d{2}\\.)?\\d{6,8}(?:v\\d{1,3})?)/,\n onMatch,\n },\n {\n regex: /(biosample:SAM[NED](?:\\w)?\\d+)/,\n onMatch,\n },\n {\n regex: /(biostudies:S-[A-Z]{4}[\\-\\_A-Z\\d]+)/,\n onMatch,\n },\n {\n regex: /(bmrb:(?:bmr|bmse|bmst)?[0-9]{1,6})/,\n onMatch,\n },\n {\n regex:\n /(brenda:(?:(?:\\d+\\.-\\.-\\.-)|(?:\\d+\\.\\d+\\.-\\.-)|(?:\\d+\\.\\d+\\.\\d+\\.-)|(?:\\d+\\.\\d+\\.\\d+\\.\\d+)))/,\n onMatch,\n },\n {\n regex: /(brenda.ligand:\\d+)/,\n onMatch,\n },\n {\n regex: /(brenda.ligandgroup:\\d+)/,\n onMatch,\n },\n {\n regex: /(bto:\\d{7})/,\n onMatch,\n },\n {\n regex: /(cath:[1-6]\\.[0-9]+\\.[0-9]+\\.[0-9]+)/,\n onMatch,\n },\n {\n regex: /(cbioportal:[a-z0-9\\_]+)/,\n onMatch,\n },\n {\n regex: /(cdd:(?:cd)?\\d{5})/,\n onMatch,\n },\n {\n regex: /(cellimage:\\d+)/,\n onMatch,\n },\n {\n regex:\n /(cellxgene.collection:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/,\n onMatch,\n },\n {\n regex: /(chebi:\\d+)/,\n onMatch,\n },\n {\n regex: /(chembl:CHEMBL\\d+)/,\n onMatch,\n },\n {\n regex: /(chembl.compound:CHEMBL\\d+)/,\n onMatch,\n },\n {\n regex: /(chemspider:\\d+)/,\n onMatch,\n },\n {\n regex: /(civic.aid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.did:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.eid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.gid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.sid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.tid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(civic.vid:[0-9]+)/,\n onMatch,\n },\n {\n regex: /(clinicaltrials:NCT\\d{8})/,\n onMatch,\n },\n {\n regex: /(clinvar:\\d+)/,\n onMatch,\n },\n {\n regex: /(clinvar.record:RCV\\d+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(complexportal:CPX-[0-9]+)/,\n onMatch,\n },\n {\n regex: /(cosmic:[A-Z0-9][A-Z0-9-]*)/,\n onMatch,\n },\n {\n regex: /(cosmic.cell:\\d+)/,\n onMatch,\n },\n {\n regex: /(cpt:\\d+)/,\n onMatch,\n },\n {\n regex: /(ctd.chemical:[CD]\\d+)/,\n onMatch,\n },\n {\n regex: /(ctri:CTRI\\/\\d{4}\\/\\d{2,3}\\/\\d+)/,\n onMatch,\n },\n {\n regex: /(cvx:\\d+)/,\n onMatch,\n },\n {\n regex: /(dbgap:phs[0-9]{6}(?:.v\\d+.p\\d+)?)/,\n onMatch,\n },\n {\n regex: /(dbsnp:rs\\d+)/,\n onMatch,\n },\n {\n regex: /(decipher:\\d+)/,\n onMatch,\n },\n {\n regex: /(depmap:ACH-\\d+)/,\n onMatch,\n },\n {\n regex: /(dhba:\\d+)/,\n onMatch,\n },\n {\n regex: /(disprot:DP\\d{5})/,\n onMatch,\n },\n {\n regex: /(dmba:\\d+)/,\n onMatch,\n },\n {\n regex: /(doi:10.\\d{2,9}\\/.*)/,\n onMatch,\n },\n {\n regex: /(doid:\\d+)/,\n onMatch,\n },\n {\n regex: /(drks:DRKS\\d+)/,\n onMatch,\n },\n {\n regex: /(drugbank:DB\\d{5})/,\n onMatch,\n },\n {\n regex: /(drugcentral:\\d+)/,\n onMatch,\n },\n {\n regex: /(duo:\\d{7})/,\n onMatch,\n },\n {\n regex:\n /(ec:\\d{1,2}(?:(?:(?:\\.\\d{1,3}){1,3})|(?:\\.\\d+){2}\\.[nB]\\d{1,3}|\\.-\\.-\\.-|\\.\\d{1,3}\\.-\\.-|\\.\\d{1,3}\\.\\d{1,3}\\.-)?)/,\n onMatch,\n },\n {\n regex: /(ecacc:\\d+)/,\n onMatch,\n },\n {\n regex: /(edam:(?:data|topic|operation|format)\\_\\d{4})/,\n onMatch,\n },\n {\n regex: /(ega.dataset:EGAD\\d{11})/,\n onMatch,\n },\n {\n regex: /(ega.study:EGAS\\d{11})/,\n onMatch,\n },\n {\n regex: /(emdb:EMD-\\d{4,5})/,\n onMatch,\n },\n {\n regex: /(empiar:\\d+)/,\n onMatch,\n },\n {\n regex: /(ena.embl:[A-Z]+[0-9]+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex:\n /(ensembl:(?:(?:ENS[FPTG]\\d{11}(?:\\.\\d+)?)|(?:FB\\w{2}\\d{7})|(?:Y[A-Z]{2}\\d{3}[a-zA-Z](?:\\-[A-Z])?)|(?:[A-Z_a-z0-9]+(?:\\.)?(?:t)?(?:\\d+)?(?:[a-z])?)))/,\n onMatch,\n },\n {\n regex: /(ensembl.metazoa:\\w+(?:\\.)?\\d+)/,\n onMatch,\n },\n {\n regex: /(ensembl.plant:\\w+(?:\\.\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(euclinicaltrials:\\d{4}\\-\\d{6}\\-\\d{2})/,\n onMatch,\n },\n {\n regex: /(eupath:\\d{7})/,\n onMatch,\n },\n {\n regex: /(exac.variant:\\d{1,2}\\-\\d+\\-[GATC]\\-[GATC])/,\n onMatch,\n },\n {\n regex: /(fairsharing:(?:bsg-[dscp]?\\d{6})|(?:FAIRsharing\\.\\w+))/,\n onMatch,\n },\n {\n regex: /(flybase:FB\\w{2}\\d{7})/,\n onMatch,\n },\n {\n regex: /(fma:\\d+)/,\n onMatch,\n },\n {\n regex: /(funderregistry:\\d+)/,\n onMatch,\n },\n {\n regex: /(gard:\\d+)/,\n onMatch,\n },\n {\n regex: /(gbif:\\d+)/,\n onMatch,\n },\n {\n regex: /(gdc:[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})/,\n onMatch,\n },\n {\n regex: /(genecards:[A-Za-z-0-9_]+(?:\\@)?)/,\n onMatch,\n },\n {\n regex: /(geo:G(?:PL|SM|SE|DS)\\d+)/,\n onMatch,\n },\n {\n regex: /(go:\\d{7})/,\n onMatch,\n },\n {\n regex: /(gramene.gene:GR\\:\\d+)/,\n onMatch,\n },\n {\n regex: /(gramene.growthstage:\\d{7})/,\n onMatch,\n },\n {\n regex: /(gramene.protein:\\d+)/,\n onMatch,\n },\n {\n regex: /(gtdb:[cdfgops]__\\w+\\S+)/,\n onMatch,\n },\n {\n regex: /(hba:\\d+)/,\n onMatch,\n },\n {\n regex: /(hc.trial:\\d+)/,\n onMatch,\n },\n {\n regex: /(hgnc:\\d{1,5})/,\n onMatch,\n },\n {\n regex: /(hl7.v2codesystem:\\d+)/,\n onMatch,\n },\n {\n regex: /(hmdb:HMDB\\d+)/,\n onMatch,\n },\n {\n regex:\n /(icd10:(?:(?:[XVI]+)|(?:[A-Z][0-9]+(?:(?:-[A-Z][0-9]+)|(?:\\.[0-9]))?)))/,\n onMatch,\n },\n {\n regex:\n /(icd9:(?:(?:\\d{1,3}-\\d{1,3})|(?:(?:\\d\\d\\d|V\\d\\d|E[8-9]\\d\\d)(?:\\.\\d{1,2})?)))/,\n onMatch,\n },\n {\n regex: /(icdc:\\d{6})/,\n onMatch,\n },\n {\n regex: /(icf:\\d+)/,\n onMatch,\n },\n {\n regex: /(idr:[0-9]{4})/,\n onMatch,\n },\n {\n regex: /(imgt.hla:[A-Z0-9*:]+)/,\n onMatch,\n },\n {\n regex:\n /(inchi:InChI\\=1S?\\/[A-Za-z0-9\\.]+(?:\\+[0-9]+)?(?:\\/[cnpqbtmsih][A-Za-z0-9\\-\\+\\(?:\\)\\,\\/\\?\\;\\.]+)*)/,\n onMatch,\n },\n {\n regex: /(inchikey:[A-Z]{14}\\-[A-Z]{10}(?:\\-[A-Z])?)/,\n onMatch,\n },\n {\n regex:\n /(insdc:(?:[A-Z]\\d{5}|[A-Z]{2}\\d{6}|[A-Z]{4,6}\\d{8,10}|[A-J][A-Z]{2}\\d{5})(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(insdc.sra:[SED]R[APRSXZ]\\d+)/,\n onMatch,\n },\n {\n regex: /(intact:EBI\\-[0-9]+)/,\n onMatch,\n },\n {\n regex: /(interpro:IPR\\d{6})/,\n onMatch,\n },\n {\n regex: /(iso.3166:\\d+)/,\n onMatch,\n },\n {\n regex: /(isrctn:ISRCTN\\d+)/,\n onMatch,\n },\n {\n regex: /(itis:\\d+)/,\n onMatch,\n },\n {\n regex: /(jaxmice:\\d{6})/,\n onMatch,\n },\n {\n regex:\n /(kegg:(?:(?:[CHDEGTMKR]\\d+)|(?:\\w+:[\\w\\d\\.-]*)|(?:\\w{2,4}\\d{5})|(?:[a-z]{3,5})))/,\n onMatch,\n },\n {\n regex: /(kegg.compound:C\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.disease:H\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.drug:D\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.glycan:G\\d+)/,\n onMatch,\n },\n {\n regex: /(kegg.pathway:\\w{2,4}\\d{5})/,\n onMatch,\n },\n {\n regex: /(kegg.reaction:R\\d+)/,\n onMatch,\n },\n {\n regex: /(loinc:(?:\\d|\\w)+-\\d)/,\n onMatch,\n },\n {\n regex: /(massive:MSV\\d+)/,\n onMatch,\n },\n {\n regex: /(mba:\\d+)/,\n onMatch,\n },\n {\n regex: /(mesh:(?:C|D|Q)\\d+)/,\n onMatch,\n },\n {\n regex: /(metabolights:MTBL[CS]\\d+)/,\n onMatch,\n },\n {\n regex: /(metacyc.compound:[A-Za-z0-9+_.%-:]+)/,\n onMatch,\n },\n {\n regex: /(mgi:\\d+)/,\n onMatch,\n },\n {\n regex: /(mir:\\d{8})/,\n onMatch,\n },\n {\n regex: /(mirbase:MI\\d{7})/,\n onMatch,\n },\n {\n regex: /(mondo:\\d{7})/,\n onMatch,\n },\n {\n regex: /(ncbigene:\\d+)/,\n onMatch,\n },\n {\n regex: /(ncbiprotein:\\w+_?\\d+(?:.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(ncbitaxon:(?:(?:\\d+)|(?:[a-zA-Z_]+)))/,\n onMatch,\n },\n {\n regex: /(ncit:[CRPA]\\d+)/,\n onMatch,\n },\n {\n regex: /(ndc:\\d+\\-\\d+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(ndfrt:N[0-9]{10})/,\n onMatch,\n },\n {\n regex: /(nextprot:NX_\\w+)/,\n onMatch,\n },\n {\n regex: /(nihreporter.project:\\d+)/,\n onMatch,\n },\n {\n regex: /(nord:\\d+)/,\n onMatch,\n },\n {\n regex: /(omim:\\d+)/,\n onMatch,\n },\n {\n regex: /(omop:\\d+)/,\n onMatch,\n },\n {\n regex: /(orcid:\\d{4}-\\d{4}-\\d{4}-\\d{3}(?:\\d|X))/,\n onMatch,\n },\n {\n regex: /(orphanet:C?\\d+)/,\n onMatch,\n },\n {\n regex: /(orphanet.ordo:C?\\d+)/,\n onMatch,\n },\n {\n regex: /(osf:[a-z0-9]{5})/,\n onMatch,\n },\n {\n regex: /(panther.family:PTHR\\d{5}(?:\\:SF\\d{1,3})?)/,\n onMatch,\n },\n {\n regex: /(panther.pathway:P\\d{5})/,\n onMatch,\n },\n {\n regex: /(panther.pthcmp:(?:G|P|U|C|S)\\d{5})/,\n onMatch,\n },\n {\n regex: /(pba:\\d+)/,\n onMatch,\n },\n {\n regex: /(pdb:[0-9][A-Za-z0-9]{3})/,\n onMatch,\n },\n {\n regex: /(pdb-ccd:\\w{1,3})/,\n onMatch,\n },\n {\n regex: /(pdb.ligand:[A-Za-z0-9]+)/,\n onMatch,\n },\n {\n regex: /(pdc.study:PDC\\d+)/,\n onMatch,\n },\n {\n regex: /(peco:\\d{7})/,\n onMatch,\n },\n {\n regex: /(peptideatlas.dataset:PASS\\d{5})/,\n onMatch,\n },\n {\n regex: /(pfam:PF\\d{5})/,\n onMatch,\n },\n {\n regex: /(pfam.clan:CL\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.disease:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.drug:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.gene:PA\\w+)/,\n onMatch,\n },\n {\n regex: /(pharmgkb.pathways:PA\\d+)/,\n onMatch,\n },\n {\n regex: /(pmc:PMC\\d+(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(pombase:S\\w+(?:\\.)?\\w+(?:\\.)?)/,\n onMatch,\n },\n {\n regex: /(pride.project:P(?:X|R|A)D\\d{6})/,\n onMatch,\n },\n {\n regex: /(pubchem.compound:\\d+)/,\n onMatch,\n },\n {\n regex: /(pubmed:\\d+)/,\n onMatch,\n },\n {\n regex: /(px:(?:R)?PXD\\d{6})/,\n onMatch,\n },\n {\n regex: /(radlex:RID\\d+)/,\n onMatch,\n },\n {\n regex: /(reactome:R-[A-Z]{3}-\\d+(?:-\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(rebec:RBR-\\w+)/,\n onMatch,\n },\n {\n regex:\n /(refseq:(?:(?:(?:AC|AP|NC|NG|NM|NP|NR|NT|NW|WP|XM|XP|XR|YP|ZP)_\\d+)|(?:NZ_[A-Z]{2,4}\\d+))(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(rfam:RF\\d{5})/,\n onMatch,\n },\n {\n regex: /(rfc:\\d+)/,\n onMatch,\n },\n {\n regex: /(rgd:\\d{4,})/,\n onMatch,\n },\n {\n regex: /(rhea:\\d{5})/,\n onMatch,\n },\n {\n regex: /(rnacentral:URS[0-9A-F]{10}(?:\\_\\d+)?)/,\n onMatch,\n },\n {\n regex: /(ror:0[a-hj-km-np-tv-z|0-9]{6}[0-9]{2})/,\n onMatch,\n },\n {\n regex: /(rrid:[a-zA-Z]+.+)/,\n onMatch,\n },\n {\n regex: /(rrrc:\\d+)/,\n onMatch,\n },\n {\n regex: /(rxnorm:[0-9]{1,7})/,\n onMatch,\n },\n {\n regex: /(scop:\\d+)/,\n onMatch,\n },\n {\n regex: /(sgd:(?:(?:S\\d+$)|(?:Y[A-Z]{2}\\d{3}[a-zA-Z](?:\\-[A-Z])?)))/,\n onMatch,\n },\n {\n regex: /(signor:SIGNOR\\-[A-Z]+\\d+)/,\n onMatch,\n },\n {\n regex: /(snomedct:(?:\\w+)?\\d+)/,\n onMatch,\n },\n {\n regex: /(so:\\d{7})/,\n onMatch,\n },\n {\n regex: /(ssbd.dataset:\\d+)/,\n onMatch,\n },\n {\n regex: /(ssbd.project:\\d+)/,\n onMatch,\n },\n {\n regex: /(stitch:\\w{14})/,\n onMatch,\n },\n {\n regex:\n /(string:(?:(?:[A-N,R-Z][0-9][A-Z][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[0-9][A-Za-z0-9]{3})))/,\n onMatch,\n },\n {\n regex: /(tao:\\d{7})/,\n onMatch,\n },\n {\n regex: /(tcdb:\\d+(?:\\.[A-Z])?(?:\\.\\d+)?(?:\\.\\d+)?(?:\\.\\d+)?)/,\n onMatch,\n },\n {\n regex: /(tcia.collection:[A-Za-z0-9][A-Za-z0-9_\\-\\.]*[A-Za-z0-9])/,\n onMatch,\n },\n {\n regex: /(uberon:\\d+)/,\n onMatch,\n },\n {\n regex: /(unii:[A-Z0-9]+)/,\n onMatch,\n },\n {\n regex: /(uniparc:UPI[A-F0-9]{10})/,\n onMatch,\n },\n {\n regex:\n /(uniprot:(?:(?:[A-N,R-Z][0-9](?:[A-Z][A-Z, 0-9][A-Z, 0-9][0-9]){1,2})|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(?:\\.\\d+)?(?:-\\d+)?(?:#PRO_\\d+)?))/,\n onMatch,\n },\n {\n regex:\n /(uniprot.isoform:(?:[A-N,R-Z][0-9][A-Z][A-Z, 0-9][A-Z, 0-9][0-9])|(?:[O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(?:\\-\\d+))/,\n onMatch,\n },\n {\n regex: /(uniprot.proteome:UP\\d{9})/,\n onMatch,\n },\n {\n regex:\n /(uniref:UniRef(?:100|90|50)_(?:[OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9](?:[A-Z][A-Z0-9]{2}[0-9]){1,2}|UPI[A-F0-9]{10}))/,\n onMatch,\n },\n {\n regex: /(wikidata:(?:Q|P|E|L)\\d+)/,\n onMatch,\n },\n {\n regex: /(wikigenes:\\d+)/,\n onMatch,\n },\n {\n regex: /(wikipathways:WP\\d{1,5}(?:\\_r\\d+)?)/,\n onMatch,\n },\n {\n regex: /(wormbase:(?:CE[0-9]{5}|WB[A-Z][a-z]+\\d+))/,\n onMatch,\n },\n {\n regex: /(xenbase:XB\\-\\w+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(zenodo.record:\\d+)/,\n onMatch,\n },\n {\n regex: /(zfin:ZDB\\-\\w+\\-\\d+\\-\\d+)/,\n onMatch,\n },\n {\n regex: /(zinc:(?:ZINC)?\\d+)/,\n onMatch,\n },\n]\n"],"mappings":";AAIA,IAAM,KAAW,MAAkB,0BAA0B,KAEhD,IAAmB;CAC9B;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OACE;EACF;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACD;EACE,OAAO;EACP;EACD;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"GenericCard.d.ts","sourceRoot":"","sources":["../../../src/components/GenericCard/GenericCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,KAAoC,MAAM,OAAO,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAG7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAA;AAIjG,kHAAkH;AAClH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,0FAA0F;IAC1F,IAAI,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,sBAAsB,CAAC,EAAE;QACvB,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,6FAA6F;IAC7F,kCAAkC,CAAC,EAAE;QACnC,sEAAsE;QACtE,qBAAqB,EAAE,qBAAqB,CAAA;QAC5C,gDAAgD;QAChD,gBAAgB,EAAE,OAAO,CAAA;KAC1B,CAAA;IACD,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,8DAA8D;IAC9D,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,qEAAqE;IACrE,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;wBACoB;IACpB,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAA;IACpB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE,CAAA;IAC/C;;OAEG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC;;OAEG;IACH,uBAAuB,CAAC,EAAE,4BAA4B,CAAA;IACtD;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACnC;;OAEG;IACH,qBAAqB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAID;;GAEG;AACH,eAAO,MAAM,WAAW,yFAyKtB,CAAA;AAEF,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"GenericCard.d.ts","sourceRoot":"","sources":["../../../src/components/GenericCard/GenericCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,KAAoC,MAAM,OAAO,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAG7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAA;AAIjG,kHAAkH;AAClH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,0FAA0F;IAC1F,IAAI,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,sBAAsB,CAAC,EAAE;QACvB,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,6FAA6F;IAC7F,kCAAkC,CAAC,EAAE;QACnC,sEAAsE;QACtE,qBAAqB,EAAE,qBAAqB,CAAA;QAC5C,gDAAgD;QAChD,gBAAgB,EAAE,OAAO,CAAA;KAC1B,CAAA;IACD,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,8DAA8D;IAC9D,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,qEAAqE;IACrE,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;wBACoB;IACpB,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAA;IACpB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE,CAAA;IAC/C;;OAEG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC;;OAEG;IACH,uBAAuB,CAAC,EAAE,4BAA4B,CAAA;IACtD;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACnC;;OAEG;IACH,qBAAqB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAID;;GAEG;AACH,eAAO,MAAM,WAAW,yFA8KtB,CAAA;AAEF,eAAe,WAAW,CAAA"}
@@ -2,16 +2,16 @@ import e from "../row_renderers/utils/CardFooter.js";
2
2
  import "../row_renderers/utils/index.js";
3
3
  import { SmartLink as t } from "../SmartLink/SmartLink.js";
4
4
  import { GenericCardTitle as n } from "./GenericCardTitle.js";
5
- import { CollapsibleDescription as r } from "./CollapsibleDescription.js";
6
- import i from "../HeaderCard.js";
7
- import { FileHandleLink as a } from "../widgets/FileHandleLink.js";
5
+ import { FileHandleLink as r } from "../widgets/FileHandleLink.js";
6
+ import { CollapsibleDescription as i } from "./CollapsibleDescription.js";
7
+ import a from "../HeaderCard.js";
8
8
  import { forwardRef as o } from "react";
9
9
  import { Box as s, Stack as c } from "@mui/material";
10
10
  import { jsx as l, jsxs as u } from "react/jsx-runtime";
11
11
  //#region src/components/GenericCard/GenericCard.tsx
12
12
  var d = [], f = o(function(o, f) {
13
13
  let { icon: p, type: m, title: h, titleLinkConfiguration: g, titleAsFileHandleLinkConfiguration: _, subtitle: v, description: y, descriptionSubTitle: b = "", descriptionConfig: x, cardTopContent: S, cardTopButtons: C, isHeader: w = !1, headerCardVariant: T, useStylesForDisplayedImage: E = !1, labels: D = d, secondaryLabelLimit: O, ctaLinkConfig: k, renderedIconList: A, sustainabilityScorecard: j, cardTypeAdornment: M, titleAreaRightContent: N, charCountCutoff: P } = o, F = D.length > 0;
14
- return w ? /* @__PURE__ */ l(i, {
14
+ return w ? /* @__PURE__ */ l(a, {
15
15
  ref: f,
16
16
  headerCardVariant: T,
17
17
  descriptionConfig: x,
@@ -29,7 +29,12 @@ var d = [], f = o(function(o, f) {
29
29
  secondaryLabelLimit: O,
30
30
  cardTopButtons: C,
31
31
  cardTopContent: S,
32
- sustainabilityScorecard: j
32
+ sustainabilityScorecard: j,
33
+ renderedIconList: A,
34
+ cardTypeAdornment: M,
35
+ titleAsFileHandleLinkConfiguration: _,
36
+ titleAreaRightContent: N,
37
+ descriptionSubTitle: b
33
38
  }) : /* @__PURE__ */ u("div", {
34
39
  style: {
35
40
  marginTop: w ? "0px" : void 0,
@@ -81,7 +86,7 @@ var d = [], f = o(function(o, f) {
81
86
  title: h,
82
87
  href: g?.href,
83
88
  target: g?.target
84
- }), _ && /* @__PURE__ */ l(a, {
89
+ }), _ && /* @__PURE__ */ l(r, {
85
90
  fileHandleAssociation: _.fileHandleAssociation,
86
91
  showDownloadIcon: _.showDownloadIcon,
87
92
  displayValue: h
@@ -91,7 +96,7 @@ var d = [], f = o(function(o, f) {
91
96
  className: "SRC-author",
92
97
  children: v
93
98
  }),
94
- /* @__PURE__ */ l(r, {
99
+ /* @__PURE__ */ l(i, {
95
100
  description: y,
96
101
  descriptionSubTitle: b,
97
102
  descriptionConfig: x
@@ -1 +1 @@
1
- {"version":3,"file":"GenericCard.js","names":[],"sources":["../../../src/components/GenericCard/GenericCard.tsx"],"sourcesContent":["import { GenericCardTitle } from '@/components/GenericCard/GenericCardTitle'\nimport { CardLabel } from '@/components/row_renderers/utils/CardFooter'\nimport { Box, Stack } from '@mui/material'\nimport { FileHandleAssociation } from '@sage-bionetworks/synapse-types'\nimport React, { CSSProperties, forwardRef } from 'react'\nimport { DescriptionConfig } from '../CardContainerLogic'\nimport HeaderCard, { HeaderCardVariant } from '../HeaderCard'\nimport { CardFooter } from '../row_renderers/utils'\nimport { SmartLink } from '../SmartLink/SmartLink'\nimport { SustainabilityScorecardProps } from '../SustainabilityScorecard/SustainabilityScorecard'\nimport { FileHandleLink } from '../widgets/FileHandleLink'\nimport { CollapsibleDescription } from './CollapsibleDescription'\n\n/** Resolved CTA link configuration with actual href values (as opposed to CTACardLink which uses column names) */\nexport type CTALinkConfig = {\n text: React.ReactNode\n href?: string\n target?: string\n}\n\nexport type GenericCardProps = {\n /** String representing the 'type' of object. This is displayed as a label on the card. */\n type: string\n /** The title displayed on the card. */\n title: string\n /** Optionally provide href/target if the title should be a link */\n titleLinkConfiguration?: {\n href: string\n target: string\n }\n /** Optionally provide configuration if the title should be a link to a Synapse FileHandle */\n titleAsFileHandleLinkConfiguration?: {\n /** The FileHandleAssociation used to get access to the file handle */\n fileHandleAssociation: FileHandleAssociation\n /** Whether a 'download' icon should be shown */\n showDownloadIcon: boolean\n }\n /** An optional subtitle to be displayed on the card */\n subtitle?: string\n /** An description to be displayed on the card */\n description: string\n /** An optional description subtitle to be displayed on the card */\n descriptionSubTitle?: string\n /** Configuration for altering the display of the description prop */\n descriptionConfig?: DescriptionConfig\n /** Optional slot for adding content to the top of the card */\n cardTopContent?: React.ReactNode\n /** Optional slot for adding action buttons to the top of the card */\n cardTopButtons?: React.ReactNode\n /** If true, a HeaderCard component will be rendered */\n isHeader?: boolean\n /** The variant of HeaderCard to render if `isHeader` is true */\n headerCardVariant?: HeaderCardVariant\n /** Set to true if the icon is an arbitrary image. The card styles will be updated to accommodate the image\n * @default false */\n useStylesForDisplayedImage?: boolean\n /**\n * The rendered icon on the card\n */\n icon: React.ReactNode\n /**\n * The card labels to be displayed in the footer of the card\n */\n labels?: CardLabel[]\n /**\n * The initial number of labels to display in the footer of the card\n */\n secondaryLabelLimit?: number\n /**\n * Optional configuration for displaying CTA button(s) on the card. Accepts a single config or an array.\n */\n ctaLinkConfig?: CTALinkConfig | CTALinkConfig[]\n /**\n * The rendered icon list on the card\n */\n renderedIconList?: React.ReactNode\n /**\n * Optional sustainability scorecard to be displayed on the header card\n */\n sustainabilityScorecard?: SustainabilityScorecardProps\n /**\n * Optional ReactNode to be rendered next to the card type\n */\n cardTypeAdornment?: React.ReactNode\n /**\n * Optional content to render to the right of the title/subtitle/description area.\n */\n titleAreaRightContent?: React.ReactNode\n /**\n * Character count threshold for truncating description\n * @default 400\n */\n charCountCutoff?: number\n}\n\nconst EMPTY_CARD_LABEL_ARRAY: CardLabel[] = []\n\n/**\n * Generic portal card UI component with a predefined layout\n */\nexport const GenericCard = forwardRef(function GenericCard(\n props: GenericCardProps,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n icon,\n type,\n title,\n titleLinkConfiguration,\n titleAsFileHandleLinkConfiguration,\n subtitle,\n description,\n descriptionSubTitle = '',\n descriptionConfig,\n cardTopContent,\n cardTopButtons,\n isHeader = false,\n headerCardVariant,\n useStylesForDisplayedImage = false,\n labels = EMPTY_CARD_LABEL_ARRAY,\n secondaryLabelLimit,\n ctaLinkConfig,\n renderedIconList,\n sustainabilityScorecard,\n cardTypeAdornment,\n titleAreaRightContent,\n charCountCutoff,\n } = props\n\n const showFooter = labels.length > 0\n\n const style: CSSProperties = {\n // undefined, take default value from class\n marginTop: isHeader ? '0px' : undefined,\n marginBottom: isHeader ? '0px' : undefined,\n paddingBottom:\n showFooter || useStylesForDisplayedImage ? undefined : '15px',\n }\n\n if (isHeader) {\n return (\n <HeaderCard\n ref={ref}\n headerCardVariant={headerCardVariant}\n descriptionConfig={descriptionConfig}\n charCountCutoff={charCountCutoff}\n title={title}\n subTitle={subtitle}\n description={description}\n type={type}\n icon={icon}\n values={labels}\n href={titleLinkConfiguration?.href}\n target={titleLinkConfiguration?.target}\n ctaLinkConfig={ctaLinkConfig}\n isAlignToLeftNav={true}\n secondaryLabelLimit={secondaryLabelLimit}\n cardTopButtons={cardTopButtons}\n cardTopContent={cardTopContent}\n sustainabilityScorecard={sustainabilityScorecard}\n />\n )\n }\n\n return (\n <div style={style} ref={ref} className={'SRC-portalCard'}>\n <div className={'SRC-portalCardMain'}>\n {icon}\n <div className=\"SRC-cardContent\">\n {cardTopButtons && (\n <Box\n sx={{\n position: 'absolute',\n right: '24px',\n display: 'flex',\n float: 'right',\n flexDirection: 'row',\n gap: '10px',\n }}\n >\n {cardTopButtons}\n </Box>\n )}\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: '10px',\n }}\n >\n <div className=\"SRC-type\">{type}</div>\n {cardTypeAdornment}\n </Stack>\n {renderedIconList}\n <Box className=\"SRC-cardTitleArea\">\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <div>\n <h3\n className=\"SRC-boldText SRC-blackText\"\n style={{ margin: 'none' }}\n >\n {!titleAsFileHandleLinkConfiguration && (\n <GenericCardTitle\n title={title}\n href={titleLinkConfiguration?.href}\n target={titleLinkConfiguration?.target}\n />\n )}\n {titleAsFileHandleLinkConfiguration && (\n <FileHandleLink\n fileHandleAssociation={\n titleAsFileHandleLinkConfiguration.fileHandleAssociation\n }\n showDownloadIcon={\n titleAsFileHandleLinkConfiguration.showDownloadIcon\n }\n displayValue={title}\n />\n )}\n </h3>\n </div>\n {subtitle && <div className=\"SRC-author\">{subtitle}</div>}\n <CollapsibleDescription\n description={description}\n descriptionSubTitle={descriptionSubTitle}\n descriptionConfig={descriptionConfig}\n />\n {ctaLinkConfig && (\n <Box\n sx={{ mt: '20px', display: 'flex', gap: 2, flexWrap: 'wrap' }}\n >\n {(Array.isArray(ctaLinkConfig)\n ? ctaLinkConfig\n : [ctaLinkConfig]\n ).map(\n (config, index) =>\n config.text &&\n config.href && (\n <SmartLink\n key={index}\n href={config.href}\n target={config.target}\n >\n {config.text}\n </SmartLink>\n ),\n )}\n </Box>\n )}\n </Box>\n {titleAreaRightContent && (\n <div className=\"SRC-cardTitleAreaDetails\">\n {titleAreaRightContent}\n </div>\n )}\n </Box>\n </div>\n </div>\n {showFooter && (\n <CardFooter\n isHeader={false}\n secondaryLabelLimit={secondaryLabelLimit}\n values={labels}\n className={useStylesForDisplayedImage ? undefined : 'hasIcon'}\n cardTopContent={cardTopContent}\n />\n )}\n </div>\n )\n})\n\nexport default GenericCard\n"],"mappings":";;;;;;;;;;;AA+FA,IAAM,IAAsC,EAAE,EAKjC,IAAc,EAAW,SACpC,GACA,GACA;CACA,IAAM,EACJ,SACA,SACA,UACA,2BACA,uCACA,aACA,gBACA,yBAAsB,IACtB,sBACA,mBACA,mBACA,cAAW,IACX,sBACA,gCAA6B,IAC7B,YAAS,GACT,wBACA,kBACA,qBACA,4BACA,sBACA,0BACA,uBACE,GAEE,IAAa,EAAO,SAAS;AAmCnC,QAzBI,IAEA,kBAAC,GAAD;EACO;EACc;EACA;EACF;EACV;EACP,UAAU;EACG;EACP;EACA;EACN,QAAQ;EACR,MAAM,GAAwB;EAC9B,QAAQ,GAAwB;EACjB;EACf,kBAAkB;EACG;EACL;EACA;EACS;EACzB,CAAA,GAKJ,kBAAC,OAAD;EAAY,OAlCe;GAE3B,WAAW,IAAW,QAAQ,KAAA;GAC9B,cAAc,IAAW,QAAQ,KAAA;GACjC,eACE,KAAc,IAA6B,KAAA,IAAY;GAC1D;EA4ByB;EAAK,WAAW;YAAxC,CACE,kBAAC,OAAD;GAAK,WAAW;aAAhB,CACG,GACD,kBAAC,OAAD;IAAK,WAAU;cAAf;KACG,KACC,kBAAC,GAAD;MACE,IAAI;OACF,UAAU;OACV,OAAO;OACP,SAAS;OACT,OAAO;OACP,eAAe;OACf,KAAK;OACN;gBAEA;MACG,CAAA;KAER,kBAAC,GAAD;MACE,IAAI;OACF,eAAe;OACf,YAAY;OACZ,KAAK;OACN;gBALH,CAOE,kBAAC,OAAD;OAAK,WAAU;iBAAY;OAAW,CAAA,EACrC,EACK;;KACP;KACD,kBAAC,GAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD;OAAK,IAAI;QAAE,MAAM;QAAG,UAAU;QAAG;iBAAjC;QACE,kBAAC,OAAD,EAAA,UACE,kBAAC,MAAD;SACE,WAAU;SACV,OAAO,EAAE,QAAQ,QAAQ;mBAF3B,CAIG,CAAC,KACA,kBAAC,GAAD;UACS;UACP,MAAM,GAAwB;UAC9B,QAAQ,GAAwB;UAChC,CAAA,EAEH,KACC,kBAAC,GAAD;UACE,uBACE,EAAmC;UAErC,kBACE,EAAmC;UAErC,cAAc;UACd,CAAA,CAED;YACD,CAAA;QACL,KAAY,kBAAC,OAAD;SAAK,WAAU;mBAAc;SAAe,CAAA;QACzD,kBAAC,GAAD;SACe;SACQ;SACF;SACnB,CAAA;QACD,KACC,kBAAC,GAAD;SACE,IAAI;UAAE,IAAI;UAAQ,SAAS;UAAQ,KAAK;UAAG,UAAU;UAAQ;oBAE3D,MAAM,QAAQ,EAAc,GAC1B,IACA,CAAC,EAAc,EACjB,KACC,GAAQ,MACP,EAAO,QACP,EAAO,QACL,kBAAC,GAAD;UAEE,MAAM,EAAO;UACb,QAAQ,EAAO;oBAEd,EAAO;UACE,EALL,EAKK,CAEjB;SACG,CAAA;QAEJ;UACL,KACC,kBAAC,OAAD;OAAK,WAAU;iBACZ;OACG,CAAA,CAEJ;;KACF;MACF;MACL,KACC,kBAAC,GAAD;GACE,UAAU;GACW;GACrB,QAAQ;GACR,WAAW,IAA6B,KAAA,IAAY;GACpC;GAChB,CAAA,CAEA;;EAER"}
1
+ {"version":3,"file":"GenericCard.js","names":[],"sources":["../../../src/components/GenericCard/GenericCard.tsx"],"sourcesContent":["import { GenericCardTitle } from '@/components/GenericCard/GenericCardTitle'\nimport { CardLabel } from '@/components/row_renderers/utils/CardFooter'\nimport { Box, Stack } from '@mui/material'\nimport { FileHandleAssociation } from '@sage-bionetworks/synapse-types'\nimport React, { CSSProperties, forwardRef } from 'react'\nimport { DescriptionConfig } from '../CardContainerLogic'\nimport HeaderCard, { HeaderCardVariant } from '../HeaderCard'\nimport { CardFooter } from '../row_renderers/utils'\nimport { SmartLink } from '../SmartLink/SmartLink'\nimport { SustainabilityScorecardProps } from '../SustainabilityScorecard/SustainabilityScorecard'\nimport { FileHandleLink } from '../widgets/FileHandleLink'\nimport { CollapsibleDescription } from './CollapsibleDescription'\n\n/** Resolved CTA link configuration with actual href values (as opposed to CTACardLink which uses column names) */\nexport type CTALinkConfig = {\n text: React.ReactNode\n href?: string\n target?: string\n}\n\nexport type GenericCardProps = {\n /** String representing the 'type' of object. This is displayed as a label on the card. */\n type: string\n /** The title displayed on the card. */\n title: string\n /** Optionally provide href/target if the title should be a link */\n titleLinkConfiguration?: {\n href: string\n target: string\n }\n /** Optionally provide configuration if the title should be a link to a Synapse FileHandle */\n titleAsFileHandleLinkConfiguration?: {\n /** The FileHandleAssociation used to get access to the file handle */\n fileHandleAssociation: FileHandleAssociation\n /** Whether a 'download' icon should be shown */\n showDownloadIcon: boolean\n }\n /** An optional subtitle to be displayed on the card */\n subtitle?: string\n /** An description to be displayed on the card */\n description: string\n /** An optional description subtitle to be displayed on the card */\n descriptionSubTitle?: string\n /** Configuration for altering the display of the description prop */\n descriptionConfig?: DescriptionConfig\n /** Optional slot for adding content to the top of the card */\n cardTopContent?: React.ReactNode\n /** Optional slot for adding action buttons to the top of the card */\n cardTopButtons?: React.ReactNode\n /** If true, a HeaderCard component will be rendered */\n isHeader?: boolean\n /** The variant of HeaderCard to render if `isHeader` is true */\n headerCardVariant?: HeaderCardVariant\n /** Set to true if the icon is an arbitrary image. The card styles will be updated to accommodate the image\n * @default false */\n useStylesForDisplayedImage?: boolean\n /**\n * The rendered icon on the card\n */\n icon: React.ReactNode\n /**\n * The card labels to be displayed in the footer of the card\n */\n labels?: CardLabel[]\n /**\n * The initial number of labels to display in the footer of the card\n */\n secondaryLabelLimit?: number\n /**\n * Optional configuration for displaying CTA button(s) on the card. Accepts a single config or an array.\n */\n ctaLinkConfig?: CTALinkConfig | CTALinkConfig[]\n /**\n * The rendered icon list on the card\n */\n renderedIconList?: React.ReactNode\n /**\n * Optional sustainability scorecard to be displayed on the header card\n */\n sustainabilityScorecard?: SustainabilityScorecardProps\n /**\n * Optional ReactNode to be rendered next to the card type\n */\n cardTypeAdornment?: React.ReactNode\n /**\n * Optional content to render to the right of the title/subtitle/description area.\n */\n titleAreaRightContent?: React.ReactNode\n /**\n * Character count threshold for truncating description\n * @default 400\n */\n charCountCutoff?: number\n}\n\nconst EMPTY_CARD_LABEL_ARRAY: CardLabel[] = []\n\n/**\n * Generic portal card UI component with a predefined layout\n */\nexport const GenericCard = forwardRef(function GenericCard(\n props: GenericCardProps,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n icon,\n type,\n title,\n titleLinkConfiguration,\n titleAsFileHandleLinkConfiguration,\n subtitle,\n description,\n descriptionSubTitle = '',\n descriptionConfig,\n cardTopContent,\n cardTopButtons,\n isHeader = false,\n headerCardVariant,\n useStylesForDisplayedImage = false,\n labels = EMPTY_CARD_LABEL_ARRAY,\n secondaryLabelLimit,\n ctaLinkConfig,\n renderedIconList,\n sustainabilityScorecard,\n cardTypeAdornment,\n titleAreaRightContent,\n charCountCutoff,\n } = props\n\n const showFooter = labels.length > 0\n\n const style: CSSProperties = {\n // undefined, take default value from class\n marginTop: isHeader ? '0px' : undefined,\n marginBottom: isHeader ? '0px' : undefined,\n paddingBottom:\n showFooter || useStylesForDisplayedImage ? undefined : '15px',\n }\n\n if (isHeader) {\n return (\n <HeaderCard\n ref={ref}\n headerCardVariant={headerCardVariant}\n descriptionConfig={descriptionConfig}\n charCountCutoff={charCountCutoff}\n title={title}\n subTitle={subtitle}\n description={description}\n type={type}\n icon={icon}\n values={labels}\n href={titleLinkConfiguration?.href}\n target={titleLinkConfiguration?.target}\n ctaLinkConfig={ctaLinkConfig}\n isAlignToLeftNav={true}\n secondaryLabelLimit={secondaryLabelLimit}\n cardTopButtons={cardTopButtons}\n cardTopContent={cardTopContent}\n sustainabilityScorecard={sustainabilityScorecard}\n renderedIconList={renderedIconList}\n cardTypeAdornment={cardTypeAdornment}\n titleAsFileHandleLinkConfiguration={titleAsFileHandleLinkConfiguration}\n titleAreaRightContent={titleAreaRightContent}\n descriptionSubTitle={descriptionSubTitle}\n />\n )\n }\n\n return (\n <div style={style} ref={ref} className={'SRC-portalCard'}>\n <div className={'SRC-portalCardMain'}>\n {icon}\n <div className=\"SRC-cardContent\">\n {cardTopButtons && (\n <Box\n sx={{\n position: 'absolute',\n right: '24px',\n display: 'flex',\n float: 'right',\n flexDirection: 'row',\n gap: '10px',\n }}\n >\n {cardTopButtons}\n </Box>\n )}\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: '10px',\n }}\n >\n <div className=\"SRC-type\">{type}</div>\n {cardTypeAdornment}\n </Stack>\n {renderedIconList}\n <Box className=\"SRC-cardTitleArea\">\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <div>\n <h3\n className=\"SRC-boldText SRC-blackText\"\n style={{ margin: 'none' }}\n >\n {!titleAsFileHandleLinkConfiguration && (\n <GenericCardTitle\n title={title}\n href={titleLinkConfiguration?.href}\n target={titleLinkConfiguration?.target}\n />\n )}\n {titleAsFileHandleLinkConfiguration && (\n <FileHandleLink\n fileHandleAssociation={\n titleAsFileHandleLinkConfiguration.fileHandleAssociation\n }\n showDownloadIcon={\n titleAsFileHandleLinkConfiguration.showDownloadIcon\n }\n displayValue={title}\n />\n )}\n </h3>\n </div>\n {subtitle && <div className=\"SRC-author\">{subtitle}</div>}\n <CollapsibleDescription\n description={description}\n descriptionSubTitle={descriptionSubTitle}\n descriptionConfig={descriptionConfig}\n />\n {ctaLinkConfig && (\n <Box\n sx={{ mt: '20px', display: 'flex', gap: 2, flexWrap: 'wrap' }}\n >\n {(Array.isArray(ctaLinkConfig)\n ? ctaLinkConfig\n : [ctaLinkConfig]\n ).map(\n (config, index) =>\n config.text &&\n config.href && (\n <SmartLink\n key={index}\n href={config.href}\n target={config.target}\n >\n {config.text}\n </SmartLink>\n ),\n )}\n </Box>\n )}\n </Box>\n {titleAreaRightContent && (\n <div className=\"SRC-cardTitleAreaDetails\">\n {titleAreaRightContent}\n </div>\n )}\n </Box>\n </div>\n </div>\n {showFooter && (\n <CardFooter\n isHeader={false}\n secondaryLabelLimit={secondaryLabelLimit}\n values={labels}\n className={useStylesForDisplayedImage ? undefined : 'hasIcon'}\n cardTopContent={cardTopContent}\n />\n )}\n </div>\n )\n})\n\nexport default GenericCard\n"],"mappings":";;;;;;;;;;;AA+FA,IAAM,IAAsC,EAAE,EAKjC,IAAc,EAAW,SACpC,GACA,GACA;CACA,IAAM,EACJ,SACA,SACA,UACA,2BACA,uCACA,aACA,gBACA,yBAAsB,IACtB,sBACA,mBACA,mBACA,cAAW,IACX,sBACA,gCAA6B,IAC7B,YAAS,GACT,wBACA,kBACA,qBACA,4BACA,sBACA,0BACA,uBACE,GAEE,IAAa,EAAO,SAAS;AAwCnC,QA9BI,IAEA,kBAAC,GAAD;EACO;EACc;EACA;EACF;EACV;EACP,UAAU;EACG;EACP;EACA;EACN,QAAQ;EACR,MAAM,GAAwB;EAC9B,QAAQ,GAAwB;EACjB;EACf,kBAAkB;EACG;EACL;EACA;EACS;EACP;EACC;EACiB;EACb;EACF;EACrB,CAAA,GAKJ,kBAAC,OAAD;EAAY;GArCZ,WAAW,IAAW,QAAQ,KAAA;GAC9B,cAAc,IAAW,QAAQ,KAAA;GACjC,eACE,KAAc,IAA6B,KAAA,IAAY;GAkC7C;EAAY;EAAK,WAAW;YAAxC,CACE,kBAAC,OAAD;GAAK,WAAW;aAAhB,CACG,GACD,kBAAC,OAAD;IAAK,WAAU;cAAf;KACG,KACC,kBAAC,GAAD;MACE,IAAI;OACF,UAAU;OACV,OAAO;OACP,SAAS;OACT,OAAO;OACP,eAAe;OACf,KAAK;OACN;gBAEA;MACG,CAAA;KAER,kBAAC,GAAD;MACE,IAAI;OACF,eAAe;OACf,YAAY;OACZ,KAAK;OACN;gBALH,CAOE,kBAAC,OAAD;OAAK,WAAU;iBAAY;OAAW,CAAA,EACrC,EACK;;KACP;KACD,kBAAC,GAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD;OAAK,IAAI;QAAE,MAAM;QAAG,UAAU;QAAG;iBAAjC;QACE,kBAAC,OAAD,EAAA,UACE,kBAAC,MAAD;SACE,WAAU;SACV,OAAO,EAAE,QAAQ,QAAQ;mBAF3B,CAIG,CAAC,KACA,kBAAC,GAAD;UACS;UACP,MAAM,GAAwB;UAC9B,QAAQ,GAAwB;UAChC,CAAA,EAEH,KACC,kBAAC,GAAD;UACE,uBACE,EAAmC;UAErC,kBACE,EAAmC;UAErC,cAAc;UACd,CAAA,CAED;YACD,CAAA;QACL,KAAY,kBAAC,OAAD;SAAK,WAAU;mBAAc;SAAe,CAAA;QACzD,kBAAC,GAAD;SACe;SACQ;SACF;SACnB,CAAA;QACD,KACC,kBAAC,GAAD;SACE,IAAI;UAAE,IAAI;UAAQ,SAAS;UAAQ,KAAK;UAAG,UAAU;UAAQ;oBAE3D,MAAM,QAAQ,EAAc,GAC1B,IACA,CAAC,EAAc,EACjB,KACC,GAAQ,MACP,EAAO,QACP,EAAO,QACL,kBAAC,GAAD;UAEE,MAAM,EAAO;UACb,QAAQ,EAAO;oBAEd,EAAO;UACE,EALL,EAKK,CAEjB;SACG,CAAA;QAEJ;UACL,KACC,kBAAC,OAAD;OAAK,WAAU;iBACZ;OACG,CAAA,CAEJ;;KACF;MACF;MACL,KACC,kBAAC,GAAD;GACE,UAAU;GACW;GACrB,QAAQ;GACR,WAAW,IAA6B,KAAA,IAAY;GACpC;GAChB,CAAA,CAEA;;EAER"}
@@ -1 +1 @@
1
- {"version":3,"file":"Linkify.js","names":[],"sources":["../../../src/components/GenericCard/Linkify.tsx"],"sourcesContent":["import { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { Link } from '@mui/material'\nimport { TargetEnum } from '@/utils/html/TargetEnum'\nimport { bioregistryRules } from './BioregistryRules'\n\nexport type LinkifyProps = {\n text?: string\n className?: string\n}\n\nexport type LinkifyRule = {\n regex: RegExp\n onMatch: (value: string) => string\n}\n\n// PORTALS-3600: No longer match synapse IDs that are not preceded by a space or the start of the string\n// (?:(?<=\\s)|^): non-capturing group that matches either:\n// (?<=\\s) — a positive lookbehind for a whitespace character (ensures there's a space before), or\n// ^ — the start of the string\nconst synapseIdRule: LinkifyRule = {\n regex: /((?:(?<=\\s)|^)syn\\d+)/,\n onMatch: value => `${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Synapse:${value}`,\n}\n\nconst httpRule: LinkifyRule = {\n regex: /(http:\\/\\/[^ \",]+)/,\n onMatch: value => value,\n}\nconst httpsRule: LinkifyRule = {\n regex: /(https:\\/\\/[^ \",]+)/,\n onMatch: value => value,\n}\nconst ftpRule: LinkifyRule = {\n regex: /(ftp:\\/\\/[^ \",]+)/,\n onMatch: value => value,\n}\n\nconst pubMedRule: LinkifyRule = {\n regex: /(PMID:\\d+)/,\n onMatch: value => {\n const id = value.slice('PMID:'.length)\n return `https://pubmed.ncbi.nlm.nih.gov/${id}`\n },\n}\nconst mutationIdRule: LinkifyRule = {\n regex: /(MGI:\\d+)/,\n onMatch: value => `https://www.informatics.jax.org/allele/${value}`,\n}\nconst sciCrunchResolverRule: LinkifyRule = {\n regex:\n /(AB_\\d+)|(Addgene_\\d+)|(CVCL_[a-zA-Z0-9]+)|(MMRRC_\\d+-.{3})|(IMSR_JAX:\\d+)/,\n onMatch: value => `https://scicrunch.org/resolver/${value}`,\n}\nconst clinVarVCVRule: LinkifyRule = {\n regex: /(ClinVar:VCV\\d+)/,\n onMatch: value => {\n const id = value.slice('ClinVar:'.length)\n return `https://www.ncbi.nlm.nih.gov/clinvar/variation/${id}`\n },\n}\nconst clinVarRCVRule: LinkifyRule = {\n regex: /(ClinVar:RCV\\d+)/,\n onMatch: value => {\n const id = value.slice('ClinVar:'.length)\n return `https://www.ncbi.nlm.nih.gov/clinvar/${id}`\n },\n}\n\nconst arXivRule: LinkifyRule = {\n regex: /(arXiv:[a-zA-Z0-9.]+)/,\n onMatch: value => {\n const id = value.slice('arXiv:'.length)\n return `https://arxiv.org/abs/${id}`\n },\n}\n\nconst rridRule: LinkifyRule = {\n regex: /(rrid:[a-zA-Z]+.+)/,\n onMatch: value => {\n return `https://bioregistry.io/${value}`\n },\n}\n\nconst rules: LinkifyRule[] = [\n httpRule,\n httpsRule,\n ftpRule,\n synapseIdRule,\n rridRule,\n pubMedRule,\n sciCrunchResolverRule,\n mutationIdRule,\n clinVarVCVRule,\n clinVarRCVRule,\n arXivRule,\n ...bioregistryRules,\n]\nconst allRegexes = rules.map(r => r.regex.source).join('|')\nconst splitter = new RegExp(allRegexes, 'g')\n\nfunction Linkify({ text, className }: LinkifyProps) {\n if (text == null) {\n return <></>\n }\n // Split the string using the joined regular expressions so we can add links to identifiers within free text\n const parts = text.split(splitter)\n return (\n <>\n {parts.map((part, index) => {\n const match = rules.find(r => r.regex.test(part))\n if (match) {\n return (\n <Link\n href={match.onMatch(part)}\n key={index}\n target={TargetEnum.NEW_WINDOW}\n rel=\"noopener noreferrer\"\n className={className}\n >\n {part}\n </Link>\n )\n }\n // else\n return part\n })}\n </>\n )\n}\n\nexport default Linkify\n"],"mappings":";;;;;;AAmFA,IAAM,IAAuB;CA3DC;EAC5B,OAAO;EACP,UAAS,MAAS;EACnB;CAC8B;EAC7B,OAAO;EACP,UAAS,MAAS;EACnB;CAC4B;EAC3B,OAAO;EACP,UAAS,MAAS;EACnB;CAhBkC;EACjC,OAAO;EACP,UAAS,MAAS,GAAG,EAA2B,OAAO,UAAU;EAClE;CAsD6B;EAC5B,OAAO;EACP,UAAS,MACA,0BAA0B;EAEpC;CA5C+B;EAC9B,OAAO;EACP,UAAS,MAEA,mCADI,EAAM,MAAM,EAAe;EAGzC;CAK0C;EACzC,OACE;EACF,UAAS,MAAS,kCAAkC;EACrD;CARmC;EAClC,OAAO;EACP,UAAS,MAAS,0CAA0C;EAC7D;CAMmC;EAClC,OAAO;EACP,UAAS,MAEA,kDADI,EAAM,MAAM,EAAkB;EAG5C;CACmC;EAClC,OAAO;EACP,UAAS,MAEA,wCADI,EAAM,MAAM,EAAkB;EAG5C;CAE8B;EAC7B,OAAO;EACP,UAAS,MAEA,yBADI,EAAM,MAAM,EAAgB;EAG1C;CAqBC,GAAG;CACJ,EACK,IAAa,EAAM,KAAI,MAAK,EAAE,MAAM,OAAO,CAAC,KAAK,IAAI,EACrD,IAAW,IAAI,OAAO,GAAY,IAAI;AAE5C,SAAS,EAAQ,EAAE,SAAM,gBAA2B;AAMlD,QALI,KAAQ,OACH,kBAAA,GAAA,EAAK,CAAA,GAKZ,kBAAA,GAAA,EAAA,UAFY,EAAK,MAAM,EAAS,CAGvB,KAAK,GAAM,MAAU;EAC1B,IAAM,IAAQ,EAAM,MAAK,MAAK,EAAE,MAAM,KAAK,EAAK,CAAC;AAejD,SAdI,IAEA,kBAAC,GAAD;GACE,MAAM,EAAM,QAAQ,EAAK;GAEzB,QAAQ,EAAW;GACnB,KAAI;GACO;aAEV;GACI,EANA,EAMA,GAIJ;GACP,EACD,CAAA"}
1
+ {"version":3,"file":"Linkify.js","names":[],"sources":["../../../src/components/GenericCard/Linkify.tsx"],"sourcesContent":["import { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { Link } from '@mui/material'\nimport { TargetEnum } from '@/utils/html/TargetEnum'\nimport { bioregistryRules } from './BioregistryRules'\n\nexport type LinkifyProps = {\n text?: string\n className?: string\n}\n\nexport type LinkifyRule = {\n regex: RegExp\n onMatch: (value: string) => string\n}\n\n// PORTALS-3600: No longer match synapse IDs that are not preceded by a space or the start of the string\n// (?:(?<=\\s)|^): non-capturing group that matches either:\n// (?<=\\s) — a positive lookbehind for a whitespace character (ensures there's a space before), or\n// ^ — the start of the string\nconst synapseIdRule: LinkifyRule = {\n regex: /((?:(?<=\\s)|^)syn\\d+)/,\n onMatch: value => `${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Synapse:${value}`,\n}\n\nconst httpRule: LinkifyRule = {\n regex: /(http:\\/\\/[^ \",]+)/,\n onMatch: value => value,\n}\nconst httpsRule: LinkifyRule = {\n regex: /(https:\\/\\/[^ \",]+)/,\n onMatch: value => value,\n}\nconst ftpRule: LinkifyRule = {\n regex: /(ftp:\\/\\/[^ \",]+)/,\n onMatch: value => value,\n}\n\nconst pubMedRule: LinkifyRule = {\n regex: /(PMID:\\d+)/,\n onMatch: value => {\n const id = value.slice('PMID:'.length)\n return `https://pubmed.ncbi.nlm.nih.gov/${id}`\n },\n}\nconst mutationIdRule: LinkifyRule = {\n regex: /(MGI:\\d+)/,\n onMatch: value => `https://www.informatics.jax.org/allele/${value}`,\n}\nconst sciCrunchResolverRule: LinkifyRule = {\n regex:\n /(AB_\\d+)|(Addgene_\\d+)|(CVCL_[a-zA-Z0-9]+)|(MMRRC_\\d+-.{3})|(IMSR_JAX:\\d+)/,\n onMatch: value => `https://scicrunch.org/resolver/${value}`,\n}\nconst clinVarVCVRule: LinkifyRule = {\n regex: /(ClinVar:VCV\\d+)/,\n onMatch: value => {\n const id = value.slice('ClinVar:'.length)\n return `https://www.ncbi.nlm.nih.gov/clinvar/variation/${id}`\n },\n}\nconst clinVarRCVRule: LinkifyRule = {\n regex: /(ClinVar:RCV\\d+)/,\n onMatch: value => {\n const id = value.slice('ClinVar:'.length)\n return `https://www.ncbi.nlm.nih.gov/clinvar/${id}`\n },\n}\n\nconst arXivRule: LinkifyRule = {\n regex: /(arXiv:[a-zA-Z0-9.]+)/,\n onMatch: value => {\n const id = value.slice('arXiv:'.length)\n return `https://arxiv.org/abs/${id}`\n },\n}\n\nconst rridRule: LinkifyRule = {\n regex: /(rrid:[a-zA-Z]+.+)/,\n onMatch: value => {\n return `https://bioregistry.io/${value}`\n },\n}\n\nconst rules: LinkifyRule[] = [\n httpRule,\n httpsRule,\n ftpRule,\n synapseIdRule,\n rridRule,\n pubMedRule,\n sciCrunchResolverRule,\n mutationIdRule,\n clinVarVCVRule,\n clinVarRCVRule,\n arXivRule,\n ...bioregistryRules,\n]\nconst allRegexes = rules.map(r => r.regex.source).join('|')\nconst splitter = new RegExp(allRegexes, 'g')\n\nfunction Linkify({ text, className }: LinkifyProps) {\n if (text == null) {\n return <></>\n }\n // Split the string using the joined regular expressions so we can add links to identifiers within free text\n const parts = text.split(splitter)\n return (\n <>\n {parts.map((part, index) => {\n const match = rules.find(r => r.regex.test(part))\n if (match) {\n return (\n <Link\n href={match.onMatch(part)}\n key={index}\n target={TargetEnum.NEW_WINDOW}\n rel=\"noopener noreferrer\"\n className={className}\n >\n {part}\n </Link>\n )\n }\n // else\n return part\n })}\n </>\n )\n}\n\nexport default Linkify\n"],"mappings":";;;;;;AAmFA,IAAM,IAAuB;CAC3B;EA3DA,OAAO;EACP,UAAS,MAAS;EA0DlB;CACA;EAxDA,OAAO;EACP,UAAS,MAAS;EAuDlB;CACA;EArDA,OAAO;EACP,UAAS,MAAS;EAoDlB;CACA;EAnEA,OAAO;EACP,UAAS,MAAS,GAAG,EAA2B,OAAO,UAAU;EAkEjE;CACA;EAXA,OAAO;EACP,UAAS,MACA,0BAA0B;EASnC;CACA;EAnDA,OAAO;EACP,UAAS,MAEA,mCADI,EAAM,MAAM,EACmB;EAgD5C;CACA;EAzCA,OACE;EACF,UAAS,MAAS,kCAAkC;EAuCpD;CACA;EA9CA,OAAO;EACP,UAAS,MAAS,0CAA0C;EA6C5D;CACA;EAtCA,OAAO;EACP,UAAS,MAEA,kDADI,EAAM,MAAM,EACkC;EAmC3D;CACA;EAhCA,OAAO;EACP,UAAS,MAEA,wCADI,EAAM,MAAM,EACwB;EA6BjD;CACA;EAzBA,OAAO;EACP,UAAS,MAEA,yBADI,EAAM,MAAM,EACS;EAsBlC;CACA,GAAG;CACJ,EACK,IAAa,EAAM,KAAI,MAAK,EAAE,MAAM,OAAO,CAAC,KAAK,IAAI,EACrD,IAAW,IAAI,OAAO,GAAY,IAAI;AAE5C,SAAS,EAAQ,EAAE,SAAM,gBAA2B;AAMlD,QALI,KAAQ,OACH,kBAAA,GAAA,EAAK,CAAA,GAKZ,kBAAA,GAAA,EAAA,UAFY,EAAK,MAAM,EAGpB,CAAM,KAAK,GAAM,MAAU;EAC1B,IAAM,IAAQ,EAAM,MAAK,MAAK,EAAE,MAAM,KAAK,EAAK,CAAC;AAejD,SAdI,IAEA,kBAAC,GAAD;GACE,MAAM,EAAM,QAAQ,EAAK;GAEzB,QAAQ,EAAW;GACnB,KAAI;GACO;aAEV;GACI,EANA,EAMA,GAIJ;GACP,EACD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseCardLabel.js","names":[],"sources":["../../../src/components/GenericCard/SynapseCardLabel.tsx"],"sourcesContent":["import { CardLink } from '@/components/CardContainer/CardLink'\nimport { getValueOrMultiValue } from '@/components/GenericCard/CardUtils'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { getColumnIndex } from '@/utils/functions/index'\nimport { TargetEnum } from '@/utils/html/TargetEnum'\nimport { Tooltip } from '@mui/material'\nimport {\n ColumnModel,\n ColumnTypeEnum,\n Row,\n SelectColumn,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { isEmpty } from 'lodash-es'\nimport { CSSProperties, Fragment, ReactNode } from 'react'\nimport {\n ColumnIconConfigs,\n ColumnSpecifiedLink,\n MarkdownLink,\n} from '../CardContainerLogic'\nimport {\n EntityImage,\n MapValueToReactComponentConfig,\n} from '../CardContainerLogic/CardContainerLogic'\nimport { EntityLink } from '../EntityLink'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\nimport { SmartLink } from '../SmartLink/SmartLink'\nimport { UserBadge } from '../UserCard/UserBadge'\nimport { EntityColumnImage } from '../widgets/EntityColumnImage'\nimport { LabelMaybeWithIcon } from './LabelMaybeWithIcon'\nimport Linkify from './Linkify'\n\ntype SynapseCardLabelProps = {\n value: string\n columnName: string\n labelLink:\n | CardLink\n | MarkdownLink\n | ColumnSpecifiedLink\n | EntityImage\n | MapValueToReactComponentConfig\n | undefined\n selectColumns: SelectColumn[] | undefined\n columnModels: ColumnModel[] | undefined\n isHeader: boolean\n className?: string\n rowData: Row['values']\n rowId?: string\n columnIconOptions?: ColumnIconConfigs\n}\nexport function SynapseCardLabel(props: SynapseCardLabelProps) {\n const {\n value,\n columnName,\n labelLink,\n selectColumns,\n columnModels,\n isHeader,\n className,\n rowData,\n rowId,\n columnIconOptions,\n } = props\n\n if (!value) {\n return <p>{value}</p>\n }\n const { strList, str, selectColumn } = getValueOrMultiValue({\n columnName,\n value,\n selectColumns,\n columnModels,\n })\n\n const columnModelType = selectColumn?.columnType\n const iconConfig = columnIconOptions?.columns?.[columnName]\n // \\u00a0 is a nbsp;\n const separator = ',\\u00a0\\u00a0'\n\n if (!str) {\n // the array came back empty\n return <p>{str}</p>\n }\n\n let newClassName = className\n const style: CSSProperties = {}\n if (isHeader) {\n newClassName = className?.concat(' ', 'SRC-lightLink')\n }\n // PORTALS-1913: special rendering for user ID lists\n if (columnModelType === ColumnTypeEnum.USERID_LIST && strList) {\n return (\n <p>\n {strList.map((val: string, index: number) => {\n return (\n <Fragment key={val}>\n <UserBadge userId={val} className={newClassName} />\n {index < strList.length - 1 && separator}\n </Fragment>\n )\n })}\n </p>\n )\n }\n if (columnModelType === ColumnTypeEnum.USERID && str) {\n return <UserBadge userId={str} className={newClassName} />\n }\n\n if (columnModelType === ColumnTypeEnum.ENTITYID_LIST && strList) {\n return (\n <p>\n {strList.map((entityId: string, index: number) => {\n return (\n <Fragment key={entityId}>\n <EntityLink entity={entityId} className={newClassName} />\n {index < strList.length - 1 && separator}\n </Fragment>\n )\n })}\n </p>\n )\n }\n\n if (columnModelType === ColumnTypeEnum.ENTITYID && str && !labelLink) {\n return <EntityLink entity={str} className={newClassName} />\n }\n\n // NFINT-906\n if (columnModelType === ColumnTypeEnum.DATE && str) {\n return <p>{formatDate(dayjs(Number(str)))}</p>\n }\n\n if (!labelLink) {\n if (strList) {\n return (\n <>\n {strList.map((el, index) => (\n <Fragment key={el}>\n <LabelMaybeWithIcon value={el} iconConfig={iconConfig}>\n <Linkify text={el} className={newClassName} />\n </LabelMaybeWithIcon>\n {index < strList.length - 1 && separator}\n </Fragment>\n ))}\n </>\n )\n }\n return (\n <LabelMaybeWithIcon value={str} iconConfig={iconConfig}>\n <Linkify text={str} className={newClassName} />\n </LabelMaybeWithIcon>\n )\n }\n\n if ('resolveEntityName' in labelLink && labelLink.resolveEntityName && str) {\n const { baseURL, URLColumnName } = labelLink\n const href = `/${baseURL}?${URLColumnName}=${str}`\n return <EntityLink entity={str} link={href} showIcon={false} />\n }\n\n let labelContent: ReactNode\n\n if (\n 'isMapValueToReactNodeConfig' in labelLink &&\n labelLink.isMapValueToReactNodeConfig\n ) {\n const { Component } = labelLink\n labelContent = (\n <Component value={strList || str} selectColumn={selectColumn!} />\n )\n } else if ('isMarkdown' in labelLink && labelLink.isMarkdown) {\n if (strList) {\n labelContent = (\n <p>\n {strList.map((el, index) => {\n return (\n <Fragment key={el}>\n <MarkdownSynapse key={el} renderInline={true} markdown={el} />\n {index < strList.length - 1 && separator}\n </Fragment>\n )\n })}\n </p>\n )\n } else {\n labelContent = <MarkdownSynapse renderInline={true} markdown={value} />\n }\n } else if ('isEntityImage' in labelLink && labelLink.isEntityImage) {\n if (strList) {\n labelContent = (\n <p>\n {strList.map((el, index) => {\n return (\n <Fragment key={el}>\n <EntityColumnImage entityId={el} />\n {index < strList.length - 1 && separator}\n </Fragment>\n )\n })}\n </p>\n )\n } else {\n labelContent = <EntityColumnImage entityId={value} />\n }\n } else {\n const split = strList ? strList : str.split(',')\n let linkTarget: TargetEnum | undefined = undefined\n if ('target' in labelLink) {\n linkTarget = labelLink.target!\n }\n if ('linkColumnName' in labelLink) {\n const linkIndex = getColumnIndex(\n labelLink.linkColumnName,\n selectColumns,\n columnModels,\n )\n if (linkIndex == null) {\n console.warn(\n `Could not determine column index of ${labelLink.linkColumnName}`,\n )\n labelContent = <>{value}</>\n } else {\n const href = rowData[linkIndex]\n\n if (isEmpty(href)) {\n labelContent = <>{value}</>\n } else {\n labelContent = (\n <p>\n {split.map((el, index) => {\n return (\n <Fragment key={el}>\n <SmartLink\n href={href ?? ''}\n target={linkTarget ?? TargetEnum.NEW_WINDOW}\n key={el}\n className={newClassName}\n style={style}\n >\n {el}\n </SmartLink>\n {index < split.length - 1 && (\n <span style={{ marginRight: 4 }}>, </span>\n )}\n </Fragment>\n )\n })}\n </p>\n )\n }\n }\n } else {\n labelContent = (\n <p>\n {split.map((el, index) => {\n const cardLink = labelLink as CardLink\n const elOrRowId = cardLink.overrideValueWithRowID ? rowId : el\n let href = ''\n if ('baseURL' in cardLink) {\n const {\n baseURL,\n URLColumnName,\n wrapValueWithParens,\n urlParamStyle = 'query-param',\n } = cardLink\n const value = wrapValueWithParens ? `(${elOrRowId})` : elOrRowId\n if (urlParamStyle === 'path-segment') {\n href = `/${baseURL}/${encodeURIComponent(String(value))}`\n } else {\n href = `/${baseURL}?${URLColumnName}=${value}`\n }\n } else if ('overrideLinkURLColumnName' in cardLink) {\n const overrideHrefIndex = getColumnIndex(\n cardLink.overrideLinkURLColumnName,\n selectColumns,\n columnModels,\n )\n if (overrideHrefIndex) {\n const overrideHrefData = rowData[overrideHrefIndex]\n if (overrideHrefData) {\n if (cardLink.overrideLinkURLColumnTransform) {\n href =\n cardLink.overrideLinkURLColumnTransform(overrideHrefData)\n } else {\n href = overrideHrefData\n }\n }\n }\n }\n\n return (\n <Fragment key={el}>\n <SmartLink\n href={href}\n key={el}\n className={newClassName}\n style={style}\n target={linkTarget ?? TargetEnum.CURRENT_WINDOW}\n >\n {el}\n </SmartLink>\n {index < split.length - 1 && (\n <span style={{ marginRight: 4 }}>, </span>\n )}\n </Fragment>\n )\n })}\n </p>\n )\n }\n }\n\n if ('tooltipText' in labelLink && labelLink.tooltipText) {\n // wrap in a tooltip\n return (\n <Tooltip title={labelLink.tooltipText} enterNextDelay={300}>\n <span>{labelContent}</span>\n </Tooltip>\n )\n } else {\n return labelContent\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SynapseCardLabel.js","names":[],"sources":["../../../src/components/GenericCard/SynapseCardLabel.tsx"],"sourcesContent":["import { CardLink } from '@/components/CardContainer/CardLink'\nimport { getValueOrMultiValue } from '@/components/GenericCard/CardUtils'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { getColumnIndex } from '@/utils/functions/index'\nimport { TargetEnum } from '@/utils/html/TargetEnum'\nimport { Tooltip } from '@mui/material'\nimport {\n ColumnModel,\n ColumnTypeEnum,\n Row,\n SelectColumn,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { isEmpty } from 'lodash-es'\nimport { CSSProperties, Fragment, ReactNode } from 'react'\nimport {\n ColumnIconConfigs,\n ColumnSpecifiedLink,\n MarkdownLink,\n} from '../CardContainerLogic'\nimport {\n EntityImage,\n MapValueToReactComponentConfig,\n} from '../CardContainerLogic/CardContainerLogic'\nimport { EntityLink } from '../EntityLink'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\nimport { SmartLink } from '../SmartLink/SmartLink'\nimport { UserBadge } from '../UserCard/UserBadge'\nimport { EntityColumnImage } from '../widgets/EntityColumnImage'\nimport { LabelMaybeWithIcon } from './LabelMaybeWithIcon'\nimport Linkify from './Linkify'\n\ntype SynapseCardLabelProps = {\n value: string\n columnName: string\n labelLink:\n | CardLink\n | MarkdownLink\n | ColumnSpecifiedLink\n | EntityImage\n | MapValueToReactComponentConfig\n | undefined\n selectColumns: SelectColumn[] | undefined\n columnModels: ColumnModel[] | undefined\n isHeader: boolean\n className?: string\n rowData: Row['values']\n rowId?: string\n columnIconOptions?: ColumnIconConfigs\n}\nexport function SynapseCardLabel(props: SynapseCardLabelProps) {\n const {\n value,\n columnName,\n labelLink,\n selectColumns,\n columnModels,\n isHeader,\n className,\n rowData,\n rowId,\n columnIconOptions,\n } = props\n\n if (!value) {\n return <p>{value}</p>\n }\n const { strList, str, selectColumn } = getValueOrMultiValue({\n columnName,\n value,\n selectColumns,\n columnModels,\n })\n\n const columnModelType = selectColumn?.columnType\n const iconConfig = columnIconOptions?.columns?.[columnName]\n // \\u00a0 is a nbsp;\n const separator = ',\\u00a0\\u00a0'\n\n if (!str) {\n // the array came back empty\n return <p>{str}</p>\n }\n\n let newClassName = className\n const style: CSSProperties = {}\n if (isHeader) {\n newClassName = className?.concat(' ', 'SRC-lightLink')\n }\n // PORTALS-1913: special rendering for user ID lists\n if (columnModelType === ColumnTypeEnum.USERID_LIST && strList) {\n return (\n <p>\n {strList.map((val: string, index: number) => {\n return (\n <Fragment key={val}>\n <UserBadge userId={val} className={newClassName} />\n {index < strList.length - 1 && separator}\n </Fragment>\n )\n })}\n </p>\n )\n }\n if (columnModelType === ColumnTypeEnum.USERID && str) {\n return <UserBadge userId={str} className={newClassName} />\n }\n\n if (columnModelType === ColumnTypeEnum.ENTITYID_LIST && strList) {\n return (\n <p>\n {strList.map((entityId: string, index: number) => {\n return (\n <Fragment key={entityId}>\n <EntityLink entity={entityId} className={newClassName} />\n {index < strList.length - 1 && separator}\n </Fragment>\n )\n })}\n </p>\n )\n }\n\n if (columnModelType === ColumnTypeEnum.ENTITYID && str && !labelLink) {\n return <EntityLink entity={str} className={newClassName} />\n }\n\n // NFINT-906\n if (columnModelType === ColumnTypeEnum.DATE && str) {\n return <p>{formatDate(dayjs(Number(str)))}</p>\n }\n\n if (!labelLink) {\n if (strList) {\n return (\n <>\n {strList.map((el, index) => (\n <Fragment key={el}>\n <LabelMaybeWithIcon value={el} iconConfig={iconConfig}>\n <Linkify text={el} className={newClassName} />\n </LabelMaybeWithIcon>\n {index < strList.length - 1 && separator}\n </Fragment>\n ))}\n </>\n )\n }\n return (\n <LabelMaybeWithIcon value={str} iconConfig={iconConfig}>\n <Linkify text={str} className={newClassName} />\n </LabelMaybeWithIcon>\n )\n }\n\n if ('resolveEntityName' in labelLink && labelLink.resolveEntityName && str) {\n const { baseURL, URLColumnName } = labelLink\n const href = `/${baseURL}?${URLColumnName}=${str}`\n return <EntityLink entity={str} link={href} showIcon={false} />\n }\n\n let labelContent: ReactNode\n\n if (\n 'isMapValueToReactNodeConfig' in labelLink &&\n labelLink.isMapValueToReactNodeConfig\n ) {\n const { Component } = labelLink\n labelContent = (\n <Component value={strList || str} selectColumn={selectColumn!} />\n )\n } else if ('isMarkdown' in labelLink && labelLink.isMarkdown) {\n if (strList) {\n labelContent = (\n <p>\n {strList.map((el, index) => {\n return (\n <Fragment key={el}>\n <MarkdownSynapse key={el} renderInline={true} markdown={el} />\n {index < strList.length - 1 && separator}\n </Fragment>\n )\n })}\n </p>\n )\n } else {\n labelContent = <MarkdownSynapse renderInline={true} markdown={value} />\n }\n } else if ('isEntityImage' in labelLink && labelLink.isEntityImage) {\n if (strList) {\n labelContent = (\n <p>\n {strList.map((el, index) => {\n return (\n <Fragment key={el}>\n <EntityColumnImage entityId={el} />\n {index < strList.length - 1 && separator}\n </Fragment>\n )\n })}\n </p>\n )\n } else {\n labelContent = <EntityColumnImage entityId={value} />\n }\n } else {\n const split = strList ? strList : str.split(',')\n let linkTarget: TargetEnum | undefined = undefined\n if ('target' in labelLink) {\n linkTarget = labelLink.target!\n }\n if ('linkColumnName' in labelLink) {\n const linkIndex = getColumnIndex(\n labelLink.linkColumnName,\n selectColumns,\n columnModels,\n )\n if (linkIndex == null) {\n console.warn(\n `Could not determine column index of ${labelLink.linkColumnName}`,\n )\n labelContent = <>{value}</>\n } else {\n const href = rowData[linkIndex]\n\n if (isEmpty(href)) {\n labelContent = <>{value}</>\n } else {\n labelContent = (\n <p>\n {split.map((el, index) => {\n return (\n <Fragment key={el}>\n <SmartLink\n href={href ?? ''}\n target={linkTarget ?? TargetEnum.NEW_WINDOW}\n key={el}\n className={newClassName}\n style={style}\n >\n {el}\n </SmartLink>\n {index < split.length - 1 && (\n <span style={{ marginRight: 4 }}>, </span>\n )}\n </Fragment>\n )\n })}\n </p>\n )\n }\n }\n } else {\n labelContent = (\n <p>\n {split.map((el, index) => {\n const cardLink = labelLink as CardLink\n const elOrRowId = cardLink.overrideValueWithRowID ? rowId : el\n let href = ''\n if ('baseURL' in cardLink) {\n const {\n baseURL,\n URLColumnName,\n wrapValueWithParens,\n urlParamStyle = 'query-param',\n } = cardLink\n const value = wrapValueWithParens ? `(${elOrRowId})` : elOrRowId\n if (urlParamStyle === 'path-segment') {\n href = `/${baseURL}/${encodeURIComponent(String(value))}`\n } else {\n href = `/${baseURL}?${URLColumnName}=${value}`\n }\n } else if ('overrideLinkURLColumnName' in cardLink) {\n const overrideHrefIndex = getColumnIndex(\n cardLink.overrideLinkURLColumnName,\n selectColumns,\n columnModels,\n )\n if (overrideHrefIndex) {\n const overrideHrefData = rowData[overrideHrefIndex]\n if (overrideHrefData) {\n if (cardLink.overrideLinkURLColumnTransform) {\n href =\n cardLink.overrideLinkURLColumnTransform(overrideHrefData)\n } else {\n href = overrideHrefData\n }\n }\n }\n }\n\n return (\n <Fragment key={el}>\n <SmartLink\n href={href}\n key={el}\n className={newClassName}\n style={style}\n target={linkTarget ?? TargetEnum.CURRENT_WINDOW}\n >\n {el}\n </SmartLink>\n {index < split.length - 1 && (\n <span style={{ marginRight: 4 }}>, </span>\n )}\n </Fragment>\n )\n })}\n </p>\n )\n }\n }\n\n if ('tooltipText' in labelLink && labelLink.tooltipText) {\n // wrap in a tooltip\n return (\n <Tooltip title={labelLink.tooltipText} enterNextDelay={300}>\n <span>{labelContent}</span>\n </Tooltip>\n )\n } else {\n return labelContent\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkDA,SAAgB,EAAiB,GAA8B;CAC7D,IAAM,EACJ,UACA,eACA,cACA,kBACA,iBACA,aACA,cACA,YACA,UACA,yBACE;AAEJ,KAAI,CAAC,EACH,QAAO,kBAAC,KAAD,EAAA,UAAI,GAAU,CAAA;CAEvB,IAAM,EAAE,YAAS,QAAK,oBAAiB,EAAqB;EAC1D;EACA;EACA;EACA;EACD,CAAC,EAEI,IAAkB,GAAc,YAChC,IAAa,GAAmB,UAAU,IAE1C,IAAY;AAElB,KAAI,CAAC,EAEH,QAAO,kBAAC,KAAD,EAAA,UAAI,GAAQ,CAAA;CAGrB,IAAI,IAAe,GACb,IAAuB,EAAE;AAK/B,KAJI,MACF,IAAe,GAAW,OAAO,KAAK,gBAAgB,GAGpD,MAAoB,EAAe,eAAe,EACpD,QACE,kBAAC,KAAD,EAAA,UACG,EAAQ,KAAK,GAAa,MAEvB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EAAW,QAAQ;EAAK,WAAW;EAAgB,CAAA,EAClD,IAAQ,EAAQ,SAAS,KAAK,EACtB,EAAA,EAHI,EAGJ,CAEb,EACA,CAAA;AAGR,KAAI,MAAoB,EAAe,UAAU,EAC/C,QAAO,kBAAC,GAAD;EAAW,QAAQ;EAAK,WAAW;EAAgB,CAAA;AAG5D,KAAI,MAAoB,EAAe,iBAAiB,EACtD,QACE,kBAAC,KAAD,EAAA,UACG,EAAQ,KAAK,GAAkB,MAE5B,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EAAY,QAAQ;EAAU,WAAW;EAAgB,CAAA,EACxD,IAAQ,EAAQ,SAAS,KAAK,EACtB,EAAA,EAHI,EAGJ,CAEb,EACA,CAAA;AAIR,KAAI,MAAoB,EAAe,YAAY,KAAO,CAAC,EACzD,QAAO,kBAAC,GAAD;EAAY,QAAQ;EAAK,WAAW;EAAgB,CAAA;AAI7D,KAAI,MAAoB,EAAe,QAAQ,EAC7C,QAAO,kBAAC,KAAD,EAAA,UAAI,EAAW,EAAM,OAAO,EAAI,CAAC,CAAC,EAAK,CAAA;AAGhD,KAAI,CAAC,EAeH,QAdI,IAEA,kBAAA,GAAA,EAAA,UACG,EAAQ,KAAK,GAAI,MAChB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EAAoB,OAAO;EAAgB;YACzC,kBAAC,GAAD;GAAS,MAAM;GAAI,WAAW;GAAgB,CAAA;EAC3B,CAAA,EACpB,IAAQ,EAAQ,SAAS,KAAK,EACtB,EAAA,EALI,EAKJ,CACX,EACD,CAAA,GAIL,kBAAC,GAAD;EAAoB,OAAO;EAAiB;YAC1C,kBAAC,GAAD;GAAS,MAAM;GAAK,WAAW;GAAgB,CAAA;EAC5B,CAAA;AAIzB,KAAI,uBAAuB,KAAa,EAAU,qBAAqB,GAAK;EAC1E,IAAM,EAAE,YAAS,qBAAkB;AAEnC,SAAO,kBAAC,GAAD;GAAY,QAAQ;GAAK,MAAM,IADrB,EAAQ,GAAG,EAAc,GAAG;GACD,UAAU;GAAS,CAAA;;CAGjE,IAAI;AAEJ,KACE,iCAAiC,KACjC,EAAU,6BACV;EACA,IAAM,EAAE,iBAAc;AACtB,MACE,kBAAC,GAAD;GAAW,OAAO,KAAW;GAAmB;GAAiB,CAAA;YAE1D,gBAAgB,KAAa,EAAU,WAChD,CAcE,IAdE,IAEA,kBAAC,KAAD,EAAA,UACG,EAAQ,KAAK,GAAI,MAEd,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EAA0B,cAAc;EAAM,UAAU;EAAM,EAAxC,EAAwC,EAC7D,IAAQ,EAAQ,SAAS,KAAK,EACtB,EAAA,EAHI,EAGJ,CAEb,EACA,CAAA,GAGS,kBAAC,GAAD;EAAiB,cAAc;EAAM,UAAU;EAAS,CAAA;UAEhE,mBAAmB,KAAa,EAAU,cACnD,CAcE,IAdE,IAEA,kBAAC,KAAD,EAAA,UACG,EAAQ,KAAK,GAAI,MAEd,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAmB,UAAU,GAAM,CAAA,EAClC,IAAQ,EAAQ,SAAS,KAAK,EACtB,EAAA,EAHI,EAGJ,CAEb,EACA,CAAA,GAGS,kBAAC,GAAD,EAAmB,UAAU,GAAS,CAAA;MAElD;EACL,IAAM,IAAQ,KAAoB,EAAI,MAAM,IAAI,EAC5C;AAIJ,MAHI,YAAY,MACd,IAAa,EAAU,SAErB,oBAAoB,GAAW;GACjC,IAAM,IAAY,EAChB,EAAU,gBACV,GACA,EACD;AACD,OAAI,KAAa,KAIf,CAHA,QAAQ,KACN,uCAAuC,EAAU,iBAClD,EACD,IAAe,kBAAA,GAAA,EAAA,UAAG,GAAS,CAAA;QACtB;IACL,IAAM,IAAO,EAAQ;AAErB,IAGE,IAHE,EAAQ,EAAK,GACA,kBAAA,GAAA,EAAA,UAAG,GAAS,CAAA,GAGzB,kBAAC,KAAD,EAAA,UACG,EAAM,KAAK,GAAI,MAEZ,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;KACE,MAAM,KAAQ;KACd,QAAQ,KAAc,EAAW;KAEjC,WAAW;KACJ;eAEN;KACS,EALL,EAKK,EACX,IAAQ,EAAM,SAAS,KACtB,kBAAC,QAAD;KAAM,OAAO,EAAE,aAAa,GAAG;eAAE;KAAS,CAAA,CAEnC,EAAA,EAbI,EAaJ,CAEb,EACA,CAAA;;QAKV,KACE,kBAAC,KAAD,EAAA,UACG,EAAM,KAAK,GAAI,MAAU;GACxB,IAAM,IAAW,GACX,IAAY,EAAS,yBAAyB,IAAQ,GACxD,IAAO;AACX,OAAI,aAAa,GAAU;IACzB,IAAM,EACJ,YACA,kBACA,wBACA,mBAAgB,kBACd,GACE,IAAQ,IAAsB,IAAI,EAAU,KAAK;AACvD,IAGE,IAHE,MAAkB,iBACb,IAAI,EAAQ,GAAG,mBAAmB,OAAO,EAAM,CAAC,KAEhD,IAAI,EAAQ,GAAG,EAAc,GAAG;cAEhC,+BAA+B,GAAU;IAClD,IAAM,IAAoB,EACxB,EAAS,2BACT,GACA,EACD;AACD,QAAI,GAAmB;KACrB,IAAM,IAAmB,EAAQ;AACjC,KAAI,MACF,AAIE,IAJE,EAAS,iCAET,EAAS,+BAA+B,EAAiB,GAEpD;;;AAMf,UACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;IACQ;IAEN,WAAW;IACJ;IACP,QAAQ,KAAc,EAAW;cAEhC;IACS,EANL,EAMK,EACX,IAAQ,EAAM,SAAS,KACtB,kBAAC,QAAD;IAAM,OAAO,EAAE,aAAa,GAAG;cAAE;IAAS,CAAA,CAEnC,EAAA,EAbI,EAaJ;IAEb,EACA,CAAA;;AAaR,QARE,iBAAiB,KAAa,EAAU,cAGxC,kBAAC,GAAD;EAAS,OAAO,EAAU;EAAa,gBAAgB;YACrD,kBAAC,QAAD,EAAA,UAAO,GAAoB,CAAA;EACnB,CAAA,GAGL"}