synapse-react-client 4.0.45 → 4.0.46

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 (319) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/aridhia-queries/AridhiaKeyFactory.d.ts +1 -0
  3. package/dist/aridhia-queries/AridhiaKeyFactory.d.ts.map +1 -1
  4. package/dist/aridhia-queries/AridhiaKeyFactory.js +3 -0
  5. package/dist/aridhia-queries/AridhiaKeyFactory.js.map +1 -1
  6. package/dist/aridhia-queries/aridhiaTokenExchange.js +6 -6
  7. package/dist/aridhia-queries/index.d.ts +1 -0
  8. package/dist/aridhia-queries/index.d.ts.map +1 -1
  9. package/dist/aridhia-queries/index.js +11 -10
  10. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts +19 -0
  11. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts.map +1 -0
  12. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js +14 -0
  13. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js.map +1 -0
  14. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.d.ts.map +1 -1
  15. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +6 -4
  16. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  17. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  18. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +1 -1
  19. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -1
  20. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +1 -1
  21. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  22. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js +1 -1
  23. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js.map +1 -1
  24. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
  25. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +11 -8
  26. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
  27. package/dist/components/AccessTokenPage/AccessTokenPage.js +1 -1
  28. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  29. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +1 -1
  30. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  31. package/dist/components/Aridhia/DarWizard/DarSectionForm.d.ts.map +1 -1
  32. package/dist/components/Aridhia/DarWizard/DarSectionForm.js +17 -13
  33. package/dist/components/Aridhia/DarWizard/DarSectionForm.js.map +1 -1
  34. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts +3 -3
  35. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts.map +1 -1
  36. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +33 -34
  37. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -1
  38. package/dist/components/Aridhia/fairFormToRjsf.js +1 -1
  39. package/dist/components/Aridhia/fairFormToRjsf.js.map +1 -1
  40. package/dist/components/Authentication/LastLoginInfo.js +1 -1
  41. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  42. package/dist/components/CertificationQuiz/CertificationQuiz.js +1 -1
  43. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  44. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +1 -1
  45. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  46. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js +1 -1
  47. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  48. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js +6 -6
  49. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  50. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.d.ts.map +1 -1
  51. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js +4 -4
  52. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  53. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +4 -4
  54. package/dist/components/CitationPopover/CitationPopoverContent.js +4 -4
  55. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  56. package/dist/components/ComponentCollapse.d.ts.map +1 -1
  57. package/dist/components/ComponentCollapse.js +2 -1
  58. package/dist/components/ComponentCollapse.js.map +1 -1
  59. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  60. package/dist/components/DataGrid/SynapseGrid.js +231 -219
  61. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  62. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -1
  63. package/dist/components/DataGrid/SyncGridWithSourceButton.js +5 -4
  64. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
  65. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  66. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +7 -5
  67. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  68. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js +4 -4
  69. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  70. package/dist/components/DataGrid/components/ReorderColumnsButton.js +4 -4
  71. package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -1
  72. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  73. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +12 -8
  74. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  75. package/dist/components/DataGrid/components/UploadCsvToGridButton.js +1 -1
  76. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  77. package/dist/components/DataGrid/hooks/useGridUndoRedo.js +5 -5
  78. package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
  79. package/dist/components/DataGrid/utils/applyModelChange.js +14 -14
  80. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  81. package/dist/components/DataGrid/utils/columnFactory.js +1 -1
  82. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  83. package/dist/components/DataGrid/utils/splitPatch.d.ts.map +1 -1
  84. package/dist/components/DataGrid/utils/splitPatch.js +22 -13
  85. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  86. package/dist/components/DownloadCart/DownloadCartPage.js +1 -1
  87. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  88. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.d.ts.map +1 -1
  89. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +2 -1
  90. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  91. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js.map +1 -1
  92. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.scss +1 -3
  93. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
  94. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +16 -10
  95. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  96. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
  97. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  98. package/dist/components/EntityFinder/EntityFinder.js +4 -4
  99. package/dist/components/EntityFinder/EntityIdTextField.js +1 -1
  100. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  101. package/dist/components/EntityFinder/tree/VirtualizedTree.d.ts.map +1 -1
  102. package/dist/components/EntityFinder/tree/VirtualizedTree.js +5 -4
  103. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  104. package/dist/components/EntityHeaderTable/EntityHeaderTable.js +1 -1
  105. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  106. package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
  107. package/dist/components/EntityTreeTable/components/EntityNameCell.js +2 -1
  108. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  109. package/dist/components/EntityUpload/FileUploadProgress.d.ts.map +1 -1
  110. package/dist/components/EntityUpload/FileUploadProgress.js +11 -7
  111. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  112. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.d.ts.map +1 -1
  113. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js +4 -3
  114. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  115. package/dist/components/ExperimentalMode/ExperimentalMode.js +1 -1
  116. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  117. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js +1 -1
  118. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  119. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -1
  120. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +2 -1
  121. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -1
  122. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -1
  123. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +2 -1
  124. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
  125. package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -1
  126. package/dist/components/FormTemplateEditor/FieldLibrary.js +2 -1
  127. package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -1
  128. package/dist/components/FormTemplateEditor/FieldLibraryRow.js +4 -4
  129. package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -1
  130. package/dist/components/FormTemplateEditor/FormStructurePanel.js +1 -1
  131. package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -1
  132. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +1 -1
  133. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -1
  134. package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -1
  135. package/dist/components/FormTemplateEditor/StepCard.js +15 -10
  136. package/dist/components/FormTemplateEditor/StepCard.js.map +1 -1
  137. package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -1
  138. package/dist/components/FormTemplateEditor/StepFieldRow.js +11 -6
  139. package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -1
  140. package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -1
  141. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +2 -1
  142. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -1
  143. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +45 -45
  144. package/dist/components/GenericCard/PortalDOI/PortalDOI.js +5 -5
  145. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  146. package/dist/components/GenericCard/TableRowGenericCard.js +1 -1
  147. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  148. package/dist/components/HelpPopover/HelpPopover.js +1 -1
  149. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  150. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  151. package/dist/components/IconSvg/IconSvg.js +154 -47
  152. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  153. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.d.ts.map +1 -1
  154. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js +19 -16
  155. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  156. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
  157. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +2 -1
  158. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  159. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts +9 -0
  160. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts.map +1 -0
  161. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js +21 -0
  162. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js.map +1 -0
  163. package/dist/components/Markdown/MarkdownCollapse.d.ts.map +1 -1
  164. package/dist/components/Markdown/MarkdownCollapse.js +3 -1
  165. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  166. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +1 -1
  167. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  168. package/dist/components/OAuthClientManagement/OAuthManagement.js +14 -13
  169. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  170. package/dist/components/PortalList/PortalCard.d.ts.map +1 -1
  171. package/dist/components/PortalList/PortalCard.js +6 -5
  172. package/dist/components/PortalList/PortalCard.js.map +1 -1
  173. package/dist/components/PortalList/PortalList.js +4 -4
  174. package/dist/components/PortalList/PortalList.js.map +1 -1
  175. package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js +6 -6
  176. package/dist/components/QueryBuilder/FilterConditionRow.js +4 -4
  177. package/dist/components/QueryCountButton/QueryCountButton.js +5 -5
  178. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  179. package/dist/components/ReleaseCard/ReleaseCardLarge.js +5 -5
  180. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  181. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +1 -1
  182. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  183. package/dist/components/ShareThisPage/ShareThisPage.js +4 -4
  184. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  185. package/dist/components/SustainabilityScorecard/DialLayout.js +1 -1
  186. package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
  187. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js +1 -1
  188. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
  189. package/dist/components/SynapseChat/SynapseChat.js +1 -1
  190. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  191. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  192. package/dist/components/SynapseChat/SynapseChatInteraction.js +2 -1
  193. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  194. package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js +1 -1
  195. package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js.map +1 -1
  196. package/dist/components/SynapseFooter/SynapseFooter.js +1 -1
  197. package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
  198. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js +1 -1
  199. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
  200. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.d.ts.map +1 -1
  201. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +2 -1
  202. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
  203. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js +4 -4
  204. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
  205. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js +1 -1
  206. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
  207. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
  208. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +4 -1
  209. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  210. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js +1 -1
  211. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  212. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js +1 -1
  213. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
  214. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.d.ts.map +1 -1
  215. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +12 -9
  216. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
  217. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
  218. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  219. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +140 -140
  220. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  221. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
  222. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  223. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
  224. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  225. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
  226. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  227. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +9 -9
  228. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  229. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.d.ts.map +1 -1
  230. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js +6 -4
  231. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  232. package/dist/components/TanStackTable/ColumnHeader.js +1 -1
  233. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  234. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js +1 -1
  235. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  236. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.d.ts.map +1 -1
  237. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js +4 -3
  238. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  239. package/dist/components/Webhook/WebhookDashboard.js +1 -1
  240. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  241. package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
  242. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  243. package/dist/components/dataaccess/AccessRequirementTable.js +1 -1
  244. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  245. package/dist/components/dataaccess/EDucTemplateTable.d.ts.map +1 -1
  246. package/dist/components/dataaccess/EDucTemplateTable.js +13 -11
  247. package/dist/components/dataaccess/EDucTemplateTable.js.map +1 -1
  248. package/dist/components/dataaccess/FormTemplateTable.js +6 -6
  249. package/dist/components/dataaccess/FormTemplateTable.js.map +1 -1
  250. package/dist/components/dataaccess/ReviewerDashboard.js +17 -17
  251. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  252. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +4 -4
  253. package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
  254. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  255. package/dist/components/download_list/DownloadDetails.d.ts.map +1 -1
  256. package/dist/components/download_list/DownloadDetails.js +12 -10
  257. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  258. package/dist/components/entity/metadata/AnnotationsTable.js +1 -1
  259. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  260. package/dist/components/entity/page/CreatedByModifiedBy.js +1 -1
  261. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  262. package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
  263. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  264. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
  265. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  266. package/dist/components/error/ErrorChip.d.ts.map +1 -1
  267. package/dist/components/error/ErrorChip.js +2 -1
  268. package/dist/components/error/ErrorChip.js.map +1 -1
  269. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +14 -14
  270. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +4 -4
  271. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
  272. package/dist/components/widgets/facet-nav/FacetNavPanel.js +1 -1
  273. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  274. package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
  275. package/dist/features/curator/dashboard/components/NextStepButton.js +7 -6
  276. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  277. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +8 -8
  278. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  279. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +4 -4
  280. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  281. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +4 -4
  282. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  283. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +1 -1
  284. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  285. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +4 -4
  286. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -1
  287. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +1 -1
  288. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -1
  289. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +1 -1
  290. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -1
  291. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js +10 -10
  292. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js.map +1 -1
  293. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js +1 -1
  294. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  295. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +8 -0
  296. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
  297. package/dist/mocks/msw/handlers/aridhiaHandlers.js +52 -41
  298. package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
  299. package/dist/mocks/msw/handlers/entityHandlers.d.ts.map +1 -1
  300. package/dist/mocks/msw/handlers/entityHandlers.js +70 -67
  301. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  302. package/dist/mocks/msw/handlers/gridHandlers.js +2 -2
  303. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  304. package/dist/mocks/msw/server.d.ts.map +1 -1
  305. package/dist/mocks/msw/server.js +4 -2
  306. package/dist/mocks/msw/server.js.map +1 -1
  307. package/dist/synapse-queries/user/useGetUserChallenges.d.ts.map +1 -1
  308. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  309. package/dist/theme/DefaultTheme.d.ts.map +1 -1
  310. package/dist/theme/DefaultTheme.js +4 -1
  311. package/dist/theme/DefaultTheme.js.map +1 -1
  312. package/dist/tsconfig.build.tsbuildinfo +1 -1
  313. package/dist/utils/APIConstants.d.ts.map +1 -1
  314. package/dist/utils/APIConstants.js.map +1 -1
  315. package/dist/utils/AppUtils/AppUtils.js +1 -1
  316. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  317. package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
  318. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  319. package/package.json +7 -6
@@ -1 +1 @@
1
- {"version":3,"file":"RJSFInputLabel.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchemaForm/templates/RJSFInputLabel.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,QAAQ,EACR,UAAU,EACV,gBAAgB,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,iBAAiB,EAAY,MAAM,OAAO,CAAA;AAEnD,KAAK,mBAAmB,CACtB,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,gBAAgB,GAAG,UAAU,EACvC,CAAC,SAAS,eAAe,GAAG,GAAG,IAC7B,iBAAiB,CAAC;IACpB;wBACoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,sCAAsC;IACtC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,4CAA4C;IAC5C,WAAW,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,4BAA4B;IAC5B,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAC5B,CAAC,CAAA;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,gBAAgB,GAAG,UAAU,EACvC,CAAC,SAAS,eAAe,GAAG,GAAG,EAC/B,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,2CAsDpC"}
1
+ {"version":3,"file":"RJSFInputLabel.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchemaForm/templates/RJSFInputLabel.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,eAAe,EACf,QAAQ,EACR,UAAU,EACV,gBAAgB,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,iBAAiB,EAAY,MAAM,OAAO,CAAA;AAEnD,KAAK,mBAAmB,CACtB,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,gBAAgB,GAAG,UAAU,EACvC,CAAC,SAAS,eAAe,GAAG,GAAG,IAC7B,iBAAiB,CAAC;IACpB;wBACoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,sCAAsC;IACtC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,4CAA4C;IAC5C,WAAW,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,4BAA4B;IAC5B,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAC5B,CAAC,CAAA;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,gBAAgB,GAAG,UAAU,EACvC,CAAC,SAAS,eAAe,GAAG,GAAG,EAC/B,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,2CAsDpC"}
@@ -2,7 +2,8 @@ import { StyledPopover as e } from "../../styled/StyledPopover.js";
2
2
  import { useState as t } from "react";
3
3
  import { Collapse as n, IconButton as r, Tooltip as i } from "@mui/material";
4
4
  import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
5
- import { HelpOutline as c, HelpTwoTone as l } from "@mui/icons-material";
5
+ import c from "@mui/icons-material/HelpOutline";
6
+ import l from "@mui/icons-material/HelpTwoTone";
6
7
  //#region src/components/JsonSchemaForm/templates/RJSFInputLabel.tsx
7
8
  function u(u) {
8
9
  let { hideLabel: d = !1, fieldLabel: f, description: p, registry: m, children: h } = u, g = m.formContext.descriptionVariant || "popover", [_, v] = t(!1);
@@ -1 +1 @@
1
- {"version":3,"file":"RJSFInputLabel.js","names":[],"sources":["../../../../src/components/JsonSchemaForm/templates/RJSFInputLabel.tsx"],"sourcesContent":["import { StyledPopover } from '@/components/styled/StyledPopover'\nimport { HelpOutline, HelpTwoTone } from '@mui/icons-material'\nimport { Collapse, IconButton, Tooltip } from '@mui/material'\nimport {\n FormContextType,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils'\nimport { PropsWithChildren, useState } from 'react'\n\ntype RJSFInputLabelProps<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> = PropsWithChildren<{\n /** If true, the label will not be shown\n * @default false */\n hideLabel?: boolean\n /** The rendered label of the field */\n fieldLabel: React.ReactNode\n /** The rendered description of the field */\n description: React.ReactNode\n /** The `registry` object */\n registry: Registry<T, S, F>\n}>\n\n/**\n * Component that handles rendering our custom input label and description fields for RJSF.\n */\nexport function RJSFInputLabelWrapper<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: RJSFInputLabelProps<T, S, F>) {\n const {\n hideLabel = false,\n fieldLabel,\n description,\n registry,\n children,\n } = props\n const descriptionVariant =\n registry.formContext.descriptionVariant || 'popover'\n\n const [showDetails, setShowDetails] = useState(false)\n\n const expandButton = (\n <Tooltip title={'More Info'}>\n <IconButton\n onClick={e => {\n e.preventDefault()\n setShowDetails(!showDetails)\n }}\n aria-expanded={showDetails}\n size={'small'}\n >\n <HelpOutline color={'primary'} sx={{ width: '16px', height: '16px' }} />\n </IconButton>\n </Tooltip>\n )\n\n const popoverButton = (\n <StyledPopover popoverContent={description} maxWidth=\"350px\">\n <HelpTwoTone className={`HelpButton`} />\n </StyledPopover>\n )\n\n return (\n <>\n {!hideLabel && (\n <div className=\"LabelContainer\">\n {fieldLabel}\n {description && descriptionVariant === 'popover' && popoverButton}\n {description && descriptionVariant === 'expand' && expandButton}\n </div>\n )}\n {!hideLabel && descriptionVariant === 'inline' && description && (\n <div className=\"field-description-inline\">{description}</div>\n )}\n {children}\n {!hideLabel && descriptionVariant === 'expand' && (\n <Collapse className=\"field-description\" in={showDetails}>\n {description}\n </Collapse>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;AA8BA,SAAgB,EAId,GAAqC;CACrC,IAAM,EACJ,eAAY,IACZ,eACA,gBACA,aACA,gBACE,GACE,IACJ,EAAS,YAAY,sBAAsB,WAEvC,CAAC,GAAa,KAAkB,EAAS,EAAK;CAuBpD,OACE,kBAAA,GAAA,EAAA,UAAA;EACG,CAAC,KACA,kBAAC,OAAD;GAAK,WAAU;aAAf;IACG;IACA,KAAe,MAAuB,aAV7C,kBAAC,GAAD;KAAe,gBAAgB;KAAa,UAAS;eACnD,kBAAC,GAAD,EAAa,WAAW,aAAe,CAAA;IAC1B,CAQ2C;IACnD,KAAe,MAAuB,YA1B7C,kBAAC,GAAD;KAAS,OAAO;eACd,kBAAC,GAAD;MACE,UAAS,MAAK;OAEZ,AADA,EAAE,eAAe,GACjB,EAAe,CAAC,CAAW;MAC7B;MACA,iBAAe;MACf,MAAM;gBAEN,kBAAC,GAAD;OAAa,OAAO;OAAW,IAAI;QAAE,OAAO;QAAQ,QAAQ;OAAO;MAAI,CAAA;KAC7D,CAAA;IACL,CAegD;GAChD;;EAEN,CAAC,KAAa,MAAuB,YAAY,KAChD,kBAAC,OAAD;GAAK,WAAU;aAA4B;EAAiB,CAAA;EAE7D;EACA,CAAC,KAAa,MAAuB,YACpC,kBAAC,GAAD;GAAU,WAAU;GAAoB,IAAI;aACzC;EACO,CAAA;CAEZ,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"RJSFInputLabel.js","names":[],"sources":["../../../../src/components/JsonSchemaForm/templates/RJSFInputLabel.tsx"],"sourcesContent":["import { StyledPopover } from '@/components/styled/StyledPopover'\nimport HelpOutline from '@mui/icons-material/HelpOutline'\nimport HelpTwoTone from '@mui/icons-material/HelpTwoTone'\nimport { Collapse, IconButton, Tooltip } from '@mui/material'\nimport {\n FormContextType,\n Registry,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils'\nimport { PropsWithChildren, useState } from 'react'\n\ntype RJSFInputLabelProps<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n> = PropsWithChildren<{\n /** If true, the label will not be shown\n * @default false */\n hideLabel?: boolean\n /** The rendered label of the field */\n fieldLabel: React.ReactNode\n /** The rendered description of the field */\n description: React.ReactNode\n /** The `registry` object */\n registry: Registry<T, S, F>\n}>\n\n/**\n * Component that handles rendering our custom input label and description fields for RJSF.\n */\nexport function RJSFInputLabelWrapper<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: RJSFInputLabelProps<T, S, F>) {\n const {\n hideLabel = false,\n fieldLabel,\n description,\n registry,\n children,\n } = props\n const descriptionVariant =\n registry.formContext.descriptionVariant || 'popover'\n\n const [showDetails, setShowDetails] = useState(false)\n\n const expandButton = (\n <Tooltip title={'More Info'}>\n <IconButton\n onClick={e => {\n e.preventDefault()\n setShowDetails(!showDetails)\n }}\n aria-expanded={showDetails}\n size={'small'}\n >\n <HelpOutline color={'primary'} sx={{ width: '16px', height: '16px' }} />\n </IconButton>\n </Tooltip>\n )\n\n const popoverButton = (\n <StyledPopover popoverContent={description} maxWidth=\"350px\">\n <HelpTwoTone className={`HelpButton`} />\n </StyledPopover>\n )\n\n return (\n <>\n {!hideLabel && (\n <div className=\"LabelContainer\">\n {fieldLabel}\n {description && descriptionVariant === 'popover' && popoverButton}\n {description && descriptionVariant === 'expand' && expandButton}\n </div>\n )}\n {!hideLabel && descriptionVariant === 'inline' && description && (\n <div className=\"field-description-inline\">{description}</div>\n )}\n {children}\n {!hideLabel && descriptionVariant === 'expand' && (\n <Collapse className=\"field-description\" in={showDetails}>\n {description}\n </Collapse>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;;AA+BA,SAAgB,EAId,GAAqC;CACrC,IAAM,EACJ,eAAY,IACZ,eACA,gBACA,aACA,gBACE,GACE,IACJ,EAAS,YAAY,sBAAsB,WAEvC,CAAC,GAAa,KAAkB,EAAS,EAAK;CAuBpD,OACE,kBAAA,GAAA,EAAA,UAAA;EACG,CAAC,KACA,kBAAC,OAAD;GAAK,WAAU;aAAf;IACG;IACA,KAAe,MAAuB,aAV7C,kBAAC,GAAD;KAAe,gBAAgB;KAAa,UAAS;eACnD,kBAAC,GAAD,EAAa,WAAW,aAAe,CAAA;IAC1B,CAQ2C;IACnD,KAAe,MAAuB,YA1B7C,kBAAC,GAAD;KAAS,OAAO;eACd,kBAAC,GAAD;MACE,UAAS,MAAK;OAEZ,AADA,EAAE,eAAe,GACjB,EAAe,CAAC,CAAW;MAC7B;MACA,iBAAe;MACf,MAAM;gBAEN,kBAAC,GAAD;OAAa,OAAO;OAAW,IAAI;QAAE,OAAO;QAAQ,QAAQ;OAAO;MAAI,CAAA;KAC7D,CAAA;IACL,CAegD;GAChD;;EAEN,CAAC,KAAa,MAAuB,YAAY,KAChD,kBAAC,OAAD;GAAK,WAAU;aAA4B;EAAiB,CAAA;EAE7D;EACA,CAAC,KAAa,MAAuB,YACpC,kBAAC,GAAD;GAAU,WAAU;GAAoB,IAAI;aACzC;EACO,CAAA;CAEZ,EAAA,CAAA;AAEN"}
@@ -0,0 +1,9 @@
1
+ import { Widget } from '@rjsf/utils';
2
+ export declare const PHONE_DEFAULT_COUNTRY = "US";
3
+ export declare const PHONE_PREFERRED_COUNTRIES: ["GB", "US"];
4
+ /**
5
+ * International phone number widget: a country dropdown (flag, name, calling code) with a
6
+ * numeric-only, country-formatted number input. The calling code is always part of the value.
7
+ */
8
+ export declare const PhoneWidget: Widget;
9
+ //# sourceMappingURL=PhoneWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhoneWidget.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchemaForm/widgets/PhoneWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,aAAa,CAAA;AAGjD,eAAO,MAAM,qBAAqB,OAAO,CAAA;AACzC,eAAO,MAAM,yBAAyB,EAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MA6BzB,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { MuiTelInput as t } from "mui-tel-input";
3
+ //#region src/components/JsonSchemaForm/widgets/PhoneWidget.tsx
4
+ var n = "US", r = ["GB", "US"], i = ({ id: n, disabled: i, readonly: a, required: o, value: s, onChange: c, onBlur: l, onFocus: u }) => /* @__PURE__ */ e(t, {
5
+ fullWidth: !0,
6
+ id: n,
7
+ required: o,
8
+ disabled: i,
9
+ slotProps: { htmlInput: { readOnly: a } },
10
+ value: typeof s == "string" ? s : "",
11
+ defaultCountry: "US",
12
+ preferredCountries: r,
13
+ forceCallingCode: !0,
14
+ onChange: (e, t) => c(t.nationalNumber ? e : void 0),
15
+ onBlur: () => l(n, s),
16
+ onFocus: () => u(n, s)
17
+ });
18
+ //#endregion
19
+ export { n as PHONE_DEFAULT_COUNTRY, r as PHONE_PREFERRED_COUNTRIES, i as PhoneWidget };
20
+
21
+ //# sourceMappingURL=PhoneWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhoneWidget.js","names":[],"sources":["../../../../src/components/JsonSchemaForm/widgets/PhoneWidget.tsx"],"sourcesContent":["import { Widget, WidgetProps } from '@rjsf/utils'\nimport { MuiTelInput } from 'mui-tel-input'\n\nexport const PHONE_DEFAULT_COUNTRY = 'US'\nexport const PHONE_PREFERRED_COUNTRIES = ['GB', 'US'] as ['GB', 'US']\n\n/**\n * International phone number widget: a country dropdown (flag, name, calling code) with a\n * numeric-only, country-formatted number input. The calling code is always part of the value.\n */\nexport const PhoneWidget: Widget = ({\n id,\n disabled,\n readonly,\n required,\n value,\n onChange,\n onBlur,\n onFocus,\n}: WidgetProps) => {\n return (\n <MuiTelInput\n fullWidth\n id={id}\n required={required}\n disabled={disabled}\n slotProps={{ htmlInput: { readOnly: readonly } }}\n value={typeof value === 'string' ? value : ''}\n defaultCountry={PHONE_DEFAULT_COUNTRY}\n preferredCountries={PHONE_PREFERRED_COUNTRIES}\n forceCallingCode\n // A bare calling code is not an answer; report it as empty so `required` still applies.\n onChange={(newValue, info) =>\n onChange(info.nationalNumber ? newValue : undefined)\n }\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n />\n )\n}\n"],"mappings":";;;AAGA,IAAa,IAAwB,MACxB,IAA4B,CAAC,MAAM,IAAI,GAMvC,KAAuB,EAClC,OACA,aACA,aACA,aACA,UACA,aACA,WACA,iBAGE,kBAAC,GAAD;CACE,WAAA;CACI;CACM;CACA;CACV,WAAW,EAAE,WAAW,EAAE,UAAU,EAAS,EAAE;CAC/C,OAAO,OAAO,KAAU,WAAW,IAAQ;CAC3C,gBAAA;CACA,oBAAoB;CACpB,kBAAA;CAEA,WAAW,GAAU,MACnB,EAAS,EAAK,iBAAiB,IAAW,KAAA,CAAS;CAErD,cAAc,EAAO,GAAI,CAAK;CAC9B,eAAe,EAAQ,GAAI,CAAK;AACjC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownCollapse.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown/MarkdownCollapse.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAwB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAWzE,MAAM,MAAM,qBAAqB,GAAG;IAElC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CACjD,GAAG,oBAAoB,CAAA;AAExB;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,qBAAqB,KAC3B,KAAK,CAAC,SAmHR,CAAA;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"MarkdownCollapse.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown/MarkdownCollapse.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAwB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AASzE,MAAM,MAAM,qBAAqB,GAAG;IAElC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CACjD,GAAG,oBAAoB,CAAA;AAExB;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,qBAAqB,KAC3B,KAAK,CAAC,SAmHR,CAAA;AAED,eAAe,gBAAgB,CAAA"}
@@ -5,7 +5,9 @@ import { Markdown as r } from "./MarkdownSynapse.js";
5
5
  import { useState as i } from "react";
6
6
  import { Box as a, Collapse as o, Typography as s } from "@mui/material";
7
7
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
- import { ContentCopyTwoTone as u, KeyboardArrowDownTwoTone as d, KeyboardArrowUpTwoTone as f } from "@mui/icons-material";
8
+ import u from "@mui/icons-material/ContentCopyTwoTone";
9
+ import d from "@mui/icons-material/KeyboardArrowDownTwoTone";
10
+ import f from "@mui/icons-material/KeyboardArrowUpTwoTone";
9
11
  //#region src/components/Markdown/MarkdownCollapse.tsx
10
12
  var p = (p) => {
11
13
  let [m, h] = i(!1), [g, _] = i(), [v, y] = i(), b = (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownCollapse.js","names":[],"sources":["../../../src/components/Markdown/MarkdownCollapse.tsx"],"sourcesContent":["import React from 'react'\nimport { useState } from 'react'\nimport MarkdownSynapse, { MarkdownSynapseProps } from './MarkdownSynapse'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport { Box, Collapse, SxProps, Typography } from '@mui/material'\nimport {\n ContentCopyTwoTone,\n KeyboardArrowDownTwoTone,\n KeyboardArrowUpTwoTone,\n} from '@mui/icons-material'\nimport { copyStringToClipboard } from '@/utils/functions/StringUtils'\nimport { stripHTML } from './MarkdownUtils'\n\nexport type MarkdownCollapseProps = {\n // The text that should be shown. If not given, will default to \"full text\"\n textDescription?: string\n showCopyPlainText?: boolean\n title?: string\n setPlainTextResult?: (plainText: string) => void\n} & MarkdownSynapseProps\n\n/**\n * Wraps a MarkdownSynapse in a Collapse area, with customizable text description.\n * Will pass down all properties to the MarkdownSynapse component, so this can be used in\n * the portal detail pages.\n * @param props\n */\nexport const MarkdownCollapse = (\n props: MarkdownCollapseProps,\n): React.ReactNode => {\n const [show, setShow] = useState(false)\n const [wordCount, setWordCount] = useState<number>()\n const [plainText, setPlainText] = useState<string>()\n\n const onMarkdownProcessingDone: (\n htmlContent: string | null | undefined,\n ) => void = htmlContent => {\n if (htmlContent) {\n const textContent = stripHTML(htmlContent)\n if (textContent.trim() !== plainText) {\n setPlainText(textContent.trim())\n setWordCount(textContent.trim().split(/\\s+/).length)\n if (props.setPlainTextResult) {\n props.setPlainTextResult(textContent.trim())\n }\n }\n }\n }\n\n const {\n textDescription = 'full text',\n showCopyPlainText,\n markdown,\n ownerId,\n title,\n } = props\n if (markdown == undefined && ownerId == undefined) {\n return\n }\n const iconSx: SxProps = {\n color: 'grey.700',\n marginBottom: '-5px !important',\n height: '18px',\n }\n return (\n <div\n className=\"MarkdownCollapse\"\n style={{\n display: wordCount != undefined && wordCount > 0 ? 'block' : 'none',\n }}\n >\n {title && (\n <Typography variant=\"subtitle1\" sx={{ margin: '20px 0px 10px 0px' }}>\n {title}\n </Typography>\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'grey.200',\n padding: '15px',\n }}\n >\n <Typography\n variant=\"smallLink\"\n onClick={() => setShow(!show)}\n aria-controls=\"collapse-text\"\n aria-expanded={show}\n sx={{\n '&:hover': {\n cursor: 'pointer',\n },\n }}\n >\n {show ? 'Hide' : 'View'} {textDescription}{' '}\n {wordCount ? `(${wordCount} words)` : ''}\n {show ? (\n <KeyboardArrowUpTwoTone sx={iconSx} />\n ) : (\n <KeyboardArrowDownTwoTone sx={iconSx} />\n )}\n </Typography>\n {showCopyPlainText && (\n <Box>\n <Typography\n variant=\"smallLink\"\n onClick={() => {\n if (plainText) {\n copyStringToClipboard(plainText).then(\n () => {\n displayToast('Successfully copied to the clipboard')\n },\n err => {\n console.error(err)\n },\n )\n }\n }}\n sx={{\n '&:hover': {\n cursor: 'pointer',\n },\n }}\n >\n <ContentCopyTwoTone sx={iconSx} />\n Copy {textDescription} to clipboard\n </Typography>\n </Box>\n )}\n </Box>\n\n <Collapse in={show}>\n <Box sx={{ backgroundColor: 'grey.100', padding: '25px' }}>\n <div id=\"collapse-text\">\n <MarkdownSynapse\n {...props}\n onMarkdownProcessingDone={onMarkdownProcessingDone}\n />\n </div>\n </Box>\n </Collapse>\n </div>\n )\n}\n\nexport default MarkdownCollapse\n"],"mappings":";;;;;;;;;AA2BA,IAAa,KACX,MACoB;CACpB,IAAM,CAAC,GAAM,KAAW,EAAS,EAAK,GAChC,CAAC,GAAW,KAAgB,EAAiB,GAC7C,CAAC,GAAW,KAAgB,EAAiB,GAE7C,KAEM,MAAe;EACzB,IAAI,GAAa;GACf,IAAM,IAAc,EAAU,CAAW;GACzC,AAAI,EAAY,KAAK,MAAM,MACzB,EAAa,EAAY,KAAK,CAAC,GAC/B,EAAa,EAAY,KAAK,EAAE,MAAM,KAAK,EAAE,MAAM,GAC/C,EAAM,sBACR,EAAM,mBAAmB,EAAY,KAAK,CAAC;EAGjD;CACF,GAEM,EACJ,qBAAkB,aAClB,sBACA,aACA,YACA,aACE;CACJ,IAAI,KAAY,QAAa,KAAW,MACtC;CAEF,IAAM,IAAkB;EACtB,OAAO;EACP,cAAc;EACd,QAAQ;CACV;CACA,OACE,kBAAC,OAAD;EACE,WAAU;EACV,OAAO,EACL,SAAS,KAAa,QAAa,IAAY,IAAI,UAAU,OAC/D;YAJF;GAMG,KACC,kBAAC,GAAD;IAAY,SAAQ;IAAY,IAAI,EAAE,QAAQ,oBAAoB;cAC/D;GACS,CAAA;GAEd,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,iBAAiB;KACjB,SAAS;IACX;cANF,CAQE,kBAAC,GAAD;KACE,SAAQ;KACR,eAAe,EAAQ,CAAC,CAAI;KAC5B,iBAAc;KACd,iBAAe;KACf,IAAI,EACF,WAAW,EACT,QAAQ,UACV,EACF;eATF;MAWG,IAAO,SAAS;MAAO;MAAE;MAAiB;MAC1C,IAAY,IAAI,EAAU,WAAW;MAEpC,EADD,IACE,IAEA,GAFD,EAAwB,IAAI,EAAS,CAEE;KAE/B;QACX,KACC,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;KACE,SAAQ;KACR,eAAe;MACb,AAAI,KACF,EAAsB,CAAS,EAAE,WACzB;OACJ,EAAa,sCAAsC;MACrD,IACA,MAAO;OACL,QAAQ,MAAM,CAAG;MACnB,CACF;KAEJ;KACA,IAAI,EACF,WAAW,EACT,QAAQ,UACV,EACF;eAlBF;MAoBE,kBAAC,GAAD,EAAoB,IAAI,EAAS,CAAA;MAAC;MAC5B;MAAgB;KACZ;OACT,CAAA,CAEJ;;GAEL,kBAAC,GAAD;IAAU,IAAI;cACZ,kBAAC,GAAD;KAAK,IAAI;MAAE,iBAAiB;MAAY,SAAS;KAAO;eACtD,kBAAC,OAAD;MAAK,IAAG;gBACN,kBAAC,GAAD;OACE,GAAI;OACsB;MAC3B,CAAA;KACE,CAAA;IACF,CAAA;GACG,CAAA;EACP;;AAET"}
1
+ {"version":3,"file":"MarkdownCollapse.js","names":[],"sources":["../../../src/components/Markdown/MarkdownCollapse.tsx"],"sourcesContent":["import React from 'react'\nimport { useState } from 'react'\nimport MarkdownSynapse, { MarkdownSynapseProps } from './MarkdownSynapse'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport { Box, Collapse, SxProps, Typography } from '@mui/material'\nimport ContentCopyTwoTone from '@mui/icons-material/ContentCopyTwoTone'\nimport KeyboardArrowDownTwoTone from '@mui/icons-material/KeyboardArrowDownTwoTone'\nimport KeyboardArrowUpTwoTone from '@mui/icons-material/KeyboardArrowUpTwoTone'\nimport { copyStringToClipboard } from '@/utils/functions/StringUtils'\nimport { stripHTML } from './MarkdownUtils'\n\nexport type MarkdownCollapseProps = {\n // The text that should be shown. If not given, will default to \"full text\"\n textDescription?: string\n showCopyPlainText?: boolean\n title?: string\n setPlainTextResult?: (plainText: string) => void\n} & MarkdownSynapseProps\n\n/**\n * Wraps a MarkdownSynapse in a Collapse area, with customizable text description.\n * Will pass down all properties to the MarkdownSynapse component, so this can be used in\n * the portal detail pages.\n * @param props\n */\nexport const MarkdownCollapse = (\n props: MarkdownCollapseProps,\n): React.ReactNode => {\n const [show, setShow] = useState(false)\n const [wordCount, setWordCount] = useState<number>()\n const [plainText, setPlainText] = useState<string>()\n\n const onMarkdownProcessingDone: (\n htmlContent: string | null | undefined,\n ) => void = htmlContent => {\n if (htmlContent) {\n const textContent = stripHTML(htmlContent)\n if (textContent.trim() !== plainText) {\n setPlainText(textContent.trim())\n setWordCount(textContent.trim().split(/\\s+/).length)\n if (props.setPlainTextResult) {\n props.setPlainTextResult(textContent.trim())\n }\n }\n }\n }\n\n const {\n textDescription = 'full text',\n showCopyPlainText,\n markdown,\n ownerId,\n title,\n } = props\n if (markdown == undefined && ownerId == undefined) {\n return\n }\n const iconSx: SxProps = {\n color: 'grey.700',\n marginBottom: '-5px !important',\n height: '18px',\n }\n return (\n <div\n className=\"MarkdownCollapse\"\n style={{\n display: wordCount != undefined && wordCount > 0 ? 'block' : 'none',\n }}\n >\n {title && (\n <Typography variant=\"subtitle1\" sx={{ margin: '20px 0px 10px 0px' }}>\n {title}\n </Typography>\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'grey.200',\n padding: '15px',\n }}\n >\n <Typography\n variant=\"smallLink\"\n onClick={() => setShow(!show)}\n aria-controls=\"collapse-text\"\n aria-expanded={show}\n sx={{\n '&:hover': {\n cursor: 'pointer',\n },\n }}\n >\n {show ? 'Hide' : 'View'} {textDescription}{' '}\n {wordCount ? `(${wordCount} words)` : ''}\n {show ? (\n <KeyboardArrowUpTwoTone sx={iconSx} />\n ) : (\n <KeyboardArrowDownTwoTone sx={iconSx} />\n )}\n </Typography>\n {showCopyPlainText && (\n <Box>\n <Typography\n variant=\"smallLink\"\n onClick={() => {\n if (plainText) {\n copyStringToClipboard(plainText).then(\n () => {\n displayToast('Successfully copied to the clipboard')\n },\n err => {\n console.error(err)\n },\n )\n }\n }}\n sx={{\n '&:hover': {\n cursor: 'pointer',\n },\n }}\n >\n <ContentCopyTwoTone sx={iconSx} />\n Copy {textDescription} to clipboard\n </Typography>\n </Box>\n )}\n </Box>\n\n <Collapse in={show}>\n <Box sx={{ backgroundColor: 'grey.100', padding: '25px' }}>\n <div id=\"collapse-text\">\n <MarkdownSynapse\n {...props}\n onMarkdownProcessingDone={onMarkdownProcessingDone}\n />\n </div>\n </Box>\n </Collapse>\n </div>\n )\n}\n\nexport default MarkdownCollapse\n"],"mappings":";;;;;;;;;;;AAyBA,IAAa,KACX,MACoB;CACpB,IAAM,CAAC,GAAM,KAAW,EAAS,EAAK,GAChC,CAAC,GAAW,KAAgB,EAAiB,GAC7C,CAAC,GAAW,KAAgB,EAAiB,GAE7C,KAEM,MAAe;EACzB,IAAI,GAAa;GACf,IAAM,IAAc,EAAU,CAAW;GACzC,AAAI,EAAY,KAAK,MAAM,MACzB,EAAa,EAAY,KAAK,CAAC,GAC/B,EAAa,EAAY,KAAK,EAAE,MAAM,KAAK,EAAE,MAAM,GAC/C,EAAM,sBACR,EAAM,mBAAmB,EAAY,KAAK,CAAC;EAGjD;CACF,GAEM,EACJ,qBAAkB,aAClB,sBACA,aACA,YACA,aACE;CACJ,IAAI,KAAY,QAAa,KAAW,MACtC;CAEF,IAAM,IAAkB;EACtB,OAAO;EACP,cAAc;EACd,QAAQ;CACV;CACA,OACE,kBAAC,OAAD;EACE,WAAU;EACV,OAAO,EACL,SAAS,KAAa,QAAa,IAAY,IAAI,UAAU,OAC/D;YAJF;GAMG,KACC,kBAAC,GAAD;IAAY,SAAQ;IAAY,IAAI,EAAE,QAAQ,oBAAoB;cAC/D;GACS,CAAA;GAEd,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,iBAAiB;KACjB,SAAS;IACX;cANF,CAQE,kBAAC,GAAD;KACE,SAAQ;KACR,eAAe,EAAQ,CAAC,CAAI;KAC5B,iBAAc;KACd,iBAAe;KACf,IAAI,EACF,WAAW,EACT,QAAQ,UACV,EACF;eATF;MAWG,IAAO,SAAS;MAAO;MAAE;MAAiB;MAC1C,IAAY,IAAI,EAAU,WAAW;MAEpC,EADD,IACE,IAEA,GAFD,EAAwB,IAAI,EAAS,CAEE;KAE/B;QACX,KACC,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;KACE,SAAQ;KACR,eAAe;MACb,AAAI,KACF,EAAsB,CAAS,EAAE,WACzB;OACJ,EAAa,sCAAsC;MACrD,IACA,MAAO;OACL,QAAQ,MAAM,CAAG;MACnB,CACF;KAEJ;KACA,IAAI,EACF,WAAW,EACT,QAAQ,UACV,EACF;eAlBF;MAoBE,kBAAC,GAAD,EAAoB,IAAI,EAAS,CAAA;MAAC;MAC5B;MAAgB;KACZ;OACT,CAAA,CAEJ;;GAEL,kBAAC,GAAD;IAAU,IAAI;cACZ,kBAAC,GAAD;KAAK,IAAI;MAAE,iBAAiB;MAAY,SAAS;KAAO;eACtD,kBAAC,OAAD;MAAK,IAAG;gBACN,kBAAC,GAAD;OACE,GAAI;OACsB;MAC3B,CAAA;KACE,CAAA;IACF,CAAA;GACG,CAAA;EACP;;AAET"}
@@ -6,7 +6,7 @@ import "../../synapse-queries/index.js";
6
6
  import { HelpPopover as n } from "../HelpPopover/HelpPopover.js";
7
7
  import { Typography as r } from "@mui/material";
8
8
  import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
9
- import { WarningSharp as s } from "@mui/icons-material";
9
+ import s from "@mui/icons-material/WarningSharp";
10
10
  //#region src/components/MissingQueryResultsWarning/MissingQueryResultsWarning.tsx
11
11
  var c = "Files may be unavailable because you do not have permission to see them, they have been deleted, or the Dataset has been misconfigured.", l = "Files may be unavailable because you do not have permission to see them or the Dataset was misconfigured.";
12
12
  function u({ entity: u }) {
@@ -1 +1 @@
1
- {"version":3,"file":"MissingQueryResultsWarning.js","names":[],"sources":["../../../src/components/MissingQueryResultsWarning/MissingQueryResultsWarning.tsx"],"sourcesContent":["import { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { isEntityRefCollectionView } from '@/utils/functions/EntityTypeUtils'\nimport { WarningSharp } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { QueryBundleRequest, Table } from '@sage-bionetworks/synapse-types'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\n\nconst DATASETS_CURRENT_VERSION_HELP =\n 'Files may be unavailable because you do not have permission to see them, they have been deleted, or the Dataset has been misconfigured.'\n\n// Help text for snapshot does not indicate that files were deleted, because the deleted file would have been captured in the snapshot\nconst DATASETS_SNAPSHOT_HELP =\n 'Files may be unavailable because you do not have permission to see them or the Dataset was misconfigured.'\n\nexport type MissingQueryResultsWarningProps = {\n entity: Table\n versionNumber?: number\n}\n\n/**\n * If possible, this component will render a warning message if results may be missing from the query due to user permissions or\n * entities being deleted. If not possible, it will render an empty fragment.\n */\nfunction MissingQueryResultsWarning({\n entity,\n}: MissingQueryResultsWarningProps) {\n // Currently, Datasets and Dataset collections are the only table type for which we can reliably get this info.\n // Other cases will need a new service, tracked by PLFM-7046\n const isMissingResultsCalculable = entity && isEntityRefCollectionView(entity)\n\n const request: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n query: {\n sql: `SELECT * FROM ${entity.id!}${\n !entity.isLatestVersion && entity.versionNumber\n ? `.${entity.versionNumber}`\n : ''\n }`,\n },\n entityId: entity.id!,\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_COUNT,\n }\n\n const { data: queryResult } = useGetQueryResultBundleWithAsyncStatus(\n request,\n {\n enabled: isMissingResultsCalculable,\n },\n )\n if (isMissingResultsCalculable && queryResult && entity) {\n const totalVisibleResults = queryResult.responseBody!.queryCount!\n const totalResults = entity.items?.length ?? 0\n\n if (totalVisibleResults >= totalResults) {\n // All the results are visible, so there is no need to show a warning.\n // SWC-6727 / PLFM-8326 - `totalVisibleResults` should never be greater than `totalResults`, but in case it is (e.g. stale cache),\n // don't show the warning.\n return <></>\n }\n\n const difference = totalResults - totalVisibleResults\n\n let helpMessage = ''\n\n if (entity.isLatestVersion) {\n helpMessage = DATASETS_CURRENT_VERSION_HELP\n } else {\n helpMessage = DATASETS_SNAPSHOT_HELP\n }\n\n return (\n <Typography\n component={'div'}\n className=\"SRC-centerContent\"\n style={{\n marginLeft: 10,\n }}\n variant=\"smallText1\"\n color=\"textSecondary\"\n >\n <WarningSharp\n className=\"SRC-color-warning\"\n style={{ fontSize: '16px' }}\n />\n {difference.toLocaleString() + ' Unavailable'}\n <HelpPopover\n className=\"SRC-margin-left-5\"\n markdownText={helpMessage}\n placement=\"right\"\n ></HelpPopover>\n </Typography>\n )\n } else {\n return <></>\n }\n}\n\nexport default MissingQueryResultsWarning\n"],"mappings":";;;;;;;;;;AAQA,IAAM,IACJ,2IAGI,IACJ;AAWF,SAAS,EAA2B,EAClC,aACkC;CAGlC,IAAM,IAA6B,KAAU,EAA0B,CAAM,GAevE,EAAE,MAAM,MAAgB,EAC5B;EAbA,cAAc;EACd,OAAO,EACL,KAAK,iBAAiB,EAAO,KAC3B,CAAC,EAAO,mBAAmB,EAAO,gBAC9B,IAAI,EAAO,kBACX,KAER;EACA,UAAU,EAAO;EACjB,UAAU;CAIV,GACA,EACE,SAAS,EACX,CACF;CACA,IAAI,KAA8B,KAAe,GAAQ;EACvD,IAAM,IAAsB,EAAY,aAAc,YAChD,IAAe,EAAO,OAAO,UAAU;EAE7C,IAAI,KAAuB,GAIzB,OAAO,kBAAA,GAAA,CAAI,CAAA;EAGb,IAAM,IAAa,IAAe,GAE9B,IAAc;EAQlB,OANA,AAGE,IAHE,EAAO,kBACK,IAEA,GAId,kBAAC,GAAD;GACE,WAAW;GACX,WAAU;GACV,OAAO,EACL,YAAY,GACd;GACA,SAAQ;GACR,OAAM;aAPR;IASE,kBAAC,GAAD;KACE,WAAU;KACV,OAAO,EAAE,UAAU,OAAO;IAC3B,CAAA;IACA,EAAW,eAAe,IAAI;IAC/B,kBAAC,GAAD;KACE,WAAU;KACV,cAAc;KACd,WAAU;IACE,CAAA;GACJ;;CAEhB,OACE,OAAO,kBAAA,GAAA,CAAI,CAAA;AAEf"}
1
+ {"version":3,"file":"MissingQueryResultsWarning.js","names":[],"sources":["../../../src/components/MissingQueryResultsWarning/MissingQueryResultsWarning.tsx"],"sourcesContent":["import { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { isEntityRefCollectionView } from '@/utils/functions/EntityTypeUtils'\nimport WarningSharp from '@mui/icons-material/WarningSharp'\nimport { Typography } from '@mui/material'\nimport { QueryBundleRequest, Table } from '@sage-bionetworks/synapse-types'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\n\nconst DATASETS_CURRENT_VERSION_HELP =\n 'Files may be unavailable because you do not have permission to see them, they have been deleted, or the Dataset has been misconfigured.'\n\n// Help text for snapshot does not indicate that files were deleted, because the deleted file would have been captured in the snapshot\nconst DATASETS_SNAPSHOT_HELP =\n 'Files may be unavailable because you do not have permission to see them or the Dataset was misconfigured.'\n\nexport type MissingQueryResultsWarningProps = {\n entity: Table\n versionNumber?: number\n}\n\n/**\n * If possible, this component will render a warning message if results may be missing from the query due to user permissions or\n * entities being deleted. If not possible, it will render an empty fragment.\n */\nfunction MissingQueryResultsWarning({\n entity,\n}: MissingQueryResultsWarningProps) {\n // Currently, Datasets and Dataset collections are the only table type for which we can reliably get this info.\n // Other cases will need a new service, tracked by PLFM-7046\n const isMissingResultsCalculable = entity && isEntityRefCollectionView(entity)\n\n const request: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n query: {\n sql: `SELECT * FROM ${entity.id!}${\n !entity.isLatestVersion && entity.versionNumber\n ? `.${entity.versionNumber}`\n : ''\n }`,\n },\n entityId: entity.id!,\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_COUNT,\n }\n\n const { data: queryResult } = useGetQueryResultBundleWithAsyncStatus(\n request,\n {\n enabled: isMissingResultsCalculable,\n },\n )\n if (isMissingResultsCalculable && queryResult && entity) {\n const totalVisibleResults = queryResult.responseBody!.queryCount!\n const totalResults = entity.items?.length ?? 0\n\n if (totalVisibleResults >= totalResults) {\n // All the results are visible, so there is no need to show a warning.\n // SWC-6727 / PLFM-8326 - `totalVisibleResults` should never be greater than `totalResults`, but in case it is (e.g. stale cache),\n // don't show the warning.\n return <></>\n }\n\n const difference = totalResults - totalVisibleResults\n\n let helpMessage = ''\n\n if (entity.isLatestVersion) {\n helpMessage = DATASETS_CURRENT_VERSION_HELP\n } else {\n helpMessage = DATASETS_SNAPSHOT_HELP\n }\n\n return (\n <Typography\n component={'div'}\n className=\"SRC-centerContent\"\n style={{\n marginLeft: 10,\n }}\n variant=\"smallText1\"\n color=\"textSecondary\"\n >\n <WarningSharp\n className=\"SRC-color-warning\"\n style={{ fontSize: '16px' }}\n />\n {difference.toLocaleString() + ' Unavailable'}\n <HelpPopover\n className=\"SRC-margin-left-5\"\n markdownText={helpMessage}\n placement=\"right\"\n ></HelpPopover>\n </Typography>\n )\n } else {\n return <></>\n }\n}\n\nexport default MissingQueryResultsWarning\n"],"mappings":";;;;;;;;;;AAQA,IAAM,IACJ,2IAGI,IACJ;AAWF,SAAS,EAA2B,EAClC,aACkC;CAGlC,IAAM,IAA6B,KAAU,EAA0B,CAAM,GAevE,EAAE,MAAM,MAAgB,EAC5B;EAbA,cAAc;EACd,OAAO,EACL,KAAK,iBAAiB,EAAO,KAC3B,CAAC,EAAO,mBAAmB,EAAO,gBAC9B,IAAI,EAAO,kBACX,KAER;EACA,UAAU,EAAO;EACjB,UAAU;CAIV,GACA,EACE,SAAS,EACX,CACF;CACA,IAAI,KAA8B,KAAe,GAAQ;EACvD,IAAM,IAAsB,EAAY,aAAc,YAChD,IAAe,EAAO,OAAO,UAAU;EAE7C,IAAI,KAAuB,GAIzB,OAAO,kBAAA,GAAA,CAAI,CAAA;EAGb,IAAM,IAAa,IAAe,GAE9B,IAAc;EAQlB,OANA,AAGE,IAHE,EAAO,kBACK,IAEA,GAId,kBAAC,GAAD;GACE,WAAW;GACX,WAAU;GACV,OAAO,EACL,YAAY,GACd;GACA,SAAQ;GACR,OAAM;aAPR;IASE,kBAAC,GAAD;KACE,WAAU;KACV,OAAO,EAAE,UAAU,OAAO;IAC3B,CAAA;IACA,EAAW,eAAe,IAAI;IAC/B,kBAAC,GAAD;KACE,WAAU;KACV,cAAc;KACd,WAAU;IACE,CAAA;GACJ;;CAEhB,OACE,OAAO,kBAAA,GAAA,CAAI,CAAA;AAEf"}
@@ -17,11 +17,12 @@ import f from "../OAuthClientAclEditor/OAuthAclEditorModal.js";
17
17
  import { useMemo as p, useState as m } from "react";
18
18
  import { Box as h, Button as g, IconButton as _, Link as v, Menu as y, MenuItem as b } from "@mui/material";
19
19
  import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
20
- import { AddCircleTwoTone as w, MoreVert as T } from "@mui/icons-material";
21
- import E from "dayjs";
22
- import { createColumnHelper as D, getCoreRowModel as O, useReactTable as k } from "@tanstack/react-table";
20
+ import w from "@mui/icons-material/AddCircleTwoTone";
21
+ import T from "dayjs";
22
+ import { createColumnHelper as E, getCoreRowModel as D, useReactTable as O } from "@tanstack/react-table";
23
+ import k from "@mui/icons-material/MoreVert";
23
24
  //#region src/components/OAuthClientManagement/OAuthManagement.tsx
24
- var A = D();
25
+ var A = E();
25
26
  function j(e) {
26
27
  let { setIsShowingVerification: t, setSelectedClient: n, setIsShowingSecretWarning: r, setIsEdit: i, setIsShowingCreateClientModal: a, setIsShowingSharingSettings: o } = e;
27
28
  return [
@@ -30,14 +31,14 @@ function j(e) {
30
31
  ...e,
31
32
  title: "Created"
32
33
  }),
33
- cell: (e) => s(E(e.getValue()))
34
+ cell: (e) => s(T(e.getValue()))
34
35
  }),
35
36
  A.accessor("modifiedOn", {
36
37
  header: (e) => /* @__PURE__ */ S(l, {
37
38
  ...e,
38
39
  title: "Modified"
39
40
  }),
40
- cell: (e) => s(E(e.getValue()))
41
+ cell: (e) => s(T(e.getValue()))
41
42
  }),
42
43
  A.accessor("client_id", { header: (e) => /* @__PURE__ */ S(l, {
43
44
  ...e,
@@ -88,7 +89,7 @@ function M({ row: e, setSelectedClient: t, setIsEdit: n, setIsShowingCreateClien
88
89
  "aria-haspopup": "true",
89
90
  onClick: l,
90
91
  size: "small",
91
- children: /* @__PURE__ */ S(T, {})
92
+ children: /* @__PURE__ */ S(k, {})
92
93
  }), /* @__PURE__ */ C(y, {
93
94
  id: `actions-menu-${e.id}`,
94
95
  anchorEl: o,
@@ -125,15 +126,15 @@ function M({ row: e, setSelectedClient: t, setIsEdit: n, setIsShowingCreateClien
125
126
  })] });
126
127
  }
127
128
  function N() {
128
- let { accessToken: s } = n(), [l, _] = m(!1), [y, b] = m(!1), [T, E] = m(!1), [D, A] = m(), [M, N] = m(!1), [P, F] = m(!1), [I, L] = m(!1), [R, z] = m(), [B, V] = m(!1), { data: H, isLoading: U, hasNextPage: W, fetchNextPage: G, isFetchingNextPage: K } = r(), q = p(() => H?.pages.flatMap((e) => e.results || []) || [], [H]), J = async () => {
129
+ let { accessToken: s } = n(), [l, _] = m(!1), [y, b] = m(!1), [T, E] = m(!1), [k, A] = m(), [M, N] = m(!1), [P, F] = m(!1), [I, L] = m(!1), [R, z] = m(), [B, V] = m(!1), { data: H, isLoading: U, hasNextPage: W, fetchNextPage: G, isFetchingNextPage: K } = r(), q = p(() => H?.pages.flatMap((e) => e.results || []) || [], [H]), J = async () => {
129
130
  F(!1);
130
131
  try {
131
- let e = await t.createOAuthClientSecret(s, D?.client_id);
132
+ let e = await t.createOAuthClientSecret(s, k?.client_id);
132
133
  A(void 0), L(!0), z(e.client_secret);
133
134
  } catch (t) {
134
135
  e(t.reason, "danger");
135
136
  }
136
- }, Y = k({
137
+ }, Y = O({
137
138
  data: q,
138
139
  columns: p(() => j({
139
140
  setIsShowingVerification: V,
@@ -146,7 +147,7 @@ function N() {
146
147
  getRowId: (e) => e.client_id,
147
148
  enableRowSelection: !0,
148
149
  enableSorting: !1,
149
- getCoreRowModel: O(),
150
+ getCoreRowModel: D(),
150
151
  columnResizeMode: "onChange"
151
152
  }), X = !U && Y.getRowModel().rows.length === 0;
152
153
  return /* @__PURE__ */ C("div", { children: [
@@ -183,7 +184,7 @@ function N() {
183
184
  b(!1);
184
185
  },
185
186
  isShowingModal: y,
186
- client: T ? D : void 0,
187
+ client: T ? k : void 0,
187
188
  isEdit: T,
188
189
  setIsShowingConfirmModal: N,
189
190
  isShowingConfirmModal: M,
@@ -213,7 +214,7 @@ function N() {
213
214
  ] })
214
215
  }),
215
216
  /* @__PURE__ */ S(f, {
216
- clientId: D?.client_id,
217
+ clientId: k?.client_id,
217
218
  open: l,
218
219
  onClose: () => _(!1)
219
220
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"OAuthManagement.js","names":[],"sources":["../../../src/components/OAuthClientManagement/OAuthManagement.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport SynapseClient from '@/synapse-client'\nimport { useGetOAuthClientInfinite } from '@/synapse-queries'\nimport { MoreVert } from '@mui/icons-material'\nimport { useSynapseContext } from '@/utils'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { AddCircleTwoTone } from '@mui/icons-material'\nimport { Box, Button, Link, IconButton, Menu, MenuItem } from '@mui/material'\nimport { OAuthClient } from '@sage-bionetworks/synapse-client/generated/models/OAuthClient'\nimport {\n createColumnHelper,\n getCoreRowModel,\n Row,\n Table,\n useReactTable,\n} from '@tanstack/react-table'\nimport dayjs from 'dayjs'\nimport { useMemo, useState } from 'react'\nimport CopyToClipboardInput from '../CopyToClipboardInput/CopyToClipboardInput'\nimport { DialogBase } from '../DialogBase'\nimport WarningDialog from '../SynapseForm/WarningDialog'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { displayToast } from '../ToastMessage'\nimport { CreateOAuthModal } from './CreateOAuthClient'\nimport OAuthAclEditorModal from '../OAuthClientAclEditor/OAuthAclEditorModal'\n\nconst columnHelper = createColumnHelper<OAuthClient>()\nfunction getColumns(columnOptions: {\n setIsShowingVerification: (value: boolean) => void\n setSelectedClient: (value: OAuthClient) => void\n setIsShowingSecretWarning: (value: boolean) => void\n setIsEdit: (value: boolean) => void\n setIsShowingCreateClientModal: (value: boolean) => void\n setIsShowingSharingSettings: (value: boolean) => void\n}) {\n const {\n setIsShowingVerification,\n setSelectedClient,\n setIsShowingSecretWarning,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSharingSettings,\n } = columnOptions\n return [\n columnHelper.accessor('createdOn', {\n header: props => <ColumnHeader {...props} title={'Created'} />,\n cell: info => formatDate(dayjs(info.getValue())),\n }),\n columnHelper.accessor('modifiedOn', {\n header: props => <ColumnHeader {...props} title={'Modified'} />,\n cell: info => formatDate(dayjs(info.getValue())),\n }),\n columnHelper.accessor('client_id', {\n header: props => <ColumnHeader {...props} title={'ID'} />,\n }),\n columnHelper.accessor('client_name', {\n header: props => <ColumnHeader {...props} title={'Client'} />,\n }),\n columnHelper.accessor('verified', {\n header: props => <ColumnHeader {...props} title={'Verified'} />,\n cell: ({ getValue }) =>\n getValue() ? (\n 'Yes'\n ) : (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => setIsShowingVerification(true)}\n >\n Submit Verification\n </Button>\n ),\n }),\n columnHelper.display({\n id: 'actions',\n header: props => <ColumnHeader {...props} title={'Actions'} />,\n cell: ({ row }) => (\n <ActionsMenuCell\n row={row}\n setSelectedClient={setSelectedClient}\n setIsEdit={setIsEdit}\n setIsShowingCreateClientModal={setIsShowingCreateClientModal}\n setIsShowingSecretWarning={setIsShowingSecretWarning}\n setIsShowingSharingSettings={setIsShowingSharingSettings}\n />\n ),\n }),\n ]\n}\n\nfunction ActionsMenuCell({\n row,\n setSelectedClient,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSecretWarning,\n setIsShowingSharingSettings,\n}: {\n row: Row<OAuthClient>\n setSelectedClient: (value: OAuthClient) => void\n setIsEdit: (value: boolean) => void\n setIsShowingCreateClientModal: (value: boolean) => void\n setIsShowingSecretWarning: (value: boolean) => void\n setIsShowingSharingSettings: (value: boolean) => void\n}) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const open = Boolean(anchorEl)\n const handleMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n const handleMenuClose = () => {\n setAnchorEl(null)\n }\n return (\n <>\n <IconButton\n aria-label=\"more\"\n aria-controls={`actions-menu-${row.id}`}\n aria-haspopup=\"true\"\n onClick={handleMenuOpen}\n size=\"small\"\n >\n <MoreVert />\n </IconButton>\n <Menu\n id={`actions-menu-${row.id}`}\n anchorEl={anchorEl}\n open={open}\n onClose={handleMenuClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsEdit(true)\n setIsShowingCreateClientModal(true)\n handleMenuClose()\n }}\n >\n Edit\n </MenuItem>\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsShowingSecretWarning(true)\n handleMenuClose()\n }}\n >\n Generate Secret\n </MenuItem>\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsShowingSharingSettings(true)\n handleMenuClose()\n }}\n >\n Sharing Settings\n </MenuItem>\n </Menu>\n </>\n )\n}\n\nexport function OAuthManagement() {\n const { accessToken } = useSynapseContext()\n const [isShowingSharingSettings, setIsShowingSharingSettings] =\n useState(false)\n const [isShowingCreateClientModal, setIsShowingCreateClientModal] =\n useState(false)\n const [isEdit, setIsEdit] = useState<boolean>(false)\n const [selectedClient, setSelectedClient] = useState<OAuthClient>()\n const [isShowingConfirmModal, setIsShowingConfirmModal] = useState(false)\n const [isShowingSecretWarning, setIsShowingSecretWarning] = useState(false)\n const [isShowingSecret, setIsShowingSecret] = useState(false)\n const [secret, setSecret] = useState<string>()\n const [isShowingVerification, setIsShowingVerification] = useState(false)\n\n const { data, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useGetOAuthClientInfinite()\n const oAuthClientList = useMemo(\n () => data?.pages.flatMap(page => page.results || []) || [],\n [data],\n )\n\n const warningHeader = 'Are you absolutely sure?'\n const warningBody =\n 'If you have an existing secret, generating a new secret will make your application invalid after generation. This action cannot be undone.'\n\n const onShowSecret = async () => {\n setIsShowingSecretWarning(false)\n try {\n const secret = await SynapseClient.createOAuthClientSecret(\n accessToken!,\n selectedClient?.client_id!,\n )\n setSelectedClient(undefined)\n setIsShowingSecret(true)\n setSecret(secret.client_secret)\n } catch (err: any) {\n displayToast(err.reason as string, 'danger')\n }\n }\n\n const columns = useMemo(\n () =>\n getColumns({\n setIsShowingVerification,\n setSelectedClient,\n setIsShowingSecretWarning,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSharingSettings,\n }),\n [],\n )\n\n const table: Table<OAuthClient> = useReactTable<OAuthClient>({\n data: oAuthClientList,\n columns,\n getRowId: row => row.client_id!,\n enableRowSelection: true,\n enableSorting: false,\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n })\n\n const isEmpty = !isLoading && table.getRowModel().rows.length === 0\n\n return (\n <div>\n <Box\n sx={{\n display: 'flex',\n width: '100%',\n justifyContent: 'flex-end',\n mb: 2,\n }}\n >\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n setIsShowingCreateClientModal(true)\n setIsEdit(false)\n }}\n sx={{ float: 'right' }}\n startIcon={<AddCircleTwoTone />}\n >\n Create New Client\n </Button>\n </Box>\n <InfiniteTableLayout\n table={<StyledTanStackTable table={table} />}\n isLoading={isLoading}\n isEmpty={isEmpty}\n hasNextPage={hasNextPage}\n onFetchNextPageClicked={() => {\n void fetchNextPage()\n }}\n isFetchingNextPage={isFetchingNextPage}\n />\n <CreateOAuthModal\n onClose={() => {\n setIsShowingCreateClientModal(false)\n }}\n isShowingModal={isShowingCreateClientModal}\n client={isEdit ? selectedClient : undefined}\n isEdit={isEdit}\n setIsShowingConfirmModal={setIsShowingConfirmModal}\n isShowingConfirmModal={isShowingConfirmModal}\n setIsShowingModal={setIsShowingCreateClientModal}\n />\n <DialogBase\n open={isShowingVerification}\n onCancel={() => setIsShowingVerification(false)}\n title=\"Submit Verification\"\n content={\n <>\n <p>\n In order to verify an OAuth client please submit a request to the{' '}\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://sagebionetworks.jira.com/servicedesk/customer/portal/9\"\n >\n Synapse Service Desk.\n </Link>\n </p>\n <b>Please list the following items in your request:</b>\n <ul>\n <li>Your name</li>\n <li>\n The ID of the client to be verified <br />\n </li>\n <li>A description of your application</li>\n </ul>\n {/* <p>\n Verification can take up to X weeks and we will notify you via X.\n </p> */}\n </>\n }\n />\n <OAuthAclEditorModal\n clientId={selectedClient?.client_id!}\n open={isShowingSharingSettings}\n onClose={() => setIsShowingSharingSettings(false)}\n />\n <WarningDialog\n open={isShowingSecretWarning}\n title={warningHeader}\n content={warningBody}\n onCancel={() => {\n setIsShowingSecretWarning(false)\n setSelectedClient(undefined)\n }}\n onConfirm={onShowSecret}\n confirmButtonColor=\"error\"\n confirmButtonText=\"Yes, Continue\"\n />\n {secret && (\n <DialogBase\n open={isShowingSecret}\n title=\"App Secret\"\n onCancel={() => {\n setIsShowingSecret(false)\n setSecret(undefined)\n }}\n content={\n <>\n <p>\n <b>This secret will not be able to be retrieved again.</b> If\n needed, in order to generate a new secret select Generate from\n the Client List.\n </p>\n <CopyToClipboardInput value={secret} inputWidth={'400px'} />\n </>\n }\n />\n )}\n </div>\n )\n}\n\nexport default OAuthManagement\n"],"mappings":"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"}
1
+ {"version":3,"file":"OAuthManagement.js","names":[],"sources":["../../../src/components/OAuthClientManagement/OAuthManagement.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport SynapseClient from '@/synapse-client'\nimport { useGetOAuthClientInfinite } from '@/synapse-queries'\nimport MoreVert from '@mui/icons-material/MoreVert'\nimport { useSynapseContext } from '@/utils'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport AddCircleTwoTone from '@mui/icons-material/AddCircleTwoTone'\nimport { Box, Button, Link, IconButton, Menu, MenuItem } from '@mui/material'\nimport { OAuthClient } from '@sage-bionetworks/synapse-client/generated/models/OAuthClient'\nimport {\n createColumnHelper,\n getCoreRowModel,\n Row,\n Table,\n useReactTable,\n} from '@tanstack/react-table'\nimport dayjs from 'dayjs'\nimport { useMemo, useState } from 'react'\nimport CopyToClipboardInput from '../CopyToClipboardInput/CopyToClipboardInput'\nimport { DialogBase } from '../DialogBase'\nimport WarningDialog from '../SynapseForm/WarningDialog'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { displayToast } from '../ToastMessage'\nimport { CreateOAuthModal } from './CreateOAuthClient'\nimport OAuthAclEditorModal from '../OAuthClientAclEditor/OAuthAclEditorModal'\n\nconst columnHelper = createColumnHelper<OAuthClient>()\nfunction getColumns(columnOptions: {\n setIsShowingVerification: (value: boolean) => void\n setSelectedClient: (value: OAuthClient) => void\n setIsShowingSecretWarning: (value: boolean) => void\n setIsEdit: (value: boolean) => void\n setIsShowingCreateClientModal: (value: boolean) => void\n setIsShowingSharingSettings: (value: boolean) => void\n}) {\n const {\n setIsShowingVerification,\n setSelectedClient,\n setIsShowingSecretWarning,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSharingSettings,\n } = columnOptions\n return [\n columnHelper.accessor('createdOn', {\n header: props => <ColumnHeader {...props} title={'Created'} />,\n cell: info => formatDate(dayjs(info.getValue())),\n }),\n columnHelper.accessor('modifiedOn', {\n header: props => <ColumnHeader {...props} title={'Modified'} />,\n cell: info => formatDate(dayjs(info.getValue())),\n }),\n columnHelper.accessor('client_id', {\n header: props => <ColumnHeader {...props} title={'ID'} />,\n }),\n columnHelper.accessor('client_name', {\n header: props => <ColumnHeader {...props} title={'Client'} />,\n }),\n columnHelper.accessor('verified', {\n header: props => <ColumnHeader {...props} title={'Verified'} />,\n cell: ({ getValue }) =>\n getValue() ? (\n 'Yes'\n ) : (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => setIsShowingVerification(true)}\n >\n Submit Verification\n </Button>\n ),\n }),\n columnHelper.display({\n id: 'actions',\n header: props => <ColumnHeader {...props} title={'Actions'} />,\n cell: ({ row }) => (\n <ActionsMenuCell\n row={row}\n setSelectedClient={setSelectedClient}\n setIsEdit={setIsEdit}\n setIsShowingCreateClientModal={setIsShowingCreateClientModal}\n setIsShowingSecretWarning={setIsShowingSecretWarning}\n setIsShowingSharingSettings={setIsShowingSharingSettings}\n />\n ),\n }),\n ]\n}\n\nfunction ActionsMenuCell({\n row,\n setSelectedClient,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSecretWarning,\n setIsShowingSharingSettings,\n}: {\n row: Row<OAuthClient>\n setSelectedClient: (value: OAuthClient) => void\n setIsEdit: (value: boolean) => void\n setIsShowingCreateClientModal: (value: boolean) => void\n setIsShowingSecretWarning: (value: boolean) => void\n setIsShowingSharingSettings: (value: boolean) => void\n}) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const open = Boolean(anchorEl)\n const handleMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n const handleMenuClose = () => {\n setAnchorEl(null)\n }\n return (\n <>\n <IconButton\n aria-label=\"more\"\n aria-controls={`actions-menu-${row.id}`}\n aria-haspopup=\"true\"\n onClick={handleMenuOpen}\n size=\"small\"\n >\n <MoreVert />\n </IconButton>\n <Menu\n id={`actions-menu-${row.id}`}\n anchorEl={anchorEl}\n open={open}\n onClose={handleMenuClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsEdit(true)\n setIsShowingCreateClientModal(true)\n handleMenuClose()\n }}\n >\n Edit\n </MenuItem>\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsShowingSecretWarning(true)\n handleMenuClose()\n }}\n >\n Generate Secret\n </MenuItem>\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsShowingSharingSettings(true)\n handleMenuClose()\n }}\n >\n Sharing Settings\n </MenuItem>\n </Menu>\n </>\n )\n}\n\nexport function OAuthManagement() {\n const { accessToken } = useSynapseContext()\n const [isShowingSharingSettings, setIsShowingSharingSettings] =\n useState(false)\n const [isShowingCreateClientModal, setIsShowingCreateClientModal] =\n useState(false)\n const [isEdit, setIsEdit] = useState<boolean>(false)\n const [selectedClient, setSelectedClient] = useState<OAuthClient>()\n const [isShowingConfirmModal, setIsShowingConfirmModal] = useState(false)\n const [isShowingSecretWarning, setIsShowingSecretWarning] = useState(false)\n const [isShowingSecret, setIsShowingSecret] = useState(false)\n const [secret, setSecret] = useState<string>()\n const [isShowingVerification, setIsShowingVerification] = useState(false)\n\n const { data, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useGetOAuthClientInfinite()\n const oAuthClientList = useMemo(\n () => data?.pages.flatMap(page => page.results || []) || [],\n [data],\n )\n\n const warningHeader = 'Are you absolutely sure?'\n const warningBody =\n 'If you have an existing secret, generating a new secret will make your application invalid after generation. This action cannot be undone.'\n\n const onShowSecret = async () => {\n setIsShowingSecretWarning(false)\n try {\n const secret = await SynapseClient.createOAuthClientSecret(\n accessToken!,\n selectedClient?.client_id!,\n )\n setSelectedClient(undefined)\n setIsShowingSecret(true)\n setSecret(secret.client_secret)\n } catch (err: any) {\n displayToast(err.reason as string, 'danger')\n }\n }\n\n const columns = useMemo(\n () =>\n getColumns({\n setIsShowingVerification,\n setSelectedClient,\n setIsShowingSecretWarning,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSharingSettings,\n }),\n [],\n )\n\n const table: Table<OAuthClient> = useReactTable<OAuthClient>({\n data: oAuthClientList,\n columns,\n getRowId: row => row.client_id!,\n enableRowSelection: true,\n enableSorting: false,\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n })\n\n const isEmpty = !isLoading && table.getRowModel().rows.length === 0\n\n return (\n <div>\n <Box\n sx={{\n display: 'flex',\n width: '100%',\n justifyContent: 'flex-end',\n mb: 2,\n }}\n >\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n setIsShowingCreateClientModal(true)\n setIsEdit(false)\n }}\n sx={{ float: 'right' }}\n startIcon={<AddCircleTwoTone />}\n >\n Create New Client\n </Button>\n </Box>\n <InfiniteTableLayout\n table={<StyledTanStackTable table={table} />}\n isLoading={isLoading}\n isEmpty={isEmpty}\n hasNextPage={hasNextPage}\n onFetchNextPageClicked={() => {\n void fetchNextPage()\n }}\n isFetchingNextPage={isFetchingNextPage}\n />\n <CreateOAuthModal\n onClose={() => {\n setIsShowingCreateClientModal(false)\n }}\n isShowingModal={isShowingCreateClientModal}\n client={isEdit ? selectedClient : undefined}\n isEdit={isEdit}\n setIsShowingConfirmModal={setIsShowingConfirmModal}\n isShowingConfirmModal={isShowingConfirmModal}\n setIsShowingModal={setIsShowingCreateClientModal}\n />\n <DialogBase\n open={isShowingVerification}\n onCancel={() => setIsShowingVerification(false)}\n title=\"Submit Verification\"\n content={\n <>\n <p>\n In order to verify an OAuth client please submit a request to the{' '}\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://sagebionetworks.jira.com/servicedesk/customer/portal/9\"\n >\n Synapse Service Desk.\n </Link>\n </p>\n <b>Please list the following items in your request:</b>\n <ul>\n <li>Your name</li>\n <li>\n The ID of the client to be verified <br />\n </li>\n <li>A description of your application</li>\n </ul>\n {/* <p>\n Verification can take up to X weeks and we will notify you via X.\n </p> */}\n </>\n }\n />\n <OAuthAclEditorModal\n clientId={selectedClient?.client_id!}\n open={isShowingSharingSettings}\n onClose={() => setIsShowingSharingSettings(false)}\n />\n <WarningDialog\n open={isShowingSecretWarning}\n title={warningHeader}\n content={warningBody}\n onCancel={() => {\n setIsShowingSecretWarning(false)\n setSelectedClient(undefined)\n }}\n onConfirm={onShowSecret}\n confirmButtonColor=\"error\"\n confirmButtonText=\"Yes, Continue\"\n />\n {secret && (\n <DialogBase\n open={isShowingSecret}\n title=\"App Secret\"\n onCancel={() => {\n setIsShowingSecret(false)\n setSecret(undefined)\n }}\n content={\n <>\n <p>\n <b>This secret will not be able to be retrieved again.</b> If\n needed, in order to generate a new secret select Generate from\n the Client List.\n </p>\n <CopyToClipboardInput value={secret} inputWidth={'400px'} />\n </>\n }\n />\n )}\n </div>\n )\n}\n\nexport default OAuthManagement\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PortalCard.d.ts","sourceRoot":"","sources":["../../../src/components/PortalList/PortalCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAsBzD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,SAAS,CAyJvE;AAED,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"PortalCard.d.ts","sourceRoot":"","sources":["../../../src/components/PortalList/PortalCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAuBzD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,SAAS,CAyJvE;AAED,eAAe,UAAU,CAAA"}
@@ -8,8 +8,9 @@ import a from "../PortalAclEditor/PortalAclEditorModal.js";
8
8
  import { useState as o } from "react";
9
9
  import { Box as s, Card as c, CardContent as l, IconButton as u, Link as d, Typography as f } from "@mui/material";
10
10
  import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
11
- import { Delete as g, Settings as _ } from "@mui/icons-material";
12
- import v from "dayjs";
11
+ import g from "dayjs";
12
+ import _ from "@mui/icons-material/Settings";
13
+ import v from "@mui/icons-material/Delete";
13
14
  //#region src/components/PortalList/PortalCard.tsx
14
15
  var y = "1";
15
16
  function b({ portal: b }) {
@@ -46,7 +47,7 @@ function b({ portal: b }) {
46
47
  "aria-label": "Delete portal",
47
48
  title: "Delete portal",
48
49
  color: "error",
49
- children: /* @__PURE__ */ m(g, { fontSize: "small" })
50
+ children: /* @__PURE__ */ m(v, { fontSize: "small" })
50
51
  })]
51
52
  })]
52
53
  }), C && /* @__PURE__ */ m(d, {
@@ -85,7 +86,7 @@ function b({ portal: b }) {
85
86
  T && /* @__PURE__ */ h(f, {
86
87
  variant: "caption",
87
88
  color: "text.secondary",
88
- children: ["on ", v(T).format("MMMM D, YYYY")]
89
+ children: ["on ", g(T).format("MMMM D, YYYY")]
89
90
  })
90
91
  ]
91
92
  }),
@@ -106,7 +107,7 @@ function b({ portal: b }) {
106
107
  D && /* @__PURE__ */ h(f, {
107
108
  variant: "caption",
108
109
  color: "text.secondary",
109
- children: ["on ", v(D).format("MMMM D, YYYY")]
110
+ children: ["on ", g(D).format("MMMM D, YYYY")]
110
111
  })
111
112
  ]
112
113
  })
@@ -1 +1 @@
1
- {"version":3,"file":"PortalCard.js","names":[],"sources":["../../../src/components/PortalList/PortalCard.tsx"],"sourcesContent":["import { Portal } from '@sage-bionetworks/synapse-client'\nimport {\n Card,\n CardContent,\n Typography,\n Box,\n Link as MuiLink,\n IconButton,\n} from '@mui/material'\nimport styles from './PortalCard.module.scss'\nimport UserCard from '../UserCard/UserCard'\nimport dayjs from 'dayjs'\nimport { useState } from 'react'\nimport PortalAclEditorModal from '../PortalAclEditor/PortalAclEditorModal'\nimport { Settings, Delete } from '@mui/icons-material'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport { useDeletePortal } from '@/synapse-queries/portal/usePortal'\nimport { displayToast } from '../ToastMessage'\n\n// Synapse itself is portal ID 1 and should not have ACL management\nconst SYNAPSE_PORTAL_ID = '1'\n\nexport type PortalCardProps = {\n portal: Portal\n}\n\nexport function PortalCard({ portal }: PortalCardProps): React.ReactNode {\n const { id, name, url, createdBy, createdOn, modifiedBy, modifiedOn } = portal\n const [isAclEditorOpen, setIsAclEditorOpen] = useState(false)\n const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false)\n const showAclEditor = id && id !== SYNAPSE_PORTAL_ID\n const showDeleteButton = id && id !== SYNAPSE_PORTAL_ID\n\n const { mutate: deletePortal } = useDeletePortal({\n onSuccess: () => {\n displayToast(`Portal \"${name}\" was successfully deleted`, 'success')\n setIsDeleteDialogOpen(false)\n },\n onError: error => {\n displayToast(`Failed to delete portal: ${error.reason}`, 'danger')\n },\n })\n\n return (\n <>\n <Card className={styles.portalCard}>\n <CardContent>\n <Box className={styles.header}>\n <Box className={styles.titleRow}>\n <Typography variant=\"h6\" component=\"h3\">\n {name}\n </Typography>\n <Box className={styles.actions}>\n {showAclEditor && (\n <IconButton\n size=\"small\"\n onClick={() => setIsAclEditorOpen(true)}\n aria-label=\"Manage portal permissions\"\n title=\"Manage portal permissions\"\n >\n <Settings fontSize=\"small\" />\n </IconButton>\n )}\n {showDeleteButton && (\n <IconButton\n size=\"small\"\n onClick={() => setIsDeleteDialogOpen(true)}\n aria-label=\"Delete portal\"\n title=\"Delete portal\"\n color=\"error\"\n >\n <Delete fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n </Box>\n {url && (\n <MuiLink\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.url}\n >\n {url}\n </MuiLink>\n )}\n </Box>\n\n <Box className={styles.metadata}>\n {id && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n <strong>ID:</strong> {id}\n </Typography>\n )}\n\n {createdBy && (\n <Box className={styles.userInfo}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n <strong>Created by:</strong>\n </Typography>\n <UserCard\n ownerId={createdBy}\n size=\"SMALL USER CARD\"\n hideEmail\n disableLink={false}\n />\n {createdOn && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n on {dayjs(createdOn).format('MMMM D, YYYY')}\n </Typography>\n )}\n </Box>\n )}\n\n {modifiedBy && (\n <Box className={styles.userInfo}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n <strong>Last modified by:</strong>\n </Typography>\n <UserCard\n ownerId={modifiedBy}\n size=\"SMALL USER CARD\"\n hideEmail\n disableLink={false}\n />\n {modifiedOn && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n on {dayjs(modifiedOn).format('MMMM D, YYYY')}\n </Typography>\n )}\n </Box>\n )}\n </Box>\n </CardContent>\n </Card>\n\n {showAclEditor && id && (\n <PortalAclEditorModal\n portalId={id}\n open={isAclEditorOpen}\n onClose={() => setIsAclEditorOpen(false)}\n />\n )}\n\n {id && (\n <ConfirmationDialog\n open={isDeleteDialogOpen}\n title=\"Delete Portal\"\n content={\n <Box>\n <Typography variant=\"body1\" sx={{ mb: 2 }}>\n Are you sure you want to delete this portal?\n </Typography>\n <Typography variant=\"body2\" sx={{ mb: 1 }}>\n <strong>Name:</strong> {name}\n </Typography>\n {url && (\n <Typography variant=\"body2\">\n <strong>URL:</strong> {url}\n </Typography>\n )}\n </Box>\n }\n confirmButtonProps={{\n children: 'Delete',\n color: 'error',\n variant: 'contained',\n }}\n onConfirm={() => {\n if (id) {\n deletePortal(id)\n }\n }}\n onCancel={() => setIsDeleteDialogOpen(false)}\n maxWidth=\"sm\"\n />\n )}\n </>\n )\n}\n\nexport default PortalCard\n"],"mappings":"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"}
1
+ {"version":3,"file":"PortalCard.js","names":[],"sources":["../../../src/components/PortalList/PortalCard.tsx"],"sourcesContent":["import { Portal } from '@sage-bionetworks/synapse-client'\nimport {\n Card,\n CardContent,\n Typography,\n Box,\n Link as MuiLink,\n IconButton,\n} from '@mui/material'\nimport styles from './PortalCard.module.scss'\nimport UserCard from '../UserCard/UserCard'\nimport dayjs from 'dayjs'\nimport { useState } from 'react'\nimport PortalAclEditorModal from '../PortalAclEditor/PortalAclEditorModal'\nimport Settings from '@mui/icons-material/Settings'\nimport Delete from '@mui/icons-material/Delete'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport { useDeletePortal } from '@/synapse-queries/portal/usePortal'\nimport { displayToast } from '../ToastMessage'\n\n// Synapse itself is portal ID 1 and should not have ACL management\nconst SYNAPSE_PORTAL_ID = '1'\n\nexport type PortalCardProps = {\n portal: Portal\n}\n\nexport function PortalCard({ portal }: PortalCardProps): React.ReactNode {\n const { id, name, url, createdBy, createdOn, modifiedBy, modifiedOn } = portal\n const [isAclEditorOpen, setIsAclEditorOpen] = useState(false)\n const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false)\n const showAclEditor = id && id !== SYNAPSE_PORTAL_ID\n const showDeleteButton = id && id !== SYNAPSE_PORTAL_ID\n\n const { mutate: deletePortal } = useDeletePortal({\n onSuccess: () => {\n displayToast(`Portal \"${name}\" was successfully deleted`, 'success')\n setIsDeleteDialogOpen(false)\n },\n onError: error => {\n displayToast(`Failed to delete portal: ${error.reason}`, 'danger')\n },\n })\n\n return (\n <>\n <Card className={styles.portalCard}>\n <CardContent>\n <Box className={styles.header}>\n <Box className={styles.titleRow}>\n <Typography variant=\"h6\" component=\"h3\">\n {name}\n </Typography>\n <Box className={styles.actions}>\n {showAclEditor && (\n <IconButton\n size=\"small\"\n onClick={() => setIsAclEditorOpen(true)}\n aria-label=\"Manage portal permissions\"\n title=\"Manage portal permissions\"\n >\n <Settings fontSize=\"small\" />\n </IconButton>\n )}\n {showDeleteButton && (\n <IconButton\n size=\"small\"\n onClick={() => setIsDeleteDialogOpen(true)}\n aria-label=\"Delete portal\"\n title=\"Delete portal\"\n color=\"error\"\n >\n <Delete fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n </Box>\n {url && (\n <MuiLink\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.url}\n >\n {url}\n </MuiLink>\n )}\n </Box>\n\n <Box className={styles.metadata}>\n {id && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n <strong>ID:</strong> {id}\n </Typography>\n )}\n\n {createdBy && (\n <Box className={styles.userInfo}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n <strong>Created by:</strong>\n </Typography>\n <UserCard\n ownerId={createdBy}\n size=\"SMALL USER CARD\"\n hideEmail\n disableLink={false}\n />\n {createdOn && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n on {dayjs(createdOn).format('MMMM D, YYYY')}\n </Typography>\n )}\n </Box>\n )}\n\n {modifiedBy && (\n <Box className={styles.userInfo}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n <strong>Last modified by:</strong>\n </Typography>\n <UserCard\n ownerId={modifiedBy}\n size=\"SMALL USER CARD\"\n hideEmail\n disableLink={false}\n />\n {modifiedOn && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n on {dayjs(modifiedOn).format('MMMM D, YYYY')}\n </Typography>\n )}\n </Box>\n )}\n </Box>\n </CardContent>\n </Card>\n\n {showAclEditor && id && (\n <PortalAclEditorModal\n portalId={id}\n open={isAclEditorOpen}\n onClose={() => setIsAclEditorOpen(false)}\n />\n )}\n\n {id && (\n <ConfirmationDialog\n open={isDeleteDialogOpen}\n title=\"Delete Portal\"\n content={\n <Box>\n <Typography variant=\"body1\" sx={{ mb: 2 }}>\n Are you sure you want to delete this portal?\n </Typography>\n <Typography variant=\"body2\" sx={{ mb: 1 }}>\n <strong>Name:</strong> {name}\n </Typography>\n {url && (\n <Typography variant=\"body2\">\n <strong>URL:</strong> {url}\n </Typography>\n )}\n </Box>\n }\n confirmButtonProps={{\n children: 'Delete',\n color: 'error',\n variant: 'contained',\n }}\n onConfirm={() => {\n if (id) {\n deletePortal(id)\n }\n }}\n onCancel={() => setIsDeleteDialogOpen(false)}\n maxWidth=\"sm\"\n />\n )}\n </>\n )\n}\n\nexport default PortalCard\n"],"mappings":"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"}
@@ -5,11 +5,11 @@ import r from "./PortalList.module.js";
5
5
  import { Fragment as i, useEffect as a, useState as o } from "react";
6
6
  import { Alert as s, Box as c, Button as l, CircularProgress as u, Typography as d } from "@mui/material";
7
7
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
8
- import { Add as m } from "@mui/icons-material";
9
- import { useInView as h } from "react-intersection-observer";
8
+ import { useInView as m } from "react-intersection-observer";
9
+ import h from "@mui/icons-material/Add";
10
10
  //#region src/components/PortalList/PortalList.tsx
11
11
  function g() {
12
- let { ref: g, inView: _ } = h(), [v, y] = o(!1), { data: b, status: x, error: S, isLoading: C, hasNextPage: w, isFetchingNextPage: T, fetchNextPage: E } = e({ throwOnError: !1 });
12
+ let { ref: g, inView: _ } = m(), [v, y] = o(!1), { data: b, status: x, error: S, isLoading: C, hasNextPage: w, isFetchingNextPage: T, fetchNextPage: E } = e({ throwOnError: !1 });
13
13
  a(() => {
14
14
  x === "success" && !T && w && E && _ && E();
15
15
  }, [
@@ -37,7 +37,7 @@ function g() {
37
37
  }), /* @__PURE__ */ f(l, {
38
38
  variant: "contained",
39
39
  color: "primary",
40
- startIcon: /* @__PURE__ */ f(m, {}),
40
+ startIcon: /* @__PURE__ */ f(h, {}),
41
41
  onClick: () => y(!0),
42
42
  children: "Create New Portal"
43
43
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"PortalList.js","names":[],"sources":["../../../src/components/PortalList/PortalList.tsx"],"sourcesContent":["import { useListPortalsInfinite } from '@/synapse-queries/portal/useListPortals'\nimport { Box, Typography, CircularProgress, Alert, Button } from '@mui/material'\nimport { Fragment, useEffect, useState } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport PortalCard from './PortalCard'\nimport CreatePortalModal from './CreatePortalModal'\nimport styles from './PortalList.module.scss'\nimport { Add } from '@mui/icons-material'\n\nexport function PortalList(): React.ReactNode {\n const { ref, inView } = useInView()\n const [isCreateModalOpen, setIsCreateModalOpen] = useState(false)\n\n const {\n data,\n status,\n error,\n isLoading,\n hasNextPage,\n isFetchingNextPage,\n fetchNextPage,\n } = useListPortalsInfinite({\n throwOnError: false,\n })\n\n useEffect(() => {\n if (\n status === 'success' &&\n !isFetchingNextPage &&\n hasNextPage &&\n fetchNextPage &&\n inView\n ) {\n fetchNextPage()\n }\n }, [status, hasNextPage, isFetchingNextPage, fetchNextPage, inView])\n\n const allPortals = data?.pages.flatMap(page => page.page ?? []) ?? []\n\n if (error) {\n return (\n <Alert severity=\"error\" className={styles.errorAlert}>\n Error loading portals: {error.message}\n </Alert>\n )\n }\n\n return (\n <Box className={styles.portalListContainer}>\n <Box className={styles.header}>\n <Typography variant=\"h4\" component=\"h2\" className={styles.title}>\n Portals\n </Typography>\n <Button\n variant=\"contained\"\n color=\"primary\"\n startIcon={<Add />}\n onClick={() => setIsCreateModalOpen(true)}\n >\n Create New Portal\n </Button>\n </Box>\n\n {isLoading && (\n <Box className={styles.loadingContainer}>\n <CircularProgress />\n </Box>\n )}\n\n {!isLoading && allPortals.length === 0 && (\n <Typography variant=\"body1\" color=\"text.secondary\">\n No portals found.\n </Typography>\n )}\n\n {allPortals.length > 0 && (\n <Box className={styles.portalGrid}>\n {allPortals.map(portal => (\n <Fragment key={portal.id ?? JSON.stringify(portal)}>\n <PortalCard portal={portal} />\n </Fragment>\n ))}\n </Box>\n )}\n\n {/* Trigger for loading next page */}\n {hasNextPage && <div ref={ref} className={styles.loadMoreTrigger} />}\n\n {isFetchingNextPage && (\n <Box className={styles.loadingMoreContainer}>\n <CircularProgress size={32} />\n </Box>\n )}\n\n <CreatePortalModal\n open={isCreateModalOpen}\n onClose={() => setIsCreateModalOpen(false)}\n />\n </Box>\n )\n}\n\nexport default PortalList\n"],"mappings":";;;;;;;;;;AASA,SAAgB,IAA8B;CAC5C,IAAM,EAAE,QAAK,cAAW,EAAU,GAC5B,CAAC,GAAmB,KAAwB,EAAS,EAAK,GAE1D,EACJ,SACA,WACA,UACA,cACA,gBACA,uBACA,qBACE,EAAuB,EACzB,cAAc,GAChB,CAAC;CAED,QAAgB;EACd,AACE,MAAW,aACX,CAAC,KACD,KACA,KACA,KAEA,EAAc;CAElB,GAAG;EAAC;EAAQ;EAAa;EAAoB;EAAe;CAAM,CAAC;CAEnE,IAAM,IAAa,GAAM,MAAM,SAAQ,MAAQ,EAAK,QAAQ,CAAC,CAAC,KAAK,CAAC;CAUpE,OARI,IAEA,kBAAC,GAAD;EAAO,UAAS;EAAQ,WAAW,EAAO;YAA1C,CAAsD,2BAC5B,EAAM,OACzB;MAKT,kBAAC,GAAD;EAAK,WAAW,EAAO;YAAvB;GACE,kBAAC,GAAD;IAAK,WAAW,EAAO;cAAvB,CACE,kBAAC,GAAD;KAAY,SAAQ;KAAK,WAAU;KAAK,WAAW,EAAO;eAAO;IAErD,CAAA,GACZ,kBAAC,GAAD;KACE,SAAQ;KACR,OAAM;KACN,WAAW,kBAAC,GAAD,CAAM,CAAA;KACjB,eAAe,EAAqB,EAAI;eACzC;IAEO,CAAA,CACL;;GAEJ,KACC,kBAAC,GAAD;IAAK,WAAW,EAAO;cACrB,kBAAC,GAAD,CAAmB,CAAA;GAChB,CAAA;GAGN,CAAC,KAAa,EAAW,WAAW,KACnC,kBAAC,GAAD;IAAY,SAAQ;IAAQ,OAAM;cAAiB;GAEvC,CAAA;GAGb,EAAW,SAAS,KACnB,kBAAC,GAAD;IAAK,WAAW,EAAO;cACpB,EAAW,KAAI,MACd,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAoB,UAAS,CAAA,EACrB,GAFK,EAAO,MAAM,KAAK,UAAU,CAAM,CAEvC,CACX;GACE,CAAA;GAIN,KAAe,kBAAC,OAAD;IAAU;IAAK,WAAW,EAAO;GAAkB,CAAA;GAElE,KACC,kBAAC,GAAD;IAAK,WAAW,EAAO;cACrB,kBAAC,GAAD,EAAkB,MAAM,GAAK,CAAA;GAC1B,CAAA;GAGP,kBAAC,GAAD;IACE,MAAM;IACN,eAAe,EAAqB,EAAK;GAC1C,CAAA;EACE;;AAET"}
1
+ {"version":3,"file":"PortalList.js","names":[],"sources":["../../../src/components/PortalList/PortalList.tsx"],"sourcesContent":["import { useListPortalsInfinite } from '@/synapse-queries/portal/useListPortals'\nimport { Box, Typography, CircularProgress, Alert, Button } from '@mui/material'\nimport { Fragment, useEffect, useState } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport PortalCard from './PortalCard'\nimport CreatePortalModal from './CreatePortalModal'\nimport styles from './PortalList.module.scss'\nimport Add from '@mui/icons-material/Add'\n\nexport function PortalList(): React.ReactNode {\n const { ref, inView } = useInView()\n const [isCreateModalOpen, setIsCreateModalOpen] = useState(false)\n\n const {\n data,\n status,\n error,\n isLoading,\n hasNextPage,\n isFetchingNextPage,\n fetchNextPage,\n } = useListPortalsInfinite({\n throwOnError: false,\n })\n\n useEffect(() => {\n if (\n status === 'success' &&\n !isFetchingNextPage &&\n hasNextPage &&\n fetchNextPage &&\n inView\n ) {\n fetchNextPage()\n }\n }, [status, hasNextPage, isFetchingNextPage, fetchNextPage, inView])\n\n const allPortals = data?.pages.flatMap(page => page.page ?? []) ?? []\n\n if (error) {\n return (\n <Alert severity=\"error\" className={styles.errorAlert}>\n Error loading portals: {error.message}\n </Alert>\n )\n }\n\n return (\n <Box className={styles.portalListContainer}>\n <Box className={styles.header}>\n <Typography variant=\"h4\" component=\"h2\" className={styles.title}>\n Portals\n </Typography>\n <Button\n variant=\"contained\"\n color=\"primary\"\n startIcon={<Add />}\n onClick={() => setIsCreateModalOpen(true)}\n >\n Create New Portal\n </Button>\n </Box>\n\n {isLoading && (\n <Box className={styles.loadingContainer}>\n <CircularProgress />\n </Box>\n )}\n\n {!isLoading && allPortals.length === 0 && (\n <Typography variant=\"body1\" color=\"text.secondary\">\n No portals found.\n </Typography>\n )}\n\n {allPortals.length > 0 && (\n <Box className={styles.portalGrid}>\n {allPortals.map(portal => (\n <Fragment key={portal.id ?? JSON.stringify(portal)}>\n <PortalCard portal={portal} />\n </Fragment>\n ))}\n </Box>\n )}\n\n {/* Trigger for loading next page */}\n {hasNextPage && <div ref={ref} className={styles.loadMoreTrigger} />}\n\n {isFetchingNextPage && (\n <Box className={styles.loadingMoreContainer}>\n <CircularProgress size={32} />\n </Box>\n )}\n\n <CreatePortalModal\n open={isCreateModalOpen}\n onClose={() => setIsCreateModalOpen(false)}\n />\n </Box>\n )\n}\n\nexport default PortalList\n"],"mappings":";;;;;;;;;;AASA,SAAgB,IAA8B;CAC5C,IAAM,EAAE,QAAK,cAAW,EAAU,GAC5B,CAAC,GAAmB,KAAwB,EAAS,EAAK,GAE1D,EACJ,SACA,WACA,UACA,cACA,gBACA,uBACA,qBACE,EAAuB,EACzB,cAAc,GAChB,CAAC;CAED,QAAgB;EACd,AACE,MAAW,aACX,CAAC,KACD,KACA,KACA,KAEA,EAAc;CAElB,GAAG;EAAC;EAAQ;EAAa;EAAoB;EAAe;CAAM,CAAC;CAEnE,IAAM,IAAa,GAAM,MAAM,SAAQ,MAAQ,EAAK,QAAQ,CAAC,CAAC,KAAK,CAAC;CAUpE,OARI,IAEA,kBAAC,GAAD;EAAO,UAAS;EAAQ,WAAW,EAAO;YAA1C,CAAsD,2BAC5B,EAAM,OACzB;MAKT,kBAAC,GAAD;EAAK,WAAW,EAAO;YAAvB;GACE,kBAAC,GAAD;IAAK,WAAW,EAAO;cAAvB,CACE,kBAAC,GAAD;KAAY,SAAQ;KAAK,WAAU;KAAK,WAAW,EAAO;eAAO;IAErD,CAAA,GACZ,kBAAC,GAAD;KACE,SAAQ;KACR,OAAM;KACN,WAAW,kBAAC,GAAD,CAAM,CAAA;KACjB,eAAe,EAAqB,EAAI;eACzC;IAEO,CAAA,CACL;;GAEJ,KACC,kBAAC,GAAD;IAAK,WAAW,EAAO;cACrB,kBAAC,GAAD,CAAmB,CAAA;GAChB,CAAA;GAGN,CAAC,KAAa,EAAW,WAAW,KACnC,kBAAC,GAAD;IAAY,SAAQ;IAAQ,OAAM;cAAiB;GAEvC,CAAA;GAGb,EAAW,SAAS,KACnB,kBAAC,GAAD;IAAK,WAAW,EAAO;cACpB,EAAW,KAAI,MACd,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAoB,UAAS,CAAA,EACrB,GAFK,EAAO,MAAM,KAAK,UAAU,CAAM,CAEvC,CACX;GACE,CAAA;GAIN,KAAe,kBAAC,OAAD;IAAU;IAAK,WAAW,EAAO;GAAkB,CAAA;GAElE,KACC,kBAAC,GAAD;IAAK,WAAW,EAAO;cACrB,kBAAC,GAAD,EAAkB,MAAM,GAAK,CAAA;GAC1B,CAAA;GAGP,kBAAC,GAAD;IACE,MAAM;IACN,eAAe,EAAqB,EAAK;GAC1C,CAAA;EACE;;AAET"}
@@ -4,9 +4,9 @@ import "../../synapse-queries/index.js";
4
4
  import { getProjectVisibilityFromACL as n } from "./getProjectVisibilityFromACL.js";
5
5
  import { Chip as r, Skeleton as i, Typography as a } from "@mui/material";
6
6
  import { jsx as o } from "react/jsx-runtime";
7
- import s from "@mui/icons-material/VisibilityOutlined";
8
- import c from "@mui/icons-material/LanguageOutlined";
9
- import l from "@mui/icons-material/LockOutlined";
7
+ import s from "@mui/icons-material/LockOutlined";
8
+ import c from "@mui/icons-material/VisibilityOutlined";
9
+ import l from "@mui/icons-material/LanguageOutlined";
10
10
  //#region src/components/ProjectVisibilityChip/ProjectVisibilityChip.tsx
11
11
  var u = {
12
12
  fill: "var(--synapse-gray-900)",
@@ -15,17 +15,17 @@ var u = {
15
15
  PRIVATE: {
16
16
  label: "Private Project",
17
17
  color: "#FAC3C3",
18
- icon: /* @__PURE__ */ o(l, { sx: u })
18
+ icon: /* @__PURE__ */ o(s, { sx: u })
19
19
  },
20
20
  DISCOVERABLE: {
21
21
  label: "Discoverable Project",
22
22
  color: "#FDEFC1",
23
- icon: /* @__PURE__ */ o(s, { sx: u })
23
+ icon: /* @__PURE__ */ o(c, { sx: u })
24
24
  },
25
25
  PUBLIC: {
26
26
  label: "Public Project",
27
27
  color: "#D4EFD4",
28
- icon: /* @__PURE__ */ o(c, { sx: u })
28
+ icon: /* @__PURE__ */ o(l, { sx: u })
29
29
  }
30
30
  };
31
31
  function f({ visibility: e }) {
@@ -8,11 +8,11 @@ import { QBDragHandle as u } from "./QBDragHandle.js";
8
8
  import { useCallback as d, useMemo as f, useState as p } from "react";
9
9
  import { Autocomplete as m, IconButton as h, InputLabel as g, MenuItem as _, Select as v, TextField as y, ToggleButton as b, ToggleButtonGroup as x, Tooltip as S } from "@mui/material";
10
10
  import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
11
- import { useSortable as E } from "@dnd-kit/react/sortable";
12
- import D from "@mui/icons-material/DeleteOutline";
11
+ import E from "@mui/icons-material/DeleteOutline";
12
+ import { useSortable as D } from "@dnd-kit/react/sortable";
13
13
  //#region src/components/QueryBuilder/FilterConditionRow.tsx
14
14
  function O(e) {
15
- let { condition: i, parentGroupId: d, index: p } = e, { columnModels: b, facetResults: x, onlyFacetedColumns: O, getColumnDisplayName: A, updateConditionAt: j, removeConditionAt: P } = s(), { ref: F, handleRef: I, isDragSource: L } = E({
15
+ let { condition: i, parentGroupId: d, index: p } = e, { columnModels: b, facetResults: x, onlyFacetedColumns: O, getColumnDisplayName: A, updateConditionAt: j, removeConditionAt: P } = s(), { ref: F, handleRef: I, isDragSource: L } = D({
16
16
  id: i.id,
17
17
  index: p,
18
18
  group: d,
@@ -45,7 +45,7 @@ function O(e) {
45
45
  className: c.remove,
46
46
  "aria-label": "Remove condition",
47
47
  onClick: () => P(i.id),
48
- children: /* @__PURE__ */ w(D, { fontSize: "small" })
48
+ children: /* @__PURE__ */ w(E, { fontSize: "small" })
49
49
  })
50
50
  }),
51
51
  /* @__PURE__ */ w(m, {
@@ -4,11 +4,11 @@ import t from "../../synapse-queries/entity/useGetQueryResultBundle.js";
4
4
  import n from "react";
5
5
  import { Box as r, Button as i } from "@mui/material";
6
6
  import { jsx as a } from "react/jsx-runtime";
7
- import { NavigateNext as o } from "@mui/icons-material";
8
- import { Link as s, useInRouterContext as c } from "react-router";
7
+ import { Link as o, useInRouterContext as s } from "react-router";
8
+ import c from "@mui/icons-material/NavigateNext";
9
9
  //#region src/components/QueryCountButton/QueryCountButton.tsx
10
10
  function l(l) {
11
- let { sql: u, href: d, prefixText: f = "", suffixText: p = "", ...m } = l, h = e(u), g = c(), { data: _, isLoading: v } = t({
11
+ let { sql: u, href: d, prefixText: f = "", suffixText: p = "", ...m } = l, h = e(u), g = s(), { data: _, isLoading: v } = t({
12
12
  concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest",
13
13
  query: { sql: u },
14
14
  entityId: h,
@@ -21,7 +21,7 @@ function l(l) {
21
21
  component: "a"
22
22
  } : g ? {
23
23
  to: d,
24
- component: s
24
+ component: o
25
25
  } : {
26
26
  href: d,
27
27
  component: "a"
@@ -44,7 +44,7 @@ function l(l) {
44
44
  width: 24,
45
45
  height: 24
46
46
  },
47
- children: /* @__PURE__ */ a(o, { sx: {
47
+ children: /* @__PURE__ */ a(c, { sx: {
48
48
  color: "primary.main",
49
49
  fontSize: 20
50
50
  } })