synapse-react-client 4.0.35 → 4.0.36

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 (260) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/aridhia-queries/AridhiaKeyFactory.d.ts +24 -0
  3. package/dist/aridhia-queries/AridhiaKeyFactory.d.ts.map +1 -0
  4. package/dist/aridhia-queries/AridhiaKeyFactory.js +49 -0
  5. package/dist/aridhia-queries/AridhiaKeyFactory.js.map +1 -0
  6. package/dist/aridhia-queries/FairFormPayload.d.ts +45 -0
  7. package/dist/aridhia-queries/FairFormPayload.d.ts.map +1 -0
  8. package/dist/aridhia-queries/FairFormPayload.js +0 -0
  9. package/dist/aridhia-queries/TransferType.d.ts +10 -0
  10. package/dist/aridhia-queries/TransferType.d.ts.map +1 -0
  11. package/dist/aridhia-queries/TransferType.js +0 -0
  12. package/dist/aridhia-queries/aridhiaTokenExchange.js +6 -6
  13. package/dist/aridhia-queries/index.d.ts +12 -0
  14. package/dist/aridhia-queries/index.d.ts.map +1 -1
  15. package/dist/aridhia-queries/index.js +12 -2
  16. package/dist/aridhia-queries/useAridhiaQuery.d.ts +37 -0
  17. package/dist/aridhia-queries/useAridhiaQuery.d.ts.map +1 -0
  18. package/dist/aridhia-queries/useAridhiaQuery.js +71 -0
  19. package/dist/aridhia-queries/useAridhiaQuery.js.map +1 -0
  20. package/dist/aridhia-queries/useGetAridhiaDatasetCatalogue.d.ts +6 -0
  21. package/dist/aridhia-queries/useGetAridhiaDatasetCatalogue.d.ts.map +1 -0
  22. package/dist/aridhia-queries/useGetAridhiaDatasetCatalogue.js +13 -0
  23. package/dist/aridhia-queries/useGetAridhiaDatasetCatalogue.js.map +1 -0
  24. package/dist/aridhia-queries/useGetAridhiaDatasetSettings.d.ts +6 -0
  25. package/dist/aridhia-queries/useGetAridhiaDatasetSettings.d.ts.map +1 -0
  26. package/dist/aridhia-queries/useGetAridhiaDatasetSettings.js +13 -0
  27. package/dist/aridhia-queries/useGetAridhiaDatasetSettings.js.map +1 -0
  28. package/dist/aridhia-queries/useGetAridhiaDictionaries.d.ts +6 -0
  29. package/dist/aridhia-queries/useGetAridhiaDictionaries.d.ts.map +1 -0
  30. package/dist/aridhia-queries/useGetAridhiaDictionaries.js +13 -0
  31. package/dist/aridhia-queries/useGetAridhiaDictionaries.js.map +1 -0
  32. package/dist/aridhia-queries/useGetAridhiaRequests.d.ts +5 -4
  33. package/dist/aridhia-queries/useGetAridhiaRequests.d.ts.map +1 -1
  34. package/dist/aridhia-queries/useGetAridhiaRequests.js +11 -18
  35. package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
  36. package/dist/aridhia-queries/useGetAridhiaWorkflow.d.ts +13 -0
  37. package/dist/aridhia-queries/useGetAridhiaWorkflow.d.ts.map +1 -0
  38. package/dist/aridhia-queries/useGetAridhiaWorkflow.js +19 -0
  39. package/dist/aridhia-queries/useGetAridhiaWorkflow.js.map +1 -0
  40. package/dist/aridhia-queries/useGetAridhiaWorkspaceLocations.d.ts +6 -0
  41. package/dist/aridhia-queries/useGetAridhiaWorkspaceLocations.d.ts.map +1 -0
  42. package/dist/aridhia-queries/useGetAridhiaWorkspaceLocations.js +13 -0
  43. package/dist/aridhia-queries/useGetAridhiaWorkspaceLocations.js.map +1 -0
  44. package/dist/aridhia-queries/useGetAridhiaWorkspaceRequestForm.d.ts +19 -0
  45. package/dist/aridhia-queries/useGetAridhiaWorkspaceRequestForm.d.ts.map +1 -0
  46. package/dist/aridhia-queries/useGetAridhiaWorkspaceRequestForm.js +17 -0
  47. package/dist/aridhia-queries/useGetAridhiaWorkspaceRequestForm.js.map +1 -0
  48. package/dist/aridhia-queries/useGetAridhiaWorkspaces.d.ts +6 -0
  49. package/dist/aridhia-queries/useGetAridhiaWorkspaces.d.ts.map +1 -0
  50. package/dist/aridhia-queries/useGetAridhiaWorkspaces.js +19 -0
  51. package/dist/aridhia-queries/useGetAridhiaWorkspaces.js.map +1 -0
  52. package/dist/aridhia-queries/useSubmitAridhiaDar.d.ts +27 -0
  53. package/dist/aridhia-queries/useSubmitAridhiaDar.d.ts.map +1 -0
  54. package/dist/aridhia-queries/useSubmitAridhiaDar.js +38 -0
  55. package/dist/aridhia-queries/useSubmitAridhiaDar.js.map +1 -0
  56. package/dist/components/AccessRequirement/EntityActionsRequired.d.ts +0 -1
  57. package/dist/components/AccessRequirement/EntityActionsRequired.d.ts.map +1 -1
  58. package/dist/components/AccessRequirement/EntityActionsRequired.js +3 -6
  59. package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
  60. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
  61. package/dist/components/AccessRequirementList/AccessRequirementList.js +116 -115
  62. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  63. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
  64. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +67 -57
  65. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
  66. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts +3 -3
  67. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts.map +1 -1
  68. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +1 -1
  69. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  70. package/dist/components/CardContainer/CardConfiguration.d.ts +8 -0
  71. package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
  72. package/dist/components/ChangePassword/ChangePasswordWithToken.d.ts.map +1 -1
  73. package/dist/components/ChangePassword/ChangePasswordWithToken.js +58 -23
  74. package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
  75. package/dist/components/ChangePassword/useChangePasswordFormState.d.ts.map +1 -1
  76. package/dist/components/ChangePassword/useChangePasswordFormState.js +13 -3
  77. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  78. package/dist/components/CreateTableViewWizard/TableNameForm.d.ts.map +1 -1
  79. package/dist/components/CreateTableViewWizard/TableNameForm.js +11 -14
  80. package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
  81. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts +1 -1
  82. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -1
  83. package/dist/components/DataGrid/SyncGridWithSourceButton.js +55 -61
  84. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
  85. package/dist/components/DataGrid/components/contextMenu.d.ts.map +1 -1
  86. package/dist/components/DataGrid/components/contextMenu.js +15 -15
  87. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  88. package/dist/components/DataGrid/useMergeGridWithSource.d.ts +1 -5
  89. package/dist/components/DataGrid/useMergeGridWithSource.d.ts.map +1 -1
  90. package/dist/components/DataGrid/useMergeGridWithSource.js +21 -28
  91. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  92. package/dist/components/DatasetHosting/DatasetDownloadButton.d.ts +35 -0
  93. package/dist/components/DatasetHosting/DatasetDownloadButton.d.ts.map +1 -0
  94. package/dist/components/DatasetHosting/DatasetDownloadButton.js +132 -0
  95. package/dist/components/DatasetHosting/DatasetDownloadButton.js.map +1 -0
  96. package/dist/components/DatasetHosting/DatasetHosting.d.ts +91 -0
  97. package/dist/components/DatasetHosting/DatasetHosting.d.ts.map +1 -0
  98. package/dist/components/DatasetHosting/DatasetHosting.js +58 -0
  99. package/dist/components/DatasetHosting/DatasetHosting.js.map +1 -0
  100. package/dist/components/DatasetHosting/index.d.ts +5 -0
  101. package/dist/components/DatasetHosting/index.d.ts.map +1 -0
  102. package/dist/components/DatasetHosting/index.js +3 -0
  103. package/dist/components/DownloadCart/ActionRequiredListItem.d.ts +0 -2
  104. package/dist/components/DownloadCart/ActionRequiredListItem.d.ts.map +1 -1
  105. package/dist/components/DownloadCart/ActionRequiredListItem.js +2 -3
  106. package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
  107. package/dist/components/DownloadCart/DownloadCartPage.d.ts +1 -2
  108. package/dist/components/DownloadCart/DownloadCartPage.d.ts.map +1 -1
  109. package/dist/components/DownloadCart/DownloadCartPage.js +49 -49
  110. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  111. package/dist/components/DownloadCart/DownloadListActionsRequired.d.ts +1 -5
  112. package/dist/components/DownloadCart/DownloadListActionsRequired.d.ts.map +1 -1
  113. package/dist/components/DownloadCart/DownloadListActionsRequired.js +5 -6
  114. package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
  115. package/dist/components/DownloadCart/RequestDownloadCard.d.ts +0 -2
  116. package/dist/components/DownloadCart/RequestDownloadCard.d.ts.map +1 -1
  117. package/dist/components/DownloadCart/RequestDownloadCard.js +28 -32
  118. package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
  119. package/dist/components/DownloadCart/TableQueryActionsRequired.d.ts +0 -2
  120. package/dist/components/DownloadCart/TableQueryActionsRequired.d.ts.map +1 -1
  121. package/dist/components/DownloadCart/TableQueryActionsRequired.js +7 -8
  122. package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
  123. package/dist/components/DownloadCart/index.d.ts +1 -2
  124. package/dist/components/DownloadCart/index.d.ts.map +1 -1
  125. package/dist/components/GenericCard/CardActionButtonStyleContext.d.ts +10 -0
  126. package/dist/components/GenericCard/CardActionButtonStyleContext.d.ts.map +1 -0
  127. package/dist/components/GenericCard/CardActionButtonStyleContext.js +10 -0
  128. package/dist/components/GenericCard/CardActionButtonStyleContext.js.map +1 -0
  129. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +41 -41
  130. package/dist/components/GenericCard/GenericCardActionButton.d.ts +5 -0
  131. package/dist/components/GenericCard/GenericCardActionButton.d.ts.map +1 -1
  132. package/dist/components/GenericCard/GenericCardActionButton.js +28 -11
  133. package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
  134. package/dist/components/GenericCard/TableRowGenericCard.d.ts +24 -0
  135. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  136. package/dist/components/GenericCard/TableRowGenericCard.js +205 -190
  137. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  138. package/dist/components/JSONArrayEditor/JSONArrayEditor.d.ts.map +1 -1
  139. package/dist/components/JSONArrayEditor/JSONArrayEditor.js +42 -42
  140. package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
  141. package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -0
  142. package/dist/components/JsonSchemaForm/JsonSchemaForm.d.ts.map +1 -1
  143. package/dist/components/JsonSchemaForm/JsonSchemaForm.js +13 -12
  144. package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
  145. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +5 -0
  146. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -0
  147. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +109 -0
  148. package/dist/components/QueryBuilder/QueryBuilderTypes.d.ts +39 -0
  149. package/dist/components/QueryBuilder/QueryBuilderTypes.d.ts.map +1 -0
  150. package/dist/components/QueryBuilder/QueryBuilderTypes.js +11 -0
  151. package/dist/components/QueryBuilder/QueryBuilderTypes.js.map +1 -0
  152. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +48 -0
  153. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -0
  154. package/dist/components/QueryBuilder/queryBuilderTranslation.js +256 -0
  155. package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -0
  156. package/dist/components/QueryContext/QueryContext.d.ts +0 -1
  157. package/dist/components/QueryContext/QueryContext.d.ts.map +1 -1
  158. package/dist/components/QueryContext/QueryContext.js.map +1 -1
  159. package/dist/components/QueryWrapper/QueryWrapper.d.ts +0 -1
  160. package/dist/components/QueryWrapper/QueryWrapper.d.ts.map +1 -1
  161. package/dist/components/QueryWrapper/QueryWrapper.js +52 -53
  162. package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
  163. package/dist/components/QueryWrapperErrorBoundary.d.ts.map +1 -1
  164. package/dist/components/QueryWrapperErrorBoundary.js +4 -11
  165. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  166. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +0 -1
  167. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  168. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  169. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js +123 -123
  170. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
  171. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.d.ts.map +1 -1
  172. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js +0 -1
  173. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
  174. package/dist/components/ShareThisPage/ShareThisPage.js +30 -29
  175. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  176. package/dist/components/SynapseChat/GridAgentChat.d.ts.map +1 -1
  177. package/dist/components/SynapseChat/GridAgentChat.js +29 -31
  178. package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
  179. package/dist/components/SynapseTable/SynapseTable.d.ts.map +1 -1
  180. package/dist/components/SynapseTable/SynapseTable.js +2 -1
  181. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  182. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.d.ts.map +1 -1
  183. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js +29 -30
  184. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  185. package/dist/components/TanStackTable/StyledTanStackTable.d.ts +7 -0
  186. package/dist/components/TanStackTable/StyledTanStackTable.d.ts.map +1 -1
  187. package/dist/components/TanStackTable/StyledTanStackTable.js +68 -48
  188. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  189. package/dist/components/TanStackTable/useSyncedTopScrollbar.d.ts +13 -0
  190. package/dist/components/TanStackTable/useSyncedTopScrollbar.d.ts.map +1 -0
  191. package/dist/components/TanStackTable/useSyncedTopScrollbar.js +32 -0
  192. package/dist/components/TanStackTable/useSyncedTopScrollbar.js.map +1 -0
  193. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
  194. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +36 -34
  195. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
  196. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js +1 -1
  197. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  198. package/dist/components/doi/CreateOrUpdateDoiModal.d.ts.map +1 -1
  199. package/dist/components/doi/CreateOrUpdateDoiModal.js +10 -13
  200. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  201. package/dist/components/index.d.ts +1 -0
  202. package/dist/components/index.d.ts.map +1 -1
  203. package/dist/components/index.js +143 -140
  204. package/dist/components/menu/DropdownMenu.d.ts.map +1 -1
  205. package/dist/components/menu/DropdownMenu.js +6 -6
  206. package/dist/components/menu/DropdownMenu.js.map +1 -1
  207. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +5 -5
  208. package/dist/index.js +161 -159
  209. package/dist/index.js.map +1 -1
  210. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
  211. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +30 -26
  212. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  213. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.d.ts +1 -0
  214. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.d.ts.map +1 -1
  215. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js +7 -1
  216. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
  217. package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
  218. package/dist/mocks/msw/handlers/userProfileHandlers.js +4 -0
  219. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  220. package/dist/style/components/_all.scss +0 -1
  221. package/dist/style/components/_cards.scss +4 -2
  222. package/dist/style/main.css +1 -1
  223. package/dist/synapse-queries/KeyFactory.d.ts +1 -0
  224. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  225. package/dist/synapse-queries/KeyFactory.js +3 -0
  226. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  227. package/dist/synapse-queries/dataaccess/index.js +4 -4
  228. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +7 -0
  229. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  230. package/dist/synapse-queries/dataaccess/useEDuc.js +11 -3
  231. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  232. package/dist/synapse-queries/index.js +190 -189
  233. package/dist/tsconfig.build.tsbuildinfo +1 -1
  234. package/dist/utils/APIConstants.d.ts +1 -0
  235. package/dist/utils/APIConstants.d.ts.map +1 -1
  236. package/dist/utils/APIConstants.js +2 -2
  237. package/dist/utils/APIConstants.js.map +1 -1
  238. package/dist/utils/featureflag/FeatureFlags.d.ts +1 -4
  239. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  240. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  241. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  242. package/dist/utils/functions/RegularExpressions.d.ts +10 -0
  243. package/dist/utils/functions/RegularExpressions.d.ts.map +1 -1
  244. package/dist/utils/functions/RegularExpressions.js +7 -1
  245. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  246. package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
  247. package/dist/utils/functions/SqlFunctions.js +19 -3
  248. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  249. package/dist/utils/index.js +16 -16
  250. package/dist/utils/types/IsType.d.ts +4 -1
  251. package/dist/utils/types/IsType.d.ts.map +1 -1
  252. package/dist/utils/types/IsType.js +4 -4
  253. package/dist/utils/types/IsType.js.map +1 -1
  254. package/dist/utils/types/index.js +2 -2
  255. package/package.json +7 -7
  256. package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts +0 -12
  257. package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts.map +0 -1
  258. package/dist/components/DataGrid/useMergeGridWithRecordSet.js +0 -25
  259. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +0 -1
  260. package/dist/style/components/_annotations.scss +0 -110
@@ -1,19 +1,20 @@
1
- import { CopyToClipboardIcon as e } from "../CopyToClipboardIcon.js";
2
- import t from "./ShareThisPage.module.js";
3
- import { useCreateShortUrl as n } from "../../utils/hooks/useCreateShortUrl.js";
4
- import { useEffect as r, useState as i } from "react";
5
- import { Box as a, Button as o, Dialog as s, DialogContent as c, DialogTitle as l, IconButton as u, Input as d, Typography as f } from "@mui/material";
1
+ import e from "../GenericCard/GenericCardActionButton.js";
2
+ import { CopyToClipboardIcon as t } from "../CopyToClipboardIcon.js";
3
+ import n from "./ShareThisPage.module.js";
4
+ import { useCreateShortUrl as r } from "../../utils/hooks/useCreateShortUrl.js";
5
+ import { useEffect as i, useState as a } from "react";
6
+ import { Box as o, Dialog as s, DialogContent as c, DialogTitle as l, IconButton as u, Input as d, Typography as f } from "@mui/material";
6
7
  import { jsx as p, jsxs as m } from "react/jsx-runtime";
7
8
  import { ShareTwoTone as h } from "@mui/icons-material";
8
9
  import g from "@mui/icons-material/Close";
9
10
  import { BlueskyIcon as _, BlueskyShareButton as v, LinkedinIcon as y, LinkedinShareButton as b, TwitterShareButton as x, XIcon as S } from "react-share";
10
11
  //#region src/components/ShareThisPage/ShareThisPage.tsx
11
12
  var C = ({ shortIoPublicApiKey: C, domain: w = "sageb.io", renderAs: T = "button", open: E, onClose: D }) => {
12
- let [O, k] = i(""), [A, j] = i(!1), M = E === void 0, N = M ? A : E, P = () => {
13
+ let [O, k] = a(""), [A, j] = a(!1), M = E === void 0, N = M ? A : E, P = () => {
13
14
  M && j(!0);
14
15
  }, F = () => {
15
16
  M && j(!1), D && D();
16
- }, { mutate: I, isPending: L } = n({
17
+ }, { mutate: I, isPending: L } = r({
17
18
  shortIoPublicApiKey: C,
18
19
  domain: w,
19
20
  onSuccess: (e) => {
@@ -23,43 +24,43 @@ var C = ({ shortIoPublicApiKey: C, domain: w = "sageb.io", renderAs: T = "button
23
24
  console.error(e), k(window.location.href);
24
25
  }
25
26
  });
26
- return r(() => {
27
+ return i(() => {
27
28
  N && I();
28
- }, [N, I]), /* @__PURE__ */ m("div", { children: [T === "button" && /* @__PURE__ */ p(o, {
29
+ }, [N, I]), /* @__PURE__ */ m("div", { children: [T === "button" && /* @__PURE__ */ p(e, {
29
30
  variant: "outlined",
30
- startIcon: /* @__PURE__ */ p(h, { className: t.shareIcon }),
31
+ startIcon: /* @__PURE__ */ p(h, { className: n.shareIcon }),
31
32
  onClick: P,
32
33
  children: "Share"
33
34
  }), /* @__PURE__ */ m(s, {
34
35
  open: N,
35
36
  onClose: F,
36
37
  maxWidth: "xs",
37
- className: t.dialogPaper,
38
+ className: n.dialogPaper,
38
39
  children: [/* @__PURE__ */ m(l, {
39
- className: t.dialogTitle,
40
+ className: n.dialogTitle,
40
41
  children: ["Share this page", /* @__PURE__ */ p(u, {
41
42
  onClick: F,
42
43
  size: "small",
43
- children: /* @__PURE__ */ p(g, { className: t.closeIcon })
44
+ children: /* @__PURE__ */ p(g, { className: n.closeIcon })
44
45
  })]
45
46
  }), /* @__PURE__ */ p(c, {
46
- className: t.dialogContent,
47
- children: /* @__PURE__ */ m(a, {
48
- className: t.contentStack,
47
+ className: n.dialogContent,
48
+ children: /* @__PURE__ */ m(o, {
49
+ className: n.contentStack,
49
50
  children: [/* @__PURE__ */ m("div", {
50
- className: t.shareButtonsContainer,
51
+ className: n.shareButtonsContainer,
51
52
  children: [
52
53
  /* @__PURE__ */ p(b, {
53
54
  url: O,
54
55
  "aria-label": "Share on LinkedIn",
55
56
  children: /* @__PURE__ */ m("div", {
56
- className: t.shareItem,
57
+ className: n.shareItem,
57
58
  children: [/* @__PURE__ */ p(y, {
58
59
  size: 48,
59
60
  round: !0
60
61
  }), /* @__PURE__ */ p(f, {
61
62
  variant: "body1",
62
- className: t.shareItemLabel,
63
+ className: n.shareItemLabel,
63
64
  children: "LinkedIn"
64
65
  })]
65
66
  })
@@ -68,13 +69,13 @@ var C = ({ shortIoPublicApiKey: C, domain: w = "sageb.io", renderAs: T = "button
68
69
  url: O,
69
70
  "aria-label": "Share on X",
70
71
  children: /* @__PURE__ */ m("div", {
71
- className: t.shareItem,
72
+ className: n.shareItem,
72
73
  children: [/* @__PURE__ */ p(S, {
73
74
  size: 48,
74
75
  round: !0
75
76
  }), /* @__PURE__ */ p(f, {
76
77
  variant: "body1",
77
- className: t.shareItemLabel,
78
+ className: n.shareItemLabel,
78
79
  children: "X"
79
80
  })]
80
81
  })
@@ -83,35 +84,35 @@ var C = ({ shortIoPublicApiKey: C, domain: w = "sageb.io", renderAs: T = "button
83
84
  url: O,
84
85
  "aria-label": "Share on Bluesky",
85
86
  children: /* @__PURE__ */ m("div", {
86
- className: t.shareItem,
87
+ className: n.shareItem,
87
88
  children: [/* @__PURE__ */ p(_, {
88
89
  size: 48,
89
90
  round: !0
90
91
  }), /* @__PURE__ */ p(f, {
91
92
  variant: "body1",
92
- className: t.shareItemLabel,
93
+ className: n.shareItemLabel,
93
94
  children: "Bluesky"
94
95
  })]
95
96
  })
96
97
  })
97
98
  ]
98
99
  }), /* @__PURE__ */ m("div", {
99
- className: t.copySection,
100
+ className: n.copySection,
100
101
  children: [/* @__PURE__ */ p(f, {
101
- className: t.copyLabel,
102
+ className: n.copyLabel,
102
103
  children: "Page Link"
103
104
  }), /* @__PURE__ */ m("div", {
104
- className: t.copyRow,
105
+ className: n.copyRow,
105
106
  children: [/* @__PURE__ */ p(d, {
106
- className: t.urlInput,
107
+ className: n.urlInput,
107
108
  value: O,
108
109
  readOnly: !0,
109
110
  "aria-label": "Page URL",
110
111
  placeholder: L ? "Generating link..." : ""
111
- }), /* @__PURE__ */ p(e, {
112
+ }), /* @__PURE__ */ p(t, {
112
113
  value: O,
113
114
  sizePx: 24,
114
- className: t.copyButton
115
+ className: n.copyButton
115
116
  })]
116
117
  })]
117
118
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"ShareThisPage.js","names":[],"sources":["../../../src/components/ShareThisPage/ShareThisPage.tsx"],"sourcesContent":["import {\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n IconButton,\n Typography,\n Input,\n Box,\n} from '@mui/material'\nimport React from 'react'\nimport { useEffect, useState } from 'react'\nimport CloseIcon from '@mui/icons-material/Close'\nimport CopyToClipboardIcon from '../CopyToClipboardIcon'\nimport {\n LinkedinShareButton,\n LinkedinIcon,\n TwitterShareButton,\n BlueskyShareButton,\n BlueskyIcon,\n XIcon,\n} from 'react-share'\nimport styles from './ShareThisPage.module.scss'\nimport { ShareTwoTone } from '@mui/icons-material'\nimport { useCreateShortUrl } from '../../utils/hooks/useCreateShortUrl'\n\nexport type ShareThisPageProps = {\n shortIoPublicApiKey?: string\n domain?: string\n renderAs?: 'button' | 'icon'\n open?: boolean\n onClose?: () => void\n}\n\nconst ShareThisPage = ({\n shortIoPublicApiKey,\n domain = 'sageb.io',\n renderAs = 'button',\n open: externalOpen,\n onClose: externalOnClose,\n}: ShareThisPageProps): React.ReactNode => {\n const [url, setUrl] = useState('')\n const [internalOpen, setInternalOpen] = useState(false)\n\n // Use internal state if externalOpen is undefined\n // Otherwise, the open state is controlled externally by externalOpen\n const isControlled = externalOpen === undefined\n const open = isControlled ? internalOpen : externalOpen\n\n const handleOpen = () => {\n if (isControlled) {\n setInternalOpen(true)\n }\n }\n\n const handleClose = () => {\n if (isControlled) {\n setInternalOpen(false)\n }\n if (externalOnClose) {\n externalOnClose()\n }\n }\n\n const { mutate: createShortUrl, isPending } = useCreateShortUrl({\n shortIoPublicApiKey,\n domain,\n onSuccess: data => {\n setUrl(data)\n },\n onError: error => {\n console.error(error)\n setUrl(window.location.href)\n },\n })\n\n useEffect(() => {\n if (open) {\n createShortUrl()\n }\n }, [open, createShortUrl])\n\n return (\n <div>\n {renderAs === 'button' && (\n <Button\n variant=\"outlined\"\n startIcon={<ShareTwoTone className={styles.shareIcon} />}\n onClick={handleOpen}\n >\n Share\n </Button>\n )}\n\n <Dialog\n open={open}\n onClose={handleClose}\n maxWidth=\"xs\"\n className={styles.dialogPaper}\n >\n <DialogTitle className={styles.dialogTitle}>\n Share this page\n <IconButton onClick={handleClose} size=\"small\">\n <CloseIcon className={styles.closeIcon} />\n </IconButton>\n </DialogTitle>\n\n <DialogContent className={styles.dialogContent}>\n <Box className={styles.contentStack}>\n <div className={styles.shareButtonsContainer}>\n <LinkedinShareButton url={url} aria-label=\"Share on LinkedIn\">\n <div className={styles.shareItem}>\n <LinkedinIcon size={48} round />\n <Typography variant=\"body1\" className={styles.shareItemLabel}>\n LinkedIn\n </Typography>\n </div>\n </LinkedinShareButton>\n\n <TwitterShareButton url={url} aria-label=\"Share on X\">\n <div className={styles.shareItem}>\n <XIcon size={48} round />\n <Typography variant=\"body1\" className={styles.shareItemLabel}>\n X\n </Typography>\n </div>\n </TwitterShareButton>\n\n <BlueskyShareButton url={url} aria-label=\"Share on Bluesky\">\n <div className={styles.shareItem}>\n <BlueskyIcon size={48} round />\n <Typography variant=\"body1\" className={styles.shareItemLabel}>\n Bluesky\n </Typography>\n </div>\n </BlueskyShareButton>\n </div>\n\n <div className={styles.copySection}>\n <Typography className={styles.copyLabel}>Page Link</Typography>\n <div className={styles.copyRow}>\n <Input\n className={styles.urlInput}\n value={url}\n readOnly\n aria-label=\"Page URL\"\n placeholder={isPending ? 'Generating link...' : ''}\n />\n <CopyToClipboardIcon\n value={url}\n sizePx={24}\n className={styles.copyButton}\n />\n </div>\n </div>\n </Box>\n </DialogContent>\n </Dialog>\n </div>\n )\n}\n\nexport default ShareThisPage\n"],"mappings":";;;;;;;;;;AAkCA,IAAM,KAAiB,EACrB,wBACA,YAAS,YACT,cAAW,UACX,MAAM,GACN,SAAS,QACgC;CACzC,IAAM,CAAC,GAAK,KAAU,EAAS,EAAE,GAC3B,CAAC,GAAc,KAAmB,EAAS,EAAK,GAIhD,IAAe,MAAiB,KAAA,GAChC,IAAO,IAAe,IAAe,GAErC,UAAmB;EACvB,AAAI,KACF,EAAgB,EAAI;CAExB,GAEM,UAAoB;EAIxB,AAHI,KACF,EAAgB,EAAK,GAEnB,KACF,EAAgB;CAEpB,GAEM,EAAE,QAAQ,GAAgB,iBAAc,EAAkB;EAC9D;EACA;EACA,YAAW,MAAQ;GACjB,EAAO,CAAI;EACb;EACA,UAAS,MAAS;GAEhB,AADA,QAAQ,MAAM,CAAK,GACnB,EAAO,OAAO,SAAS,IAAI;EAC7B;CACF,CAAC;CAQD,OANA,QAAgB;EACd,AAAI,KACF,EAAe;CAEnB,GAAG,CAAC,GAAM,CAAc,CAAC,GAGvB,kBAAC,OAAD,EAAA,UAAA,CACG,MAAa,YACZ,kBAAC,GAAD;EACE,SAAQ;EACR,WAAW,kBAAC,GAAD,EAAc,WAAW,EAAO,UAAY,CAAA;EACvD,SAAS;YACV;CAEO,CAAA,GAGV,kBAAC,GAAD;EACQ;EACN,SAAS;EACT,UAAS;EACT,WAAW,EAAO;YAJpB,CAME,kBAAC,GAAD;GAAa,WAAW,EAAO;aAA/B,CAA4C,mBAE1C,kBAAC,GAAD;IAAY,SAAS;IAAa,MAAK;cACrC,kBAAC,GAAD,EAAW,WAAW,EAAO,UAAY,CAAA;GAC/B,CAAA,CACD;MAEb,kBAAC,GAAD;GAAe,WAAW,EAAO;aAC/B,kBAAC,GAAD;IAAK,WAAW,EAAO;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB;MACE,kBAAC,GAAD;OAA0B;OAAK,cAAW;iBACxC,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,GAAD;SAAc,MAAM;SAAI,OAAA;QAAO,CAAA,GAC/B,kBAAC,GAAD;SAAY,SAAQ;SAAQ,WAAW,EAAO;mBAAgB;QAElD,CAAA,CACT;;MACc,CAAA;MAErB,kBAAC,GAAD;OAAyB;OAAK,cAAW;iBACvC,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,GAAD;SAAO,MAAM;SAAI,OAAA;QAAO,CAAA,GACxB,kBAAC,GAAD;SAAY,SAAQ;SAAQ,WAAW,EAAO;mBAAgB;QAElD,CAAA,CACT;;MACa,CAAA;MAEpB,kBAAC,GAAD;OAAyB;OAAK,cAAW;iBACvC,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,GAAD;SAAa,MAAM;SAAI,OAAA;QAAO,CAAA,GAC9B,kBAAC,GAAD;SAAY,SAAQ;SAAQ,WAAW,EAAO;mBAAgB;QAElD,CAAA,CACT;;MACa,CAAA;KACjB;QAEL,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB,CACE,kBAAC,GAAD;MAAY,WAAW,EAAO;gBAAW;KAAqB,CAAA,GAC9D,kBAAC,OAAD;MAAK,WAAW,EAAO;gBAAvB,CACE,kBAAC,GAAD;OACE,WAAW,EAAO;OAClB,OAAO;OACP,UAAA;OACA,cAAW;OACX,aAAa,IAAY,uBAAuB;MACjD,CAAA,GACD,kBAAC,GAAD;OACE,OAAO;OACP,QAAQ;OACR,WAAW,EAAO;MACnB,CAAA,CACE;OACF;MACF;;EACQ,CAAA,CACT;GACL,EAAA,CAAA;AAET"}
1
+ {"version":3,"file":"ShareThisPage.js","names":[],"sources":["../../../src/components/ShareThisPage/ShareThisPage.tsx"],"sourcesContent":["import {\n Dialog,\n DialogTitle,\n DialogContent,\n IconButton,\n Typography,\n Input,\n Box,\n} from '@mui/material'\nimport GenericCardActionButton from '../GenericCard/GenericCardActionButton'\nimport React from 'react'\nimport { useEffect, useState } from 'react'\nimport CloseIcon from '@mui/icons-material/Close'\nimport CopyToClipboardIcon from '../CopyToClipboardIcon'\nimport {\n LinkedinShareButton,\n LinkedinIcon,\n TwitterShareButton,\n BlueskyShareButton,\n BlueskyIcon,\n XIcon,\n} from 'react-share'\nimport styles from './ShareThisPage.module.scss'\nimport { ShareTwoTone } from '@mui/icons-material'\nimport { useCreateShortUrl } from '../../utils/hooks/useCreateShortUrl'\n\nexport type ShareThisPageProps = {\n shortIoPublicApiKey?: string\n domain?: string\n renderAs?: 'button' | 'icon'\n open?: boolean\n onClose?: () => void\n}\n\nconst ShareThisPage = ({\n shortIoPublicApiKey,\n domain = 'sageb.io',\n renderAs = 'button',\n open: externalOpen,\n onClose: externalOnClose,\n}: ShareThisPageProps): React.ReactNode => {\n const [url, setUrl] = useState('')\n const [internalOpen, setInternalOpen] = useState(false)\n\n // Use internal state if externalOpen is undefined\n // Otherwise, the open state is controlled externally by externalOpen\n const isControlled = externalOpen === undefined\n const open = isControlled ? internalOpen : externalOpen\n\n const handleOpen = () => {\n if (isControlled) {\n setInternalOpen(true)\n }\n }\n\n const handleClose = () => {\n if (isControlled) {\n setInternalOpen(false)\n }\n if (externalOnClose) {\n externalOnClose()\n }\n }\n\n const { mutate: createShortUrl, isPending } = useCreateShortUrl({\n shortIoPublicApiKey,\n domain,\n onSuccess: data => {\n setUrl(data)\n },\n onError: error => {\n console.error(error)\n setUrl(window.location.href)\n },\n })\n\n useEffect(() => {\n if (open) {\n createShortUrl()\n }\n }, [open, createShortUrl])\n\n return (\n <div>\n {renderAs === 'button' && (\n <GenericCardActionButton\n variant=\"outlined\"\n startIcon={<ShareTwoTone className={styles.shareIcon} />}\n onClick={handleOpen}\n >\n Share\n </GenericCardActionButton>\n )}\n\n <Dialog\n open={open}\n onClose={handleClose}\n maxWidth=\"xs\"\n className={styles.dialogPaper}\n >\n <DialogTitle className={styles.dialogTitle}>\n Share this page\n <IconButton onClick={handleClose} size=\"small\">\n <CloseIcon className={styles.closeIcon} />\n </IconButton>\n </DialogTitle>\n\n <DialogContent className={styles.dialogContent}>\n <Box className={styles.contentStack}>\n <div className={styles.shareButtonsContainer}>\n <LinkedinShareButton url={url} aria-label=\"Share on LinkedIn\">\n <div className={styles.shareItem}>\n <LinkedinIcon size={48} round />\n <Typography variant=\"body1\" className={styles.shareItemLabel}>\n LinkedIn\n </Typography>\n </div>\n </LinkedinShareButton>\n\n <TwitterShareButton url={url} aria-label=\"Share on X\">\n <div className={styles.shareItem}>\n <XIcon size={48} round />\n <Typography variant=\"body1\" className={styles.shareItemLabel}>\n X\n </Typography>\n </div>\n </TwitterShareButton>\n\n <BlueskyShareButton url={url} aria-label=\"Share on Bluesky\">\n <div className={styles.shareItem}>\n <BlueskyIcon size={48} round />\n <Typography variant=\"body1\" className={styles.shareItemLabel}>\n Bluesky\n </Typography>\n </div>\n </BlueskyShareButton>\n </div>\n\n <div className={styles.copySection}>\n <Typography className={styles.copyLabel}>Page Link</Typography>\n <div className={styles.copyRow}>\n <Input\n className={styles.urlInput}\n value={url}\n readOnly\n aria-label=\"Page URL\"\n placeholder={isPending ? 'Generating link...' : ''}\n />\n <CopyToClipboardIcon\n value={url}\n sizePx={24}\n className={styles.copyButton}\n />\n </div>\n </div>\n </Box>\n </DialogContent>\n </Dialog>\n </div>\n )\n}\n\nexport default ShareThisPage\n"],"mappings":";;;;;;;;;;;AAkCA,IAAM,KAAiB,EACrB,wBACA,YAAS,YACT,cAAW,UACX,MAAM,GACN,SAAS,QACgC;CACzC,IAAM,CAAC,GAAK,KAAU,EAAS,EAAE,GAC3B,CAAC,GAAc,KAAmB,EAAS,EAAK,GAIhD,IAAe,MAAiB,KAAA,GAChC,IAAO,IAAe,IAAe,GAErC,UAAmB;EACvB,AAAI,KACF,EAAgB,EAAI;CAExB,GAEM,UAAoB;EAIxB,AAHI,KACF,EAAgB,EAAK,GAEnB,KACF,EAAgB;CAEpB,GAEM,EAAE,QAAQ,GAAgB,iBAAc,EAAkB;EAC9D;EACA;EACA,YAAW,MAAQ;GACjB,EAAO,CAAI;EACb;EACA,UAAS,MAAS;GAEhB,AADA,QAAQ,MAAM,CAAK,GACnB,EAAO,OAAO,SAAS,IAAI;EAC7B;CACF,CAAC;CAQD,OANA,QAAgB;EACd,AAAI,KACF,EAAe;CAEnB,GAAG,CAAC,GAAM,CAAc,CAAC,GAGvB,kBAAC,OAAD,EAAA,UAAA,CACG,MAAa,YACZ,kBAAC,GAAD;EACE,SAAQ;EACR,WAAW,kBAAC,GAAD,EAAc,WAAW,EAAO,UAAY,CAAA;EACvD,SAAS;YACV;CAEwB,CAAA,GAG3B,kBAAC,GAAD;EACQ;EACN,SAAS;EACT,UAAS;EACT,WAAW,EAAO;YAJpB,CAME,kBAAC,GAAD;GAAa,WAAW,EAAO;aAA/B,CAA4C,mBAE1C,kBAAC,GAAD;IAAY,SAAS;IAAa,MAAK;cACrC,kBAAC,GAAD,EAAW,WAAW,EAAO,UAAY,CAAA;GAC/B,CAAA,CACD;MAEb,kBAAC,GAAD;GAAe,WAAW,EAAO;aAC/B,kBAAC,GAAD;IAAK,WAAW,EAAO;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB;MACE,kBAAC,GAAD;OAA0B;OAAK,cAAW;iBACxC,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,GAAD;SAAc,MAAM;SAAI,OAAA;QAAO,CAAA,GAC/B,kBAAC,GAAD;SAAY,SAAQ;SAAQ,WAAW,EAAO;mBAAgB;QAElD,CAAA,CACT;;MACc,CAAA;MAErB,kBAAC,GAAD;OAAyB;OAAK,cAAW;iBACvC,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,GAAD;SAAO,MAAM;SAAI,OAAA;QAAO,CAAA,GACxB,kBAAC,GAAD;SAAY,SAAQ;SAAQ,WAAW,EAAO;mBAAgB;QAElD,CAAA,CACT;;MACa,CAAA;MAEpB,kBAAC,GAAD;OAAyB;OAAK,cAAW;iBACvC,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,GAAD;SAAa,MAAM;SAAI,OAAA;QAAO,CAAA,GAC9B,kBAAC,GAAD;SAAY,SAAQ;SAAQ,WAAW,EAAO;mBAAgB;QAElD,CAAA,CACT;;MACa,CAAA;KACjB;QAEL,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB,CACE,kBAAC,GAAD;MAAY,WAAW,EAAO;gBAAW;KAAqB,CAAA,GAC9D,kBAAC,OAAD;MAAK,WAAW,EAAO;gBAAvB,CACE,kBAAC,GAAD;OACE,WAAW,EAAO;OAClB,OAAO;OACP,UAAA;OACA,cAAW;OACX,aAAa,IAAY,uBAAuB;MACjD,CAAA,GACD,kBAAC,GAAD;OACE,OAAO;OACP,QAAQ;OACR,WAAW,EAAO;MACnB,CAAA,CACE;OACF;MACF;;EACQ,CAAA,CACT;GACL,EAAA,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridAgentChat.d.ts","sourceRoot":"","sources":["../../../src/components/SynapseChat/GridAgentChat.tsx"],"names":[],"mappings":"AAmBA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,wBAAgB,aAAa,CAAC,EAC5B,aAAa,EACb,cAAc,EACd,WAA8B,EAC9B,cAAc,EACd,IAAI,EACJ,OAAO,EACP,mBAAmB,GACpB,EAAE,kBAAkB,2CAsCpB;AAED,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"GridAgentChat.d.ts","sourceRoot":"","sources":["../../../src/components/SynapseChat/GridAgentChat.tsx"],"names":[],"mappings":"AAiBA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,wBAAgB,aAAa,CAAC,EAC5B,aAAa,EACb,cAAc,EACd,WAA8B,EAC9B,cAAc,EACd,IAAI,EACJ,OAAO,EACP,mBAAmB,GACpB,EAAE,kBAAkB,2CAmCpB;AAED,eAAe,aAAa,CAAA"}
@@ -1,52 +1,50 @@
1
- import { useGetFeatureFlag as e } from "../../synapse-queries/featureflags/useGetFeatureFlag.js";
2
- import { FeatureFlagEnum as t } from "../../utils/featureflag/FeatureFlags.js";
3
- import { useChatState as n } from "./useChatState.js";
4
- import { ForwardRef as r } from "../../assets/illustrations/curie_avatar_head.js";
5
- import { SynapseChat as i } from "./SynapseChat.js";
6
- import a from "../DraggableDialog/DraggableDialog.js";
1
+ import { useChatState as e } from "./useChatState.js";
2
+ import { ForwardRef as t } from "../../assets/illustrations/curie_avatar_head.js";
3
+ import { SynapseChat as n } from "./SynapseChat.js";
4
+ import r from "../DraggableDialog/DraggableDialog.js";
7
5
  import "./index.js";
8
- import { useState as o } from "react";
9
- import { jsx as s } from "react/jsx-runtime";
10
- import { AgentAccessLevel as c } from "@sage-bionetworks/synapse-types";
6
+ import { useState as i } from "react";
7
+ import { jsx as a } from "react/jsx-runtime";
8
+ import { AgentAccessLevel as o } from "@sage-bionetworks/synapse-types";
11
9
  //#region src/components/SynapseChat/GridAgentChat.tsx
12
- var l = [
10
+ var s = [
13
11
  "Help me fill this out",
14
12
  "Help me understand this",
15
13
  "Find missing fields"
16
14
  ];
17
- function u({ gridSessionId: u, usersReplicaId: d, chatbotName: f = "Grid Assistant", initialMessage: p, open: m, onClose: h, agentRegistrationId: g }) {
18
- let [_, v] = o(), y = n(_), b = e(t.GRID_AGENT_V2);
19
- return /* @__PURE__ */ s(a, {
20
- open: m,
21
- onClose: h,
22
- title: f,
23
- children: /* @__PURE__ */ s(i, {
24
- agentAvatar: /* @__PURE__ */ s(r, {
15
+ function c({ gridSessionId: c, usersReplicaId: l, chatbotName: u = "Grid Assistant", initialMessage: d, open: f, onClose: p, agentRegistrationId: m }) {
16
+ let [h, g] = i(), _ = e(h);
17
+ return /* @__PURE__ */ a(r, {
18
+ open: f,
19
+ onClose: p,
20
+ title: u,
21
+ children: /* @__PURE__ */ a(n, {
22
+ agentAvatar: /* @__PURE__ */ a(t, {
25
23
  width: 35,
26
24
  height: "auto"
27
25
  }),
28
- agentRegistrationId: g,
29
- chatbotName: f,
30
- initialMessage: p,
26
+ agentRegistrationId: m,
27
+ chatbotName: u,
28
+ initialMessage: d,
31
29
  sessionContext: {
32
30
  concreteType: "org.sagebionetworks.repo.model.agent.GridAgentSessionContext",
33
- gridSessionId: u,
34
- usersReplicaId: d,
35
- experimental: b
31
+ gridSessionId: c,
32
+ usersReplicaId: l,
33
+ experimental: !0
36
34
  },
37
35
  textboxPositionOffset: "16px",
38
36
  hideTitle: !0,
39
37
  showAccessLevelMenu: !1,
40
- defaultAgentAccessLevel: c.WRITE_YOUR_PRIVATE_DATA,
41
- externalSession: _,
42
- setExternalSession: v,
43
- externalChatState: y,
44
- suggestedPrompts: l,
45
- allowAttachments: b
38
+ defaultAgentAccessLevel: o.WRITE_YOUR_PRIVATE_DATA,
39
+ externalSession: h,
40
+ setExternalSession: g,
41
+ externalChatState: _,
42
+ suggestedPrompts: s,
43
+ allowAttachments: !0
46
44
  })
47
45
  });
48
46
  }
49
47
  //#endregion
50
- export { u as GridAgentChat, u as default };
48
+ export { c as GridAgentChat, c as default };
51
49
 
52
50
  //# sourceMappingURL=GridAgentChat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridAgentChat.js","names":[],"sources":["../../../src/components/SynapseChat/GridAgentChat.tsx"],"sourcesContent":["import { useChatState } from '@/components/SynapseChat/useChatState'\nimport {\n AgentSession,\n GridAgentSessionContext,\n} from '@sage-bionetworks/synapse-client'\nimport { AgentAccessLevel } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport DraggableDialog from '../DraggableDialog/DraggableDialog'\nimport { SynapseChat } from './index'\nimport { ReactComponent as CurieAvatarHead } from '@/assets/illustrations/curie_avatar_head.svg'\nimport { useGetFeatureFlag } from '@/synapse-queries/featureflags/useGetFeatureFlag'\nimport { FeatureFlagEnum } from '@/utils/featureflag/FeatureFlags'\n\nconst suggestedPrompts = [\n 'Help me fill this out',\n 'Help me understand this',\n 'Find missing fields',\n]\n\nexport type GridAgentChatProps = {\n gridSessionId: string\n usersReplicaId: number\n chatbotName?: string\n initialMessage?: string\n open: boolean\n onClose: () => void\n /** Optional ID to use a different agent registered in Synapse */\n agentRegistrationId?: string\n}\n\nexport function GridAgentChat({\n gridSessionId,\n usersReplicaId,\n chatbotName = 'Grid Assistant',\n initialMessage,\n open,\n onClose,\n agentRegistrationId,\n}: GridAgentChatProps) {\n // Storing state for the chat session here preserves chat history while the dialog is opened and closed.\n const [agentSession, setAgentSession] = useState<AgentSession | undefined>()\n const chatState = useChatState(agentSession)\n\n // Feature flag to enable the new Grid Agent V2 functionality (multi-agent and attachment support).\n const useGridAgentV2 = useGetFeatureFlag(FeatureFlagEnum.GRID_AGENT_V2)\n\n // Create session context for grid sessions\n const sessionContext: GridAgentSessionContext = {\n concreteType:\n 'org.sagebionetworks.repo.model.agent.GridAgentSessionContext',\n gridSessionId,\n usersReplicaId,\n experimental: useGridAgentV2,\n }\n\n return (\n <DraggableDialog open={open} onClose={onClose} title={chatbotName}>\n <SynapseChat\n agentAvatar={<CurieAvatarHead width={35} height=\"auto\" />}\n agentRegistrationId={agentRegistrationId}\n chatbotName={chatbotName}\n initialMessage={initialMessage}\n sessionContext={sessionContext}\n textboxPositionOffset=\"16px\"\n hideTitle={true}\n showAccessLevelMenu={false}\n defaultAgentAccessLevel={AgentAccessLevel.WRITE_YOUR_PRIVATE_DATA}\n // lift state: allow GridAgentChat to control the agent session and interactions\n externalSession={agentSession}\n setExternalSession={setAgentSession}\n externalChatState={chatState}\n suggestedPrompts={suggestedPrompts}\n allowAttachments={useGridAgentV2}\n />\n </DraggableDialog>\n )\n}\n\nexport default GridAgentChat\n"],"mappings":";;;;;;;;;;;AAaA,IAAM,IAAmB;CACvB;CACA;CACA;AACF;AAaA,SAAgB,EAAc,EAC5B,kBACA,mBACA,iBAAc,kBACd,mBACA,SACA,YACA,0BACqB;CAErB,IAAM,CAAC,GAAc,KAAmB,EAAmC,GACrE,IAAY,EAAa,CAAY,GAGrC,IAAiB,EAAkB,EAAgB,aAAa;CAWtE,OACE,kBAAC,GAAD;EAAuB;EAAe;EAAS,OAAO;YACpD,kBAAC,GAAD;GACE,aAAa,kBAAC,GAAD;IAAiB,OAAO;IAAI,QAAO;GAAQ,CAAA;GACnC;GACR;GACG;GACA,gBAAA;IAdpB,cACE;IACF;IACA;IACA,cAAc;GAUM;GAChB,uBAAsB;GACtB,WAAW;GACX,qBAAqB;GACrB,yBAAyB,EAAiB;GAE1C,iBAAiB;GACjB,oBAAoB;GACpB,mBAAmB;GACD;GAClB,kBAAkB;EACnB,CAAA;CACc,CAAA;AAErB"}
1
+ {"version":3,"file":"GridAgentChat.js","names":[],"sources":["../../../src/components/SynapseChat/GridAgentChat.tsx"],"sourcesContent":["import { useChatState } from '@/components/SynapseChat/useChatState'\nimport {\n AgentSession,\n GridAgentSessionContext,\n} from '@sage-bionetworks/synapse-client'\nimport { AgentAccessLevel } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport DraggableDialog from '../DraggableDialog/DraggableDialog'\nimport { SynapseChat } from './index'\nimport { ReactComponent as CurieAvatarHead } from '@/assets/illustrations/curie_avatar_head.svg'\n\nconst suggestedPrompts = [\n 'Help me fill this out',\n 'Help me understand this',\n 'Find missing fields',\n]\n\nexport type GridAgentChatProps = {\n gridSessionId: string\n usersReplicaId: number\n chatbotName?: string\n initialMessage?: string\n open: boolean\n onClose: () => void\n /** Optional ID to use a different agent registered in Synapse */\n agentRegistrationId?: string\n}\n\nexport function GridAgentChat({\n gridSessionId,\n usersReplicaId,\n chatbotName = 'Grid Assistant',\n initialMessage,\n open,\n onClose,\n agentRegistrationId,\n}: GridAgentChatProps) {\n // Storing state for the chat session here preserves chat history while the dialog is opened and closed.\n const [agentSession, setAgentSession] = useState<AgentSession | undefined>()\n const chatState = useChatState(agentSession)\n\n // Create session context for grid sessions\n const sessionContext: GridAgentSessionContext = {\n concreteType:\n 'org.sagebionetworks.repo.model.agent.GridAgentSessionContext',\n gridSessionId,\n usersReplicaId,\n experimental: true,\n }\n\n return (\n <DraggableDialog open={open} onClose={onClose} title={chatbotName}>\n <SynapseChat\n agentAvatar={<CurieAvatarHead width={35} height=\"auto\" />}\n agentRegistrationId={agentRegistrationId}\n chatbotName={chatbotName}\n initialMessage={initialMessage}\n sessionContext={sessionContext}\n textboxPositionOffset=\"16px\"\n hideTitle={true}\n showAccessLevelMenu={false}\n defaultAgentAccessLevel={AgentAccessLevel.WRITE_YOUR_PRIVATE_DATA}\n // lift state: allow GridAgentChat to control the agent session and interactions\n externalSession={agentSession}\n setExternalSession={setAgentSession}\n externalChatState={chatState}\n suggestedPrompts={suggestedPrompts}\n allowAttachments={true}\n />\n </DraggableDialog>\n )\n}\n\nexport default GridAgentChat\n"],"mappings":";;;;;;;;;AAWA,IAAM,IAAmB;CACvB;CACA;CACA;AACF;AAaA,SAAgB,EAAc,EAC5B,kBACA,mBACA,iBAAc,kBACd,mBACA,SACA,YACA,0BACqB;CAErB,IAAM,CAAC,GAAc,KAAmB,EAAmC,GACrE,IAAY,EAAa,CAAY;CAW3C,OACE,kBAAC,GAAD;EAAuB;EAAe;EAAS,OAAO;YACpD,kBAAC,GAAD;GACE,aAAa,kBAAC,GAAD;IAAiB,OAAO;IAAI,QAAO;GAAQ,CAAA;GACnC;GACR;GACG;GACA,gBAAA;IAdpB,cACE;IACF;IACA;IACA,cAAc;GAUM;GAChB,uBAAsB;GACtB,WAAW;GACX,qBAAqB;GACrB,yBAAyB,EAAiB;GAE1C,iBAAiB;GACjB,oBAAoB;GACpB,mBAAmB;GACD;GAClB,kBAAkB;EACnB,CAAA;CACc,CAAA;AAErB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseTable.d.ts","sourceRoot":"","sources":["../../../src/components/SynapseTable/SynapseTable.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,GAAG,EACH,MAAM,EAEP,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAEL,SAAS,EAKV,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAyBvD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,cAAc,GACzB,MAAM,CAuBR;AAED,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,iBAAiB,EACf,kBAAkB,GAClB,wBAAwB,GACxB,wBAAwB,GACxB,oBAAoB,GACpB,cAAc,GACd,0BAA0B,GAC1B,6BAA6B,GAC7B,aAAa,GACb,eAAe,CAClB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAA;IACzB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;IACrC,2JAA2J;IAC3J,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,kDAAkD;IAClD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2JAA2J;IAC3J,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,8DAA8D;IAC9D,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,yFAAyF;IACzF,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B,CAAA;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CA2MpD"}
1
+ {"version":3,"file":"SynapseTable.d.ts","sourceRoot":"","sources":["../../../src/components/SynapseTable/SynapseTable.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,GAAG,EACH,MAAM,EAEP,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAEL,SAAS,EAKV,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAyBvD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,cAAc,GACzB,MAAM,CAuBR;AAED,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,iBAAiB,EACf,kBAAkB,GAClB,wBAAwB,GACxB,wBAAwB,GACxB,oBAAoB,GACpB,cAAc,GACd,0BAA0B,GAC1B,6BAA6B,GAC7B,aAAa,GACb,eAAe,CAClB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAA;IACzB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;IACrC,2JAA2J;IAC3J,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,kDAAkD;IAClD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2JAA2J;IAC3J,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,8DAA8D;IAC9D,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,yFAAyF;IACzF,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B,CAAA;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CA4MpD"}
@@ -123,7 +123,8 @@ function w(S) {
123
123
  },
124
124
  table: ve,
125
125
  fullWidth: !1,
126
- autoColumnSizing: !0
126
+ autoColumnSizing: !0,
127
+ showTopScrollbar: !0
127
128
  })] })
128
129
  }) : /* @__PURE__ */ v(_, {});
129
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseTable.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTable.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport {\n ColumnTypeEnum,\n Row,\n RowSet,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport {\n Cell,\n ColumnDef,\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table'\nimport { useAtomValue } from 'jotai'\nimport { useMemo, useState } from 'react'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { SynapseTableContext } from './SynapseTableContext'\nimport {\n accessColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n rowSelectionColumn,\n TableDataCell,\n TableDataColumnHeader,\n} from './SynapseTableRenderers'\nimport {\n isEntityViewOrDatasetOrCollection,\n isFileViewOrDataset,\n isSortableColumn,\n} from './SynapseTableUtils'\nimport { usePrefetchResourcesInTable } from './usePrefetchTableData'\nimport { useTableSort } from './useTableSort'\n\nconst DEFAULT_CUSTOM_COLUMNS: ColumnDef<Row, any>[] = []\n\n/**\n * Returns the minimum column width (in px) for a Synapse table column\n * based on its type and name.\n */\nexport function getColumnMinSize(\n columnName: string,\n columnType: ColumnTypeEnum,\n): number {\n const nameLower = columnName.toLowerCase()\n if (nameLower.includes('name') || nameLower.includes('description')) {\n return 250\n }\n switch (columnType) {\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.EVALUATIONID:\n case ColumnTypeEnum.SUBMISSIONID:\n return 180\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n return 120\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n return 100\n default:\n return 60\n }\n}\n\nexport type SynapseTableConfiguration = Pick<\n SynapseTableProps,\n | 'showAccessColumn'\n | 'showExternalAccessIcon'\n | 'showAccessColumnHeader'\n | 'showDownloadColumn'\n | 'hideDownload'\n | 'showDirectDownloadColumn'\n | 'hideAddToDownloadListColumn'\n | 'columnLinks'\n | 'customColumns'\n>\n\nexport type SynapseTableProps = {\n /** The row data shown in the table. */\n rowSet: RowSet\n /** Whether a new page of data is being loaded */\n isLoadingNewPage: boolean\n /** Custom columns to render in the table */\n customColumns?: ColumnDef<Row, any>[]\n /** If true and entity is a view or dataset, renders a column that represents if the caller has permission to download the entity represented by the row */\n showAccessColumn?: boolean\n /**\n * If true, the component will show enhanced UI for the case where\n * - the entity is a FileEntity, AND\n * - the caller has permission to fetch the dataFileHandle, AND\n * - the dataFileHandle is an instance of ExternalFileHandleInterface (i.e. the file is not controlled by Synapse)\n * Note that this requires an additional API call that cannot be batched, so it should be avoided in bulk contexts if possible.\n * @default false\n */\n showExternalAccessIcon?: boolean\n showAccessColumnHeader?: boolean\n /** @deprecated use showDirectDownloadColumn */\n showDownloadColumn?: boolean\n /** @deprecated use hideAddToDownloadListColumn */\n hideDownload?: boolean\n /** If true and entity is a file view or dataset, renders a column that allows the logged-in user to directly download the file, if they have permission */\n showDirectDownloadColumn?: boolean\n /** If true, the add to download list column will be hidden */\n hideAddToDownloadListColumn?: boolean\n /** Configuration to override cell renderers with e.g. a link to a portals detail page */\n columnLinks?: LabelLinkConfig\n}\n\nconst columnHelper = createColumnHelper<Row>()\n\nexport function SynapseTable(props: SynapseTableProps) {\n const { showDownloadColumn, hideDownload } = props\n const {\n rowSet,\n isLoadingNewPage,\n customColumns = DEFAULT_CUSTOM_COLUMNS,\n showAccessColumn,\n showExternalAccessIcon,\n showAccessColumnHeader,\n showDirectDownloadColumn = showDownloadColumn,\n hideAddToDownloadListColumn = hideDownload,\n columnLinks,\n } = props\n const {\n entityId,\n versionNumber,\n getCurrentQueryRequest,\n fileIdColumnName,\n fileVersionColumnName,\n } = useQueryContext()\n const queryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n const selectColumns = rowSet.headers\n\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n\n const { columnsToShowInTable, NoContentPlaceholder } =\n useQueryVisualizationContext()\n const synapseTableContext = useMemo(\n () => ({\n columnLinks,\n showExternalAccessIcon,\n }),\n [columnLinks, showExternalAccessIcon],\n )\n const { isAuthenticated } = useSynapseContext()\n\n const [isExportTableDownloadOpen, setIsExportTableDownloadOpen] =\n useState(false)\n\n const { sort, setSort } = useTableSort()\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const isShowingAccessColumn: boolean = Boolean(\n showAccessColumn &&\n entity &&\n ((isEntityViewOrDatasetOrCollection(entity) && allRowsHaveId(rowSet)) ||\n fileIdColumnName),\n )\n const rowsAreDownloadable =\n entity &&\n isAuthenticated &&\n ((isFileViewOrDataset(entity) && allRowsHaveId(rowSet)) || fileIdColumnName)\n\n const isShowingDirectDownloadColumn = Boolean(\n rowsAreDownloadable && showDirectDownloadColumn,\n )\n\n const isShowingAddToV2DownloadListColumn: boolean = Boolean(\n rowsAreDownloadable &&\n !hideAddToDownloadListColumn &&\n !isRowSelectionVisible,\n )\n const rowEntityIDColumnIndex = fileIdColumnName\n ? rowSet.headers.findIndex(col => col.name == fileIdColumnName)\n : undefined\n const rowEntityVersionColumnIndex = fileVersionColumnName\n ? rowSet.headers.findIndex(col => col.name == fileVersionColumnName)\n : undefined\n\n const columns = useMemo(\n () => [\n ...customColumns,\n rowSelectionColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n {\n ...accessColumn,\n header: showAccessColumn && showAccessColumnHeader ? 'Access' : '',\n },\n ...(selectColumns.map((selectColumn, index) => {\n return columnHelper.accessor(row => row.values[index], {\n id: selectColumn.name,\n enableSorting: isSortableColumn(selectColumn.columnType),\n enableResizing: true,\n minSize: getColumnMinSize(\n selectColumn.name,\n selectColumn.columnType as ColumnTypeEnum,\n ),\n header: TableDataColumnHeader,\n cell: TableDataCell,\n })\n }) ?? []),\n ],\n [customColumns, selectColumns, showAccessColumn, showAccessColumnHeader],\n )\n\n const prependColumnVisibility: VisibilityState = useMemo(\n () => ({\n [rowSelectionColumn.id as string]: isRowSelectionVisible,\n [addToDownloadListColumn.id as string]:\n isShowingAddToV2DownloadListColumn,\n [directDownloadColumn.id as string]: isShowingDirectDownloadColumn,\n [accessColumn.id as string]: isShowingAccessColumn,\n }),\n [\n isRowSelectionVisible,\n isShowingAccessColumn,\n isShowingAddToV2DownloadListColumn,\n isShowingDirectDownloadColumn,\n ],\n )\n\n // Transform our `columnsToShowInTable` to @tanstack/react-table's `VisibilityState`\n const columnVisibility: VisibilityState = useMemo(\n () =>\n selectColumns.reduce((prev: VisibilityState, curr) => {\n return {\n ...prev,\n [curr.name]: columnsToShowInTable.includes(curr.name),\n }\n }, prependColumnVisibility),\n [columnsToShowInTable, selectColumns, prependColumnVisibility],\n )\n\n const { dataHasBeenPrefetched } = usePrefetchResourcesInTable(rowSet)\n const renderTableDataPlaceholder = isLoadingNewPage || !dataHasBeenPrefetched\n\n const table = useReactTable({\n data: rowSet.rows,\n columns,\n defaultColumn: { minSize: 60 },\n getCoreRowModel: getCoreRowModel(),\n manualSorting: true,\n manualFiltering: true,\n onSortingChange: setSort,\n enableMultiSort: true,\n columnResizeMode: 'onChange',\n state: {\n sorting: sort,\n columnVisibility: columnVisibility,\n },\n meta: {\n rowSet,\n // make the rowEntityIDColumnIndex available to all cell renderers\n rowEntityIDColumnIndex,\n rowEntityVersionColumnIndex,\n renderPlaceholderData: renderTableDataPlaceholder,\n getWrapInExpandableTd: (cell: Cell<Row, unknown>) => {\n const selectColumn = selectColumns.find(\n cm => cm.name === cell.column.id,\n )\n return Boolean(\n selectColumn &&\n /* JSON handles its own overflow*/\n selectColumn.columnType !== ColumnTypeEnum.JSON,\n )\n },\n },\n })\n\n /**\n * Display the view\n */\n if (!rowSet) {\n return <></>\n }\n const hasResults = (rowSet.rows?.length ?? 0) > 0\n // Show the No Results UI if the current page has no rows, and this is the first page of data (offset === 0 or null/undefined).\n if (\n !hasResults &&\n (queryRequest.query.offset === 0 || queryRequest.query.offset == null)\n ) {\n return <NoContentPlaceholder />\n }\n\n return (\n <SynapseTableContext.Provider value={synapseTableContext}>\n <div>\n {isExportTableDownloadOpen && (\n <ModalDownload\n onClose={() => {\n setIsExportTableDownloadOpen(false)\n }}\n queryBundleRequest={queryRequest}\n />\n )}\n <StyledTanStackTable\n styledTableContainerProps={{\n className: 'SynapseTable',\n ['data-testid']: 'SynapseTable',\n density: 'default',\n }}\n table={table}\n fullWidth={false}\n autoColumnSizing={true}\n />\n </div>\n </SynapseTableContext.Provider>\n )\n}\n\n/**\n * If this is a view/dataset and rows have an ID, then rows represent individual objects in Synapse.\n * Presence of row IDs also indicates that the query is also necessarily not summary data, e.g. the query does\n * not include an operation like GROUP BY, DISTINCT, etc., that would cause rows to not map 1:1 to Synapse Entities\n */\nfunction allRowsHaveId(rowSet: RowSet): boolean {\n return Boolean(rowSet.rows?.every(row => !!row.rowId))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SynapseTable.js","names":[],"sources":["../../../src/components/SynapseTable/SynapseTable.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport {\n ColumnTypeEnum,\n Row,\n RowSet,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport {\n Cell,\n ColumnDef,\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table'\nimport { useAtomValue } from 'jotai'\nimport { useMemo, useState } from 'react'\nimport { LabelLinkConfig } from '../CardContainerLogic'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { SynapseTableContext } from './SynapseTableContext'\nimport {\n accessColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n rowSelectionColumn,\n TableDataCell,\n TableDataColumnHeader,\n} from './SynapseTableRenderers'\nimport {\n isEntityViewOrDatasetOrCollection,\n isFileViewOrDataset,\n isSortableColumn,\n} from './SynapseTableUtils'\nimport { usePrefetchResourcesInTable } from './usePrefetchTableData'\nimport { useTableSort } from './useTableSort'\n\nconst DEFAULT_CUSTOM_COLUMNS: ColumnDef<Row, any>[] = []\n\n/**\n * Returns the minimum column width (in px) for a Synapse table column\n * based on its type and name.\n */\nexport function getColumnMinSize(\n columnName: string,\n columnType: ColumnTypeEnum,\n): number {\n const nameLower = columnName.toLowerCase()\n if (nameLower.includes('name') || nameLower.includes('description')) {\n return 250\n }\n switch (columnType) {\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.EVALUATIONID:\n case ColumnTypeEnum.SUBMISSIONID:\n return 180\n case ColumnTypeEnum.DATE:\n case ColumnTypeEnum.DATE_LIST:\n return 120\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.STRING_LIST:\n return 100\n default:\n return 60\n }\n}\n\nexport type SynapseTableConfiguration = Pick<\n SynapseTableProps,\n | 'showAccessColumn'\n | 'showExternalAccessIcon'\n | 'showAccessColumnHeader'\n | 'showDownloadColumn'\n | 'hideDownload'\n | 'showDirectDownloadColumn'\n | 'hideAddToDownloadListColumn'\n | 'columnLinks'\n | 'customColumns'\n>\n\nexport type SynapseTableProps = {\n /** The row data shown in the table. */\n rowSet: RowSet\n /** Whether a new page of data is being loaded */\n isLoadingNewPage: boolean\n /** Custom columns to render in the table */\n customColumns?: ColumnDef<Row, any>[]\n /** If true and entity is a view or dataset, renders a column that represents if the caller has permission to download the entity represented by the row */\n showAccessColumn?: boolean\n /**\n * If true, the component will show enhanced UI for the case where\n * - the entity is a FileEntity, AND\n * - the caller has permission to fetch the dataFileHandle, AND\n * - the dataFileHandle is an instance of ExternalFileHandleInterface (i.e. the file is not controlled by Synapse)\n * Note that this requires an additional API call that cannot be batched, so it should be avoided in bulk contexts if possible.\n * @default false\n */\n showExternalAccessIcon?: boolean\n showAccessColumnHeader?: boolean\n /** @deprecated use showDirectDownloadColumn */\n showDownloadColumn?: boolean\n /** @deprecated use hideAddToDownloadListColumn */\n hideDownload?: boolean\n /** If true and entity is a file view or dataset, renders a column that allows the logged-in user to directly download the file, if they have permission */\n showDirectDownloadColumn?: boolean\n /** If true, the add to download list column will be hidden */\n hideAddToDownloadListColumn?: boolean\n /** Configuration to override cell renderers with e.g. a link to a portals detail page */\n columnLinks?: LabelLinkConfig\n}\n\nconst columnHelper = createColumnHelper<Row>()\n\nexport function SynapseTable(props: SynapseTableProps) {\n const { showDownloadColumn, hideDownload } = props\n const {\n rowSet,\n isLoadingNewPage,\n customColumns = DEFAULT_CUSTOM_COLUMNS,\n showAccessColumn,\n showExternalAccessIcon,\n showAccessColumnHeader,\n showDirectDownloadColumn = showDownloadColumn,\n hideAddToDownloadListColumn = hideDownload,\n columnLinks,\n } = props\n const {\n entityId,\n versionNumber,\n getCurrentQueryRequest,\n fileIdColumnName,\n fileVersionColumnName,\n } = useQueryContext()\n const queryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n const selectColumns = rowSet.headers\n\n const { data: entity } = useGetEntity<Table>(entityId, versionNumber)\n\n const { columnsToShowInTable, NoContentPlaceholder } =\n useQueryVisualizationContext()\n const synapseTableContext = useMemo(\n () => ({\n columnLinks,\n showExternalAccessIcon,\n }),\n [columnLinks, showExternalAccessIcon],\n )\n const { isAuthenticated } = useSynapseContext()\n\n const [isExportTableDownloadOpen, setIsExportTableDownloadOpen] =\n useState(false)\n\n const { sort, setSort } = useTableSort()\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const isShowingAccessColumn: boolean = Boolean(\n showAccessColumn &&\n entity &&\n ((isEntityViewOrDatasetOrCollection(entity) && allRowsHaveId(rowSet)) ||\n fileIdColumnName),\n )\n const rowsAreDownloadable =\n entity &&\n isAuthenticated &&\n ((isFileViewOrDataset(entity) && allRowsHaveId(rowSet)) || fileIdColumnName)\n\n const isShowingDirectDownloadColumn = Boolean(\n rowsAreDownloadable && showDirectDownloadColumn,\n )\n\n const isShowingAddToV2DownloadListColumn: boolean = Boolean(\n rowsAreDownloadable &&\n !hideAddToDownloadListColumn &&\n !isRowSelectionVisible,\n )\n const rowEntityIDColumnIndex = fileIdColumnName\n ? rowSet.headers.findIndex(col => col.name == fileIdColumnName)\n : undefined\n const rowEntityVersionColumnIndex = fileVersionColumnName\n ? rowSet.headers.findIndex(col => col.name == fileVersionColumnName)\n : undefined\n\n const columns = useMemo(\n () => [\n ...customColumns,\n rowSelectionColumn,\n addToDownloadListColumn,\n directDownloadColumn,\n {\n ...accessColumn,\n header: showAccessColumn && showAccessColumnHeader ? 'Access' : '',\n },\n ...(selectColumns.map((selectColumn, index) => {\n return columnHelper.accessor(row => row.values[index], {\n id: selectColumn.name,\n enableSorting: isSortableColumn(selectColumn.columnType),\n enableResizing: true,\n minSize: getColumnMinSize(\n selectColumn.name,\n selectColumn.columnType as ColumnTypeEnum,\n ),\n header: TableDataColumnHeader,\n cell: TableDataCell,\n })\n }) ?? []),\n ],\n [customColumns, selectColumns, showAccessColumn, showAccessColumnHeader],\n )\n\n const prependColumnVisibility: VisibilityState = useMemo(\n () => ({\n [rowSelectionColumn.id as string]: isRowSelectionVisible,\n [addToDownloadListColumn.id as string]:\n isShowingAddToV2DownloadListColumn,\n [directDownloadColumn.id as string]: isShowingDirectDownloadColumn,\n [accessColumn.id as string]: isShowingAccessColumn,\n }),\n [\n isRowSelectionVisible,\n isShowingAccessColumn,\n isShowingAddToV2DownloadListColumn,\n isShowingDirectDownloadColumn,\n ],\n )\n\n // Transform our `columnsToShowInTable` to @tanstack/react-table's `VisibilityState`\n const columnVisibility: VisibilityState = useMemo(\n () =>\n selectColumns.reduce((prev: VisibilityState, curr) => {\n return {\n ...prev,\n [curr.name]: columnsToShowInTable.includes(curr.name),\n }\n }, prependColumnVisibility),\n [columnsToShowInTable, selectColumns, prependColumnVisibility],\n )\n\n const { dataHasBeenPrefetched } = usePrefetchResourcesInTable(rowSet)\n const renderTableDataPlaceholder = isLoadingNewPage || !dataHasBeenPrefetched\n\n const table = useReactTable({\n data: rowSet.rows,\n columns,\n defaultColumn: { minSize: 60 },\n getCoreRowModel: getCoreRowModel(),\n manualSorting: true,\n manualFiltering: true,\n onSortingChange: setSort,\n enableMultiSort: true,\n columnResizeMode: 'onChange',\n state: {\n sorting: sort,\n columnVisibility: columnVisibility,\n },\n meta: {\n rowSet,\n // make the rowEntityIDColumnIndex available to all cell renderers\n rowEntityIDColumnIndex,\n rowEntityVersionColumnIndex,\n renderPlaceholderData: renderTableDataPlaceholder,\n getWrapInExpandableTd: (cell: Cell<Row, unknown>) => {\n const selectColumn = selectColumns.find(\n cm => cm.name === cell.column.id,\n )\n return Boolean(\n selectColumn &&\n /* JSON handles its own overflow*/\n selectColumn.columnType !== ColumnTypeEnum.JSON,\n )\n },\n },\n })\n\n /**\n * Display the view\n */\n if (!rowSet) {\n return <></>\n }\n const hasResults = (rowSet.rows?.length ?? 0) > 0\n // Show the No Results UI if the current page has no rows, and this is the first page of data (offset === 0 or null/undefined).\n if (\n !hasResults &&\n (queryRequest.query.offset === 0 || queryRequest.query.offset == null)\n ) {\n return <NoContentPlaceholder />\n }\n\n return (\n <SynapseTableContext.Provider value={synapseTableContext}>\n <div>\n {isExportTableDownloadOpen && (\n <ModalDownload\n onClose={() => {\n setIsExportTableDownloadOpen(false)\n }}\n queryBundleRequest={queryRequest}\n />\n )}\n <StyledTanStackTable\n styledTableContainerProps={{\n className: 'SynapseTable',\n ['data-testid']: 'SynapseTable',\n density: 'default',\n }}\n table={table}\n fullWidth={false}\n autoColumnSizing={true}\n showTopScrollbar={true}\n />\n </div>\n </SynapseTableContext.Provider>\n )\n}\n\n/**\n * If this is a view/dataset and rows have an ID, then rows represent individual objects in Synapse.\n * Presence of row IDs also indicates that the query is also necessarily not summary data, e.g. the query does\n * not include an operation like GROUP BY, DISTINCT, etc., that would cause rows to not map 1:1 to Synapse Entities\n */\nfunction allRowsHaveId(rowSet: RowSet): boolean {\n return Boolean(rowSet.rows?.every(row => !!row.rowId))\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalPlatformActionsRequiredPrecheck.d.ts","sourceRoot":"","sources":["../../../../src/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,eAAe,CAAA;AAgBvD,OAAO,EAEL,wBAAwB,EACzB,MAAM,sCAAsC,CAAA;AAc7C,MAAM,MAAM,4CAA4C,GAAG;IAEzD,gBAAgB,EAAE,wBAAwB,CAAA;IAE1C,0BAA0B,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IAExD,kBAAkB,EAAE,MAAM,IAAI,CAAA;CAC/B,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,uCAAuC,CAC7D,KAAK,EAAE,4CAA4C,2CAgJpD"}
1
+ {"version":3,"file":"ExternalPlatformActionsRequiredPrecheck.d.ts","sourceRoot":"","sources":["../../../../src/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,eAAe,CAAA;AAgBvD,OAAO,EAEL,wBAAwB,EACzB,MAAM,sCAAsC,CAAA;AAc7C,MAAM,MAAM,4CAA4C,GAAG;IAEzD,gBAAgB,EAAE,wBAAwB,CAAA;IAE1C,0BAA0B,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IAExD,kBAAkB,EAAE,MAAM,IAAI,CAAA;CAC/B,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,uCAAuC,CAC7D,KAAK,EAAE,4CAA4C,2CA8IpD"}
@@ -20,66 +20,66 @@ function x(e) {
20
20
  return `SendTo${g(e.replace("\\s", ""))}ButtonFromConfirmationDialog`;
21
21
  }
22
22
  function S(g) {
23
- let { selectedPlatform: S, onConfirmButtonPropsChange: C, onSuccessfulExport: w } = g, T = c[S], { getCurrentQueryRequest: E, onViewSharingSettingsClicked: D, hasResettableFilters: O, fileIdColumnName: k, fileVersionColumnName: A, fileNameColumnName: j } = t(), { data: M, isLoading: N } = n(), P = o(), F = a(), I = i(), { unitDescription: L } = r(), [R, z] = h(void 0), B = m(() => {
23
+ let { selectedPlatform: S, onConfirmButtonPropsChange: C, onSuccessfulExport: w } = g, T = c[S], { getCurrentQueryRequest: E, hasResettableFilters: D, fileIdColumnName: O, fileVersionColumnName: k, fileNameColumnName: A } = t(), { data: j, isLoading: M } = n(), N = o(), P = a(), F = i(), { unitDescription: I } = r(), [L, R] = h(void 0), z = m(() => {
24
24
  let e = E();
25
- return I && F && M?.selectColumns && (e.query.additionalFilters = [...e.query.additionalFilters || [], s(F, P, M.selectColumns)]), e;
25
+ return F && P && j?.selectColumns && (e.query.additionalFilters = [...e.query.additionalFilters || [], s(P, N, j.selectColumns)]), e;
26
26
  }, [
27
27
  E,
28
- I,
29
28
  F,
30
- M?.selectColumns,
31
- P
32
- ]), { exportToCavatica: V, exportToTerra: H, exportToPluto: U, exportToPlutoDev: W, exportToADWorkbench: G } = l({
33
- queryBundleRequest: B,
34
- selectColumns: M?.selectColumns,
35
- fileIdColumnName: k,
36
- fileVersionColumnName: A,
37
- fileNameColumnName: j
38
- }), K = `Send ${d(O, I, P, M?.queryCount, L)} to ${T.name}`, q = f(async () => {
29
+ P,
30
+ j?.selectColumns,
31
+ N
32
+ ]), { exportToCavatica: B, exportToTerra: V, exportToPluto: H, exportToPlutoDev: U, exportToADWorkbench: W } = l({
33
+ queryBundleRequest: z,
34
+ selectColumns: j?.selectColumns,
35
+ fileIdColumnName: O,
36
+ fileVersionColumnName: k,
37
+ fileNameColumnName: A
38
+ }), G = `Send ${d(D, F, N, j?.queryCount, I)} to ${T.name}`, K = f(async () => {
39
39
  switch (S) {
40
40
  case "cavatica":
41
- await V();
41
+ await B();
42
42
  break;
43
43
  case "terra":
44
- await H();
44
+ await V();
45
45
  break;
46
46
  case "pluto":
47
- await U();
47
+ await H();
48
48
  break;
49
49
  case "plutodev":
50
- await W();
50
+ await U();
51
51
  break;
52
52
  case "adworkbench":
53
- await G();
53
+ await W();
54
54
  break;
55
55
  }
56
56
  w();
57
57
  }, [
58
+ B,
58
59
  V,
59
60
  H,
60
61
  U,
61
- W,
62
62
  w,
63
63
  S,
64
- G
64
+ W
65
65
  ]);
66
66
  return p(() => {
67
67
  C({
68
68
  id: x(S),
69
- children: K,
70
- disabled: N || R !== 0,
69
+ children: G,
70
+ disabled: M || L !== 0,
71
71
  onClick: () => {
72
- q();
72
+ K();
73
73
  }
74
74
  });
75
75
  }, [
76
- R,
76
+ L,
77
+ G,
78
+ M,
77
79
  K,
78
- N,
79
- q,
80
80
  C,
81
81
  S
82
- ]), N ? /* @__PURE__ */ y(e, { numRows: 4 }) : /* @__PURE__ */ b(v, { children: [
82
+ ]), M ? /* @__PURE__ */ y(e, { numRows: 4 }) : /* @__PURE__ */ b(v, { children: [
83
83
  /* @__PURE__ */ b(_, {
84
84
  variant: "body1",
85
85
  sx: {
@@ -103,10 +103,9 @@ function S(g) {
103
103
  ]
104
104
  }),
105
105
  /* @__PURE__ */ y(u, {
106
- queryBundleRequest: B,
107
- columnModels: M?.columnModels ?? [],
108
- onNumberOfRequiredActionsChanged: z,
109
- onViewSharingSettingsClicked: D
106
+ queryBundleRequest: z,
107
+ columnModels: j?.columnModels ?? [],
108
+ onNumberOfRequiredActionsChanged: R
110
109
  }),
111
110
  /* @__PURE__ */ b(_, {
112
111
  variant: "body1",
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalPlatformActionsRequiredPrecheck.js","names":[],"sources":["../../../../src/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.tsx"],"sourcesContent":["import { ButtonProps, Typography } from '@mui/material'\nimport { upperFirst } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useExportTableQueryToAnalysisPlatform } from '../../../synapse-queries/entity/useExportTableQueryToAnalysisPlatform'\nimport { getPrimaryKeyINFilter } from '../../../utils/functions/QueryFilterUtils'\nimport { TableQueryActionsRequired } from '../../DownloadCart/TableQueryActionsRequired'\nimport { useQueryContext } from '../../QueryContext'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper/index'\nimport {\n useHasSelectedRowsAtomValue,\n useRowSelectionPrimaryKeyAtomValue,\n useSelectedRowsAtomValue,\n} from '../../QueryWrapper/TableRowSelectionState'\nimport { useGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport { SkeletonParagraph } from '../../Skeleton/index'\nimport { getNumberOfResultsToInvokeActionCopy } from '../TopLevelControls/TopLevelControlsUtils'\nimport {\n EXTERNAL_ANALYSIS_PLATFORMS,\n ExternalAnalysisPlatform,\n} from './ExternalAnalysisPlatformsConstants'\n\n/**\n * Get the ID of the confirm button for the selected platform, used in Google Tag Manager\n * @param selectedPlatform\n */\nfunction getConfirmButtonId(\n selectedPlatform: ExternalAnalysisPlatform,\n): string {\n return `SendTo${upperFirst(\n selectedPlatform.replace('\\\\s', ''),\n )}ButtonFromConfirmationDialog`\n}\n\nexport type ExternalPlatformActionsRequiredPrecheckProps = {\n /* The external analysis platform that the user selected */\n selectedPlatform: ExternalAnalysisPlatform\n /* Callback to propagate the current confirm button appearance and behavior */\n onConfirmButtonPropsChange: (props: ButtonProps) => void\n /* Callback invoked when export to the external platform succeeds */\n onSuccessfulExport: () => void\n}\n\nexport default function ExternalPlatformActionsRequiredPrecheck(\n props: ExternalPlatformActionsRequiredPrecheckProps,\n) {\n const { selectedPlatform, onConfirmButtonPropsChange, onSuccessfulExport } =\n props\n const platform = EXTERNAL_ANALYSIS_PLATFORMS[selectedPlatform]\n\n const {\n getCurrentQueryRequest,\n onViewSharingSettingsClicked,\n hasResettableFilters,\n fileIdColumnName,\n fileVersionColumnName,\n fileNameColumnName,\n } = useQueryContext()\n\n const { data: queryMetadata, isLoading } = useGetQueryMetadata()\n const selectedRows = useSelectedRowsAtomValue()\n const rowSelectionPrimaryKey = useRowSelectionPrimaryKeyAtomValue()\n const hasSelectedRows = useHasSelectedRowsAtomValue()\n\n const { unitDescription } = useQueryVisualizationContext()\n\n const [numberOfRequiredActions, setNumberOfRequiredActions] = useState<\n number | undefined\n >(undefined)\n\n const queryFilteredBySelection = useMemo(() => {\n const request = getCurrentQueryRequest()\n if (\n hasSelectedRows &&\n rowSelectionPrimaryKey &&\n queryMetadata?.selectColumns\n ) {\n request.query.additionalFilters = [\n ...(request.query.additionalFilters || []),\n getPrimaryKeyINFilter(\n rowSelectionPrimaryKey,\n selectedRows,\n queryMetadata.selectColumns,\n ),\n ]\n }\n return request\n }, [\n getCurrentQueryRequest,\n hasSelectedRows,\n rowSelectionPrimaryKey,\n queryMetadata?.selectColumns,\n selectedRows,\n ])\n\n const {\n exportToCavatica,\n exportToTerra,\n exportToPluto,\n exportToPlutoDev,\n exportToADWorkbench,\n } = useExportTableQueryToAnalysisPlatform({\n queryBundleRequest: queryFilteredBySelection,\n selectColumns: queryMetadata?.selectColumns,\n fileIdColumnName,\n fileVersionColumnName,\n fileNameColumnName,\n })\n\n const confirmButtonText = `Send ${getNumberOfResultsToInvokeActionCopy(\n hasResettableFilters,\n hasSelectedRows,\n selectedRows,\n queryMetadata?.queryCount,\n unitDescription,\n )} to ${platform.name}`\n\n const onConfirmButtonClick = useCallback(async () => {\n switch (selectedPlatform) {\n case 'cavatica':\n await exportToCavatica()\n break\n case 'terra':\n await exportToTerra()\n break\n case 'pluto':\n await exportToPluto()\n break\n case 'plutodev':\n await exportToPlutoDev()\n break\n case 'adworkbench':\n await exportToADWorkbench()\n break\n }\n onSuccessfulExport()\n }, [\n exportToCavatica,\n exportToTerra,\n exportToPluto,\n exportToPlutoDev,\n onSuccessfulExport,\n selectedPlatform,\n exportToADWorkbench,\n ])\n\n useEffect(() => {\n onConfirmButtonPropsChange({\n id: getConfirmButtonId(selectedPlatform),\n children: confirmButtonText,\n disabled: isLoading || numberOfRequiredActions !== 0,\n onClick: () => {\n void onConfirmButtonClick()\n },\n })\n }, [\n numberOfRequiredActions,\n confirmButtonText,\n isLoading,\n onConfirmButtonClick,\n onConfirmButtonPropsChange,\n selectedPlatform,\n ])\n\n if (isLoading) return <SkeletonParagraph numRows={4} />\n\n return (\n <>\n <Typography variant=\"body1\" sx={{ fontWeight: 700, my: '10px' }}>\n Before sending the selected data to {platform.name}:\n </Typography>\n <Typography variant=\"body1\" sx={{ marginBottom: '10px' }}>\n You must meet all requirements to download the selected data. You must\n take the following actions before we can send this data to{' '}\n {platform.name}.\n </Typography>\n <TableQueryActionsRequired\n queryBundleRequest={queryFilteredBySelection}\n columnModels={queryMetadata?.columnModels ?? []}\n onNumberOfRequiredActionsChanged={setNumberOfRequiredActions}\n onViewSharingSettingsClicked={onViewSharingSettingsClicked}\n />\n <Typography variant=\"body1\" sx={{ fontWeight: 700, marginTop: '15px' }}>\n When completed, click “Send to {platform.name}“ to finish the process\n outside this application. You will be redirected to {platform.name}.\n </Typography>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAyBA,SAAS,EACP,GACQ;CACR,OAAO,SAAS,EACd,EAAiB,QAAQ,OAAO,EAAE,CACpC,EAAE;AACJ;AAWA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,qBAAkB,+BAA4B,0BACpD,GACI,IAAW,EAA4B,IAEvC,EACJ,2BACA,iCACA,yBACA,qBACA,0BACA,0BACE,EAAgB,GAEd,EAAE,MAAM,GAAe,iBAAc,EAAoB,GACzD,IAAe,EAAyB,GACxC,IAAyB,EAAmC,GAC5D,IAAkB,EAA4B,GAE9C,EAAE,uBAAoB,EAA6B,GAEnD,CAAC,GAAyB,KAA8B,EAE5D,KAAA,CAAS,GAEL,IAA2B,QAAc;EAC7C,IAAM,IAAU,EAAuB;EAevC,OAbE,KACA,KACA,GAAe,kBAEf,EAAQ,MAAM,oBAAoB,CAChC,GAAI,EAAQ,MAAM,qBAAqB,CAAC,GACxC,EACE,GACA,GACA,EAAc,aAChB,CACF,IAEK;CACT,GAAG;EACD;EACA;EACA;EACA,GAAe;EACf;CACF,CAAC,GAEK,EACJ,qBACA,kBACA,kBACA,qBACA,2BACE,EAAsC;EACxC,oBAAoB;EACpB,eAAe,GAAe;EAC9B;EACA;EACA;CACF,CAAC,GAEK,IAAoB,QAAQ,EAChC,GACA,GACA,GACA,GAAe,YACf,CACF,EAAE,MAAM,EAAS,QAEX,IAAuB,EAAY,YAAY;EACnD,QAAQ,GAAR;GACE,KAAK;IACH,MAAM,EAAiB;IACvB;GACF,KAAK;IACH,MAAM,EAAc;IACpB;GACF,KAAK;IACH,MAAM,EAAc;IACpB;GACF,KAAK;IACH,MAAM,EAAiB;IACvB;GACF,KAAK;IACH,MAAM,EAAoB;IAC1B;EACJ;EACA,EAAmB;CACrB,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAsBD,OApBA,QAAgB;EACd,EAA2B;GACzB,IAAI,EAAmB,CAAgB;GACvC,UAAU;GACV,UAAU,KAAa,MAA4B;GACnD,eAAe;IACb,EAA0B;GAC5B;EACF,CAAC;CACH,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,GAEG,IAAkB,kBAAC,GAAD,EAAmB,SAAS,EAAI,CAAA,IAGpD,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAY,SAAQ;GAAQ,IAAI;IAAE,YAAY;IAAK,IAAI;GAAO;aAA9D;IAAiE;IAC1B,EAAS;IAAK;GACzC;;EACZ,kBAAC,GAAD;GAAY,SAAQ;GAAQ,IAAI,EAAE,cAAc,OAAO;aAAvD;IAA0D;IAEG;IAC1D,EAAS;IAAK;GACL;;EACZ,kBAAC,GAAD;GACE,oBAAoB;GACpB,cAAc,GAAe,gBAAgB,CAAC;GAC9C,kCAAkC;GACJ;EAC/B,CAAA;EACD,kBAAC,GAAD;GAAY,SAAQ;GAAQ,IAAI;IAAE,YAAY;IAAK,WAAW;GAAO;aAArE;IAAwE;IACtC,EAAS;IAAK;IACO,EAAS;IAAK;GACzD;;CACZ,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"ExternalPlatformActionsRequiredPrecheck.js","names":[],"sources":["../../../../src/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.tsx"],"sourcesContent":["import { ButtonProps, Typography } from '@mui/material'\nimport { upperFirst } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useExportTableQueryToAnalysisPlatform } from '../../../synapse-queries/entity/useExportTableQueryToAnalysisPlatform'\nimport { getPrimaryKeyINFilter } from '../../../utils/functions/QueryFilterUtils'\nimport { TableQueryActionsRequired } from '../../DownloadCart/TableQueryActionsRequired'\nimport { useQueryContext } from '../../QueryContext'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper/index'\nimport {\n useHasSelectedRowsAtomValue,\n useRowSelectionPrimaryKeyAtomValue,\n useSelectedRowsAtomValue,\n} from '../../QueryWrapper/TableRowSelectionState'\nimport { useGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport { SkeletonParagraph } from '../../Skeleton/index'\nimport { getNumberOfResultsToInvokeActionCopy } from '../TopLevelControls/TopLevelControlsUtils'\nimport {\n EXTERNAL_ANALYSIS_PLATFORMS,\n ExternalAnalysisPlatform,\n} from './ExternalAnalysisPlatformsConstants'\n\n/**\n * Get the ID of the confirm button for the selected platform, used in Google Tag Manager\n * @param selectedPlatform\n */\nfunction getConfirmButtonId(\n selectedPlatform: ExternalAnalysisPlatform,\n): string {\n return `SendTo${upperFirst(\n selectedPlatform.replace('\\\\s', ''),\n )}ButtonFromConfirmationDialog`\n}\n\nexport type ExternalPlatformActionsRequiredPrecheckProps = {\n /* The external analysis platform that the user selected */\n selectedPlatform: ExternalAnalysisPlatform\n /* Callback to propagate the current confirm button appearance and behavior */\n onConfirmButtonPropsChange: (props: ButtonProps) => void\n /* Callback invoked when export to the external platform succeeds */\n onSuccessfulExport: () => void\n}\n\nexport default function ExternalPlatformActionsRequiredPrecheck(\n props: ExternalPlatformActionsRequiredPrecheckProps,\n) {\n const { selectedPlatform, onConfirmButtonPropsChange, onSuccessfulExport } =\n props\n const platform = EXTERNAL_ANALYSIS_PLATFORMS[selectedPlatform]\n\n const {\n getCurrentQueryRequest,\n hasResettableFilters,\n fileIdColumnName,\n fileVersionColumnName,\n fileNameColumnName,\n } = useQueryContext()\n\n const { data: queryMetadata, isLoading } = useGetQueryMetadata()\n const selectedRows = useSelectedRowsAtomValue()\n const rowSelectionPrimaryKey = useRowSelectionPrimaryKeyAtomValue()\n const hasSelectedRows = useHasSelectedRowsAtomValue()\n\n const { unitDescription } = useQueryVisualizationContext()\n\n const [numberOfRequiredActions, setNumberOfRequiredActions] = useState<\n number | undefined\n >(undefined)\n\n const queryFilteredBySelection = useMemo(() => {\n const request = getCurrentQueryRequest()\n if (\n hasSelectedRows &&\n rowSelectionPrimaryKey &&\n queryMetadata?.selectColumns\n ) {\n request.query.additionalFilters = [\n ...(request.query.additionalFilters || []),\n getPrimaryKeyINFilter(\n rowSelectionPrimaryKey,\n selectedRows,\n queryMetadata.selectColumns,\n ),\n ]\n }\n return request\n }, [\n getCurrentQueryRequest,\n hasSelectedRows,\n rowSelectionPrimaryKey,\n queryMetadata?.selectColumns,\n selectedRows,\n ])\n\n const {\n exportToCavatica,\n exportToTerra,\n exportToPluto,\n exportToPlutoDev,\n exportToADWorkbench,\n } = useExportTableQueryToAnalysisPlatform({\n queryBundleRequest: queryFilteredBySelection,\n selectColumns: queryMetadata?.selectColumns,\n fileIdColumnName,\n fileVersionColumnName,\n fileNameColumnName,\n })\n\n const confirmButtonText = `Send ${getNumberOfResultsToInvokeActionCopy(\n hasResettableFilters,\n hasSelectedRows,\n selectedRows,\n queryMetadata?.queryCount,\n unitDescription,\n )} to ${platform.name}`\n\n const onConfirmButtonClick = useCallback(async () => {\n switch (selectedPlatform) {\n case 'cavatica':\n await exportToCavatica()\n break\n case 'terra':\n await exportToTerra()\n break\n case 'pluto':\n await exportToPluto()\n break\n case 'plutodev':\n await exportToPlutoDev()\n break\n case 'adworkbench':\n await exportToADWorkbench()\n break\n }\n onSuccessfulExport()\n }, [\n exportToCavatica,\n exportToTerra,\n exportToPluto,\n exportToPlutoDev,\n onSuccessfulExport,\n selectedPlatform,\n exportToADWorkbench,\n ])\n\n useEffect(() => {\n onConfirmButtonPropsChange({\n id: getConfirmButtonId(selectedPlatform),\n children: confirmButtonText,\n disabled: isLoading || numberOfRequiredActions !== 0,\n onClick: () => {\n void onConfirmButtonClick()\n },\n })\n }, [\n numberOfRequiredActions,\n confirmButtonText,\n isLoading,\n onConfirmButtonClick,\n onConfirmButtonPropsChange,\n selectedPlatform,\n ])\n\n if (isLoading) return <SkeletonParagraph numRows={4} />\n\n return (\n <>\n <Typography variant=\"body1\" sx={{ fontWeight: 700, my: '10px' }}>\n Before sending the selected data to {platform.name}:\n </Typography>\n <Typography variant=\"body1\" sx={{ marginBottom: '10px' }}>\n You must meet all requirements to download the selected data. You must\n take the following actions before we can send this data to{' '}\n {platform.name}.\n </Typography>\n <TableQueryActionsRequired\n queryBundleRequest={queryFilteredBySelection}\n columnModels={queryMetadata?.columnModels ?? []}\n onNumberOfRequiredActionsChanged={setNumberOfRequiredActions}\n />\n <Typography variant=\"body1\" sx={{ fontWeight: 700, marginTop: '15px' }}>\n When completed, click “Send to {platform.name}“ to finish the process\n outside this application. You will be redirected to {platform.name}.\n </Typography>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAyBA,SAAS,EACP,GACQ;CACR,OAAO,SAAS,EACd,EAAiB,QAAQ,OAAO,EAAE,CACpC,EAAE;AACJ;AAWA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,qBAAkB,+BAA4B,0BACpD,GACI,IAAW,EAA4B,IAEvC,EACJ,2BACA,yBACA,qBACA,0BACA,0BACE,EAAgB,GAEd,EAAE,MAAM,GAAe,iBAAc,EAAoB,GACzD,IAAe,EAAyB,GACxC,IAAyB,EAAmC,GAC5D,IAAkB,EAA4B,GAE9C,EAAE,uBAAoB,EAA6B,GAEnD,CAAC,GAAyB,KAA8B,EAE5D,KAAA,CAAS,GAEL,IAA2B,QAAc;EAC7C,IAAM,IAAU,EAAuB;EAevC,OAbE,KACA,KACA,GAAe,kBAEf,EAAQ,MAAM,oBAAoB,CAChC,GAAI,EAAQ,MAAM,qBAAqB,CAAC,GACxC,EACE,GACA,GACA,EAAc,aAChB,CACF,IAEK;CACT,GAAG;EACD;EACA;EACA;EACA,GAAe;EACf;CACF,CAAC,GAEK,EACJ,qBACA,kBACA,kBACA,qBACA,2BACE,EAAsC;EACxC,oBAAoB;EACpB,eAAe,GAAe;EAC9B;EACA;EACA;CACF,CAAC,GAEK,IAAoB,QAAQ,EAChC,GACA,GACA,GACA,GAAe,YACf,CACF,EAAE,MAAM,EAAS,QAEX,IAAuB,EAAY,YAAY;EACnD,QAAQ,GAAR;GACE,KAAK;IACH,MAAM,EAAiB;IACvB;GACF,KAAK;IACH,MAAM,EAAc;IACpB;GACF,KAAK;IACH,MAAM,EAAc;IACpB;GACF,KAAK;IACH,MAAM,EAAiB;IACvB;GACF,KAAK;IACH,MAAM,EAAoB;IAC1B;EACJ;EACA,EAAmB;CACrB,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAsBD,OApBA,QAAgB;EACd,EAA2B;GACzB,IAAI,EAAmB,CAAgB;GACvC,UAAU;GACV,UAAU,KAAa,MAA4B;GACnD,eAAe;IACb,EAA0B;GAC5B;EACF,CAAC;CACH,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,GAEG,IAAkB,kBAAC,GAAD,EAAmB,SAAS,EAAI,CAAA,IAGpD,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAY,SAAQ;GAAQ,IAAI;IAAE,YAAY;IAAK,IAAI;GAAO;aAA9D;IAAiE;IAC1B,EAAS;IAAK;GACzC;;EACZ,kBAAC,GAAD;GAAY,SAAQ;GAAQ,IAAI,EAAE,cAAc,OAAO;aAAvD;IAA0D;IAEG;IAC1D,EAAS;IAAK;GACL;;EACZ,kBAAC,GAAD;GACE,oBAAoB;GACpB,cAAc,GAAe,gBAAgB,CAAC;GAC9C,kCAAkC;EACnC,CAAA;EACD,kBAAC,GAAD;GAAY,SAAQ;GAAQ,IAAI;IAAE,YAAY;IAAK,WAAW;GAAO;aAArE;IAAwE;IACtC,EAAS;IAAK;IACO,EAAS;IAAK;GACzD;;CACZ,EAAA,CAAA;AAEN"}
@@ -13,6 +13,13 @@ export type StyledTanStackTableProps<TData = unknown, TRowType = Row<TData>> = {
13
13
  * Defaults to false (fixed layout).
14
14
  */
15
15
  autoColumnSizing?: boolean;
16
+ /**
17
+ * When true, renders an additional horizontal scrollbar above the table (in addition to the
18
+ * browser's native scrollbar below it), synced to the same scroll position. Useful for wide
19
+ * tables where the bottom scrollbar may be far from the viewport's visible area.
20
+ * @default false
21
+ */
22
+ showTopScrollbar?: boolean;
16
23
  slots?: StyledTanStackTableSlots<TData, TRowType>;
17
24
  slotProps?: StyledTanStackTableSlotProps<TData, TRowType>;
18
25
  } & Pick<TableBodyProps<TData, TRowType>, 'rows' | 'rowTransform'>;
@@ -1 +1 @@
1
- {"version":3,"file":"StyledTanStackTable.d.ts","sourceRoot":"","sources":["../../../src/components/TanStackTable/StyledTanStackTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,EAC1B,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAGL,GAAG,EACH,KAAK,EACN,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAgC,cAAc,EAAE,MAAM,aAAa,CAAA;AAM1E,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAEhF,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,OAAO,EAAE,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI;IAC7E,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACnB,yBAAyB,CAAC,EAAE,yBAAyB,CAAA;IACrD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACjD,SAAS,CAAC,EAAE,4BAA4B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;CAC1D,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,CAAA;AAElE;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,KAAK,GAAG,OAAO,EACf,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,EACrB,KAAK,EAAE,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,2CA0LjD"}
1
+ {"version":3,"file":"StyledTanStackTable.d.ts","sourceRoot":"","sources":["../../../src/components/TanStackTable/StyledTanStackTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,EAC1B,MAAM,0CAA0C,CAAA;AAGjD,OAAO,EAGL,GAAG,EACH,KAAK,EACN,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAgC,cAAc,EAAE,MAAM,aAAa,CAAA;AAM1E,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAGhF,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,OAAO,EAAE,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI;IAC7E,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACnB,yBAAyB,CAAC,EAAE,yBAAyB,CAAA;IACrD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACjD,SAAS,CAAC,EAAE,4BAA4B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;CAC1D,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,CAAA;AAElE;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,KAAK,GAAG,OAAO,EACf,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,EACrB,KAAK,EAAE,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,2CAkOjD"}