synapse-react-client 4.0.34 → 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 (336) 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/assets/icons/curie-head.svg +21 -0
  57. package/dist/components/AccessRequirement/EntityActionsRequired.d.ts +0 -1
  58. package/dist/components/AccessRequirement/EntityActionsRequired.d.ts.map +1 -1
  59. package/dist/components/AccessRequirement/EntityActionsRequired.js +3 -6
  60. package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
  61. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +24 -2
  62. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
  63. package/dist/components/AccessRequirementList/AccessRequirementList.js +69 -66
  64. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  65. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
  66. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +67 -56
  67. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
  68. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
  69. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +1 -1
  70. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
  71. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +6 -1
  72. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
  73. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +55 -54
  74. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
  75. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts +3 -3
  76. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts.map +1 -1
  77. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +1 -1
  78. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  79. package/dist/components/CardContainer/CardConfiguration.d.ts +8 -0
  80. package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
  81. package/dist/components/ChangePassword/ChangePasswordWithToken.d.ts.map +1 -1
  82. package/dist/components/ChangePassword/ChangePasswordWithToken.js +58 -23
  83. package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
  84. package/dist/components/ChangePassword/useChangePasswordFormState.d.ts.map +1 -1
  85. package/dist/components/ChangePassword/useChangePasswordFormState.js +13 -3
  86. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  87. package/dist/components/CreateTableViewWizard/TableNameForm.d.ts.map +1 -1
  88. package/dist/components/CreateTableViewWizard/TableNameForm.js +11 -14
  89. package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
  90. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts +1 -1
  91. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -1
  92. package/dist/components/DataGrid/SyncGridWithSourceButton.js +55 -61
  93. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
  94. package/dist/components/DataGrid/components/contextMenu.d.ts.map +1 -1
  95. package/dist/components/DataGrid/components/contextMenu.js +15 -15
  96. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  97. package/dist/components/DataGrid/useMergeGridWithSource.d.ts +1 -5
  98. package/dist/components/DataGrid/useMergeGridWithSource.d.ts.map +1 -1
  99. package/dist/components/DataGrid/useMergeGridWithSource.js +21 -28
  100. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  101. package/dist/components/DatasetHosting/DatasetDownloadButton.d.ts +35 -0
  102. package/dist/components/DatasetHosting/DatasetDownloadButton.d.ts.map +1 -0
  103. package/dist/components/DatasetHosting/DatasetDownloadButton.js +132 -0
  104. package/dist/components/DatasetHosting/DatasetDownloadButton.js.map +1 -0
  105. package/dist/components/DatasetHosting/DatasetHosting.d.ts +91 -0
  106. package/dist/components/DatasetHosting/DatasetHosting.d.ts.map +1 -0
  107. package/dist/components/DatasetHosting/DatasetHosting.js +58 -0
  108. package/dist/components/DatasetHosting/DatasetHosting.js.map +1 -0
  109. package/dist/components/DatasetHosting/index.d.ts +5 -0
  110. package/dist/components/DatasetHosting/index.d.ts.map +1 -0
  111. package/dist/components/DatasetHosting/index.js +3 -0
  112. package/dist/components/DownloadCart/ActionRequiredListItem.d.ts +0 -2
  113. package/dist/components/DownloadCart/ActionRequiredListItem.d.ts.map +1 -1
  114. package/dist/components/DownloadCart/ActionRequiredListItem.js +2 -3
  115. package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
  116. package/dist/components/DownloadCart/DownloadCartPage.d.ts +1 -2
  117. package/dist/components/DownloadCart/DownloadCartPage.d.ts.map +1 -1
  118. package/dist/components/DownloadCart/DownloadCartPage.js +49 -49
  119. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  120. package/dist/components/DownloadCart/DownloadListActionsRequired.d.ts +1 -5
  121. package/dist/components/DownloadCart/DownloadListActionsRequired.d.ts.map +1 -1
  122. package/dist/components/DownloadCart/DownloadListActionsRequired.js +5 -6
  123. package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
  124. package/dist/components/DownloadCart/RequestDownloadCard.d.ts +0 -2
  125. package/dist/components/DownloadCart/RequestDownloadCard.d.ts.map +1 -1
  126. package/dist/components/DownloadCart/RequestDownloadCard.js +28 -32
  127. package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
  128. package/dist/components/DownloadCart/TableQueryActionsRequired.d.ts +0 -2
  129. package/dist/components/DownloadCart/TableQueryActionsRequired.d.ts.map +1 -1
  130. package/dist/components/DownloadCart/TableQueryActionsRequired.js +7 -8
  131. package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
  132. package/dist/components/DownloadCart/index.d.ts +1 -2
  133. package/dist/components/DownloadCart/index.d.ts.map +1 -1
  134. package/dist/components/DraggableDialog/DraggableDialog.d.ts +2 -1
  135. package/dist/components/DraggableDialog/DraggableDialog.d.ts.map +1 -1
  136. package/dist/components/DraggableDialog/DraggableDialog.js +42 -33
  137. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  138. package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts.map +1 -1
  139. package/dist/components/EntityTreeTable/hooks/useTableColumns.js +12 -6
  140. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  141. package/dist/components/ExperimentalMode/ExperimentalMode.js +2 -1
  142. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  143. package/dist/components/GenericCard/CardActionButtonStyleContext.d.ts +10 -0
  144. package/dist/components/GenericCard/CardActionButtonStyleContext.d.ts.map +1 -0
  145. package/dist/components/GenericCard/CardActionButtonStyleContext.js +10 -0
  146. package/dist/components/GenericCard/CardActionButtonStyleContext.js.map +1 -0
  147. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +41 -41
  148. package/dist/components/GenericCard/GenericCardActionButton.d.ts +5 -0
  149. package/dist/components/GenericCard/GenericCardActionButton.d.ts.map +1 -1
  150. package/dist/components/GenericCard/GenericCardActionButton.js +28 -11
  151. package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
  152. package/dist/components/GenericCard/TableRowGenericCard.d.ts +24 -0
  153. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  154. package/dist/components/GenericCard/TableRowGenericCard.js +205 -190
  155. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  156. package/dist/components/JSONArrayEditor/JSONArrayEditor.d.ts.map +1 -1
  157. package/dist/components/JSONArrayEditor/JSONArrayEditor.js +42 -42
  158. package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
  159. package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -0
  160. package/dist/components/JsonSchemaForm/JsonSchemaForm.d.ts.map +1 -1
  161. package/dist/components/JsonSchemaForm/JsonSchemaForm.js +13 -12
  162. package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
  163. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +5 -0
  164. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -0
  165. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +109 -0
  166. package/dist/components/QueryBuilder/QueryBuilderTypes.d.ts +39 -0
  167. package/dist/components/QueryBuilder/QueryBuilderTypes.d.ts.map +1 -0
  168. package/dist/components/QueryBuilder/QueryBuilderTypes.js +11 -0
  169. package/dist/components/QueryBuilder/QueryBuilderTypes.js.map +1 -0
  170. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +48 -0
  171. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -0
  172. package/dist/components/QueryBuilder/queryBuilderTranslation.js +256 -0
  173. package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -0
  174. package/dist/components/QueryContext/QueryContext.d.ts +0 -1
  175. package/dist/components/QueryContext/QueryContext.d.ts.map +1 -1
  176. package/dist/components/QueryContext/QueryContext.js.map +1 -1
  177. package/dist/components/QueryWrapper/QueryWrapper.d.ts +0 -1
  178. package/dist/components/QueryWrapper/QueryWrapper.d.ts.map +1 -1
  179. package/dist/components/QueryWrapper/QueryWrapper.js +52 -53
  180. package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
  181. package/dist/components/QueryWrapperErrorBoundary.d.ts.map +1 -1
  182. package/dist/components/QueryWrapperErrorBoundary.js +4 -11
  183. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  184. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +0 -1
  185. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  186. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  187. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js +123 -123
  188. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
  189. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  190. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +64 -55
  191. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  192. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.d.ts.map +1 -1
  193. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js +0 -1
  194. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
  195. package/dist/components/ShareThisPage/ShareThisPage.js +30 -29
  196. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  197. package/dist/components/StorybookComponentWrapper.d.ts.map +1 -1
  198. package/dist/components/StorybookComponentWrapper.js +15 -10
  199. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  200. package/dist/components/SynapseChat/GridAgentChat.d.ts.map +1 -1
  201. package/dist/components/SynapseChat/GridAgentChat.js +29 -31
  202. package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
  203. package/dist/components/SynapseChat/SynapseChat.d.ts +2 -1
  204. package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
  205. package/dist/components/SynapseChat/SynapseChat.js +118 -74
  206. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  207. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +3 -1
  208. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  209. package/dist/components/SynapseChat/SynapseChatInteraction.js +21 -21
  210. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  211. package/dist/components/SynapseChat/SynapseChatMessage.d.ts +1 -0
  212. package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
  213. package/dist/components/SynapseChat/SynapseChatMessage.js +9 -8
  214. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  215. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -1
  216. package/dist/components/SynapseChat/SynapsePortalChatDialog.js +2 -1
  217. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
  218. package/dist/components/SynapseTable/SynapseTable.d.ts.map +1 -1
  219. package/dist/components/SynapseTable/SynapseTable.js +2 -1
  220. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  221. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.d.ts.map +1 -1
  222. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js +29 -30
  223. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  224. package/dist/components/TanStackTable/StyledTanStackTable.d.ts +7 -0
  225. package/dist/components/TanStackTable/StyledTanStackTable.d.ts.map +1 -1
  226. package/dist/components/TanStackTable/StyledTanStackTable.js +68 -48
  227. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  228. package/dist/components/TanStackTable/TanStackTableUtils.d.ts.map +1 -1
  229. package/dist/components/TanStackTable/TanStackTableUtils.js +6 -6
  230. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  231. package/dist/components/TanStackTable/useSyncedTopScrollbar.d.ts +13 -0
  232. package/dist/components/TanStackTable/useSyncedTopScrollbar.d.ts.map +1 -0
  233. package/dist/components/TanStackTable/useSyncedTopScrollbar.js +32 -0
  234. package/dist/components/TanStackTable/useSyncedTopScrollbar.js.map +1 -0
  235. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts +12 -0
  236. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -0
  237. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +86 -0
  238. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -0
  239. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.d.ts.map +1 -1
  240. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js +20 -18
  241. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  242. package/dist/components/doi/CreateOrUpdateDoiModal.d.ts.map +1 -1
  243. package/dist/components/doi/CreateOrUpdateDoiModal.js +10 -13
  244. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  245. package/dist/components/entity/page/CreatedByModifiedBy.d.ts.map +1 -1
  246. package/dist/components/entity/page/CreatedByModifiedBy.js +43 -61
  247. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  248. package/dist/components/entity/page/createdByModifiedByTooltips.d.ts +7 -0
  249. package/dist/components/entity/page/createdByModifiedByTooltips.d.ts.map +1 -0
  250. package/dist/components/entity/page/createdByModifiedByTooltips.js +36 -0
  251. package/dist/components/entity/page/createdByModifiedByTooltips.js.map +1 -0
  252. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
  253. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +130 -65
  254. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  255. package/dist/components/index.d.ts +1 -0
  256. package/dist/components/index.d.ts.map +1 -1
  257. package/dist/components/index.js +143 -140
  258. package/dist/components/menu/DropdownMenu.d.ts.map +1 -1
  259. package/dist/components/menu/DropdownMenu.js +6 -6
  260. package/dist/components/menu/DropdownMenu.js.map +1 -1
  261. package/dist/components/widgets/Range.js +8 -2
  262. package/dist/components/widgets/Range.js.map +1 -1
  263. package/dist/components/widgets/query-filter/RangeFacetFilter.d.ts.map +1 -1
  264. package/dist/components/widgets/query-filter/RangeFacetFilter.js +2 -1
  265. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  266. package/dist/components/widgets/query-filter/RangeFacetFilterUI.d.ts.map +1 -1
  267. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +19 -19
  268. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  269. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +5 -5
  270. package/dist/index.js +161 -159
  271. package/dist/index.js.map +1 -1
  272. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
  273. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +30 -26
  274. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  275. package/dist/mocks/msw/handlers/fileHandlers.d.ts.map +1 -1
  276. package/dist/mocks/msw/handlers/fileHandlers.js +22 -22
  277. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  278. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.d.ts +1 -0
  279. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.d.ts.map +1 -1
  280. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js +7 -1
  281. package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
  282. package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
  283. package/dist/mocks/msw/handlers/userProfileHandlers.js +40 -36
  284. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  285. package/dist/mocks/user/mock_user_profile.d.ts +1 -0
  286. package/dist/mocks/user/mock_user_profile.d.ts.map +1 -1
  287. package/dist/mocks/user/mock_user_profile.js +45 -45
  288. package/dist/mocks/user/mock_user_profile.js.map +1 -1
  289. package/dist/style/components/_all.scss +0 -1
  290. package/dist/style/components/_cards.scss +4 -2
  291. package/dist/style/main.css +1 -1
  292. package/dist/synapse-queries/KeyFactory.d.ts +2 -0
  293. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  294. package/dist/synapse-queries/KeyFactory.js +6 -0
  295. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  296. package/dist/synapse-queries/dataaccess/index.js +4 -4
  297. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +20 -1
  298. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  299. package/dist/synapse-queries/dataaccess/useEDuc.js +75 -49
  300. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  301. package/dist/synapse-queries/index.js +190 -188
  302. package/dist/tsconfig.build.tsbuildinfo +1 -1
  303. package/dist/utils/APIConstants.d.ts +2 -0
  304. package/dist/utils/APIConstants.d.ts.map +1 -1
  305. package/dist/utils/APIConstants.js +2 -2
  306. package/dist/utils/APIConstants.js.map +1 -1
  307. package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
  308. package/dist/utils/AppUtils/session/ApplicationSessionManager.js +20 -19
  309. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  310. package/dist/utils/featureflag/FeatureFlags.d.ts +2 -4
  311. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  312. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  313. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  314. package/dist/utils/functions/RegularExpressions.d.ts +17 -0
  315. package/dist/utils/functions/RegularExpressions.d.ts.map +1 -1
  316. package/dist/utils/functions/RegularExpressions.js +11 -4
  317. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  318. package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
  319. package/dist/utils/functions/SqlFunctions.js +19 -3
  320. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  321. package/dist/utils/hooks/useIsHydrated.d.ts +9 -0
  322. package/dist/utils/hooks/useIsHydrated.d.ts.map +1 -0
  323. package/dist/utils/hooks/useIsHydrated.js +10 -0
  324. package/dist/utils/hooks/useIsHydrated.js.map +1 -0
  325. package/dist/utils/index.js +16 -16
  326. package/dist/utils/types/IsType.d.ts +4 -1
  327. package/dist/utils/types/IsType.d.ts.map +1 -1
  328. package/dist/utils/types/IsType.js +4 -4
  329. package/dist/utils/types/IsType.js.map +1 -1
  330. package/dist/utils/types/index.js +2 -2
  331. package/package.json +7 -7
  332. package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts +0 -12
  333. package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts.map +0 -1
  334. package/dist/components/DataGrid/useMergeGridWithRecordSet.js +0 -25
  335. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +0 -1
  336. package/dist/style/components/_annotations.scss +0 -110
@@ -0,0 +1,48 @@
1
+ import { FacetColumnRequest, QueryFilter } from '@sage-bionetworks/synapse-types';
2
+ import { QBGroup, QBNode } from './QueryBuilderTypes';
3
+ /** A multi-value list column is one whose column type ends in `_LIST`. */
4
+ export declare function isListColumn(columnType: string | null): boolean;
5
+ /**
6
+ * Escape SQL LIKE metacharacters (`%` and `_`) plus the escape character itself
7
+ * (`\`) so a user's literal `50%` isn't treated as a wildcard match.
8
+ */
9
+ export declare function escapeLike(input: string): string;
10
+ /**
11
+ * Inverse of {@link escapeLike}: strip the backslash escapes that
12
+ * {@link escapeLike} added.
13
+ */
14
+ export declare function unescapeLike(input: string): string;
15
+ /**
16
+ * Classify a LIKE pattern string produced by {@link qbNodeToApiFilter} back
17
+ * into a QB op + un-escaped text. Handles the four wildcard shapes
18
+ * produced by that function (`%val%`, `val%`, `%val`, `val`).
19
+ */
20
+ export declare function classifyLikePattern(pattern: string): {
21
+ op: 'contains' | 'starts_with' | 'ends_with' | 'is_exactly';
22
+ text: string;
23
+ };
24
+ /**
25
+ * Convert a QB tree node into a `QueryFilter`. Returns `null` when the node
26
+ * (or an entire subtree) has no complete conditions — an incomplete leaf and
27
+ * an empty group are both treated as "no constraint" so partial user input
28
+ * never contributes to the outgoing query.
29
+ */
30
+ export declare function qbNodeToApiFilter(node: QBNode): QueryFilter | null;
31
+ /**
32
+ * Convert an API `QueryFilter` back into a QB node. Used when the initial
33
+ * query already contains a `FilterGroup` (see filterMode auto-detect) so the
34
+ * QB tree can be reconstructed on mount.
35
+ *
36
+ * Some conversions are lossy — `HAS` always deserializes as `is_any_of` (we
37
+ * can't distinguish it from an `is_all_of` at the API layer), and `EQUAL` on
38
+ * text columns deserializes as `equal` (not `is_exactly`) because they share
39
+ * the same wire representation. Users can adjust the operator picker.
40
+ */
41
+ export declare function apiFilterToQBNode(filter: QueryFilter): QBNode | null;
42
+ /**
43
+ * Translate `selectedFacets` into a QB group whose children mirror each facet
44
+ * (as an AND-combined, non-negated group). The reverse direction is not
45
+ * generally possible; a QB → facets switch clears the tree.
46
+ */
47
+ export declare function selectedFacetsToQBGroup(selectedFacets: FacetColumnRequest[]): QBGroup;
48
+ //# sourceMappingURL=queryBuilderTranslation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilderTranslation.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/queryBuilderTranslation.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,kBAAkB,EAGlB,WAAW,EACZ,MAAM,iCAAiC,CAAA;AAQxC,OAAO,EAA0B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAW7E,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE/D;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG;IACpD,EAAE,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,YAAY,CAAA;IAC3D,IAAI,EAAE,MAAM,CAAA;CACb,CAUA;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAelE;AAwLD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAgCpE;AA8DD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,kBAAkB,EAAE,GACnC,OAAO,CAUT"}
@@ -0,0 +1,256 @@
1
+ import { isColumnMultiValueFunctionQueryFilter as e, isColumnSingleValueQueryFilter as t, isFacetColumnRangeRequest as n, isFacetColumnValuesRequest as r, isFilterGroup as i } from "../../utils/types/IsType.js";
2
+ import { isQBGroup as a } from "./QueryBuilderTypes.js";
3
+ import { ColumnMultiValueFunction as o, ColumnSingleValueFilterOperator as s, FILTER_GROUP_CONCRETE_TYPE_VALUE as c } from "@sage-bionetworks/synapse-types";
4
+ //#region src/components/QueryBuilder/queryBuilderTranslation.ts
5
+ var l = "org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter", u = "org.sagebionetworks.repo.model.table.ColumnMultiValueFunctionQueryFilter";
6
+ function d(e) {
7
+ return e != null && e.endsWith("_LIST");
8
+ }
9
+ function f(e) {
10
+ return e.replace(/[\\%_]/g, (e) => "\\" + e);
11
+ }
12
+ function p(e) {
13
+ return e.replace(/\\([\\%_])/g, "$1");
14
+ }
15
+ function m(e) {
16
+ let t = e.startsWith("%"), n = /(?<!\\)%$/.test(e), r = p(e.slice(+!!t, n ? -1 : void 0));
17
+ return t && n ? {
18
+ op: "contains",
19
+ text: r
20
+ } : n ? {
21
+ op: "starts_with",
22
+ text: r
23
+ } : t ? {
24
+ op: "ends_with",
25
+ text: r
26
+ } : {
27
+ op: "is_exactly",
28
+ text: r
29
+ };
30
+ }
31
+ function h(e) {
32
+ if (a(e)) {
33
+ let t = e.children.map(h).filter((e) => e !== null);
34
+ return t.length === 0 ? null : {
35
+ concreteType: c,
36
+ operator: e.combinator,
37
+ not: e.not || void 0,
38
+ children: t
39
+ };
40
+ }
41
+ return g(e);
42
+ }
43
+ function g(e) {
44
+ let { columnName: t, columnType: n, op: r, values: i, rangeMin: a, rangeMax: o, text: c } = e;
45
+ if (t === null) return null;
46
+ switch (r) {
47
+ case "is_any_of": return v(t, n, i);
48
+ case "is_all_of": return i.length === 0 ? null : C(t, i);
49
+ case "between": return y(t, a, o);
50
+ case "gt": return w(t, a, s.GREATER_THAN);
51
+ case "gte": return w(t, a, s.GREATER_THAN_OR_EQUAL);
52
+ case "lt": return w(t, o, s.LESS_THAN);
53
+ case "lte": return w(t, o, s.LESS_THAN_OR_EQUAL);
54
+ case "equal": return b(t, i, s.EQUAL);
55
+ case "not_equal": return b(t, i, s.NOT_EQUAL);
56
+ case "has_value": return S(t, s.IS_NOT_NULL, []);
57
+ case "no_value": return S(t, s.IS_NULL, []);
58
+ case "contains": return x(t, c, (e) => `%${e}%`);
59
+ case "starts_with": return x(t, c, (e) => `${e}%`);
60
+ case "ends_with": return x(t, c, (e) => `%${e}`);
61
+ case "is_exactly": return _(c) ? null : S(t, s.EQUAL, [c]);
62
+ default: return console.warn(`conditionToApiFilter: unrecognized QB op, skipping condition for column "${t}"`, { op: r }), null;
63
+ }
64
+ }
65
+ function _(e) {
66
+ return e == null || e === "";
67
+ }
68
+ function v(e, t, n) {
69
+ return n.length === 0 ? null : d(t) ? C(e, n) : S(e, s.IN, n);
70
+ }
71
+ function y(e, t, n) {
72
+ return _(t) || _(n) ? null : S(e, s.BETWEEN, [t, n]);
73
+ }
74
+ function b(e, t, n) {
75
+ return t.length === 0 ? null : S(e, n, [t[0]]);
76
+ }
77
+ function x(e, t, n) {
78
+ return _(t) ? null : S(e, s.LIKE, [n(f(t))]);
79
+ }
80
+ function S(e, t, n) {
81
+ return {
82
+ concreteType: l,
83
+ columnName: e,
84
+ operator: t,
85
+ values: n
86
+ };
87
+ }
88
+ function C(e, t) {
89
+ return {
90
+ concreteType: u,
91
+ columnName: e,
92
+ function: o.HAS,
93
+ _function: o.HAS,
94
+ values: t
95
+ };
96
+ }
97
+ function w(e, t, n) {
98
+ return t == null || t === "" ? null : S(e, n, [t]);
99
+ }
100
+ function T(n) {
101
+ if (i(n)) {
102
+ let e = (n.children ?? []).map(T).filter((e) => e !== null);
103
+ return {
104
+ kind: "group",
105
+ id: A(),
106
+ combinator: n.operator ?? "AND",
107
+ not: n.not ?? !1,
108
+ children: e
109
+ };
110
+ }
111
+ return t(n) ? E(n) : e(n) ? {
112
+ kind: "condition",
113
+ id: A(),
114
+ columnName: n.columnName,
115
+ columnType: null,
116
+ op: "is_any_of",
117
+ values: [...n.values],
118
+ rangeMin: null,
119
+ rangeMax: null,
120
+ text: null
121
+ } : null;
122
+ }
123
+ function E(e) {
124
+ let t = {
125
+ kind: "condition",
126
+ id: A(),
127
+ columnName: e.columnName,
128
+ columnType: null,
129
+ values: [],
130
+ rangeMin: null,
131
+ rangeMax: null,
132
+ text: null
133
+ }, [n] = e.values;
134
+ switch (e.operator) {
135
+ case s.IN: return {
136
+ ...t,
137
+ op: "is_any_of",
138
+ values: [...e.values]
139
+ };
140
+ case s.EQUAL: return {
141
+ ...t,
142
+ op: "equal",
143
+ values: [...e.values]
144
+ };
145
+ case s.NOT_EQUAL: return {
146
+ ...t,
147
+ op: "not_equal",
148
+ values: [...e.values]
149
+ };
150
+ case s.GREATER_THAN: return {
151
+ ...t,
152
+ op: "gt",
153
+ rangeMin: n ?? null
154
+ };
155
+ case s.GREATER_THAN_OR_EQUAL: return {
156
+ ...t,
157
+ op: "gte",
158
+ rangeMin: n ?? null
159
+ };
160
+ case s.LESS_THAN: return {
161
+ ...t,
162
+ op: "lt",
163
+ rangeMax: n ?? null
164
+ };
165
+ case s.LESS_THAN_OR_EQUAL: return {
166
+ ...t,
167
+ op: "lte",
168
+ rangeMax: n ?? null
169
+ };
170
+ case s.BETWEEN: return {
171
+ ...t,
172
+ op: "between",
173
+ rangeMin: e.values[0] ?? null,
174
+ rangeMax: e.values[1] ?? null
175
+ };
176
+ case s.IS_NULL: return {
177
+ ...t,
178
+ op: "no_value"
179
+ };
180
+ case s.IS_NOT_NULL: return {
181
+ ...t,
182
+ op: "has_value"
183
+ };
184
+ case s.LIKE: {
185
+ let e = m(n ?? "");
186
+ return {
187
+ ...t,
188
+ op: e.op,
189
+ text: e.text
190
+ };
191
+ }
192
+ default: return e.operator, console.warn(`singleValueToCondition: unrecognized filter operator, falling back to 'equal' for column "${e.columnName}"`, { operator: e.operator }), {
193
+ ...t,
194
+ op: "equal"
195
+ };
196
+ }
197
+ }
198
+ function D(e) {
199
+ return {
200
+ kind: "group",
201
+ id: A(),
202
+ combinator: "AND",
203
+ not: !1,
204
+ children: e.map(O).filter((e) => e !== null)
205
+ };
206
+ }
207
+ function O(e) {
208
+ if (r(e)) return !e.facetValues || e.facetValues.length === 0 ? null : {
209
+ kind: "condition",
210
+ id: A(),
211
+ columnName: e.columnName,
212
+ columnType: null,
213
+ op: "is_any_of",
214
+ values: [...e.facetValues],
215
+ rangeMin: null,
216
+ rangeMax: null,
217
+ text: null
218
+ };
219
+ if (n(e)) {
220
+ let t = e.min != null && e.min !== "", n = e.max != null && e.max !== "";
221
+ if (!t && !n) return null;
222
+ let r = {
223
+ kind: "condition",
224
+ id: A(),
225
+ columnName: e.columnName,
226
+ columnType: null,
227
+ values: [],
228
+ text: null
229
+ };
230
+ return t && n ? {
231
+ ...r,
232
+ op: "between",
233
+ rangeMin: e.min,
234
+ rangeMax: e.max
235
+ } : t ? {
236
+ ...r,
237
+ op: "gte",
238
+ rangeMin: e.min,
239
+ rangeMax: null
240
+ } : {
241
+ ...r,
242
+ op: "lte",
243
+ rangeMin: null,
244
+ rangeMax: e.max
245
+ };
246
+ }
247
+ return null;
248
+ }
249
+ var k = 0;
250
+ function A() {
251
+ return typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : (k += 1, `qb-${k}`);
252
+ }
253
+ //#endregion
254
+ export { T as apiFilterToQBNode, m as classifyLikePattern, f as escapeLike, d as isListColumn, h as qbNodeToApiFilter, D as selectedFacetsToQBGroup, p as unescapeLike };
255
+
256
+ //# sourceMappingURL=queryBuilderTranslation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilderTranslation.js","names":[],"sources":["../../../src/components/QueryBuilder/queryBuilderTranslation.ts"],"sourcesContent":["import {\n ColumnMultiValueFunction,\n ColumnMultiValueFunctionQueryFilter,\n ColumnSingleValueFilterOperator,\n ColumnSingleValueQueryFilter,\n FacetColumnRequest,\n FILTER_GROUP_CONCRETE_TYPE_VALUE,\n FilterGroup,\n QueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport {\n isColumnMultiValueFunctionQueryFilter,\n isColumnSingleValueQueryFilter,\n isFacetColumnRangeRequest,\n isFacetColumnValuesRequest,\n isFilterGroup,\n} from '../../utils/types/IsType'\nimport { isQBGroup, QBCondition, QBGroup, QBNode } from './QueryBuilderTypes'\n\nconst COLUMN_SINGLE_VALUE_QUERY_FILTER =\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter' as const\nconst COLUMN_MULTI_VALUE_FUNCTION_QUERY_FILTER =\n 'org.sagebionetworks.repo.model.table.ColumnMultiValueFunctionQueryFilter' as const\n\n// -----------------------------------------------------------------------------\n// Column-kind classification\n// -----------------------------------------------------------------------------\n\n/** A multi-value list column is one whose column type ends in `_LIST`. */\nexport function isListColumn(columnType: string | null): boolean {\n return columnType != null && columnType.endsWith('_LIST')\n}\n\n// -----------------------------------------------------------------------------\n// LIKE escaping / classification\n// -----------------------------------------------------------------------------\n\n/**\n * Escape SQL LIKE metacharacters (`%` and `_`) plus the escape character itself\n * (`\\`) so a user's literal `50%` isn't treated as a wildcard match.\n */\nexport function escapeLike(input: string): string {\n return input.replace(/[\\\\%_]/g, ch => '\\\\' + ch)\n}\n\n/**\n * Inverse of {@link escapeLike}: strip the backslash escapes that\n * {@link escapeLike} added.\n */\nexport function unescapeLike(input: string): string {\n return input.replace(/\\\\([\\\\%_])/g, '$1')\n}\n\n/**\n * Classify a LIKE pattern string produced by {@link qbNodeToApiFilter} back\n * into a QB op + un-escaped text. Handles the four wildcard shapes\n * produced by that function (`%val%`, `val%`, `%val`, `val`).\n */\nexport function classifyLikePattern(pattern: string): {\n op: 'contains' | 'starts_with' | 'ends_with' | 'is_exactly'\n text: string\n} {\n const startsPct = pattern.startsWith('%')\n // Only treat a trailing '%' as a wildcard if it isn't itself escaped\n const endsPct = /(?<!\\\\)%$/.test(pattern)\n const core = pattern.slice(startsPct ? 1 : 0, endsPct ? -1 : undefined)\n const text = unescapeLike(core)\n if (startsPct && endsPct) return { op: 'contains', text }\n if (endsPct) return { op: 'starts_with', text }\n if (startsPct) return { op: 'ends_with', text }\n return { op: 'is_exactly', text }\n}\n\n// -----------------------------------------------------------------------------\n// QB → API\n// -----------------------------------------------------------------------------\n\n/**\n * Convert a QB tree node into a `QueryFilter`. Returns `null` when the node\n * (or an entire subtree) has no complete conditions — an incomplete leaf and\n * an empty group are both treated as \"no constraint\" so partial user input\n * never contributes to the outgoing query.\n */\nexport function qbNodeToApiFilter(node: QBNode): QueryFilter | null {\n if (isQBGroup(node)) {\n const children = node.children\n .map(qbNodeToApiFilter)\n .filter((f): f is QueryFilter => f !== null)\n if (children.length === 0) return null\n const filter: FilterGroup = {\n concreteType: FILTER_GROUP_CONCRETE_TYPE_VALUE,\n operator: node.combinator,\n not: node.not || undefined,\n children,\n }\n return filter\n }\n return conditionToApiFilter(node)\n}\n\nfunction conditionToApiFilter(\n node: QBCondition,\n): ColumnSingleValueQueryFilter | ColumnMultiValueFunctionQueryFilter | null {\n const { columnName, columnType, op, values, rangeMin, rangeMax, text } = node\n if (columnName === null) return null\n\n switch (op) {\n case 'is_any_of':\n return anyOfFilter(columnName, columnType, values)\n case 'is_all_of':\n return values.length === 0\n ? null\n : makeMultiValueFilter(columnName, values)\n case 'between':\n return betweenFilter(columnName, rangeMin, rangeMax)\n case 'gt':\n return rangeBoundFilter(\n columnName,\n rangeMin,\n ColumnSingleValueFilterOperator.GREATER_THAN,\n )\n case 'gte':\n return rangeBoundFilter(\n columnName,\n rangeMin,\n ColumnSingleValueFilterOperator.GREATER_THAN_OR_EQUAL,\n )\n case 'lt':\n return rangeBoundFilter(\n columnName,\n rangeMax,\n ColumnSingleValueFilterOperator.LESS_THAN,\n )\n case 'lte':\n return rangeBoundFilter(\n columnName,\n rangeMax,\n ColumnSingleValueFilterOperator.LESS_THAN_OR_EQUAL,\n )\n case 'equal':\n return equalityFilter(\n columnName,\n values,\n ColumnSingleValueFilterOperator.EQUAL,\n )\n case 'not_equal':\n return equalityFilter(\n columnName,\n values,\n ColumnSingleValueFilterOperator.NOT_EQUAL,\n )\n case 'has_value':\n return makeSingleValueFilter(\n columnName,\n ColumnSingleValueFilterOperator.IS_NOT_NULL,\n [],\n )\n case 'no_value':\n return makeSingleValueFilter(\n columnName,\n ColumnSingleValueFilterOperator.IS_NULL,\n [],\n )\n case 'contains':\n return likeFilter(columnName, text, escaped => `%${escaped}%`)\n case 'starts_with':\n return likeFilter(columnName, text, escaped => `${escaped}%`)\n case 'ends_with':\n return likeFilter(columnName, text, escaped => `%${escaped}`)\n case 'is_exactly':\n return isBlank(text)\n ? null\n : makeSingleValueFilter(\n columnName,\n ColumnSingleValueFilterOperator.EQUAL,\n [text!],\n )\n default: {\n // Compile-time exhaustiveness guard; the log fires only if a new op is\n // added to QBConditionOp without a case here.\n op satisfies never\n console.warn(\n `conditionToApiFilter: unrecognized QB op, skipping condition for column \"${columnName}\"`,\n { op },\n )\n return null\n }\n }\n}\n\nfunction isBlank(value: string | null | undefined): boolean {\n return value == null || value === ''\n}\n\nfunction anyOfFilter(\n columnName: string,\n columnType: string | null,\n values: string[],\n): ColumnSingleValueQueryFilter | ColumnMultiValueFunctionQueryFilter | null {\n if (values.length === 0) return null\n if (isListColumn(columnType)) return makeMultiValueFilter(columnName, values)\n return makeSingleValueFilter(\n columnName,\n ColumnSingleValueFilterOperator.IN,\n values,\n )\n}\n\nfunction betweenFilter(\n columnName: string,\n rangeMin: string | null,\n rangeMax: string | null,\n): ColumnSingleValueQueryFilter | null {\n if (isBlank(rangeMin) || isBlank(rangeMax)) return null\n return makeSingleValueFilter(\n columnName,\n ColumnSingleValueFilterOperator.BETWEEN,\n [rangeMin!, rangeMax!],\n )\n}\n\nfunction equalityFilter(\n columnName: string,\n values: string[],\n operator: ColumnSingleValueFilterOperator,\n): ColumnSingleValueQueryFilter | null {\n if (values.length === 0) return null\n return makeSingleValueFilter(columnName, operator, [values[0]])\n}\n\nfunction likeFilter(\n columnName: string,\n text: string | null,\n wrap: (escapedText: string) => string,\n): ColumnSingleValueQueryFilter | null {\n if (isBlank(text)) return null\n return makeSingleValueFilter(\n columnName,\n ColumnSingleValueFilterOperator.LIKE,\n [wrap(escapeLike(text!))],\n )\n}\n\nfunction makeSingleValueFilter(\n columnName: string,\n operator: ColumnSingleValueFilterOperator,\n values: string[],\n): ColumnSingleValueQueryFilter {\n return {\n concreteType: COLUMN_SINGLE_VALUE_QUERY_FILTER,\n columnName,\n operator,\n values,\n }\n}\n\nfunction makeMultiValueFilter(\n columnName: string,\n values: string[],\n): ColumnMultiValueFunctionQueryFilter {\n return {\n concreteType: COLUMN_MULTI_VALUE_FUNCTION_QUERY_FILTER,\n columnName,\n function: ColumnMultiValueFunction.HAS,\n _function: ColumnMultiValueFunction.HAS,\n values,\n }\n}\n\nfunction rangeBoundFilter(\n columnName: string,\n bound: string | null,\n operator: ColumnSingleValueFilterOperator,\n): ColumnSingleValueQueryFilter | null {\n if (bound == null || bound === '') return null\n return makeSingleValueFilter(columnName, operator, [bound])\n}\n\n// -----------------------------------------------------------------------------\n// API → QB (initial hydration)\n// -----------------------------------------------------------------------------\n\n/**\n * Convert an API `QueryFilter` back into a QB node. Used when the initial\n * query already contains a `FilterGroup` (see filterMode auto-detect) so the\n * QB tree can be reconstructed on mount.\n *\n * Some conversions are lossy — `HAS` always deserializes as `is_any_of` (we\n * can't distinguish it from an `is_all_of` at the API layer), and `EQUAL` on\n * text columns deserializes as `equal` (not `is_exactly`) because they share\n * the same wire representation. Users can adjust the operator picker.\n */\nexport function apiFilterToQBNode(filter: QueryFilter): QBNode | null {\n if (isFilterGroup(filter)) {\n const children = (filter.children ?? [])\n .map(apiFilterToQBNode)\n .filter((n): n is QBNode => n !== null)\n return {\n kind: 'group',\n id: newId(),\n combinator: filter.operator ?? 'AND',\n not: filter.not ?? false,\n children,\n }\n }\n if (isColumnSingleValueQueryFilter(filter)) {\n return singleValueToCondition(filter)\n }\n if (isColumnMultiValueFunctionQueryFilter(filter)) {\n return {\n kind: 'condition',\n id: newId(),\n columnName: filter.columnName,\n columnType: null,\n op: 'is_any_of',\n values: [...filter.values],\n rangeMin: null,\n rangeMax: null,\n text: null,\n }\n }\n // TextMatchesQueryFilter and other non-QB filter types are not part of the\n // QB tree — they belong in the non-QB baseline.\n return null\n}\n\nfunction singleValueToCondition(\n filter: ColumnSingleValueQueryFilter,\n): QBCondition {\n const base = {\n kind: 'condition' as const,\n id: newId(),\n columnName: filter.columnName,\n columnType: null,\n values: [] as string[],\n rangeMin: null as string | null,\n rangeMax: null as string | null,\n text: null as string | null,\n }\n const [firstValue] = filter.values\n switch (filter.operator) {\n case ColumnSingleValueFilterOperator.IN:\n return { ...base, op: 'is_any_of', values: [...filter.values] }\n case ColumnSingleValueFilterOperator.EQUAL:\n return { ...base, op: 'equal', values: [...filter.values] }\n case ColumnSingleValueFilterOperator.NOT_EQUAL:\n return { ...base, op: 'not_equal', values: [...filter.values] }\n case ColumnSingleValueFilterOperator.GREATER_THAN:\n return { ...base, op: 'gt', rangeMin: firstValue ?? null }\n case ColumnSingleValueFilterOperator.GREATER_THAN_OR_EQUAL:\n return { ...base, op: 'gte', rangeMin: firstValue ?? null }\n case ColumnSingleValueFilterOperator.LESS_THAN:\n return { ...base, op: 'lt', rangeMax: firstValue ?? null }\n case ColumnSingleValueFilterOperator.LESS_THAN_OR_EQUAL:\n return { ...base, op: 'lte', rangeMax: firstValue ?? null }\n case ColumnSingleValueFilterOperator.BETWEEN:\n return {\n ...base,\n op: 'between',\n rangeMin: filter.values[0] ?? null,\n rangeMax: filter.values[1] ?? null,\n }\n case ColumnSingleValueFilterOperator.IS_NULL:\n return { ...base, op: 'no_value' }\n case ColumnSingleValueFilterOperator.IS_NOT_NULL:\n return { ...base, op: 'has_value' }\n case ColumnSingleValueFilterOperator.LIKE: {\n const classified = classifyLikePattern(firstValue ?? '')\n return { ...base, op: classified.op, text: classified.text }\n }\n default:\n // Compile-time exhaustiveness guard; the log fires only if a new operator\n // is added to ColumnSingleValueFilterOperator without a case here.\n filter.operator satisfies never\n console.warn(\n `singleValueToCondition: unrecognized filter operator, falling back to 'equal' for column \"${filter.columnName}\"`,\n { operator: filter.operator },\n )\n return { ...base, op: 'equal' }\n }\n}\n\n// -----------------------------------------------------------------------------\n// Facets → QB (mode switch)\n// -----------------------------------------------------------------------------\n\n/**\n * Translate `selectedFacets` into a QB group whose children mirror each facet\n * (as an AND-combined, non-negated group). The reverse direction is not\n * generally possible; a QB → facets switch clears the tree.\n */\nexport function selectedFacetsToQBGroup(\n selectedFacets: FacetColumnRequest[],\n): QBGroup {\n return {\n kind: 'group',\n id: newId(),\n combinator: 'AND',\n not: false,\n children: selectedFacets\n .map(facetToQBCondition)\n .filter((c): c is QBCondition => c !== null),\n }\n}\n\nfunction facetToQBCondition(facet: FacetColumnRequest): QBCondition | null {\n if (isFacetColumnValuesRequest(facet)) {\n if (!facet.facetValues || facet.facetValues.length === 0) return null\n return {\n kind: 'condition',\n id: newId(),\n columnName: facet.columnName,\n columnType: null,\n op: 'is_any_of',\n values: [...facet.facetValues],\n rangeMin: null,\n rangeMax: null,\n text: null,\n }\n }\n if (isFacetColumnRangeRequest(facet)) {\n const hasMin = facet.min != null && facet.min !== ''\n const hasMax = facet.max != null && facet.max !== ''\n if (!hasMin && !hasMax) return null\n const base = {\n kind: 'condition' as const,\n id: newId(),\n columnName: facet.columnName,\n columnType: null,\n values: [],\n text: null,\n }\n if (hasMin && hasMax) {\n return {\n ...base,\n op: 'between',\n rangeMin: facet.min!,\n rangeMax: facet.max!,\n }\n }\n if (hasMin) {\n return { ...base, op: 'gte', rangeMin: facet.min!, rangeMax: null }\n }\n return { ...base, op: 'lte', rangeMin: null, rangeMax: facet.max! }\n }\n return null\n}\n\n// -----------------------------------------------------------------------------\n// Utilities\n// -----------------------------------------------------------------------------\n\nlet idCounter = 0\nfunction newId(): string {\n if (\n typeof crypto !== 'undefined' &&\n typeof crypto.randomUUID === 'function'\n ) {\n return crypto.randomUUID()\n }\n // Monotonic counter is sufficient — QB ids are client-only React keys, not secrets.\n idCounter += 1\n return `qb-${idCounter}`\n}\n"],"mappings":"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"}
@@ -34,7 +34,6 @@ export type QueryContextType = {
34
34
  hasFacetedSelectColumn: boolean;
35
35
  /** Returns true iff the current request has resettable filters applied via facet filters or additionalFilters. Excludes filters applied to a locked column */
36
36
  hasResettableFilters: boolean;
37
- onViewSharingSettingsClicked?: (benefactorId: string) => void;
38
37
  /** Combines two faceted columns into a single inclusive range selector */
39
38
  combineRangeFacetConfig?: ReadonlyDeep<CombineRangeFacetConfig>;
40
39
  /** react-query UseQueryOptions to fetch the current page of table data */
@@ -1 +1 @@
1
- {"version":3,"file":"QueryContext.d.ts","sourceRoot":"","sources":["../../../src/components/QueryContext/QueryContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryContext.d.ts","sourceRoot":"","sources":["../../../src/components/QueryContext/QueryContext.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"QueryContext.js","names":[],"sources":["../../../src/components/QueryContext/QueryContext.tsx"],"sourcesContent":["import React from 'react'\nimport { LockedColumn } from '@/utils'\nimport { ImmutableTableQueryResult } from '@/utils/hooks/useImmutableTableQuery/useImmutableTableQuery'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { createContext, PropsWithChildren, useContext } from 'react'\nimport { ReadonlyDeep } from 'type-fest'\nimport { TableQueryUseQueryOptions } from '../QueryWrapper/TableQueryUseQueryOptions'\n\nexport type QueryContextType = {\n isInfinite: boolean\n /** The entity ID parsed from the SQL query */\n entityId?: string\n /** The optional version number of the table parsed from the SQL query */\n versionNumber: number | undefined\n currentQueryRequest: ReadonlyDeep<QueryBundleRequest>\n nextQueryRequest: ReadonlyDeep<QueryBundleRequest>\n /** Returns a deep clone of the current query bundle request */\n getCurrentQueryRequest: () => QueryBundleRequest\n /** Returns a deep clone of the initial query bundle request */\n getInitQueryRequest: () => QueryBundleRequest\n /** Updates the current query with the passed request */\n executeQueryRequest: ImmutableTableQueryResult['setQuery']\n /** Resets the query to its initial state, clearing all filters added by the user */\n resetQuery: ImmutableTableQueryResult['resetQuery']\n resetDebounceTimer: ImmutableTableQueryResult['resetDebounceTimer']\n addValueToSelectedFacet: ImmutableTableQueryResult['addValueToSelectedFacet']\n setRangeFacetValue: ImmutableTableQueryResult['setRangeFacetValue']\n removeSelectedFacet: ImmutableTableQueryResult['removeSelectedFacet']\n removeValueFromSelectedFacet: ImmutableTableQueryResult['removeValueFromSelectedFacet']\n /** Removes a matching QueryFilter from the query */\n removeQueryFilter: ImmutableTableQueryResult['removeQueryFilter']\n /** Removes a value from a QueryFilter. If no more values remain in the filter, the filter is also removed */\n removeValueFromQueryFilter: ImmutableTableQueryResult['removeValueFromQueryFilter']\n /** Whether facets are available to be filtered upon based on the current data */\n hasFacetedSelectColumn: boolean\n /** Returns true iff the current request has resettable filters applied via facet filters or additionalFilters. Excludes filters applied to a locked column */\n hasResettableFilters: boolean\n // Either open benefactor entity page in a new window or open the sharing settings dialog (in Synapse.org)\n onViewSharingSettingsClicked?: (benefactorId: string) => void\n /** Combines two faceted columns into a single inclusive range selector */\n combineRangeFacetConfig?: ReadonlyDeep<CombineRangeFacetConfig>\n\n /** react-query UseQueryOptions to fetch the current page of table data */\n rowDataQueryOptions: TableQueryUseQueryOptions['rowDataQueryOptions']\n /** react-query UseInfiniteQueryOptions to fetch infinite rows of table data */\n rowDataInfiniteQueryOptions: TableQueryUseQueryOptions['rowDataInfiniteQueryOptions']\n /** react-query UseQueryOptions to fetch the current query metadata (e.g. column models, facet statistics, total number of rows) */\n queryMetadataQueryOptions: TableQueryUseQueryOptions['queryMetadataQueryOptions']\n\n /** Navigates to a particular page. The first page has value 1. Note that this has no effect if `isInfinite` is true */\n goToPage: (pageNum: number) => void\n /** The current page number, where page 1 is the first page. Note that this has no effect if `isInfinite` is true. */\n currentPage: number\n /** Updates the page size */\n setPageSize: (pageSize: number) => void\n /** The current page size. */\n pageSize: number\n\n /**\n * A column name may be \"locked\" so that it is both (1) not shown to the user that the filter is active, and (2) not modifiable by the user.\n * For example, we may show only the data matching a particular facet value on a Details Page without implying that the shown data is part of a larger table.\n * The presence of a locked filter will result in a client-side modification of the active query and result bundle data.\n */\n lockedColumn: LockedColumn | undefined\n\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row entity ID\n */\n fileIdColumnName: string | undefined\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row (entity) version\n */\n fileVersionColumnName: string | undefined\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row (entity) name\n */\n fileNameColumnName: string | undefined\n\n /**\n * Optional factory to get react-query options for a given page number without calling the standard\n * table query API. When provided (e.g. by SearchQueryWrapper), usePrefetchTableRows will use this\n * instead of getTableQueryUseQueryOptions so that the correct API is called for prefetching.\n */\n getRowDataQueryOptionsForPage?: (\n pageNumber: number,\n ) => TableQueryUseQueryOptions['rowDataQueryOptions']\n}\n\n/**\n * This must be exported to use the context in class components.\n */\nexport const QueryContext = createContext<QueryContextType | undefined>(\n undefined,\n)\n\nexport type QueryContextProviderProps = PropsWithChildren<{\n queryContext: QueryContextType\n}>\n\n/**\n * Provides data related to a Synapse table query, and functions for iterating through pages of the data.\n */\nexport const QueryContextProvider = ({\n children,\n queryContext,\n}: QueryContextProviderProps): React.ReactNode => {\n return (\n <QueryContext.Provider value={queryContext}>\n {children}\n </QueryContext.Provider>\n )\n}\n\n/**\n * Returns the QueryContext, including QueryResultBundle\n *\n * @template TIncludedFields - If you know which specific optional fields will be included in the QueryResultBundle,\n * you can specify them in the generic TIncludedFields\n * @template ExcludeOtherFields - If set to true, will remove optional fields besides those specified in TIncludedFields,\n * default false\n */\nexport function useQueryContext(): QueryContextType {\n const context = useContext(QueryContext)\n if (context === undefined) {\n throw new Error('useQueryContext must be used within a QueryWrapper')\n }\n return context\n}\n\nexport type CombineRangeFacetConfig = {\n minFacetColumn: string\n maxFacetColumn: string\n label: string\n}\n\nexport const QueryContextConsumer = QueryContext.Consumer\n"],"mappings":";;;AA2FA,IAAa,IAAe,EAC1B,KAAA,CACF,GASa,KAAwB,EACnC,aACA,sBAGE,kBAAC,EAAa,UAAd;CAAuB,OAAO;CAC3B;AACoB,CAAA;AAY3B,SAAgB,IAAoC;CAClD,IAAM,IAAU,EAAW,CAAY;CACvC,IAAI,MAAY,KAAA,GACd,MAAU,MAAM,oDAAoD;CAEtE,OAAO;AACT;AAQA,IAAa,IAAuB,EAAa"}
1
+ {"version":3,"file":"QueryContext.js","names":[],"sources":["../../../src/components/QueryContext/QueryContext.tsx"],"sourcesContent":["import React from 'react'\nimport { LockedColumn } from '@/utils'\nimport { ImmutableTableQueryResult } from '@/utils/hooks/useImmutableTableQuery/useImmutableTableQuery'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { createContext, PropsWithChildren, useContext } from 'react'\nimport { ReadonlyDeep } from 'type-fest'\nimport { TableQueryUseQueryOptions } from '../QueryWrapper/TableQueryUseQueryOptions'\n\nexport type QueryContextType = {\n isInfinite: boolean\n /** The entity ID parsed from the SQL query */\n entityId?: string\n /** The optional version number of the table parsed from the SQL query */\n versionNumber: number | undefined\n currentQueryRequest: ReadonlyDeep<QueryBundleRequest>\n nextQueryRequest: ReadonlyDeep<QueryBundleRequest>\n /** Returns a deep clone of the current query bundle request */\n getCurrentQueryRequest: () => QueryBundleRequest\n /** Returns a deep clone of the initial query bundle request */\n getInitQueryRequest: () => QueryBundleRequest\n /** Updates the current query with the passed request */\n executeQueryRequest: ImmutableTableQueryResult['setQuery']\n /** Resets the query to its initial state, clearing all filters added by the user */\n resetQuery: ImmutableTableQueryResult['resetQuery']\n resetDebounceTimer: ImmutableTableQueryResult['resetDebounceTimer']\n addValueToSelectedFacet: ImmutableTableQueryResult['addValueToSelectedFacet']\n setRangeFacetValue: ImmutableTableQueryResult['setRangeFacetValue']\n removeSelectedFacet: ImmutableTableQueryResult['removeSelectedFacet']\n removeValueFromSelectedFacet: ImmutableTableQueryResult['removeValueFromSelectedFacet']\n /** Removes a matching QueryFilter from the query */\n removeQueryFilter: ImmutableTableQueryResult['removeQueryFilter']\n /** Removes a value from a QueryFilter. If no more values remain in the filter, the filter is also removed */\n removeValueFromQueryFilter: ImmutableTableQueryResult['removeValueFromQueryFilter']\n /** Whether facets are available to be filtered upon based on the current data */\n hasFacetedSelectColumn: boolean\n /** Returns true iff the current request has resettable filters applied via facet filters or additionalFilters. Excludes filters applied to a locked column */\n hasResettableFilters: boolean\n /** Combines two faceted columns into a single inclusive range selector */\n combineRangeFacetConfig?: ReadonlyDeep<CombineRangeFacetConfig>\n\n /** react-query UseQueryOptions to fetch the current page of table data */\n rowDataQueryOptions: TableQueryUseQueryOptions['rowDataQueryOptions']\n /** react-query UseInfiniteQueryOptions to fetch infinite rows of table data */\n rowDataInfiniteQueryOptions: TableQueryUseQueryOptions['rowDataInfiniteQueryOptions']\n /** react-query UseQueryOptions to fetch the current query metadata (e.g. column models, facet statistics, total number of rows) */\n queryMetadataQueryOptions: TableQueryUseQueryOptions['queryMetadataQueryOptions']\n\n /** Navigates to a particular page. The first page has value 1. Note that this has no effect if `isInfinite` is true */\n goToPage: (pageNum: number) => void\n /** The current page number, where page 1 is the first page. Note that this has no effect if `isInfinite` is true. */\n currentPage: number\n /** Updates the page size */\n setPageSize: (pageSize: number) => void\n /** The current page size. */\n pageSize: number\n\n /**\n * A column name may be \"locked\" so that it is both (1) not shown to the user that the filter is active, and (2) not modifiable by the user.\n * For example, we may show only the data matching a particular facet value on a Details Page without implying that the shown data is part of a larger table.\n * The presence of a locked filter will result in a client-side modification of the active query and result bundle data.\n */\n lockedColumn: LockedColumn | undefined\n\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row entity ID\n */\n fileIdColumnName: string | undefined\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row (entity) version\n */\n fileVersionColumnName: string | undefined\n /**\n * PORTALS-3071: For Tables that are not entityviews or a datasets, keep track of the column that should be used for the row (entity) name\n */\n fileNameColumnName: string | undefined\n\n /**\n * Optional factory to get react-query options for a given page number without calling the standard\n * table query API. When provided (e.g. by SearchQueryWrapper), usePrefetchTableRows will use this\n * instead of getTableQueryUseQueryOptions so that the correct API is called for prefetching.\n */\n getRowDataQueryOptionsForPage?: (\n pageNumber: number,\n ) => TableQueryUseQueryOptions['rowDataQueryOptions']\n}\n\n/**\n * This must be exported to use the context in class components.\n */\nexport const QueryContext = createContext<QueryContextType | undefined>(\n undefined,\n)\n\nexport type QueryContextProviderProps = PropsWithChildren<{\n queryContext: QueryContextType\n}>\n\n/**\n * Provides data related to a Synapse table query, and functions for iterating through pages of the data.\n */\nexport const QueryContextProvider = ({\n children,\n queryContext,\n}: QueryContextProviderProps): React.ReactNode => {\n return (\n <QueryContext.Provider value={queryContext}>\n {children}\n </QueryContext.Provider>\n )\n}\n\n/**\n * Returns the QueryContext, including QueryResultBundle\n *\n * @template TIncludedFields - If you know which specific optional fields will be included in the QueryResultBundle,\n * you can specify them in the generic TIncludedFields\n * @template ExcludeOtherFields - If set to true, will remove optional fields besides those specified in TIncludedFields,\n * default false\n */\nexport function useQueryContext(): QueryContextType {\n const context = useContext(QueryContext)\n if (context === undefined) {\n throw new Error('useQueryContext must be used within a QueryWrapper')\n }\n return context\n}\n\nexport type CombineRangeFacetConfig = {\n minFacetColumn: string\n maxFacetColumn: string\n label: string\n}\n\nexport const QueryContextConsumer = QueryContext.Consumer\n"],"mappings":";;;AAyFA,IAAa,IAAe,EAC1B,KAAA,CACF,GASa,KAAwB,EACnC,aACA,sBAGE,kBAAC,EAAa,UAAd;CAAuB,OAAO;CAC3B;AACoB,CAAA;AAY3B,SAAgB,IAAoC;CAClD,IAAM,IAAU,EAAW,CAAY;CACvC,IAAI,MAAY,KAAA,GACd,MAAU,MAAM,oDAAoD;CAEtE,OAAO;AACT;AAQA,IAAa,IAAuB,EAAa"}
@@ -10,7 +10,6 @@ export type QueryWrapperProps = PropsWithChildren<{
10
10
  /** Called when the query result rows change */
11
11
  onQueryResultBundleChange?: (newQueryResultBundleJson: string) => void;
12
12
  lockedColumn?: LockedColumn;
13
- onViewSharingSettingsClicked?: (benefactorId: string) => void;
14
13
  isRowSelectionVisible?: boolean;
15
14
  /** The set of columns that defines a uniqueness constraint on the table for the purposes of filtering based on row selection.
16
15
  * Note that Synapse tables have no internal concept of a primary key.
@@ -1 +1 @@
1
- {"version":3,"file":"QueryWrapper.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapper/QueryWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAGzD,OAAO,EACL,kBAAkB,EAEnB,MAAM,iCAAiC,CAAA;AAGxC,OAAO,EAAE,iBAAiB,EAAmC,MAAM,OAAO,CAAA;AAG1E,OAAO,EACL,uBAAuB,EAGxB,MAAM,8BAA8B,CAAA;AAcrC,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;IAChD,gBAAgB,EAAE,kBAAkB,CAAA;IACpC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,+CAA+C;IAC/C,yBAAyB,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,4BAA4B,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7D,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,iHAAiH;IACjH,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;IACjD,sHAAsH;IACtH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mIAAmI;IACnI,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B,CAAC,CAAA;AAwLF,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAQpD"}
1
+ {"version":3,"file":"QueryWrapper.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapper/QueryWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAGzD,OAAO,EACL,kBAAkB,EAEnB,MAAM,iCAAiC,CAAA;AAGxC,OAAO,EAAE,iBAAiB,EAAmC,MAAM,OAAO,CAAA;AAG1E,OAAO,EACL,uBAAuB,EAGxB,MAAM,8BAA8B,CAAA;AAcrC,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;IAChD,gBAAgB,EAAE,kBAAkB,CAAA;IACpC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,+CAA+C;IAC/C,yBAAyB,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,iHAAiH;IACjH,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;IACjD,sHAAsH;IACtH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mIAAmI;IACnI,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B,CAAC,CAAA;AAsLF,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAQpD"}
@@ -3,9 +3,9 @@ import { hasResettableFilters as t } from "../../utils/functions/queryUtils.js";
3
3
  import { ConfirmationDialog as n } from "../ConfirmationDialog/ConfirmationDialog.js";
4
4
  import "../ConfirmationDialog/index.js";
5
5
  import { QueryContextProvider as ee } from "../QueryContext/QueryContext.js";
6
- import te from "../../utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js";
7
- import { useTableQueryUseQueryOptions as r } from "./TableQueryUseQueryOptions.js";
8
- import { isRowSelectionUIFloatingAtom as i, isRowSelectionVisibleAtom as a, rowSelectionPrimaryKeyAtom as o, selectedRowsAtom as s, useHasSelectedRowsAtomValue as c } from "./TableRowSelectionState.js";
6
+ import r from "../../utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js";
7
+ import { useTableQueryUseQueryOptions as i } from "./TableQueryUseQueryOptions.js";
8
+ import { isRowSelectionUIFloatingAtom as a, isRowSelectionVisibleAtom as o, rowSelectionPrimaryKeyAtom as s, selectedRowsAtom as te, useHasSelectedRowsAtomValue as c } from "./TableRowSelectionState.js";
9
9
  import l from "./useComputeRowSelectionPrimaryKey.js";
10
10
  import u from "./useHasFacetedSelectColumn.js";
11
11
  import d from "./useOnQueryDataChange.js";
@@ -19,81 +19,80 @@ function v(t) {
19
19
  return /* @__PURE__ */ h(e, { children: /* @__PURE__ */ h(y, { ...t }) });
20
20
  }
21
21
  function y(e) {
22
- let { initQueryRequest: g, onQueryChange: v, onQueryResultBundleChange: y = ie, lockedColumn: b, componentIndex: x, shouldDeepLink: S, onViewSharingSettingsClicked: C, isRowSelectionVisible: w = !1, isRowSelectionUIFloating: T = !0, rowSelectionPrimaryKey: E, isInfinite: D = !1, combineRangeFacetConfig: O, fileIdColumnName: k, fileVersionColumnName: A, fileNameColumnName: j } = e, { entityId: M = "", versionNumber: N, getInitQueryRequest: P, getCurrentQueryRequest: F, setQuery: I, resetQuery: L, removeSelectedFacet: R, removeValueFromSelectedFacet: z, removeQueryFilter: ae, removeValueFromQueryFilter: B, onConfirmChange: V, isConfirmingChange: H, onCancelChange: U, nextQueryRequest: W, currentQueryRequest: G, addValueToSelectedFacet: K, setRangeFacetValue: q, resetDebounceTimer: J, currentPage: oe, goToPage: se, pageSize: ce, setPageSize: le } = te({
22
+ let { initQueryRequest: g, onQueryChange: v, onQueryResultBundleChange: y = ie, lockedColumn: b, componentIndex: x, shouldDeepLink: S, isRowSelectionVisible: C = !1, isRowSelectionUIFloating: w = !0, rowSelectionPrimaryKey: T, isInfinite: E = !1, combineRangeFacetConfig: D, fileIdColumnName: O, fileVersionColumnName: k, fileNameColumnName: A } = e, { entityId: j = "", versionNumber: M, getInitQueryRequest: N, getCurrentQueryRequest: P, setQuery: F, resetQuery: I, removeSelectedFacet: L, removeValueFromSelectedFacet: R, removeQueryFilter: z, removeValueFromQueryFilter: ae, onConfirmChange: B, isConfirmingChange: V, onCancelChange: H, nextQueryRequest: U, currentQueryRequest: W, addValueToSelectedFacet: G, setRangeFacetValue: K, resetDebounceTimer: q, currentPage: J, goToPage: oe, pageSize: se, setPageSize: ce } = r({
23
23
  initQueryRequest: g,
24
24
  shouldDeepLink: S,
25
25
  componentIndex: x,
26
26
  onQueryChange: v,
27
27
  requireConfirmationOnChange: c()
28
- }), { rowDataQueryOptions: ue, rowDataInfiniteQueryOptions: de, queryMetadataQueryOptions: Y } = r(m(() => F(), [F]), b), fe = u(Y), pe = m(() => t(F().query, b), [F, b]), X = _(a);
28
+ }), { rowDataQueryOptions: le, rowDataInfiniteQueryOptions: ue, queryMetadataQueryOptions: Y } = i(m(() => P(), [P]), b), de = u(Y), fe = m(() => t(P().query, b), [P, b]), X = _(o);
29
29
  p(() => {
30
- X(w);
31
- }, [w, X]);
32
- let Z = _(i);
30
+ X(C);
31
+ }, [C, X]);
32
+ let Z = _(a);
33
33
  p(() => {
34
- Z(T);
35
- }, [T, Z]);
34
+ Z(w);
35
+ }, [w, Z]);
36
36
  let Q = l({
37
- entityId: M,
38
- versionNumber: N,
39
- rowSelectionPrimaryKeyFromProps: E,
37
+ entityId: j,
38
+ versionNumber: M,
39
+ rowSelectionPrimaryKeyFromProps: T,
40
40
  queryMetadataQueryOptions: Y
41
- }), $ = _(o);
41
+ }), $ = _(s);
42
42
  p(() => {
43
43
  $(Q);
44
44
  }, [Q, $]);
45
- let me = _(s), he = f((e) => y(JSON.stringify(e)), [y]);
45
+ let pe = _(te), me = f((e) => y(JSON.stringify(e)), [y]);
46
46
  d({
47
- queryBundleRequest: F(),
48
- onChange: he
47
+ queryBundleRequest: P(),
48
+ onChange: me
49
49
  });
50
- let ge = re({
51
- isInfinite: D,
52
- entityId: M,
53
- versionNumber: N,
54
- nextQueryRequest: W,
55
- currentQueryRequest: G,
56
- getCurrentQueryRequest: F,
57
- getInitQueryRequest: P,
58
- executeQueryRequest: I,
59
- hasFacetedSelectColumn: fe,
60
- hasResettableFilters: pe,
61
- removeSelectedFacet: R,
62
- removeValueFromSelectedFacet: z,
63
- resetQuery: L,
64
- removeQueryFilter: ae,
65
- removeValueFromQueryFilter: B,
66
- onViewSharingSettingsClicked: C,
67
- addValueToSelectedFacet: K,
68
- combineRangeFacetConfig: O,
69
- setRangeFacetValue: q,
70
- resetDebounceTimer: J,
71
- rowDataQueryOptions: ue,
72
- rowDataInfiniteQueryOptions: de,
50
+ let he = re({
51
+ isInfinite: E,
52
+ entityId: j,
53
+ versionNumber: M,
54
+ nextQueryRequest: U,
55
+ currentQueryRequest: W,
56
+ getCurrentQueryRequest: P,
57
+ getInitQueryRequest: N,
58
+ executeQueryRequest: F,
59
+ hasFacetedSelectColumn: de,
60
+ hasResettableFilters: fe,
61
+ removeSelectedFacet: L,
62
+ removeValueFromSelectedFacet: R,
63
+ resetQuery: I,
64
+ removeQueryFilter: z,
65
+ removeValueFromQueryFilter: ae,
66
+ addValueToSelectedFacet: G,
67
+ combineRangeFacetConfig: D,
68
+ setRangeFacetValue: K,
69
+ resetDebounceTimer: q,
70
+ rowDataQueryOptions: le,
71
+ rowDataInfiniteQueryOptions: ue,
73
72
  queryMetadataQueryOptions: Y,
74
- currentPage: oe,
75
- goToPage: se,
76
- pageSize: ce,
77
- setPageSize: le,
73
+ currentPage: J,
74
+ goToPage: oe,
75
+ pageSize: se,
76
+ setPageSize: ce,
78
77
  lockedColumn: b,
79
- fileIdColumnName: k,
80
- fileVersionColumnName: A,
81
- fileNameColumnName: j
82
- }), { children: _e } = e;
78
+ fileIdColumnName: O,
79
+ fileVersionColumnName: k,
80
+ fileNameColumnName: A
81
+ }), { children: ge } = e;
83
82
  return /* @__PURE__ */ ne(ee, {
84
- queryContext: ge,
83
+ queryContext: he,
85
84
  children: [/* @__PURE__ */ h(n, {
86
- open: H,
85
+ open: V,
87
86
  title: "Change Query and Clear Selection?",
88
87
  content: "Changing the current query will cause your current selection to be lost. Are you sure you want to proceed?",
89
88
  confirmButtonProps: { children: "Clear Selection and Update Query" },
90
89
  onConfirm: () => {
91
- me([]), V();
90
+ pe([]), B();
92
91
  },
93
92
  onCancel: () => {
94
- U();
93
+ H();
95
94
  }
96
- }), _e]
95
+ }), ge]
97
96
  });
98
97
  }
99
98
  function b(e) {
@@ -1 +1 @@
1
- {"version":3,"file":"QueryWrapper.js","names":[],"sources":["../../../src/components/QueryWrapper/QueryWrapper.tsx"],"sourcesContent":["import { LockedColumn } from '@/utils/types/LockedColumn'\nimport { hasResettableFilters as hasResettableFiltersUtil } from '@/utils/functions/queryUtils'\nimport useImmutableTableQuery from '@/utils/hooks/useImmutableTableQuery/useImmutableTableQuery'\nimport {\n QueryBundleRequest,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport { Provider, useSetAtom } from 'jotai'\nimport noop from 'lodash-es/noop'\nimport { PropsWithChildren, useCallback, useEffect, useMemo } from 'react'\nimport { useDeepCompareMemoize } from 'use-deep-compare-effect'\nimport { ConfirmationDialog } from '../ConfirmationDialog'\nimport {\n CombineRangeFacetConfig,\n QueryContextProvider,\n QueryContextType,\n} from '../QueryContext/QueryContext'\nimport { useTableQueryUseQueryOptions } from './TableQueryUseQueryOptions'\nimport {\n isRowSelectionUIFloatingAtom,\n isRowSelectionVisibleAtom,\n rowSelectionPrimaryKeyAtom,\n selectedRowsAtom,\n useHasSelectedRowsAtomValue,\n} from './TableRowSelectionState'\nimport useComputeRowSelectionPrimaryKey from './useComputeRowSelectionPrimaryKey'\nimport useHasFacetedSelectColumn from './useHasFacetedSelectColumn'\nimport useOnQueryDataChange from './useOnQueryDataChange'\nimport { SessionInitializedGuard } from '@/utils/AppUtils/session/SessionInitializedGuard'\n\nexport type QueryWrapperProps = PropsWithChildren<{\n initQueryRequest: QueryBundleRequest\n componentIndex?: number //used for deep linking\n shouldDeepLink?: boolean\n onQueryChange?: (newQueryJson: string) => void\n /** Called when the query result rows change */\n onQueryResultBundleChange?: (newQueryResultBundleJson: string) => void\n lockedColumn?: LockedColumn\n onViewSharingSettingsClicked?: (benefactorId: string) => void\n isRowSelectionVisible?: boolean\n /** The set of columns that defines a uniqueness constraint on the table for the purposes of filtering based on row selection.\n * Note that Synapse tables have no internal concept of a primary key.\n */\n rowSelectionPrimaryKey?: string[]\n /** By default, the row selection UI will float at the bottom of the viewport. Set to false to make it inline */\n isRowSelectionUIFloating?: boolean\n isInfinite?: boolean\n combineRangeFacetConfig?: CombineRangeFacetConfig\n /** If provided, will use the value in this column instead of the rowID for the access column, download column, etc */\n fileIdColumnName?: string\n fileNameColumnName?: string\n /** If provided, will use the value in this column instead of the row version number for the access column, download column, etc */\n fileVersionColumnName?: string\n}>\n\n/**\n * Component that manages the state of a Synapse table query. Data can be accessed via QueryContext using\n * either `useQueryContext` or `QueryContextConsumer`.\n */\nfunction QueryWrapperInternal(props: QueryWrapperProps) {\n return (\n <SessionInitializedGuard>\n <QueryWrapperInternalWithSession {...props} />\n </SessionInitializedGuard>\n )\n}\n\n/**\n * Internal component that renders after session is initialized\n */\nfunction QueryWrapperInternalWithSession(props: QueryWrapperProps) {\n const {\n initQueryRequest,\n onQueryChange,\n onQueryResultBundleChange = noop,\n lockedColumn,\n componentIndex,\n shouldDeepLink,\n onViewSharingSettingsClicked,\n isRowSelectionVisible: isRowSelectionVisibleFromProps = false,\n isRowSelectionUIFloating: isRowSelectionUIFloatingFromProps = true,\n rowSelectionPrimaryKey: rowSelectionPrimaryKeyFromProps,\n isInfinite = false,\n combineRangeFacetConfig,\n fileIdColumnName,\n fileVersionColumnName,\n fileNameColumnName,\n } = props\n\n const hasSelectedRows = useHasSelectedRowsAtomValue()\n\n const immutableTableQueryResult = useImmutableTableQuery({\n initQueryRequest,\n shouldDeepLink,\n componentIndex,\n onQueryChange,\n requireConfirmationOnChange: hasSelectedRows,\n })\n const {\n entityId = '',\n versionNumber,\n getInitQueryRequest,\n getCurrentQueryRequest,\n setQuery,\n resetQuery,\n removeSelectedFacet,\n removeValueFromSelectedFacet,\n removeQueryFilter,\n removeValueFromQueryFilter,\n onConfirmChange,\n isConfirmingChange,\n onCancelChange,\n nextQueryRequest,\n currentQueryRequest,\n addValueToSelectedFacet,\n setRangeFacetValue,\n resetDebounceTimer,\n currentPage,\n goToPage,\n pageSize,\n setPageSize,\n } = immutableTableQueryResult\n\n const lastQueryRequest = useMemo(() => {\n return getCurrentQueryRequest()\n }, [getCurrentQueryRequest])\n\n const {\n rowDataQueryOptions,\n rowDataInfiniteQueryOptions,\n queryMetadataQueryOptions,\n } = useTableQueryUseQueryOptions(lastQueryRequest, lockedColumn)\n\n const hasFacetedSelectColumn = useHasFacetedSelectColumn(\n queryMetadataQueryOptions,\n )\n\n const hasResettableFilters = useMemo(() => {\n const request = getCurrentQueryRequest()\n return hasResettableFiltersUtil(request.query, lockedColumn)\n }, [getCurrentQueryRequest, lockedColumn])\n\n const setIsRowSelectionVisible = useSetAtom(isRowSelectionVisibleAtom)\n useEffect(() => {\n setIsRowSelectionVisible(isRowSelectionVisibleFromProps)\n }, [isRowSelectionVisibleFromProps, setIsRowSelectionVisible])\n\n const setIsRowSelectionUIFloating = useSetAtom(isRowSelectionUIFloatingAtom)\n useEffect(() => {\n setIsRowSelectionUIFloating(isRowSelectionUIFloatingFromProps)\n }, [isRowSelectionUIFloatingFromProps, setIsRowSelectionUIFloating])\n\n const rowSelectionPrimaryKey = useComputeRowSelectionPrimaryKey({\n entityId,\n versionNumber,\n rowSelectionPrimaryKeyFromProps,\n queryMetadataQueryOptions,\n })\n const setRowSelectionPrimaryKey = useSetAtom(rowSelectionPrimaryKeyAtom)\n useEffect(() => {\n setRowSelectionPrimaryKey(rowSelectionPrimaryKey)\n }, [rowSelectionPrimaryKey, setRowSelectionPrimaryKey])\n\n const setSelectedRows = useSetAtom(selectedRowsAtom)\n const onChangeCallback = useCallback(\n (data: QueryResultBundle) =>\n onQueryResultBundleChange(JSON.stringify(data)),\n [onQueryResultBundleChange],\n )\n // Track changes to the query row data and propagate to callback\n useOnQueryDataChange({\n queryBundleRequest: getCurrentQueryRequest(),\n onChange: onChangeCallback,\n })\n\n const context: QueryContextType = useDeepCompareMemoize({\n isInfinite,\n entityId,\n versionNumber,\n nextQueryRequest,\n currentQueryRequest,\n getCurrentQueryRequest: getCurrentQueryRequest,\n getInitQueryRequest,\n executeQueryRequest: setQuery,\n hasFacetedSelectColumn,\n hasResettableFilters,\n removeSelectedFacet,\n removeValueFromSelectedFacet,\n resetQuery,\n removeQueryFilter,\n removeValueFromQueryFilter,\n onViewSharingSettingsClicked,\n addValueToSelectedFacet,\n combineRangeFacetConfig,\n setRangeFacetValue,\n resetDebounceTimer,\n rowDataQueryOptions,\n rowDataInfiniteQueryOptions,\n queryMetadataQueryOptions,\n currentPage,\n goToPage,\n pageSize,\n setPageSize,\n lockedColumn,\n fileIdColumnName,\n fileVersionColumnName,\n fileNameColumnName,\n })\n\n /**\n * Render the children without any formatting\n */\n const { children } = props\n return (\n <QueryContextProvider queryContext={context}>\n <ConfirmationDialog\n open={isConfirmingChange}\n title={'Change Query and Clear Selection?'}\n content={\n 'Changing the current query will cause your current selection to be lost. Are you sure you want to proceed?'\n }\n confirmButtonProps={{\n children: 'Clear Selection and Update Query',\n }}\n onConfirm={() => {\n setSelectedRows([])\n onConfirmChange()\n }}\n onCancel={() => {\n onCancelChange()\n }}\n />\n {children}\n </QueryContextProvider>\n )\n}\n\nexport function QueryWrapper(props: QueryWrapperProps) {\n // Wrap in a Jotai provider to ensure the Jotai atomic state is unique to this component tree\n // i.e. other instances of QueryWrapper will not share state with this instance\n return (\n <Provider>\n <QueryWrapperInternal {...props} />\n </Provider>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA2DA,SAAS,EAAqB,GAA0B;CACtD,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAiC,GAAI,EAAQ,CAAA,EACtB,CAAA;AAE7B;AAKA,SAAS,EAAgC,GAA0B;CACjE,IAAM,EACJ,qBACA,kBACA,+BAA4B,IAC5B,iBACA,mBACA,mBACA,iCACA,uBAAuB,IAAiC,IACxD,0BAA0B,IAAoC,IAC9D,wBAAwB,GACxB,gBAAa,IACb,4BACA,qBACA,0BACA,0BACE,GAWE,EACJ,cAAW,IACX,kBACA,wBACA,2BACA,aACA,eACA,wBACA,iCACA,uBACA,+BACA,oBACA,uBACA,mBACA,qBACA,wBACA,4BACA,uBACA,uBACA,iBACA,cACA,cACA,oBA7BgC,GAAuB;EACvD;EACA;EACA;EACA;EACA,6BAPsB,EAOO;CAC/B,CAwBI,GAME,EACJ,yBACA,iCACA,iCACE,EARqB,QAChB,EAAuB,GAC7B,CAAC,CAAsB,CAMO,GAAkB,CAAY,GAEzD,KAAyB,EAC7B,CACF,GAEM,KAAuB,QAEpB,EADS,EACgB,EAAQ,OAAO,CAAY,GAC1D,CAAC,GAAwB,CAAY,CAAC,GAEnC,IAA2B,EAAW,CAAyB;CACrE,QAAgB;EACd,EAAyB,CAA8B;CACzD,GAAG,CAAC,GAAgC,CAAwB,CAAC;CAE7D,IAAM,IAA8B,EAAW,CAA4B;CAC3E,QAAgB;EACd,EAA4B,CAAiC;CAC/D,GAAG,CAAC,GAAmC,CAA2B,CAAC;CAEnE,IAAM,IAAyB,EAAiC;EAC9D;EACA;EACA;EACA;CACF,CAAC,GACK,IAA4B,EAAW,CAA0B;CACvE,QAAgB;EACd,EAA0B,CAAsB;CAClD,GAAG,CAAC,GAAwB,CAAyB,CAAC;CAEtD,IAAM,KAAkB,EAAW,CAAgB,GAC7C,KAAmB,GACtB,MACC,EAA0B,KAAK,UAAU,CAAI,CAAC,GAChD,CAAC,CAAyB,CAC5B;CAEA,EAAqB;EACnB,oBAAoB,EAAuB;EAC3C,UAAU;CACZ,CAAC;CAED,IAAM,KAA4B,GAAsB;EACtD;EACA;EACA;EACA;EACA;EACwB;EACxB;EACA,qBAAqB;EACrB;EACA,sBAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,GAKK,EAAE,iBAAa;CACrB,OACE,mBAAC,IAAD;EAAsB,cAAc;YAApC,CACE,kBAAC,GAAD;GACE,MAAM;GACN,OAAO;GACP,SACE;GAEF,oBAAoB,EAClB,UAAU,mCACZ;GACA,iBAAiB;IAEf,AADA,GAAgB,CAAC,CAAC,GAClB,EAAgB;GAClB;GACA,gBAAgB;IACd,EAAe;GACjB;EACD,CAAA,GACA,EACmB;;AAE1B;AAEA,SAAgB,EAAa,GAA0B;CAGrD,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAsB,GAAI,EAAQ,CAAA,EAC1B,CAAA;AAEd"}
1
+ {"version":3,"file":"QueryWrapper.js","names":[],"sources":["../../../src/components/QueryWrapper/QueryWrapper.tsx"],"sourcesContent":["import { LockedColumn } from '@/utils/types/LockedColumn'\nimport { hasResettableFilters as hasResettableFiltersUtil } from '@/utils/functions/queryUtils'\nimport useImmutableTableQuery from '@/utils/hooks/useImmutableTableQuery/useImmutableTableQuery'\nimport {\n QueryBundleRequest,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport { Provider, useSetAtom } from 'jotai'\nimport noop from 'lodash-es/noop'\nimport { PropsWithChildren, useCallback, useEffect, useMemo } from 'react'\nimport { useDeepCompareMemoize } from 'use-deep-compare-effect'\nimport { ConfirmationDialog } from '../ConfirmationDialog'\nimport {\n CombineRangeFacetConfig,\n QueryContextProvider,\n QueryContextType,\n} from '../QueryContext/QueryContext'\nimport { useTableQueryUseQueryOptions } from './TableQueryUseQueryOptions'\nimport {\n isRowSelectionUIFloatingAtom,\n isRowSelectionVisibleAtom,\n rowSelectionPrimaryKeyAtom,\n selectedRowsAtom,\n useHasSelectedRowsAtomValue,\n} from './TableRowSelectionState'\nimport useComputeRowSelectionPrimaryKey from './useComputeRowSelectionPrimaryKey'\nimport useHasFacetedSelectColumn from './useHasFacetedSelectColumn'\nimport useOnQueryDataChange from './useOnQueryDataChange'\nimport { SessionInitializedGuard } from '@/utils/AppUtils/session/SessionInitializedGuard'\n\nexport type QueryWrapperProps = PropsWithChildren<{\n initQueryRequest: QueryBundleRequest\n componentIndex?: number //used for deep linking\n shouldDeepLink?: boolean\n onQueryChange?: (newQueryJson: string) => void\n /** Called when the query result rows change */\n onQueryResultBundleChange?: (newQueryResultBundleJson: string) => void\n lockedColumn?: LockedColumn\n isRowSelectionVisible?: boolean\n /** The set of columns that defines a uniqueness constraint on the table for the purposes of filtering based on row selection.\n * Note that Synapse tables have no internal concept of a primary key.\n */\n rowSelectionPrimaryKey?: string[]\n /** By default, the row selection UI will float at the bottom of the viewport. Set to false to make it inline */\n isRowSelectionUIFloating?: boolean\n isInfinite?: boolean\n combineRangeFacetConfig?: CombineRangeFacetConfig\n /** If provided, will use the value in this column instead of the rowID for the access column, download column, etc */\n fileIdColumnName?: string\n fileNameColumnName?: string\n /** If provided, will use the value in this column instead of the row version number for the access column, download column, etc */\n fileVersionColumnName?: string\n}>\n\n/**\n * Component that manages the state of a Synapse table query. Data can be accessed via QueryContext using\n * either `useQueryContext` or `QueryContextConsumer`.\n */\nfunction QueryWrapperInternal(props: QueryWrapperProps) {\n return (\n <SessionInitializedGuard>\n <QueryWrapperInternalWithSession {...props} />\n </SessionInitializedGuard>\n )\n}\n\n/**\n * Internal component that renders after session is initialized\n */\nfunction QueryWrapperInternalWithSession(props: QueryWrapperProps) {\n const {\n initQueryRequest,\n onQueryChange,\n onQueryResultBundleChange = noop,\n lockedColumn,\n componentIndex,\n shouldDeepLink,\n isRowSelectionVisible: isRowSelectionVisibleFromProps = false,\n isRowSelectionUIFloating: isRowSelectionUIFloatingFromProps = true,\n rowSelectionPrimaryKey: rowSelectionPrimaryKeyFromProps,\n isInfinite = false,\n combineRangeFacetConfig,\n fileIdColumnName,\n fileVersionColumnName,\n fileNameColumnName,\n } = props\n\n const hasSelectedRows = useHasSelectedRowsAtomValue()\n\n const immutableTableQueryResult = useImmutableTableQuery({\n initQueryRequest,\n shouldDeepLink,\n componentIndex,\n onQueryChange,\n requireConfirmationOnChange: hasSelectedRows,\n })\n const {\n entityId = '',\n versionNumber,\n getInitQueryRequest,\n getCurrentQueryRequest,\n setQuery,\n resetQuery,\n removeSelectedFacet,\n removeValueFromSelectedFacet,\n removeQueryFilter,\n removeValueFromQueryFilter,\n onConfirmChange,\n isConfirmingChange,\n onCancelChange,\n nextQueryRequest,\n currentQueryRequest,\n addValueToSelectedFacet,\n setRangeFacetValue,\n resetDebounceTimer,\n currentPage,\n goToPage,\n pageSize,\n setPageSize,\n } = immutableTableQueryResult\n\n const lastQueryRequest = useMemo(() => {\n return getCurrentQueryRequest()\n }, [getCurrentQueryRequest])\n\n const {\n rowDataQueryOptions,\n rowDataInfiniteQueryOptions,\n queryMetadataQueryOptions,\n } = useTableQueryUseQueryOptions(lastQueryRequest, lockedColumn)\n\n const hasFacetedSelectColumn = useHasFacetedSelectColumn(\n queryMetadataQueryOptions,\n )\n\n const hasResettableFilters = useMemo(() => {\n const request = getCurrentQueryRequest()\n return hasResettableFiltersUtil(request.query, lockedColumn)\n }, [getCurrentQueryRequest, lockedColumn])\n\n const setIsRowSelectionVisible = useSetAtom(isRowSelectionVisibleAtom)\n useEffect(() => {\n setIsRowSelectionVisible(isRowSelectionVisibleFromProps)\n }, [isRowSelectionVisibleFromProps, setIsRowSelectionVisible])\n\n const setIsRowSelectionUIFloating = useSetAtom(isRowSelectionUIFloatingAtom)\n useEffect(() => {\n setIsRowSelectionUIFloating(isRowSelectionUIFloatingFromProps)\n }, [isRowSelectionUIFloatingFromProps, setIsRowSelectionUIFloating])\n\n const rowSelectionPrimaryKey = useComputeRowSelectionPrimaryKey({\n entityId,\n versionNumber,\n rowSelectionPrimaryKeyFromProps,\n queryMetadataQueryOptions,\n })\n const setRowSelectionPrimaryKey = useSetAtom(rowSelectionPrimaryKeyAtom)\n useEffect(() => {\n setRowSelectionPrimaryKey(rowSelectionPrimaryKey)\n }, [rowSelectionPrimaryKey, setRowSelectionPrimaryKey])\n\n const setSelectedRows = useSetAtom(selectedRowsAtom)\n const onChangeCallback = useCallback(\n (data: QueryResultBundle) =>\n onQueryResultBundleChange(JSON.stringify(data)),\n [onQueryResultBundleChange],\n )\n // Track changes to the query row data and propagate to callback\n useOnQueryDataChange({\n queryBundleRequest: getCurrentQueryRequest(),\n onChange: onChangeCallback,\n })\n\n const context: QueryContextType = useDeepCompareMemoize({\n isInfinite,\n entityId,\n versionNumber,\n nextQueryRequest,\n currentQueryRequest,\n getCurrentQueryRequest: getCurrentQueryRequest,\n getInitQueryRequest,\n executeQueryRequest: setQuery,\n hasFacetedSelectColumn,\n hasResettableFilters,\n removeSelectedFacet,\n removeValueFromSelectedFacet,\n resetQuery,\n removeQueryFilter,\n removeValueFromQueryFilter,\n addValueToSelectedFacet,\n combineRangeFacetConfig,\n setRangeFacetValue,\n resetDebounceTimer,\n rowDataQueryOptions,\n rowDataInfiniteQueryOptions,\n queryMetadataQueryOptions,\n currentPage,\n goToPage,\n pageSize,\n setPageSize,\n lockedColumn,\n fileIdColumnName,\n fileVersionColumnName,\n fileNameColumnName,\n })\n\n /**\n * Render the children without any formatting\n */\n const { children } = props\n return (\n <QueryContextProvider queryContext={context}>\n <ConfirmationDialog\n open={isConfirmingChange}\n title={'Change Query and Clear Selection?'}\n content={\n 'Changing the current query will cause your current selection to be lost. Are you sure you want to proceed?'\n }\n confirmButtonProps={{\n children: 'Clear Selection and Update Query',\n }}\n onConfirm={() => {\n setSelectedRows([])\n onConfirmChange()\n }}\n onCancel={() => {\n onCancelChange()\n }}\n />\n {children}\n </QueryContextProvider>\n )\n}\n\nexport function QueryWrapper(props: QueryWrapperProps) {\n // Wrap in a Jotai provider to ensure the Jotai atomic state is unique to this component tree\n // i.e. other instances of QueryWrapper will not share state with this instance\n return (\n <Provider>\n <QueryWrapperInternal {...props} />\n </Provider>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA0DA,SAAS,EAAqB,GAA0B;CACtD,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAiC,GAAI,EAAQ,CAAA,EACtB,CAAA;AAE7B;AAKA,SAAS,EAAgC,GAA0B;CACjE,IAAM,EACJ,qBACA,kBACA,+BAA4B,IAC5B,iBACA,mBACA,mBACA,uBAAuB,IAAiC,IACxD,0BAA0B,IAAoC,IAC9D,wBAAwB,GACxB,gBAAa,IACb,4BACA,qBACA,0BACA,0BACE,GAWE,EACJ,cAAW,IACX,kBACA,wBACA,2BACA,aACA,eACA,wBACA,iCACA,sBACA,gCACA,oBACA,uBACA,mBACA,qBACA,wBACA,4BACA,uBACA,uBACA,gBACA,cACA,cACA,oBA7BgC,EAAuB;EACvD;EACA;EACA;EACA;EACA,6BAPsB,EAOO;CAC/B,CAwBI,GAME,EACJ,yBACA,iCACA,iCACE,EARqB,QAChB,EAAuB,GAC7B,CAAC,CAAsB,CAMO,GAAkB,CAAY,GAEzD,KAAyB,EAC7B,CACF,GAEM,KAAuB,QAEpB,EADS,EACgB,EAAQ,OAAO,CAAY,GAC1D,CAAC,GAAwB,CAAY,CAAC,GAEnC,IAA2B,EAAW,CAAyB;CACrE,QAAgB;EACd,EAAyB,CAA8B;CACzD,GAAG,CAAC,GAAgC,CAAwB,CAAC;CAE7D,IAAM,IAA8B,EAAW,CAA4B;CAC3E,QAAgB;EACd,EAA4B,CAAiC;CAC/D,GAAG,CAAC,GAAmC,CAA2B,CAAC;CAEnE,IAAM,IAAyB,EAAiC;EAC9D;EACA;EACA;EACA;CACF,CAAC,GACK,IAA4B,EAAW,CAA0B;CACvE,QAAgB;EACd,EAA0B,CAAsB;CAClD,GAAG,CAAC,GAAwB,CAAyB,CAAC;CAEtD,IAAM,KAAkB,EAAW,EAAgB,GAC7C,KAAmB,GACtB,MACC,EAA0B,KAAK,UAAU,CAAI,CAAC,GAChD,CAAC,CAAyB,CAC5B;CAEA,EAAqB;EACnB,oBAAoB,EAAuB;EAC3C,UAAU;CACZ,CAAC;CAED,IAAM,KAA4B,GAAsB;EACtD;EACA;EACA;EACA;EACA;EACwB;EACxB;EACA,qBAAqB;EACrB;EACA,sBAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,GAKK,EAAE,iBAAa;CACrB,OACE,mBAAC,IAAD;EAAsB,cAAc;YAApC,CACE,kBAAC,GAAD;GACE,MAAM;GACN,OAAO;GACP,SACE;GAEF,oBAAoB,EAClB,UAAU,mCACZ;GACA,iBAAiB;IAEf,AADA,GAAgB,CAAC,CAAC,GAClB,EAAgB;GAClB;GACA,gBAAgB;IACd,EAAe;GACjB;EACD,CAAA,GACA,EACmB;;AAE1B;AAEA,SAAgB,EAAa,GAA0B;CAGrD,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAsB,GAAI,EAAQ,CAAA,EAC1B,CAAA;AAEd"}
@@ -1 +1 @@
1
- {"version":3,"file":"QueryWrapperErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/QueryWrapperErrorBoundary.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,OAAO,CAAA;AAU/D;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,QAAQ,GACT,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,2CAyCzC"}
1
+ {"version":3,"file":"QueryWrapperErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/QueryWrapperErrorBoundary.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,OAAO,CAAA;AAU/D;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,QAAQ,GACT,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,2CAqCzC"}