synapse-react-client 4.0.25 → 4.0.27

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 (405) hide show
  1. package/dist/SWC.index.d.ts +3 -2
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +4 -3
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/assets/icons/FileCopy.d.ts +5 -0
  6. package/dist/assets/icons/FileCopy.d.ts.map +1 -0
  7. package/dist/assets/icons/FileCopy.js +13 -0
  8. package/dist/assets/icons/FileCopy.js.map +1 -0
  9. package/dist/assets/icons/NIHIcon.d.ts +4 -0
  10. package/dist/assets/icons/NIHIcon.d.ts.map +1 -0
  11. package/dist/assets/icons/NIHIcon.js +14 -0
  12. package/dist/assets/icons/NIHIcon.js.map +1 -0
  13. package/dist/assets/icons/fileCopy.svg +8 -0
  14. package/dist/assets/icons/fileCopy2.js +33 -0
  15. package/dist/assets/icons/fileCopy2.js.map +1 -0
  16. package/dist/assets/icons/nih.js +35 -0
  17. package/dist/assets/icons/nih.js.map +1 -0
  18. package/dist/assets/icons/nih.svg +9 -0
  19. package/dist/assets/illustrations/compute_illustration.js +485 -0
  20. package/dist/assets/illustrations/compute_illustration.js.map +1 -0
  21. package/dist/assets/illustrations/compute_illustration.svg +204 -0
  22. package/dist/assets/illustrations/curate_data_illustration.js +479 -0
  23. package/dist/assets/illustrations/curate_data_illustration.js.map +1 -0
  24. package/dist/assets/illustrations/curate_data_illustration.svg +91 -0
  25. package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js +1 -1
  26. package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js +1 -1
  27. package/dist/components/Authentication/AuthenticationMethodSelection.d.ts +1 -0
  28. package/dist/components/Authentication/AuthenticationMethodSelection.d.ts.map +1 -1
  29. package/dist/components/Authentication/AuthenticationMethodSelection.js +17 -10
  30. package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
  31. package/dist/components/Authentication/LastLoginInfo.d.ts +2 -2
  32. package/dist/components/Authentication/LoginForm.d.ts +1 -0
  33. package/dist/components/Authentication/LoginForm.d.ts.map +1 -1
  34. package/dist/components/Authentication/LoginForm.js +3 -2
  35. package/dist/components/Authentication/LoginForm.js.map +1 -1
  36. package/dist/components/Authentication/LoginMethod.d.ts +2 -2
  37. package/dist/components/Authentication/LoginMethod.d.ts.map +1 -1
  38. package/dist/components/Authentication/LoginMethod.js +10 -8
  39. package/dist/components/Authentication/LoginMethod.js.map +1 -1
  40. package/dist/components/Authentication/StandaloneLoginForm.d.ts +1 -0
  41. package/dist/components/Authentication/StandaloneLoginForm.d.ts.map +1 -1
  42. package/dist/components/Authentication/StandaloneLoginForm.js +16 -15
  43. package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
  44. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +0 -2
  45. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  46. package/dist/components/Breadcrumbs/Breadcrumbs.js +24 -30
  47. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  48. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js +1 -1
  49. package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js +1 -1
  50. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +1 -1
  51. package/dist/components/ChangePassword/ChangePassword.js +1 -1
  52. package/dist/components/CopyToClipboardString/CopyToClipboardString.d.ts +3 -2
  53. package/dist/components/CopyToClipboardString/CopyToClipboardString.d.ts.map +1 -1
  54. package/dist/components/CopyToClipboardString/CopyToClipboardString.js +27 -18
  55. package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
  56. package/dist/components/DataExplorer/DataExplorer.css +1 -1
  57. package/dist/components/DataExplorer/DataExplorer.d.ts +16 -2
  58. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
  59. package/dist/components/DataExplorer/DataExplorer.js +82 -75
  60. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  61. package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
  62. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
  63. package/dist/components/DataExplorer/DataExplorer.module.scss +1 -1
  64. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  65. package/dist/components/DataGrid/SynapseGrid.js +2 -5
  66. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  67. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts +35 -0
  68. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -0
  69. package/dist/components/DataGrid/SyncGridWithSourceButton.js +115 -0
  70. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -0
  71. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  72. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +14 -1
  73. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  74. package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts +2 -0
  75. package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts.map +1 -1
  76. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  77. package/dist/components/DataGrid/useMergeGridWithSource.d.ts +12 -7
  78. package/dist/components/DataGrid/useMergeGridWithSource.d.ts.map +1 -1
  79. package/dist/components/DataGrid/useMergeGridWithSource.js +31 -25
  80. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  81. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  82. package/dist/components/DataGrid/utils/columnFactory.js +15 -19
  83. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  84. package/dist/components/DownloadCart/DownloadListTable.js +1 -1
  85. package/dist/components/DynamicForm/DynamicForm.js +1 -1
  86. package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
  87. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js +1 -1
  88. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
  89. package/dist/components/EntityFinder/EntityIdTextField.d.ts +1 -0
  90. package/dist/components/EntityFinder/EntityIdTextField.d.ts.map +1 -1
  91. package/dist/components/EntityFinder/EntityIdTextField.js +7 -6
  92. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  93. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +1 -1
  94. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
  95. package/dist/components/EntitySidebar/EntitySidebar.css +1 -1
  96. package/dist/components/EntitySidebar/EntitySidebar.d.ts.map +1 -1
  97. package/dist/components/EntitySidebar/EntitySidebar.js +47 -39
  98. package/dist/components/EntitySidebar/EntitySidebar.js.map +1 -1
  99. package/dist/components/EntitySidebar/EntitySidebar.module.js +11 -11
  100. package/dist/components/EntitySidebar/EntitySidebar.module.js.map +1 -1
  101. package/dist/components/EntitySidebar/EntitySidebar.module.scss +6 -6
  102. package/dist/components/FieldDescription/FieldDescription.css +1 -0
  103. package/dist/components/FieldDescription/FieldDescription.d.ts +15 -0
  104. package/dist/components/FieldDescription/FieldDescription.d.ts.map +1 -0
  105. package/dist/components/FieldDescription/FieldDescription.js +13 -0
  106. package/dist/components/FieldDescription/FieldDescription.js.map +1 -0
  107. package/dist/components/FieldDescription/FieldDescription.module.js +5 -0
  108. package/dist/components/FieldDescription/FieldDescription.module.js.map +1 -0
  109. package/dist/components/FieldDescription/FieldDescription.module.scss +8 -0
  110. package/dist/components/FieldDescription/index.d.ts +3 -0
  111. package/dist/components/FieldDescription/index.d.ts.map +1 -0
  112. package/dist/components/FieldDescription/index.js +2 -0
  113. package/dist/components/GenericCard/TableRowGenericCard.d.ts +2 -1
  114. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  115. package/dist/components/GenericCard/TableRowGenericCard.js +3 -2
  116. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  117. package/dist/components/HeaderCard.d.ts.map +1 -1
  118. package/dist/components/HeaderCard.js +4 -0
  119. package/dist/components/HeaderCard.js.map +1 -1
  120. package/dist/components/HexGrid/HexGrid.d.ts +2 -1
  121. package/dist/components/HexGrid/HexGrid.d.ts.map +1 -1
  122. package/dist/components/HexGrid/HexGrid.js +13 -13
  123. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  124. package/dist/components/IconSvg/IconSvg.d.ts +1 -1
  125. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  126. package/dist/components/IconSvg/IconSvg.js +216 -212
  127. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  128. package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js +1 -1
  129. package/dist/components/OAuthClientManagement/OAuthManagement.js +1 -1
  130. package/dist/components/PortalAclEditor/PortalAclEditorModal.js +1 -1
  131. package/dist/components/PortalList/CreatePortalModal.js +1 -1
  132. package/dist/components/PortalList/PortalCard.js +1 -1
  133. package/dist/components/ProjectInfo/ProjectInfo.css +1 -0
  134. package/dist/components/ProjectInfo/ProjectInfo.d.ts +5 -0
  135. package/dist/components/ProjectInfo/ProjectInfo.d.ts.map +1 -0
  136. package/dist/components/ProjectInfo/ProjectInfo.js +50 -0
  137. package/dist/components/ProjectInfo/ProjectInfo.js.map +1 -0
  138. package/dist/components/ProjectInfo/ProjectInfo.module.js +11 -0
  139. package/dist/components/ProjectInfo/ProjectInfo.module.js.map +1 -0
  140. package/dist/components/ProjectInfo/ProjectInfo.module.scss +35 -0
  141. package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts +10 -0
  142. package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts.map +1 -0
  143. package/dist/components/ProjectInfo/ProjectInfoPopover.js +94 -0
  144. package/dist/components/ProjectInfo/ProjectInfoPopover.js.map +1 -0
  145. package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts +2 -1
  146. package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts.map +1 -1
  147. package/dist/components/ProjectStorage/ProjectDataAvailability.js +67 -75
  148. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  149. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts +3 -0
  150. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
  151. package/dist/components/ProvenanceGraph/ProvenanceGraph.js +140 -85
  152. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  153. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  154. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +3 -3
  155. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  156. package/dist/components/StorybookComponentWrapper.js +1 -1
  157. package/dist/components/SynapseChat/SynapseChat.js +1 -1
  158. package/dist/components/SynapseHomepageV2/HotdropsAndNews.css +1 -1
  159. package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.js +9 -8
  160. package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.js.map +1 -1
  161. package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.scss +4 -1
  162. package/dist/components/SynapseHomepageV2/WordPressNews.d.ts +2 -1
  163. package/dist/components/SynapseHomepageV2/WordPressNews.d.ts.map +1 -1
  164. package/dist/components/SynapseHomepageV2/WordPressNews.js +8 -7
  165. package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
  166. package/dist/components/SynapseHomepageV2/WordPressNewsItem.d.ts +5 -1
  167. package/dist/components/SynapseHomepageV2/WordPressNewsItem.d.ts.map +1 -1
  168. package/dist/components/SynapseHomepageV2/WordPressNewsItem.js +19 -11
  169. package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
  170. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +1 -1
  171. package/dist/components/SynapseTable/table-top/DownloadOptions.js +1 -1
  172. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  173. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
  174. package/dist/components/TextField/TextField.css +1 -1
  175. package/dist/components/TextField/TextField.d.ts.map +1 -1
  176. package/dist/components/TextField/TextField.js +27 -25
  177. package/dist/components/TextField/TextField.js.map +1 -1
  178. package/dist/components/TextField/TextField.module.js +3 -3
  179. package/dist/components/TextField/TextField.module.js.map +1 -1
  180. package/dist/components/TextField/TextField.module.scss +2 -5
  181. package/dist/components/Webhook/WebhookVerificationDialog.js +1 -1
  182. package/dist/components/WordPress/useWordPressPosts.js +1 -1
  183. package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
  184. package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js +1 -1
  185. package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js +1 -1
  186. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +1 -1
  187. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  188. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +66 -49
  189. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  190. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
  191. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  192. package/dist/components/error/SendMessageToEntityOwnerDialog.js +1 -1
  193. package/dist/components/index.js +1 -1
  194. package/dist/components/menu/ComplexMenu.d.ts.map +1 -1
  195. package/dist/components/menu/ComplexMenu.js +1 -4
  196. package/dist/components/menu/ComplexMenu.js.map +1 -1
  197. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js +1 -1
  198. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
  199. package/dist/features/curator/dashboard/CuratorDashboard.d.ts +1 -1
  200. package/dist/features/curator/dashboard/CuratorDashboard.d.ts.map +1 -1
  201. package/dist/features/curator/dashboard/CuratorDashboard.js +36 -35
  202. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  203. package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts +13 -0
  204. package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts.map +1 -0
  205. package/dist/features/curator/dashboard/CuratorDashboardRouter.js +37 -0
  206. package/dist/features/curator/dashboard/CuratorDashboardRouter.js.map +1 -0
  207. package/dist/features/curator/dashboard/components/CurationTaskCard.css +1 -1
  208. package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts +3 -1
  209. package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts.map +1 -1
  210. package/dist/features/curator/dashboard/components/CurationTaskCard.js +26 -157
  211. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  212. package/dist/features/curator/dashboard/components/CurationTaskCard.module.js +10 -6
  213. package/dist/features/curator/dashboard/components/CurationTaskCard.module.js.map +1 -1
  214. package/dist/features/curator/dashboard/components/CurationTaskCard.module.scss +31 -0
  215. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts +25 -0
  216. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts.map +1 -0
  217. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js +134 -0
  218. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js.map +1 -0
  219. package/dist/features/curator/dashboard/components/ExecutableTaskCard.d.ts +10 -0
  220. package/dist/features/curator/dashboard/components/ExecutableTaskCard.d.ts.map +1 -0
  221. package/dist/features/curator/dashboard/components/ExecutableTaskCard.js +51 -0
  222. package/dist/features/curator/dashboard/components/ExecutableTaskCard.js.map +1 -0
  223. package/dist/features/curator/dashboard/components/GridTaskCard.d.ts +10 -0
  224. package/dist/features/curator/dashboard/components/GridTaskCard.d.ts.map +1 -0
  225. package/dist/features/curator/dashboard/components/GridTaskCard.js +35 -0
  226. package/dist/features/curator/dashboard/components/GridTaskCard.js.map +1 -0
  227. package/dist/features/curator/dashboard/components/NextStepButton.css +1 -1
  228. package/dist/features/curator/dashboard/components/NextStepButton.d.ts +3 -0
  229. package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
  230. package/dist/features/curator/dashboard/components/NextStepButton.js +56 -26
  231. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  232. package/dist/features/curator/dashboard/components/NextStepButton.module.js +6 -5
  233. package/dist/features/curator/dashboard/components/NextStepButton.module.js.map +1 -1
  234. package/dist/features/curator/dashboard/components/NextStepButton.module.scss +28 -0
  235. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.d.ts +31 -0
  236. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.d.ts.map +1 -0
  237. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.js +32 -0
  238. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.js.map +1 -0
  239. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  240. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +213 -204
  241. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  242. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +0 -1
  243. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  244. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +19 -39
  245. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  246. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts +9 -3
  247. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
  248. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -46
  249. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  250. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts +17 -0
  251. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts.map +1 -0
  252. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js +43 -0
  253. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js.map +1 -0
  254. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -1
  255. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +27 -26
  256. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  257. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.d.ts +16 -0
  258. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.d.ts.map +1 -0
  259. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.js +64 -0
  260. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.js.map +1 -0
  261. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts +41 -0
  262. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts.map +1 -0
  263. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js +165 -0
  264. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js.map +1 -0
  265. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts +18 -0
  266. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts.map +1 -0
  267. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js +78 -0
  268. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js.map +1 -0
  269. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.d.ts +10 -0
  270. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.d.ts.map +1 -0
  271. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.js +40 -0
  272. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.js.map +1 -0
  273. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.d.ts +13 -0
  274. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.d.ts.map +1 -0
  275. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.js +35 -0
  276. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.js.map +1 -0
  277. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts +41 -0
  278. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts.map +1 -0
  279. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +198 -0
  280. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -0
  281. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.d.ts +8 -0
  282. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.d.ts.map +1 -0
  283. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.js +29 -0
  284. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.js.map +1 -0
  285. package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts +13 -0
  286. package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts.map +1 -0
  287. package/dist/features/entity/metadata-task/create-task/FileBasedFields.js +65 -0
  288. package/dist/features/entity/metadata-task/create-task/FileBasedFields.js.map +1 -0
  289. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.d.ts +11 -0
  290. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.d.ts.map +1 -0
  291. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.js +33 -0
  292. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.js.map +1 -0
  293. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts +13 -0
  294. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts.map +1 -0
  295. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js +38 -0
  296. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js.map +1 -0
  297. package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts +13 -0
  298. package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts.map +1 -0
  299. package/dist/features/entity/metadata-task/create-task/RecordSetFields.js +72 -0
  300. package/dist/features/entity/metadata-task/create-task/RecordSetFields.js.map +1 -0
  301. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts +11 -0
  302. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts.map +1 -0
  303. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js +42 -0
  304. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js.map +1 -0
  305. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.d.ts +17 -0
  306. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.d.ts.map +1 -0
  307. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +70 -0
  308. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -0
  309. package/dist/features/entity/metadata-task/create-task/TaskFormActions.d.ts +23 -0
  310. package/dist/features/entity/metadata-task/create-task/TaskFormActions.d.ts.map +1 -0
  311. package/dist/features/entity/metadata-task/create-task/TaskFormActions.js +68 -0
  312. package/dist/features/entity/metadata-task/create-task/TaskFormActions.js.map +1 -0
  313. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.d.ts +17 -0
  314. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.d.ts.map +1 -0
  315. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +33 -0
  316. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -0
  317. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts +50 -0
  318. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts.map +1 -0
  319. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js +76 -0
  320. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js.map +1 -0
  321. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts +36 -0
  322. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts.map +1 -0
  323. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js +31 -0
  324. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js.map +1 -0
  325. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts +32 -0
  326. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts.map +1 -0
  327. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js +33 -0
  328. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js.map +1 -0
  329. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.d.ts +10 -0
  330. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.d.ts.map +1 -0
  331. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.js +13 -0
  332. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.js.map +1 -0
  333. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts.map +1 -1
  334. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js +24 -24
  335. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  336. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts.map +1 -1
  337. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js +2 -2
  338. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  339. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  340. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +33 -32
  341. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  342. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
  343. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +24 -21
  344. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  345. package/dist/features/entity/metadata-task/utils/constants.d.ts +84 -15
  346. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  347. package/dist/features/entity/metadata-task/utils/constants.js +47 -3
  348. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  349. package/dist/features/entity/metadata-task/utils/dueDate.d.ts +22 -0
  350. package/dist/features/entity/metadata-task/utils/dueDate.d.ts.map +1 -0
  351. package/dist/features/entity/metadata-task/utils/dueDate.js +24 -0
  352. package/dist/features/entity/metadata-task/utils/dueDate.js.map +1 -0
  353. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts +2 -2
  354. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts.map +1 -1
  355. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js +5 -6
  356. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  357. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.d.ts +4 -4
  358. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.d.ts.map +1 -1
  359. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js +5 -6
  360. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
  361. package/dist/features/entity/metadata-task/utils/types.d.ts +12 -0
  362. package/dist/features/entity/metadata-task/utils/types.d.ts.map +1 -0
  363. package/dist/features/entity/metadata-task/utils/types.js +18 -0
  364. package/dist/features/entity/metadata-task/utils/types.js.map +1 -0
  365. package/dist/mocks/curation/mockCurationTask.d.ts +6 -0
  366. package/dist/mocks/curation/mockCurationTask.d.ts.map +1 -1
  367. package/dist/mocks/curation/mockCurationTask.js +20 -3
  368. package/dist/mocks/curation/mockCurationTask.js.map +1 -1
  369. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.d.ts +16 -0
  370. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.d.ts.map +1 -0
  371. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.js +24 -0
  372. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.js.map +1 -0
  373. package/dist/style/components/_data-grid-extra.css +1 -1
  374. package/dist/style/components/_data-grid-extra.scss +0 -6
  375. package/dist/synapse-client/SynapseClient.d.ts +7 -1
  376. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  377. package/dist/synapse-client/SynapseClient.js +493 -482
  378. package/dist/synapse-client/SynapseClient.js.map +1 -1
  379. package/dist/synapse-client/index.js +3 -3
  380. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +8 -1
  381. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  382. package/dist/synapse-queries/curation/task/useCurationTask.js +48 -34
  383. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  384. package/dist/theme/palette/Palettes.js +2 -2
  385. package/dist/theme/palette/Palettes.js.map +1 -1
  386. package/dist/tsconfig.build.tsbuildinfo +1 -1
  387. package/dist/utils/AppUtils/session/useSessionManager.d.ts.map +1 -1
  388. package/dist/utils/AppUtils/session/useSessionManager.js +50 -48
  389. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  390. package/dist/utils/SynapseConstants.d.ts +4 -1
  391. package/dist/utils/SynapseConstants.d.ts.map +1 -1
  392. package/dist/utils/SynapseConstants.js +86 -83
  393. package/dist/utils/SynapseConstants.js.map +1 -1
  394. package/dist/utils/featureflag/FeatureFlags.d.ts +2 -2
  395. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  396. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  397. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  398. package/dist/utils/hooks/useDetectSSOCode.d.ts.map +1 -1
  399. package/dist/utils/hooks/useDetectSSOCode.js +37 -27
  400. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  401. package/package.json +6 -6
  402. package/dist/components/DataGrid/MergeGridWithSourceTableButton.d.ts +0 -8
  403. package/dist/components/DataGrid/MergeGridWithSourceTableButton.d.ts.map +0 -1
  404. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +0 -64
  405. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +0 -1
@@ -1,53 +1,47 @@
1
1
  import { truncateString as e } from "../../utils/functions/StringUtils.js";
2
- import { EntityTypeIcon as t } from "../EntityIcon.js";
3
- import { Box as n, Breadcrumbs as r, Link as i, Tooltip as a, Typography as o } from "@mui/material";
4
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
5
- import { Link as l } from "react-router";
2
+ import { Box as t, Breadcrumbs as n, Link as r, Tooltip as i, Typography as a } from "@mui/material";
3
+ import { jsx as o } from "react/jsx-runtime";
4
+ import { Link as s } from "react-router";
6
5
  //#region src/components/Breadcrumbs/Breadcrumbs.tsx
7
- var u = /* @__PURE__ */ s(n, {
6
+ var c = /* @__PURE__ */ o(t, {
8
7
  sx: { color: "grey.400" },
9
8
  children: "/"
10
9
  });
11
- function d(d) {
12
- let { items: f, sx: p, maxBreadcrumbLength: m, iconVariant: h } = d;
13
- return /* @__PURE__ */ s(r, {
14
- separator: u,
10
+ function l(l) {
11
+ let { items: u, sx: d, maxBreadcrumbLength: f } = l;
12
+ return /* @__PURE__ */ o(n, {
13
+ separator: c,
15
14
  itemsBeforeCollapse: 2,
16
15
  itemsAfterCollapse: 2,
17
- sx: p,
18
- children: f.map((r, u) => {
19
- let d = r.text;
20
- m && (d = e(r.text, m));
21
- let f = d === r.text ? null : r.text;
22
- return /* @__PURE__ */ c(n, {
16
+ sx: d,
17
+ children: u.map((n, c) => {
18
+ let l = n.text;
19
+ return f && (l = e(n.text, f)), /* @__PURE__ */ o(t, {
23
20
  sx: {
24
21
  display: "flex",
25
22
  alignItems: "center",
26
23
  gap: "8px"
27
24
  },
28
- children: [r.entityType && /* @__PURE__ */ s(t, {
29
- type: r.entityType,
30
- variant: h
31
- }), /* @__PURE__ */ s(a, {
32
- title: f,
25
+ children: /* @__PURE__ */ o(i, {
26
+ title: l === n.text ? null : n.text,
33
27
  placement: "top",
34
- children: /* @__PURE__ */ s(o, {
28
+ children: /* @__PURE__ */ o(a, {
35
29
  variant: "breadcrumb1",
36
- children: r.current ? d : /* @__PURE__ */ s(i, {
37
- component: r.to ? l : i,
38
- to: r.to,
39
- href: r.href,
40
- onClick: r.onClick,
30
+ children: n.current ? l : /* @__PURE__ */ o(r, {
31
+ component: n.to ? s : r,
32
+ to: n.to,
33
+ href: n.href,
34
+ onClick: n.onClick,
41
35
  underline: "hover",
42
- children: d
36
+ children: l
43
37
  })
44
38
  })
45
- })]
46
- }, u);
39
+ })
40
+ }, c);
47
41
  })
48
42
  });
49
43
  }
50
44
  //#endregion
51
- export { d as Breadcrumbs, d as default };
45
+ export { l as Breadcrumbs, l as default };
52
46
 
53
47
  //# sourceMappingURL=Breadcrumbs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.js","names":[],"sources":["../../../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { truncateString } from '@/utils/functions/StringUtils'\nimport {\n Breadcrumbs as MuiBreadcrumbs,\n Link,\n SxProps,\n Tooltip,\n Typography,\n Box,\n} from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { MouseEventHandler } from 'react'\nimport { Link as RouterLink } from 'react-router'\nimport EntityTypeIcon from '../EntityIcon'\n\nexport type BreadcrumbItem = {\n /* The text to show in the breadcrumb item. Strings > 25 characters will be truncated */\n text: string\n /* Whether this item represents the current page. If true, this item will not have a link. Default false */\n current?: boolean\n /* Link for the item, if using react-router */\n to?: string\n /* Link for the item, if it should be a normal anchor */\n href?: string\n /* Event handler fired when the link is clicked */\n onClick?: MouseEventHandler\n /* If defined, show an icon for this entity type */\n entityType?: EntityType\n}\n\ntype BreadcrumbsProps = {\n /** The items to show in the breadcrumbs */\n items: BreadcrumbItem[]\n /** sx passed to the MUI Breadcrumbs */\n sx?: SxProps\n /** If defined, truncate individual item strings to be no longer than this value */\n maxBreadcrumbLength?: number\n iconVariant?: 'twoTone' | 'outlined'\n}\n\nconst BREADCRUMB_SEPARATOR = (\n <Box\n sx={{\n color: 'grey.400',\n }}\n >\n /\n </Box>\n)\n\nexport function Breadcrumbs(props: BreadcrumbsProps) {\n const { items, sx, maxBreadcrumbLength, iconVariant } = props\n return (\n <MuiBreadcrumbs\n separator={BREADCRUMB_SEPARATOR}\n itemsBeforeCollapse={2}\n itemsAfterCollapse={2}\n sx={sx}\n >\n {items.map((data, index) => {\n let displayedText = data.text\n if (maxBreadcrumbLength) {\n displayedText = truncateString(data.text, maxBreadcrumbLength)\n }\n\n const tooltipText = displayedText !== data.text ? data.text : null\n return (\n <Box\n sx={{ display: 'flex', alignItems: 'center', gap: '8px' }}\n key={index}\n >\n {data.entityType && (\n <EntityTypeIcon type={data.entityType} variant={iconVariant} />\n )}\n <Tooltip title={tooltipText} placement=\"top\">\n <Typography variant={'breadcrumb1'}>\n {data.current ? (\n displayedText\n ) : (\n <Link\n component={data.to ? RouterLink : Link}\n to={data.to}\n href={data.href}\n onClick={data.onClick}\n underline=\"hover\"\n >\n {displayedText}\n </Link>\n )}\n </Typography>\n </Tooltip>\n </Box>\n )\n })}\n </MuiBreadcrumbs>\n )\n}\n\nexport default Breadcrumbs\n"],"mappings":";;;;;;AAuCA,IAAM,IACJ,kBAAC,GAAD;CACE,IAAI,EACF,OAAO,WACT;WACD;AAEI,CAAA;AAGP,SAAgB,EAAY,GAAyB;CACnD,IAAM,EAAE,UAAO,OAAI,wBAAqB,mBAAgB;CACxD,OACE,kBAAC,GAAD;EACE,WAAW;EACX,qBAAqB;EACrB,oBAAoB;EAChB;YAEH,EAAM,KAAK,GAAM,MAAU;GAC1B,IAAI,IAAgB,EAAK;GACzB,AAAI,MACF,IAAgB,EAAe,EAAK,MAAM,CAAmB;GAG/D,IAAM,IAAc,MAAkB,EAAK,OAAmB,OAAZ,EAAK;GACvD,OACE,kBAAC,GAAD;IACE,IAAI;KAAE,SAAS;KAAQ,YAAY;KAAU,KAAK;IAAM;cAD1D,CAIG,EAAK,cACJ,kBAAC,GAAD;KAAgB,MAAM,EAAK;KAAY,SAAS;IAAc,CAAA,GAEhE,kBAAC,GAAD;KAAS,OAAO;KAAa,WAAU;eACrC,kBAAC,GAAD;MAAY,SAAS;gBAClB,EAAK,UACJ,IAEA,kBAAC,GAAD;OACE,WAAW,EAAK,KAAK,IAAa;OAClC,IAAI,EAAK;OACT,MAAM,EAAK;OACX,SAAS,EAAK;OACd,WAAU;iBAET;MACG,CAAA;KAEE,CAAA;IACL,CAAA,CACN;MAtBE,CAsBF;EAET,CAAC;CACa,CAAA;AAEpB"}
1
+ {"version":3,"file":"Breadcrumbs.js","names":[],"sources":["../../../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { truncateString } from '@/utils/functions/StringUtils'\nimport {\n Breadcrumbs as MuiBreadcrumbs,\n Link,\n SxProps,\n Tooltip,\n Typography,\n Box,\n} from '@mui/material'\nimport { MouseEventHandler } from 'react'\nimport { Link as RouterLink } from 'react-router'\n\nexport type BreadcrumbItem = {\n /* The text to show in the breadcrumb item. Strings > 25 characters will be truncated */\n text: string\n /* Whether this item represents the current page. If true, this item will not have a link. Default false */\n current?: boolean\n /* Link for the item, if using react-router */\n to?: string\n /* Link for the item, if it should be a normal anchor */\n href?: string\n /* Event handler fired when the link is clicked */\n onClick?: MouseEventHandler\n}\n\ntype BreadcrumbsProps = {\n /** The items to show in the breadcrumbs */\n items: BreadcrumbItem[]\n /** sx passed to the MUI Breadcrumbs */\n sx?: SxProps\n /** If defined, truncate individual item strings to be no longer than this value */\n maxBreadcrumbLength?: number\n iconVariant?: 'twoTone' | 'outlined'\n}\n\nconst BREADCRUMB_SEPARATOR = (\n <Box\n sx={{\n color: 'grey.400',\n }}\n >\n /\n </Box>\n)\n\nexport function Breadcrumbs(props: BreadcrumbsProps) {\n const { items, sx, maxBreadcrumbLength } = props\n return (\n <MuiBreadcrumbs\n separator={BREADCRUMB_SEPARATOR}\n itemsBeforeCollapse={2}\n itemsAfterCollapse={2}\n sx={sx}\n >\n {items.map((data, index) => {\n let displayedText = data.text\n if (maxBreadcrumbLength) {\n displayedText = truncateString(data.text, maxBreadcrumbLength)\n }\n\n const tooltipText = displayedText !== data.text ? data.text : null\n return (\n <Box\n sx={{ display: 'flex', alignItems: 'center', gap: '8px' }}\n key={index}\n >\n <Tooltip title={tooltipText} placement=\"top\">\n <Typography variant={'breadcrumb1'}>\n {data.current ? (\n displayedText\n ) : (\n <Link\n component={data.to ? RouterLink : Link}\n to={data.to}\n href={data.href}\n onClick={data.onClick}\n underline=\"hover\"\n >\n {displayedText}\n </Link>\n )}\n </Typography>\n </Tooltip>\n </Box>\n )\n })}\n </MuiBreadcrumbs>\n )\n}\n\nexport default Breadcrumbs\n"],"mappings":";;;;;AAmCA,IAAM,IACJ,kBAAC,GAAD;CACE,IAAI,EACF,OAAO,WACT;WACD;AAEI,CAAA;AAGP,SAAgB,EAAY,GAAyB;CACnD,IAAM,EAAE,UAAO,OAAI,2BAAwB;CAC3C,OACE,kBAAC,GAAD;EACE,WAAW;EACX,qBAAqB;EACrB,oBAAoB;EAChB;YAEH,EAAM,KAAK,GAAM,MAAU;GAC1B,IAAI,IAAgB,EAAK;GAMzB,OALI,MACF,IAAgB,EAAe,EAAK,MAAM,CAAmB,IAK7D,kBAAC,GAAD;IACE,IAAI;KAAE,SAAS;KAAQ,YAAY;KAAU,KAAK;IAAM;cAGxD,kBAAC,GAAD;KAAS,OANO,MAAkB,EAAK,OAAmB,OAAZ,EAAK;KAMtB,WAAU;eACrC,kBAAC,GAAD;MAAY,SAAS;gBAClB,EAAK,UACJ,IAEA,kBAAC,GAAD;OACE,WAAW,EAAK,KAAK,IAAa;OAClC,IAAI,EAAK;OACT,MAAM,EAAK;OACX,SAAS,EAAK;OACd,WAAU;iBAET;MACG,CAAA;KAEE,CAAA;IACL,CAAA;GACN,GAnBE,CAmBF;EAET,CAAC;CACa,CAAA;AAEpB"}
@@ -1,9 +1,9 @@
1
1
  import { displayToast as e } from "../ToastMessage/ToastMessage.js";
2
2
  import { useSynapseContext as t } from "../../utils/context/SynapseContext.js";
3
+ import "../ToastMessage/index.js";
3
4
  import "../../utils/index.js";
4
5
  import { useAddFileBatchToDownloadList as n } from "../../synapse-queries/download/useDownloadList.js";
5
6
  import "../../synapse-queries/index.js";
6
- import "../ToastMessage/index.js";
7
7
  import { VersionSelectionType as r } from "../EntityFinder/VersionSelectionType.js";
8
8
  import { DetailsViewColumn as i } from "../EntityFinder/details/view/DetailsView.js";
9
9
  import { EntityChildrenDetails as a } from "../EntityFinder/details/configurations/EntityChildrenDetails.js";
@@ -1,5 +1,6 @@
1
1
  import { displayToast as e } from "../ToastMessage/ToastMessage.js";
2
2
  import { useSynapseContext as t } from "../../utils/context/SynapseContext.js";
3
+ import "../ToastMessage/index.js";
3
4
  import "../../utils/index.js";
4
5
  import { useGetEntityChallenge as n } from "../../synapse-queries/entity/useGetEntityChallenge.js";
5
6
  import { useGetUserSubmissionTeams as r } from "../../synapse-queries/user/useGetUserTeams.js";
@@ -7,7 +8,6 @@ import { useGetCurrentUserProfile as i } from "../../synapse-queries/user/useUse
7
8
  import { useDeleteTeamMembership as a } from "../../synapse-queries/team/useTeamMembers.js";
8
9
  import "../../synapse-queries/index.js";
9
10
  import o from "../ConfirmationDialog/index.js";
10
- import "../ToastMessage/index.js";
11
11
  import s from "../ChallengeRegisterButton/index.js";
12
12
  import c from "../ChallengeRequirementsModal/ChallengeRequirementsModal.js";
13
13
  import l from "../ChallengeTeamWizard/index.js";
@@ -1,8 +1,8 @@
1
1
  import { displayToast as e } from "../ToastMessage/ToastMessage.js";
2
2
  import t from "../../synapse-client/index.js";
3
3
  import { useSynapseContext as n } from "../../utils/context/SynapseContext.js";
4
- import "../../utils/index.js";
5
4
  import "../ToastMessage/index.js";
5
+ import "../../utils/index.js";
6
6
  import r from "../StepperDialog/index.js";
7
7
  import i from "./EvaluationQueueList.js";
8
8
  import a from "./SubmissionCommitList.js";
@@ -1,10 +1,10 @@
1
1
  import { displayToast as e } from "../ToastMessage/ToastMessage.js";
2
2
  import { validatePassword as t } from "../../utils/functions/StringUtils.js";
3
3
  import { useSynapseContext as n } from "../../utils/context/SynapseContext.js";
4
+ import "../ToastMessage/index.js";
4
5
  import "../../utils/index.js";
5
6
  import { useGetCurrentUserProfile as r } from "../../synapse-queries/user/useUserBundle.js";
6
7
  import "../../synapse-queries/index.js";
7
- import "../ToastMessage/index.js";
8
8
  import i from "./useChangePasswordFormState.js";
9
9
  import { useEffect as a, useState as o } from "react";
10
10
  import { Alert as s, Button as c, Link as l, TextField as u } from "@mui/material";
@@ -1,4 +1,4 @@
1
- import { TypographyProps } from '@mui/material';
1
+ import { TypographyProps, SxProps } from '@mui/material';
2
2
  export type CopyToClipboardStringProps = {
3
3
  value: string;
4
4
  typographyVariant?: TypographyProps['variant'];
@@ -7,7 +7,8 @@ export type CopyToClipboardStringProps = {
7
7
  * addition to the copy icon. Defaults to rendering the value as plain text.
8
8
  */
9
9
  href?: string;
10
- useRoundedIcon?: boolean;
10
+ icon?: 'default' | 'rounded' | 'fileCopy';
11
+ sx?: SxProps;
11
12
  };
12
13
  /**
13
14
  * Displays a string or link and a "Copy to Clipboard" icon, that, when clicked, will copy the contents of the string to the clipboard.
@@ -1 +1 @@
1
- {"version":3,"file":"CopyToClipboardString.d.ts","sourceRoot":"","sources":["../../../src/components/CopyToClipboardString/CopyToClipboardString.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,eAAe,EAChB,MAAM,eAAe,CAAA;AAKtB,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IAC9C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,2CAuDtE;AAED,eAAe,qBAAqB,CAAA"}
1
+ {"version":3,"file":"CopyToClipboardString.d.ts","sourceRoot":"","sources":["../../../src/components/CopyToClipboardString/CopyToClipboardString.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,eAAe,EACf,OAAO,EACR,MAAM,eAAe,CAAA;AAKtB,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IAC9C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;IACzC,EAAE,CAAC,EAAE,OAAO,CAAA;CACb,CAAA;AAQD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,2CA4DtE;AAED,eAAe,qBAAqB,CAAA"}
@@ -4,46 +4,55 @@ import { useState as n } from "react";
4
4
  import { Link as r, Stack as i, Tooltip as a, Typography as o } from "@mui/material";
5
5
  import { jsx as s, jsxs as c } from "react/jsx-runtime";
6
6
  //#region src/components/CopyToClipboardString/CopyToClipboardString.tsx
7
- function l(l) {
8
- let { value: u, typographyVariant: d = "smallText1", href: f, useRoundedIcon: p = !1 } = l, [m, h] = n("Copy to clipboard");
7
+ var l = {
8
+ default: "contentCopy",
9
+ rounded: "contentCopyRounded",
10
+ fileCopy: "fileCopy"
11
+ };
12
+ function u(u) {
13
+ let { value: d, typographyVariant: f = "smallText1", href: p, icon: m = "default", sx: h } = u, [g, _] = n("Copy to clipboard"), v = (t) => {
14
+ t.preventDefault(), e(d).then(() => {
15
+ _("Copied to clipboard");
16
+ });
17
+ }, y = l[m] ?? l.default, b = m === "fileCopy" ? "18px" : "16px";
9
18
  return /* @__PURE__ */ c(i, {
10
19
  direction: "row",
11
20
  spacing: .5,
12
21
  sx: {
13
22
  alignItems: "center",
14
- display: "inline-flex"
23
+ display: "inline-flex",
24
+ ...h
15
25
  },
16
- children: [f ? /* @__PURE__ */ s(r, {
17
- href: f,
26
+ children: [p ? /* @__PURE__ */ s(r, {
27
+ href: p,
18
28
  rel: "noopener noreferrer",
19
29
  target: "_blank",
20
- variant: d,
21
- children: u
30
+ variant: f,
31
+ children: d
22
32
  }) : /* @__PURE__ */ s(o, {
23
33
  component: "span",
24
- variant: d,
25
- children: u
34
+ variant: f,
35
+ children: d
26
36
  }), /* @__PURE__ */ s(a, {
27
- title: m,
37
+ title: g,
28
38
  placement: "top",
29
39
  children: /* @__PURE__ */ s("span", {
30
40
  role: "button",
31
41
  style: { cursor: "pointer" },
32
- onClick: (t) => {
33
- t.preventDefault(), e(u).then(() => {
34
- h("Copied to clipboard");
35
- });
36
- },
42
+ onClick: v,
37
43
  children: /* @__PURE__ */ s(t, {
38
- icon: p ? "contentCopyRounded" : "contentCopy",
44
+ icon: y,
39
45
  wrap: !1,
40
- sx: { width: "16px" }
46
+ sx: {
47
+ width: b,
48
+ height: b
49
+ }
41
50
  })
42
51
  })
43
52
  })]
44
53
  });
45
54
  }
46
55
  //#endregion
47
- export { l as CopyToClipboardString, l as default };
56
+ export { u as CopyToClipboardString, u as default };
48
57
 
49
58
  //# sourceMappingURL=CopyToClipboardString.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyToClipboardString.js","names":[],"sources":["../../../src/components/CopyToClipboardString/CopyToClipboardString.tsx"],"sourcesContent":["import {\n Link,\n Stack,\n Tooltip,\n Typography,\n TypographyProps,\n} from '@mui/material'\nimport { SyntheticEvent, useState } from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { copyStringToClipboard } from '@/utils/functions/StringUtils'\n\nexport type CopyToClipboardStringProps = {\n value: string\n typographyVariant?: TypographyProps['variant']\n /**\n * When provided, the value is rendered as an external link to this URL in\n * addition to the copy icon. Defaults to rendering the value as plain text.\n */\n href?: string\n useRoundedIcon?: boolean\n}\n\n/**\n * Displays a string or link and a \"Copy to Clipboard\" icon, that, when clicked, will copy the contents of the string to the clipboard.\n */\nexport function CopyToClipboardString(props: CopyToClipboardStringProps) {\n const {\n value,\n typographyVariant = 'smallText1',\n href,\n useRoundedIcon = false,\n } = props\n const [tooltipText, setTooltipText] = useState('Copy to clipboard')\n\n const copyToClipboard = (event: SyntheticEvent) => {\n event.preventDefault()\n\n copyStringToClipboard(value).then(() => {\n setTooltipText('Copied to clipboard')\n })\n }\n\n return (\n <Stack\n direction={'row'}\n spacing={0.5}\n sx={{\n alignItems: 'center',\n display: 'inline-flex',\n }}\n >\n {href ? (\n <Link\n href={href}\n rel={'noopener noreferrer'}\n target={'_blank'}\n variant={typographyVariant}\n >\n {value}\n </Link>\n ) : (\n <Typography component={'span'} variant={typographyVariant}>\n {value}\n </Typography>\n )}\n <Tooltip title={tooltipText} placement={'top'}>\n <span\n role=\"button\"\n style={{ cursor: 'pointer' }}\n onClick={copyToClipboard}\n >\n <IconSvg\n icon={useRoundedIcon ? 'contentCopyRounded' : 'contentCopy'}\n wrap={false}\n sx={{ width: '16px' }}\n />\n </span>\n </Tooltip>\n </Stack>\n )\n}\n\nexport default CopyToClipboardString\n"],"mappings":";;;;;;AAyBA,SAAgB,EAAsB,GAAmC;CACvE,IAAM,EACJ,UACA,uBAAoB,cACpB,SACA,oBAAiB,OACf,GACE,CAAC,GAAa,KAAkB,EAAS,mBAAmB;CAUlE,OACE,kBAAC,GAAD;EACE,WAAW;EACX,SAAS;EACT,IAAI;GACF,YAAY;GACZ,SAAS;EACX;YANF,CAQG,IACC,kBAAC,GAAD;GACQ;GACN,KAAK;GACL,QAAQ;GACR,SAAS;aAER;EACG,CAAA,IAEN,kBAAC,GAAD;GAAY,WAAW;GAAQ,SAAS;aACrC;EACS,CAAA,GAEd,kBAAC,GAAD;GAAS,OAAO;GAAa,WAAW;aACtC,kBAAC,QAAD;IACE,MAAK;IACL,OAAO,EAAE,QAAQ,UAAU;IAC3B,UAnCiB,MAA0B;KAGjD,AAFA,EAAM,eAAe,GAErB,EAAsB,CAAK,EAAE,WAAW;MACtC,EAAe,qBAAqB;KACtC,CAAC;IACH;cA+BQ,kBAAC,GAAD;KACE,MAAM,IAAiB,uBAAuB;KAC9C,MAAM;KACN,IAAI,EAAE,OAAO,OAAO;IACrB,CAAA;GACG,CAAA;EACC,CAAA,CACJ;;AAEX"}
1
+ {"version":3,"file":"CopyToClipboardString.js","names":[],"sources":["../../../src/components/CopyToClipboardString/CopyToClipboardString.tsx"],"sourcesContent":["import {\n Link,\n Stack,\n Tooltip,\n Typography,\n TypographyProps,\n SxProps,\n} from '@mui/material'\nimport { SyntheticEvent, useState } from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { copyStringToClipboard } from '@/utils/functions/StringUtils'\n\nexport type CopyToClipboardStringProps = {\n value: string\n typographyVariant?: TypographyProps['variant']\n /**\n * When provided, the value is rendered as an external link to this URL in\n * addition to the copy icon. Defaults to rendering the value as plain text.\n */\n href?: string\n icon?: 'default' | 'rounded' | 'fileCopy'\n sx?: SxProps\n}\n\nconst ICON_MAP = {\n default: 'contentCopy',\n rounded: 'contentCopyRounded',\n fileCopy: 'fileCopy',\n} as const\n\n/**\n * Displays a string or link and a \"Copy to Clipboard\" icon, that, when clicked, will copy the contents of the string to the clipboard.\n */\nexport function CopyToClipboardString(props: CopyToClipboardStringProps) {\n const {\n value,\n typographyVariant = 'smallText1',\n href,\n icon = 'default',\n sx,\n } = props\n const [tooltipText, setTooltipText] = useState('Copy to clipboard')\n\n const copyToClipboard = (event: SyntheticEvent) => {\n event.preventDefault()\n\n copyStringToClipboard(value).then(() => {\n setTooltipText('Copied to clipboard')\n })\n }\n\n const selectedIcon = ICON_MAP[icon] ?? ICON_MAP.default\n const iconSize = icon === 'fileCopy' ? '18px' : '16px'\n\n return (\n <Stack\n direction={'row'}\n spacing={0.5}\n sx={{\n alignItems: 'center',\n display: 'inline-flex',\n ...sx,\n }}\n >\n {href ? (\n <Link\n href={href}\n rel={'noopener noreferrer'}\n target={'_blank'}\n variant={typographyVariant}\n >\n {value}\n </Link>\n ) : (\n <Typography component={'span'} variant={typographyVariant}>\n {value}\n </Typography>\n )}\n <Tooltip title={tooltipText} placement={'top'}>\n <span\n role=\"button\"\n style={{ cursor: 'pointer' }}\n onClick={copyToClipboard}\n >\n <IconSvg\n icon={selectedIcon}\n wrap={false}\n sx={{ width: iconSize, height: iconSize }}\n />\n </span>\n </Tooltip>\n </Stack>\n )\n}\n\nexport default CopyToClipboardString\n"],"mappings":";;;;;;AAwBA,IAAM,IAAW;CACf,SAAS;CACT,SAAS;CACT,UAAU;AACZ;AAKA,SAAgB,EAAsB,GAAmC;CACvE,IAAM,EACJ,UACA,uBAAoB,cACpB,SACA,UAAO,WACP,UACE,GACE,CAAC,GAAa,KAAkB,EAAS,mBAAmB,GAE5D,KAAmB,MAA0B;EAGjD,AAFA,EAAM,eAAe,GAErB,EAAsB,CAAK,EAAE,WAAW;GACtC,EAAe,qBAAqB;EACtC,CAAC;CACH,GAEM,IAAe,EAAS,MAAS,EAAS,SAC1C,IAAW,MAAS,aAAa,SAAS;CAEhD,OACE,kBAAC,GAAD;EACE,WAAW;EACX,SAAS;EACT,IAAI;GACF,YAAY;GACZ,SAAS;GACT,GAAG;EACL;YAPF,CASG,IACC,kBAAC,GAAD;GACQ;GACN,KAAK;GACL,QAAQ;GACR,SAAS;aAER;EACG,CAAA,IAEN,kBAAC,GAAD;GAAY,WAAW;GAAQ,SAAS;aACrC;EACS,CAAA,GAEd,kBAAC,GAAD;GAAS,OAAO;GAAa,WAAW;aACtC,kBAAC,QAAD;IACE,MAAK;IACL,OAAO,EAAE,QAAQ,UAAU;IAC3B,SAAS;cAET,kBAAC,GAAD;KACE,MAAM;KACN,MAAM;KACN,IAAI;MAAE,OAAO;MAAU,QAAQ;KAAS;IACzC,CAAA;GACG,CAAA;EACC,CAAA,CACJ;;AAEX"}
@@ -1 +1 @@
1
- ._dataExplorerTitle_pjkyv_1.MuiTypography-root{color:var(--data-explorer-title-color,var(--synapse-primary-action-color));font-size:36px;line-height:40px}._dataExplorerSubtitle_pjkyv_7.MuiTypography-root{line-height:140%}@media (width>=1024px){._dataExplorerButton_pjkyv_12{width:fit-content}}._dataExplorerTextContainer_pjkyv_17{gap:16px}@media (width>=1024px){._dataExplorerTextContainer_pjkyv_17{flex:0 0 30%;max-width:30%}}._dataExplorerContainer_pjkyv_27{flex-direction:column;flex:1 0 0;align-items:flex-start;gap:60px;padding:40px 0;display:flex}@media (width>=1024px){._dataExplorerContainer_pjkyv_27{flex-direction:row}}._dataContainer_pjkyv_41{flex:60%;grid-template-rows:repeat(9,fit-content(100%));grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0;display:inline-grid}._dataRowTitle_pjkyv_51{color:var(--synapse-primary-action-color,#4d558d);overflow-wrap:break-word;word-break:break-word;flex:0 auto;min-width:0;font-size:16px;font-weight:400;line-height:26.4px}@media (width>=1024px){._dataRowTitle_pjkyv_51{font-size:19.8px}}._dataRowInner_pjkyv_67{flex:1;justify-content:space-between;align-items:center;min-width:0;display:flex}._dataRow_pjkyv_51{border:1px solid #0000;border-radius:3.3px;justify-content:space-between;justify-self:stretch;align-items:center;gap:17.6px;min-height:66.6px;padding:8.8px 26.4px;transition:background-color .2s,border-color .2s,box-shadow .2s,transform .2s;display:flex;position:relative;text-decoration:none!important}._dataRow_pjkyv_51:hover{z-index:1;background-color:#fff;border-color:#e1e1e1;transform:scale(1.1);box-shadow:0 4px 8px #0000001a}._dataRow_pjkyv_51:hover ._viewCta_pjkyv_96{opacity:1;pointer-events:auto}._dataRowLeft_pjkyv_101{flex:1;align-items:center;gap:16px;min-width:0;display:inline-flex}._iconContainer_pjkyv_109{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:49px;height:49px;display:flex}._dataRowNamePill_pjkyv_119{flex:1 1 0;align-items:center;gap:8px;min-width:0;display:flex}._fileCount_pjkyv_127{color:#787090;border:1px solid #d8d5e0;border-radius:80px;flex-shrink:0;justify-content:center;align-items:center;gap:10px;padding:4px 8px;font-size:14px;font-weight:400;line-height:24px;display:flex}._viewCta_pjkyv_96{opacity:0;white-space:nowrap;color:var(--synapse-primary-action-color,#4d558d);background:linear-gradient(90deg,#0000,#fff 25% 100%);border-radius:0 2px 2px 0;align-items:center;gap:4px;padding-left:40px;padding-right:26.4px;transition:opacity .2s;display:inline-flex;position:absolute;top:0;bottom:0;right:0}._viewCtaText_pjkyv_160{color:var(--synapse-primary-action-color,#4d558d);font-size:16px;font-weight:400;line-height:26.4px}._viewCtaIcon_pjkyv_167.MuiSvgIcon-root{color:var(--synapse-primary-action-color,#5a488f);font-size:24px}
1
+ ._dataExplorerTitle_1ezpn_1.MuiTypography-root{color:var(--data-explorer-title-color,var(--synapse-primary-action-color));font-size:36px;line-height:40px}._dataExplorerSubtitle_1ezpn_7.MuiTypography-root{line-height:140%}@media (width>=1024px){._dataExplorerButton_1ezpn_12{width:fit-content}}._dataExplorerTextContainer_1ezpn_17{gap:16px}@media (width>=1024px){._dataExplorerTextContainer_1ezpn_17{flex:0 0 30%;max-width:30%}}._dataExplorerContainer_1ezpn_27{flex-direction:column;flex:1 0 0;align-items:flex-start;gap:60px;padding:40px 0;display:flex}@media (width>=1024px){._dataExplorerContainer_1ezpn_27{flex-direction:row}}._dataContainer_1ezpn_41{flex:60%;grid-template-rows:repeat(9,fit-content(100%));grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0;display:inline-grid}._dataRowTitle_1ezpn_51{color:var(--synapse-primary-action-color,#4d558d);overflow-wrap:break-word;word-break:break-word;flex:0 auto;min-width:0;font-size:16px;font-weight:400;line-height:26.4px}@media (width>=1024px){._dataRowTitle_1ezpn_51{font-size:19.8px}}._dataRowInner_1ezpn_67{flex:1;justify-content:space-between;align-items:center;min-width:0;display:flex}._dataRow_1ezpn_51{border:1px solid #0000;border-radius:3.3px;justify-content:space-between;justify-self:stretch;align-items:center;gap:17.6px;min-height:66.6px;padding:8.8px 26.4px;transition:background-color .2s,border-color .2s,box-shadow .2s,transform .2s;display:flex;position:relative;text-decoration:none!important}._dataRow_1ezpn_51:hover{z-index:1;background-color:#fff;border-color:#e1e1e1;transform:scale(1.1);box-shadow:0 4px 8px #0000001a}._dataRow_1ezpn_51:hover ._viewCta_1ezpn_96{opacity:1;pointer-events:auto}._dataRowLeft_1ezpn_101{flex:1;align-items:center;gap:16px;min-width:0;display:inline-flex}._iconContainer_1ezpn_109{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:49px;height:49px;display:flex}._dataRowNamePill_1ezpn_119{flex:1 1 0;align-items:center;gap:8px;min-width:0;display:flex}._facetCount_1ezpn_127{color:#787090;border:1px solid #d8d5e0;border-radius:80px;flex-shrink:0;justify-content:center;align-items:center;gap:10px;padding:4px 8px;font-size:14px;font-weight:400;line-height:24px;display:flex}._viewCta_1ezpn_96{opacity:0;white-space:nowrap;color:var(--synapse-primary-action-color,#4d558d);background:linear-gradient(90deg,#0000,#fff 25% 100%);border-radius:0 2px 2px 0;align-items:center;gap:4px;padding-left:40px;padding-right:26.4px;transition:opacity .2s;display:inline-flex;position:absolute;top:0;bottom:0;right:0}._viewCtaText_1ezpn_160{color:var(--synapse-primary-action-color,#4d558d);font-size:16px;font-weight:400;line-height:26.4px}._viewCtaIcon_1ezpn_167.MuiSvgIcon-root{color:var(--synapse-primary-action-color,#5a488f);font-size:24px}
@@ -6,8 +6,22 @@ type DataExplorerProps = {
6
6
  sql: string;
7
7
  explorePath?: string;
8
8
  exploreQuerySql?: string;
9
- filterColumnName?: string;
9
+ facetSql?: string;
10
10
  };
11
- export default function DataExplorer({ sql, title, subtitle, buttonText, buttonLink, explorePath, exploreQuerySql, filterColumnName, }: DataExplorerProps): import("react/jsx-runtime").JSX.Element;
11
+ /**
12
+ * DataExplorer
13
+ *
14
+ * A reusable component that renders a list of data types/categories with associated icons.
15
+ * It drives navigation by linking each row to a pre-filtered exploration view.
16
+ *
17
+ * How it works:
18
+ * 1. `sql`: Fetches a configuration table defining the display categories,
19
+ * their display order, hex colors, and icons.
20
+ * 2. `facetSql`: Fetches real-time counts for these categories from the actual
21
+ * underlying data table.
22
+ * 3. Links are dynamically built to point to a target path (`explorePath`) pre-filtered to the
23
+ * clicked category.
24
+ */
25
+ export default function DataExplorer({ sql, title, subtitle, buttonText, buttonLink, explorePath, exploreQuerySql, facetSql, }: DataExplorerProps): import("react/jsx-runtime").JSX.Element;
12
26
  export {};
13
27
  //# sourceMappingURL=DataExplorer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataExplorer.d.ts","sourceRoot":"","sources":["../../../src/components/DataExplorer/DataExplorer.tsx"],"names":[],"mappings":"AAaA,KAAK,iBAAiB,GAAG;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AASD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,GAAG,EACH,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,EAAE,iBAAiB,2CA8InB"}
1
+ {"version":3,"file":"DataExplorer.d.ts","sourceRoot":"","sources":["../../../src/components/DataExplorer/DataExplorer.tsx"],"names":[],"mappings":"AAkBA,KAAK,iBAAiB,GAAG;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAUD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,GAAG,EACH,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,WAAW,EACX,eAAe,EACf,QAAQ,GACT,EAAE,iBAAiB,2CAyMnB"}
@@ -7,110 +7,117 @@ import n from "../../synapse-queries/entity/useGetQueryResultBundle.js";
7
7
  import { useSmartLink as r } from "../SmartLink/useSmartLink.js";
8
8
  import { generateEncodedPathAndQueryForSelectedFacetURL as i } from "../QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js";
9
9
  import "../QueryWrapper/index.js";
10
- import a from "../ImageFromSynapseTable.js";
11
- import o from "./DataExplorer.module.js";
12
- import { useEffect as s, useMemo as c, useState as l } from "react";
13
- import { Button as u, Stack as d, Typography as f } from "@mui/material";
14
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
15
- import h from "@mui/icons-material/ArrowForward";
10
+ import { getFacets as a } from "../widgets/facet-nav/useFacetPlots.js";
11
+ import o from "../ImageFromSynapseTable.js";
12
+ import s from "./DataExplorer.module.js";
13
+ import { useEffect as c, useMemo as l, useState as u } from "react";
14
+ import { orderBy as d } from "lodash-es";
15
+ import { Button as f, Stack as p, Typography as m } from "@mui/material";
16
+ import { jsx as h, jsxs as g } from "react/jsx-runtime";
17
+ import _ from "@mui/icons-material/ArrowForward";
16
18
  //#region src/components/DataExplorer/DataExplorer.tsx
17
- function g({ sql: g, title: _, subtitle: v, buttonText: y, buttonLink: b, explorePath: x, exploreQuerySql: S, filterColumnName: C }) {
18
- let w = _ || v || y, T = r(b), E = e(g), { data: D } = n({
19
+ function v({ sql: v, title: y, subtitle: b, buttonText: x, buttonLink: S, explorePath: C, exploreQuerySql: w, facetSql: T }) {
20
+ let E = y || b || x, D = r(S), O = e(v), k = e(T ?? ""), A = {
19
21
  partMask: 5,
20
22
  concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest",
21
- entityId: E,
22
- query: {
23
- sql: g,
24
- sort: [{
25
- column: "order",
26
- direction: "ASC"
27
- }]
28
- }
29
- }), O = c(() => D?.queryResult?.queryResults.rows ?? [], [D]), k = t("datatype", D), A = t("icon", D), j = t("hexColor", D), M = t("fileCount", D), [N, P] = l([]);
30
- return s(() => {
31
- !x || !C || !S || Promise.all(O.map((e) => {
32
- let t = e.values[k]?.trim();
33
- return t ? i(x, S, [{
34
- facet: C,
23
+ entityId: O,
24
+ query: { sql: v }
25
+ }, j = {
26
+ partMask: 32,
27
+ concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest",
28
+ entityId: k,
29
+ query: { sql: T ?? "" }
30
+ }, { data: M } = n(A), N = l(() => M?.queryResult?.queryResults.rows ?? [], [M]), { data: P } = n(j, { enabled: !!T }), F = t("datatype", M), I = t("icon", M), L = t("hexColor", M), R = t("order", M), z = t("columnName", M), B = (e, t) => t ? `${t}::${e}` : e, [V, H] = u({});
31
+ c(() => {
32
+ !C || !w || Promise.all(N.map((e) => {
33
+ let t = e.values[F]?.trim() ?? "", n = e.values[z]?.trim() ?? "", r = B(t, n);
34
+ return !t || !n ? Promise.resolve([r, C]) : i(C, w, [{
35
+ facet: n,
35
36
  facetValue: t
36
- }]) : Promise.resolve(x);
37
- })).then(P);
37
+ }]).then((e) => [r, e]);
38
+ })).then((e) => H(Object.fromEntries(e)));
38
39
  }, [
39
- O,
40
- k,
41
- x,
42
- S,
43
- C
44
- ]), /* @__PURE__ */ m("div", {
45
- className: o.dataExplorerContainer,
46
- children: [w && /* @__PURE__ */ m(d, {
47
- className: o.dataExplorerTextContainer,
40
+ N,
41
+ F,
42
+ z,
43
+ C,
44
+ w
45
+ ]);
46
+ let U = l(() => {
47
+ let e = a(P), t = /* @__PURE__ */ new Map();
48
+ for (let n of e) t.set(n.columnName, new Map(n.facetValues.map((e) => [e.value, e.count])));
49
+ return t;
50
+ }, [P]), W = (e, t) => t ? U.get(t)?.get(e) : void 0, G = d(N, [(e) => Number(e.values[R] ?? 2 ** 53 - 1), (e) => W(e.values[F]?.trim() ?? "", e.values[z]?.trim() ?? "") ?? 0], ["asc", "desc"]);
51
+ return /* @__PURE__ */ g("div", {
52
+ className: s.dataExplorerContainer,
53
+ children: [E && /* @__PURE__ */ g(p, {
54
+ className: s.dataExplorerTextContainer,
48
55
  children: [
49
- _ && /* @__PURE__ */ p(f, {
56
+ y && /* @__PURE__ */ h(m, {
50
57
  variant: "headline1",
51
- className: o.dataExplorerTitle,
52
- children: _
58
+ className: s.dataExplorerTitle,
59
+ children: y
53
60
  }),
54
- v && /* @__PURE__ */ p(f, {
61
+ b && /* @__PURE__ */ h(m, {
55
62
  variant: "body1",
56
63
  component: "div",
57
- className: o.dataExplorerSubtitle,
58
- children: v
64
+ className: s.dataExplorerSubtitle,
65
+ children: b
59
66
  }),
60
- y && /* @__PURE__ */ p(u, {
67
+ x && /* @__PURE__ */ h(f, {
61
68
  variant: "contained",
62
- className: o.dataExplorerButton,
63
- ...T,
64
- children: y
69
+ className: s.dataExplorerButton,
70
+ ...D,
71
+ children: x
65
72
  })
66
73
  ]
67
- }), /* @__PURE__ */ p("div", {
68
- className: o.dataContainer,
69
- children: O.map((e, t) => {
70
- let n = e.values[k] ?? "", r = e.values[j] ?? void 0, i = N[t], s = e.values[M] ?? "";
71
- return /* @__PURE__ */ p("a", {
72
- className: o.dataRow,
74
+ }), /* @__PURE__ */ h("div", {
75
+ className: s.dataContainer,
76
+ children: G.map((e) => {
77
+ let t = e.values[F]?.trim() ?? "", n = e.values[L] ?? void 0, r = e.values[z]?.trim() ?? "", i = V[B(t, r)], a = W(t, r);
78
+ return /* @__PURE__ */ h("a", {
79
+ className: s.dataRow,
73
80
  href: i,
74
- children: /* @__PURE__ */ m("div", {
75
- className: o.dataRowInner,
76
- children: [/* @__PURE__ */ m("div", {
77
- className: o.dataRowLeft,
78
- children: [/* @__PURE__ */ p("div", {
79
- className: o.iconContainer,
80
- style: r ? { backgroundColor: r } : void 0,
81
- children: /* @__PURE__ */ p(a, {
82
- tableId: E,
83
- fileHandleId: e.values[A],
84
- alt: e.values[k] ?? "",
81
+ children: /* @__PURE__ */ g("div", {
82
+ className: s.dataRowInner,
83
+ children: [/* @__PURE__ */ g("div", {
84
+ className: s.dataRowLeft,
85
+ children: [/* @__PURE__ */ h("div", {
86
+ className: s.iconContainer,
87
+ style: n ? { backgroundColor: n } : void 0,
88
+ children: /* @__PURE__ */ h(o, {
89
+ tableId: O,
90
+ fileHandleId: e.values[I],
91
+ alt: t,
85
92
  style: {
86
93
  width: 49,
87
94
  height: 49
88
95
  }
89
96
  })
90
- }), /* @__PURE__ */ m("div", {
91
- className: o.dataRowNamePill,
92
- children: [/* @__PURE__ */ p(f, {
93
- className: o.dataRowTitle,
94
- children: n
95
- }), s && /* @__PURE__ */ p("div", {
96
- className: o.fileCount,
97
- children: s
97
+ }), /* @__PURE__ */ g("div", {
98
+ className: s.dataRowNamePill,
99
+ children: [/* @__PURE__ */ h(m, {
100
+ className: s.dataRowTitle,
101
+ children: t
102
+ }), a && /* @__PURE__ */ h("div", {
103
+ className: s.facetCount,
104
+ children: a
98
105
  })]
99
106
  })]
100
- }), i && /* @__PURE__ */ m("div", {
101
- className: o.viewCta,
102
- children: [/* @__PURE__ */ p("span", {
103
- className: o.viewCtaText,
107
+ }), i && /* @__PURE__ */ g("div", {
108
+ className: s.viewCta,
109
+ children: [/* @__PURE__ */ h("span", {
110
+ className: s.viewCtaText,
104
111
  children: "View"
105
- }), /* @__PURE__ */ p(h, { className: o.viewCtaIcon })]
112
+ }), /* @__PURE__ */ h(_, { className: s.viewCtaIcon })]
106
113
  })]
107
114
  })
108
- }, e.rowId);
115
+ }, B(t, r));
109
116
  })
110
117
  })]
111
118
  });
112
119
  }
113
120
  //#endregion
114
- export { g as default };
121
+ export { v as default };
115
122
 
116
123
  //# sourceMappingURL=DataExplorer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataExplorer.js","names":[],"sources":["../../../src/components/DataExplorer/DataExplorer.tsx"],"sourcesContent":["import { Button, Typography, Stack } from '@mui/material'\nimport { useEffect, useMemo, useState } from 'react'\nimport styles from './DataExplorer.module.scss'\nimport { useSmartLink } from '../SmartLink/useSmartLink'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { SynapseConstants } from '@/utils'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport { generateEncodedPathAndQueryForSelectedFacetURL } from '../QueryWrapper'\nimport ImageFromSynapseTable from '../ImageFromSynapseTable'\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward'\n\ntype DataExplorerProps = {\n title?: React.ReactNode\n subtitle?: React.ReactNode\n buttonText?: string\n buttonLink?: string\n sql: string\n explorePath?: string\n exploreQuerySql?: string\n filterColumnName?: string\n}\n\nenum ExpectedColumns {\n DATATYPE = 'datatype',\n ICON = 'icon',\n HEX_COLOR = 'hexColor',\n FILE_COUNT = 'fileCount',\n}\n\nexport default function DataExplorer({\n sql,\n title,\n subtitle,\n buttonText,\n buttonLink,\n explorePath,\n exploreQuerySql,\n filterColumnName,\n}: DataExplorerProps) {\n const hasTextSection = title || subtitle || buttonText\n const smartLinkProps = useSmartLink(buttonLink)\n\n const entityId = parseEntityIdFromSqlStatement(sql)\n\n const queryBundleRequest: QueryBundleRequest = {\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n query: {\n sql,\n sort: [{ column: 'order', direction: 'ASC' }],\n },\n }\n\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const dataRows = useMemo(\n () => queryResultBundle?.queryResult?.queryResults.rows ?? [],\n [queryResultBundle],\n )\n\n const datatypeColIndex = getFieldIndex(\n ExpectedColumns.DATATYPE,\n queryResultBundle,\n )\n\n const iconColIndex = getFieldIndex(ExpectedColumns.ICON, queryResultBundle)\n\n const hexColorColIndex = getFieldIndex(\n ExpectedColumns.HEX_COLOR,\n queryResultBundle,\n )\n\n const fileCountColIndex = getFieldIndex(\n ExpectedColumns.FILE_COUNT,\n queryResultBundle,\n )\n\n const [rowUrls, setRowUrls] = useState<string[]>([])\n\n useEffect(() => {\n if (!explorePath || !filterColumnName || !exploreQuerySql) return\n\n Promise.all(\n dataRows.map(row => {\n const dataType = row.values[datatypeColIndex]?.trim()\n if (!dataType) return Promise.resolve(explorePath)\n return generateEncodedPathAndQueryForSelectedFacetURL(\n explorePath,\n exploreQuerySql,\n [{ facet: filterColumnName, facetValue: dataType }],\n )\n }),\n ).then(setRowUrls)\n }, [\n dataRows,\n datatypeColIndex,\n explorePath,\n exploreQuerySql,\n filterColumnName,\n ])\n\n return (\n <div className={styles.dataExplorerContainer}>\n {hasTextSection && (\n <Stack className={styles.dataExplorerTextContainer}>\n {title && (\n <Typography\n variant=\"headline1\"\n className={styles.dataExplorerTitle}\n >\n {title}\n </Typography>\n )}\n {subtitle && (\n <Typography\n variant=\"body1\"\n component=\"div\"\n className={styles.dataExplorerSubtitle}\n >\n {subtitle}\n </Typography>\n )}\n {buttonText && (\n <Button\n variant=\"contained\"\n className={styles.dataExplorerButton}\n {...smartLinkProps}\n >\n {buttonText}\n </Button>\n )}\n </Stack>\n )}\n <div className={styles.dataContainer}>\n {dataRows.map((row, index) => {\n const dataType = row.values[datatypeColIndex] ?? ''\n const hexColor = row.values[hexColorColIndex] ?? undefined\n const rowUrl = rowUrls[index]\n const fileCount = row.values[fileCountColIndex] ?? ''\n return (\n <a key={row.rowId} className={styles.dataRow} href={rowUrl}>\n <div className={styles.dataRowInner}>\n <div className={styles.dataRowLeft}>\n <div\n className={styles.iconContainer}\n style={hexColor ? { backgroundColor: hexColor } : undefined}\n >\n <ImageFromSynapseTable\n tableId={entityId}\n fileHandleId={row.values[iconColIndex]}\n alt={row.values[datatypeColIndex] ?? ''}\n style={{ width: 49, height: 49 }}\n />\n </div>\n <div className={styles.dataRowNamePill}>\n <Typography className={styles.dataRowTitle}>\n {dataType}\n </Typography>\n {fileCount && (\n <div className={styles.fileCount}>{fileCount}</div>\n )}\n </div>\n </div>\n {rowUrl && (\n <div className={styles.viewCta}>\n <span className={styles.viewCtaText}>View</span>\n <ArrowForwardIcon className={styles.viewCtaIcon} />\n </div>\n )}\n </div>\n </a>\n )\n })}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA+BA,SAAwB,EAAa,EACnC,QACA,UACA,aACA,eACA,eACA,gBACA,oBACA,uBACoB;CACpB,IAAM,IAAiB,KAAS,KAAY,GACtC,IAAiB,EAAa,CAAU,GAExC,IAAW,EAA8B,CAAG,GAc5C,EAAE,MAAM,MACZ,EAAwB;EAZxB,UACE;EAEF,cAAc;EACd;EACA,OAAO;GACL;GACA,MAAM,CAAC;IAAE,QAAQ;IAAS,WAAW;GAAM,CAAC;EAC9C;CAIwB,CAAkB,GAEtC,IAAW,QACT,GAAmB,aAAa,aAAa,QAAQ,CAAC,GAC5D,CAAC,CAAiB,CACpB,GAEM,IAAmB,EAAA,YAEvB,CACF,GAEM,IAAe,EAAA,QAAoC,CAAiB,GAEpE,IAAmB,EAAA,YAEvB,CACF,GAEM,IAAoB,EAAA,aAExB,CACF,GAEM,CAAC,GAAS,KAAc,EAAmB,CAAC,CAAC;CAwBnD,OAtBA,QAAgB;EACV,CAAC,KAAe,CAAC,KAAoB,CAAC,KAE1C,QAAQ,IACN,EAAS,KAAI,MAAO;GAClB,IAAM,IAAW,EAAI,OAAO,IAAmB,KAAK;GAEpD,OADK,IACE,EACL,GACA,GACA,CAAC;IAAE,OAAO;IAAkB,YAAY;GAAS,CAAC,CACpD,IALsB,QAAQ,QAAQ,CAAW;EAMnD,CAAC,CACH,EAAE,KAAK,CAAU;CACnB,GAAG;EACD;EACA;EACA;EACA;EACA;CACF,CAAC,GAGC,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACG,KACC,kBAAC,GAAD;GAAO,WAAW,EAAO;aAAzB;IACG,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,WAAW,EAAO;eAEjB;IACS,CAAA;IAEb,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,WAAU;KACV,WAAW,EAAO;eAEjB;IACS,CAAA;IAEb,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,WAAW,EAAO;KAClB,GAAI;eAEH;IACK,CAAA;GAEL;MAET,kBAAC,OAAD;GAAK,WAAW,EAAO;aACpB,EAAS,KAAK,GAAK,MAAU;IAC5B,IAAM,IAAW,EAAI,OAAO,MAAqB,IAC3C,IAAW,EAAI,OAAO,MAAqB,KAAA,GAC3C,IAAS,EAAQ,IACjB,IAAY,EAAI,OAAO,MAAsB;IACnD,OACE,kBAAC,KAAD;KAAmB,WAAW,EAAO;KAAS,MAAM;eAClD,kBAAC,OAAD;MAAK,WAAW,EAAO;gBAAvB,CACE,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAvB,CACE,kBAAC,OAAD;QACE,WAAW,EAAO;QAClB,OAAO,IAAW,EAAE,iBAAiB,EAAS,IAAI,KAAA;kBAElD,kBAAC,GAAD;SACE,SAAS;SACT,cAAc,EAAI,OAAO;SACzB,KAAK,EAAI,OAAO,MAAqB;SACrC,OAAO;UAAE,OAAO;UAAI,QAAQ;SAAG;QAChC,CAAA;OACE,CAAA,GACL,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,GAAD;SAAY,WAAW,EAAO;mBAC3B;QACS,CAAA,GACX,KACC,kBAAC,OAAD;SAAK,WAAW,EAAO;mBAAY;QAAe,CAAA,CAEjD;SACF;UACJ,KACC,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAvB,CACE,kBAAC,QAAD;QAAM,WAAW,EAAO;kBAAa;OAAU,CAAA,GAC/C,kBAAC,GAAD,EAAkB,WAAW,EAAO,YAAc,CAAA,CAC/C;QAEJ;;IACJ,GA9BK,EAAI,KA8BT;GAEP,CAAC;EACE,CAAA,CACF;;AAET"}
1
+ {"version":3,"file":"DataExplorer.js","names":[],"sources":["../../../src/components/DataExplorer/DataExplorer.tsx"],"sourcesContent":["import { Button, Typography, Stack } from '@mui/material'\nimport { useEffect, useMemo, useState } from 'react'\nimport styles from './DataExplorer.module.scss'\nimport { useSmartLink } from '../SmartLink/useSmartLink'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions'\nimport {\n QueryBundleRequest,\n FacetColumnResultValues,\n} from '@sage-bionetworks/synapse-types'\nimport { SynapseConstants } from '@/utils'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport { generateEncodedPathAndQueryForSelectedFacetURL } from '../QueryWrapper'\nimport ImageFromSynapseTable from '../ImageFromSynapseTable'\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward'\nimport { getFacets } from '../widgets/facet-nav/useFacetPlots'\nimport { orderBy } from 'lodash-es'\n\ntype DataExplorerProps = {\n title?: React.ReactNode\n subtitle?: React.ReactNode\n buttonText?: string\n buttonLink?: string\n sql: string\n explorePath?: string\n exploreQuerySql?: string\n facetSql?: string\n}\n\nenum ExpectedColumns {\n DATATYPE = 'datatype',\n ICON = 'icon',\n HEX_COLOR = 'hexColor',\n ORDER = 'order',\n COLUMN_NAME = 'columnName',\n}\n\n/**\n * DataExplorer\n *\n * A reusable component that renders a list of data types/categories with associated icons.\n * It drives navigation by linking each row to a pre-filtered exploration view.\n *\n * How it works:\n * 1. `sql`: Fetches a configuration table defining the display categories,\n * their display order, hex colors, and icons.\n * 2. `facetSql`: Fetches real-time counts for these categories from the actual\n * underlying data table.\n * 3. Links are dynamically built to point to a target path (`explorePath`) pre-filtered to the\n * clicked category.\n */\nexport default function DataExplorer({\n sql,\n title,\n subtitle,\n buttonText,\n buttonLink,\n explorePath,\n exploreQuerySql,\n facetSql,\n}: DataExplorerProps) {\n const hasTextSection = title || subtitle || buttonText\n const smartLinkProps = useSmartLink(buttonLink)\n\n const entityId = parseEntityIdFromSqlStatement(sql)\n const facetEntityId = parseEntityIdFromSqlStatement(facetSql ?? '')\n\n const queryBundleRequest: QueryBundleRequest = {\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n query: {\n sql,\n },\n }\n\n const facetQueryRequest: QueryBundleRequest = {\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_FACETS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: facetEntityId,\n query: {\n sql: facetSql ?? '',\n },\n }\n\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const dataRows = useMemo(\n () => queryResultBundle?.queryResult?.queryResults.rows ?? [],\n [queryResultBundle],\n )\n\n const { data: facetQueryResultBundle } = useGetQueryResultBundle(\n facetQueryRequest,\n { enabled: Boolean(facetSql) },\n )\n\n const datatypeColIndex = getFieldIndex(\n ExpectedColumns.DATATYPE,\n queryResultBundle,\n )\n\n const iconColIndex = getFieldIndex(ExpectedColumns.ICON, queryResultBundle)\n\n const hexColorColIndex = getFieldIndex(\n ExpectedColumns.HEX_COLOR,\n queryResultBundle,\n )\n\n const orderColIndex = getFieldIndex(ExpectedColumns.ORDER, queryResultBundle)\n\n const columnNameColIndex = getFieldIndex(\n ExpectedColumns.COLUMN_NAME,\n queryResultBundle,\n )\n\n // Key rows by columnName + dataType to prevent collisions when the same dataType appears in multiple columns.\n const getRowKey = (dataType: string, columnName: string) =>\n columnName ? `${columnName}::${dataType}` : dataType\n\n const [rowUrls, setRowUrls] = useState<Record<string, string>>({})\n\n useEffect(() => {\n if (!explorePath || !exploreQuerySql) return\n Promise.all(\n dataRows.map(row => {\n const dataType = row.values[datatypeColIndex]?.trim() ?? ''\n const columnName = row.values[columnNameColIndex]?.trim() ?? ''\n const rowKey = getRowKey(dataType, columnName)\n if (!dataType || !columnName)\n return Promise.resolve([rowKey, explorePath] as const)\n return generateEncodedPathAndQueryForSelectedFacetURL(\n explorePath,\n exploreQuerySql,\n [{ facet: columnName, facetValue: dataType }],\n ).then(url => [rowKey, url] as const)\n }),\n ).then(entries => setRowUrls(Object.fromEntries(entries)))\n }, [\n dataRows,\n datatypeColIndex,\n columnNameColIndex,\n explorePath,\n exploreQuerySql,\n ])\n\n // Create a map of facet counts by column name and data type for quick lookup\n const facetCountsByColumn = useMemo(() => {\n const facets = getFacets(\n facetQueryResultBundle,\n ) as FacetColumnResultValues[]\n const map = new Map<string, Map<string, number>>()\n for (const facet of facets) {\n map.set(\n facet.columnName,\n new Map(facet.facetValues.map(fv => [fv.value, fv.count])),\n )\n }\n return map\n }, [facetQueryResultBundle])\n\n const getFacetCount = (dataType: string, columnName?: string) =>\n columnName ? facetCountsByColumn.get(columnName)?.get(dataType) : undefined\n\n // Sort by order column ascending, then by facet count descending\n const sortedRows = orderBy(\n dataRows,\n [\n row => Number(row.values[orderColIndex] ?? Number.MAX_SAFE_INTEGER),\n row =>\n getFacetCount(\n row.values[datatypeColIndex]?.trim() ?? '',\n row.values[columnNameColIndex]?.trim() ?? '',\n ) ?? 0,\n ],\n ['asc', 'desc'],\n )\n\n return (\n <div className={styles.dataExplorerContainer}>\n {hasTextSection && (\n <Stack className={styles.dataExplorerTextContainer}>\n {title && (\n <Typography\n variant=\"headline1\"\n className={styles.dataExplorerTitle}\n >\n {title}\n </Typography>\n )}\n {subtitle && (\n <Typography\n variant=\"body1\"\n component=\"div\"\n className={styles.dataExplorerSubtitle}\n >\n {subtitle}\n </Typography>\n )}\n {buttonText && (\n <Button\n variant=\"contained\"\n className={styles.dataExplorerButton}\n {...smartLinkProps}\n >\n {buttonText}\n </Button>\n )}\n </Stack>\n )}\n <div className={styles.dataContainer}>\n {sortedRows.map(row => {\n const dataType = row.values[datatypeColIndex]?.trim() ?? ''\n const hexColor = row.values[hexColorColIndex] ?? undefined\n const columnName = row.values[columnNameColIndex]?.trim() ?? ''\n const rowUrl = rowUrls[getRowKey(dataType, columnName)]\n const facetCount = getFacetCount(dataType, columnName)\n return (\n <a\n key={getRowKey(dataType, columnName)}\n className={styles.dataRow}\n href={rowUrl}\n >\n <div className={styles.dataRowInner}>\n <div className={styles.dataRowLeft}>\n <div\n className={styles.iconContainer}\n style={hexColor ? { backgroundColor: hexColor } : undefined}\n >\n <ImageFromSynapseTable\n tableId={entityId}\n fileHandleId={row.values[iconColIndex]}\n alt={dataType}\n style={{ width: 49, height: 49 }}\n />\n </div>\n <div className={styles.dataRowNamePill}>\n <Typography className={styles.dataRowTitle}>\n {dataType}\n </Typography>\n {facetCount && (\n <div className={styles.facetCount}>{facetCount}</div>\n )}\n </div>\n </div>\n {rowUrl && (\n <div className={styles.viewCta}>\n <span className={styles.viewCtaText}>View</span>\n <ArrowForwardIcon className={styles.viewCtaIcon} />\n </div>\n )}\n </div>\n </a>\n )\n })}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmDA,SAAwB,EAAa,EACnC,QACA,UACA,aACA,eACA,eACA,gBACA,oBACA,eACoB;CACpB,IAAM,IAAiB,KAAS,KAAY,GACtC,IAAiB,EAAa,CAAU,GAExC,IAAW,EAA8B,CAAG,GAC5C,IAAgB,EAA8B,KAAY,EAAE,GAE5D,IAAyC;EAC7C,UACE;EAEF,cAAc;EACd;EACA,OAAO,EACL,OACF;CACF,GAEM,IAAwC;EAC5C,UAAU;EACV,cAAc;EACd,UAAU;EACV,OAAO,EACL,KAAK,KAAY,GACnB;CACF,GAEM,EAAE,MAAM,MACZ,EAAwB,CAAkB,GAEtC,IAAW,QACT,GAAmB,aAAa,aAAa,QAAQ,CAAC,GAC5D,CAAC,CAAiB,CACpB,GAEM,EAAE,MAAM,MAA2B,EACvC,GACA,EAAE,SAAS,EAAQ,EAAU,CAC/B,GAEM,IAAmB,EAAA,YAEvB,CACF,GAEM,IAAe,EAAA,QAAoC,CAAiB,GAEpE,IAAmB,EAAA,YAEvB,CACF,GAEM,IAAgB,EAAA,SAAqC,CAAiB,GAEtE,IAAqB,EAAA,cAEzB,CACF,GAGM,KAAa,GAAkB,MACnC,IAAa,GAAG,EAAW,IAAI,MAAa,GAExC,CAAC,GAAS,KAAc,EAAiC,CAAC,CAAC;CAEjE,QAAgB;EACV,CAAC,KAAe,CAAC,KACrB,QAAQ,IACN,EAAS,KAAI,MAAO;GAClB,IAAM,IAAW,EAAI,OAAO,IAAmB,KAAK,KAAK,IACnD,IAAa,EAAI,OAAO,IAAqB,KAAK,KAAK,IACvD,IAAS,EAAU,GAAU,CAAU;GAG7C,OAFI,CAAC,KAAY,CAAC,IACT,QAAQ,QAAQ,CAAC,GAAQ,CAAW,CAAU,IAChD,EACL,GACA,GACA,CAAC;IAAE,OAAO;IAAY,YAAY;GAAS,CAAC,CAC9C,EAAE,MAAK,MAAO,CAAC,GAAQ,CAAG,CAAU;EACtC,CAAC,CACH,EAAE,MAAK,MAAW,EAAW,OAAO,YAAY,CAAO,CAAC,CAAC;CAC3D,GAAG;EACD;EACA;EACA;EACA;EACA;CACF,CAAC;CAGD,IAAM,IAAsB,QAAc;EACxC,IAAM,IAAS,EACb,CACF,GACM,oBAAM,IAAI,IAAiC;EACjD,KAAK,IAAM,KAAS,GAClB,EAAI,IACF,EAAM,YACN,IAAI,IAAI,EAAM,YAAY,KAAI,MAAM,CAAC,EAAG,OAAO,EAAG,KAAK,CAAC,CAAC,CAC3D;EAEF,OAAO;CACT,GAAG,CAAC,CAAsB,CAAC,GAErB,KAAiB,GAAkB,MACvC,IAAa,EAAoB,IAAI,CAAU,GAAG,IAAI,CAAQ,IAAI,KAAA,GAG9D,IAAa,EACjB,GACA,EACE,MAAO,OAAO,EAAI,OAAO,iBAAyC,IAClE,MACE,EACE,EAAI,OAAO,IAAmB,KAAK,KAAK,IACxC,EAAI,OAAO,IAAqB,KAAK,KAAK,EAC5C,KAAK,CACT,GACA,CAAC,OAAO,MAAM,CAChB;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACG,KACC,kBAAC,GAAD;GAAO,WAAW,EAAO;aAAzB;IACG,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,WAAW,EAAO;eAEjB;IACS,CAAA;IAEb,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,WAAU;KACV,WAAW,EAAO;eAEjB;IACS,CAAA;IAEb,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,WAAW,EAAO;KAClB,GAAI;eAEH;IACK,CAAA;GAEL;MAET,kBAAC,OAAD;GAAK,WAAW,EAAO;aACpB,EAAW,KAAI,MAAO;IACrB,IAAM,IAAW,EAAI,OAAO,IAAmB,KAAK,KAAK,IACnD,IAAW,EAAI,OAAO,MAAqB,KAAA,GAC3C,IAAa,EAAI,OAAO,IAAqB,KAAK,KAAK,IACvD,IAAS,EAAQ,EAAU,GAAU,CAAU,IAC/C,IAAa,EAAc,GAAU,CAAU;IACrD,OACE,kBAAC,KAAD;KAEE,WAAW,EAAO;KAClB,MAAM;eAEN,kBAAC,OAAD;MAAK,WAAW,EAAO;gBAAvB,CACE,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAvB,CACE,kBAAC,OAAD;QACE,WAAW,EAAO;QAClB,OAAO,IAAW,EAAE,iBAAiB,EAAS,IAAI,KAAA;kBAElD,kBAAC,GAAD;SACE,SAAS;SACT,cAAc,EAAI,OAAO;SACzB,KAAK;SACL,OAAO;UAAE,OAAO;UAAI,QAAQ;SAAG;QAChC,CAAA;OACE,CAAA,GACL,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,GAAD;SAAY,WAAW,EAAO;mBAC3B;QACS,CAAA,GACX,KACC,kBAAC,OAAD;SAAK,WAAW,EAAO;mBAAa;QAAgB,CAAA,CAEnD;SACF;UACJ,KACC,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAvB,CACE,kBAAC,QAAD;QAAM,WAAW,EAAO;kBAAa;OAAU,CAAA,GAC/C,kBAAC,GAAD,EAAkB,WAAW,EAAO,YAAc,CAAA,CAC/C;QAEJ;;IACJ,GAjCI,EAAU,GAAU,CAAU,CAiClC;GAEP,CAAC;EACE,CAAA,CACF;;AAET"}
@@ -1,20 +1,20 @@
1
1
  import './DataExplorer.css';var e = {
2
- dataExplorerTitle: "_dataExplorerTitle_pjkyv_1",
3
- dataExplorerSubtitle: "_dataExplorerSubtitle_pjkyv_7",
4
- dataExplorerButton: "_dataExplorerButton_pjkyv_12",
5
- dataExplorerTextContainer: "_dataExplorerTextContainer_pjkyv_17",
6
- dataExplorerContainer: "_dataExplorerContainer_pjkyv_27",
7
- dataContainer: "_dataContainer_pjkyv_41",
8
- dataRowTitle: "_dataRowTitle_pjkyv_51",
9
- dataRowInner: "_dataRowInner_pjkyv_67",
10
- dataRow: "_dataRow_pjkyv_51",
11
- viewCta: "_viewCta_pjkyv_96",
12
- dataRowLeft: "_dataRowLeft_pjkyv_101",
13
- iconContainer: "_iconContainer_pjkyv_109",
14
- dataRowNamePill: "_dataRowNamePill_pjkyv_119",
15
- fileCount: "_fileCount_pjkyv_127",
16
- viewCtaText: "_viewCtaText_pjkyv_160",
17
- viewCtaIcon: "_viewCtaIcon_pjkyv_167"
2
+ dataExplorerTitle: "_dataExplorerTitle_1ezpn_1",
3
+ dataExplorerSubtitle: "_dataExplorerSubtitle_1ezpn_7",
4
+ dataExplorerButton: "_dataExplorerButton_1ezpn_12",
5
+ dataExplorerTextContainer: "_dataExplorerTextContainer_1ezpn_17",
6
+ dataExplorerContainer: "_dataExplorerContainer_1ezpn_27",
7
+ dataContainer: "_dataContainer_1ezpn_41",
8
+ dataRowTitle: "_dataRowTitle_1ezpn_51",
9
+ dataRowInner: "_dataRowInner_1ezpn_67",
10
+ dataRow: "_dataRow_1ezpn_51",
11
+ viewCta: "_viewCta_1ezpn_96",
12
+ dataRowLeft: "_dataRowLeft_1ezpn_101",
13
+ iconContainer: "_iconContainer_1ezpn_109",
14
+ dataRowNamePill: "_dataRowNamePill_1ezpn_119",
15
+ facetCount: "_facetCount_1ezpn_127",
16
+ viewCtaText: "_viewCtaText_1ezpn_160",
17
+ viewCtaIcon: "_viewCtaIcon_1ezpn_167"
18
18
  };
19
19
  //#endregion
20
20
  export { e as default };