synapse-react-client 4.0.38 → 4.0.41

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 (350) hide show
  1. package/dist/SWC.index.d.ts +1 -0
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +2 -1
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/aridhia-queries/useAridhiaQuery.d.ts +6 -2
  6. package/dist/aridhia-queries/useAridhiaQuery.d.ts.map +1 -1
  7. package/dist/aridhia-queries/useAridhiaQuery.js +3 -0
  8. package/dist/aridhia-queries/useAridhiaQuery.js.map +1 -1
  9. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts +1 -0
  10. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts.map +1 -1
  11. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js +12 -12
  12. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  13. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts +2 -1
  14. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
  15. package/dist/components/Aridhia/AridhiaAccessStatus.js +57 -31
  16. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  17. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +12 -0
  18. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -0
  19. package/dist/components/Aridhia/AridhiaDarStatusPopover.js +56 -0
  20. package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -0
  21. package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.d.ts.map +1 -1
  22. package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.js +38 -30
  23. package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.js.map +1 -1
  24. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +15 -14
  25. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -1
  26. package/dist/components/Aridhia/RdcaDapEligibilityDialog.d.ts +11 -0
  27. package/dist/components/Aridhia/RdcaDapEligibilityDialog.d.ts.map +1 -0
  28. package/dist/components/Aridhia/RdcaDapEligibilityDialog.js +37 -0
  29. package/dist/components/Aridhia/RdcaDapEligibilityDialog.js.map +1 -0
  30. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +2 -2
  31. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  32. package/dist/components/Aridhia/aridhiaFairPortalUrls.d.ts +10 -0
  33. package/dist/components/Aridhia/aridhiaFairPortalUrls.d.ts.map +1 -0
  34. package/dist/components/Aridhia/aridhiaFairPortalUrls.js +11 -0
  35. package/dist/components/Aridhia/aridhiaFairPortalUrls.js.map +1 -0
  36. package/dist/components/Aridhia/rdcaDapConstants.d.ts +3 -0
  37. package/dist/components/Aridhia/rdcaDapConstants.d.ts.map +1 -0
  38. package/dist/components/Aridhia/rdcaDapConstants.js +6 -0
  39. package/dist/components/Aridhia/rdcaDapConstants.js.map +1 -0
  40. package/dist/components/Authentication/Constants.d.ts +4 -0
  41. package/dist/components/Authentication/Constants.d.ts.map +1 -1
  42. package/dist/components/Authentication/Constants.js +5 -2
  43. package/dist/components/Authentication/Constants.js.map +1 -1
  44. package/dist/components/Authentication/RecoveryCodeGrid.d.ts.map +1 -1
  45. package/dist/components/Authentication/RecoveryCodeGrid.js +8 -1
  46. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  47. package/dist/components/Authentication/RegenerateBackupCodesWarning.js +4 -1
  48. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  49. package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
  50. package/dist/components/Authentication/TOTPForm.js +20 -18
  51. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  52. package/dist/components/Authentication/TwoFactorBackupCodes.d.ts.map +1 -1
  53. package/dist/components/Authentication/TwoFactorBackupCodes.js +41 -12
  54. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  55. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  56. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +74 -71
  57. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  58. package/dist/components/DataExplorer/DataExplorer.css +1 -1
  59. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
  60. package/dist/components/DataExplorer/DataExplorer.js +50 -50
  61. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  62. package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
  63. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
  64. package/dist/components/DataExplorer/DataExplorer.module.scss +29 -6
  65. package/dist/components/DataGrid/columns/DateTimeColumn.d.ts +16 -7
  66. package/dist/components/DataGrid/columns/DateTimeColumn.d.ts.map +1 -1
  67. package/dist/components/DataGrid/columns/DateTimeColumn.js +79 -57
  68. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  69. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  70. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +43 -46
  71. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  72. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  73. package/dist/components/DataGrid/utils/columnFactory.js +11 -8
  74. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  75. package/dist/components/DatePicker/DatePicker.d.ts +10 -0
  76. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
  77. package/dist/components/DatePicker/DatePicker.js +18 -0
  78. package/dist/components/DatePicker/DatePicker.js.map +1 -0
  79. package/dist/components/EntityCitation/EntityCitation.d.ts.map +1 -1
  80. package/dist/components/EntityCitation/EntityCitation.js +8 -5
  81. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  82. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts +11 -0
  83. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -0
  84. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +61 -0
  85. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -0
  86. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts +33 -0
  87. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -0
  88. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +187 -0
  89. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -0
  90. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts +14 -0
  91. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -0
  92. package/dist/components/FormTemplateEditor/FormTemplatePreview.js +83 -0
  93. package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -0
  94. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts +13 -0
  95. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts.map +1 -0
  96. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js +33 -0
  97. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js.map +1 -0
  98. package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts +32 -0
  99. package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts.map +1 -0
  100. package/dist/components/FormTemplateEditor/formTemplateValidation.js +75 -0
  101. package/dist/components/FormTemplateEditor/formTemplateValidation.js.map +1 -0
  102. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +25 -0
  103. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -0
  104. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +66 -0
  105. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -0
  106. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts +28 -0
  107. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -0
  108. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +39 -0
  109. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -0
  110. package/dist/components/FormTemplateEditor/utils.d.ts +21 -0
  111. package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -0
  112. package/dist/components/FormTemplateEditor/utils.js +27 -0
  113. package/dist/components/FormTemplateEditor/utils.js.map +1 -0
  114. package/dist/components/HasAccess/AccessIcon.d.ts +3 -1
  115. package/dist/components/HasAccess/AccessIcon.d.ts.map +1 -1
  116. package/dist/components/HasAccess/AccessIcon.js +11 -1
  117. package/dist/components/HasAccess/AccessIcon.js.map +1 -1
  118. package/dist/components/JsonSchemaForm/CustomFormContext.d.ts +1 -1
  119. package/dist/components/JsonSchemaForm/CustomFormContext.d.ts.map +1 -1
  120. package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -1
  121. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +1 -1
  122. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -1
  123. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +6 -1
  124. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
  125. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +4 -0
  126. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  127. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.d.ts +2 -1
  128. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.d.ts.map +1 -1
  129. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js +81 -53
  130. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
  131. package/dist/components/ProjectInfo/ProjectInfo.d.ts.map +1 -1
  132. package/dist/components/ProjectInfo/ProjectInfo.js +3 -2
  133. package/dist/components/ProjectInfo/ProjectInfo.js.map +1 -1
  134. package/dist/components/QueryBuilder/FilterConditionRow.css +1 -0
  135. package/dist/components/QueryBuilder/FilterConditionRow.d.ts +8 -0
  136. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -0
  137. package/dist/components/QueryBuilder/FilterConditionRow.js +260 -0
  138. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -0
  139. package/dist/components/QueryBuilder/FilterConditionRow.module.js +16 -0
  140. package/dist/components/QueryBuilder/FilterConditionRow.module.js.map +1 -0
  141. package/dist/components/QueryBuilder/FilterConditionRow.module.scss +101 -0
  142. package/dist/components/QueryBuilder/FilterGroupNode.css +1 -0
  143. package/dist/components/QueryBuilder/FilterGroupNode.d.ts +11 -0
  144. package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -0
  145. package/dist/components/QueryBuilder/FilterGroupNode.js +134 -0
  146. package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -0
  147. package/dist/components/QueryBuilder/FilterGroupNode.module.js +16 -0
  148. package/dist/components/QueryBuilder/FilterGroupNode.module.js.map +1 -0
  149. package/dist/components/QueryBuilder/FilterGroupNode.module.scss +92 -0
  150. package/dist/components/QueryBuilder/QBDragHandle.d.ts +10 -0
  151. package/dist/components/QueryBuilder/QBDragHandle.d.ts.map +1 -0
  152. package/dist/components/QueryBuilder/QBDragHandle.js +22 -0
  153. package/dist/components/QueryBuilder/QBDragHandle.js.map +1 -0
  154. package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -0
  155. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts +21 -0
  156. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -0
  157. package/dist/components/QueryBuilder/QueryBuilderControls.js +143 -0
  158. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -0
  159. package/dist/components/QueryBuilder/QueryBuilderControls.module.js +17 -0
  160. package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -0
  161. package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +79 -0
  162. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +39 -0
  163. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -0
  164. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js +19 -0
  165. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -0
  166. package/dist/components/QueryBuilder/qbTreeToReadable.d.ts +14 -0
  167. package/dist/components/QueryBuilder/qbTreeToReadable.d.ts.map +1 -0
  168. package/dist/components/QueryBuilder/qbTreeToReadable.js +89 -0
  169. package/dist/components/QueryBuilder/qbTreeToReadable.js.map +1 -0
  170. package/dist/components/QueryBuilder/queryBuilderDnd.d.ts +27 -0
  171. package/dist/components/QueryBuilder/queryBuilderDnd.d.ts.map +1 -0
  172. package/dist/components/QueryBuilder/queryBuilderDnd.js +41 -0
  173. package/dist/components/QueryBuilder/queryBuilderDnd.js.map +1 -0
  174. package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -0
  175. package/dist/components/QueryBuilder/queryBuilderDrag.module.js +8 -0
  176. package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -0
  177. package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +12 -0
  178. package/dist/components/QueryBuilder/queryBuilderId.d.ts +2 -0
  179. package/dist/components/QueryBuilder/queryBuilderId.d.ts.map +1 -0
  180. package/dist/components/QueryBuilder/queryBuilderId.js +9 -0
  181. package/dist/components/QueryBuilder/queryBuilderId.js.map +1 -0
  182. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +24 -0
  183. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -0
  184. package/dist/components/QueryBuilder/queryBuilderMetadata.js +91 -0
  185. package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -0
  186. package/dist/components/QueryBuilder/queryBuilderOperations.d.ts +71 -0
  187. package/dist/components/QueryBuilder/queryBuilderOperations.d.ts.map +1 -0
  188. package/dist/components/QueryBuilder/queryBuilderOperations.js +203 -0
  189. package/dist/components/QueryBuilder/queryBuilderOperations.js.map +1 -0
  190. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +3 -2
  191. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
  192. package/dist/components/QueryBuilder/queryBuilderTranslation.js +82 -84
  193. package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
  194. package/dist/components/QueryBuilder/useQBCombinedSql.d.ts +11 -0
  195. package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -0
  196. package/dist/components/QueryBuilder/useQBCombinedSql.js +29 -0
  197. package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -0
  198. package/dist/components/QueryBuilder/useQBFacetSourceMetadata.d.ts +18 -0
  199. package/dist/components/QueryBuilder/useQBFacetSourceMetadata.d.ts.map +1 -0
  200. package/dist/components/QueryBuilder/useQBFacetSourceMetadata.js +27 -0
  201. package/dist/components/QueryBuilder/useQBFacetSourceMetadata.js.map +1 -0
  202. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +14 -1
  203. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  204. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +183 -119
  205. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  206. package/dist/components/RssFeedCards/RssFeedCards.d.ts +1 -0
  207. package/dist/components/RssFeedCards/RssFeedCards.d.ts.map +1 -1
  208. package/dist/components/RssFeedCards/RssFeedCards.js +11 -11
  209. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  210. package/dist/components/SynapseChat/SynapseChat.d.ts +7 -1
  211. package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
  212. package/dist/components/SynapseChat/SynapseChat.js +76 -71
  213. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  214. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts +3 -1
  215. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -1
  216. package/dist/components/SynapseChat/SynapsePortalChatDialog.js +24 -13
  217. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
  218. package/dist/components/SynapseChat/portalChatSessionStorage.d.ts +23 -0
  219. package/dist/components/SynapseChat/portalChatSessionStorage.d.ts.map +1 -0
  220. package/dist/components/SynapseChat/portalChatSessionStorage.js +29 -0
  221. package/dist/components/SynapseChat/portalChatSessionStorage.js.map +1 -0
  222. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts +6 -0
  223. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
  224. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +92 -79
  225. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  226. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts +3 -4
  227. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
  228. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +2 -2
  229. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
  230. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js +1 -1
  231. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  232. package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
  233. package/dist/components/entity/page/action_menu/EntityActionMenu.js +9 -2
  234. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  235. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
  236. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  237. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +36 -37
  238. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  239. package/dist/components/menu/ComplexMenu.js +1 -1
  240. package/dist/components/menu/ComplexMenu.js.map +1 -1
  241. package/dist/components/menu/DropdownMenu.d.ts.map +1 -1
  242. package/dist/components/menu/DropdownMenu.js +4 -0
  243. package/dist/components/menu/DropdownMenu.js.map +1 -1
  244. package/dist/components/styled/LeftRightPanel.d.ts.map +1 -1
  245. package/dist/components/styled/LeftRightPanel.js +19 -2
  246. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  247. package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.d.ts +10 -0
  248. package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.d.ts.map +1 -0
  249. package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.js +20 -0
  250. package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.js.map +1 -0
  251. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
  252. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +29 -20
  253. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  254. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +16 -0
  255. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -0
  256. package/dist/mocks/accessRequirement/mockFormTemplates.js +63 -0
  257. package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -0
  258. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts +7 -0
  259. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts.map +1 -0
  260. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js +47 -0
  261. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js.map +1 -0
  262. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts +27 -0
  263. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -0
  264. package/dist/mocks/accessRequirement/mockJsonSchemas.js +83 -0
  265. package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -0
  266. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +18 -1
  267. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
  268. package/dist/mocks/msw/handlers/aridhiaHandlers.js +39 -33
  269. package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
  270. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +41 -14
  271. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
  272. package/dist/mocks/msw/handlers/asyncJobHandlers.js +53 -44
  273. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  274. package/dist/mocks/msw/handlers/chatHandlers.d.ts.map +1 -1
  275. package/dist/mocks/msw/handlers/chatHandlers.js +19 -13
  276. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  277. package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts +5 -0
  278. package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts.map +1 -0
  279. package/dist/mocks/msw/handlers/formTemplateHandlers.js +65 -0
  280. package/dist/mocks/msw/handlers/formTemplateHandlers.js.map +1 -0
  281. package/dist/mocks/msw/handlers/schemaHandlers.d.ts +2 -1
  282. package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
  283. package/dist/mocks/msw/handlers/schemaHandlers.js +13 -7
  284. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  285. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
  286. package/dist/mocks/msw/handlers/searchQueryHandlers.js +24 -18
  287. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  288. package/dist/mocks/msw/handlers/tableQueryHandlers.d.ts.map +1 -1
  289. package/dist/mocks/msw/handlers/tableQueryHandlers.js +35 -16
  290. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  291. package/dist/mocks/msw/handlers.d.ts.map +1 -1
  292. package/dist/mocks/msw/handlers.js +49 -47
  293. package/dist/mocks/msw/handlers.js.map +1 -1
  294. package/dist/style/abstracts/_cssVariables.scss +7 -0
  295. package/dist/style/components/_query-wrapper-plot-nav.scss +9 -0
  296. package/dist/style/main.css +1 -1
  297. package/dist/synapse-queries/KeyFactory.d.ts +5 -1
  298. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  299. package/dist/synapse-queries/KeyFactory.js +14 -2
  300. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  301. package/dist/synapse-queries/chat/useChat.d.ts.map +1 -1
  302. package/dist/synapse-queries/chat/useChat.js +2 -4
  303. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  304. package/dist/synapse-queries/dataaccess/index.d.ts +1 -0
  305. package/dist/synapse-queries/dataaccess/index.d.ts.map +1 -1
  306. package/dist/synapse-queries/dataaccess/index.js +4 -3
  307. package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts +41 -0
  308. package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts.map +1 -0
  309. package/dist/synapse-queries/dataaccess/useFormTemplate.js +63 -0
  310. package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -0
  311. package/dist/synapse-queries/index.js +186 -180
  312. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +9 -0
  313. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -0
  314. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +22 -0
  315. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -0
  316. package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
  317. package/dist/testutils/vitest.setup.js +18 -9
  318. package/dist/testutils/vitest.setup.js.map +1 -1
  319. package/dist/tsconfig.build.tsbuildinfo +1 -1
  320. package/dist/utils/APIConstants.d.ts +1 -0
  321. package/dist/utils/APIConstants.d.ts.map +1 -1
  322. package/dist/utils/APIConstants.js +2 -2
  323. package/dist/utils/APIConstants.js.map +1 -1
  324. package/dist/utils/appendFinalQueryParamKey.d.ts.map +1 -1
  325. package/dist/utils/appendFinalQueryParamKey.js +4 -1
  326. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  327. package/dist/utils/functions/ArrayUtils.d.ts +3 -0
  328. package/dist/utils/functions/ArrayUtils.d.ts.map +1 -1
  329. package/dist/utils/functions/ArrayUtils.js +7 -1
  330. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  331. package/dist/utils/jsonschema/generateDataAccessSchema.d.ts +26 -0
  332. package/dist/utils/jsonschema/generateDataAccessSchema.d.ts.map +1 -0
  333. package/dist/utils/jsonschema/generateDataAccessSchema.js +28 -0
  334. package/dist/utils/jsonschema/generateDataAccessSchema.js.map +1 -0
  335. package/dist/utils/jsonschema/getType.d.ts.map +1 -1
  336. package/dist/utils/jsonschema/getType.js +4 -1
  337. package/dist/utils/jsonschema/getType.js.map +1 -1
  338. package/dist/utils/jsonschema/submissionContext.d.ts +86 -0
  339. package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -0
  340. package/dist/utils/jsonschema/submissionContext.js +186 -0
  341. package/dist/utils/jsonschema/submissionContext.js.map +1 -0
  342. package/package.json +10 -8
  343. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts +0 -6
  344. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts.map +0 -1
  345. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +0 -32
  346. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +0 -1
  347. package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts +0 -9
  348. package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts.map +0 -1
  349. package/dist/components/entity/page/title_bar/TitleBarProperties.js +0 -24
  350. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +0 -1
@@ -82,6 +82,10 @@ function x(x) {
82
82
  placement: "bottom-end",
83
83
  transition: !0,
84
84
  style: { zIndex: 10 },
85
+ modifiers: [{
86
+ name: "offset",
87
+ options: { offset: [0, 6] }
88
+ }],
85
89
  children: ({ TransitionProps: t }) => /* @__PURE__ */ v(c, {
86
90
  ...t,
87
91
  children: /* @__PURE__ */ v(p, {
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.js","names":[],"sources":["../../../src/components/menu/DropdownMenu.tsx"],"sourcesContent":["import {\n Button,\n ButtonProps,\n ClickAwayListener,\n Divider,\n Fade,\n ListItemIcon,\n ListItemText,\n MenuItem,\n MenuList,\n Paper,\n Popper,\n SxProps,\n Tooltip,\n Typography,\n Box,\n} from '@mui/material'\nimport {\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useId,\n useRef,\n useState,\n} from 'react'\nimport IconSvg, { IconName } from '../IconSvg/IconSvg'\n\nconst fileAccessRequestNotice = (\n <Box\n sx={{\n backgroundColor: '#EAF0F5',\n color: '#3B4046',\n padding: '6px 8px',\n borderRadius: '3px',\n marginTop: '8px',\n }}\n >\n <Typography\n sx={{\n fontSize: '14px',\n fontWeight: '440',\n lineHeight: '20px',\n letterSpacing: '-0.07px',\n }}\n >\n <span\n style={{\n fontWeight: '700',\n }}\n >\n Note:{' '}\n </span>\n You can add this file to your download list, but you must make an access\n request before downloading.\n </Typography>\n </Box>\n)\n\n/**\n * Defines a configuration for a particular dropdown menu item\n */\nexport type DropdownMenuItem = {\n /* The text to show on the menu item. */\n text: string\n /* The icon to show for this item in the menu. */\n icon?: IconName\n /* A function invoked upon clicking the item, assuming `disabled` is falsy */\n onClick?: (e: MouseEvent) => void\n /* A link that the item should point to. */\n href?: string\n /* The optional tooltipText to show for this item. Compatible with the `disabled` prop. */\n tooltipText?: string\n /* Whether the item should be disabled from selection. */\n disabled?: boolean\n /* Additional MUI SxProps to pass to the text component */\n textSx?: SxProps\n /* Additional MUI SxProps to pass to the icon component */\n iconSx?: SxProps\n}\n\nexport type DropdownMenuProps = {\n /* Groups of menu items. Each group will be split with a divider. See DropdownMenuItem for per-item configuration */\n items: DropdownMenuItem[][]\n /* The text to show on the dropdown menu button. */\n dropdownButtonText: string\n /* The optional tooltip text for the dropdown menu button. */\n buttonTooltip?: string\n /* Any additional props to pass to the dropdown menu button. */\n buttonProps?: ButtonProps\n /* Optional MUI button variant for the dropdown button (and the single-item button). Default 'outlined'. */\n variant?: ButtonProps['variant']\n /* If true, will render a single action as a standalone button. Default true. */\n convertSingleItemToButton?: boolean\n /* If true, nothing will be rendered if no actions are passed. Default false. */\n renderMenuIfNoItems?: boolean\n paperSx?: SxProps\n elevation?: number\n /* If true, shows the file access request notice at the bottom of the menu. Default false. */\n showFileAccessRequestNotice?: boolean\n}\n\n/**\n * The DropdownMenu component provides a generic way to compose a MUI dropdown menu.\n */\nexport function DropdownMenu(props: DropdownMenuProps) {\n const {\n buttonTooltip,\n dropdownButtonText,\n items = [] as DropdownMenuItem[][],\n convertSingleItemToButton = true,\n renderMenuIfNoItems = false,\n buttonProps = {},\n variant = 'outlined',\n paperSx,\n elevation,\n showFileAccessRequestNotice = false,\n } = props\n\n const dropdownMenuId = useId()\n const [open, setOpen] = useState(false)\n const anchorRef = useRef<HTMLButtonElement>(null)\n\n const numberOfMenuItems = items.flat().length\n\n if (!renderMenuIfNoItems && numberOfMenuItems === 0) {\n // Hide menu if no actions will be in the menu\n return null\n }\n\n if (convertSingleItemToButton && numberOfMenuItems === 1) {\n // If one action is in the menu, show it as a button\n const menuItem = items.flat()[0]\n return (\n <Button\n component={menuItem.href ? 'a' : 'button'}\n title={menuItem.tooltipText}\n variant={variant}\n href={menuItem.href}\n rel={menuItem.href ? 'noopener noreferrer' : undefined}\n onClick={menuItem.onClick}\n disabled={menuItem.disabled}\n endIcon={menuItem.icon && <IconSvg icon={menuItem.icon} wrap={false} />}\n >\n <Typography variant={'buttonLink'}>{menuItem.text}</Typography>\n </Button>\n )\n }\n\n const handleToggle = () => {\n setOpen(prevOpen => !prevOpen)\n }\n\n const handleClose = (event: Event | SyntheticEvent) => {\n if (anchorRef.current?.contains(event.target as HTMLElement)) {\n return\n }\n\n setOpen(false)\n }\n\n function handleListKeyDown(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n event.preventDefault()\n setOpen(false)\n } else if (event.key === 'Escape') {\n setOpen(false)\n }\n }\n\n return (\n <>\n <Tooltip\n title={\n buttonTooltip ? (\n <div style={{ whiteSpace: 'pre-line' }}>{buttonTooltip}</div>\n ) : undefined\n }\n placement={'top'}\n >\n <span>\n <Button\n variant={variant}\n ref={anchorRef}\n id={`composition-button-${dropdownMenuId}`}\n aria-controls={\n open ? `composition-menu-${dropdownMenuId}` : undefined\n }\n aria-expanded={open ? 'true' : undefined}\n aria-haspopup=\"true\"\n onClick={handleToggle}\n {...buttonProps}\n >\n <Typography variant={'buttonLink'}>{dropdownButtonText}</Typography>\n </Button>\n </span>\n </Tooltip>\n <Popper\n open={open}\n anchorEl={anchorRef.current}\n role={undefined}\n placement=\"bottom-end\"\n transition\n style={{\n // Fixes issue where react-flow (provenance) would appear above the menu\n zIndex: 10,\n }}\n >\n {({ TransitionProps }) => (\n <Fade {...TransitionProps}>\n <Paper elevation={elevation} sx={{ ...paperSx }}>\n <ClickAwayListener onClickAway={handleClose}>\n <Box>\n <MenuList\n autoFocusItem={open}\n id={`composition-menu-${dropdownMenuId}`}\n aria-labelledby={`composition-button-${dropdownMenuId}`}\n onKeyDown={handleListKeyDown}\n >\n {items.map((itemGroup, index, array) => {\n return [\n itemGroup.map(item => {\n return (\n <Tooltip\n key={item.text}\n title={item.tooltipText}\n placement={'left'}\n >\n <MenuItem\n // Always make the component an anchor in case href is defined.\n component=\"a\"\n sx={{\n // Override the anchor-specific state styles, we don't want it to look like an anchor\n '&:hover': {\n color: 'unset',\n },\n '&:focus': {\n color: 'unset',\n textDecoration: 'unset',\n },\n }}\n disabled={item.disabled}\n href={item.href}\n rel={\n item.href ? 'noopener noreferrer' : undefined\n }\n // Allow pointer events on disabled item so tooltip works.\n style={{ pointerEvents: 'auto' }}\n onClick={(e: MouseEvent) => {\n /*\n * Must check if the item is disabled because we set\n * `pointer-events: 'auto'`\n */\n if (\n !item.disabled &&\n 'onClick' in item &&\n item.onClick\n ) {\n setOpen(false)\n item.onClick(e)\n }\n }}\n >\n {item.icon && (\n <ListItemIcon\n style={{\n // MUI has specified a more specific minWidth for ListItemIcon inside a MenuList than\n // we can create with sx, so apply an inline style for this property only.\n minWidth: '30px',\n }}\n >\n <IconSvg\n icon={item.icon}\n sx={{\n width: '17px',\n height: '17px',\n ...item.iconSx,\n }}\n wrap={false}\n />\n </ListItemIcon>\n )}\n <ListItemText\n sx={{ marginTop: 0 }}\n slotProps={{\n primary: {\n variant: 'smallText1',\n sx: item.textSx,\n },\n }}\n >\n {item.text}\n </ListItemText>\n </MenuItem>\n </Tooltip>\n )\n }),\n index < array.length - 1 && <Divider />,\n ]\n })}\n </MenuList>\n {showFileAccessRequestNotice && (\n <>\n {numberOfMenuItems > 0 && <Divider />}\n {fileAccessRequestNotice}\n </>\n )}\n </Box>\n </ClickAwayListener>\n </Paper>\n </Fade>\n )}\n </Popper>\n </>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenu.js","names":[],"sources":["../../../src/components/menu/DropdownMenu.tsx"],"sourcesContent":["import {\n Button,\n ButtonProps,\n ClickAwayListener,\n Divider,\n Fade,\n ListItemIcon,\n ListItemText,\n MenuItem,\n MenuList,\n Paper,\n Popper,\n SxProps,\n Tooltip,\n Typography,\n Box,\n} from '@mui/material'\nimport {\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useId,\n useRef,\n useState,\n} from 'react'\nimport IconSvg, { IconName } from '../IconSvg/IconSvg'\n\nconst fileAccessRequestNotice = (\n <Box\n sx={{\n backgroundColor: '#EAF0F5',\n color: '#3B4046',\n padding: '6px 8px',\n borderRadius: '3px',\n marginTop: '8px',\n }}\n >\n <Typography\n sx={{\n fontSize: '14px',\n fontWeight: '440',\n lineHeight: '20px',\n letterSpacing: '-0.07px',\n }}\n >\n <span\n style={{\n fontWeight: '700',\n }}\n >\n Note:{' '}\n </span>\n You can add this file to your download list, but you must make an access\n request before downloading.\n </Typography>\n </Box>\n)\n\n/**\n * Defines a configuration for a particular dropdown menu item\n */\nexport type DropdownMenuItem = {\n /* The text to show on the menu item. */\n text: string\n /* The icon to show for this item in the menu. */\n icon?: IconName\n /* A function invoked upon clicking the item, assuming `disabled` is falsy */\n onClick?: (e: MouseEvent) => void\n /* A link that the item should point to. */\n href?: string\n /* The optional tooltipText to show for this item. Compatible with the `disabled` prop. */\n tooltipText?: string\n /* Whether the item should be disabled from selection. */\n disabled?: boolean\n /* Additional MUI SxProps to pass to the text component */\n textSx?: SxProps\n /* Additional MUI SxProps to pass to the icon component */\n iconSx?: SxProps\n}\n\nexport type DropdownMenuProps = {\n /* Groups of menu items. Each group will be split with a divider. See DropdownMenuItem for per-item configuration */\n items: DropdownMenuItem[][]\n /* The text to show on the dropdown menu button. */\n dropdownButtonText: string\n /* The optional tooltip text for the dropdown menu button. */\n buttonTooltip?: string\n /* Any additional props to pass to the dropdown menu button. */\n buttonProps?: ButtonProps\n /* Optional MUI button variant for the dropdown button (and the single-item button). Default 'outlined'. */\n variant?: ButtonProps['variant']\n /* If true, will render a single action as a standalone button. Default true. */\n convertSingleItemToButton?: boolean\n /* If true, nothing will be rendered if no actions are passed. Default false. */\n renderMenuIfNoItems?: boolean\n paperSx?: SxProps\n elevation?: number\n /* If true, shows the file access request notice at the bottom of the menu. Default false. */\n showFileAccessRequestNotice?: boolean\n}\n\n/**\n * The DropdownMenu component provides a generic way to compose a MUI dropdown menu.\n */\nexport function DropdownMenu(props: DropdownMenuProps) {\n const {\n buttonTooltip,\n dropdownButtonText,\n items = [] as DropdownMenuItem[][],\n convertSingleItemToButton = true,\n renderMenuIfNoItems = false,\n buttonProps = {},\n variant = 'outlined',\n paperSx,\n elevation,\n showFileAccessRequestNotice = false,\n } = props\n\n const dropdownMenuId = useId()\n const [open, setOpen] = useState(false)\n const anchorRef = useRef<HTMLButtonElement>(null)\n\n const numberOfMenuItems = items.flat().length\n\n if (!renderMenuIfNoItems && numberOfMenuItems === 0) {\n // Hide menu if no actions will be in the menu\n return null\n }\n\n if (convertSingleItemToButton && numberOfMenuItems === 1) {\n // If one action is in the menu, show it as a button\n const menuItem = items.flat()[0]\n return (\n <Button\n component={menuItem.href ? 'a' : 'button'}\n title={menuItem.tooltipText}\n variant={variant}\n href={menuItem.href}\n rel={menuItem.href ? 'noopener noreferrer' : undefined}\n onClick={menuItem.onClick}\n disabled={menuItem.disabled}\n endIcon={menuItem.icon && <IconSvg icon={menuItem.icon} wrap={false} />}\n >\n <Typography variant={'buttonLink'}>{menuItem.text}</Typography>\n </Button>\n )\n }\n\n const handleToggle = () => {\n setOpen(prevOpen => !prevOpen)\n }\n\n const handleClose = (event: Event | SyntheticEvent) => {\n if (anchorRef.current?.contains(event.target as HTMLElement)) {\n return\n }\n\n setOpen(false)\n }\n\n function handleListKeyDown(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n event.preventDefault()\n setOpen(false)\n } else if (event.key === 'Escape') {\n setOpen(false)\n }\n }\n\n return (\n <>\n <Tooltip\n title={\n buttonTooltip ? (\n <div style={{ whiteSpace: 'pre-line' }}>{buttonTooltip}</div>\n ) : undefined\n }\n placement={'top'}\n >\n <span>\n <Button\n variant={variant}\n ref={anchorRef}\n id={`composition-button-${dropdownMenuId}`}\n aria-controls={\n open ? `composition-menu-${dropdownMenuId}` : undefined\n }\n aria-expanded={open ? 'true' : undefined}\n aria-haspopup=\"true\"\n onClick={handleToggle}\n {...buttonProps}\n >\n <Typography variant={'buttonLink'}>{dropdownButtonText}</Typography>\n </Button>\n </span>\n </Tooltip>\n <Popper\n open={open}\n anchorEl={anchorRef.current}\n role={undefined}\n placement=\"bottom-end\"\n transition\n style={{\n // Fixes issue where react-flow (provenance) would appear above the menu\n zIndex: 10,\n }}\n modifiers={[\n {\n name: 'offset',\n options: { offset: [0, 6] },\n },\n ]}\n >\n {({ TransitionProps }) => (\n <Fade {...TransitionProps}>\n <Paper elevation={elevation} sx={{ ...paperSx }}>\n <ClickAwayListener onClickAway={handleClose}>\n <Box>\n <MenuList\n autoFocusItem={open}\n id={`composition-menu-${dropdownMenuId}`}\n aria-labelledby={`composition-button-${dropdownMenuId}`}\n onKeyDown={handleListKeyDown}\n >\n {items.map((itemGroup, index, array) => {\n return [\n itemGroup.map(item => {\n return (\n <Tooltip\n key={item.text}\n title={item.tooltipText}\n placement={'left'}\n >\n <MenuItem\n // Always make the component an anchor in case href is defined.\n component=\"a\"\n sx={{\n // Override the anchor-specific state styles, we don't want it to look like an anchor\n '&:hover': {\n color: 'unset',\n },\n '&:focus': {\n color: 'unset',\n textDecoration: 'unset',\n },\n }}\n disabled={item.disabled}\n href={item.href}\n rel={\n item.href ? 'noopener noreferrer' : undefined\n }\n // Allow pointer events on disabled item so tooltip works.\n style={{ pointerEvents: 'auto' }}\n onClick={(e: MouseEvent) => {\n /*\n * Must check if the item is disabled because we set\n * `pointer-events: 'auto'`\n */\n if (\n !item.disabled &&\n 'onClick' in item &&\n item.onClick\n ) {\n setOpen(false)\n item.onClick(e)\n }\n }}\n >\n {item.icon && (\n <ListItemIcon\n style={{\n // MUI has specified a more specific minWidth for ListItemIcon inside a MenuList than\n // we can create with sx, so apply an inline style for this property only.\n minWidth: '30px',\n }}\n >\n <IconSvg\n icon={item.icon}\n sx={{\n width: '17px',\n height: '17px',\n ...item.iconSx,\n }}\n wrap={false}\n />\n </ListItemIcon>\n )}\n <ListItemText\n sx={{ marginTop: 0 }}\n slotProps={{\n primary: {\n variant: 'smallText1',\n sx: item.textSx,\n },\n }}\n >\n {item.text}\n </ListItemText>\n </MenuItem>\n </Tooltip>\n )\n }),\n index < array.length - 1 && <Divider />,\n ]\n })}\n </MenuList>\n {showFileAccessRequestNotice && (\n <>\n {numberOfMenuItems > 0 && <Divider />}\n {fileAccessRequestNotice}\n </>\n )}\n </Box>\n </ClickAwayListener>\n </Paper>\n </Fade>\n )}\n </Popper>\n </>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LeftRightPanel.d.ts","sourceRoot":"","sources":["../../../src/components/styled/LeftRightPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,QAAQ,EAAS,UAAU,EAAU,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAAC,QAAQ,CAWxD,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAAC,UAAU,CA4B1D,CAAA;AAEH,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,SAAS,CAAA;IACtB,YAAY,EAAE,SAAS,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,YAAY,EACZ,SAAS,GACV,EAAE,mBAAmB,2CASrB"}
1
+ {"version":3,"file":"LeftRightPanel.d.ts","sourceRoot":"","sources":["../../../src/components/styled/LeftRightPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,QAAQ,EAAS,UAAU,EAAU,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAAC,QAAQ,CAWxD,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAAC,UAAU,CAiC1D,CAAA;AAEH,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,SAAS,CAAA;IACtB,YAAY,EAAE,SAAS,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,YAAY,EACZ,SAAS,GACV,EAAE,mBAAmB,2CASrB"}
@@ -9,12 +9,14 @@ var a = n(e, { label: "StyledOuterContainer" })(({ theme: e }) => ({
9
9
  backgroundSize: "cover",
10
10
  [e.breakpoints.down("md")]: { padding: 0 }
11
11
  })), o = n(t, { label: "StyledInnerContainer" })(({ theme: e }) => ({
12
+ position: "relative",
12
13
  width: "900px",
13
14
  minHeight: "675px",
14
15
  margin: "0 auto",
15
16
  display: "flex",
16
17
  overflow: "hidden",
17
18
  [e.breakpoints.down("md")]: {
19
+ boxShadow: "none",
18
20
  flexDirection: "column",
19
21
  width: "100%",
20
22
  minHeight: 0,
@@ -27,12 +29,27 @@ var a = n(e, { label: "StyledOuterContainer" })(({ theme: e }) => ({
27
29
  [e.breakpoints.down("md")]: { width: "100%" }
28
30
  },
29
31
  "& > div:nth-of-type(1)": { backgroundColor: e.palette.background.paper },
30
- "& > div:nth-of-type(2)": { backgroundColor: e.palette.grey[200] }
32
+ "& > div:nth-of-type(2)": {
33
+ backgroundColor: e.palette.grey[200],
34
+ [e.breakpoints.down("md")]: { backgroundColor: e.palette.background.paper }
35
+ }
31
36
  }));
32
37
  function s({ leftContent: t, rightContent: n, className: s }) {
33
38
  return /* @__PURE__ */ r(a, {
34
39
  className: s,
35
- children: /* @__PURE__ */ i(o, { children: [/* @__PURE__ */ r(e, { children: t }), /* @__PURE__ */ r(e, { children: n })] })
40
+ children: /* @__PURE__ */ i(o, { children: [/* @__PURE__ */ r(e, {
41
+ sx: { order: {
42
+ xs: 2,
43
+ md: 1
44
+ } },
45
+ children: t
46
+ }), /* @__PURE__ */ r(e, {
47
+ sx: { order: {
48
+ xs: 1,
49
+ md: 2
50
+ } },
51
+ children: n
52
+ })] })
36
53
  });
37
54
  }
38
55
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"LeftRightPanel.js","names":[],"sources":["../../../src/components/styled/LeftRightPanel.tsx"],"sourcesContent":["import { Box, BoxProps, Paper, PaperProps, styled } from '@mui/material'\nimport { StyledComponent } from '@emotion/styled'\nimport { ReactNode } from 'react'\n\nexport const StyledOuterContainer: StyledComponent<BoxProps> = styled(Box, {\n label: 'StyledOuterContainer',\n})(({ theme }) => ({\n minHeight: '100vh',\n paddingTop: '50px',\n paddingBottom: '50px',\n background: theme.styledBackground,\n backgroundSize: 'cover',\n [theme.breakpoints.down('md')]: {\n padding: 0,\n },\n}))\n\n/**\n * Canonical 900px two-column card that stacks into a single column on\n * mobile. Layout-only: consumers supply their own panel padding.\n * `apps/SageAccountWeb` extends this (adding baked-in panel padding) rather\n * than redefining it -- see that app's `StyledComponents.ts` (SWC-7966).\n *\n * Below `md` the card grows with its content and the page scrolls normally.\n */\nexport const StyledInnerContainer: StyledComponent<PaperProps> = styled(Paper, {\n label: 'StyledInnerContainer',\n})(({ theme }) => ({\n width: '900px',\n minHeight: '675px',\n margin: '0 auto',\n display: 'flex',\n overflow: 'hidden',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n width: '100%',\n minHeight: 0,\n height: 'auto',\n overflow: 'visible',\n },\n '& > div:nth-of-type(1), & > div:nth-of-type(2)': {\n borderRadius: 'inherit',\n width: '450px',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n '& > div:nth-of-type(1)': {\n backgroundColor: theme.palette.background.paper,\n },\n '& > div:nth-of-type(2)': {\n backgroundColor: theme.palette.grey[200],\n },\n}))\n\ntype LeftRightPanelProps = {\n leftContent: ReactNode\n rightContent: ReactNode\n className?: string\n}\n\nexport function LeftRightPanel({\n leftContent,\n rightContent,\n className,\n}: LeftRightPanelProps) {\n return (\n <StyledOuterContainer className={className}>\n <StyledInnerContainer>\n <Box>{leftContent}</Box>\n <Box>{rightContent}</Box>\n </StyledInnerContainer>\n </StyledOuterContainer>\n )\n}\n"],"mappings":";;;AAIA,IAAa,IAAkD,EAAO,GAAK,EACzE,OAAO,uBACT,CAAC,GAAG,EAAE,gBAAa;CACjB,WAAW;CACX,YAAY;CACZ,eAAe;CACf,YAAY,EAAM;CAClB,gBAAgB;EACf,EAAM,YAAY,KAAK,IAAI,IAAI,EAC9B,SAAS,EACX;AACF,EAAE,GAUW,IAAoD,EAAO,GAAO,EAC7E,OAAO,uBACT,CAAC,GAAG,EAAE,gBAAa;CACjB,OAAO;CACP,WAAW;CACX,QAAQ;CACR,SAAS;CACT,UAAU;EACT,EAAM,YAAY,KAAK,IAAI,IAAI;EAC9B,eAAe;EACf,OAAO;EACP,WAAW;EACX,QAAQ;EACR,UAAU;CACZ;CACA,kDAAkD;EAChD,cAAc;EACd,OAAO;GACN,EAAM,YAAY,KAAK,IAAI,IAAI,EAC9B,OAAO,OACT;CACF;CACA,0BAA0B,EACxB,iBAAiB,EAAM,QAAQ,WAAW,MAC5C;CACA,0BAA0B,EACxB,iBAAiB,EAAM,QAAQ,KAAK,KACtC;AACF,EAAE;AAQF,SAAgB,EAAe,EAC7B,gBACA,iBACA,gBACsB;CACtB,OACE,kBAAC,GAAD;EAAiC;YAC/B,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAM,EAAiB,CAAA,GACvB,kBAAC,GAAD,EAAA,UAAM,EAAkB,CAAA,CACJ,EAAA,CAAA;CACF,CAAA;AAE1B"}
1
+ {"version":3,"file":"LeftRightPanel.js","names":[],"sources":["../../../src/components/styled/LeftRightPanel.tsx"],"sourcesContent":["import { Box, BoxProps, Paper, PaperProps, styled } from '@mui/material'\nimport { StyledComponent } from '@emotion/styled'\nimport { ReactNode } from 'react'\n\nexport const StyledOuterContainer: StyledComponent<BoxProps> = styled(Box, {\n label: 'StyledOuterContainer',\n})(({ theme }) => ({\n minHeight: '100vh',\n paddingTop: '50px',\n paddingBottom: '50px',\n background: theme.styledBackground,\n backgroundSize: 'cover',\n [theme.breakpoints.down('md')]: {\n padding: 0,\n },\n}))\n\n/**\n * Canonical 900px two-column card that stacks into a single column on\n * mobile. Layout-only: consumers supply their own panel padding.\n * `apps/SageAccountWeb` extends this (adding baked-in panel padding) rather\n * than redefining it -- see that app's `StyledComponents.ts` (SWC-7966).\n *\n * Below `md` the card grows with its content and the page scrolls normally.\n */\nexport const StyledInnerContainer: StyledComponent<PaperProps> = styled(Paper, {\n label: 'StyledInnerContainer',\n})(({ theme }) => ({\n position: 'relative',\n width: '900px',\n minHeight: '675px',\n margin: '0 auto',\n display: 'flex',\n overflow: 'hidden',\n [theme.breakpoints.down('md')]: {\n boxShadow: 'none',\n flexDirection: 'column',\n width: '100%',\n minHeight: 0,\n height: 'auto',\n overflow: 'visible',\n },\n '& > div:nth-of-type(1), & > div:nth-of-type(2)': {\n borderRadius: 'inherit',\n width: '450px',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n '& > div:nth-of-type(1)': {\n backgroundColor: theme.palette.background.paper,\n },\n '& > div:nth-of-type(2)': {\n backgroundColor: theme.palette.grey[200],\n [theme.breakpoints.down('md')]: {\n backgroundColor: theme.palette.background.paper,\n },\n },\n}))\n\ntype LeftRightPanelProps = {\n leftContent: ReactNode\n rightContent: ReactNode\n className?: string\n}\n\nexport function LeftRightPanel({\n leftContent,\n rightContent,\n className,\n}: LeftRightPanelProps) {\n return (\n <StyledOuterContainer className={className}>\n <StyledInnerContainer>\n <Box sx={{ order: { xs: 2, md: 1 } }}>{leftContent}</Box>\n <Box sx={{ order: { xs: 1, md: 2 } }}>{rightContent}</Box>\n </StyledInnerContainer>\n </StyledOuterContainer>\n )\n}\n"],"mappings":";;;AAIA,IAAa,IAAkD,EAAO,GAAK,EACzE,OAAO,uBACT,CAAC,GAAG,EAAE,gBAAa;CACjB,WAAW;CACX,YAAY;CACZ,eAAe;CACf,YAAY,EAAM;CAClB,gBAAgB;EACf,EAAM,YAAY,KAAK,IAAI,IAAI,EAC9B,SAAS,EACX;AACF,EAAE,GAUW,IAAoD,EAAO,GAAO,EAC7E,OAAO,uBACT,CAAC,GAAG,EAAE,gBAAa;CACjB,UAAU;CACV,OAAO;CACP,WAAW;CACX,QAAQ;CACR,SAAS;CACT,UAAU;EACT,EAAM,YAAY,KAAK,IAAI,IAAI;EAC9B,WAAW;EACX,eAAe;EACf,OAAO;EACP,WAAW;EACX,QAAQ;EACR,UAAU;CACZ;CACA,kDAAkD;EAChD,cAAc;EACd,OAAO;GACN,EAAM,YAAY,KAAK,IAAI,IAAI,EAC9B,OAAO,OACT;CACF;CACA,0BAA0B,EACxB,iBAAiB,EAAM,QAAQ,WAAW,MAC5C;CACA,0BAA0B;EACxB,iBAAiB,EAAM,QAAQ,KAAK;GACnC,EAAM,YAAY,KAAK,IAAI,IAAI,EAC9B,iBAAiB,EAAM,QAAQ,WAAW,MAC5C;CACF;AACF,EAAE;AAQF,SAAgB,EAAe,EAC7B,gBACA,iBACA,gBACsB;CACtB,OACE,kBAAC,GAAD;EAAiC;YAC/B,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;GAAK,IAAI,EAAE,OAAO;IAAE,IAAI;IAAG,IAAI;GAAE,EAAE;aAAI;EAAiB,CAAA,GACxD,kBAAC,GAAD;GAAK,IAAI,EAAE,OAAO;IAAE,IAAI;IAAG,IAAI;GAAE,EAAE;aAAI;EAAkB,CAAA,CACrC,EAAA,CAAA;CACF,CAAA;AAE1B"}
@@ -0,0 +1,10 @@
1
+ import { SynapseClientError, TaskStatus } from '@sage-bionetworks/synapse-client';
2
+ /**
3
+ * A hook to record that work has begun on a curation task by advancing its `TaskStatus` from
4
+ * `NOT_STARTED` to `IN_PROGRESS`.
5
+ *
6
+ * @returns A mutation object taking a `taskId`. The mutation resolves to the updated `TaskStatus`,
7
+ * or to `undefined` when the task had already advanced past `NOT_STARTED` and was left untouched.
8
+ */
9
+ export default function useMarkCurationTaskInProgress(): import("@tanstack/react-query").UseMutationResult<TaskStatus | undefined, SynapseClientError, number, unknown>;
10
+ //# sourceMappingURL=useMarkCurationTaskInProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMarkCurationTaskInProgress.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,UAAU,EAEX,MAAM,kCAAkC,CAAA;AAGzC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,6BAA6B,mHAsBpD"}
@@ -0,0 +1,20 @@
1
+ import { useSynapseContext as e } from "../../../../utils/context/SynapseContext.js";
2
+ import "../../../../utils/index.js";
3
+ import { useUpdateCurationTaskStatus as t } from "../../../../synapse-queries/curation/task/useCurationTask.js";
4
+ import { TaskStatusStateEnum as n } from "@sage-bionetworks/synapse-client";
5
+ import { useMutation as r } from "@tanstack/react-query";
6
+ //#region src/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.ts
7
+ function i() {
8
+ let { synapseClient: i } = e(), { mutateAsync: a } = t();
9
+ return r({ mutationFn: async (e) => {
10
+ let t = await i.curationTaskServicesClient.getRepoV1CurationTaskTaskIdStatus({ taskId: e });
11
+ if (t.state === n.NOT_STARTED) return await a({
12
+ ...t,
13
+ state: n.IN_PROGRESS
14
+ });
15
+ } });
16
+ }
17
+ //#endregion
18
+ export { i as default };
19
+
20
+ //# sourceMappingURL=useMarkCurationTaskInProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMarkCurationTaskInProgress.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.ts"],"sourcesContent":["import { useUpdateCurationTaskStatus } from '@/synapse-queries/curation/task/useCurationTask'\nimport { useSynapseContext } from '@/utils/index'\nimport {\n SynapseClientError,\n TaskStatus,\n TaskStatusStateEnum,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation } from '@tanstack/react-query'\n\n/**\n * A hook to record that work has begun on a curation task by advancing its `TaskStatus` from\n * `NOT_STARTED` to `IN_PROGRESS`.\n *\n * @returns A mutation object taking a `taskId`. The mutation resolves to the updated `TaskStatus`,\n * or to `undefined` when the task had already advanced past `NOT_STARTED` and was left untouched.\n */\nexport default function useMarkCurationTaskInProgress() {\n const { synapseClient } = useSynapseContext()\n const { mutateAsync: updateCurationTaskStatus } =\n useUpdateCurationTaskStatus()\n\n return useMutation<TaskStatus | undefined, SynapseClientError, number>({\n mutationFn: async taskId => {\n const latestStatus =\n await synapseClient.curationTaskServicesClient.getRepoV1CurationTaskTaskIdStatus(\n { taskId },\n )\n\n if (latestStatus.state !== TaskStatusStateEnum.NOT_STARTED) {\n return undefined\n }\n\n return await updateCurationTaskStatus({\n ...latestStatus,\n state: TaskStatusStateEnum.IN_PROGRESS,\n })\n },\n })\n}\n"],"mappings":";;;;;;AAgBA,SAAwB,IAAgC;CACtD,IAAM,EAAE,qBAAkB,EAAkB,GACtC,EAAE,aAAa,MACnB,EAA4B;CAE9B,OAAO,EAAgE,EACrE,YAAY,OAAM,MAAU;EAC1B,IAAM,IACJ,MAAM,EAAc,2BAA2B,kCAC7C,EAAE,UAAO,CACX;EAEE,MAAa,UAAU,EAAoB,aAI/C,OAAO,MAAM,EAAyB;GACpC,GAAG;GACH,OAAO,EAAoB;EAC7B,CAAC;CACH,EACF,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOpenCuratorButton.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/hooks/useOpenCuratorButton.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,UAAU,EACX,MAAM,kCAAkC,CAAA;AAYzC,KAAK,kCAAkC,GAAG;IACxC,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAOD,MAAM,CAAC,OAAO,UAAU,4BAA4B,CAClD,UAAU,EAAE,UAAU,GACrB,kCAAkC,CAkFpC"}
1
+ {"version":3,"file":"useOpenCuratorButton.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/hooks/useOpenCuratorButton.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,UAAU,EACX,MAAM,kCAAkC,CAAA;AAazC,KAAK,kCAAkC,GAAG;IACxC,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAOD,MAAM,CAAC,OAAO,UAAU,4BAA4B,CAClD,UAAU,EAAE,UAAU,GACrB,kCAAkC,CA+FpC"}
@@ -8,40 +8,49 @@ import { instanceOfGridSupportedTaskProperties as a } from "../utils/types.js";
8
8
  import { getGridSourceIdForTask as o } from "../utils/getGridSourceIdForTask.js";
9
9
  import s from "./useGridSessionForCurationTask.js";
10
10
  import c from "./useGridSessionForCurationTask_legacy.js";
11
- import { useCallback as l } from "react";
12
- import { SynapseClientError as u } from "@sage-bionetworks/synapse-client";
11
+ import l from "./useMarkCurationTaskInProgress.js";
12
+ import { useCallback as u } from "react";
13
+ import { SynapseClientError as d } from "@sage-bionetworks/synapse-client";
13
14
  //#region src/features/entity/metadata-task/hooks/useOpenCuratorButton.ts
14
- function d(e, t) {
15
+ function f(e, t) {
15
16
  let r = n(e, t);
16
17
  window.open(r, "_blank", "noopener");
17
18
  }
18
- function f(n) {
19
- let f = n.task, p = f.taskProperties;
20
- if (!a(p)) throw Error(`Task properties are not supported for GridSession creation: ${p?.concreteType}`);
21
- let m = (p != null && "suggestedAuthorizationMode" in p ? p.suggestedAuthorizationMode : void 0) != null, { mutateAsync: h, isPending: g } = c(), { mutateAsync: _, isPending: v } = s(), { data: y, isLoading: b } = t(o(p)), x = y?.canView, S = l(async () => {
19
+ function p(n) {
20
+ let p = n.task, m = p.taskProperties;
21
+ if (!a(m)) throw Error(`Task properties are not supported for GridSession creation: ${m?.concreteType}`);
22
+ let h = (m != null && "suggestedAuthorizationMode" in m ? m.suggestedAuthorizationMode : void 0) != null, { mutateAsync: g, isPending: _ } = c(), { mutateAsync: v, isPending: y } = s(), { mutateAsync: b } = l(), { data: x, isLoading: S } = t(o(m)), C = x?.canView, w = u(async () => {
22
23
  let t;
23
24
  try {
24
- t = m ? (await _(n)).gridSession : await h({ curationTask: f }), d(t.sessionId, f.taskId);
25
+ t = h ? (await v(n)).gridSession : await g({ curationTask: p });
25
26
  } catch (t) {
26
- t instanceof u && t.status === 403 ? (console.error(t), e(i, "danger", { title: r })) : (console.error("Error opening Curator for curation task", t), e(t instanceof Error ? t.message : String(t), "danger", { title: r }));
27
+ t instanceof d && t.status === 403 ? (console.error(t), e(i, "danger", { title: r })) : (console.error("Error opening Curator for curation task", t), e(t instanceof Error ? t.message : String(t), "danger", { title: r }));
28
+ return;
29
+ }
30
+ f(t.sessionId, p.taskId);
31
+ try {
32
+ await b(p.taskId);
33
+ } catch (e) {
34
+ console.error("Failed to mark curation task as in progress", e);
27
35
  }
28
36
  }, [
29
- f,
37
+ p,
30
38
  n,
31
- m,
32
39
  h,
33
- _
34
- ]), C = l(() => {
35
- S();
36
- }, [S]);
40
+ g,
41
+ v,
42
+ b
43
+ ]), T = u(() => {
44
+ w();
45
+ }, [w]);
37
46
  return {
38
- hasPermission: x,
39
- isLoading: b,
40
- isPending: m ? v : g,
41
- onClick: C
47
+ hasPermission: C,
48
+ isLoading: S,
49
+ isPending: h ? y : _,
50
+ onClick: T
42
51
  };
43
52
  }
44
53
  //#endregion
45
- export { f as default };
54
+ export { p as default };
46
55
 
47
56
  //# sourceMappingURL=useOpenCuratorButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOpenCuratorButton.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/hooks/useOpenCuratorButton.ts"],"sourcesContent":["import { displayToast } from '@/components'\nimport { useGetEntityPermissions } from '@/synapse-queries'\nimport {\n GridSession,\n SynapseClientError,\n TaskBundle,\n} from '@sage-bionetworks/synapse-client'\nimport { useCallback } from 'react'\nimport {\n OPEN_CURATOR_ERROR_TITLE,\n OPEN_CURATOR_UNAUTHORIZED_ERROR_MESSAGE,\n} from '../utils/constants'\nimport { getGridSourceIdForTask } from '../utils/getGridSourceIdForTask'\nimport useGridSessionForCurationTask from './useGridSessionForCurationTask'\nimport useGridSessionForCurationTask_legacy from './useGridSessionForCurationTask_legacy'\nimport { getLinkToGridSession } from '@/utils/functions/getSynapseWebClientLink'\nimport { instanceOfGridSupportedTaskProperties } from '../utils/types'\n\ntype UseOpenCuratorFromTaskButtonReturn = {\n isLoading: boolean\n isPending: boolean\n hasPermission?: boolean\n onClick: () => void\n}\n\nfunction openGridSessionInNewWindow(gridSessionId: string, taskId: number) {\n const gridUrl = getLinkToGridSession(gridSessionId, taskId)\n window.open(gridUrl, '_blank', 'noopener')\n}\n\nexport default function useOpenCuratorFromTaskButton(\n taskBundle: TaskBundle,\n): UseOpenCuratorFromTaskButtonReturn {\n const curationTask = taskBundle.task!\n\n const taskProperties = curationTask.taskProperties\n if (!instanceOfGridSupportedTaskProperties(taskProperties)) {\n throw new Error(\n `Task properties are not supported for GridSession creation: ${taskProperties?.concreteType}`,\n )\n }\n\n const suggestedAuthorizationMode =\n taskProperties != null && 'suggestedAuthorizationMode' in taskProperties\n ? taskProperties.suggestedAuthorizationMode\n : undefined\n\n const useTaskLinkedSession = suggestedAuthorizationMode != null\n\n const {\n mutateAsync: getOrCreateLegacyGridSessionForUnassignedTask,\n isPending: legacyOpenGridIsPending,\n } = useGridSessionForCurationTask_legacy()\n\n const {\n mutateAsync: getOrCreateTaskLinkedGridSession,\n isPending: taskLinkedOpenGridIsPending,\n } = useGridSessionForCurationTask()\n\n const gridSourceEntityId = getGridSourceIdForTask(taskProperties)\n const {\n data: sourceEntityPermissions,\n isLoading: isLoadingEntityPermissions,\n } = useGetEntityPermissions(gridSourceEntityId)\n\n const hasPermission = sourceEntityPermissions?.canView\n\n const openNewOrExistingCuratorSession = useCallback(async () => {\n let gridSession: GridSession\n try {\n if (useTaskLinkedSession) {\n const result = await getOrCreateTaskLinkedGridSession(taskBundle)\n gridSession = result.gridSession\n } else {\n gridSession = await getOrCreateLegacyGridSessionForUnassignedTask({\n curationTask,\n })\n }\n openGridSessionInNewWindow(gridSession.sessionId!, curationTask.taskId!)\n } catch (error) {\n if (error instanceof SynapseClientError && error.status === 403) {\n console.error(error)\n displayToast(OPEN_CURATOR_UNAUTHORIZED_ERROR_MESSAGE, 'danger', {\n title: OPEN_CURATOR_ERROR_TITLE,\n })\n } else {\n console.error('Error opening Curator for curation task', error)\n const errorMessage =\n error instanceof Error ? error.message : String(error)\n displayToast(errorMessage, 'danger', {\n title: OPEN_CURATOR_ERROR_TITLE,\n })\n }\n }\n }, [\n curationTask,\n taskBundle,\n useTaskLinkedSession,\n getOrCreateLegacyGridSessionForUnassignedTask,\n getOrCreateTaskLinkedGridSession,\n ])\n\n const handleClickOpenCurator = useCallback(() => {\n void openNewOrExistingCuratorSession()\n }, [openNewOrExistingCuratorSession])\n\n return {\n hasPermission,\n isLoading: isLoadingEntityPermissions,\n isPending: useTaskLinkedSession\n ? taskLinkedOpenGridIsPending\n : legacyOpenGridIsPending,\n onClick: handleClickOpenCurator,\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAyBA,SAAS,EAA2B,GAAuB,GAAgB;CACzE,IAAM,IAAU,EAAqB,GAAe,CAAM;CAC1D,OAAO,KAAK,GAAS,UAAU,UAAU;AAC3C;AAEA,SAAwB,EACtB,GACoC;CACpC,IAAM,IAAe,EAAW,MAE1B,IAAiB,EAAa;CACpC,IAAI,CAAC,EAAsC,CAAc,GACvD,MAAU,MACR,+DAA+D,GAAgB,cACjF;CAQF,IAAM,KAJJ,KAAkB,QAAQ,gCAAgC,IACtD,EAAe,6BACf,KAAA,MAEqD,MAErD,EACJ,aAAa,GACb,WAAW,MACT,EAAqC,GAEnC,EACJ,aAAa,GACb,WAAW,MACT,EAA8B,GAG5B,EACJ,MAAM,GACN,WAAW,MACT,EAJuB,EAAuB,CAItB,CAAkB,GAExC,IAAgB,GAAyB,SAEzC,IAAkC,EAAY,YAAY;EAC9D,IAAI;EACJ,IAAI;GASF,AARA,AAIE,IAJE,KAEY,MADO,EAAiC,CAAU,GAC3C,cAEP,MAAM,EAA8C,EAChE,gBACF,CAAC,GAEH,EAA2B,EAAY,WAAY,EAAa,MAAO;EACzE,SAAS,GAAO;GACd,AAAI,aAAiB,KAAsB,EAAM,WAAW,OAC1D,QAAQ,MAAM,CAAK,GACnB,EAAa,GAAyC,UAAU,EAC9D,OAAO,EACT,CAAC,MAED,QAAQ,MAAM,2CAA2C,CAAK,GAG9D,EADE,aAAiB,QAAQ,EAAM,UAAU,OAAO,CAAK,GAC5B,UAAU,EACnC,OAAO,EACT,CAAC;EAEL;CACF,GAAG;EACD;EACA;EACA;EACA;EACA;CACF,CAAC,GAEK,IAAyB,QAAkB;EAC/C,EAAqC;CACvC,GAAG,CAAC,CAA+B,CAAC;CAEpC,OAAO;EACL;EACA,WAAW;EACX,WAAW,IACP,IACA;EACJ,SAAS;CACX;AACF"}
1
+ {"version":3,"file":"useOpenCuratorButton.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/hooks/useOpenCuratorButton.ts"],"sourcesContent":["import { displayToast } from '@/components'\nimport { useGetEntityPermissions } from '@/synapse-queries'\nimport {\n GridSession,\n SynapseClientError,\n TaskBundle,\n} from '@sage-bionetworks/synapse-client'\nimport { useCallback } from 'react'\nimport {\n OPEN_CURATOR_ERROR_TITLE,\n OPEN_CURATOR_UNAUTHORIZED_ERROR_MESSAGE,\n} from '../utils/constants'\nimport { getGridSourceIdForTask } from '../utils/getGridSourceIdForTask'\nimport useGridSessionForCurationTask from './useGridSessionForCurationTask'\nimport useGridSessionForCurationTask_legacy from './useGridSessionForCurationTask_legacy'\nimport useMarkCurationTaskInProgress from './useMarkCurationTaskInProgress'\nimport { getLinkToGridSession } from '@/utils/functions/getSynapseWebClientLink'\nimport { instanceOfGridSupportedTaskProperties } from '../utils/types'\n\ntype UseOpenCuratorFromTaskButtonReturn = {\n isLoading: boolean\n isPending: boolean\n hasPermission?: boolean\n onClick: () => void\n}\n\nfunction openGridSessionInNewWindow(gridSessionId: string, taskId: number) {\n const gridUrl = getLinkToGridSession(gridSessionId, taskId)\n window.open(gridUrl, '_blank', 'noopener')\n}\n\nexport default function useOpenCuratorFromTaskButton(\n taskBundle: TaskBundle,\n): UseOpenCuratorFromTaskButtonReturn {\n const curationTask = taskBundle.task!\n\n const taskProperties = curationTask.taskProperties\n if (!instanceOfGridSupportedTaskProperties(taskProperties)) {\n throw new Error(\n `Task properties are not supported for GridSession creation: ${taskProperties?.concreteType}`,\n )\n }\n\n const suggestedAuthorizationMode =\n taskProperties != null && 'suggestedAuthorizationMode' in taskProperties\n ? taskProperties.suggestedAuthorizationMode\n : undefined\n\n const useTaskLinkedSession = suggestedAuthorizationMode != null\n\n const {\n mutateAsync: getOrCreateLegacyGridSessionForUnassignedTask,\n isPending: legacyOpenGridIsPending,\n } = useGridSessionForCurationTask_legacy()\n\n const {\n mutateAsync: getOrCreateTaskLinkedGridSession,\n isPending: taskLinkedOpenGridIsPending,\n } = useGridSessionForCurationTask()\n\n const { mutateAsync: markTaskInProgress } = useMarkCurationTaskInProgress()\n\n const gridSourceEntityId = getGridSourceIdForTask(taskProperties)\n const {\n data: sourceEntityPermissions,\n isLoading: isLoadingEntityPermissions,\n } = useGetEntityPermissions(gridSourceEntityId)\n\n const hasPermission = sourceEntityPermissions?.canView\n\n const openNewOrExistingCuratorSession = useCallback(async () => {\n let gridSession: GridSession\n try {\n if (useTaskLinkedSession) {\n const result = await getOrCreateTaskLinkedGridSession(taskBundle)\n gridSession = result.gridSession\n } else {\n gridSession = await getOrCreateLegacyGridSessionForUnassignedTask({\n curationTask,\n })\n }\n } catch (error) {\n if (error instanceof SynapseClientError && error.status === 403) {\n console.error(error)\n displayToast(OPEN_CURATOR_UNAUTHORIZED_ERROR_MESSAGE, 'danger', {\n title: OPEN_CURATOR_ERROR_TITLE,\n })\n } else {\n console.error('Error opening Curator for curation task', error)\n const errorMessage =\n error instanceof Error ? error.message : String(error)\n displayToast(errorMessage, 'danger', {\n title: OPEN_CURATOR_ERROR_TITLE,\n })\n }\n return\n }\n\n openGridSessionInNewWindow(gridSession.sessionId!, curationTask.taskId!)\n\n // Recording that work has begun is bookkeeping that follows the window opening, so it must not\n // delay the popup, hold the button in a pending state, or surface as a failure to open Curator.\n try {\n await markTaskInProgress(curationTask.taskId!)\n } catch (error) {\n console.error('Failed to mark curation task as in progress', error)\n }\n }, [\n curationTask,\n taskBundle,\n useTaskLinkedSession,\n getOrCreateLegacyGridSessionForUnassignedTask,\n getOrCreateTaskLinkedGridSession,\n markTaskInProgress,\n ])\n\n const handleClickOpenCurator = useCallback(() => {\n void openNewOrExistingCuratorSession()\n }, [openNewOrExistingCuratorSession])\n\n return {\n hasPermission,\n isLoading: isLoadingEntityPermissions,\n isPending: useTaskLinkedSession\n ? taskLinkedOpenGridIsPending\n : legacyOpenGridIsPending,\n onClick: handleClickOpenCurator,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AA0BA,SAAS,EAA2B,GAAuB,GAAgB;CACzE,IAAM,IAAU,EAAqB,GAAe,CAAM;CAC1D,OAAO,KAAK,GAAS,UAAU,UAAU;AAC3C;AAEA,SAAwB,EACtB,GACoC;CACpC,IAAM,IAAe,EAAW,MAE1B,IAAiB,EAAa;CACpC,IAAI,CAAC,EAAsC,CAAc,GACvD,MAAU,MACR,+DAA+D,GAAgB,cACjF;CAQF,IAAM,KAJJ,KAAkB,QAAQ,gCAAgC,IACtD,EAAe,6BACf,KAAA,MAEqD,MAErD,EACJ,aAAa,GACb,WAAW,MACT,EAAqC,GAEnC,EACJ,aAAa,GACb,WAAW,MACT,EAA8B,GAE5B,EAAE,aAAa,MAAuB,EAA8B,GAGpE,EACJ,MAAM,GACN,WAAW,MACT,EAJuB,EAAuB,CAItB,CAAkB,GAExC,IAAgB,GAAyB,SAEzC,IAAkC,EAAY,YAAY;EAC9D,IAAI;EACJ,IAAI;GACF,AAIE,IAJE,KAEY,MADO,EAAiC,CAAU,GAC3C,cAEP,MAAM,EAA8C,EAChE,gBACF,CAAC;EAEL,SAAS,GAAO;GACd,AAAI,aAAiB,KAAsB,EAAM,WAAW,OAC1D,QAAQ,MAAM,CAAK,GACnB,EAAa,GAAyC,UAAU,EAC9D,OAAO,EACT,CAAC,MAED,QAAQ,MAAM,2CAA2C,CAAK,GAG9D,EADE,aAAiB,QAAQ,EAAM,UAAU,OAAO,CAAK,GAC5B,UAAU,EACnC,OAAO,EACT,CAAC;GAEH;EACF;EAEA,EAA2B,EAAY,WAAY,EAAa,MAAO;EAIvE,IAAI;GACF,MAAM,EAAmB,EAAa,MAAO;EAC/C,SAAS,GAAO;GACd,QAAQ,MAAM,+CAA+C,CAAK;EACpE;CACF,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,GAEK,IAAyB,QAAkB;EAC/C,EAAqC;CACvC,GAAG,CAAC,CAA+B,CAAC;CAEpC,OAAO;EACL;EACA,WAAW;EACX,WAAW,IACP,IACA;EACJ,SAAS;CACX;AACF"}
@@ -0,0 +1,16 @@
1
+ import { FormTemplate } from '@sage-bionetworks/synapse-client';
2
+ /**
3
+ * Renders the a Data Access schema as a 2-step form:
4
+ * Research Use → Agreements
5
+ */
6
+ export declare const mockGenomicsTemplate: FormTemplate;
7
+ /**
8
+ * Renders the Data Access schema as a 2-step form:
9
+ * Project Details → Compliance.
10
+ *
11
+ * Demonstrates a file-upload field with a downloadable template, and a Renewal-only field
12
+ * (`irbApprovalNumber`, gated in `mockClinicalSchema` via `x-synapse-submissionContext`).
13
+ */
14
+ export declare const mockClinicalTemplate: FormTemplate;
15
+ export declare const mockFormTemplates: FormTemplate[];
16
+ //# sourceMappingURL=mockFormTemplates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockFormTemplates.d.ts","sourceRoot":"","sources":["../../../src/mocks/accessRequirement/mockFormTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAI/D;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAmClC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAsClC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,YAAY,EAG3C,CAAA"}
@@ -0,0 +1,63 @@
1
+ import { MOCK_FILE_HANDLE_ID as e } from "../mock_file_handle.js";
2
+ import { mockClinicalSchema as t, mockGenomicsSchema as n } from "./mockJsonSchemas.js";
3
+ //#region src/mocks/accessRequirement/mockFormTemplates.ts
4
+ var r = {
5
+ id: "template-1",
6
+ name: "Genomics DAR",
7
+ etag: "etag-template-1",
8
+ versionNumber: 1,
9
+ schema$id: n.$id,
10
+ steps: [{
11
+ title: "Research Use",
12
+ description: "Describe your research project and how you intend to use the data.",
13
+ fields: [{
14
+ schemaPath: "/intendedDataUse",
15
+ uiDefinition: {
16
+ "ui:widget": "textarea",
17
+ "ui:options": { rows: 5 }
18
+ },
19
+ isPublic: !0
20
+ }]
21
+ }, {
22
+ title: "Agreements",
23
+ description: "Review and agree to the terms and conditions for accessing this data.",
24
+ fields: [{
25
+ schemaPath: "/agreeToTerms",
26
+ uiDefinition: {}
27
+ }]
28
+ }],
29
+ deprecated: !1
30
+ }, i = {
31
+ id: "template-2",
32
+ name: "Clinical Trial DAR",
33
+ etag: "etag-template-2",
34
+ versionNumber: 1,
35
+ schema$id: t.$id,
36
+ steps: [{
37
+ title: "Project Details",
38
+ fields: [{
39
+ schemaPath: "/projectTitle",
40
+ uiDefinition: {},
41
+ isPublic: !0
42
+ }, {
43
+ schemaPath: "/dataUsePurpose",
44
+ uiDefinition: {}
45
+ }]
46
+ }, {
47
+ title: "Compliance",
48
+ description: "Provide any required compliance documentation.",
49
+ fields: [{
50
+ schemaPath: "/irbApprovalNumber",
51
+ uiDefinition: {}
52
+ }, {
53
+ schemaPath: "/signedDataUseAgreement",
54
+ uiDefinition: {},
55
+ templateFileHandleId: e
56
+ }]
57
+ }],
58
+ deprecated: !1
59
+ }, a = [r, i];
60
+ //#endregion
61
+ export { i as mockClinicalTemplate, a as mockFormTemplates, r as mockGenomicsTemplate };
62
+
63
+ //# sourceMappingURL=mockFormTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockFormTemplates.js","names":[],"sources":["../../../src/mocks/accessRequirement/mockFormTemplates.ts"],"sourcesContent":["import { FormTemplate } from '@sage-bionetworks/synapse-client'\nimport { MOCK_FILE_HANDLE_ID } from '@/mocks/mock_file_handle'\nimport { mockClinicalSchema, mockGenomicsSchema } from './mockJsonSchemas'\n\n/**\n * Renders the a Data Access schema as a 2-step form:\n * Research Use → Agreements\n */\nexport const mockGenomicsTemplate: FormTemplate = {\n id: 'template-1',\n name: 'Genomics DAR',\n etag: 'etag-template-1',\n versionNumber: 1,\n schema$id: mockGenomicsSchema.$id as string,\n steps: [\n {\n title: 'Research Use',\n description:\n 'Describe your research project and how you intend to use the data.',\n fields: [\n {\n schemaPath: '/intendedDataUse',\n uiDefinition: {\n 'ui:widget': 'textarea',\n 'ui:options': { rows: 5 },\n },\n isPublic: true,\n },\n ],\n },\n {\n title: 'Agreements',\n description:\n 'Review and agree to the terms and conditions for accessing this data.',\n fields: [\n {\n schemaPath: '/agreeToTerms',\n uiDefinition: {},\n },\n ],\n },\n ],\n deprecated: false,\n}\n\n/**\n * Renders the Data Access schema as a 2-step form:\n * Project Details → Compliance.\n *\n * Demonstrates a file-upload field with a downloadable template, and a Renewal-only field\n * (`irbApprovalNumber`, gated in `mockClinicalSchema` via `x-synapse-submissionContext`).\n */\nexport const mockClinicalTemplate: FormTemplate = {\n id: 'template-2',\n name: 'Clinical Trial DAR',\n etag: 'etag-template-2',\n versionNumber: 1,\n schema$id: mockClinicalSchema.$id as string,\n steps: [\n {\n title: 'Project Details',\n fields: [\n {\n schemaPath: '/projectTitle',\n uiDefinition: {},\n isPublic: true,\n },\n {\n schemaPath: '/dataUsePurpose',\n uiDefinition: {},\n },\n ],\n },\n {\n title: 'Compliance',\n description: 'Provide any required compliance documentation.',\n fields: [\n {\n schemaPath: '/irbApprovalNumber',\n uiDefinition: {},\n },\n {\n schemaPath: '/signedDataUseAgreement',\n uiDefinition: {},\n templateFileHandleId: MOCK_FILE_HANDLE_ID,\n },\n ],\n },\n ],\n deprecated: false,\n}\n\nexport const mockFormTemplates: FormTemplate[] = [\n mockGenomicsTemplate,\n mockClinicalTemplate,\n]\n"],"mappings":";;;AAQA,IAAa,IAAqC;CAChD,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW,EAAmB;CAC9B,OAAO,CACL;EACE,OAAO;EACP,aACE;EACF,QAAQ,CACN;GACE,YAAY;GACZ,cAAc;IACZ,aAAa;IACb,cAAc,EAAE,MAAM,EAAE;GAC1B;GACA,UAAU;EACZ,CACF;CACF,GACA;EACE,OAAO;EACP,aACE;EACF,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,CACF;CACF,CACF;CACA,YAAY;AACd,GASa,IAAqC;CAChD,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW,EAAmB;CAC9B,OAAO,CACL;EACE,OAAO;EACP,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;GACf,UAAU;EACZ,GACA;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,CACF;CACF,GACA;EACE,OAAO;EACP,aAAa;EACb,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,GACA;GACE,YAAY;GACZ,cAAc,CAAC;GACf,sBAAsB;EACxB,CACF;CACF,CACF;CACA,YAAY;AACd,GAEa,IAAoC,CAC/C,GACA,CACF"}
@@ -0,0 +1,7 @@
1
+ import { JsonSchemaAccessRequirement } from '@sage-bionetworks/synapse-client';
2
+ /** AR 1: Genomics Data Access — references the Genomics FormTemplate. No DUC required. */
3
+ export declare const mockJsonSchemaAR1: JsonSchemaAccessRequirement;
4
+ /** AR 2: Clinical Trial Data Access — references the Clinical Trial FormTemplate. Requires an uploaded DUC. */
5
+ export declare const mockJsonSchemaAR2: JsonSchemaAccessRequirement;
6
+ export declare const mockJsonSchemaAccessRequirements: JsonSchemaAccessRequirement[];
7
+ //# sourceMappingURL=mockJsonSchemaAccessRequirements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockJsonSchemaAccessRequirements.d.ts","sourceRoot":"","sources":["../../../src/mocks/accessRequirement/mockJsonSchemaAccessRequirements.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAE5B,MAAM,kCAAkC,CAAA;AAMzC,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,EAAE,2BAiB/B,CAAA;AAED,+GAA+G;AAC/G,eAAO,MAAM,iBAAiB,EAAE,2BAkB/B,CAAA;AAED,eAAO,MAAM,gCAAgC,EAAE,2BAA2B,EAGzE,CAAA"}
@@ -0,0 +1,47 @@
1
+ import { MOCK_DUC_TEMPLATE_FILE_HANDLE_ID as e } from "../mock_file_handle.js";
2
+ import { JsonSchemaAccessRequirementConcreteTypeEnum as t } from "@sage-bionetworks/synapse-client";
3
+ //#region src/mocks/accessRequirement/mockJsonSchemaAccessRequirements.ts
4
+ var n = (/* @__PURE__ */ new Date()).toISOString(), r = "1234567", i = {
5
+ id: 9e3,
6
+ name: "Genomics Data Access",
7
+ etag: "etag-ar-9000",
8
+ versionNumber: 1,
9
+ createdOn: n,
10
+ modifiedOn: n,
11
+ createdBy: r,
12
+ modifiedBy: r,
13
+ concreteType: t.org_sagebionetworks_repo_model_JsonSchemaAccessRequirement,
14
+ formTemplateRef: {
15
+ templateId: "template-1",
16
+ templateVersionNumber: 1
17
+ },
18
+ expirationPeriod: 31536e6,
19
+ isCertifiedUserRequired: !0,
20
+ isValidatedProfileRequired: !1,
21
+ isTwoFaRequired: !1,
22
+ isDUCRequired: !1
23
+ }, a = {
24
+ id: 9001,
25
+ name: "Clinical Trial Data Access",
26
+ etag: "etag-ar-9001",
27
+ versionNumber: 1,
28
+ createdOn: n,
29
+ modifiedOn: n,
30
+ createdBy: r,
31
+ modifiedBy: r,
32
+ concreteType: t.org_sagebionetworks_repo_model_JsonSchemaAccessRequirement,
33
+ formTemplateRef: {
34
+ templateId: "template-2",
35
+ templateVersionNumber: 1
36
+ },
37
+ expirationPeriod: 15768e6,
38
+ isCertifiedUserRequired: !0,
39
+ isValidatedProfileRequired: !0,
40
+ isTwoFaRequired: !0,
41
+ isDUCRequired: !0,
42
+ ducTemplateFileHandleId: e
43
+ }, o = [i, a];
44
+ //#endregion
45
+ export { i as mockJsonSchemaAR1, a as mockJsonSchemaAR2, o as mockJsonSchemaAccessRequirements };
46
+
47
+ //# sourceMappingURL=mockJsonSchemaAccessRequirements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockJsonSchemaAccessRequirements.js","names":[],"sources":["../../../src/mocks/accessRequirement/mockJsonSchemaAccessRequirements.ts"],"sourcesContent":["import {\n JsonSchemaAccessRequirement,\n JsonSchemaAccessRequirementConcreteTypeEnum,\n} from '@sage-bionetworks/synapse-client'\nimport { MOCK_DUC_TEMPLATE_FILE_HANDLE_ID } from '@/mocks/mock_file_handle'\n\nconst now = new Date().toISOString()\nconst actUserId = '1234567'\n\n/** AR 1: Genomics Data Access — references the Genomics FormTemplate. No DUC required. */\nexport const mockJsonSchemaAR1: JsonSchemaAccessRequirement = {\n id: 9000,\n name: 'Genomics Data Access',\n etag: 'etag-ar-9000',\n versionNumber: 1,\n createdOn: now,\n modifiedOn: now,\n createdBy: actUserId,\n modifiedBy: actUserId,\n concreteType:\n JsonSchemaAccessRequirementConcreteTypeEnum.org_sagebionetworks_repo_model_JsonSchemaAccessRequirement,\n formTemplateRef: { templateId: 'template-1', templateVersionNumber: 1 },\n expirationPeriod: 31536000000, // 1 year\n isCertifiedUserRequired: true,\n isValidatedProfileRequired: false,\n isTwoFaRequired: false,\n isDUCRequired: false,\n}\n\n/** AR 2: Clinical Trial Data Access — references the Clinical Trial FormTemplate. Requires an uploaded DUC. */\nexport const mockJsonSchemaAR2: JsonSchemaAccessRequirement = {\n id: 9001,\n name: 'Clinical Trial Data Access',\n etag: 'etag-ar-9001',\n versionNumber: 1,\n createdOn: now,\n modifiedOn: now,\n createdBy: actUserId,\n modifiedBy: actUserId,\n concreteType:\n JsonSchemaAccessRequirementConcreteTypeEnum.org_sagebionetworks_repo_model_JsonSchemaAccessRequirement,\n formTemplateRef: { templateId: 'template-2', templateVersionNumber: 1 },\n expirationPeriod: 15768000000, // 6 months\n isCertifiedUserRequired: true,\n isValidatedProfileRequired: true,\n isTwoFaRequired: true,\n isDUCRequired: true,\n ducTemplateFileHandleId: MOCK_DUC_TEMPLATE_FILE_HANDLE_ID,\n}\n\nexport const mockJsonSchemaAccessRequirements: JsonSchemaAccessRequirement[] = [\n mockJsonSchemaAR1,\n mockJsonSchemaAR2,\n]\n"],"mappings":";;;AAMA,IAAM,qBAAM,IAAI,KAAK,GAAE,YAAY,GAC7B,IAAY,WAGL,IAAiD;CAC5D,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW;CACX,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,cACE,EAA4C;CAC9C,iBAAiB;EAAE,YAAY;EAAc,uBAAuB;CAAE;CACtE,kBAAkB;CAClB,yBAAyB;CACzB,4BAA4B;CAC5B,iBAAiB;CACjB,eAAe;AACjB,GAGa,IAAiD;CAC5D,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW;CACX,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,cACE,EAA4C;CAC9C,iBAAiB;EAAE,YAAY;EAAc,uBAAuB;CAAE;CACtE,kBAAkB;CAClB,yBAAyB;CACzB,4BAA4B;CAC5B,iBAAiB;CACjB,eAAe;CACf,yBAAyB;AAC3B,GAEa,IAAkE,CAC7E,GACA,CACF"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Mock JSON Schema registry for the JSON Schema-based Access Requirements demo.
3
+ *
4
+ * Each FormTemplate pins a registered JSON Schema by `$id`. The schema is the
5
+ * data contract — it owns property types, validation rules, and which properties
6
+ * are required.
7
+ *
8
+ * The FormTemplateEditor lets ACT edit the schema body alongside the template in
9
+ * a single UI; saving is conceptually a write to both the schema registry and
10
+ * the template service.
11
+ */
12
+ import { RJSFSchema } from '@rjsf/utils';
13
+ /** Genomics DAR data contract — all fields required. */
14
+ export declare const mockGenomicsSchema: RJSFSchema;
15
+ /**
16
+ * Clinical Trial DAR data contract — includes a file upload and a Renewal-only field
17
+ * (`irbApprovalNumber`), gated behind an `x-synapse-submissionContext` conditional.
18
+ */
19
+ export declare const mockClinicalSchema: RJSFSchema;
20
+ /**
21
+ * Map from `$id` (with version) to the JSON Schema body. In the real system
22
+ * this is served by the registered JSON Schema service.
23
+ */
24
+ export declare const mockJsonSchemaRegistry: Record<string, RJSFSchema>;
25
+ /** Look up a registered JSON Schema body by its `$id`. */
26
+ export declare function getMockJsonSchemaById(schema$id: string): RJSFSchema | undefined;
27
+ //# sourceMappingURL=mockJsonSchemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockJsonSchemas.d.ts","sourceRoot":"","sources":["../../../src/mocks/accessRequirement/mockJsonSchemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,EAAE,UAuBhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,UAsDhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAG7D,CAAA;AAED,0DAA0D;AAC1D,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAChB,UAAU,GAAG,SAAS,CAExB"}
@@ -0,0 +1,83 @@
1
+ import { SUBMISSION_CONTEXT_PROPERTY as e } from "../../utils/jsonschema/submissionContext.js";
2
+ import { DataAccessRequestType as t } from "@sage-bionetworks/synapse-client";
3
+ //#region src/mocks/accessRequirement/mockJsonSchemas.ts
4
+ var n = {
5
+ $id: "org.sagebionetworks.dar.genomics-1.0.0",
6
+ type: "object",
7
+ title: "Genomics Data Access Request",
8
+ properties: {
9
+ intendedDataUse: {
10
+ type: "string",
11
+ title: "Intended Data Use Statement",
12
+ description: "Describe in detail how you intend to use the requested data."
13
+ },
14
+ agreeToTerms: {
15
+ type: "boolean",
16
+ title: "Terms and Conditions",
17
+ description: "I agree to abide by all terms and conditions for accessing this data."
18
+ },
19
+ [e]: {
20
+ type: "string",
21
+ enum: [t.REQUEST, t.RENEWAL]
22
+ }
23
+ },
24
+ required: [
25
+ "intendedDataUse",
26
+ "agreeToTerms",
27
+ e
28
+ ]
29
+ }, r = {
30
+ $id: "org.sagebionetworks.dar.clinical-1.0.0",
31
+ type: "object",
32
+ title: "Clinical Trial Data Access Request",
33
+ properties: {
34
+ projectTitle: {
35
+ type: "string",
36
+ title: "Project Title",
37
+ description: "The title of the research project."
38
+ },
39
+ dataUsePurpose: {
40
+ type: "string",
41
+ title: "Data Use Purpose",
42
+ description: "Select the primary purpose for your use of this data.",
43
+ enum: [
44
+ "Research",
45
+ "Commercial",
46
+ "Educational"
47
+ ]
48
+ },
49
+ signedDataUseAgreement: {
50
+ type: "number",
51
+ title: "Signed Data Use Agreement",
52
+ description: "Upload a signed copy of the Data Use Agreement. A template is available for download.",
53
+ format: "synapse-filehandle-id"
54
+ },
55
+ [e]: {
56
+ type: "string",
57
+ enum: [t.REQUEST, t.RENEWAL]
58
+ }
59
+ },
60
+ required: [
61
+ "projectTitle",
62
+ "signedDataUseAgreement",
63
+ e
64
+ ],
65
+ allOf: [{
66
+ if: { properties: { [e]: { const: t.RENEWAL } } },
67
+ then: { properties: { irbApprovalNumber: {
68
+ type: "string",
69
+ title: "IRB Approval Number",
70
+ description: "If your institution requires IRB approval, provide the approval number."
71
+ } } }
72
+ }]
73
+ }, i = {
74
+ [n.$id]: n,
75
+ [r.$id]: r
76
+ };
77
+ function a(e) {
78
+ return i[e];
79
+ }
80
+ //#endregion
81
+ export { a as getMockJsonSchemaById, r as mockClinicalSchema, n as mockGenomicsSchema, i as mockJsonSchemaRegistry };
82
+
83
+ //# sourceMappingURL=mockJsonSchemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockJsonSchemas.js","names":[],"sources":["../../../src/mocks/accessRequirement/mockJsonSchemas.ts"],"sourcesContent":["/**\n * Mock JSON Schema registry for the JSON Schema-based Access Requirements demo.\n *\n * Each FormTemplate pins a registered JSON Schema by `$id`. The schema is the\n * data contract — it owns property types, validation rules, and which properties\n * are required.\n *\n * The FormTemplateEditor lets ACT edit the schema body alongside the template in\n * a single UI; saving is conceptually a write to both the schema registry and\n * the template service.\n */\n\nimport { RJSFSchema } from '@rjsf/utils'\nimport { DataAccessRequestType } from '@sage-bionetworks/synapse-client'\nimport { SUBMISSION_CONTEXT_PROPERTY } from '@/utils/jsonschema/submissionContext'\n\n/** Genomics DAR data contract — all fields required. */\nexport const mockGenomicsSchema: RJSFSchema = {\n $id: 'org.sagebionetworks.dar.genomics-1.0.0',\n type: 'object',\n title: 'Genomics Data Access Request',\n properties: {\n intendedDataUse: {\n type: 'string',\n title: 'Intended Data Use Statement',\n description:\n 'Describe in detail how you intend to use the requested data.',\n },\n agreeToTerms: {\n type: 'boolean',\n title: 'Terms and Conditions',\n description:\n 'I agree to abide by all terms and conditions for accessing this data.',\n },\n [SUBMISSION_CONTEXT_PROPERTY]: {\n type: 'string',\n enum: [DataAccessRequestType.REQUEST, DataAccessRequestType.RENEWAL],\n },\n },\n required: ['intendedDataUse', 'agreeToTerms', SUBMISSION_CONTEXT_PROPERTY],\n}\n\n/**\n * Clinical Trial DAR data contract — includes a file upload and a Renewal-only field\n * (`irbApprovalNumber`), gated behind an `x-synapse-submissionContext` conditional.\n */\nexport const mockClinicalSchema: RJSFSchema = {\n $id: 'org.sagebionetworks.dar.clinical-1.0.0',\n type: 'object',\n title: 'Clinical Trial Data Access Request',\n properties: {\n projectTitle: {\n type: 'string',\n title: 'Project Title',\n description: 'The title of the research project.',\n },\n dataUsePurpose: {\n type: 'string',\n title: 'Data Use Purpose',\n description: 'Select the primary purpose for your use of this data.',\n enum: ['Research', 'Commercial', 'Educational'],\n },\n signedDataUseAgreement: {\n type: 'number',\n title: 'Signed Data Use Agreement',\n description:\n 'Upload a signed copy of the Data Use Agreement. A template is available for download.',\n format: 'synapse-filehandle-id',\n },\n [SUBMISSION_CONTEXT_PROPERTY]: {\n type: 'string',\n enum: [DataAccessRequestType.REQUEST, DataAccessRequestType.RENEWAL],\n },\n },\n required: [\n 'projectTitle',\n 'signedDataUseAgreement',\n SUBMISSION_CONTEXT_PROPERTY,\n ],\n allOf: [\n {\n if: {\n properties: {\n [SUBMISSION_CONTEXT_PROPERTY]: {\n const: DataAccessRequestType.RENEWAL,\n },\n },\n },\n then: {\n properties: {\n irbApprovalNumber: {\n type: 'string',\n title: 'IRB Approval Number',\n description:\n 'If your institution requires IRB approval, provide the approval number.',\n },\n },\n },\n },\n ],\n}\n\n/**\n * Map from `$id` (with version) to the JSON Schema body. In the real system\n * this is served by the registered JSON Schema service.\n */\nexport const mockJsonSchemaRegistry: Record<string, RJSFSchema> = {\n [mockGenomicsSchema.$id as string]: mockGenomicsSchema,\n [mockClinicalSchema.$id as string]: mockClinicalSchema,\n}\n\n/** Look up a registered JSON Schema body by its `$id`. */\nexport function getMockJsonSchemaById(\n schema$id: string,\n): RJSFSchema | undefined {\n return mockJsonSchemaRegistry[schema$id]\n}\n"],"mappings":";;;AAiBA,IAAa,IAAiC;CAC5C,KAAK;CACL,MAAM;CACN,OAAO;CACP,YAAY;EACV,iBAAiB;GACf,MAAM;GACN,OAAO;GACP,aACE;EACJ;EACA,cAAc;GACZ,MAAM;GACN,OAAO;GACP,aACE;EACJ;GACC,IAA8B;GAC7B,MAAM;GACN,MAAM,CAAC,EAAsB,SAAS,EAAsB,OAAO;EACrE;CACF;CACA,UAAU;EAAC;EAAmB;EAAgB;CAA2B;AAC3E,GAMa,IAAiC;CAC5C,KAAK;CACL,MAAM;CACN,OAAO;CACP,YAAY;EACV,cAAc;GACZ,MAAM;GACN,OAAO;GACP,aAAa;EACf;EACA,gBAAgB;GACd,MAAM;GACN,OAAO;GACP,aAAa;GACb,MAAM;IAAC;IAAY;IAAc;GAAa;EAChD;EACA,wBAAwB;GACtB,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ;EACV;GACC,IAA8B;GAC7B,MAAM;GACN,MAAM,CAAC,EAAsB,SAAS,EAAsB,OAAO;EACrE;CACF;CACA,UAAU;EACR;EACA;EACA;CACF;CACA,OAAO,CACL;EACE,IAAI,EACF,YAAY,GACT,IAA8B,EAC7B,OAAO,EAAsB,QAC/B,EACF,EACF;EACA,MAAM,EACJ,YAAY,EACV,mBAAmB;GACjB,MAAM;GACN,OAAO;GACP,aACE;EACJ,EACF,EACF;CACF,CACF;AACF,GAMa,IAAqD;EAC/D,EAAmB,MAAgB;EACnC,EAAmB,MAAgB;AACtC;AAGA,SAAgB,EACd,GACwB;CACxB,OAAO,EAAuB;AAChC"}