synapse-react-client 4.0.31 → 4.0.33

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 (276) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
  3. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +48 -36
  4. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  5. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
  6. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +217 -143
  7. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  8. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.d.ts.map +1 -1
  9. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js +28 -24
  10. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
  11. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
  12. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +180 -94
  13. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  14. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.d.ts +3 -0
  15. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.d.ts.map +1 -0
  16. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.js +9 -0
  17. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.js.map +1 -0
  18. package/dist/components/CopyToClipboardIcon.d.ts +2 -1
  19. package/dist/components/CopyToClipboardIcon.d.ts.map +1 -1
  20. package/dist/components/CopyToClipboardIcon.js +6 -6
  21. package/dist/components/CopyToClipboardIcon.js.map +1 -1
  22. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  23. package/dist/components/DataGrid/SynapseGrid.js +230 -215
  24. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  25. package/dist/components/DataGrid/SyncGridWithSourceButton.js +3 -3
  26. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
  27. package/dist/components/DataGrid/columns/DateTimeColumn.js +1 -1
  28. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  29. package/dist/components/DataGrid/components/ReorderColumnsButton.d.ts +10 -0
  30. package/dist/components/DataGrid/components/ReorderColumnsButton.d.ts.map +1 -0
  31. package/dist/components/DataGrid/components/ReorderColumnsButton.js +37 -0
  32. package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -0
  33. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts +12 -0
  34. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -0
  35. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +93 -0
  36. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -0
  37. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +1 -1
  38. package/dist/components/DataGrid/utils/applyModelChange.d.ts +3 -0
  39. package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
  40. package/dist/components/DataGrid/utils/applyModelChange.js +5 -0
  41. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  42. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.d.ts +8 -0
  43. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.d.ts.map +1 -0
  44. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.js +14 -0
  45. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.js.map +1 -0
  46. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +1 -1
  47. package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
  48. package/dist/components/EntityFinder/details/view/DetailsView.js +119 -122
  49. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  50. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.d.ts +5 -1
  51. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.d.ts.map +1 -1
  52. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +7 -7
  53. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  54. package/dist/components/EntityLink.d.ts +2 -0
  55. package/dist/components/EntityLink.d.ts.map +1 -1
  56. package/dist/components/EntityLink.js +15 -11
  57. package/dist/components/EntityLink.js.map +1 -1
  58. package/dist/components/EntitySidebar/AccessAndPermissions.css +1 -0
  59. package/dist/components/EntitySidebar/AccessAndPermissions.d.ts +7 -0
  60. package/dist/components/EntitySidebar/AccessAndPermissions.d.ts.map +1 -0
  61. package/dist/components/EntitySidebar/AccessAndPermissions.js +75 -0
  62. package/dist/components/EntitySidebar/AccessAndPermissions.js.map +1 -0
  63. package/dist/components/EntitySidebar/AccessAndPermissions.module.js +15 -0
  64. package/dist/components/EntitySidebar/AccessAndPermissions.module.js.map +1 -0
  65. package/dist/components/EntitySidebar/AccessAndPermissions.module.scss +58 -0
  66. package/dist/components/EntitySidebar/EntitySidebar.css +1 -1
  67. package/dist/components/EntitySidebar/EntitySidebar.d.ts.map +1 -1
  68. package/dist/components/EntitySidebar/EntitySidebar.js +54 -42
  69. package/dist/components/EntitySidebar/EntitySidebar.js.map +1 -1
  70. package/dist/components/EntitySidebar/EntitySidebar.module.js +10 -11
  71. package/dist/components/EntitySidebar/EntitySidebar.module.js.map +1 -1
  72. package/dist/components/EntitySidebar/EntitySidebar.module.scss +6 -13
  73. package/dist/components/EntityTreeTable/EntityTreeTable.css +1 -1
  74. package/dist/components/EntityTreeTable/EntityTreeTable.module.js +1 -1
  75. package/dist/components/EntityTreeTable/EntityTreeTable.module.js.map +1 -1
  76. package/dist/components/EntityTreeTable/EntityTreeTable.module.scss +18 -0
  77. package/dist/components/EntityTreeTable/components/ColumnHeaders.d.ts.map +1 -1
  78. package/dist/components/EntityTreeTable/components/ColumnHeaders.js +20 -7
  79. package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
  80. package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
  81. package/dist/components/EntityTreeTable/components/EntityNameCell.js +3 -1
  82. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  83. package/dist/components/EntityTreeTable/components/EntityTreeTableView.d.ts.map +1 -1
  84. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js +4 -1
  85. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
  86. package/dist/components/EntityTreeTable/components/IdColumnHeader.d.ts.map +1 -1
  87. package/dist/components/EntityTreeTable/components/IdColumnHeader.js +3 -1
  88. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  89. package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts.map +1 -1
  90. package/dist/components/EntityTreeTable/hooks/useTableColumns.js +24 -19
  91. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  92. package/dist/components/Forum/DiscussionEmpty.css +1 -1
  93. package/dist/components/Forum/DiscussionEmpty.module.js +4 -4
  94. package/dist/components/Forum/DiscussionEmpty.module.js.map +1 -1
  95. package/dist/components/Forum/DiscussionEmpty.module.scss +3 -6
  96. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.css +1 -0
  97. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.d.ts +29 -0
  98. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.d.ts.map +1 -0
  99. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.js +229 -0
  100. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.js.map +1 -0
  101. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.js +9 -0
  102. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.js.map +1 -0
  103. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.scss +19 -0
  104. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.d.ts +23 -0
  105. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.d.ts.map +1 -0
  106. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.js +39 -0
  107. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.js.map +1 -0
  108. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.d.ts +14 -0
  109. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.d.ts.map +1 -0
  110. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.js +12 -0
  111. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.js.map +1 -0
  112. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.d.ts +17 -0
  113. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.d.ts.map +1 -0
  114. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.js +8 -0
  115. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.js.map +1 -0
  116. package/dist/components/JsonSchema/JsonSchemaPicker/index.d.ts +6 -0
  117. package/dist/components/JsonSchema/JsonSchemaPicker/index.d.ts.map +1 -0
  118. package/dist/components/JsonSchema/JsonSchemaPicker/index.js +4 -0
  119. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.d.ts +20 -0
  120. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.d.ts.map +1 -0
  121. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.js +25 -0
  122. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.js.map +1 -0
  123. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.d.ts +35 -0
  124. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.d.ts.map +1 -0
  125. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.js +60 -0
  126. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.js.map +1 -0
  127. package/dist/components/ProjectInfo/ProjectInfo.css +1 -1
  128. package/dist/components/ProjectInfo/ProjectInfo.module.js +5 -5
  129. package/dist/components/ProjectInfo/ProjectInfo.module.js.map +1 -1
  130. package/dist/components/ProjectInfo/ProjectInfo.module.scss +2 -4
  131. package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts.map +1 -1
  132. package/dist/components/ProjectInfo/ProjectInfoPopover.js +17 -16
  133. package/dist/components/ProjectInfo/ProjectInfoPopover.js.map +1 -1
  134. package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts.map +1 -1
  135. package/dist/components/ProjectStorage/ProjectDataAvailability.js +16 -16
  136. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  137. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
  138. package/dist/components/ProvenanceGraph/ProvenanceGraph.js +95 -95
  139. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  140. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js +2 -2
  141. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts.map +1 -1
  142. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js +116 -91
  143. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  144. package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
  145. package/dist/components/SynapseChat/SynapseChat.js +41 -41
  146. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  147. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +3 -2
  148. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  149. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  150. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.css +1 -1
  151. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.d.ts.map +1 -1
  152. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.js +0 -7
  153. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.js.map +1 -1
  154. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.js +2 -2
  155. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.js.map +1 -1
  156. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.scss +12 -2
  157. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.css +1 -1
  158. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.js +3 -3
  159. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.js.map +1 -1
  160. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.scss +5 -1
  161. package/dist/components/TanStackTable/ColumnHeader.d.ts +7 -0
  162. package/dist/components/TanStackTable/ColumnHeader.d.ts.map +1 -1
  163. package/dist/components/TanStackTable/ColumnHeader.js +10 -9
  164. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  165. package/dist/components/TanStackTable/StyledVirtualTanStackTable.d.ts +8 -0
  166. package/dist/components/TanStackTable/StyledVirtualTanStackTable.d.ts.map +1 -1
  167. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js +31 -22
  168. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
  169. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.d.ts +21 -0
  170. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.d.ts.map +1 -0
  171. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.js +22 -0
  172. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.js.map +1 -0
  173. package/dist/components/entity/metadata/AnnotationsTable.js +2 -2
  174. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  175. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.d.ts.map +1 -1
  176. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js +8 -8
  177. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
  178. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
  179. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  180. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +22 -22
  181. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  182. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
  183. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +62 -68
  184. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  185. package/dist/components/styled/StyledTableContainer.d.ts +1 -0
  186. package/dist/components/styled/StyledTableContainer.d.ts.map +1 -1
  187. package/dist/components/styled/StyledTableContainer.js +3 -3
  188. package/dist/components/styled/StyledTableContainer.js.map +1 -1
  189. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js +1 -1
  190. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js.map +1 -1
  191. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  192. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +131 -131
  193. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  194. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts.map +1 -1
  195. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js +21 -18
  196. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js.map +1 -1
  197. package/dist/features/entity/metadata-task/utils/dueDate.d.ts +1 -1
  198. package/dist/features/entity/metadata-task/utils/dueDate.js.map +1 -1
  199. package/dist/mocks/eDuc/mockEDucTemplates.d.ts +7 -0
  200. package/dist/mocks/eDuc/mockEDucTemplates.d.ts.map +1 -0
  201. package/dist/mocks/eDuc/mockEDucTemplates.js +18 -0
  202. package/dist/mocks/eDuc/mockEDucTemplates.js.map +1 -0
  203. package/dist/mocks/jsonschema/mockJsonSchemaListing.d.ts +31 -0
  204. package/dist/mocks/jsonschema/mockJsonSchemaListing.d.ts.map +1 -0
  205. package/dist/mocks/jsonschema/mockJsonSchemaListing.js +101 -0
  206. package/dist/mocks/jsonschema/mockJsonSchemaListing.js.map +1 -0
  207. package/dist/mocks/msw/handlers/eDucTemplateHandlers.d.ts +2 -0
  208. package/dist/mocks/msw/handlers/eDucTemplateHandlers.d.ts.map +1 -0
  209. package/dist/mocks/msw/handlers/eDucTemplateHandlers.js +14 -0
  210. package/dist/mocks/msw/handlers/eDucTemplateHandlers.js.map +1 -0
  211. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.d.ts +8 -0
  212. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.d.ts.map +1 -0
  213. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.js +30 -0
  214. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.js.map +1 -0
  215. package/dist/mocks/msw/handlers.d.ts.map +1 -1
  216. package/dist/mocks/msw/handlers.js +55 -51
  217. package/dist/mocks/msw/handlers.js.map +1 -1
  218. package/dist/style/abstracts/_cssVariables.scss +13 -0
  219. package/dist/style/components/entity_finder/_details-view.scss +0 -10
  220. package/dist/style/main.css +1 -1
  221. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  222. package/dist/synapse-client/SynapseClient.js +2 -6
  223. package/dist/synapse-client/SynapseClient.js.map +1 -1
  224. package/dist/synapse-queries/KeyFactory.d.ts +3 -0
  225. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  226. package/dist/synapse-queries/KeyFactory.js +9 -0
  227. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  228. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +3 -3
  229. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  230. package/dist/synapse-queries/dataaccess/useEDuc.js +40 -35
  231. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  232. package/dist/synapse-queries/entity/index.d.ts +0 -2
  233. package/dist/synapse-queries/entity/index.d.ts.map +1 -1
  234. package/dist/synapse-queries/entity/index.js +8 -10
  235. package/dist/synapse-queries/index.d.ts +1 -0
  236. package/dist/synapse-queries/index.d.ts.map +1 -1
  237. package/dist/synapse-queries/index.js +136 -128
  238. package/dist/synapse-queries/index.js.map +1 -1
  239. package/dist/synapse-queries/jsonschema/index.d.ts +6 -0
  240. package/dist/synapse-queries/jsonschema/index.d.ts.map +1 -0
  241. package/dist/synapse-queries/jsonschema/index.js +6 -0
  242. package/dist/synapse-queries/jsonschema/useEntityBoundSchema.d.ts.map +1 -0
  243. package/dist/synapse-queries/{entity → jsonschema}/useEntityBoundSchema.js +1 -1
  244. package/dist/synapse-queries/jsonschema/useEntityBoundSchema.js.map +1 -0
  245. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.d.ts +26 -0
  246. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.d.ts.map +1 -0
  247. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.js +36 -0
  248. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.js.map +1 -0
  249. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.d.ts +8 -0
  250. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.d.ts.map +1 -0
  251. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.js +21 -0
  252. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.js.map +1 -0
  253. package/dist/synapse-queries/jsonschema/useListOrganizations.d.ts +8 -0
  254. package/dist/synapse-queries/jsonschema/useListOrganizations.d.ts.map +1 -0
  255. package/dist/synapse-queries/jsonschema/useListOrganizations.js +22 -0
  256. package/dist/synapse-queries/jsonschema/useListOrganizations.js.map +1 -0
  257. package/dist/synapse-queries/jsonschema/useSchema.d.ts.map +1 -0
  258. package/dist/synapse-queries/{entity → jsonschema}/useSchema.js +1 -1
  259. package/dist/synapse-queries/jsonschema/useSchema.js.map +1 -0
  260. package/dist/testutils/VirtualizedTableTestUtils.js +17 -0
  261. package/dist/testutils/VirtualizedTableTestUtils.js.map +1 -0
  262. package/dist/theme/palette/Palettes.d.ts.map +1 -1
  263. package/dist/theme/palette/Palettes.js +13 -0
  264. package/dist/theme/palette/Palettes.js.map +1 -1
  265. package/dist/tsconfig.build.tsbuildinfo +1 -1
  266. package/dist/utils/APIConstants.d.ts +1 -0
  267. package/dist/utils/APIConstants.d.ts.map +1 -1
  268. package/dist/utils/APIConstants.js +2 -2
  269. package/dist/utils/APIConstants.js.map +1 -1
  270. package/package.json +4 -4
  271. package/dist/synapse-queries/entity/useEntityBoundSchema.d.ts.map +0 -1
  272. package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +0 -1
  273. package/dist/synapse-queries/entity/useSchema.d.ts.map +0 -1
  274. package/dist/synapse-queries/entity/useSchema.js.map +0 -1
  275. /package/dist/synapse-queries/{entity → jsonschema}/useEntityBoundSchema.d.ts +0 -0
  276. /package/dist/synapse-queries/{entity → jsonschema}/useSchema.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"DataAccessRequestAccessorsFilesForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.tsx"],"sourcesContent":["import { NewReleasesOutlined } from '@mui/icons-material'\nimport {\n Alert,\n AlertProps as MuiAlertProps,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Link,\n Stack,\n Typography,\n} from '@mui/material'\nimport { deepEquals } from '@rjsf/utils'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n AccessorChange,\n AccessType,\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n Renewal,\n Request,\n RestrictableObjectType,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useEffect, useState } from 'react'\nimport {\n useGetCurrentUserProfile,\n useGetDataAccessRequestForUpdate,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '../../../../synapse-queries'\nimport { useSynapseContext } from '../../../../utils'\nimport { SynapseErrorBoundary } from '../../../error/ErrorBanner'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport DataAccessRequestAccessorsEditor, {\n DataAccessRequestAccessorsEditorProps,\n} from '../DataAccessRequestAccessorsEditor'\nimport DocumentTemplate from '../DocumentTemplate'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\nimport { UploadDocumentField } from '../UploadDocumentField'\n\nfunction AccessorRequirementHelpText(props: {\n managedACTAccessRequirement: ManagedACTAccessRequirement\n}) {\n const { managedACTAccessRequirement } = props\n let link: string = ''\n let msg: string = ''\n\n if (\n managedACTAccessRequirement.isCertifiedUserRequired &&\n managedACTAccessRequirement.isValidatedProfileRequired\n ) {\n link = 'https://help.synapse.org/docs/User-Types.2007072795.html'\n msg =\n 'All data requesters must be certified users and have a validated user profile.'\n } else if (managedACTAccessRequirement.isCertifiedUserRequired) {\n link =\n 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-CertifiedUsers'\n msg = 'All data requesters must be a certified user.'\n } else if (managedACTAccessRequirement.isValidatedProfileRequired) {\n link =\n 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-ValidatedUsers'\n msg = 'All data requesters must have a validated user profile.'\n }\n return (\n <>\n {managedACTAccessRequirement.isDUCRequired ? (\n <Box sx={{ display: 'flex', gap: 2, alignItems: 'center', py: 1 }}>\n <NewReleasesOutlined sx={{ color: 'error.main' }} />\n <div>\n You must list the Synapse user names of all collaborators listed in\n your Data Use Certificate (DUC).\n </div>\n </Box>\n ) : (\n ''\n )}\n {msg}{' '}\n {link && (\n <Link href={link} target={'_blank'} rel={'noreferrer'}>\n Learn more\n </Link>\n )}\n </>\n )\n}\n\nexport type DataAccessRequestAccessorsFilesFormProps = {\n /**\n * The ID of the object of interest. This corresponds to the subjectId of the {@link CreateSubmissionRequest}\n */\n subjectId: string\n /* The type of the subject */\n subjectType: RestrictableObjectType\n /* The access requirement to which the user is requesting access */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSubmissionCreated: (submissionId: string) => void\n researchProjectId: string\n onHide: () => void\n /* Callback invoked when the user clicks cancel. The unsaved, modified dataAccessRequest is returned so the calling component may prompt the user to save this data */\n onCancel: (modifiedDataAccessRequest: Request | Renewal) => void\n /** Callback invoked when the 'Back' action button is clicked */\n onBackClicked: () => void\n}\n\nexport type AlertProps = {\n key: MuiAlertProps['severity']\n message: string | ReactNode\n}\n\n/**\n * Step 2 of the Data Access Request/Renewal flow prompts the user to\n * - Manage the list of accessors, i.e. Synapse users who will gain, renew, or lose access\n * - Download and upload documents required by the Access Requirement\n * - If a renewal, provide publications and a summary of use statement.\n *\n * The component expects a researchProjectId, which should reference complete researchProject created in Step 1.\n * The user may click a \"Submit\" button, which will save the request and issue a data access submission that references\n * the requestId created/updated in this component.\n */\nexport default function DataAccessRequestAccessorsFilesForm(\n props: DataAccessRequestAccessorsFilesFormProps,\n) {\n const {\n onSubmissionCreated,\n managedACTAccessRequirement,\n subjectId,\n subjectType,\n researchProjectId,\n onCancel,\n onBackClicked,\n } = props\n const { isAuthenticated } = useSynapseContext()\n const { data: user } = useGetCurrentUserProfile({ enabled: isAuthenticated })\n const [alert, setAlert] = useState<AlertProps | undefined>()\n const [accessorChanges, setAccessorChanges] = useState<\n AccessorChange[] | undefined\n >()\n const [summaryOfUse, setSummaryOfUse] = useState<string | undefined>()\n const [publication, setPublication] = useState<string | undefined>()\n\n const { data: dataAccessRequest, isLoading: isLoadingGetDataAccessRequest } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n enabled: isAuthenticated,\n // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n // This call should never fail, so if we run into an error, throwing to an error boundary is acceptable\n throwOnError: true,\n })\n\n const isRenewal =\n dataAccessRequest?.concreteType ===\n 'org.sagebionetworks.repo.model.dataaccess.Renewal'\n\n function onError(e: SynapseClientError) {\n console.log('RequestDataAccessStep2: Error updating form', e)\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n }\n\n const { mutate: submit, isPending: submitDataAccessRequestIsPending } =\n useSubmitDataAccessRequest({\n onSuccess: submission => {\n onSubmissionCreated(submission.submissionId)\n },\n onError: onError,\n })\n\n const {\n mutateAsync: updateRequestAsync,\n isPending: updateDataAccessRequestIsPending,\n } = useUpdateDataAccessRequest({\n onError: onError,\n })\n\n const isLoading =\n isLoadingGetDataAccessRequest ||\n updateDataAccessRequestIsPending ||\n submitDataAccessRequestIsPending\n\n /**\n * This effect comprises a collection of updates we should immediately apply to a data access request.\n */\n useEffect(() => {\n if (dataAccessRequest && user) {\n let shouldUpdate = false\n\n // Attach the researchProjectId to the request\n if (!dataAccessRequest.researchProjectId) {\n dataAccessRequest.researchProjectId = researchProjectId\n shouldUpdate = true\n }\n\n // Add the current user with GAIN_ACCESS to the list of accessors\n const currentUserWithGainAccess: AccessorChange = {\n userId: user.ownerId,\n type: isRenewal ? AccessType.RENEW_ACCESS : AccessType.GAIN_ACCESS,\n }\n if (\n !dataAccessRequest.accessorChanges ||\n !dataAccessRequest.accessorChanges.find(item =>\n deepEquals(item, currentUserWithGainAccess),\n )\n ) {\n dataAccessRequest.accessorChanges = [\n currentUserWithGainAccess,\n ...(dataAccessRequest.accessorChanges || []),\n ]\n shouldUpdate = true\n }\n\n // SWC-5765: Filter out duplicate accessors\n const seen = new Set()\n const uniqueAccessorChanges = dataAccessRequest.accessorChanges.filter(\n accessorChange => {\n return seen.has(accessorChange.userId)\n ? false\n : seen.add(accessorChange.userId)\n },\n )\n if (\n uniqueAccessorChanges.length !==\n dataAccessRequest.accessorChanges.length\n ) {\n dataAccessRequest.accessorChanges = uniqueAccessorChanges\n shouldUpdate = true\n }\n\n if (shouldUpdate) {\n updateRequestAsync(dataAccessRequest)\n }\n }\n }, [\n dataAccessRequest,\n isRenewal,\n researchProjectId,\n updateRequestAsync,\n user,\n ])\n\n /**\n * Fields other than uploaded files are NOT immediately synced with the server. Set local state if these values exist in the\n * fetched object, and no value exists in local state.\n */\n useEffect(() => {\n if (dataAccessRequest) {\n if (dataAccessRequest.accessorChanges && accessorChanges == undefined) {\n setAccessorChanges(dataAccessRequest.accessorChanges)\n }\n if (\n isRenewal &&\n dataAccessRequest.publication &&\n publication == undefined\n ) {\n setPublication(dataAccessRequest.publication)\n }\n if (\n isRenewal &&\n dataAccessRequest.summaryOfUse &&\n summaryOfUse == undefined\n ) {\n setSummaryOfUse(dataAccessRequest.summaryOfUse)\n }\n }\n // Intentionally only re-synchronize state when server state changes\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [dataAccessRequest])\n\n function getDataAccessRequestWithLocalState(): Request | Renewal {\n return {\n ...dataAccessRequest,\n // append local state to the request\n accessorChanges: accessorChanges,\n publication,\n summaryOfUse,\n } as Request | Renewal\n }\n\n async function handleSubmit() {\n if (dataAccessRequest) {\n // Save the request\n const requestObject = await updateRequestAsync(\n getDataAccessRequestWithLocalState(),\n )\n // Create a submission and attach the request\n submit({\n request: {\n requestId: requestObject.id,\n requestEtag: requestObject.etag,\n subjectId: subjectId,\n subjectType: subjectType,\n },\n accessRequirementId: String(managedACTAccessRequirement.id),\n })\n }\n }\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Sorry, there is an error in submitting your request.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const onAccessorChange: DataAccessRequestAccessorsEditorProps['onChange'] =\n updater => {\n // Copy the array so the caller doesn't have to worry about immutability\n setAccessorChanges([...updater(accessorChanges || [])])\n }\n\n const onClearAttachment = (fid: string) => {\n updateRequestAsync({\n ...dataAccessRequest!,\n attachments: dataAccessRequest!.attachments?.filter(item => item !== fid),\n })\n }\n\n const uploadCallback = (\n data: UploadCallbackResp,\n context: keyof Pick<\n Request,\n 'attachments' | 'irbFileHandleId' | 'ducFileHandleId'\n >,\n ) => {\n if (data.resp && data.success) {\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n if (context === 'attachments') {\n updateRequestAsync({\n ...dataAccessRequest!,\n attachments: [\n ...(dataAccessRequest!.attachments || []),\n uploadResponse.fileHandleId,\n ],\n })\n } else {\n updateRequestAsync({\n ...dataAccessRequest!,\n [context]: uploadResponse.fileHandleId,\n })\n }\n } else if (!data.success && data.error) {\n // show the error\n console.log(\n 'RequestDataAccessStep2: Error uploading the file',\n data.error,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(data.error.reason),\n })\n }\n }\n\n const ducFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.ducFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest?.ducFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n const irbFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.irbFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest.irbFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n\n const attachmentFileHandleAssociations: FileHandleAssociation[] =\n (dataAccessRequest?.attachments || []).map(attachmentFileHandleId => ({\n fileHandleId: attachmentFileHandleId,\n associateObjectType: FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest!.id),\n })) ?? []\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={props.onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(managedACTAccessRequirement.id)}\n >\n <Box\n component={'form'}\n sx={{\n // Must set a minHeight to ensure the user picker in the DataAccessRequestAccessorsEditor doesn't get cut off\n minHeight: '475px',\n }}\n onSubmit={e => e.preventDefault()}\n >\n <Typography variant={'body1'} sx={{ mb: 2 }}>\n Please provide the information below to submit the request for\n access.\n </Typography>\n\n {dataAccessRequest && user && (\n <DataAccessRequestAccessorsEditor\n accessorChanges={accessorChanges || []}\n onChange={onAccessorChange}\n isRenewal={isRenewal}\n helpText={\n <AccessorRequirementHelpText\n managedACTAccessRequirement={managedACTAccessRequirement}\n />\n }\n />\n )}\n\n {(managedACTAccessRequirement?.isDUCRequired ||\n managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n {/* DUC */}\n {managedACTAccessRequirement?.isDUCRequired && (\n <>\n {managedACTAccessRequirement?.ducTemplateFileHandleId && (\n <DocumentTemplate\n title={'Download DUC Template'}\n description={\n 'As a first step, you will need to download the most current version of the Data Use Certificate.'\n }\n fileHandleAssociation={{\n fileHandleId:\n managedACTAccessRequirement.ducTemplateFileHandleId,\n associateObjectType:\n FileHandleAssociateType.AccessRequirementAttachment,\n associateObjectId: String(managedACTAccessRequirement.id),\n }}\n downloadButtonText={'Download DUC Template'}\n />\n )}\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n Fill out and upload a Data Use Certificate\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n You must download and fill out a Data Use Certificate (DUC).\n Be sure to upload the completed DUC below once you&apos;ve\n completed it.\n </Typography>\n <Typography variant={'body1'} component={'ol'}>\n <li>Download the DUC template file.</li>\n <li>\n Fill out the DUC template, following the instructions in the\n file.\n </li>\n <li>\n Upload the completed certificate using the button below:\n </li>\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'duc'}\n isLoading={isLoading}\n uploadCallback={resp =>\n uploadCallback(resp, 'ducFileHandleId')\n }\n documentName={'Data Use Certificate'}\n fileHandleAssociations={ducFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {(managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {/* IRB */}\n {managedACTAccessRequirement?.isIRBApprovalRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n IRB Approval\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n Upload a signed IRB letter on institutional letterhead. The\n letter must include the names of all the datasets requested,\n as well as the names of the data requesters above. Use the\n button below to upload the document.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'irb'}\n isLoading={isLoading}\n documentName={'IRB Approval Letter'}\n uploadCallback={resp =>\n uploadCallback(resp, 'irbFileHandleId')\n }\n fileHandleAssociations={irbFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {\n /* Attachments */\n managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n Upload other required documents\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n You must upload other required documents. Please review the\n instructions to gain data access to determine which\n documents must also be uploaded.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'file-attachment'}\n isLoading={isLoading}\n documentName={'Attachment'}\n uploadCallback={res => uploadCallback(res, 'attachments')}\n isMultiFileUpload={true}\n fileHandleAssociations={attachmentFileHandleAssociations}\n onClearAttachment={onClearAttachment}\n />\n </SynapseErrorBoundary>\n </>\n )\n }\n\n {\n // SWC-7319 - Per GovernanceInnovation, do not show these fields on renewal\n // Publications & Summary of Use\n // isRenewal && (\n // <>\n // <TextField\n // id={'publications'}\n // label={'Publication(s)'}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // value={publication}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setPublication(e.target.value)\n // }\n // />\n // <TextField\n // id={'summaryOfUse'}\n // label={'Summary of use'}\n // value={summaryOfUse}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setSummaryOfUse(e.target.value)\n // }\n // />\n // </>\n // )\n }\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n <DialogActions>\n <Button\n variant={'outlined'}\n onClick={() => {\n onBackClicked()\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n\n <Button\n variant=\"outlined\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n if (dataAccessRequest) {\n // include the local state in the onCancel callback so the user may save their changes\n onCancel(getDataAccessRequestWithLocalState())\n }\n }}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n handleSubmit()\n }}\n >\n Submit\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA8CA,SAAS,EAA4B,GAElC;CACD,IAAM,EAAE,mCAAgC,GACpC,IAAe,IACf,IAAc;CAkBlB,OAfE,EAA4B,2BAC5B,EAA4B,8BAE5B,IAAO,4DACP,IACE,oFACO,EAA4B,2BACrC,IACE,4FACF,IAAM,mDACG,EAA4B,+BACrC,IACE,4FACF,IAAM,4DAGN,kBAAA,GAAA,EAAA,UAAA;EACG,EAA4B,gBAC3B,kBAAC,GAAD;GAAK,IAAI;IAAE,SAAS;IAAQ,KAAK;IAAG,YAAY;IAAU,IAAI;GAAE;aAAhE,CACE,kBAAC,GAAD,EAAqB,IAAI,EAAE,OAAO,aAAa,EAAI,CAAA,GACnD,kBAAC,OAAD,EAAA,UAAK,uGAGA,CAAA,CACF;OAEL;EAED;EAAK;EACL,KACC,kBAAC,GAAD;GAAM,MAAM;GAAM,QAAQ;GAAU,KAAK;aAAc;EAEjD,CAAA;CAER,EAAA,CAAA;AAEN;AAmCA,SAAwB,EACtB,GACA;CACA,IAAM,EACJ,wBACA,gCACA,eACA,iBACA,sBACA,cACA,sBACE,GACE,EAAE,uBAAoB,EAAkB,GACxC,EAAE,MAAM,MAAS,EAAyB,EAAE,SAAS,EAAgB,CAAC,GACtE,CAAC,GAAO,KAAY,EAAiC,GACrD,CAAC,GAAiB,KAAsB,EAE5C,GACI,CAAC,GAAc,KAAmB,EAA6B,GAC/D,CAAC,GAAa,KAAkB,EAA6B,GAE7D,EAAE,MAAM,GAAmB,WAAW,MAC1C,EAAiC,OAAO,EAA4B,EAAE,GAAG;EACvE,SAAS;EAET,WAAW;EAEX,cAAc;CAChB,CAAC,GAEG,IACJ,GAAmB,iBACnB;CAEF,SAAS,EAAQ,GAAuB;EAEtC,AADA,QAAQ,IAAI,+CAA+C,CAAC,GAC5D,EAAS;GACP,KAAK;GACL,SAAS,EAAgB,EAAE,MAAM;EACnC,CAAC;CACH;CAEA,IAAM,EAAE,QAAQ,GAAQ,WAAW,MACjC,EAA2B;EACzB,YAAW,MAAc;GACvB,EAAoB,EAAW,YAAY;EAC7C;EACS;CACX,CAAC,GAEG,EACJ,aAAa,GACb,WAAW,OACT,EAA2B,EACpB,WACX,CAAC,GAEK,IACJ,KACA,MACA;CAkEF,AA7DA,QAAgB;EACd,IAAI,KAAqB,GAAM;GAC7B,IAAI,IAAe;GAGnB,AAAK,EAAkB,sBACrB,EAAkB,oBAAoB,GACtC,IAAe;GAIjB,IAAM,IAA4C;IAChD,QAAQ,EAAK;IACb,MAAM,IAAY,EAAW,eAAe,EAAW;GACzD;GACA,CACE,CAAC,EAAkB,mBACnB,CAAC,EAAkB,gBAAgB,MAAK,MACtC,EAAW,GAAM,CAAyB,CAC5C,OAEA,EAAkB,kBAAkB,CAClC,GACA,GAAI,EAAkB,mBAAmB,CAAC,CAC5C,GACA,IAAe;GAIjB,IAAM,oBAAO,IAAI,IAAI,GACf,IAAwB,EAAkB,gBAAgB,QAC9D,MACS,EAAK,IAAI,EAAe,MAAM,IACjC,KACA,EAAK,IAAI,EAAe,MAAM,CAEtC;GASA,AAPE,EAAsB,WACtB,EAAkB,gBAAgB,WAElC,EAAkB,kBAAkB,GACpC,IAAe,KAGb,KACF,EAAmB,CAAiB;EAExC;CACF,GAAG;EACD;EACA;EACA;EACA;EACA;CACF,CAAC,GAMD,QAAgB;EACd,AAAI,MACE,EAAkB,mBAAmB,KAAmB,QAC1D,EAAmB,EAAkB,eAAe,GAGpD,KACA,EAAkB,eAClB,KAAe,QAEf,EAAe,EAAkB,WAAW,GAG5C,KACA,EAAkB,gBAClB,KAAgB,QAEhB,EAAgB,EAAkB,YAAY;CAKpD,GAAG,CAAC,CAAiB,CAAC;CAEtB,SAAS,IAAwD;EAC/D,OAAO;GACL,GAAG;GAEc;GACjB;GACA;EACF;CACF;CAEA,eAAe,KAAe;EAC5B,IAAI,GAAmB;GAErB,IAAM,IAAgB,MAAM,EAC1B,EAAmC,CACrC;GAEA,EAAO;IACL,SAAS;KACP,WAAW,EAAc;KACzB,aAAa,EAAc;KAChB;KACE;IACf;IACA,qBAAqB,OAAO,EAA4B,EAAE;GAC5D,CAAC;EACH;CACF;CAEA,IAAM,KAAmB,IAAiB,OAEtC,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,UAAD,EAAA,UAAQ,uDAA4D,CAAA;EACpE,kBAAC,MAAD,CAAK,CAAA;EACJ;CACD,EAAA,CAAA,GAIA,MACJ,MAAW;EAET,EAAmB,CAAC,GAAG,EAAQ,KAAmB,CAAC,CAAC,CAAC,CAAC;CACxD,GAEI,MAAqB,MAAgB;EACzC,EAAmB;GACjB,GAAG;GACH,aAAa,EAAmB,aAAa,QAAO,MAAQ,MAAS,CAAG;EAC1E,CAAC;CACH,GAEM,KACJ,GACA,MAIG;EACH,IAAI,EAAK,QAAQ,EAAK,SAAS;GAE7B,IAAM,IAAqC,EAAK;GAChD,AACE,EADE,MAAY,gBACK;IACjB,GAAG;IACH,aAAa,CACX,GAAI,EAAmB,eAAe,CAAC,GACvC,EAAe,YACjB;GACF,IAEmB;IACjB,GAAG;KACF,IAAU,EAAe;GAC5B,CAAC;EAEL,OAAO,AAAI,CAAC,EAAK,WAAW,EAAK,UAE/B,QAAQ,IACN,oDACA,EAAK,KACP,GACA,EAAS;GACP,KAAK;GACL,SAAS,EAAgB,EAAK,MAAM,MAAM;EAC5C,CAAC;CAEL,GAEM,IACJ,GAAmB,kBACf,CACE;EACE,cAAc,GAAmB;EACjC,qBACE,EAAwB;EAC1B,mBAAmB,OAAO,EAAkB,EAAE;CAChD,CACF,IACA,CAAC,GACD,KACJ,GAAmB,kBACf,CACE;EACE,cAAc,EAAkB;EAChC,qBACE,EAAwB;EAC1B,mBAAmB,OAAO,EAAkB,EAAE;CAChD,CACF,IACA,CAAC,GAED,MACH,GAAmB,eAAe,CAAC,GAAG,KAAI,OAA2B;EACpE,cAAc;EACd,qBAAqB,EAAwB;EAC7C,mBAAmB,OAAO,EAAmB,EAAE;CACjD,EAAE,KAAK,CAAC;CAEV,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,IAAD,EAAA,UACE,kBAAC,GAAD;GACE,WAAU;GACV,IAAI;IACF,YAAY;IACZ,KAAK;GACP;aALF;IAMC;IAEC,kBAAC,GAAD,EAAK,IAAI,EAAE,UAAU,EAAE,EAAI,CAAA;IAC3B,kBAAC,GAAD;KAAY,SAAS,EAAM;eACzB,kBAAC,GAAD;MAAS,MAAM;MAAS,MAAM;MAAO,IAAI,EAAE,OAAO,WAAW;KAAI,CAAA;IACvD,CAAA;GACP;KACI,CAAA;EACb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,IAAD;GACE,+BAA+B,OAAO,EAA4B,EAAE;aAEpE,kBAAC,GAAD;IACE,WAAW;IACX,IAAI,EAEF,WAAW,QACb;IACA,WAAU,MAAK,EAAE,eAAe;cANlC;KAQE,kBAAC,GAAD;MAAY,SAAS;MAAS,IAAI,EAAE,IAAI,EAAE;gBAAG;KAGjC,CAAA;KAEX,KAAqB,KACpB,kBAAC,GAAD;MACE,iBAAiB,KAAmB,CAAC;MACrC,UAAU;MACC;MACX,UACE,kBAAC,GAAD,EAC+B,+BAC9B,CAAA;KAEJ,CAAA;MAGD,GAA6B,iBAC7B,GAA6B,yBAC7B,GAA6B,gCAC7B,kBAAC,GAAD,EAAS,IAAI,EAAE,IAAI,EAAE,EAAI,CAAA;KAG1B,GAA6B,iBAC5B,kBAAA,GAAA,EAAA,UAAA;MACG,GAA6B,2BAC5B,kBAAC,GAAD;OACE,OAAO;OACP,aACE;OAEF,uBAAuB;QACrB,cACE,EAA4B;QAC9B,qBACE,EAAwB;QAC1B,mBAAmB,OAAO,EAA4B,EAAE;OAC1D;OACA,oBAAoB;MACrB,CAAA;MAEH,kBAAC,GAAD;OAAY,SAAS;OAAa,IAAI;QAAE,IAAI;QAAG,IAAI;OAAE;iBAAG;MAE5C,CAAA;MACZ,kBAAC,GAAD;OAAY,SAAS;OAAS,IAAI,EAAE,IAAI,EAAE;iBAAG;MAIjC,CAAA;MACZ,kBAAC,GAAD;OAAY,SAAS;OAAS,WAAW;iBAAzC;QACE,kBAAC,MAAD,EAAA,UAAI,kCAAmC,CAAA;QACvC,kBAAC,MAAD,EAAA,UAAI,qEAGA,CAAA;QACJ,kBAAC,MAAD,EAAA,UAAI,2DAEA,CAAA;OACM;;MACZ,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;OACE,IAAI;OACO;OACX,iBAAgB,MACd,EAAe,GAAM,iBAAiB;OAExC,cAAc;OACd,wBAAwB;MACzB,CAAA,EACmB,CAAA;OACpB,GAA6B,yBAC7B,GAA6B,gCAC7B,kBAAC,GAAD,EAAS,IAAI,EAAE,IAAI,EAAE,EAAI,CAAA;KAE3B,EAAA,CAAA;KAIH,GAA6B,yBAC5B,kBAAA,GAAA,EAAA,UAAA;MACE,kBAAC,GAAD;OAAY,SAAS;OAAa,IAAI,EAAE,IAAI,EAAE;iBAAG;MAErC,CAAA;MACZ,kBAAC,GAAD;OAAY,SAAS;OAAS,IAAI,EAAE,IAAI,EAAE;iBAAG;MAKjC,CAAA;MACZ,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;OACE,IAAI;OACO;OACX,cAAc;OACd,iBAAgB,MACd,EAAe,GAAM,iBAAiB;OAExC,wBAAwB;MACzB,CAAA,EACmB,CAAA;MACrB,GAA6B,+BAC5B,kBAAC,GAAD,EAAS,IAAI,EAAE,IAAI,EAAE,EAAI,CAAA;KAE3B,EAAA,CAAA;KAKF,GAA6B,+BAC3B,kBAAA,GAAA,EAAA,UAAA;MACE,kBAAC,GAAD;OAAY,SAAS;OAAa,IAAI,EAAE,IAAI,EAAE;iBAAG;MAErC,CAAA;MACZ,kBAAC,GAAD;OAAY,SAAS;OAAS,IAAI,EAAE,IAAI,EAAE;iBAAG;MAIjC,CAAA;MACZ,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;OACE,IAAI;OACO;OACX,cAAc;OACd,iBAAgB,MAAO,EAAe,GAAK,aAAa;OACxD,mBAAmB;OACnB,wBAAwB;OACL;MACpB,CAAA,EACmB,CAAA;KACtB,EAAA,CAAA;IAkCH;;EACqC,CAAA,GAC3C,KAAS,kBAAC,GAAD;GAAO,UAAU,EAAM;aAAM,EAAM;EAAe,CAAA,CAC/C,EAAA,CAAA;EACf,kBAAC,GAAD,EAAA,UAAA;GACE,kBAAC,GAAD;IACE,SAAS;IACT,eAAe;KACb,GAAc;IAChB;cACD;GAEO,CAAA;GACR,kBAAC,GAAD,EAAK,IAAI,EAAE,UAAU,EAAE,EAAsB,CAAA;GAE7C,kBAAC,GAAD;IACE,SAAQ;IACR,UAAU;IACV,eAAe;KACb,AAAI,KAEF,GAAS,EAAmC,CAAC;IAEjD;cACD;GAEO,CAAA;GACR,kBAAC,GAAD;IACE,SAAQ;IACR,UAAU;IACV,eAAe;KACb,GAAa;IACf;cACD;GAEO,CAAA;EACK,EAAA,CAAA;CACf,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"DataAccessRequestAccessorsFilesForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.tsx"],"sourcesContent":["import { NewReleasesOutlined } from '@mui/icons-material'\nimport {\n Alert,\n AlertProps as MuiAlertProps,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Link,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport { deepEquals } from '@rjsf/utils'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport isEmpty from 'lodash-es/isEmpty'\nimport {\n AccessorChange,\n AccessType,\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n Renewal,\n Request,\n RestrictableObjectType,\n SigningOfficial,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useEffect, useState } from 'react'\nimport {\n useGetCurrentUserProfile,\n useGetDataAccessRequestForUpdate,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '../../../../synapse-queries'\nimport { useSynapseContext } from '../../../../utils'\nimport { SynapseErrorBoundary } from '../../../error/ErrorBanner'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport DataAccessRequestAccessorsEditor, {\n DataAccessRequestAccessorsEditorProps,\n} from '../DataAccessRequestAccessorsEditor'\nimport { longFieldLabelSx } from '../styles'\nimport DocumentTemplate from '../DocumentTemplate'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\nimport { UploadDocumentField } from '../UploadDocumentField'\n\nfunction AccessorRequirementHelpText(props: {\n managedACTAccessRequirement: ManagedACTAccessRequirement\n isEDucEnabled: boolean\n}) {\n const { managedACTAccessRequirement, isEDucEnabled } = props\n let link: string = ''\n let msg: string = ''\n\n if (\n managedACTAccessRequirement.isCertifiedUserRequired &&\n managedACTAccessRequirement.isValidatedProfileRequired\n ) {\n link = 'https://help.synapse.org/docs/User-Types.2007072795.html'\n msg =\n 'All data requesters must be certified users and have a validated user profile.'\n } else if (managedACTAccessRequirement.isCertifiedUserRequired) {\n link =\n 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-CertifiedUsers'\n msg = 'All data requesters must be a certified user.'\n } else if (managedACTAccessRequirement.isValidatedProfileRequired) {\n link =\n 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-ValidatedUsers'\n msg = 'All data requesters must have a validated user profile.'\n }\n return (\n <>\n {managedACTAccessRequirement.isDUCRequired && !isEDucEnabled ? (\n <Box sx={{ display: 'flex', gap: 2, alignItems: 'center', py: 1 }}>\n <NewReleasesOutlined sx={{ color: 'error.main' }} />\n <div>\n You must list the Synapse user names of all collaborators listed in\n your Data Use Certificate (DUC).\n </div>\n </Box>\n ) : (\n ''\n )}\n {msg}{' '}\n {link && (\n <Link href={link} target={'_blank'} rel={'noreferrer'}>\n Learn more\n </Link>\n )}\n </>\n )\n}\n\nexport type DataAccessRequestAccessorsFilesFormProps = {\n /**\n * The ID of the object of interest. This corresponds to the subjectId of the {@link CreateSubmissionRequest}\n */\n subjectId: string\n /* The type of the subject */\n subjectType: RestrictableObjectType\n /* The access requirement to which the user is requesting access */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSubmissionCreated: (submissionId: string) => void\n researchProjectId: string\n onHide: () => void\n /* Callback invoked when the user clicks cancel. The unsaved, modified dataAccessRequest is returned so the calling component may prompt the user to save this data */\n onCancel: (modifiedDataAccessRequest: Request | Renewal) => void\n /** Callback invoked when the 'Back' action button is clicked */\n onBackClicked: () => void\n}\n\nexport type AlertProps = {\n key: MuiAlertProps['severity']\n message: string | ReactNode\n}\n\n/**\n * Step 2 of the Data Access Request/Renewal flow prompts the user to\n * - Manage the list of accessors, i.e. Synapse users who will gain, renew, or lose access\n * - Download and upload documents required by the Access Requirement\n * - If a renewal, provide publications and a summary of use statement.\n *\n * The component expects a researchProjectId, which should reference complete researchProject created in Step 1.\n * The user may click a \"Submit\" button, which will save the request and issue a data access submission that references\n * the requestId created/updated in this component.\n */\nexport default function DataAccessRequestAccessorsFilesForm(\n props: DataAccessRequestAccessorsFilesFormProps,\n) {\n const {\n onSubmissionCreated,\n managedACTAccessRequirement,\n subjectId,\n subjectType,\n researchProjectId,\n onCancel,\n onBackClicked,\n } = props\n const { isAuthenticated } = useSynapseContext()\n const { data: user } = useGetCurrentUserProfile({ enabled: isAuthenticated })\n const [alert, setAlert] = useState<AlertProps | undefined>()\n const isEDucEnabled = Boolean(managedACTAccessRequirement.eDucTemplateId)\n const [accessorChanges, setAccessorChanges] = useState<\n AccessorChange[] | undefined\n >()\n const [summaryOfUse, setSummaryOfUse] = useState<string | undefined>()\n const [publication, setPublication] = useState<string | undefined>()\n const [soName, setSoName] = useState<string>('')\n const [soEmail, setSoEmail] = useState<string>('')\n\n const { data: dataAccessRequest, isLoading: isLoadingGetDataAccessRequest } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n enabled: isAuthenticated,\n // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n // This call should never fail, so if we run into an error, throwing to an error boundary is acceptable\n throwOnError: true,\n })\n\n const isRenewal =\n dataAccessRequest?.concreteType ===\n 'org.sagebionetworks.repo.model.dataaccess.Renewal'\n\n function onError(e: SynapseClientError) {\n console.log('RequestDataAccessStep2: Error updating form', e)\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n }\n\n const { mutate: submit, isPending: submitDataAccessRequestIsPending } =\n useSubmitDataAccessRequest({\n onSuccess: submission => {\n onSubmissionCreated(submission.submissionId)\n },\n onError: onError,\n })\n\n const {\n mutateAsync: updateRequestAsync,\n isPending: updateDataAccessRequestIsPending,\n } = useUpdateDataAccessRequest({\n onError: onError,\n })\n\n const isLoading =\n isLoadingGetDataAccessRequest ||\n updateDataAccessRequestIsPending ||\n submitDataAccessRequestIsPending\n\n const disableSubmitButton =\n submitDataAccessRequestIsPending || (isEDucEnabled && (!soName || !soEmail))\n\n /**\n * This effect comprises a collection of updates we should immediately apply to a data access request.\n */\n useEffect(() => {\n if (dataAccessRequest && user) {\n let shouldUpdate = false\n\n // Attach the researchProjectId to the request\n if (!dataAccessRequest.researchProjectId) {\n dataAccessRequest.researchProjectId = researchProjectId\n shouldUpdate = true\n }\n\n // Add the current user with GAIN_ACCESS to the list of accessors\n const currentUserWithGainAccess: AccessorChange = {\n userId: user.ownerId,\n type: isRenewal ? AccessType.RENEW_ACCESS : AccessType.GAIN_ACCESS,\n }\n if (\n !dataAccessRequest.accessorChanges ||\n !dataAccessRequest.accessorChanges.find(item =>\n deepEquals(item, currentUserWithGainAccess),\n )\n ) {\n dataAccessRequest.accessorChanges = [\n currentUserWithGainAccess,\n ...(dataAccessRequest.accessorChanges || []),\n ]\n shouldUpdate = true\n }\n\n // SWC-5765: Filter out duplicate accessors\n const seen = new Set()\n const uniqueAccessorChanges = dataAccessRequest.accessorChanges.filter(\n accessorChange => {\n return seen.has(accessorChange.userId)\n ? false\n : seen.add(accessorChange.userId)\n },\n )\n if (\n uniqueAccessorChanges.length !==\n dataAccessRequest.accessorChanges.length\n ) {\n dataAccessRequest.accessorChanges = uniqueAccessorChanges\n shouldUpdate = true\n }\n\n if (shouldUpdate) {\n updateRequestAsync(dataAccessRequest)\n }\n }\n }, [\n dataAccessRequest,\n isRenewal,\n researchProjectId,\n updateRequestAsync,\n user,\n ])\n\n /**\n * Fields other than uploaded files are NOT immediately synced with the server. Set local state if these values exist in the\n * fetched object, and no value exists in local state.\n */\n useEffect(() => {\n if (dataAccessRequest) {\n if (dataAccessRequest.accessorChanges && accessorChanges == undefined) {\n setAccessorChanges(dataAccessRequest.accessorChanges)\n }\n if (\n isRenewal &&\n dataAccessRequest.publication &&\n publication == undefined\n ) {\n setPublication(dataAccessRequest.publication)\n }\n if (\n isRenewal &&\n dataAccessRequest.summaryOfUse &&\n summaryOfUse == undefined\n ) {\n setSummaryOfUse(dataAccessRequest.summaryOfUse)\n }\n if (isEDucEnabled) {\n const so = dataAccessRequest.signingOfficial\n if (isEmpty(soName) && so?.name) {\n setSoName(so.name)\n }\n if (isEmpty(soEmail) && so?.institutionalEmail) {\n setSoEmail(so.institutionalEmail)\n }\n }\n }\n // Intentionally only re-synchronize state when server state changes\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [dataAccessRequest])\n\n function getDataAccessRequestWithLocalState(): Request | Renewal {\n const base = {\n ...dataAccessRequest,\n accessorChanges: accessorChanges,\n publication,\n summaryOfUse,\n } as Request | Renewal\n if (isEDucEnabled) {\n const nextSo: SigningOfficial = {\n ...dataAccessRequest?.signingOfficial,\n name: soName || undefined,\n institutionalEmail: soEmail || undefined,\n }\n return { ...base, signingOfficial: nextSo }\n }\n return base\n }\n\n async function handleSubmit() {\n if (dataAccessRequest) {\n // Save the request\n const requestObject = await updateRequestAsync(\n getDataAccessRequestWithLocalState(),\n )\n // Create a submission and attach the request\n submit({\n request: {\n requestId: requestObject.id,\n requestEtag: requestObject.etag,\n subjectId: subjectId,\n subjectType: subjectType,\n },\n accessRequirementId: String(managedACTAccessRequirement.id),\n })\n }\n }\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Sorry, there is an error in submitting your request.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const onAccessorChange: DataAccessRequestAccessorsEditorProps['onChange'] =\n updater => {\n // Copy the array so the caller doesn't have to worry about immutability\n setAccessorChanges([...updater(accessorChanges || [])])\n }\n\n const onClearAttachment = (fid: string) => {\n updateRequestAsync({\n ...dataAccessRequest!,\n attachments: dataAccessRequest!.attachments?.filter(item => item !== fid),\n })\n }\n\n const uploadCallback = (\n data: UploadCallbackResp,\n context: keyof Pick<\n Request,\n 'attachments' | 'irbFileHandleId' | 'ducFileHandleId'\n >,\n ) => {\n if (data.resp && data.success) {\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n if (context === 'attachments') {\n updateRequestAsync({\n ...dataAccessRequest!,\n attachments: [\n ...(dataAccessRequest!.attachments || []),\n uploadResponse.fileHandleId,\n ],\n })\n } else {\n updateRequestAsync({\n ...dataAccessRequest!,\n [context]: uploadResponse.fileHandleId,\n })\n }\n } else if (!data.success && data.error) {\n // show the error\n console.log(\n 'RequestDataAccessStep2: Error uploading the file',\n data.error,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(data.error.reason),\n })\n }\n }\n\n const ducFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.ducFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest?.ducFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n const irbFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.irbFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest.irbFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n\n const attachmentFileHandleAssociations: FileHandleAssociation[] =\n (dataAccessRequest?.attachments || []).map(attachmentFileHandleId => ({\n fileHandleId: attachmentFileHandleId,\n associateObjectType: FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest!.id),\n })) ?? []\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={props.onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(managedACTAccessRequirement.id)}\n >\n <Box\n component={'form'}\n sx={{\n // Must set a minHeight to ensure the user picker in the DataAccessRequestAccessorsEditor doesn't get cut off\n minHeight: '475px',\n }}\n onSubmit={e => e.preventDefault()}\n >\n <Typography variant={'body1'} sx={{ mb: 2, fontSize: '16px' }}>\n Please provide the information below to submit the request for\n access.\n </Typography>\n\n {isEDucEnabled && (\n <>\n <Typography variant={'headline3'} sx={{ mb: 2 }}>\n Signing Official\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, mb: 2 }}\n >\n The signing official is a member of your institution with\n oversight authority who is NOT part of the study team (i.e.,\n not the Project Lead, not a Data Requester or Collaborator,\n and not the Principal Investigator). They do not need a\n Synapse account but must be able to receive messages at the\n email address provided below.\n </Typography>\n <TextField\n id=\"so-name\"\n label=\"First and last names of your Signing Official\"\n placeholder=\"First and last name of signing official, ex: John Smith\"\n fullWidth\n type=\"text\"\n disabled={isLoading}\n value={soName}\n required\n onChange={e => setSoName(e.target.value)}\n sx={{ mb: 2 }}\n />\n <TextField\n id=\"so-email\"\n label=\"Institutional Email of your Signing Official\"\n type=\"email\"\n placeholder=\"Individual with signing authority, e.g. jane.smith@institution.edu\"\n fullWidth\n disabled={isLoading}\n value={soEmail}\n required\n onChange={e => setSoEmail(e.target.value)}\n sx={{ mb: 2 }}\n />\n <Divider sx={{ my: 4 }} />\n </>\n )}\n\n {dataAccessRequest && user && (\n <DataAccessRequestAccessorsEditor\n accessorChanges={accessorChanges || []}\n onChange={onAccessorChange}\n isRenewal={isRenewal}\n helpText={\n <AccessorRequirementHelpText\n managedACTAccessRequirement={managedACTAccessRequirement}\n isEDucEnabled={isEDucEnabled}\n />\n }\n />\n )}\n\n {((managedACTAccessRequirement?.isDUCRequired && !isEDucEnabled) ||\n managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n {/* DUC — hidden for eDUC ARs, which handle DUC via the eDUC flow */}\n {managedACTAccessRequirement?.isDUCRequired && !isEDucEnabled && (\n <>\n {managedACTAccessRequirement?.ducTemplateFileHandleId && (\n <DocumentTemplate\n title={'Download DUC Template'}\n description={\n 'As a first step, you will need to download the most current version of the Data Use Certificate.'\n }\n fileHandleAssociation={{\n fileHandleId:\n managedACTAccessRequirement.ducTemplateFileHandleId,\n associateObjectType:\n FileHandleAssociateType.AccessRequirementAttachment,\n associateObjectId: String(managedACTAccessRequirement.id),\n }}\n downloadButtonText={'Download DUC Template'}\n />\n )}\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n Fill out and upload a Data Use Certificate\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n You must download and fill out a Data Use Certificate (DUC).\n Be sure to upload the completed DUC below once you&apos;ve\n completed it.\n </Typography>\n <Typography\n variant={'body1'}\n component={'ol'}\n sx={longFieldLabelSx}\n >\n <li>Download the DUC template file.</li>\n <li>\n Fill out the DUC template, following the instructions in the\n file.\n </li>\n <li>\n Upload the completed certificate using the button below:\n </li>\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'duc'}\n isLoading={isLoading}\n uploadCallback={resp =>\n uploadCallback(resp, 'ducFileHandleId')\n }\n documentName={'Data Use Certificate'}\n fileHandleAssociations={ducFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {(managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {/* IRB */}\n {managedACTAccessRequirement?.isIRBApprovalRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n IRB Approval\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n Upload a signed IRB letter on institutional letterhead. The\n letter must include the names of all the datasets requested,\n as well as the names of the data requesters above. Use the\n button below to upload the document.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'irb'}\n isLoading={isLoading}\n documentName={'IRB Approval Letter'}\n uploadCallback={resp =>\n uploadCallback(resp, 'irbFileHandleId')\n }\n fileHandleAssociations={irbFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {\n /* Attachments */\n managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n Upload other required documents\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n You must upload other required documents. Please review the\n instructions to gain data access to determine which\n documents must also be uploaded.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'file-attachment'}\n isLoading={isLoading}\n documentName={'Attachment'}\n uploadCallback={res => uploadCallback(res, 'attachments')}\n isMultiFileUpload={true}\n fileHandleAssociations={attachmentFileHandleAssociations}\n onClearAttachment={onClearAttachment}\n />\n </SynapseErrorBoundary>\n </>\n )\n }\n\n {\n // SWC-7319 - Per GovernanceInnovation, do not show these fields on renewal\n // Publications & Summary of Use\n // isRenewal && (\n // <>\n // <TextField\n // id={'publications'}\n // label={'Publication(s)'}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // value={publication}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setPublication(e.target.value)\n // }\n // />\n // <TextField\n // id={'summaryOfUse'}\n // label={'Summary of use'}\n // value={summaryOfUse}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setSummaryOfUse(e.target.value)\n // }\n // />\n // </>\n // )\n }\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n <DialogActions>\n <Button\n variant={'outlined'}\n onClick={() => {\n onBackClicked()\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n\n <Button\n variant=\"outlined\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n if (dataAccessRequest) {\n // include the local state in the onCancel callback so the user may save their changes\n onCancel(getDataAccessRequestWithLocalState())\n }\n }}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n loading={submitDataAccessRequestIsPending}\n disabled={disableSubmitButton}\n onClick={() => {\n handleSubmit()\n }}\n >\n Submit\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentTemplate.d.ts","sourceRoot":"","sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIjC,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,SAAS,CAAA;IAChB,WAAW,EAAE,SAAS,CAAA;IACtB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAAK,EAAE,6BAA6B,2CAyD5E"}
1
+ {"version":3,"file":"DocumentTemplate.d.ts","sourceRoot":"","sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKjC,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,SAAS,CAAA;IAChB,WAAW,EAAE,SAAS,CAAA;IACtB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAAK,EAAE,6BAA6B,2CAyD5E"}
@@ -1,40 +1,44 @@
1
1
  import { useGetFileBatch as e } from "../../../synapse-queries/file/useFiles.js";
2
2
  import t from "../../IconSvg/IconSvg.js";
3
- import n from "../../DirectDownloadButton.js";
4
- import { Box as r, Typography as i } from "@mui/material";
5
- import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
3
+ import { longFieldLabelSx as n } from "./styles.js";
4
+ import r from "../../DirectDownloadButton.js";
5
+ import { Box as i, Typography as a } from "@mui/material";
6
+ import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
6
7
  //#region src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.tsx
7
- function c(c) {
8
- let { title: l, description: u, fileHandleAssociation: d, downloadButtonText: f } = c, { data: p } = e({
9
- requestedFiles: [d],
8
+ function l(l) {
9
+ let { title: u, description: d, fileHandleAssociation: f, downloadButtonText: p } = l, { data: m } = e({
10
+ requestedFiles: [f],
10
11
  includeFileHandles: !0,
11
12
  includePreSignedURLs: !1,
12
13
  includePreviewPreSignedURLs: !1
13
- }, { enabled: !!d }), m = p?.requestedFiles[0]?.fileHandle?.fileName;
14
- return /* @__PURE__ */ s(a, { children: [
15
- /* @__PURE__ */ o(i, {
14
+ }, { enabled: !!f }), h = m?.requestedFiles[0]?.fileHandle?.fileName;
15
+ return /* @__PURE__ */ c(o, { children: [
16
+ /* @__PURE__ */ s(a, {
16
17
  variant: "headline3",
17
18
  sx: {
18
19
  mt: 4,
19
20
  mb: 2
20
21
  },
21
- children: l
22
+ children: u
22
23
  }),
23
- /* @__PURE__ */ o(i, {
24
+ /* @__PURE__ */ s(a, {
24
25
  variant: "body1",
25
- sx: { my: 2 },
26
- children: u
26
+ sx: {
27
+ ...n,
28
+ my: 2
29
+ },
30
+ children: d
27
31
  }),
28
- /* @__PURE__ */ o(i, {
32
+ /* @__PURE__ */ s(a, {
29
33
  variant: "body1",
30
34
  children: "Download this file:"
31
35
  }),
32
- /* @__PURE__ */ o(i, {
36
+ /* @__PURE__ */ s(a, {
33
37
  variant: "smallText1",
34
38
  sx: { my: .5 },
35
- children: /* @__PURE__ */ o("strong", { children: m })
39
+ children: /* @__PURE__ */ s("strong", { children: h })
36
40
  }),
37
- /* @__PURE__ */ s(r, {
41
+ /* @__PURE__ */ c(i, {
38
42
  sx: {
39
43
  display: "flex",
40
44
  alignItems: "center",
@@ -48,11 +52,11 @@ function c(c) {
48
52
  md: "wrap-reverse"
49
53
  }
50
54
  },
51
- children: [/* @__PURE__ */ o(n, {
55
+ children: [/* @__PURE__ */ s(r, {
52
56
  variant: "outlined",
53
- fileHandleAssociation: d,
54
- fileName: f,
55
- endIcon: /* @__PURE__ */ o(t, {
57
+ fileHandleAssociation: f,
58
+ fileName: p,
59
+ endIcon: /* @__PURE__ */ s(t, {
56
60
  icon: "download",
57
61
  wrap: !1
58
62
  }),
@@ -60,18 +64,18 @@ function c(c) {
60
64
  whiteSpace: "nowrap",
61
65
  flexShrink: 0
62
66
  }
63
- }), /* @__PURE__ */ s(i, {
67
+ }), /* @__PURE__ */ c(a, {
64
68
  variant: "body1",
65
69
  children: [
66
70
  "You must fill out and upload this exact version of the template.",
67
71
  " ",
68
- /* @__PURE__ */ o("strong", { children: "No other versions will be accepted." })
72
+ /* @__PURE__ */ s("strong", { children: "No other versions will be accepted." })
69
73
  ]
70
74
  })]
71
75
  })
72
76
  ] });
73
77
  }
74
78
  //#endregion
75
- export { c as default };
79
+ export { l as default };
76
80
 
77
81
  //# sourceMappingURL=DocumentTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentTemplate.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.tsx"],"sourcesContent":["import { useGetFileBatch } from '@/synapse-queries/file/useFiles'\nimport { Box, Typography } from '@mui/material'\nimport { FileHandleAssociation } from '@sage-bionetworks/synapse-types'\nimport { ReactNode } from 'react'\nimport DirectDownloadButton from '../../DirectDownloadButton'\nimport IconSvg from '../../IconSvg/IconSvg'\n\nexport type DownloadDocumentTemplateProps = {\n title: ReactNode\n description: ReactNode\n fileHandleAssociation: FileHandleAssociation\n downloadButtonText: string\n}\n\nexport default function DocumentTemplate(props: DownloadDocumentTemplateProps) {\n const { title, description, fileHandleAssociation, downloadButtonText } =\n props\n\n // get batch of files\n const { data: fileData } = useGetFileBatch(\n {\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: true,\n includePreSignedURLs: false,\n includePreviewPreSignedURLs: false,\n },\n {\n enabled: !!fileHandleAssociation,\n },\n )\n\n const fileName = fileData?.requestedFiles[0]?.fileHandle?.fileName\n\n return (\n <>\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n {title}\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n {description}\n </Typography>\n <Typography variant={'body1'}>Download this file:</Typography>\n <Typography variant={'smallText1'} sx={{ my: 0.5 }}>\n <strong>{fileName}</strong>\n </Typography>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n gap: 2,\n backgroundColor: 'tertiary.100',\n p: 2.5,\n my: 2,\n flexWrap: { xs: 'nowrap', md: 'wrap-reverse' },\n }}\n >\n <DirectDownloadButton\n variant={'outlined'}\n fileHandleAssociation={fileHandleAssociation}\n fileName={downloadButtonText}\n endIcon={<IconSvg icon={'download'} wrap={false} />}\n sx={{ whiteSpace: 'nowrap', flexShrink: 0 }}\n />\n <Typography variant={'body1'}>\n You must fill out and upload this exact version of the template.{' '}\n <strong>No other versions will be accepted.</strong>\n </Typography>\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;AAcA,SAAwB,EAAiB,GAAsC;CAC7E,IAAM,EAAE,UAAO,gBAAa,0BAAuB,0BACjD,GAGI,EAAE,MAAM,MAAa,EACzB;EACE,gBAAgB,CAAC,CAAqB;EACtC,oBAAoB;EACpB,sBAAsB;EACtB,6BAA6B;CAC/B,GACA,EACE,SAAS,CAAC,CAAC,EACb,CACF,GAEM,IAAW,GAAU,eAAe,IAAI,YAAY;CAE1D,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAY,SAAS;GAAa,IAAI;IAAE,IAAI;IAAG,IAAI;GAAE;aAClD;EACS,CAAA;EACZ,kBAAC,GAAD;GAAY,SAAS;GAAS,IAAI,EAAE,IAAI,EAAE;aACvC;EACS,CAAA;EACZ,kBAAC,GAAD;GAAY,SAAS;aAAS;EAA+B,CAAA;EAC7D,kBAAC,GAAD;GAAY,SAAS;GAAc,IAAI,EAAE,IAAI,GAAI;aAC/C,kBAAC,UAAD,EAAA,UAAS,EAAiB,CAAA;EAChB,CAAA;EACZ,kBAAC,GAAD;GACE,IAAI;IACF,SAAS;IACT,YAAY;IACZ,gBAAgB;IAChB,KAAK;IACL,iBAAiB;IACjB,GAAG;IACH,IAAI;IACJ,UAAU;KAAE,IAAI;KAAU,IAAI;IAAe;GAC/C;aAVF,CAYE,kBAAC,GAAD;IACE,SAAS;IACc;IACvB,UAAU;IACV,SAAS,kBAAC,GAAD;KAAS,MAAM;KAAY,MAAM;IAAQ,CAAA;IAClD,IAAI;KAAE,YAAY;KAAU,YAAY;IAAE;GAC3C,CAAA,GACD,kBAAC,GAAD;IAAY,SAAS;cAArB;KAA8B;KACqC;KACjE,kBAAC,UAAD,EAAA,UAAQ,sCAA2C,CAAA;IACzC;KACT;;CACL,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"DocumentTemplate.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.tsx"],"sourcesContent":["import { useGetFileBatch } from '@/synapse-queries/file/useFiles'\nimport { Box, Typography } from '@mui/material'\nimport { FileHandleAssociation } from '@sage-bionetworks/synapse-types'\nimport { ReactNode } from 'react'\nimport DirectDownloadButton from '../../DirectDownloadButton'\nimport IconSvg from '../../IconSvg/IconSvg'\nimport { longFieldLabelSx } from './styles'\n\nexport type DownloadDocumentTemplateProps = {\n title: ReactNode\n description: ReactNode\n fileHandleAssociation: FileHandleAssociation\n downloadButtonText: string\n}\n\nexport default function DocumentTemplate(props: DownloadDocumentTemplateProps) {\n const { title, description, fileHandleAssociation, downloadButtonText } =\n props\n\n // get batch of files\n const { data: fileData } = useGetFileBatch(\n {\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: true,\n includePreSignedURLs: false,\n includePreviewPreSignedURLs: false,\n },\n {\n enabled: !!fileHandleAssociation,\n },\n )\n\n const fileName = fileData?.requestedFiles[0]?.fileHandle?.fileName\n\n return (\n <>\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n {title}\n </Typography>\n <Typography variant={'body1'} sx={{ ...longFieldLabelSx, my: 2 }}>\n {description}\n </Typography>\n <Typography variant={'body1'}>Download this file:</Typography>\n <Typography variant={'smallText1'} sx={{ my: 0.5 }}>\n <strong>{fileName}</strong>\n </Typography>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n gap: 2,\n backgroundColor: 'tertiary.100',\n p: 2.5,\n my: 2,\n flexWrap: { xs: 'nowrap', md: 'wrap-reverse' },\n }}\n >\n <DirectDownloadButton\n variant={'outlined'}\n fileHandleAssociation={fileHandleAssociation}\n fileName={downloadButtonText}\n endIcon={<IconSvg icon={'download'} wrap={false} />}\n sx={{ whiteSpace: 'nowrap', flexShrink: 0 }}\n />\n <Typography variant={'body1'}>\n You must fill out and upload this exact version of the template.{' '}\n <strong>No other versions will be accepted.</strong>\n </Typography>\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;;AAeA,SAAwB,EAAiB,GAAsC;CAC7E,IAAM,EAAE,UAAO,gBAAa,0BAAuB,0BACjD,GAGI,EAAE,MAAM,MAAa,EACzB;EACE,gBAAgB,CAAC,CAAqB;EACtC,oBAAoB;EACpB,sBAAsB;EACtB,6BAA6B;CAC/B,GACA,EACE,SAAS,CAAC,CAAC,EACb,CACF,GAEM,IAAW,GAAU,eAAe,IAAI,YAAY;CAE1D,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAY,SAAS;GAAa,IAAI;IAAE,IAAI;IAAG,IAAI;GAAE;aAClD;EACS,CAAA;EACZ,kBAAC,GAAD;GAAY,SAAS;GAAS,IAAI;IAAE,GAAG;IAAkB,IAAI;GAAE;aAC5D;EACS,CAAA;EACZ,kBAAC,GAAD;GAAY,SAAS;aAAS;EAA+B,CAAA;EAC7D,kBAAC,GAAD;GAAY,SAAS;GAAc,IAAI,EAAE,IAAI,GAAI;aAC/C,kBAAC,UAAD,EAAA,UAAS,EAAiB,CAAA;EAChB,CAAA;EACZ,kBAAC,GAAD;GACE,IAAI;IACF,SAAS;IACT,YAAY;IACZ,gBAAgB;IAChB,KAAK;IACL,iBAAiB;IACjB,GAAG;IACH,IAAI;IACJ,UAAU;KAAE,IAAI;KAAU,IAAI;IAAe;GAC/C;aAVF,CAYE,kBAAC,GAAD;IACE,SAAS;IACc;IACvB,UAAU;IACV,SAAS,kBAAC,GAAD;KAAS,MAAM;KAAY,MAAM;IAAQ,CAAA;IAClD,IAAI;KAAE,YAAY;KAAU,YAAY;IAAE;GAC3C,CAAA,GACD,kBAAC,GAAD;IAAY,SAAS;cAArB;KAA8B;KACqC;KACjE,kBAAC,UAAD,EAAA,UAAQ,sCAA2C,CAAA;IACzC;KACT;;CACL,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"ResearchProjectForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.tsx"],"names":[],"mappings":"AAiBA,OAAO,EACL,2BAA2B,EAC3B,eAAe,EAChB,MAAM,iCAAiC,CAAA;AAcxC,MAAM,MAAM,wBAAwB,GAAG;IAErC,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,CAAA;IACnD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CAiP1E"}
1
+ {"version":3,"file":"ResearchProjectForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.tsx"],"names":[],"mappings":"AAmBA,OAAO,EACL,2BAA2B,EAI3B,eAAe,EAEhB,MAAM,iCAAiC,CAAA;AAexC,MAAM,MAAM,wBAAwB,GAAG;IAErC,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,CAAA;IACnD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CAuW1E"}